{"version":3,"file":"polar-client.umd.cjs","sources":["../../../../node_modules/ol/CollectionEventType.js","../../../../node_modules/ol/ObjectEventType.js","../../../../node_modules/ol/events/EventType.js","../../../../node_modules/ol/Disposable.js","../../../../node_modules/ol/array.js","../../../../node_modules/ol/functions.js","../../../../node_modules/ol/obj.js","../../../../node_modules/ol/events/Event.js","../../../../node_modules/ol/events/Target.js","../../../../node_modules/ol/events.js","../../../../node_modules/ol/Observable.js","../../../../node_modules/ol/util.js","../../../../node_modules/ol/Object.js","../../../../node_modules/ol/Collection.js","../../../../node_modules/ol/asserts.js","../../../../node_modules/ol/Feature.js","../../../../node_modules/ol/extent/Relationship.js","../../../../node_modules/ol/extent.js","../../../../node_modules/ol/math.js","../../../../node_modules/ol/sphere.js","../../../../node_modules/ol/console.js","../../../../node_modules/ol/string.js","../../../../node_modules/ol/coordinate.js","../../../../node_modules/ol/proj/Units.js","../../../../node_modules/ol/proj/Projection.js","../../../../node_modules/ol/proj/epsg3857.js","../../../../node_modules/ol/proj/epsg4326.js","../../../../node_modules/ol/proj/projections.js","../../../../node_modules/ol/proj/transforms.js","../../../../node_modules/ol/proj/utm.js","../../../../node_modules/ol/proj.js","../../../../node_modules/ol/transform.js","../../../../node_modules/ol/geom/flat/transform.js","../../../../node_modules/ol/geom/Geometry.js","../../../../node_modules/ol/geom/SimpleGeometry.js","../../../../node_modules/ol/geom/flat/area.js","../../../../node_modules/ol/geom/flat/closest.js","../../../../node_modules/ol/geom/flat/deflate.js","../../../../node_modules/ol/geom/flat/inflate.js","../../../../node_modules/ol/geom/flat/simplify.js","../../../../node_modules/ol/geom/LinearRing.js","../../../../node_modules/ol/geom/Point.js","../../../../node_modules/ol/geom/flat/contains.js","../../../../node_modules/ol/geom/flat/interiorpoint.js","../../../../node_modules/ol/geom/flat/segments.js","../../../../node_modules/ol/geom/flat/intersectsextent.js","../../../../node_modules/ol/geom/flat/reverse.js","../../../../node_modules/ol/geom/flat/orient.js","../../../../node_modules/ol/geom/Polygon.js","../../../../node_modules/ol/Geolocation.js","../../../../node_modules/ol/geom/flat/interpolate.js","../../../../node_modules/ol/geom/flat/length.js","../../../../node_modules/ol/geom/LineString.js","../../../../node_modules/ol/render/EventType.js","../../../../node_modules/ol/has.js","../../../../node_modules/ol/ImageState.js","../../../../node_modules/color-parse/node_modules/color-name/index.js","../../../../node_modules/color-parse/index.js","../../../../node_modules/color-space/rgb.js","../../../../node_modules/color-space/hsl.js","../../../../node_modules/color-rgba/index.js","../../../../node_modules/color-space/xyz.js","../../../../node_modules/color-space/luv.js","../../../../node_modules/color-space/lchuv.js","../../../../node_modules/ol/color.js","../../../../node_modules/ol/dom.js","../../../../node_modules/ol/Image.js","../../../../node_modules/ol/style/IconImageCache.js","../../../../node_modules/ol/style/IconImage.js","../../../../node_modules/ol/colorlike.js","../../../../node_modules/ol/render/VectorContext.js","../../../../node_modules/ol/css.js","../../../../node_modules/ol/render/canvas.js","../../../../node_modules/ol/render/canvas/Immediate.js","../../../../node_modules/ol/renderer/vector.js","../../../../node_modules/ol/render.js","../../../../node_modules/ol/featureloader.js","../../../../node_modules/ol/loadingstrategy.js","../../../../node_modules/ol/geom/flat/center.js","../../../../node_modules/ol/geom/Circle.js","../../../../node_modules/ol/geom/GeometryCollection.js","../../../../node_modules/ol/geom/MultiLineString.js","../../../../node_modules/ol/geom/MultiPoint.js","../../../../node_modules/ol/geom/MultiPolygon.js","../../../../node_modules/ol/render/Feature.js","../../../../node_modules/ol/node_modules/quickselect/index.js","../../../../node_modules/ol/node_modules/rbush/index.js","../../../../node_modules/ol/structs/RBush.js","../../../../node_modules/ol/source/Source.js","../../../../node_modules/ol/source/VectorEventType.js","../../../../node_modules/ol/source/Vector.js","../../../../node_modules/ol/style/Fill.js","../../../../node_modules/ol/style/Stroke.js","../../../../node_modules/ol/size.js","../../../../node_modules/ol/style/Image.js","../../../../node_modules/ol/style/RegularShape.js","../../../../node_modules/ol/style/Circle.js","../../../../node_modules/ol/style/Style.js","../../../../node_modules/ol/style/Text.js","../../../../node_modules/ol/ViewHint.js","../../../../node_modules/ol/render/canvas/Instruction.js","../../../../node_modules/ol/render/canvas/Builder.js","../../../../node_modules/ol/render/canvas/ImageBuilder.js","../../../../node_modules/ol/render/canvas/LineStringBuilder.js","../../../../node_modules/ol/render/canvas/PolygonBuilder.js","../../../../node_modules/ol/geom/flat/linechunk.js","../../../../node_modules/ol/geom/flat/straightchunk.js","../../../../node_modules/ol/render/canvas/TextBuilder.js","../../../../node_modules/ol/render/canvas/BuilderGroup.js","../../../../node_modules/ol/geom/flat/textpath.js","../../../../node_modules/ol/render/canvas/ZIndexContext.js","../../../../node_modules/ol/render/canvas/Executor.js","../../../../node_modules/ol/render/canvas/ExecutorGroup.js","../../../../node_modules/ol/style/Icon.js","../../../../node_modules/ol/render/canvas/hitdetect.js","../../../../node_modules/ol/render/Event.js","../../../../node_modules/ol/renderer/Layer.js","../../../../node_modules/ol/renderer/canvas/Layer.js","../../../../node_modules/ol/renderer/canvas/VectorLayer.js","../../../../node_modules/ol/expr/expression.js","../../../../node_modules/ol/expr/cpu.js","../../../../node_modules/ol/render/canvas/style.js","../../../../node_modules/ol/ViewProperty.js","../../../../node_modules/ol/centerconstraint.js","../../../../node_modules/ol/easing.js","../../../../node_modules/ol/resolutionconstraint.js","../../../../node_modules/ol/rotationconstraint.js","../../../../node_modules/ol/tilegrid/common.js","../../../../node_modules/ol/View.js","../../../../node_modules/ol/layer/Property.js","../../../../node_modules/ol/layer/Base.js","../../../../node_modules/ol/layer/Layer.js","../../../../node_modules/ol/layer/BaseVector.js","../../../../node_modules/ol/layer/Vector.js","../../../../node_modules/ol/ImageCanvas.js","../../../../node_modules/ol/TileState.js","../../../../node_modules/ol/Tile.js","../../../../node_modules/ol/ImageTile.js","../../../../node_modules/ol/Kinetic.js","../../../../node_modules/ol/MapEvent.js","../../../../node_modules/ol/MapBrowserEvent.js","../../../../node_modules/ol/MapBrowserEventType.js","../../../../node_modules/ol/pointer/EventType.js","../../../../node_modules/ol/MapBrowserEventHandler.js","../../../../node_modules/ol/MapEventType.js","../../../../node_modules/ol/MapProperty.js","../../../../node_modules/ol/structs/PriorityQueue.js","../../../../node_modules/ol/TileQueue.js","../../../../node_modules/ol/control/Control.js","../../../../node_modules/ol/control/Attribution.js","../../../../node_modules/ol/control/Rotate.js","../../../../node_modules/ol/control/Zoom.js","../../../../node_modules/ol/control/defaults.js","../../../../node_modules/ol/interaction/Property.js","../../../../node_modules/ol/interaction/Interaction.js","../../../../node_modules/ol/interaction/DoubleClickZoom.js","../../../../node_modules/ol/events/condition.js","../../../../node_modules/ol/interaction/Pointer.js","../../../../node_modules/ol/interaction/DragPan.js","../../../../node_modules/ol/interaction/DragRotate.js","../../../../node_modules/ol/render/Box.js","../../../../node_modules/ol/interaction/DragBox.js","../../../../node_modules/ol/interaction/DragZoom.js","../../../../node_modules/ol/events/Key.js","../../../../node_modules/ol/interaction/KeyboardPan.js","../../../../node_modules/ol/interaction/KeyboardZoom.js","../../../../node_modules/ol/interaction/MouseWheelZoom.js","../../../../node_modules/ol/interaction/PinchRotate.js","../../../../node_modules/ol/interaction/PinchZoom.js","../../../../node_modules/ol/interaction/defaults.js","../../../../node_modules/ol/layer/Group.js","../../../../node_modules/ol/renderer/Map.js","../../../../node_modules/ol/renderer/Composite.js","../../../../node_modules/ol/Map.js","../../../../node_modules/ol/Overlay.js","../../../../node_modules/ol/TileRange.js","../../../../node_modules/ol/VectorRenderTile.js","../../../../node_modules/ol/VectorTile.js","../../../../node_modules/@masterportal/masterportalapi/src/defaults.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/mapView.js","../../../../node_modules/proj4/lib/global.js","../../../../node_modules/proj4/lib/constants/values.js","../../../../node_modules/proj4/lib/constants/PrimeMeridian.js","../../../../node_modules/proj4/lib/constants/units.js","../../../../node_modules/proj4/lib/match.js","../../../../node_modules/proj4/lib/projString.js","../../../../node_modules/wkt-parser/parser.js","../../../../node_modules/wkt-parser/process.js","../../../../node_modules/wkt-parser/index.js","../../../../node_modules/proj4/lib/defs.js","../../../../node_modules/proj4/lib/parseCode.js","../../../../node_modules/proj4/lib/extend.js","../../../../node_modules/proj4/lib/common/msfnz.js","../../../../node_modules/proj4/lib/common/sign.js","../../../../node_modules/proj4/lib/common/adjust_lon.js","../../../../node_modules/proj4/lib/common/tsfnz.js","../../../../node_modules/proj4/lib/common/phi2z.js","../../../../node_modules/proj4/lib/projections/merc.js","../../../../node_modules/proj4/lib/projections/longlat.js","../../../../node_modules/proj4/lib/projections.js","../../../../node_modules/proj4/lib/constants/Ellipsoid.js","../../../../node_modules/proj4/lib/deriveConstants.js","../../../../node_modules/proj4/lib/constants/Datum.js","../../../../node_modules/proj4/lib/datum.js","../../../../node_modules/proj4/lib/nadgrid.js","../../../../node_modules/proj4/lib/Proj.js","../../../../node_modules/proj4/lib/datumUtils.js","../../../../node_modules/proj4/lib/datum_transform.js","../../../../node_modules/proj4/lib/adjust_axis.js","../../../../node_modules/proj4/lib/common/toPoint.js","../../../../node_modules/proj4/lib/checkSanity.js","../../../../node_modules/proj4/lib/transform.js","../../../../node_modules/proj4/lib/core.js","../../../../node_modules/mgrs/mgrs.js","../../../../node_modules/proj4/lib/Point.js","../../../../node_modules/proj4/lib/common/pj_enfn.js","../../../../node_modules/proj4/lib/common/pj_mlfn.js","../../../../node_modules/proj4/lib/common/pj_inv_mlfn.js","../../../../node_modules/proj4/lib/projections/tmerc.js","../../../../node_modules/proj4/lib/common/sinh.js","../../../../node_modules/proj4/lib/common/hypot.js","../../../../node_modules/proj4/lib/common/log1py.js","../../../../node_modules/proj4/lib/common/asinhy.js","../../../../node_modules/proj4/lib/common/gatg.js","../../../../node_modules/proj4/lib/common/clens.js","../../../../node_modules/proj4/lib/common/cosh.js","../../../../node_modules/proj4/lib/common/clens_cmplx.js","../../../../node_modules/proj4/lib/projections/etmerc.js","../../../../node_modules/proj4/lib/common/adjust_zone.js","../../../../node_modules/proj4/lib/projections/utm.js","../../../../node_modules/proj4/lib/common/srat.js","../../../../node_modules/proj4/lib/projections/gauss.js","../../../../node_modules/proj4/lib/projections/sterea.js","../../../../node_modules/proj4/lib/projections/stere.js","../../../../node_modules/proj4/lib/projections/somerc.js","../../../../node_modules/proj4/lib/projections/omerc.js","../../../../node_modules/proj4/lib/projections/lcc.js","../../../../node_modules/proj4/lib/projections/krovak.js","../../../../node_modules/proj4/lib/common/mlfn.js","../../../../node_modules/proj4/lib/common/e0fn.js","../../../../node_modules/proj4/lib/common/e1fn.js","../../../../node_modules/proj4/lib/common/e2fn.js","../../../../node_modules/proj4/lib/common/e3fn.js","../../../../node_modules/proj4/lib/common/gN.js","../../../../node_modules/proj4/lib/common/adjust_lat.js","../../../../node_modules/proj4/lib/common/imlfn.js","../../../../node_modules/proj4/lib/projections/cass.js","../../../../node_modules/proj4/lib/common/qsfnz.js","../../../../node_modules/proj4/lib/projections/laea.js","../../../../node_modules/proj4/lib/common/asinz.js","../../../../node_modules/proj4/lib/projections/aea.js","../../../../node_modules/proj4/lib/projections/gnom.js","../../../../node_modules/proj4/lib/common/iqsfnz.js","../../../../node_modules/proj4/lib/projections/cea.js","../../../../node_modules/proj4/lib/projections/eqc.js","../../../../node_modules/proj4/lib/projections/poly.js","../../../../node_modules/proj4/lib/projections/nzmg.js","../../../../node_modules/proj4/lib/projections/mill.js","../../../../node_modules/proj4/lib/projections/sinu.js","../../../../node_modules/proj4/lib/projections/moll.js","../../../../node_modules/proj4/lib/projections/eqdc.js","../../../../node_modules/proj4/lib/projections/vandg.js","../../../../node_modules/proj4/lib/projections/aeqd.js","../../../../node_modules/proj4/lib/projections/ortho.js","../../../../node_modules/proj4/lib/projections/qsc.js","../../../../node_modules/proj4/lib/projections/robin.js","../../../../node_modules/proj4/lib/projections/geocent.js","../../../../node_modules/proj4/lib/projections/tpers.js","../../../../node_modules/proj4/lib/projections/geos.js","../../../../node_modules/proj4/lib/projections/eqearth.js","../../../../node_modules/proj4/lib/projections/bonne.js","../../../../node_modules/proj4/projs.js","../../../../node_modules/proj4/lib/index.js","../../../../node_modules/ol/proj/proj4.js","../../../../node_modules/@masterportal/masterportalapi/src/crs.js","../../../../node_modules/@masterportal/masterportalapi/src/rawLayerList.js","../../../../node_modules/ol/DataTile.js","../../../../node_modules/ol/reproj.js","../../../../node_modules/ol/reproj/Triangulation.js","../../../../node_modules/ol/reproj/common.js","../../../../node_modules/ol/reproj/Tile.js","../../../../node_modules/ol/structs/LRUCache.js","../../../../node_modules/ol/tilecoord.js","../../../../node_modules/ol/renderer/canvas/TileLayer.js","../../../../node_modules/ol/layer/TileProperty.js","../../../../node_modules/ol/layer/BaseTile.js","../../../../node_modules/ol/layer/Tile.js","../../../../node_modules/ol/renderer/canvas/ImageLayer.js","../../../../node_modules/ol/layer/BaseImage.js","../../../../node_modules/ol/layer/Image.js","../../../../node_modules/ol/uri.js","../../../../node_modules/ol/tilegrid/TileGrid.js","../../../../node_modules/ol/tilegrid/WMTS.js","../../../../node_modules/ol/tilegrid.js","../../../../node_modules/ol/tileurlfunction.js","../../../../node_modules/ol/source/Tile.js","../../../../node_modules/ol/source/TileEventType.js","../../../../node_modules/ol/source/UrlTile.js","../../../../node_modules/ol/source/TileImage.js","../../../../node_modules/ol/resolution.js","../../../../node_modules/ol/reproj/Image.js","../../../../node_modules/ol/source/common.js","../../../../node_modules/ol/source/Image.js","../../../../node_modules/ol/source/wms.js","../../../../node_modules/ol/source/TileWMS.js","../../../../node_modules/ol/source/ImageWMS.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/wms.js","../../../../node_modules/ol/source/WMTS.js","../../../../node_modules/ol/xml.js","../../../../node_modules/ol/format/XML.js","../../../../node_modules/ol/format/xlink.js","../../../../node_modules/ol/format/xsd.js","../../../../node_modules/ol/format/OWS.js","../../../../node_modules/ol/format/WMTSCapabilities.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/wmts.js","../../../../node_modules/ol/format/Feature.js","../../../../node_modules/ol/format/JSONFeature.js","../../../../node_modules/ol/format/GeoJSON.js","../../../../node_modules/ol/format/XMLFeature.js","../../../../node_modules/ol/format/GMLBase.js","../../../../node_modules/ol/format/GML2.js","../../../../node_modules/ol/format/GML3.js","../../../../node_modules/ol/format/GML.js","../../../../node_modules/pbf/index.js","../../../../node_modules/ol/format/MVT.js","../../../../node_modules/ol/format/GML32.js","../../../../node_modules/ol/format/filter/Filter.js","../../../../node_modules/ol/format/filter/LogicalNary.js","../../../../node_modules/ol/format/filter/And.js","../../../../node_modules/ol/format/filter/Bbox.js","../../../../node_modules/ol/format/filter.js","../../../../node_modules/ol/format/WFS.js","../../../../node_modules/ol/format/WMSCapabilities.js","../../../../node_modules/ol/render/webgl/MixedGeometryBatch.js","../../../../node_modules/ol/webgl.js","../../../../node_modules/ol/webgl/Buffer.js","../../../../node_modules/ol/vec/mat4.js","../../../../node_modules/ol/webgl/ContextEventType.js","../../../../node_modules/ol/webgl/PostProcessingPass.js","../../../../node_modules/ol/webgl/Helper.js","../../../../node_modules/ol/webgl/BaseTileRepresentation.js","../../../../node_modules/ol/renderer/webgl/Layer.js","../../../../node_modules/ol/renderer/webgl/TileLayerBase.js","../../../../node_modules/ol/renderer/webgl/TileLayer.js","../../../../node_modules/ol/webgl/PaletteTexture.js","../../../../node_modules/ol/expr/gpu.js","../../../../node_modules/ol/render/webgl/utils.js","../../../../node_modules/ol/style/flat.js","../../../../node_modules/ol/webgl/ShaderBuilder.js","../../../../node_modules/ol/webgl/styleparser.js","../../../../node_modules/ol/worker/webgl.js","../../../../node_modules/ol/render/webgl/constants.js","../../../../node_modules/ol/render/webgl/renderinstructions.js","../../../../node_modules/ol/render/webgl/VectorStyleRenderer.js","../../../../node_modules/ol/webgl/RenderTarget.js","../../../../node_modules/ol/renderer/webgl/worldUtil.js","../../../../node_modules/ol/renderer/webgl/VectorLayer.js","../../../../node_modules/ol/layer/WebGLVector.js","../../../../node_modules/ol/webgl/TileGeometry.js","../../../../node_modules/ol/renderer/webgl/VectorTileLayer.js","../../../../node_modules/ol/renderer/canvas/VectorTileLayer.js","../../../../node_modules/ol/layer/VectorTile.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/defaultStyles.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styleList.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/getValueFromObjectByPath.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/thousandsSeparator.js","../../../../node_modules/dayjs/dayjs.min.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/attributeMapper.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/lib/valueOperations.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/lib/getRuleForIndex.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/lib/colorConvertions.js","../../../../node_modules/@masterportal/masterportalapi/src/renderer/webgl.js","../../../../node_modules/ol/source/Cluster.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/vector.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/wfsUtil.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/wfs.js","../../../../node_modules/@masterportal/masterportalapi/public/marker.svg","../../../../node_modules/@masterportal/masterportalapi/src/layer/geojson/style.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/geojson/index.js","../../../../node_modules/ol/source/VectorTile.js","../../../../node_modules/ol/source/Raster.js","../../../../node_modules/ol/net.js","../../../../node_modules/ol/source/TileJSON.js","../../../../node_modules/ol-mapbox-style/dist/index.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/vectorTile.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/oaf.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/terrain.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/entities.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/tileset.js","../../../../node_modules/@masterportal/masterportalapi/src/layer/lib.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/coordsToPairs.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/zoomTo.js","../../../../node_modules/xml2js/lib/defaults.js","../../../../node_modules/xmlbuilder/lib/Utility.js","../../../../node_modules/xmlbuilder/lib/XMLDOMImplementation.js","../../../../node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js","../../../../node_modules/xmlbuilder/lib/XMLDOMStringList.js","../../../../node_modules/xmlbuilder/lib/XMLDOMConfiguration.js","../../../../node_modules/xmlbuilder/lib/NodeType.js","../../../../node_modules/xmlbuilder/lib/XMLAttribute.js","../../../../node_modules/xmlbuilder/lib/XMLNamedNodeMap.js","../../../../node_modules/xmlbuilder/lib/XMLElement.js","../../../../node_modules/xmlbuilder/lib/XMLCharacterData.js","../../../../node_modules/xmlbuilder/lib/XMLCData.js","../../../../node_modules/xmlbuilder/lib/XMLComment.js","../../../../node_modules/xmlbuilder/lib/XMLDeclaration.js","../../../../node_modules/xmlbuilder/lib/XMLDTDAttList.js","../../../../node_modules/xmlbuilder/lib/XMLDTDEntity.js","../../../../node_modules/xmlbuilder/lib/XMLDTDElement.js","../../../../node_modules/xmlbuilder/lib/XMLDTDNotation.js","../../../../node_modules/xmlbuilder/lib/XMLDocType.js","../../../../node_modules/xmlbuilder/lib/XMLRaw.js","../../../../node_modules/xmlbuilder/lib/XMLText.js","../../../../node_modules/xmlbuilder/lib/XMLProcessingInstruction.js","../../../../node_modules/xmlbuilder/lib/XMLDummy.js","../../../../node_modules/xmlbuilder/lib/XMLNodeList.js","../../../../node_modules/xmlbuilder/lib/DocumentPosition.js","../../../../node_modules/xmlbuilder/lib/XMLNode.js","../../../../node_modules/xmlbuilder/lib/XMLStringifier.js","../../../../node_modules/xmlbuilder/lib/WriterState.js","../../../../node_modules/xmlbuilder/lib/XMLWriterBase.js","../../../../node_modules/xmlbuilder/lib/XMLStringWriter.js","../../../../node_modules/xmlbuilder/lib/XMLDocument.js","../../../../node_modules/xmlbuilder/lib/XMLDocumentCB.js","../../../../node_modules/xmlbuilder/lib/XMLStreamWriter.js","../../../../node_modules/xmlbuilder/lib/index.js","../../../../node_modules/xml2js/lib/builder.js","../../../../node_modules/events/events.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../node_modules/base64-js/index.js","../../../../node_modules/ieee754/index.js","../../../../node_modules/buffer/index.js","../__vite-browser-external","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","../../../../node_modules/util-deprecate/browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../../../../node_modules/stream-browserify/node_modules/safe-buffer/index.js","../../../../node_modules/stream-browserify/node_modules/string_decoder/lib/string_decoder.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../../node_modules/stream-browserify/index.js","../../../../node_modules/string_decoder/index.js","../../../../node_modules/sax/lib/sax.js","../../../../node_modules/xml2js/lib/bom.js","../../../../node_modules/xml2js/lib/processors.js","../../../../node_modules/setimmediate/setImmediate.js","../../../../node_modules/timers-browserify/main.js","../../../../node_modules/xml2js/lib/parser.js","../../../../node_modules/xml2js/lib/xml2js.js","../../../../node_modules/@masterportal/masterportalapi/src/searchAddress/types.js","../../../../node_modules/@masterportal/masterportalapi/src/searchAddress/showGeographicIdentifier.js","../../../../node_modules/@masterportal/masterportalapi/src/searchAddress/parse.js","../../../../node_modules/@masterportal/masterportalapi/src/searchAddress/gazetteerUrl.js","../../../../node_modules/@masterportal/masterportalapi/src/searchAddress/searchGazetteer.js","../../../../node_modules/@masterportal/masterportalapi/src/searchAddress/search.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/setBackgroundImage.js","../../../../node_modules/@masterportal/masterportalapi/src/lib/ping.js","../../../../node_modules/@masterportal/masterportalapi/src/api/ogcApiProcesses.js","../../../core/src/utils/addPlugins.ts","../../../../node_modules/vue/dist/vue.runtime.esm.js","../../../../node_modules/vuex/dist/vuex.esm.js","../../../../node_modules/lodash.merge/index.js","../../../../node_modules/@repositoryname/vuex-generators/index.js","../../../../node_modules/@repositoryname/noop/index.js","../../../../node_modules/i18next/dist/esm/i18next.js","../../../lib/getCluster/index.ts","../../../core/src/storeModules/capabilities.ts","../../../../node_modules/ol/interaction/Draw.js","../../../../node_modules/ol/interaction/Modify.js","../../../../node_modules/ol/interaction/Select.js","../../../../node_modules/ol/events/SnapEvent.js","../../../../node_modules/ol/interaction/Snap.js","../../../../node_modules/ol/interaction/Translate.js","../../../core/src/utils/interactions.ts","../../../core/src/utils/constants.ts","../../../lib/invisibleStyle/index.ts","../../../core/src/utils/markers/hatches.ts","../../../core/src/utils/markers/index.ts","../../../core/src/utils/resolveClusterClick.ts","../../../core/src/vuePlugins/actions/useExtendedMasterportalapiMarkers/setLayerId.ts","../../../core/src/vuePlugins/actions/useExtendedMasterportalapiMarkers/index.ts","../../../core/src/vuePlugins/actions/addInterceptor.ts","../../../core/src/vuePlugins/actions/checkServiceAvailability.ts","../../../core/src/vuePlugins/vuex.ts","../../../../node_modules/vuetify/dist/vuetify.js","../../../../node_modules/lodash.kebabcase/index.js","../../../core/src/vuePlugins/vuetify.ts","../../../../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../../../../node_modules/i18next-vue/dist/index.js","../../../core/src/locales.ts","../../../core/src/i18n/index.ts","../../../../node_modules/@masterportal/masterportalapi/src/lib/getInitialLayers.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/ol/olMap.js","../../../../node_modules/olcs/lib/olcs/util.js","../../../../node_modules/ol/source/static.js","../../../../node_modules/ol/source/ImageStatic.js","../../../../node_modules/olcs/lib/olcs/core/OLImageryProvider.js","../../../../node_modules/olcs/lib/olcs/MVTImageryProvider.js","../../../../node_modules/olcs/lib/olcs/core.js","../../../../node_modules/olcs/lib/olcs/AutoRenderLoop.js","../../../../node_modules/olcs/lib/olcs/math.js","../../../../node_modules/olcs/lib/olcs/Camera.js","../../../../node_modules/olcs/lib/olcs/AbstractSynchronizer.js","../../../../node_modules/olcs/lib/olcs/RasterSynchronizer.js","../../../../node_modules/olcs/lib/olcs/core/VectorLayerCounterpart.js","../../../../node_modules/quickselect/index.js","../../../../node_modules/rbush/index.js","../../../../node_modules/olcs/lib/olcs/FeatureConverter.js","../../../../node_modules/olcs/lib/olcs/VectorSynchronizer.js","../../../../node_modules/olcs/lib/olcs/SynchronizedOverlay.js","../../../../node_modules/olcs/lib/olcs/OverlaySynchronizer.js","../../../../node_modules/olcs/lib/olcs/OLCesium.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/olcs/3dUtils/fixedOverlaySynchronizer.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/olcs/3dUtils/wmsRasterSynchronizer.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/olcs/olcsMap.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/api.js","../../../../node_modules/@masterportal/masterportalapi/src/maps/map.js","../../../components/MoveHandle.vue","../../../../node_modules/hammerjs/hammer.js","../../../core/src/utils/addClusterStyle.ts","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/style.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/point/stylePointIcon.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/point/stylePointCircle.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/point/stylePointRegularShape.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/point/stylePointInterval.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/point/stylePointNominal.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/point/stylePoint.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/styleText.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/polygon/polygonStyleHatch.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/polygon/stylePolygon.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/styleLine.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/styleCircle.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/styles/styleCesium.js","../../../../node_modules/@masterportal/masterportalapi/src/vectorStyle/createStyle.js","../../../core/src/utils/setupStyling.ts","../../../core/src/utils/mapZoomOffset.ts","../../../core/src/utils/layout.ts","../../../core/src/components/MapUi.vue","../../../core/src/components/MapContainer.vue","../../../core/src/components/RadioCard.vue","../../../core/src/utils/createMap/defaults.ts","../../../lib/idx/index.ts","../../../core/src/utils/createMap/subscribe.ts","../../../core/src/utils/createMap/updateSizeOnReady.ts","../../../core/src/utils/createMap/makeShadowRoot.ts","../../../core/src/utils/createMap/pullPolarStyleToShadow.ts","../../../core/src/utils/createMap/pullVuetifyStyleToShadow.ts","../../../core/src/utils/createMap/setupFontawesome.ts","../../../core/src/utils/createMap/index.ts","../../../core/src/monkeyCrossOrigin.ts","../../../core/src/monkeyHeaderLoader.ts","../../../core/src/components/MapPlugin.vue","../../../core/src/utils/sortPluginsByLayout.ts","../../../core/src/components/layouts/NineLayoutTag.ts","../../../core/src/components/layouts/NineLayout.vue","../../../core/src/index.ts","../../../plugins/AddressSearch/src/components/GroupSelect.vue","../../../plugins/AddressSearch/src/utils/focusFirstResult.ts","../../../plugins/AddressSearch/src/utils/emTitleByInput.ts","../../../plugins/AddressSearch/src/components/Results.vue","../../../plugins/AddressSearch/src/components/Input.vue","../../../plugins/AddressSearch/src/components/SearchContainer.vue","../../../plugins/AddressSearch/src/components/AddressSearch.vue","../../../plugins/AddressSearch/src/locales.ts","../../../../node_modules/lodash.debounce/index.js","../../../lib/getFeatures/utils/errorCheck.ts","../../../lib/getFeatures/wfs/match.ts","../../../lib/getFeatures/wfs/getFeatureTitleFromPattern.ts","../../../lib/getFeatures/wfs/parse.ts","../../../lib/getFeatures/wfs/buildWfsFilter.ts","../../../lib/getFeatures/wfs/index.ts","../../../lib/getFeatures/vector/index.ts","../../../plugins/AddressSearch/src/utils/searchMethods/bkg.ts","../../../plugins/AddressSearch/src/utils/searchMethods/mpapi.ts","../../../plugins/AddressSearch/src/utils/searchMethods/getSearchMethod.ts","../../../plugins/AddressSearch/src/store/actions.ts","../../../plugins/AddressSearch/src/utils/searchResultSymbols.ts","../../../plugins/AddressSearch/src/store/state.ts","../../../plugins/AddressSearch/src/store/getters.ts","../../../plugins/AddressSearch/src/store/index.ts","../../../plugins/AddressSearch/src/index.ts","../../../plugins/Attributions/src/components/AttributionButton.vue","../../../plugins/Attributions/src/components/AttributionContent.vue","../../../plugins/Attributions/src/components/Attributions.vue","../../../plugins/Attributions/src/locales.ts","../../../plugins/Attributions/src/utils/lib.ts","../../../plugins/Attributions/src/store/index.ts","../../../plugins/Attributions/src/index.ts","../../../plugins/Draw/src/components/DrawOptions.vue","../../../plugins/Draw/src/components/Draw.vue","../../../plugins/Draw/src/locales.ts","../../../plugins/Draw/src/utils/createDrawLayer.ts","../../../plugins/Draw/src/utils/createTextStyle.ts","../../../../node_modules/@turf/helpers/dist/esm/index.js","../../../../node_modules/@turf/meta/dist/esm/index.js","../../../../node_modules/tinyqueue/index.js","../../../../node_modules/point-in-polygon/flat.js","../../../../node_modules/point-in-polygon/nested.js","../../../../node_modules/point-in-polygon/index.js","../../../../node_modules/robust-predicates/umd/orient2d.min.js","../../../../node_modules/concaveman/index.js","../../../../node_modules/@turf/convex/dist/esm/index.js","../../../../node_modules/@turf/centroid/dist/esm/index.js","../../../../node_modules/@turf/invariant/dist/esm/index.js","../../../../node_modules/@turf/center-of-mass/dist/esm/index.js","../../../plugins/Draw/src/utils/createDrawStyle.ts","../../../plugins/Draw/src/store/createInteractions/index.ts","../../../plugins/Draw/src/store/createInteractions/localSelector.ts","../../../plugins/Draw/src/store/createInteractions/getSnaps.ts","../../../plugins/Draw/src/store/createInteractions/createModifyInteractions.ts","../../../plugins/Draw/src/store/createInteractions/createTextInteractions.ts","../../../plugins/Draw/src/store/createInteractions/createTranslateInteractions.ts","../../../../node_modules/@turf/bbox/dist/esm/index.js","../../../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/util.js","../../../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/orient2d.js","../../../../node_modules/point-in-polygon-hao/dist/esm/index.js","../../../../node_modules/@turf/boolean-point-in-polygon/dist/esm/index.js","../../../../node_modules/@turf/boolean-point-on-line/dist/esm/index.js","../../../../node_modules/@turf/boolean-contains/dist/esm/index.js","../../../plugins/Draw/src/store/createInteractions/createLassoInteractions.ts","../../../plugins/Draw/src/store/createInteractions/modifyDrawStyle.ts","../../../plugins/Draw/src/store/createInteractions/modifyTextStyle.ts","../../../plugins/Draw/src/store/createInteractions/createDrawInteractions.ts","../../../plugins/Draw/src/store/createInteractions/createDeleteInteractions.ts","../../../plugins/Draw/src/store/createInteractions/createDuplicateInteractions.ts","../../../../node_modules/@turf/center/dist/esm/index.js","../../../../node_modules/@turf/jsts/dist/jsts.min.js","../../../../node_modules/d3-geo/src/adder.js","../../../../node_modules/d3-geo/src/math.js","../../../../node_modules/d3-geo/src/noop.js","../../../../node_modules/d3-geo/src/stream.js","../../../../node_modules/d3-geo/src/area.js","../../../../node_modules/d3-geo/src/cartesian.js","../../../../node_modules/d3-geo/src/bounds.js","../../../../node_modules/d3-geo/src/compose.js","../../../../node_modules/d3-geo/src/rotation.js","../../../../node_modules/d3-geo/src/circle.js","../../../../node_modules/d3-geo/src/clip/buffer.js","../../../../node_modules/d3-geo/src/clip/line.js","../../../../node_modules/d3-geo/src/pointEqual.js","../../../../node_modules/d3-geo/src/clip/polygon.js","../../../../node_modules/d3-array/src/ascending.js","../../../../node_modules/d3-array/src/bisector.js","../../../../node_modules/d3-array/src/bisect.js","../../../../node_modules/d3-array/src/merge.js","../../../../node_modules/d3-geo/src/clip/extent.js","../../../../node_modules/d3-geo/src/polygonContains.js","../../../../node_modules/d3-geo/src/length.js","../../../../node_modules/d3-geo/src/identity.js","../../../../node_modules/d3-geo/src/path/area.js","../../../../node_modules/d3-geo/src/path/bounds.js","../../../../node_modules/d3-geo/src/path/measure.js","../../../../node_modules/d3-geo/src/clip/index.js","../../../../node_modules/d3-geo/src/clip/antimeridian.js","../../../../node_modules/d3-geo/src/clip/circle.js","../../../../node_modules/d3-geo/src/transform.js","../../../../node_modules/d3-geo/src/projection/fit.js","../../../../node_modules/d3-geo/src/projection/resample.js","../../../../node_modules/d3-geo/src/projection/index.js","../../../../node_modules/d3-geo/src/projection/azimuthal.js","../../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../../../../node_modules/d3-geo/src/projection/equirectangular.js","../../../../node_modules/@turf/buffer/dist/esm/index.js","../../../../node_modules/bignumber.js/bignumber.mjs","../../../../node_modules/splaytree-ts/dist/esm/index.js","../../../../node_modules/polyclip-ts/dist/esm/index.js","../../../../node_modules/@turf/difference/dist/esm/index.js","../../../../node_modules/@turf/area/dist/esm/index.js","../../../../node_modules/@turf/unkink-polygon/dist/esm/index.js","../../../../node_modules/sweepline-intersections/dist/sweeplineIntersections.esm.js","../../../../node_modules/@turf/line-intersect/dist/esm/index.js","../../../plugins/Draw/src/store/createInteractions/createCutInteractions/cutlery.ts","../../../plugins/Draw/src/store/createInteractions/createCutInteractions/style.ts","../../../plugins/Draw/src/store/createInteractions/createCutInteractions/makeDraw.ts","../../../plugins/Draw/src/store/createInteractions/createCutInteractions/index.ts","../../../../node_modules/@turf/polygon-to-line/dist/esm/index.js","../../../../node_modules/@turf/boolean-disjoint/dist/esm/index.js","../../../../node_modules/@turf/boolean-intersects/dist/esm/index.js","../../../../node_modules/@turf/union/dist/esm/index.js","../../../plugins/Draw/src/store/createInteractions/createMergeInteractions.ts","../../../plugins/Draw/src/store/reviseFeatures/revisionStates.ts","../../../../node_modules/@turf/clean-coords/dist/esm/index.js","../../../plugins/Draw/src/store/reviseFeatures/autofix.ts","../../../plugins/Draw/src/store/reviseFeatures/cloneFeatureCollection.ts","../../../../node_modules/just-compare/index.mjs","../../../plugins/Draw/src/store/reviseFeatures/enrichWithMetaServices.ts","../../../plugins/Draw/src/store/reviseFeatures/mergeToMultiGeometries.ts","../../../../node_modules/@turf/boolean-crosses/dist/esm/index.js","../../../../node_modules/@turf/boolean-valid/dist/esm/index.js","../../../plugins/Draw/src/store/reviseFeatures/validateGeoJson.ts","../../../plugins/Draw/src/store/reviseFeatures/index.ts","../../../plugins/Draw/src/store/actions.ts","../../../plugins/Draw/src/store/index.ts","../../../plugins/Draw/src/index.ts","../../../plugins/Export/src/types.ts","../../../plugins/Export/src/components/Button.vue","../../../plugins/Export/src/components/Export.vue","../../../plugins/Export/src/locales.ts","../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/fflate/esm/browser.js","../../../../node_modules/jspdf/dist/jspdf.es.min.js","../../../plugins/Export/src/store/actions.ts","../../../plugins/Export/src/store/index.ts","../../../plugins/Export/src/index.ts","../../../plugins/Filter/src/components/Filter.vue","../../../plugins/Filter/src/locales.ts","../../../plugins/Filter/src/components/ChooseTimeFrame.vue","../../../plugins/Filter/src/utils/updateFeatureVisibility.ts","../../../plugins/Filter/src/utils/setState.ts","../../../plugins/Filter/src/utils/arrayOnlyContains.ts","../../../plugins/Filter/src/utils/parseTimeOption.ts","../../../plugins/Filter/src/store/index.ts","../../../plugins/Filter/src/index.ts","../../../plugins/Fullscreen/src/components/Fullscreen.vue","../../../plugins/Fullscreen/src/locales.ts","../../../plugins/Fullscreen/src/store/index.ts","../../../plugins/Fullscreen/src/index.ts","../../../plugins/GeoLocation/src/components/GeoLocation.vue","../../../plugins/GeoLocation/src/locales.ts","../../../plugins/GeoLocation/src/store/getInitialState.ts","../../../lib/tooltip/index.ts","../../../lib/passesBoundaryCheck/index.ts","../../../plugins/GeoLocation/src/assets/geoLocationMarker.js","../../../plugins/GeoLocation/src/utils/positionChanged.ts","../../../plugins/GeoLocation/src/store/actions.ts","../../../plugins/GeoLocation/src/store/getters.ts","../../../plugins/GeoLocation/src/store/index.ts","../../../plugins/GeoLocation/src/index.ts","../../../plugins/Gfi/src/components/FeatureSwitchButtons.vue","../../../plugins/Gfi/src/components/FeatureButtonGroup.vue","../../../plugins/Gfi/src/utils/isValidHttpUrl.js","../../../plugins/Gfi/src/components/FeatureTableBody.vue","../../../plugins/Gfi/src/components/FeatureTableHead.vue","../../../plugins/Gfi/src/components/Feature.vue","../../../plugins/Gfi/src/components/List.vue","../../../plugins/Gfi/src/components/Gfi.vue","../../../plugins/Gfi/src/locales.ts","../../../plugins/Gfi/src/store/getInitialState.ts","../../../plugins/Gfi/src/utils/filterFeatures.ts","../../../plugins/Gfi/src/utils/displayFeatureLayer.ts","../../../plugins/Gfi/src/utils/renderFeatures.ts","../../../plugins/Gfi/src/utils/requestGfiWms.ts","../../../plugins/Gfi/src/utils/requestGfiWfs.ts","../../../plugins/Gfi/src/utils/requestGfiGeoJson.ts","../../../plugins/Gfi/src/utils/requestGfi.ts","../../../plugins/Gfi/src/utils/sortFeatures.ts","../../../plugins/Gfi/src/store/actions/debouncedGfiRequest.ts","../../../plugins/Gfi/src/utils/getOriginalFeature.ts","../../../plugins/Gfi/src/store/actions/setup.ts","../../../plugins/Gfi/src/store/actions/setupMultiSelection.ts","../../../plugins/Gfi/src/store/actions/index.ts","../../../plugins/Gfi/src/store/mutations.ts","../../../plugins/Gfi/src/utils/listableLayersFilter.ts","../../../plugins/Gfi/src/store/getters.ts","../../../plugins/Gfi/src/store/index.ts","../../../plugins/Gfi/src/index.ts","../../../plugins/IconMenu/src/components/IconMenuButton.vue","../../../plugins/IconMenu/src/components/IconMenu.vue","../../../plugins/IconMenu/src/locales.ts","../../../plugins/IconMenu/src/store/index.ts","../../../plugins/IconMenu/src/index.ts","../../../plugins/LayerChooser/src/components/Options.vue","../../../plugins/LayerChooser/src/components/LayerWrapper.vue","../../../plugins/LayerChooser/src/components/Selection.vue","../../../plugins/LayerChooser/src/components/LayerChooser.vue","../../../plugins/LayerChooser/src/locales.ts","../../../plugins/LayerChooser/src/utils/layerFolding.ts","../../../plugins/LayerChooser/src/utils/getBackgroundsAndMasks.ts","../../../plugins/LayerChooser/src/utils/findInCapabilities.ts","../../../plugins/LayerChooser/src/utils/getOpenedOptionsServiceLayers.ts","../../../plugins/LayerChooser/src/utils/isLayerIdIncluded.ts","../../../plugins/LayerChooser/src/store/index.ts","../../../plugins/LayerChooser/src/index.ts","../../../plugins/Legend/src/components/Legend.vue","../../../plugins/Legend/src/locales.ts","../../../plugins/Legend/src/index.ts","../../../plugins/LoadingIndicator/src/components/loaderStyles/Roller.vue","../../../plugins/LoadingIndicator/src/components/loaderStyles/Circle.vue","../../../plugins/LoadingIndicator/src/components/loaderStyles/Spinner.vue","../../../plugins/LoadingIndicator/src/components/loaderStyles/Ring.vue","../../../plugins/LoadingIndicator/src/components/loaderStyles/Basic.vue","../../../plugins/LoadingIndicator/src/components/LoadingIndicator.vue","../../../plugins/LoadingIndicator/src/locales.ts","../../../plugins/LoadingIndicator/src/store/state.ts","../../../plugins/LoadingIndicator/src/store/getters.ts","../../../plugins/LoadingIndicator/src/store/mutations.ts","../../../plugins/LoadingIndicator/src/store/index.ts","../../../plugins/LoadingIndicator/src/index.ts","../../../plugins/Pins/src/util/getPointCoordinate.ts","../../../plugins/Pins/src/util/getPinSvg.ts","../../../plugins/Pins/src/util/getPinStyle.ts","../../../plugins/Pins/src/store/state.ts","../../../plugins/Pins/src/store/getters.ts","../../../plugins/Pins/src/store/index.ts","../../../plugins/Pins/src/locales.ts","../../../plugins/Pins/src/index.ts","../../../plugins/PointerPosition/src/components/PointerPosition.vue","../../../plugins/PointerPosition/src/store/index.ts","../../../plugins/PointerPosition/src/locales.ts","../../../plugins/PointerPosition/src/index.ts","../../../../node_modules/lodash.mapvalues/index.js","../../../plugins/ReverseGeocoder/src/store/actions/reverseGeocode.ts","../../../plugins/ReverseGeocoder/src/store/index.ts","../../../plugins/ReverseGeocoder/src/index.ts","../../../plugins/Routing/src/utils/routingServiceUtils.ts","../../../plugins/Routing/src/store/state.ts","../../../plugins/Routing/src/store/actions.ts","../../../plugins/Routing/src/store/index.ts","../../../plugins/Routing/src/components/RoutingDetails.vue","../../../plugins/Routing/src/components/RoutingOptions.vue","../../../plugins/Routing/src/components/Routing.vue","../../../plugins/Routing/src/locales.ts","../../../plugins/Routing/src/index.ts","../../../plugins/Scale/src/utils/thousandsSeperator.ts","../../../plugins/Scale/src/utils/beautifyScale.ts","../../../plugins/Scale/src/components/Scale.vue","../../../plugins/Scale/src/locales.ts","../../../plugins/Scale/src/utils/getDpi.ts","../../../plugins/Scale/src/utils/calculateScaleFromResolution.ts","../../../plugins/Scale/src/store/index.ts","../../../plugins/Scale/src/index.ts","../../../plugins/Toast/src/components/Toast.vue","../../../plugins/Toast/src/locales.ts","../../../plugins/Toast/src/store/index.ts","../../../plugins/Toast/src/index.ts","../../../plugins/Zoom/src/components/ZoomSlider.vue","../../../plugins/Zoom/src/components/ZoomButtonContainer.vue","../../../plugins/Zoom/src/components/Zoom.vue","../../../plugins/Zoom/src/locales.ts","../../../plugins/Zoom/src/store/index.ts","../../../plugins/Zoom/src/index.ts","../src/polar-client.ts","../../../../node_modules/html2canvas/dist/html2canvas.esm.js","../../../../node_modules/jspdf/node_modules/dompurify/dist/purify.es.js","../../../../node_modules/core-js/internals/global-this.js","../../../../node_modules/core-js/internals/fails.js","../../../../node_modules/core-js/internals/descriptors.js","../../../../node_modules/core-js/internals/function-bind-native.js","../../../../node_modules/core-js/internals/function-call.js","../../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../../node_modules/core-js/internals/create-property-descriptor.js","../../../../node_modules/core-js/internals/function-uncurry-this.js","../../../../node_modules/core-js/internals/classof-raw.js","../../../../node_modules/core-js/internals/indexed-object.js","../../../../node_modules/core-js/internals/is-null-or-undefined.js","../../../../node_modules/core-js/internals/require-object-coercible.js","../../../../node_modules/core-js/internals/to-indexed-object.js","../../../../node_modules/core-js/internals/is-callable.js","../../../../node_modules/core-js/internals/is-object.js","../../../../node_modules/core-js/internals/get-built-in.js","../../../../node_modules/core-js/internals/object-is-prototype-of.js","../../../../node_modules/core-js/internals/environment-user-agent.js","../../../../node_modules/core-js/internals/environment-v8-version.js","../../../../node_modules/core-js/internals/symbol-constructor-detection.js","../../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../../node_modules/core-js/internals/is-symbol.js","../../../../node_modules/core-js/internals/try-to-string.js","../../../../node_modules/core-js/internals/a-callable.js","../../../../node_modules/core-js/internals/get-method.js","../../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../../node_modules/core-js/internals/define-global-property.js","../../../../node_modules/core-js/internals/shared-store.js","../../../../node_modules/core-js/internals/shared.js","../../../../node_modules/core-js/internals/to-object.js","../../../../node_modules/core-js/internals/has-own-property.js","../../../../node_modules/core-js/internals/uid.js","../../../../node_modules/core-js/internals/well-known-symbol.js","../../../../node_modules/core-js/internals/to-primitive.js","../../../../node_modules/core-js/internals/to-property-key.js","../../../../node_modules/core-js/internals/document-create-element.js","../../../../node_modules/core-js/internals/ie8-dom-define.js","../../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../../node_modules/core-js/internals/v8-prototype-define-bug.js","../../../../node_modules/core-js/internals/an-object.js","../../../../node_modules/core-js/internals/object-define-property.js","../../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../../node_modules/core-js/internals/function-name.js","../../../../node_modules/core-js/internals/inspect-source.js","../../../../node_modules/core-js/internals/weak-map-basic-detection.js","../../../../node_modules/core-js/internals/shared-key.js","../../../../node_modules/core-js/internals/hidden-keys.js","../../../../node_modules/core-js/internals/internal-state.js","../../../../node_modules/core-js/internals/make-built-in.js","../../../../node_modules/core-js/internals/define-built-in.js","../../../../node_modules/core-js/internals/math-trunc.js","../../../../node_modules/core-js/internals/to-integer-or-infinity.js","../../../../node_modules/core-js/internals/to-absolute-index.js","../../../../node_modules/core-js/internals/to-length.js","../../../../node_modules/core-js/internals/length-of-array-like.js","../../../../node_modules/core-js/internals/array-includes.js","../../../../node_modules/core-js/internals/object-keys-internal.js","../../../../node_modules/core-js/internals/enum-bug-keys.js","../../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../../node_modules/core-js/internals/own-keys.js","../../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../../node_modules/core-js/internals/is-forced.js","../../../../node_modules/core-js/internals/export.js","../../../../node_modules/core-js/internals/environment.js","../../../../node_modules/core-js/internals/environment-is-node.js","../../../../node_modules/core-js/internals/function-uncurry-this-accessor.js","../../../../node_modules/core-js/internals/is-possible-prototype.js","../../../../node_modules/core-js/internals/a-possible-prototype.js","../../../../node_modules/core-js/internals/object-set-prototype-of.js","../../../../node_modules/core-js/internals/set-to-string-tag.js","../../../../node_modules/core-js/internals/define-built-in-accessor.js","../../../../node_modules/core-js/internals/set-species.js","../../../../node_modules/core-js/internals/an-instance.js","../../../../node_modules/core-js/internals/to-string-tag-support.js","../../../../node_modules/core-js/internals/classof.js","../../../../node_modules/core-js/internals/is-constructor.js","../../../../node_modules/core-js/internals/a-constructor.js","../../../../node_modules/core-js/internals/species-constructor.js","../../../../node_modules/core-js/internals/function-apply.js","../../../../node_modules/core-js/internals/function-uncurry-this-clause.js","../../../../node_modules/core-js/internals/function-bind-context.js","../../../../node_modules/core-js/internals/html.js","../../../../node_modules/core-js/internals/array-slice.js","../../../../node_modules/core-js/internals/validate-arguments-length.js","../../../../node_modules/core-js/internals/environment-is-ios.js","../../../../node_modules/core-js/internals/task.js","../../../../node_modules/core-js/internals/safe-get-built-in.js","../../../../node_modules/core-js/internals/queue.js","../../../../node_modules/core-js/internals/environment-is-ios-pebble.js","../../../../node_modules/core-js/internals/environment-is-webos-webkit.js","../../../../node_modules/core-js/internals/microtask.js","../../../../node_modules/core-js/internals/host-report-errors.js","../../../../node_modules/core-js/internals/perform.js","../../../../node_modules/core-js/internals/promise-native-constructor.js","../../../../node_modules/core-js/internals/promise-constructor-detection.js","../../../../node_modules/core-js/internals/new-promise-capability.js","../../../../node_modules/core-js/modules/es.promise.constructor.js","../../../../node_modules/core-js/internals/iterators.js","../../../../node_modules/core-js/internals/is-array-iterator-method.js","../../../../node_modules/core-js/internals/get-iterator-method.js","../../../../node_modules/core-js/internals/get-iterator.js","../../../../node_modules/core-js/internals/iterator-close.js","../../../../node_modules/core-js/internals/iterate.js","../../../../node_modules/core-js/internals/check-correctness-of-iteration.js","../../../../node_modules/core-js/internals/promise-statics-incorrect-iteration.js","../../../../node_modules/core-js/modules/es.promise.all.js","../../../../node_modules/core-js/modules/es.promise.catch.js","../../../../node_modules/core-js/modules/es.promise.race.js","../../../../node_modules/core-js/modules/es.promise.reject.js","../../../../node_modules/core-js/internals/promise-resolve.js","../../../../node_modules/core-js/modules/es.promise.resolve.js","../../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../../node_modules/core-js/internals/to-string.js","../../../../node_modules/core-js/internals/regexp-flags.js","../../../../node_modules/core-js/internals/regexp-sticky-helpers.js","../../../../node_modules/core-js/internals/object-keys.js","../../../../node_modules/core-js/internals/object-define-properties.js","../../../../node_modules/core-js/internals/object-create.js","../../../../node_modules/core-js/internals/regexp-unsupported-dot-all.js","../../../../node_modules/core-js/internals/regexp-unsupported-ncg.js","../../../../node_modules/core-js/internals/regexp-exec.js","../../../../node_modules/core-js/modules/es.regexp.exec.js","../../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../../../../node_modules/core-js/internals/string-multibyte.js","../../../../node_modules/core-js/internals/advance-string-index.js","../../../../node_modules/core-js/internals/regexp-exec-abstract.js","../../../../node_modules/core-js/modules/es.string.match.js","../../../../node_modules/core-js/internals/get-substitution.js","../../../../node_modules/core-js/modules/es.string.replace.js","../../../../node_modules/core-js/internals/is-regexp.js","../../../../node_modules/core-js/internals/not-a-regexp.js","../../../../node_modules/core-js/internals/correct-is-regexp-logic.js","../../../../node_modules/core-js/modules/es.string.starts-with.js","../../../../node_modules/core-js/internals/add-to-unscopables.js","../../../../node_modules/core-js/internals/correct-prototype-getter.js","../../../../node_modules/core-js/internals/object-get-prototype-of.js","../../../../node_modules/core-js/internals/iterators-core.js","../../../../node_modules/core-js/internals/iterator-create-constructor.js","../../../../node_modules/core-js/internals/iterator-define.js","../../../../node_modules/core-js/internals/create-iter-result-object.js","../../../../node_modules/core-js/modules/es.array.iterator.js","../../../../node_modules/core-js/internals/dom-iterables.js","../../../../node_modules/core-js/internals/dom-token-list-prototype.js","../../../../node_modules/core-js/modules/web.dom-collections.iterator.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/core-js/internals/array-reduce.js","../../../../node_modules/core-js/internals/array-method-is-strict.js","../../../../node_modules/core-js/modules/es.array.reduce.js","../../../../node_modules/core-js/modules/es.string.ends-with.js","../../../../node_modules/core-js/modules/es.string.split.js","../../../../node_modules/performance-now/lib/performance-now.js","../../../../node_modules/raf/index.js","../../../../node_modules/core-js/internals/whitespaces.js","../../../../node_modules/core-js/internals/string-trim.js","../../../../node_modules/core-js/internals/string-trim-forced.js","../../../../node_modules/core-js/modules/es.string.trim.js","../../../../node_modules/rgbcolor/index.js","../../../../node_modules/core-js/modules/es.array.index-of.js","../../../../node_modules/core-js/modules/es.string.includes.js","../../../../node_modules/core-js/internals/is-array.js","../../../../node_modules/core-js/modules/es.array.reverse.js","../../../../node_modules/svg-pathdata/lib/SVGPathData.module.js","../../../../node_modules/core-js/internals/regexp-get-flags.js","../../../../node_modules/core-js/modules/es.regexp.to-string.js","../../../../node_modules/stackblur-canvas/dist/stackblur-es.js","../../../../node_modules/canvg/lib/index.es.js"],"sourcesContent":["/**\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/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/**\n * @typedef {'propertychange'} Types\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  TOUCHMOVE: 'touchmove',\n  WHEEL: 'wheel',\n};\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n  constructor() {\n    /**\n     * The object has already been disposed.\n     * @type {boolean}\n     * @protected\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 * 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} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n  let mid, cmp;\n  comparator = comparator || ascending;\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) {\n      /* Too low. */\n      low = mid + 1;\n    } else {\n      /* 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 * Compare function sorting arrays in ascending order.  Safe to use for numeric values.\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 ascending(a, b) {\n  return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * Compare function sorting arrays in descending order.  Safe to use for numeric values.\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 greater than, equal to, or less than the second.\n */\nexport function descending(a, b) {\n  return a < b ? 1 : a > b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array<number>} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n *    0 means return the nearest,\n *    > 0 means return the largest nearest,\n *    < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n  if (arr[0] <= target) {\n    return 0;\n  }\n\n  const n = arr.length;\n  if (target <= arr[n - 1]) {\n    return n - 1;\n  }\n\n  if (typeof direction === 'function') {\n    for (let i = 1; i < n; ++i) {\n      const candidate = arr[i];\n      if (candidate === target) {\n        return i;\n      }\n      if (candidate < target) {\n        if (direction(target, arr[i - 1], candidate) > 0) {\n          return i - 1;\n        }\n        return i;\n      }\n    }\n    return n - 1;\n  }\n\n  if (direction > 0) {\n    for (let i = 1; i < n; ++i) {\n      if (arr[i] < target) {\n        return i - 1;\n      }\n    }\n    return n - 1;\n  }\n\n  if (direction < 0) {\n    for (let i = 1; i < n; ++i) {\n      if (arr[i] <= target) {\n        return i;\n      }\n    }\n    return n - 1;\n  }\n\n  for (let i = 1; i < n; ++i) {\n    if (arr[i] == target) {\n      return i;\n    }\n    if (arr[i] < target) {\n      if (arr[i - 1] - target < target - arr[i]) {\n        return i - 1;\n      }\n      return i;\n    }\n  }\n  return n - 1;\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 * @param {Array<VALUE>} arr The array to modify.\n * @param {!Array<VALUE>|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 * @param {Array<VALUE>} 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 * @param {Array<any>|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array<any>|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 * Sort the passed array such that the relative order of equal elements is preserved.\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 * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n  const compare = func || ascending;\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 || (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 * @return {boolean} true.\n */\nexport function TRUE() {\n  return true;\n}\n\n/**\n * Always returns false.\n * @return {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  /** @type {ReturnType} */\n  let lastResult;\n\n  /** @type {Array<any>|undefined} */\n  let lastArgs;\n\n  let lastThis;\n\n  /**\n   * @this {*} Only need to know if `this` changed, don't care what type\n   * @return {ReturnType} Memoized value\n   */\n  return function () {\n    const nextArgs = Array.prototype.slice.call(arguments);\n    if (!lastArgs || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n      lastThis = this;\n      lastArgs = nextArgs;\n      lastResult = fn.apply(this, arguments);\n    }\n    return lastResult;\n  };\n}\n\n/**\n * @template T\n * @param {function(): (T | Promise<T>)} getter A function that returns a value or a promise for a value.\n * @return {Promise<T>} A promise for the value.\n */\nexport function toPromise(getter) {\n  function promiseGetter() {\n    let value;\n    try {\n      value = getter();\n    } catch (err) {\n      return Promise.reject(err);\n    }\n    if (value instanceof Promise) {\n      return value;\n    }\n    return Promise.resolve(value);\n  }\n  return promiseGetter();\n}\n","/**\n * @module ol/obj\n */\n\n/**\n * Removes all properties from an object.\n * @param {Object<string, unknown>} 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 * 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/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   * @param {string} type Type.\n   */\n  constructor(type) {\n    /**\n     * @type {boolean}\n     */\n    this.propagationStopped;\n\n    /**\n     * @type {boolean}\n     */\n    this.defaultPrevented;\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   * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n   * will be fired.\n   * @api\n   */\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n\n  /**\n   * Stop event propagation.\n   * @api\n   */\n  stopPropagation() {\n    this.propagationStopped = true;\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 * @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 {clear} from '../obj.js';\nimport Event from './Event.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\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   * @param {*} [target] Default event target for dispatched events.\n   */\n  constructor(target) {\n    super();\n\n    /**\n     * @private\n     * @type {*}\n     */\n    this.eventTarget_ = target;\n\n    /**\n     * @private\n     * @type {Object<string, number>|null}\n     */\n    this.pendingRemovals_ = null;\n\n    /**\n     * @private\n     * @type {Object<string, number>|null}\n     */\n    this.dispatching_ = null;\n\n    /**\n     * @private\n     * @type {Object<string, Array<import(\"../events.js\").Listener>>|null}\n     */\n    this.listeners_ = null;\n  }\n\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../events.js\").Listener} listener Listener.\n   */\n  addEventListener(type, listener) {\n    if (!type || !listener) {\n      return;\n    }\n    const listeners = this.listeners_ || (this.listeners_ = {});\n    const listenersForType = listeners[type] || (listeners[type] = []);\n    if (!listenersForType.includes(listener)) {\n      listenersForType.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 {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 isString = typeof event === 'string';\n    const type = isString ? event : event.type;\n    const listeners = this.listeners_ && this.listeners_[type];\n    if (!listeners) {\n      return;\n    }\n\n    const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n    if (!evt.target) {\n      evt.target = this.eventTarget_ || this;\n    }\n    const dispatching = this.dispatching_ || (this.dispatching_ = {});\n    const pendingRemovals =\n      this.pendingRemovals_ || (this.pendingRemovals_ = {});\n    if (!(type in dispatching)) {\n      dispatching[type] = 0;\n      pendingRemovals[type] = 0;\n    }\n    ++dispatching[type];\n    let propagate;\n    for (let i = 0, ii = listeners.length; i < ii; ++i) {\n      if ('handleEvent' in listeners[i]) {\n        propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n          listeners[i]\n        ).handleEvent(evt);\n      } else {\n        propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n          listeners[i]\n        ).call(this, evt);\n      }\n      if (propagate === false || evt.propagationStopped) {\n        propagate = false;\n        break;\n      }\n    }\n    if (--dispatching[type] === 0) {\n      let pr = pendingRemovals[type];\n      delete pendingRemovals[type];\n      while (pr--) {\n        this.removeEventListener(type, VOID);\n      }\n      delete dispatching[type];\n    }\n    return propagate;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.listeners_ && 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<import(\"../events.js\").Listener>|undefined} Listeners.\n   */\n  getListeners(type) {\n    return (this.listeners_ && this.listeners_[type]) || undefined;\n  }\n\n  /**\n   * @param {string} [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(type) {\n    if (!this.listeners_) {\n      return false;\n    }\n    return type\n      ? type in this.listeners_\n      : Object.keys(this.listeners_).length > 0;\n  }\n\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../events.js\").Listener} listener Listener.\n   */\n  removeEventListener(type, listener) {\n    if (!this.listeners_) {\n      return;\n    }\n    const listeners = this.listeners_[type];\n    if (!listeners) {\n      return;\n    }\n    const index = listeners.indexOf(listener);\n    if (index !== -1) {\n      if (this.pendingRemovals_ && 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\nexport default Target;\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\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 * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\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} [thisArg] Object referenced by the `this` keyword in the\n *     listener. Default is the `target`.\n * @param {boolean} [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, thisArg, once) {\n  if (once) {\n    const originalListener = listener;\n    /**\n     * @param {Event|import('./events/Event.js').default} event The event\n     * @return {void|boolean} When the function returns `false`, event propagation will stop.\n     * @this {typeof target}\n     */\n    listener = function (event) {\n      target.removeEventListener(type, listener);\n      return originalListener.call(thisArg ?? this, event);\n    };\n  } else if (thisArg && thisArg !== target) {\n    listener = listener.bind(thisArg);\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 * 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} [thisArg] 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, thisArg) {\n  return listen(target, type, listener, thisArg, true);\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/Observable\n */\nimport EventType from './events/EventType.js';\nimport EventTarget from './events/Target.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature<EventTypes, import(\"./events/Event.js\").default, Return> & CombinedOnSignature<EventTypes, Return>} ObservableOnSignature\n */\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    super();\n\n    this.on =\n      /** @type {ObservableOnSignature<import(\"./events\").EventsKey>} */ (\n        this.onInternal\n      );\n\n    this.once =\n      /** @type {ObservableOnSignature<import(\"./events\").EventsKey>} */ (\n        this.onceInternal\n      );\n\n    this.un = /** @type {ObservableOnSignature<void>} */ (this.unInternal);\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.revision_ = 0;\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   * @param {string|Array<string>} type Type.\n   * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n   * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Event key.\n   * @protected\n   */\n  onInternal(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    }\n    return listen(this, /** @type {string} */ (type), listener);\n  }\n\n  /**\n   * @param {string|Array<string>} type Type.\n   * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n   * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Event key.\n   * @protected\n   */\n  onceInternal(type, listener) {\n    let key;\n    if (Array.isArray(type)) {\n      const len = type.length;\n      key = new Array(len);\n      for (let i = 0; i < len; ++i) {\n        key[i] = listenOnce(this, type[i], listener);\n      }\n    } else {\n      key = listenOnce(this, /** @type {string} */ (type), listener);\n    }\n    /** @type {Object} */ (listener).ol_key = key;\n    return key;\n  }\n\n  /**\n   * Unlisten for a certain type of event.\n   * @param {string|Array<string>} type Type.\n   * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n   * @protected\n   */\n  unInternal(type, listener) {\n    const key = /** @type {Object} */ (listener).ol_key;\n    if (key) {\n      unByKey(key);\n    } else 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 * Listen for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} 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 */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} 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 */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} 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\nexport default Observable;\n","/**\n * @module ol/util\n */\n\n/**\n * @return {never} Any return.\n */\nexport function abstract() {\n  throw new Error('Unimplemented abstract method.');\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 = '10.4.0';\n","/**\n * @module ol/Object\n */\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport Event from './events/Event.js';\nimport {isEmpty} from './obj.js';\nimport {getUid} from './util.js';\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   * @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 * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types, ObjectEvent, Return> &\n *    import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types, Return>} ObjectOnSignature\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~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   * @param {Object<string, *>} [values] An object with key-value pairs.\n   */\n  constructor(values) {\n    super();\n\n    /***\n     * @type {ObjectOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ObjectOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ObjectOnSignature<void>}\n     */\n    this.un;\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<string, *>|null}\n     */\n    this.values_ = null;\n\n    if (values !== undefined) {\n      this.setProperties(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_ && 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<string>} List of property names.\n   * @api\n   */\n  getKeys() {\n    return (this.values_ && Object.keys(this.values_)) || [];\n  }\n\n  /**\n   * Get an object of all property names and values.\n   * @return {Object<string, *>} Object.\n   * @api\n   */\n  getProperties() {\n    return (this.values_ && Object.assign({}, this.values_)) || {};\n  }\n\n  /**\n   * Get an object of all property names and values.\n   * @return {Object<string, *>?} Object.\n   */\n  getPropertiesInternal() {\n    return this.values_;\n  }\n\n  /**\n   * @return {boolean} The object has properties.\n   */\n  hasProperties() {\n    return !!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 = `change:${key}`;\n    if (this.hasListener(eventType)) {\n      this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n    }\n    eventType = ObjectEventType.PROPERTYCHANGE;\n    if (this.hasListener(eventType)) {\n      this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n    }\n  }\n\n  /**\n   * @param {string} key Key name.\n   * @param {import(\"./events.js\").Listener} listener Listener.\n   */\n  addChangeListener(key, listener) {\n    this.addEventListener(`change:${key}`, listener);\n  }\n\n  /**\n   * @param {string} key Key name.\n   * @param {import(\"./events.js\").Listener} listener Listener.\n   */\n  removeChangeListener(key, listener) {\n    this.removeEventListener(`change:${key}`, listener);\n  }\n\n  /**\n   * Sets a value.\n   * @param {string} key Key name.\n   * @param {*} value Value.\n   * @param {boolean} [silent] Update without triggering an event.\n   * @api\n   */\n  set(key, value, silent) {\n    const values = this.values_ || (this.values_ = {});\n    if (silent) {\n      values[key] = value;\n    } else {\n      const oldValue = values[key];\n      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<string, *>} values Values.\n   * @param {boolean} [silent] Update without triggering an event.\n   * @api\n   */\n  setProperties(values, silent) {\n    for (const key in values) {\n      this.set(key, values[key], silent);\n    }\n  }\n\n  /**\n   * Apply any properties from another object without triggering events.\n   * @param {BaseObject} source The source object.\n   * @protected\n   */\n  applyProperties(source) {\n    if (!source.values_) {\n      return;\n    }\n    Object.assign(this.values_ || (this.values_ = {}), source.values_);\n  }\n\n  /**\n   * Unsets a property.\n   * @param {string} key Key name.\n   * @param {boolean} [silent] Unset without triggering an event.\n   * @api\n   */\n  unset(key, silent) {\n    if (this.values_ && key in this.values_) {\n      const oldValue = this.values_[key];\n      delete this.values_[key];\n      if (isEmpty(this.values_)) {\n        this.values_ = null;\n      }\n      if (!silent) {\n        this.notify(key, oldValue);\n      }\n    }\n  }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/Collection\n */\nimport CollectionEventType from './CollectionEventType.js';\nimport BaseObject from './Object.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n  LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n  /**\n   * @param {import(\"./CollectionEventType.js\").default} type Type.\n   * @param {T} element Element.\n   * @param {number} index The index of the added or removed element.\n   */\n  constructor(type, element, index) {\n    super(type);\n\n    /**\n     * The element that is added to or removed from the collection.\n     * @type {T}\n     * @api\n     */\n    this.element = element;\n\n    /**\n     * The index of the added or removed element.\n     * @type {number}\n     * @api\n     */\n    this.index = index;\n  }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types|'change:length', import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent<T>, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types|\n *     'change:length'|'add'|'remove',Return>} CollectionOnSignature\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   * @param {Array<T>} [array] Array.\n   * @param {Options} [options] Collection options.\n   */\n  constructor(array, options) {\n    super();\n\n    /***\n     * @type {CollectionOnSignature<T, import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {CollectionOnSignature<T, import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {CollectionOnSignature<T, void>}\n     */\n    this.un;\n\n    options = options || {};\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.unique_ = !!options.unique;\n\n    /**\n     * @private\n     * @type {!Array<T>}\n     */\n    this.array_ = array ? 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   * 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<T>} arr Array.\n   * @return {Collection<T>} 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<T>): *} 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<T>} 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 (index < 0 || index > this.getLength()) {\n      throw new Error('Index out of bounds: ' + index);\n    }\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  /**\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    if (index < 0 || index >= this.getLength()) {\n      return undefined;\n    }\n    const prev = this.array_[index];\n    this.array_.splice(index, 1);\n    this.updateLength_();\n    this.dispatchEvent(\n      /** @type {CollectionEvent<T>} */ (\n        new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n      ),\n    );\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      this.insertAt(index, elem);\n      return;\n    }\n    if (index < 0) {\n      throw new Error('Index out of bounds: ' + 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      /** @type {CollectionEvent<T>} */ (\n        new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n      ),\n    );\n    this.dispatchEvent(\n      /** @type {CollectionEvent<T>} */ (\n        new CollectionEvent(CollectionEventType.ADD, elem, index)\n      ),\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} [except] Optional index to ignore.\n   */\n  assertUnique_(elem, except) {\n    for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n      if (this.array_[i] === elem && i !== except) {\n        throw new Error('Duplicate item added to a unique collection');\n      }\n    }\n  }\n}\n\nexport default Collection;\n","/**\n * @module ol/asserts\n */\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {string} errorMessage Error message.\n */\nexport function assert(assertion, errorMessage) {\n  if (!assertion) {\n    throw new Error(errorMessage);\n  }\n}\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport {assert} from './asserts.js';\nimport EventType from './events/EventType.js';\nimport {listen, unlistenByKey} from './events.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 * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types|'change:geometry', import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types\n *     |'change:geometry', Return>} FeatureOnSignature\n */\n\n/***\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n * @typedef {Object<string, *> & { geometry?: Geometry }} ObjectWithGeometry\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~BaseObject} 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.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const 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 * const 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 * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n  /**\n   * @param {Geometry|ObjectWithGeometry<Geometry>} [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(geometryOrProperties) {\n    super();\n\n    /***\n     * @type {FeatureOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {FeatureOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {FeatureOnSignature<void>}\n     */\n    this.un;\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.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n    if (geometryOrProperties) {\n      if (\n        typeof (\n          /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n        ) === 'function'\n      ) {\n        const geometry = /** @type {Geometry} */ (geometryOrProperties);\n        this.setGeometry(geometry);\n      } else {\n        /** @type {Object<string, *>} */\n        const properties = 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<Geometry>} The clone.\n   * @api\n   */\n  clone() {\n    const clone = /** @type {Feature<Geometry>} */ (\n      new Feature(this.hasProperties() ? this.getProperties() : null)\n    );\n    clone.setGeometryName(this.getGeometryName());\n    const geometry = this.getGeometry();\n    if (geometry) {\n      clone.setGeometry(/** @type {Geometry} */ (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 /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\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|undefined} 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(\n        geometry,\n        EventType.CHANGE,\n        this.handleGeometryChange_,\n        this,\n      );\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 to override the layer style.  This can be a\n   * single style object, an array of styles, or a function that takes a\n   * resolution and returns an array of styles. To unset the feature style, call\n   * `setStyle()` without arguments or a falsey value.\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.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n    this.geometryName_ = name;\n    this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n    this.handleGeometryChanged_();\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>|!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  }\n  /**\n   * @type {Array<import(\"./style/Style.js\").default>}\n   */\n  let styles;\n  if (Array.isArray(obj)) {\n    styles = obj;\n  } else {\n    assert(\n      typeof (/** @type {?} */ (obj).getZIndex) === 'function',\n      'Expected an `ol/style/Style` or an array of `ol/style/Style.js`',\n    );\n    const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n    styles = [style];\n  }\n  return function () {\n    return styles;\n  };\n}\nexport default Feature;\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 Relationship from './extent/Relationship.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array<number>} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array<import(\"./coordinate.js\").Coordinate>} 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 * @param {Array<number>} xs Xs.\n * @param {Array<number>} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\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, dest);\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} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n  if (dest) {\n    dest[0] = extent[0] - value;\n    dest[1] = extent[1] - value;\n    dest[2] = extent[2] + value;\n    dest[3] = extent[3] + value;\n    return dest;\n  }\n  return [\n    extent[0] - value,\n    extent[1] - value,\n    extent[2] + value,\n    extent[3] + value,\n  ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n  if (dest) {\n    dest[0] = extent[0];\n    dest[1] = extent[1];\n    dest[2] = extent[2];\n    dest[3] = extent[3];\n    return dest;\n  }\n  return extent.slice();\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 * 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 * 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 (\n    extent1[0] <= extent2[0] &&\n    extent2[2] <= extent1[2] &&\n    extent1[1] <= extent2[1] &&\n    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 * 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 {import(\"./extent/Relationship.js\").default} 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 * 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 * 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} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n  if (dest) {\n    dest[0] = minX;\n    dest[1] = minY;\n    dest[2] = maxX;\n    dest[3] = maxY;\n    return dest;\n  }\n  return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n  return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n  const x = coordinate[0];\n  const y = coordinate[1];\n  return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n  const extent = createOrUpdateEmpty(dest);\n  return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  dest,\n) {\n  const extent = createOrUpdateEmpty(dest);\n  return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array<Array<import(\"./coordinate.js\").Coordinate>>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n  const extent = createOrUpdateEmpty(dest);\n  return extendRings(extent, rings);\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 (\n    extent1[0] == extent2[0] &&\n    extent1[2] == extent2[2] &&\n    extent1[1] == extent2[1] &&\n    extent1[3] == extent2[3]\n  );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n  return (\n    Math.abs(extent1[0] - extent2[0]) < tolerance &&\n    Math.abs(extent1[2] - extent2[2]) < tolerance &&\n    Math.abs(extent1[1] - extent2[1]) < tolerance &&\n    Math.abs(extent1[3] - extent2[3]) < tolerance\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 * @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 * @param {Extent} extent Extent.\n * @param {Array<import(\"./coordinate.js\").Coordinate>} 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 * @param {Extent} extent Extent.\n * @param {Array<number>} 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(\n  extent,\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n) {\n  for (; offset < end; offset += stride) {\n    extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n  }\n  return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array<Array<import(\"./coordinate.js\").Coordinate>>} 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 * @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 * 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 * 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 * 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 * 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 * 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 * 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 === 'bottom-left') {\n    coordinate = getBottomLeft(extent);\n  } else if (corner === 'bottom-right') {\n    coordinate = getBottomRight(extent);\n  } else if (corner === 'top-left') {\n    coordinate = getTopLeft(extent);\n  } else if (corner === 'top-right') {\n    coordinate = getTopRight(extent);\n  } else {\n    throw new Error('Invalid corner');\n  }\n  return coordinate;\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 * @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} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n  const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n    center,\n    resolution,\n    rotation,\n    size,\n  );\n  return createOrUpdate(\n    Math.min(x0, x1, x2, x3),\n    Math.min(y0, y1, y2, y3),\n    Math.max(x0, x1, x2, x3),\n    Math.max(y0, y1, y2, y3),\n    dest,\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 * @return {Array<number>} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\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  return [\n    x - xCos + ySin,\n    y - xSin - yCos,\n    x - xCos - ySin,\n    y - xSin + yCos,\n    x + xCos - ySin,\n    y + xSin + yCos,\n    x + xCos + ySin,\n    y + xSin - yCos,\n    x - xCos + ySin,\n    y - xSin - yCos,\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 * @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 * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n  const intersection = dest ? dest : 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 * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n  return getWidth(extent) + getHeight(extent);\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 * 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 * 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 * 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 * 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 (\n    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 * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n  if (dest) {\n    dest[0] = extent[0];\n    dest[1] = extent[1];\n    dest[2] = extent[2];\n    dest[3] = extent[3];\n    return dest;\n  }\n  return extent;\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 * 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 (\n    startRel === Relationship.INTERSECTING ||\n    endRel === Relationship.INTERSECTING\n  ) {\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) && !(startRel & Relationship.ABOVE)) {\n      // potentially intersects top\n      x = endX - (endY - maxY) / slope;\n      intersects = x >= minX && x <= maxX;\n    }\n    if (\n      !intersects &&\n      !!(endRel & Relationship.RIGHT) &&\n      !(startRel & Relationship.RIGHT)\n    ) {\n      // potentially intersects right\n      y = endY - (endX - maxX) * slope;\n      intersects = y >= minY && y <= maxY;\n    }\n    if (\n      !intersects &&\n      !!(endRel & Relationship.BELOW) &&\n      !(startRel & Relationship.BELOW)\n    ) {\n      // potentially intersects bottom\n      x = endX - (endY - minY) / slope;\n      intersects = x >= minX && x <= maxX;\n    }\n    if (\n      !intersects &&\n      !!(endRel & Relationship.LEFT) &&\n      !(startRel & Relationship.LEFT)\n    ) {\n      // potentially intersects left\n      y = endY - (endX - minX) * slope;\n      intersects = y >= minY && y <= maxY;\n    }\n  }\n  return intersects;\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} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n  if (isEmpty(extent)) {\n    return createOrUpdateEmpty(dest);\n  }\n  let coordinates = [];\n  if (stops > 1) {\n    const width = extent[2] - extent[0];\n    const height = extent[3] - extent[1];\n    for (let i = 0; i < stops; ++i) {\n      coordinates.push(\n        extent[0] + (width * i) / stops,\n        extent[1],\n        extent[2],\n        extent[1] + (height * i) / stops,\n        extent[2] - (width * i) / stops,\n        extent[3],\n        extent[0],\n        extent[3] - (height * i) / stops,\n      );\n    }\n  } else {\n    coordinates = [\n      extent[0],\n      extent[1],\n      extent[2],\n      extent[1],\n      extent[2],\n      extent[3],\n      extent[0],\n      extent[3],\n    ];\n  }\n  transformFn(coordinates, coordinates, 2);\n  const xs = [];\n  const ys = [];\n  for (let i = 0, l = coordinates.length; i < l; i += 2) {\n    xs.push(coordinates[i]);\n    ys.push(coordinates[i + 1]);\n  }\n  return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n  const projectionExtent = projection.getExtent();\n  const center = getCenter(extent);\n  if (\n    projection.canWrapX() &&\n    (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n  ) {\n    const worldWidth = getWidth(projectionExtent);\n    const worldsAway = Math.floor(\n      (center[0] - projectionExtent[0]) / worldWidth,\n    );\n    const offset = worldsAway * worldWidth;\n    extent[0] -= offset;\n    extent[2] -= offset;\n  }\n  return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @param {boolean} [multiWorld] Return all worlds\n * @return {Array<Extent>} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection, multiWorld) {\n  if (projection.canWrapX()) {\n    const projectionExtent = projection.getExtent();\n\n    if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n      return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n    }\n\n    wrapX(extent, projection);\n    const worldWidth = getWidth(projectionExtent);\n\n    if (getWidth(extent) > worldWidth && !multiWorld) {\n      // the extent wraps around on itself\n      return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n    }\n    if (extent[0] < projectionExtent[0]) {\n      // the extent crosses the anti meridian, so it needs to be sliced\n      return [\n        [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n        [projectionExtent[0], extent[1], extent[2], extent[3]],\n      ];\n    }\n    if (extent[2] > projectionExtent[2]) {\n      // the extent crosses the anti meridian, so it needs to be sliced\n      return [\n        [extent[0], extent[1], projectionExtent[2], extent[3]],\n        [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n      ];\n    }\n  }\n\n  return [extent];\n}\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 * 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 * 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 * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array<Array<number>>} mat Augmented matrix (n x n + 1 column)\n *                                     in row-major order.\n * @return {Array<number>|null} 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 * 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 * 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/**\n * Returns a number with a limited number of decimal digits.\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The input number with a limited number of decimal digits.\n */\nexport function toFixed(n, decimals) {\n  const factor = Math.pow(10, decimals);\n  return Math.round(n * factor) / factor;\n}\n\n/**\n * Rounds a number to the nearest integer value considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The nearest integer.\n */\nexport function round(n, decimals) {\n  return Math.round(toFixed(n, decimals));\n}\n\n/**\n * Rounds a number to the next smaller integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next smaller integer.\n */\nexport function floor(n, decimals) {\n  return Math.floor(toFixed(n, decimals));\n}\n\n/**\n * Rounds a number to the next bigger integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next bigger integer.\n */\nexport function ceil(n, decimals) {\n  return Math.ceil(toFixed(n, decimals));\n}\n\n/**\n * Wraps a number between some minimum and maximum values.\n * @param {number} n The number to wrap.\n * @param {number} min The minimum of the range (inclusive).\n * @param {number} max The maximum of the range (exclusive).\n * @return {number} The wrapped number.\n */\nexport function wrap(n, min, max) {\n  if (n >= min && n < max) {\n    return n;\n  }\n  const range = max - min;\n  return ((((n - min) % range) + range) % range) + min;\n}\n","/**\n * @module ol/sphere\n */\nimport {toDegrees, toRadians} from './math.js';\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 * 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 * 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} [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, radius) {\n  radius = 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 =\n    Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n    Math.sin(deltaLonBy2) *\n      Math.sin(deltaLonBy2) *\n      Math.cos(lat1) *\n      Math.cos(lat2);\n  return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\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 * 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} [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, options) {\n  options = options || {};\n  const radius = options.radius || DEFAULT_RADIUS;\n  const projection = options.projection || 'EPSG:3857';\n  const type = geometry.getType();\n  if (type !== 'GeometryCollection') {\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 'Point':\n    case 'MultiPoint': {\n      break;\n    }\n    case 'LineString':\n    case 'LinearRing': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      length = getLengthInternal(coordinates, radius);\n      break;\n    }\n    case 'MultiLineString':\n    case 'Polygon': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      for (i = 0, ii = coordinates.length; i < ii; ++i) {\n        length += getLengthInternal(coordinates[i], radius);\n      }\n      break;\n    }\n    case 'MultiPolygon': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).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 'GeometryCollection': {\n      const geometries =\n        /** @type {import(\"./geom/GeometryCollection.js\").default} */ (\n          geometry\n        ).getGeometries();\n      for (i = 0, ii = geometries.length; i < ii; ++i) {\n        length += getLength(geometries[i], options);\n      }\n      break;\n    }\n    default: {\n      throw new Error('Unsupported geometry type: ' + type);\n    }\n  }\n  return length;\n}\n\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs.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<import(\"./coordinate.js\").Coordinate>} 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 +=\n      toRadians(x2 - x1) *\n      (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n    x1 = x2;\n    y1 = y2;\n  }\n  return (area * radius * radius) / 2.0;\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} [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, options) {\n  options = options || {};\n  const radius = options.radius || DEFAULT_RADIUS;\n  const projection = options.projection || 'EPSG:3857';\n  const type = geometry.getType();\n  if (type !== 'GeometryCollection') {\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 'Point':\n    case 'MultiPoint':\n    case 'LineString':\n    case 'MultiLineString':\n    case 'LinearRing': {\n      break;\n    }\n    case 'Polygon': {\n      coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (\n        geometry\n      ).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 'MultiPolygon': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).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 'GeometryCollection': {\n      const geometries =\n        /** @type {import(\"./geom/GeometryCollection.js\").default} */ (\n          geometry\n        ).getGeometries();\n      for (i = 0, ii = geometries.length; i < ii; ++i) {\n        area += getArea(geometries[i], options);\n      }\n      break;\n    }\n    default: {\n      throw new Error('Unsupported geometry type: ' + type);\n    }\n  }\n  return area;\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} [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, radius) {\n  radius = 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  );\n  const lon =\n    lon1 +\n    Math.atan2(\n      Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1),\n      Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat),\n    );\n  return [toDegrees(lon), toDegrees(lat)];\n}\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object<Level, number>}\n */\nconst levels = {\n  info: 1,\n  warn: 2,\n  error: 3,\n  none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level.  By default, the level is set to 'info' and all\n * messages will be logged.  Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors.  Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n  level = levels[l];\n}\n\n/**\n * @param  {...any} args Arguments to log\n */\nexport function log(...args) {\n  if (level > levels.info) {\n    return;\n  }\n  console.log(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param  {...any} args Arguments to log\n */\nexport function warn(...args) {\n  if (level > levels.warn) {\n    return;\n  }\n  console.warn(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param  {...any} args Arguments to log\n */\nexport function error(...args) {\n  if (level > levels.error) {\n    return;\n  }\n  console.error(...args); // eslint-disable-line no-console\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} [precision] Precision of the output string (i.e. number of decimal places)\n * @return {string} Formatted string\n */\nexport function padNumber(number, width, precision) {\n  const numberString =\n    precision !== undefined ? number.toFixed(precision) : '' + number;\n  let decimal = numberString.indexOf('.');\n  decimal = decimal === -1 ? numberString.length : decimal;\n  return decimal > width\n    ? numberString\n    : new Array(1 + width - decimal).join('0') + numberString;\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 * @return {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 {getWidth} from './extent.js';\nimport {modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an `xy`, `xyz` or `xyzm` coordinate.\n * Example: `[16, 48]`.\n * @typedef {Array<number>} Coordinate\n * @api\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 * 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.js';\n *\n *     const 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 * 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 * 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<Coordinate>} 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 =\n    dx === 0 && dy === 0\n      ? 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 * 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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const stringifyFunc = createStringXY();\n *     const 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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const stringifyFunc = createStringXY(2);\n *     const out = stringifyFunc(coord);\n *     // out is now '7.85, 47.98'\n *\n * @param {number} [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(fractionDigits) {\n  return (\n    /**\n     * @param {Coordinate} coordinate Coordinate.\n     * @return {string} String XY.\n     */\n    function (coordinate) {\n      return toStringXY(coordinate, fractionDigits);\n    }\n  );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [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, fractionDigits) {\n  const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n  const x = Math.abs(3600 * normalizedDegrees);\n  const decimals = fractionDigits || 0;\n\n  let deg = Math.floor(x / 3600);\n  let min = Math.floor((x - deg * 3600) / 60);\n  let sec = toFixed(x - deg * 3600 - min * 60, decimals);\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  let hdms = deg + '\\u00b0';\n  if (min !== 0 || sec !== 0) {\n    hdms += ' ' + padNumber(min, 2) + '\\u2032';\n  }\n  if (sec !== 0) {\n    hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n  }\n  if (normalizedDegrees !== 0) {\n    hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n  }\n\n  return hdms;\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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const template = 'Coordinate is ({x}|{y}).';\n *     const 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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const template = 'Coordinate is ({x}|{y}).';\n *     const 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} [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, fractionDigits) {\n  if (coordinate) {\n    return template\n      .replace('{x}', coordinate[0].toFixed(fractionDigits))\n      .replace('{y}', coordinate[1].toFixed(fractionDigits));\n  }\n  return '';\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 * 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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const 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 * 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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const 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 * @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 * @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 * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array<Coordinate>} 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, closestOnSegment(coordinate, segment));\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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const 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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const 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} [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, fractionDigits) {\n  if (coordinate) {\n    return (\n      degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n      ' ' +\n      degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n    );\n  }\n  return '';\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.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const out = toStringXY(coord);\n *     // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n *     import {toStringXY} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const out = toStringXY(coord, 1);\n *     // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [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, fractionDigits) {\n  return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n  if (projection.canWrapX()) {\n    const worldWidth = getWidth(projection.getExtent());\n    const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n    if (worldsAway) {\n      coordinate[0] -= worldsAway * worldWidth;\n    }\n  }\n  return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n  const projectionExtent = projection.getExtent();\n  let worldsAway = 0;\n  if (\n    projection.canWrapX() &&\n    (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n  ) {\n    sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n    worldsAway = Math.floor(\n      (coordinate[0] - projectionExtent[0]) / sourceExtentWidth,\n    );\n  }\n  return worldsAway;\n}\n","/**\n * @module ol/proj/Units\n */\n\n/**\n * @typedef {'radians' | 'degrees' | 'ft' | 'm' | 'pixels' | 'tile-pixels' | 'us-ft'} Units\n * Projection units.\n */\n\n/**\n * See http://duff.ess.washington.edu/data/raster/drg/docs/geotiff.txt\n * @type {Object<number, Units>}\n */\nconst unitByCode = {\n  '9001': 'm',\n  '9002': 'ft',\n  '9003': 'us-ft',\n  '9101': 'radians',\n  '9102': 'degrees',\n};\n\n/**\n * @param {number} code Unit code.\n * @return {Units} Units.\n */\nexport function fromCode(code) {\n  return unitByCode[code];\n}\n\n/**\n * @typedef {Object} MetersPerUnitLookup\n * @property {number} radians Radians\n * @property {number} degrees Degrees\n * @property {number} ft  Feet\n * @property {number} m Meters\n * @property {number} us-ft US feet\n */\n\n/**\n * Meters per unit lookup table.\n * @const\n * @type {MetersPerUnitLookup}\n * @api\n */\nexport const METERS_PER_UNIT = {\n  // use the radius of the Normal sphere\n  'radians': 6370997 / (2 * Math.PI),\n  'degrees': (2 * Math.PI * 6370997) / 360,\n  'ft': 0.3048,\n  'm': 1,\n  'us-ft': 1200 / 3937,\n};\n","/**\n * @module ol/proj/Projection\n */\nimport {METERS_PER_UNIT} from './Units.js';\n\n/**\n * The function is called with a `number` view resolution and a\n * {@link module:ol/coordinate~Coordinate} as arguments, and returns the `number` resolution\n * in projection units at the passed coordinate.\n * @typedef {function(number, import(\"../coordinate.js\").Coordinate):number} GetPointResolution\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").Units} [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 METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {GetPointResolution} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `number` view resolution and a {@link module:ol/coordinate~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 * @classdesc\n * In most cases, you should not need to create instances of this class.\n * Instead, where projection information is required, you can use a string\n * projection code or identifier (e.g. `EPSG:4326`) instead of a projection\n * instance.\n *\n * The library includes support for transforming coordinates between the following\n * projections:\n *\n *  WGS 84 / Geographic - Using codes `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`, `http://www.opengis.net/gml/srs/epsg.xml#4326`,\n *    or `urn:x-ogc:def:crs:EPSG:4326`\n *  WGS 84 / Spherical Mercator - Using codes `EPSG:3857`, `EPSG:102100`, `EPSG:102113`, `EPSG:900913`,\n *    `urn:ogc:def:crs:EPSG:6.18:3:3857`, or `http://www.opengis.net/gml/srs/epsg.xml#3857`\n *  WGS 84 / UTM zones - Using codes `EPSG:32601` through `EPSG:32660` for northern zones\n *    and `EPSG:32701` through `EPSG:32760` for southern zones. Note that the built-in UTM transforms\n *    are lower accuracy (with errors on the order of 0.1 m) than those that you might get in a\n *    library like [proj4js](https://github.com/proj4js/proj4js).\n *\n * For additional projection support, or to use higher accuracy transforms than the built-in ones, you can use\n * the [proj4js](https://github.com/proj4js/proj4js) library. With `proj4js`, after adding any new projection\n * definitions, call the {@link module:ol/proj/proj4.register} function.\n *\n * You can use the {@link module:ol/proj.get} function to retrieve a projection instance\n * for one of the registered projections.\n *\n * @api\n */\nclass Projection {\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\").Units}\n     */\n    this.units_ = /** @type {import(\"./Units.js\").Units} */ (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_ =\n      options.worldExtent !== undefined ? options.worldExtent : null;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.axisOrientation_ =\n      options.axisOrientation !== undefined ? 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 {GetPointResolution|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\").Units} 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 {GetPointResolution|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 Projection from './Projection.js';\n\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n/**\n * @const\n * @type {number}\n */\nexport const HALF_SIZE = Math.PI * RADIUS;\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const WORLD_EXTENT = [-180, -85, 180, 85];\n\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport const MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\n\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nclass EPSG3857Projection extends Projection {\n  /**\n   * @param {string} code Code.\n   */\n  constructor(code) {\n    super({\n      code: code,\n      units: 'm',\n      extent: EXTENT,\n      global: true,\n      worldExtent: WORLD_EXTENT,\n      getPointResolution: function (resolution, point) {\n        return resolution / Math.cosh(point[1] / RADIUS);\n      },\n    });\n  }\n}\n\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array<import(\"./Projection.js\").default>}\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('http://www.opengis.net/def/crs/EPSG/0/3857'),\n  new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array<number>} input Input array of coordinate values.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @param {number} [dimension] Dimension (default is `2`).\n * @param {number} [stride] Stride (default is `dimension`).\n * @return {Array<number>} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, output, dimension, stride) {\n  const length = input.length;\n  dimension = dimension > 1 ? dimension : 2;\n  stride = stride ?? dimension;\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 += stride) {\n    output[i] = (HALF_SIZE * input[i]) / 180;\n    let y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n    if (y > MAX_SAFE_Y) {\n      y = MAX_SAFE_Y;\n    } else if (y < -MAX_SAFE_Y) {\n      y = -MAX_SAFE_Y;\n    }\n    output[i + 1] = y;\n  }\n  return output;\n}\n\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array<number>} input Input array of coordinate values.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @param {number} [dimension] Dimension (default is `2`).\n * @param {number} [stride] Stride (default is `dimension`).\n * @return {Array<number>} Output array of coordinate values.\n */\nexport function toEPSG4326(input, output, dimension, stride) {\n  const length = input.length;\n  dimension = dimension > 1 ? dimension : 2;\n  stride = stride ?? dimension;\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 += stride) {\n    output[i] = (180 * input[i]) / HALF_SIZE;\n    output[i + 1] =\n      (360 * Math.atan(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';\n\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\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 * @const\n * @type {number}\n */\nexport const METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\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   * @param {string} code Code.\n   * @param {string} [axisOrientation] Axis orientation.\n   */\n  constructor(code, axisOrientation) {\n    super({\n      code: code,\n      units: 'degrees',\n      extent: EXTENT,\n      axisOrientation: axisOrientation,\n      global: true,\n      metersPerUnit: METERS_PER_UNIT,\n      worldExtent: EXTENT,\n    });\n  }\n}\n\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array<import(\"./Projection.js\").default>}\n */\nexport const PROJECTIONS = [\n  new EPSG4326Projection('CRS:84'),\n  new EPSG4326Projection('EPSG: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/def/crs/OGC/1.3/CRS84'),\n  new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n  new EPSG4326Projection('http://www.opengis.net/def/crs/EPSG/0/4326', 'neu'),\n];\n","/**\n * @module ol/proj/projections\n */\n\n/**\n * @type {Object<string, import(\"./Projection.js\").default>}\n */\nlet cache = {};\n\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n  cache = {};\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|null} The projection (if cached).\n */\nexport function get(code) {\n  return (\n    cache[code] ||\n    cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n    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/transforms\n */\nimport {isEmpty} from '../obj.js';\n\n/**\n * @private\n * @type {!Object<string, Object<string, import(\"../proj.js\").TransformFunction>>}\n */\nlet transforms = {};\n\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n  transforms = {};\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 * 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 * 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|null} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n  if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n    return transforms[sourceCode][destinationCode];\n  }\n  return null;\n}\n","/**\n * @module ol/proj/utm\n */\n\n/**\n * Adapted from https://github.com/Turbo87/utm\n * Copyright (c) 2012-2017 Tobias Bieniek\n *\n * The functions here provide approximate transforms to and from UTM.\n * They are not appropriate for use beyond the validity extend of a UTM\n * zone, and the accuracy of the transform decreases toward the zone\n * edges.\n */\n\nimport {toDegrees, toRadians, wrap} from '../math.js';\nimport Projection from './Projection.js';\n\n/**\n * @typedef {Object} UTMZone\n * @property {number} number The zone number (1 - 60).\n * @property {boolean} north The northern hemisphere.\n */\n\nconst K0 = 0.9996;\n\nconst E = 0.00669438;\nconst E2 = E * E;\nconst E3 = E2 * E;\nconst E_P2 = E / (1 - E);\n\nconst SQRT_E = Math.sqrt(1 - E);\nconst _E = (1 - SQRT_E) / (1 + SQRT_E);\nconst _E2 = _E * _E;\nconst _E3 = _E2 * _E;\nconst _E4 = _E3 * _E;\nconst _E5 = _E4 * _E;\n\nconst M1 = 1 - E / 4 - (3 * E2) / 64 - (5 * E3) / 256;\nconst M2 = (3 * E) / 8 + (3 * E2) / 32 + (45 * E3) / 1024;\nconst M3 = (15 * E2) / 256 + (45 * E3) / 1024;\nconst M4 = (35 * E3) / 3072;\n\nconst P2 = (3 / 2) * _E - (27 / 32) * _E3 + (269 / 512) * _E5;\nconst P3 = (21 / 16) * _E2 - (55 / 32) * _E4;\nconst P4 = (151 / 96) * _E3 - (417 / 128) * _E5;\nconst P5 = (1097 / 512) * _E4;\n\nconst R = 6378137;\n\n/**\n * @param {number} easting Easting value of coordinate.\n * @param {number} northing Northing value of coordinate.\n * @param {UTMZone} zone The UTM zone.\n * @return {import(\"../coordinate.js\").Coordinate} The transformed coordinate.\n */\nfunction toLonLat(easting, northing, zone) {\n  const x = easting - 500000;\n  const y = zone.north ? northing : northing - 10000000;\n\n  const m = y / K0;\n  const mu = m / (R * M1);\n\n  const pRad =\n    mu +\n    P2 * Math.sin(2 * mu) +\n    P3 * Math.sin(4 * mu) +\n    P4 * Math.sin(6 * mu) +\n    P5 * Math.sin(8 * mu);\n\n  const pSin = Math.sin(pRad);\n  const pSin2 = pSin * pSin;\n\n  const pCos = Math.cos(pRad);\n\n  const pTan = pSin / pCos;\n  const pTan2 = pTan * pTan;\n  const pTan4 = pTan2 * pTan2;\n\n  const epSin = 1 - E * pSin2;\n  const epSinSqrt = Math.sqrt(1 - E * pSin2);\n\n  const n = R / epSinSqrt;\n  const r = (1 - E) / epSin;\n\n  const c = E_P2 * pCos ** 2;\n  const c2 = c * c;\n\n  const d = x / (n * K0);\n  const d2 = d * d;\n  const d3 = d2 * d;\n  const d4 = d3 * d;\n  const d5 = d4 * d;\n  const d6 = d5 * d;\n\n  const latitude =\n    pRad -\n    (pTan / r) *\n      (d2 / 2 - (d4 / 24) * (5 + 3 * pTan2 + 10 * c - 4 * c2 - 9 * E_P2)) +\n    (d6 / 720) * (61 + 90 * pTan2 + 298 * c + 45 * pTan4 - 252 * E_P2 - 3 * c2);\n\n  let longitude =\n    (d -\n      (d3 / 6) * (1 + 2 * pTan2 + c) +\n      (d5 / 120) * (5 - 2 * c + 28 * pTan2 - 3 * c2 + 8 * E_P2 + 24 * pTan4)) /\n    pCos;\n\n  longitude = wrap(\n    longitude + toRadians(zoneToCentralLongitude(zone.number)),\n    -Math.PI,\n    Math.PI,\n  );\n\n  return [toDegrees(longitude), toDegrees(latitude)];\n}\n\nconst MIN_LATITUDE = -80;\nconst MAX_LATITUDE = 84;\nconst MIN_LONGITUDE = -180;\nconst MAX_LONGITUDE = 180;\n\n/**\n * @param {number} longitude The longitude.\n * @param {number} latitude The latitude.\n * @param {UTMZone} zone The UTM zone.\n * @return {import('../coordinate.js').Coordinate} The UTM coordinate.\n */\nfunction fromLonLat(longitude, latitude, zone) {\n  longitude = wrap(longitude, MIN_LONGITUDE, MAX_LONGITUDE);\n\n  if (latitude < MIN_LATITUDE) {\n    latitude = MIN_LATITUDE;\n  } else if (latitude > MAX_LATITUDE) {\n    latitude = MAX_LATITUDE;\n  }\n\n  const latRad = toRadians(latitude);\n  const latSin = Math.sin(latRad);\n  const latCos = Math.cos(latRad);\n\n  const latTan = latSin / latCos;\n  const latTan2 = latTan * latTan;\n  const latTan4 = latTan2 * latTan2;\n\n  const lonRad = toRadians(longitude);\n  const centralLon = zoneToCentralLongitude(zone.number);\n  const centralLonRad = toRadians(centralLon);\n\n  const n = R / Math.sqrt(1 - E * latSin ** 2);\n  const c = E_P2 * latCos ** 2;\n\n  const a = latCos * wrap(lonRad - centralLonRad, -Math.PI, Math.PI);\n  const a2 = a * a;\n  const a3 = a2 * a;\n  const a4 = a3 * a;\n  const a5 = a4 * a;\n  const a6 = a5 * a;\n\n  const m =\n    R *\n    (M1 * latRad -\n      M2 * Math.sin(2 * latRad) +\n      M3 * Math.sin(4 * latRad) -\n      M4 * Math.sin(6 * latRad));\n\n  const easting =\n    K0 *\n      n *\n      (a +\n        (a3 / 6) * (1 - latTan2 + c) +\n        (a5 / 120) * (5 - 18 * latTan2 + latTan4 + 72 * c - 58 * E_P2)) +\n    500000;\n\n  let northing =\n    K0 *\n    (m +\n      n *\n        latTan *\n        (a2 / 2 +\n          (a4 / 24) * (5 - latTan2 + 9 * c + 4 * c ** 2) +\n          (a6 / 720) * (61 - 58 * latTan2 + latTan4 + 600 * c - 330 * E_P2)));\n\n  if (!zone.north) {\n    northing += 10000000;\n  }\n\n  return [easting, northing];\n}\n\n/**\n * @param {number} zone The zone number.\n * @return {number} The central longitude in degrees.\n */\nfunction zoneToCentralLongitude(zone) {\n  return (zone - 1) * 6 - 180 + 3;\n}\n\n/**\n * @type {Array<RegExp>}\n */\nconst epsgRegExes = [\n  /^EPSG:(\\d+)$/,\n  /^urn:ogc:def:crs:EPSG::(\\d+)$/,\n  /^http:\\/\\/www\\.opengis\\.net\\/def\\/crs\\/EPSG\\/0\\/(\\d+)$/,\n];\n\n/**\n * @param {string} code The projection code.\n * @return {UTMZone|null} The UTM zone info (or null if not UTM).\n */\nexport function zoneFromCode(code) {\n  let epsgId = 0;\n  for (const re of epsgRegExes) {\n    const match = code.match(re);\n    if (match) {\n      epsgId = parseInt(match[1]);\n      break;\n    }\n  }\n  if (!epsgId) {\n    return null;\n  }\n\n  let number = 0;\n  let north = false;\n  if (epsgId > 32700 && epsgId < 32761) {\n    number = epsgId - 32700;\n  } else if (epsgId > 32600 && epsgId < 32661) {\n    north = true;\n    number = epsgId - 32600;\n  }\n  if (!number) {\n    return null;\n  }\n\n  return {number, north};\n}\n\n/**\n * @param {function(number, number, UTMZone): import('../coordinate.js').Coordinate} transformer The transformer.\n * @param {UTMZone} zone The UTM zone.\n * @return {import('../proj.js').TransformFunction} The transform function.\n */\nfunction makeTransformFunction(transformer, zone) {\n  return function (input, output, dimension, stride) {\n    const length = input.length;\n    dimension = dimension > 1 ? dimension : 2;\n    stride = stride ?? dimension;\n    if (!output) {\n      if (dimension > 2) {\n        output = input.slice();\n      } else {\n        output = new Array(length);\n      }\n    }\n    for (let i = 0; i < length; i += stride) {\n      const x = input[i];\n      const y = input[i + 1];\n      const coord = transformer(x, y, zone);\n      output[i] = coord[0];\n      output[i + 1] = coord[1];\n    }\n    return output;\n  };\n}\n\n/**\n * @param {string} code The projection code.\n * @return {import('./Projection.js').default|null} A projection or null if unable to create one.\n */\nexport function makeProjection(code) {\n  const zone = zoneFromCode(code);\n  if (!zone) {\n    return null;\n  }\n  return new Projection({code, units: 'm'});\n}\n\n/**\n * @param {import('./Projection.js').default} projection The projection.\n * @return {import('../proj.js').Transforms|null} The transforms lookup or null if unable to handle projection.\n */\nexport function makeTransforms(projection) {\n  const zone = zoneFromCode(projection.getCode());\n  if (!zone) {\n    return null;\n  }\n\n  return {\n    forward: makeTransformFunction(fromLonLat, zone),\n    inverse: makeTransformFunction(toLonLat, zone),\n  };\n}\n","/**\n * @module ol/proj\n */\n\n/**\n * The ol/proj module stores:\n * a list of {@link module:ol/proj/Projection~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~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~Projection} with\n * {@link module:ol/proj.addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport {warn} from './console.js';\nimport {equals, getWorldsAway} from './coordinate.js';\nimport {applyTransform, getWidth} from './extent.js';\nimport {clamp, modulo} from './math.js';\nimport Projection from './proj/Projection.js';\nimport {METERS_PER_UNIT} from './proj/Units.js';\nimport {\n  PROJECTIONS as EPSG3857_PROJECTIONS,\n  fromEPSG4326,\n  toEPSG4326,\n} from './proj/epsg3857.js';\nimport {PROJECTIONS as EPSG4326_PROJECTIONS} from './proj/epsg4326.js';\nimport {\n  add as addProj,\n  clear as clearProj,\n  get as getProj,\n} from './proj/projections.js';\nimport {\n  add as addTransformFunc,\n  clear as clearTransformFuncs,\n  get as getTransformFunc,\n} from './proj/transforms.js';\nimport {\n  makeProjection as makeUTMProjection,\n  makeTransforms as makeUTMTransforms,\n} from './proj/utm.js';\nimport {getDistance} from './sphere.js';\n\n/**\n * A projection as {@link module:ol/proj/Projection~Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n\n/**\n * @typedef {Object} Transforms\n * @property {TransformFunction} forward The forward transform (from geographic).\n * @property {TransformFunction} inverse The inverse transform (to geographic).\n */\n\n/**\n * @type {Array<function(Projection): Transforms|null>}\n */\nconst transformFactories = [makeUTMTransforms];\n\n/**\n * @type {Array<function(string): Projection|null>}\n */\nconst projectionFactories = [makeUTMProjection];\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 * @callback TransformFunction\n * @param {Array<number>} input\n * @param {Array<number>} [output]\n * @param {number} [dimension]\n * @param {number} [stride]\n * @return {Array<number>}\n *\n * @api\n */\n\nexport {METERS_PER_UNIT};\n\nexport {Projection};\n\nlet showCoordinateWarning = true;\n\n/**\n * @param {boolean} [disable] Disable console info about `useGeographic()`\n */\nexport function disableCoordinateWarning(disable) {\n  const hide = disable === undefined ? true : disable;\n  showCoordinateWarning = !hide;\n}\n\n/**\n * @param {Array<number>} input Input coordinate array.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @return {Array<number>} Output coordinate array (new array, same coordinate\n *     values).\n */\nexport function cloneTransform(input, output) {\n  if (output !== undefined) {\n    for (let i = 0, ii = input.length; i < ii; ++i) {\n      output[i] = input[i];\n    }\n    output = output;\n  } else {\n    output = input.slice();\n  }\n  return output;\n}\n\n/**\n * @param {Array<number>} input Input coordinate array.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @return {Array<number>} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, output) {\n  if (output !== undefined && input !== output) {\n    for (let i = 0, ii = input.length; i < ii; ++i) {\n      output[i] = input[i];\n    }\n    input = output;\n  }\n  return input;\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 * @param {Array<Projection>} projections Projections.\n */\nexport function addProjections(projections) {\n  projections.forEach(addProjection);\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|null} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n  if (!(typeof projectionLike === 'string')) {\n    return projectionLike;\n  }\n  const projection = getProj(projectionLike);\n  if (projection) {\n    return projection;\n  }\n  for (const makeProjection of projectionFactories) {\n    const projection = makeProjection(projectionLike);\n    if (projection) {\n      return projection;\n    }\n  }\n  return null;\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 {import(\"./proj/Units.js\").Units} [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, units) {\n  projection = get(projection);\n  let pointResolution;\n  const getter = projection.getPointResolutionFunc();\n  if (getter) {\n    pointResolution = getter(resolution, point);\n    if (units && units !== projection.getUnits()) {\n      const metersPerUnit = projection.getMetersPerUnit();\n      if (metersPerUnit) {\n        pointResolution =\n          (pointResolution * metersPerUnit) / METERS_PER_UNIT[units];\n      }\n    }\n  } else {\n    const projUnits = projection.getUnits();\n    if ((projUnits == 'degrees' && !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(\n        projection,\n        get('EPSG:4326'),\n      );\n      if (!toEPSG4326 && projUnits !== 'degrees') {\n        // no transform is available\n        pointResolution = resolution * projection.getMetersPerUnit();\n      } else {\n        let vertices = [\n          point[0] - resolution / 2,\n          point[1],\n          point[0] + resolution / 2,\n          point[1],\n          point[0],\n          point[1] - resolution / 2,\n          point[0],\n          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      }\n      const metersPerUnit = units\n        ? METERS_PER_UNIT[units]\n        : projection.getMetersPerUnit();\n      if (metersPerUnit !== undefined) {\n        pointResolution /= metersPerUnit;\n      }\n    }\n  }\n  return pointResolution;\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<Projection>} 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 * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array<Projection>} projections1 Projections with equal\n *     meaning.\n * @param {Array<Projection>} 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(\n  projections1,\n  projections2,\n  forwardTransform,\n  inverseTransform,\n) {\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 * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n  clearProj();\n  clearTransformFuncs();\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  }\n  if (typeof projection === 'string') {\n    return get(projection);\n  }\n  return /** @type {Projection} */ (projection);\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<number>} input Input.\n     * @param {Array<number>} [output] Output.\n     * @param {number} [dimension] Dimensions that should be transformed.\n     * @param {number} [stride] Stride.\n     * @return {Array<number>} Output.\n     */\n    function (input, output, dimension, stride) {\n      const length = input.length;\n      dimension = dimension !== undefined ? dimension : 2;\n      stride = stride ?? dimension;\n      output = output !== undefined ? output : new Array(length);\n      for (let i = 0; i < length; i += stride) {\n        const point = coordTransform(input.slice(i, i + dimension));\n        const pointLength = point.length;\n        for (let j = 0, jj = stride; j < jj; ++j) {\n          output[i + j] = j >= pointLength ? input[i + j] : point[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}. If the transform function can only\n *     transform less dimensions than the input coordinate, it is supposeed to return a coordinate\n *     with only the length it can transform. The other dimensions will be taken unchanged from the\n *     source.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n  const sourceProj = get(source);\n  const destProj = get(destination);\n  addTransformFunc(\n    sourceProj,\n    destProj,\n    createTransformFromCoordinateTransform(forward),\n  );\n  addTransformFunc(\n    destProj,\n    sourceProj,\n    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} [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, projection) {\n  disableCoordinateWarning();\n  return transform(\n    coordinate,\n    'EPSG:4326',\n    projection !== undefined ? 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} [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, projection) {\n  const lonLat = transform(\n    coordinate,\n    projection !== undefined ? projection : 'EPSG:3857',\n    'EPSG:4326',\n  );\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 * 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  }\n  const transformFunc = getTransformFromProjections(projection1, projection2);\n  return transformFunc === cloneTransform && equalUnits;\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} source Source Projection object.\n * @param {Projection} destination Destination Projection\n *     object.\n * @return {TransformFunction|null} Transform function.\n */\nexport function getTransformFromProjections(source, destination) {\n  const sourceCode = source.getCode();\n  const destinationCode = destination.getCode();\n  let transformFunc = getTransformFunc(sourceCode, destinationCode);\n  if (transformFunc) {\n    return transformFunc;\n  }\n\n  /**\n   * @type {Transforms|null}\n   */\n  let sourceTransforms = null;\n\n  /**\n   * @type {Transforms|null}\n   */\n  let destinationTransforms = null;\n\n  // lazily add projections if we have supported transforms\n  for (const makeTransforms of transformFactories) {\n    if (!sourceTransforms) {\n      sourceTransforms = makeTransforms(source);\n    }\n    if (!destinationTransforms) {\n      destinationTransforms = makeTransforms(destination);\n    }\n  }\n\n  if (!sourceTransforms && !destinationTransforms) {\n    return null;\n  }\n\n  const intermediateCode = 'EPSG:4326';\n  if (!destinationTransforms) {\n    const toDestination = getTransformFunc(intermediateCode, destinationCode);\n    if (toDestination) {\n      transformFunc = composeTransformFuncs(\n        sourceTransforms.inverse,\n        toDestination,\n      );\n    }\n  } else if (!sourceTransforms) {\n    const fromSource = getTransformFunc(sourceCode, intermediateCode);\n    if (fromSource) {\n      transformFunc = composeTransformFuncs(\n        fromSource,\n        destinationTransforms.forward,\n      );\n    }\n  } else {\n    transformFunc = composeTransformFuncs(\n      sourceTransforms.inverse,\n      destinationTransforms.forward,\n    );\n  }\n\n  if (transformFunc) {\n    addProjection(source);\n    addProjection(destination);\n    addTransformFunc(source, destination, transformFunc);\n  }\n\n  return transformFunc;\n}\n\n/**\n * @param {TransformFunction} t1 The first transform function.\n * @param {TransformFunction} t2 The second transform function.\n * @return {TransformFunction} The composed transform function.\n */\nfunction composeTransformFuncs(t1, t2) {\n  return function (input, output, dimensions, stride) {\n    output = t1(input, output, dimensions, stride);\n    return t2(output, output, dimensions, stride);\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 * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original). If there\n * is no available transform between the two projection, the function will throw\n * an error.\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  if (!transformFunc) {\n    const sourceCode = get(source).getCode();\n    const destinationCode = get(destination).getCode();\n    throw new Error(\n      `No transform available between ${sourceCode} and ${destinationCode}`,\n    );\n  }\n  return transformFunc(coordinate, undefined, coordinate.length);\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 * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, stops) {\n  const transformFunc = getTransform(source, destination);\n  return applyTransform(extent, transformFunc, undefined, stops);\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(\n  point,\n  sourceProjection,\n  destinationProjection,\n) {\n  const transformFunc = getTransformFromProjections(\n    sourceProjection,\n    destinationProjection,\n  );\n  return transformFunc(point);\n}\n\n/**\n * @type {Projection|null}\n */\nlet userProjection = null;\n\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * This includes all API methods except for those interacting with tile grids,\n * plus {@link import(\"./Map.js\").FrameState} and {@link import(\"./View.js\").State}.\n * @param {ProjectionLike} projection The user projection.\n * @api\n */\nexport function setUserProjection(projection) {\n  userProjection = get(projection);\n}\n\n/**\n * Clear the user projection if set.\n * @api\n */\nexport function clearUserProjection() {\n  userProjection = null;\n}\n\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * @return {Projection|null} The user projection (or null if not set).\n * @api\n */\nexport function getUserProjection() {\n  return userProjection;\n}\n\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods.\n * This includes all API methods except for those interacting with tile grids,\n * plus {@link import(\"./Map.js\").FrameState} and {@link import(\"./View.js\").State}.\n * @api\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<number>} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @return {Array<number>} 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<number>} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {Array<number>} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n  if (!userProjection) {\n    if (\n      showCoordinateWarning &&\n      !equals(coordinate, [0, 0]) &&\n      coordinate[0] >= -180 &&\n      coordinate[0] <= 180 &&\n      coordinate[1] >= -90 &&\n      coordinate[1] <= 90\n    ) {\n      showCoordinateWarning = false;\n      warn(\n        'Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.',\n      );\n    }\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 * @return {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 * @return {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 * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in input projection units per pixel.\n * @param {ProjectionLike} sourceProjection The input projection.\n * @return {number} Resolution in user projection units per pixel.\n */\nexport function toUserResolution(resolution, sourceProjection) {\n  if (!userProjection) {\n    return resolution;\n  }\n  const sourceMetersPerUnit = get(sourceProjection).getMetersPerUnit();\n  const userMetersPerUnit = userProjection.getMetersPerUnit();\n  return sourceMetersPerUnit && userMetersPerUnit\n    ? (resolution * sourceMetersPerUnit) / userMetersPerUnit\n    : resolution;\n}\n\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in user projection units per pixel.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {number} Resolution in destination projection units per pixel.\n */\nexport function fromUserResolution(resolution, destProjection) {\n  if (!userProjection) {\n    return resolution;\n  }\n  const destMetersPerUnit = get(destProjection).getMetersPerUnit();\n  const userMetersPerUnit = userProjection.getMetersPerUnit();\n  return destMetersPerUnit && userMetersPerUnit\n    ? (resolution * userMetersPerUnit) / destMetersPerUnit\n    : resolution;\n}\n\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destination).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destination).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n  return function (coord) {\n    let transformed, worldsAway;\n    if (sourceProj.canWrapX()) {\n      const sourceExtent = sourceProj.getExtent();\n      const sourceExtentWidth = getWidth(sourceExtent);\n      coord = coord.slice(0);\n      worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n      if (worldsAway) {\n        // Move x to the real world\n        coord[0] = coord[0] - worldsAway * sourceExtentWidth;\n      }\n      coord[0] = clamp(coord[0], sourceExtent[0], sourceExtent[2]);\n      coord[1] = clamp(coord[1], sourceExtent[1], sourceExtent[3]);\n      transformed = transform(coord);\n    } else {\n      transformed = transform(coord);\n    }\n    if (worldsAway && destProj.canWrapX()) {\n      // Move transformed coordinate back to the offset world\n      transformed[0] += worldsAway * getWidth(destProj.getExtent());\n    }\n    return transformed;\n  };\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(\n    EPSG4326_PROJECTIONS,\n    EPSG3857_PROJECTIONS,\n    fromEPSG4326,\n    toEPSG4326,\n  );\n}\n\naddCommon();\n","/**\n * @module ol/transform\n */\nimport {assert} from './asserts.js';\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<number>} Transform\n * @api\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 * @private\n * @type {Transform}\n */\nconst tmp_ = new Array(6);\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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` property of an HTMLElement's style.\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 {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n  return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\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, '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 * @type {Array}\n */\nconst matrixPrecision = [1e6, 1e6, 1e6, 1e6, 2, 2];\n\n/**\n * A rounded 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  const transformString =\n    'matrix(' +\n    mat\n      .map(\n        (value, i) =>\n          Math.round(value * matrixPrecision[i]) / matrixPrecision[i],\n      )\n      .join(', ') +\n    ')';\n  return transformString;\n}\n","/**\n * @module ol/geom/flat/transform\n */\n\n/**\n * @param {Array<number>} 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<number>} [dest] Destination.\n * @param {number} [destinationStride] Stride of destination coordinates; if unspecified, assumed to be 2.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function transform2D(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  transform,\n  dest,\n  destinationStride,\n) {\n  dest = dest ? dest : [];\n  destinationStride = destinationStride ? destinationStride : 2;\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    for (let k = 2; k < destinationStride; k++) {\n      dest[i++] = flatCoordinates[j + k];\n    }\n  }\n\n  if (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * @param {Array<number>} 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<number>} anchor Rotation anchor point.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function rotate(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  angle,\n  anchor,\n  dest,\n) {\n  dest = dest ? 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 (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * Scale the coordinates.\n * @param {Array<number>} 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<number>} anchor Scale anchor point.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function scale(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  sx,\n  sy,\n  anchor,\n  dest,\n) {\n  dest = dest ? 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 (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * @param {Array<number>} 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<number>} [dest] Destination.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function translate(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  deltaX,\n  deltaY,\n  dest,\n) {\n  dest = dest ? 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 (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n","/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport {\n  createEmpty,\n  createOrUpdateEmpty,\n  getHeight,\n  returnOrUpdate,\n} from '../extent.js';\nimport {memoizeOne} from '../functions.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../transform.js';\nimport {abstract} from '../util.js';\nimport {transform2D} from './flat/transform.js';\n\n/**\n * @typedef {'XY' | 'XYZ' | 'XYM' | 'XYZM'} GeometryLayout\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available.\n */\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Circle'} Type\n * The geometry type.  One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, or `'Circle'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/** @type {import('../coordinate.js').Coordinate} */\nconst tmpPoint = [NaN, NaN];\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    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} [transform] Optional transform function.\n     * @return {Geometry} Simplified geometry.\n     */\n    this.simplifyTransformedInternal = memoizeOne(\n      (revision, squaredTolerance, transform) => {\n        if (!transform) {\n          return this.getSimplifiedGeometry(squaredTolerance);\n        }\n        const clone = this.clone();\n        clone.applyTransform(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} [transform] Optional transform function.\n   * @return {Geometry} Simplified geometry.\n   */\n  simplifyTransformed(squaredTolerance, transform) {\n    return this.simplifyTransformedInternal(\n      this.getRevision(),\n      squaredTolerance,\n      transform,\n    );\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    return this.closestPointXY(x, y, tmpPoint, Number.MIN_VALUE) === 0;\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} [closestPoint] Closest point.\n   * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n   * @api\n   */\n  getClosestPoint(point, closestPoint) {\n    closestPoint = closestPoint ? 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} [extent] Extent.\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @api\n   */\n  getExtent(extent) {\n    if (this.extentRevision_ != this.getRevision()) {\n      const extent = this.computeExtent(this.extent_);\n      if (isNaN(extent[0]) || isNaN(extent[1])) {\n        createOrUpdateEmpty(extent);\n      }\n      this.extentRevision_ = this.getRevision();\n    }\n    return returnOrUpdate(this.extent_, 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} [sy] The scaling factor in the y-direction (defaults to sx).\n   * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n   *     of the geometry extent).\n   * @api\n   */\n  scale(sx, sy, 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 {Type} 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 {this} 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 =\n      sourceProj.getUnits() == '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(\n              tmpTransform,\n              projectedExtent[0],\n              projectedExtent[3],\n              scale,\n              -scale,\n              0,\n              0,\n              0,\n            );\n            const transformed = transform2D(\n              inCoordinates,\n              0,\n              inCoordinates.length,\n              stride,\n              tmpTransform,\n              outCoordinates,\n            );\n            const projTransform = getTransform(sourceProj, destination);\n            if (projTransform) {\n              return projTransform(transformed, transformed, stride);\n            }\n            return transformed;\n          }\n        : getTransform(sourceProj, destination);\n    this.applyTransform(transformFn);\n    return this;\n  }\n}\n\nexport default Geometry;\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport {abstract} from '../util.js';\nimport Geometry from './Geometry.js';\nimport {rotate, scale, transform2D, translate} 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    super();\n\n    /**\n     * @protected\n     * @type {import(\"./Geometry.js\").GeometryLayout}\n     */\n    this.layout = 'XY';\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.stride = 2;\n\n    /**\n     * @protected\n     * @type {Array<number>}\n     */\n    this.flatCoordinates;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    return createOrUpdateFromFlatCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * @abstract\n   * @return {Array<*> | null} 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<number>} 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(\n      this.flatCoordinates.length - this.stride,\n    );\n  }\n\n  /**\n   * Return the {@link import(\"./Geometry.js\").GeometryLayout layout} of the geometry.\n   * @return {import(\"./Geometry.js\").GeometryLayout} Layout.\n   * @api\n   */\n  getLayout() {\n    return this.layout;\n  }\n\n  /**\n   * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {SimpleGeometry} Simplified geometry.\n   * @override\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 (\n      squaredTolerance < 0 ||\n      (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n        squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)\n    ) {\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    }\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   * @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 {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n   * @param {Array<number>} 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 {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  setCoordinates(coordinates, layout) {\n    abstract();\n  }\n\n  /**\n   * @param {import(\"./Geometry.js\").GeometryLayout|undefined} layout Layout.\n   * @param {Array<*>} coordinates Coordinates.\n   * @param {number} nesting Nesting.\n   * @protected\n   */\n  setLayout(layout, coordinates, nesting) {\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 = 'XY';\n          this.stride = 2;\n          return;\n        }\n        coordinates = /** @type {Array<unknown>} */ (coordinates[0]);\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   * @override\n   */\n  applyTransform(transformFn) {\n    if (this.flatCoordinates) {\n      transformFn(\n        this.flatCoordinates,\n        this.flatCoordinates,\n        this.layout.startsWith('XYZ') ? 3 : 2,\n        this.stride,\n      );\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 counter-clockwise radians.\n   * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n   * @api\n   * @override\n   */\n  rotate(angle, anchor) {\n    const flatCoordinates = this.getFlatCoordinates();\n    if (flatCoordinates) {\n      const stride = this.getStride();\n      rotate(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        stride,\n        angle,\n        anchor,\n        flatCoordinates,\n      );\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} [sy] The scaling factor in the y-direction (defaults to sx).\n   * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n   *     of the geometry extent).\n   * @api\n   * @override\n   */\n  scale(sx, sy, anchor) {\n    if (sy === undefined) {\n      sy = sx;\n    }\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,\n        0,\n        flatCoordinates.length,\n        stride,\n        sx,\n        sy,\n        anchor,\n        flatCoordinates,\n      );\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   * @override\n   */\n  translate(deltaX, deltaY) {\n    const flatCoordinates = this.getFlatCoordinates();\n    if (flatCoordinates) {\n      const stride = this.getStride();\n      translate(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        stride,\n        deltaX,\n        deltaY,\n        flatCoordinates,\n      );\n      this.changed();\n    }\n  }\n}\n\n/**\n * @param {number} stride Stride.\n * @return {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n */\nexport function getLayoutForStride(stride) {\n  let layout;\n  if (stride == 2) {\n    layout = 'XY';\n  } else if (stride == 3) {\n    layout = 'XYZ';\n  } else if (stride == 4) {\n    layout = 'XYZM';\n  }\n  return /** @type {import(\"./Geometry.js\").GeometryLayout} */ (layout);\n}\n\n/**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n  let stride;\n  if (layout == 'XY') {\n    stride = 2;\n  } else if (layout == 'XYZ' || layout == 'XYM') {\n    stride = 3;\n  } else if (layout == 'XYZM') {\n    stride = 4;\n  }\n  return /** @type {number} */ (stride);\n}\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, dest) {\n  const flatCoordinates = simpleGeometry.getFlatCoordinates();\n  if (!flatCoordinates) {\n    return null;\n  }\n  const stride = simpleGeometry.getStride();\n  return transform2D(\n    flatCoordinates,\n    0,\n    flatCoordinates.length,\n    stride,\n    transform,\n    dest,\n  );\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/area\n */\n\n/**\n * @param {Array<number>} 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  const x0 = flatCoordinates[end - stride];\n  const y0 = flatCoordinates[end - stride + 1];\n  let dx1 = 0;\n  let dy1 = 0;\n  for (; offset < end; offset += stride) {\n    const dx2 = flatCoordinates[offset] - x0;\n    const dy2 = flatCoordinates[offset + 1] - y0;\n    twiceArea += dy1 * dx2 - dx1 * dy2;\n    dx1 = dx2;\n    dy1 = dy2;\n  }\n  return twiceArea / 2;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} 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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} 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 * 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<number>} 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<number>} closestPoint Closest point.\n */\nfunction assignClosest(\n  flatCoordinates,\n  offset1,\n  offset2,\n  stride,\n  x,\n  y,\n  closestPoint,\n) {\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(\n          flatCoordinates[offset1 + i],\n          flatCoordinates[offset2 + i],\n          t,\n        );\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 * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array<number>} 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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  max,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n    offset = end;\n  }\n  return max;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  max,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n    offset = ends[ends.length - 1];\n  }\n  return max;\n}\n\n/**\n * @param {Array<number>} 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<number>} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array<number>} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  maxDelta,\n  isRing,\n  x,\n  y,\n  closestPoint,\n  minSquaredDistance,\n  tmpPoint,\n) {\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,\n      y,\n      flatCoordinates[offset],\n      flatCoordinates[offset + 1],\n    );\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    }\n    return minSquaredDistance;\n  }\n  tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n  let index = offset + stride;\n  while (index < end) {\n    assignClosest(\n      flatCoordinates,\n      index - stride,\n      index,\n      stride,\n      x,\n      y,\n      tmpPoint,\n    );\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 +=\n        stride *\n        Math.max(\n          ((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n            maxDelta) |\n            0,\n          1,\n        );\n    }\n  }\n  if (isRing) {\n    // Check the closing segment.\n    assignClosest(\n      flatCoordinates,\n      end - stride,\n      offset,\n      stride,\n      x,\n      y,\n      tmpPoint,\n    );\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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} 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<number>} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array<number>} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  maxDelta,\n  isRing,\n  x,\n  y,\n  closestPoint,\n  minSquaredDistance,\n  tmpPoint,\n) {\n  tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    minSquaredDistance = assignClosestPoint(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      maxDelta,\n      isRing,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n      tmpPoint,\n    );\n    offset = end;\n  }\n  return minSquaredDistance;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} 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<number>} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array<number>} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  maxDelta,\n  isRing,\n  x,\n  y,\n  closestPoint,\n  minSquaredDistance,\n  tmpPoint,\n) {\n  tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    minSquaredDistance = assignClosestArrayPoint(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      maxDelta,\n      isRing,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n      tmpPoint,\n    );\n    offset = ends[ends.length - 1];\n  }\n  return minSquaredDistance;\n}\n","/**\n * @module ol/geom/flat/deflate\n */\n\n/**\n * @param {Array<number>} 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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<import(\"../../coordinate.js\").Coordinate>} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(\n  flatCoordinates,\n  offset,\n  coordinates,\n  stride,\n) {\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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<import(\"../../coordinate.js\").Coordinate>>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array<number>} [ends] Ends.\n * @return {Array<number>} Ends.\n */\nexport function deflateCoordinatesArray(\n  flatCoordinates,\n  offset,\n  coordinatess,\n  stride,\n  ends,\n) {\n  ends = ends ? ends : [];\n  let i = 0;\n  for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n    const end = deflateCoordinates(\n      flatCoordinates,\n      offset,\n      coordinatess[j],\n      stride,\n    );\n    ends[i++] = end;\n    offset = end;\n  }\n  ends.length = i;\n  return ends;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<Array<import(\"../../coordinate.js\").Coordinate>>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array<Array<number>>} [endss] Endss.\n * @return {Array<Array<number>>} Endss.\n */\nexport function deflateMultiCoordinatesArray(\n  flatCoordinates,\n  offset,\n  coordinatesss,\n  stride,\n  endss,\n) {\n  endss = endss ? endss : [];\n  let i = 0;\n  for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n    const ends = deflateCoordinatesArray(\n      flatCoordinates,\n      offset,\n      coordinatesss[j],\n      stride,\n      endss[i],\n    );\n    if (ends.length === 0) {\n      ends[0] = offset;\n    }\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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array<import(\"../../coordinate.js\").Coordinate>} [coordinates] Coordinates.\n * @return {Array<import(\"../../coordinate.js\").Coordinate>} Coordinates.\n */\nexport function inflateCoordinates(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  coordinates,\n) {\n  coordinates = coordinates !== undefined ? 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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {Array<Array<import(\"../../coordinate.js\").Coordinate>>} [coordinatess] Coordinatess.\n * @return {Array<Array<import(\"../../coordinate.js\").Coordinate>>} Coordinatess.\n */\nexport function inflateCoordinatesArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  coordinatess,\n) {\n  coordinatess = coordinatess !== undefined ? 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,\n      offset,\n      end,\n      stride,\n      coordinatess[i],\n    );\n    offset = end;\n  }\n  coordinatess.length = i;\n  return coordinatess;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array<Array<Array<import(\"../../coordinate.js\").Coordinate>>>} [coordinatesss]\n *     Coordinatesss.\n * @return {Array<Array<Array<import(\"../../coordinate.js\").Coordinate>>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  coordinatesss,\n) {\n  coordinatesss = coordinatesss !== undefined ? coordinatesss : [];\n  let i = 0;\n  for (let j = 0, jj = endss.length; j < jj; ++j) {\n    const ends = endss[j];\n    coordinatesss[i++] =\n      ends.length === 1 && ends[0] === offset\n        ? []\n        : inflateCoordinatesArray(\n            flatCoordinates,\n            offset,\n            ends,\n            stride,\n            coordinatesss[i],\n          );\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 {squaredDistance, squaredSegmentDistance} from '../../math.js';\n\n/**\n * @param {Array<number>} 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<number>} [simplifiedFlatCoordinates] Simplified flat\n *     coordinates.\n * @return {Array<number>} Simplified line string.\n */\nexport function simplifyLineString(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  squaredTolerance,\n  highQuality,\n  simplifiedFlatCoordinates,\n) {\n  simplifiedFlatCoordinates =\n    simplifiedFlatCoordinates !== undefined ? simplifiedFlatCoordinates : [];\n  if (!highQuality) {\n    end = radialDistance(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n    );\n    flatCoordinates = simplifiedFlatCoordinates;\n    offset = 0;\n    stride = 2;\n  }\n  simplifiedFlatCoordinates.length = douglasPeucker(\n    flatCoordinates,\n    offset,\n    end,\n    stride,\n    squaredTolerance,\n    simplifiedFlatCoordinates,\n    0,\n  );\n  return simplifiedFlatCoordinates;\n}\n\n/**\n * @param {Array<number>} 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<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n) {\n  const n = (end - offset) / stride;\n  if (n < 3) {\n    for (; offset < end; offset += stride) {\n      simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n      simplifiedFlatCoordinates[simplifiedOffset++] =\n        flatCoordinates[offset + 1];\n    }\n    return simplifiedOffset;\n  }\n  /** @type {Array<number>} */\n  const markers = new Array(n);\n  markers[0] = 1;\n  markers[n - 1] = 1;\n  /** @type {Array<number>} */\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(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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<number>} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEnds,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    simplifiedOffset = douglasPeucker(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n    );\n    simplifiedEnds.push(simplifiedOffset);\n    offset = end;\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<Array<number>>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEndss,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedOffset = douglasPeuckerArray(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n      simplifiedEnds,\n    );\n    simplifiedEndss.push(simplifiedEnds);\n    offset = ends[ends.length - 1];\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} 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<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n) {\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 * @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 * 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<number>} 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<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  tolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n) {\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 (\n      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    ) {\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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<number>} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  tolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEnds,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    simplifiedOffset = quantize(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      tolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n    );\n    simplifiedEnds.push(simplifiedOffset);\n    offset = end;\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<Array<number>>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  tolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEndss,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedOffset = quantizeArray(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      tolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n      simplifiedEnds,\n    );\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 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   * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\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 (layout !== undefined && !Array.isArray(coordinates[0])) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n    } else {\n      this.setCoordinates(\n        /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!LinearRing} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    return new LinearRing(this.flatCoordinates.slice(), this.layout);\n  }\n\n  /**\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   * @override\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(\n        maxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.flatCoordinates.length,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestPoint(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      this.maxDelta_,\n      true,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\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(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the coordinates of the linear ring.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {LinearRing} Simplified LinearRing.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    simplifiedFlatCoordinates.length = douglasPeucker(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n    );\n    return new LinearRing(simplifiedFlatCoordinates, 'XY');\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'LinearRing';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return false;\n  }\n\n  /**\n   * Set the coordinates of the linear ring.\n   * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 1);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinates(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default LinearRing;\n","/**\n * @module ol/geom/Point\n */\nimport {containsXY, createOrUpdateFromCoordinate} from '../extent.js';\nimport {squaredDistance as squaredDx} from '../math.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinate} from './flat/deflate.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n    this.setCoordinates(coordinates, layout);\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!Point} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const point = new Point(this.flatCoordinates.slice(), this.layout);\n    point.applyProperties(this);\n    return point;\n  }\n\n  /**\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   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    const flatCoordinates = this.flatCoordinates;\n    const squaredDistance = squaredDx(\n      x,\n      y,\n      flatCoordinates[0],\n      flatCoordinates[1],\n    );\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    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * Return the coordinate of the point.\n   * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return this.flatCoordinates.slice();\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'Point';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n  }\n\n  /**\n   * @param {!Array<*>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 0);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinate(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default Point;\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n/**\n * @param {Array<number>} 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(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  extent,\n) {\n  const outside = forEachCorner(\n    extent,\n    /**\n     * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n     * @return {boolean} Contains (x, y).\n     */\n    function (coordinate) {\n      return !linearRingContainsXY(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        coordinate[0],\n        coordinate[1],\n      );\n    },\n  );\n  return !outside;\n}\n\n/**\n * @param {Array<number>} 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(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  x,\n  y,\n) {\n  // https://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 * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} 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(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  x,\n  y,\n) {\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 (\n      linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)\n    ) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} 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(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  x,\n  y,\n) {\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 {ascending} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\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<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {Array<number>} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  flatCenters,\n  flatCentersOffset,\n  dest,\n) {\n  let i, ii, x, x1, x2, y1, y2;\n  const y = flatCenters[flatCentersOffset + 1];\n  /** @type {Array<number>} */\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(ascending);\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 (dest) {\n    dest.push(pointX, y, maxSegmentLength);\n    return dest;\n  }\n  return [pointX, y, maxSegmentLength];\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array<number>} flatCenters Flat centers.\n * @return {Array<number>} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  flatCenters,\n) {\n  /** @type {Array<number>} */\n  let interiorPoints = [];\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    interiorPoints = getInteriorPointOfArray(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      flatCenters,\n      2 * i,\n      interiorPoints,\n    );\n    offset = ends[ends.length - 1];\n  }\n  return interiorPoints;\n}\n","/**\n * @module ol/geom/flat/segments\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<number>} 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  let ret;\n  offset += stride;\n  for (; offset < end; offset += stride) {\n    ret = callback(\n      flatCoordinates.slice(offset - stride, offset),\n      flatCoordinates.slice(offset, offset + stride),\n    );\n    if (ret) {\n      return ret;\n    }\n  }\n  return false;\n}\n","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport {\n  createEmpty,\n  extendFlatCoordinates,\n  intersects,\n  intersectsSegment,\n} from '../../extent.js';\nimport {linearRingContainsExtent, linearRingContainsXY} from './contains.js';\nimport {forEach as forEachSegment} from './segments.js';\n\n/**\n * @param {Array<number>} 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 * @param {import('../../extent.js').Extent} [coordinatesExtent] Coordinates extent\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  extent,\n  coordinatesExtent,\n) {\n  coordinatesExtent =\n    coordinatesExtent ??\n    extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n  if (!intersects(extent, coordinatesExtent)) {\n    return false;\n  }\n  if (\n    (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) ||\n    (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3])\n  ) {\n    return true;\n  }\n  return forEachSegment(\n    flatCoordinates,\n    offset,\n    end,\n    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<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} 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(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  extent,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    if (\n      intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)\n    ) {\n      return true;\n    }\n    offset = ends[i];\n  }\n  return false;\n}\n\n/**\n * @param {Array<number>} 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(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  extent,\n) {\n  if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[0],\n      extent[1],\n    )\n  ) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[0],\n      extent[3],\n    )\n  ) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[2],\n      extent[1],\n    )\n  ) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[2],\n      extent[3],\n    )\n  ) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} 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(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  extent,\n) {\n  if (!intersectsLinearRing(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 (\n      linearRingContainsExtent(\n        flatCoordinates,\n        ends[i - 1],\n        ends[i],\n        stride,\n        extent,\n      )\n    ) {\n      if (\n        !intersectsLineString(\n          flatCoordinates,\n          ends[i - 1],\n          ends[i],\n          stride,\n          extent,\n        )\n      ) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} 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(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  extent,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    if (\n      intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)\n    ) {\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 * @param {Array<number>} 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 * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean|undefined} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n  // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n  // https://github.com/OSGeo/gdal/blob/master/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 ? undefined : edge > 0;\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 `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [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(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  right,\n) {\n  right = right !== undefined ? right : false;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    const isClockwise = linearRingIsClockwise(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n    );\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 * 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 `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [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(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  right,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, right)) {\n      return false;\n    }\n    if (ends.length) {\n      offset = ends[ends.length - 1];\n    }\n  }\n  return true;\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 `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  right,\n) {\n  right = right !== undefined ? right : false;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    const isClockwise = linearRingIsClockwise(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n    );\n    const reverse =\n      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 * 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 `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  right,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    offset = orientLinearRings(\n      flatCoordinates,\n      offset,\n      endss[i],\n      stride,\n      right,\n    );\n  }\n  return offset;\n}\n\n/**\n * Return a two-dimensional endss\n * @param {Array<number>} flatCoordinates Flat coordinates\n * @param {Array<number>} ends Linear ring end indexes\n * @return {Array<Array<number>>} Two dimensional endss array that can\n * be used to construct a MultiPolygon\n */\nexport function inflateEnds(flatCoordinates, ends) {\n  const endss = [];\n  let offset = 0;\n  let prevEndIndex = 0;\n  let startOrientation;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    // classifies an array of rings into polygons with outer rings and holes\n    const orientation = linearRingIsClockwise(flatCoordinates, offset, end, 2);\n    if (startOrientation === undefined) {\n      startOrientation = orientation;\n    }\n    if (orientation === startOrientation) {\n      endss.push(ends.slice(prevEndIndex, i + 1));\n    } else {\n      if (endss.length === 0) {\n        continue;\n      }\n      endss[endss.length - 1].push(ends[prevEndIndex]);\n    }\n    prevEndIndex = i + 1;\n    offset = end;\n  }\n  return endss;\n}\n","/**\n * @module ol/geom/Polygon\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY, getCenter, isEmpty} from '../extent.js';\nimport {modulo} from '../math.js';\nimport {offset as sphereOffset} from '../sphere.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRings as linearRingsArea} from './flat/area.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} 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';\n\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nclass Polygon extends SimpleGeometry {\n  /**\n   * @param {!Array<Array<import(\"../coordinate.js\").Coordinate>>|!Array<number>} 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   *     `layout` and `ends` are also accepted.)\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @param {Array<number>} [ends] Ends (for internal use with flat coordinates).\n   */\n  constructor(coordinates, layout, ends) {\n    super();\n\n    /**\n     * @type {Array<number>}\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|null}\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<number>|null}\n     */\n    this.orientedFlatCoordinates_ = null;\n\n    if (layout !== undefined && ends) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n      this.ends_ = ends;\n    } else {\n      this.setCoordinates(\n        /** @type {Array<Array<import(\"../coordinate.js\").Coordinate>>} */ (\n          coordinates\n        ),\n        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   * @api\n   * @override\n   */\n  clone() {\n    const polygon = new Polygon(\n      this.flatCoordinates.slice(),\n      this.layout,\n      this.ends_.slice(),\n    );\n    polygon.applyProperties(this);\n    return polygon;\n  }\n\n  /**\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   * @override\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(\n        arrayMaxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.ends_,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestArrayPoint(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      this.maxDelta_,\n      true,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    return linearRingsContainsXY(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.ends_,\n      this.stride,\n      x,\n      y,\n    );\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(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.ends_,\n      this.stride,\n    );\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} [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<Array<import(\"../coordinate.js\").Coordinate>>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates(right) {\n    let flatCoordinates;\n    if (right !== undefined) {\n      flatCoordinates = this.getOrientedFlatCoordinates().slice();\n      orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, right);\n    } else {\n      flatCoordinates = this.flatCoordinates;\n    }\n\n    return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n  }\n\n  /**\n   * @return {Array<number>} Ends.\n   */\n  getEnds() {\n    return this.ends_;\n  }\n\n  /**\n   * @return {Array<number>} Interior point.\n   */\n  getFlatInteriorPoint() {\n    if (this.flatInteriorPointRevision_ != this.getRevision()) {\n      const flatCenter = getCenter(this.getExtent());\n      this.flatInteriorPoint_ = getInteriorPointOfArray(\n        this.getOrientedFlatCoordinates(),\n        0,\n        this.ends_,\n        this.stride,\n        flatCenter,\n        0,\n      );\n      this.flatInteriorPointRevision_ = this.getRevision();\n    }\n    return /** @type {import(\"../coordinate.js\").Coordinate} */ (\n      this.flatInteriorPoint_\n    );\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(), '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|null} Linear ring.\n   * @api\n   */\n  getLinearRing(index) {\n    if (index < 0 || this.ends_.length <= index) {\n      return null;\n    }\n    return new LinearRing(\n      this.flatCoordinates.slice(\n        index === 0 ? 0 : this.ends_[index - 1],\n        this.ends_[index],\n      ),\n      this.layout,\n    );\n  }\n\n  /**\n   * Return the linear rings of the polygon.\n   * @return {Array<LinearRing>} 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(\n        flatCoordinates.slice(offset, end),\n        layout,\n      );\n      linearRings.push(linearRing);\n      offset = end;\n    }\n    return linearRings;\n  }\n\n  /**\n   * @return {Array<number>} Oriented flat coordinates.\n   */\n  getOrientedFlatCoordinates() {\n    if (this.orientedRevision_ != this.getRevision()) {\n      const flatCoordinates = this.flatCoordinates;\n      if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n        this.orientedFlatCoordinates_ = flatCoordinates;\n      } else {\n        this.orientedFlatCoordinates_ = flatCoordinates.slice();\n        this.orientedFlatCoordinates_.length = orientLinearRings(\n          this.orientedFlatCoordinates_,\n          0,\n          this.ends_,\n          this.stride,\n        );\n      }\n      this.orientedRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.orientedFlatCoordinates_);\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {Polygon} Simplified Polygon.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedFlatCoordinates.length = quantizeArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      Math.sqrt(squaredTolerance),\n      simplifiedFlatCoordinates,\n      0,\n      simplifiedEnds,\n    );\n    return new Polygon(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'Polygon';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLinearRingArray(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.ends_,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * Set the coordinates of the polygon.\n   * @param {!Array<Array<import(\"../coordinate.js\").Coordinate>>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 2);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    const ends = deflateCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n      this.ends_,\n    );\n    this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n    this.changed();\n  }\n}\n\nexport default Polygon;\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 in meters.\n * @param {number} [n] Optional number of vertices for the resulting\n *     polygon. Default is `32`.\n * @param {number} [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, n, sphereRadius) {\n  n = n ? n : 32;\n  /** @type {Array<number>} */\n  const flatCoordinates = [];\n  for (let i = 0; i < n; ++i) {\n    extend(\n      flatCoordinates,\n      sphereOffset(center, radius, (2 * Math.PI * i) / n, sphereRadius),\n    );\n  }\n  flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n  return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\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  if (isEmpty(extent)) {\n    throw new Error('Cannot create polygon from empty extent');\n  }\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,\n    minY,\n    minX,\n    maxY,\n    maxX,\n    maxY,\n    maxX,\n    minY,\n    minX,\n    minY,\n  ];\n  return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number} [sides] Number of sides of the polygon. Default is 32.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n *     counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, sides, angle) {\n  sides = sides ? 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(), angle);\n  return polygon;\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} [angle] Start angle for the first vertex of the polygon in\n *     counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, angle) {\n  const flatCoordinates = polygon.getFlatCoordinates();\n  const stride = polygon.getStride();\n  const sides = flatCoordinates.length / stride - 1;\n  const startAngle = angle ? 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/Geolocation\n */\nimport BaseObject from './Object.js';\nimport BaseEvent from './events/Event.js';\nimport {circular as circularPolygon} from './geom/Polygon.js';\nimport {toRadians} from './math.js';\nimport {\n  get as getProjection,\n  getTransformFromProjections,\n  identityTransform,\n} from './proj.js';\n\n/**\n * @enum {string}\n */\nconst Property = {\n  ACCURACY: 'accuracy',\n  ACCURACY_GEOMETRY: 'accuracyGeometry',\n  ALTITUDE: 'altitude',\n  ALTITUDE_ACCURACY: 'altitudeAccuracy',\n  HEADING: 'heading',\n  POSITION: 'position',\n  PROJECTION: 'projection',\n  SPEED: 'speed',\n  TRACKING: 'tracking',\n  TRACKING_OPTIONS: 'trackingOptions',\n};\n\n/**\n * @enum string\n */\nconst GeolocationErrorType = {\n  /**\n   * Triggered when a `GeolocationPositionError` occurs.\n   * @event module:ol/Geolocation.GeolocationError#error\n   * @api\n   */\n  ERROR: 'error',\n};\n\n/**\n * @classdesc\n * Events emitted on [GeolocationPositionError](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError).\n */\nexport class GeolocationError extends BaseEvent {\n  /**\n   * @param {GeolocationPositionError} error error object.\n   */\n  constructor(error) {\n    super(GeolocationErrorType.ERROR);\n\n    /**\n     * Code of the underlying `GeolocationPositionError`.\n     * @type {number}\n     * @api\n     */\n    this.code = error.code;\n\n    /**\n     * Message of the underlying `GeolocationPositionError`.\n     * @type {string}\n     * @api\n     */\n    this.message = error.message;\n  }\n}\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:accuracy'|'change:accuracyGeometry'|'change:altitude'|\n *    'change:altitudeAccuracy'|'change:heading'|'change:position'|'change:projection'|'change:speed'|'change:tracking'|\n *    'change:trackingOptions'} GeolocationObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<GeolocationObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").OnSignature<'error', GeolocationError, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|GeolocationObjectEventTypes, Return> &\n *   import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return>} GeolocationOnSignature\n */\n\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](https://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes and errors, register listeners for the generic\n * `change` event and the `error` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n *     const geolocation = new Geolocation({\n *       // take the projection to use from the map's view\n *       projection: view.getProjection()\n *     });\n *     // listen to changes in position\n *     geolocation.on('change', function(evt) {\n *       console.log(geolocation.getPosition());\n *     });\n *     // listen to error\n *     geolocation.on('error', function(evt) {\n *       window.console.log(evt.message);\n *     });\n *\n * @fires GeolocationError\n * @api\n */\nclass Geolocation extends BaseObject {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {GeolocationOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {GeolocationOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {GeolocationOnSignature<void>}\n     */\n    this.un;\n\n    options = options || {};\n\n    /**\n     * The unprojected (EPSG:4326) device position.\n     * @private\n     * @type {?import(\"./coordinate.js\").Coordinate}\n     */\n    this.position_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./proj.js\").TransformFunction}\n     */\n    this.transform_ = identityTransform;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.watchId_ = undefined;\n\n    this.addChangeListener(Property.PROJECTION, this.handleProjectionChanged_);\n    this.addChangeListener(Property.TRACKING, this.handleTrackingChanged_);\n\n    if (options.projection !== undefined) {\n      this.setProjection(options.projection);\n    }\n    if (options.trackingOptions !== undefined) {\n      this.setTrackingOptions(options.trackingOptions);\n    }\n\n    this.setTracking(options.tracking !== undefined ? options.tracking : false);\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.setTracking(false);\n    super.disposeInternal();\n  }\n\n  /**\n   * @private\n   */\n  handleProjectionChanged_() {\n    const projection = this.getProjection();\n    if (projection) {\n      this.transform_ = getTransformFromProjections(\n        getProjection('EPSG:4326'),\n        projection,\n      );\n      if (this.position_) {\n        this.set(Property.POSITION, this.transform_(this.position_));\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  handleTrackingChanged_() {\n    if ('geolocation' in navigator) {\n      const tracking = this.getTracking();\n      if (tracking && this.watchId_ === undefined) {\n        this.watchId_ = navigator.geolocation.watchPosition(\n          this.positionChange_.bind(this),\n          this.positionError_.bind(this),\n          this.getTrackingOptions(),\n        );\n      } else if (!tracking && this.watchId_ !== undefined) {\n        navigator.geolocation.clearWatch(this.watchId_);\n        this.watchId_ = undefined;\n      }\n    }\n  }\n\n  /**\n   * @private\n   * @param {GeolocationPosition} position position event.\n   */\n  positionChange_(position) {\n    const coords = position.coords;\n    this.set(Property.ACCURACY, coords.accuracy);\n    this.set(\n      Property.ALTITUDE,\n      coords.altitude === null ? undefined : coords.altitude,\n    );\n    this.set(\n      Property.ALTITUDE_ACCURACY,\n      coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy,\n    );\n    this.set(\n      Property.HEADING,\n      coords.heading === null ? undefined : toRadians(coords.heading),\n    );\n    if (!this.position_) {\n      this.position_ = [coords.longitude, coords.latitude];\n    } else {\n      this.position_[0] = coords.longitude;\n      this.position_[1] = coords.latitude;\n    }\n    const projectedPosition = this.transform_(this.position_);\n    this.set(Property.POSITION, projectedPosition.slice());\n    this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n    const geometry = circularPolygon(this.position_, coords.accuracy);\n    geometry.applyTransform(this.transform_);\n    this.set(Property.ACCURACY_GEOMETRY, geometry);\n    this.changed();\n  }\n\n  /**\n   * @private\n   * @param {GeolocationPositionError} error error object.\n   */\n  positionError_(error) {\n    this.dispatchEvent(new GeolocationError(error));\n  }\n\n  /**\n   * Get the accuracy of the position in meters.\n   * @return {number|undefined} The accuracy of the position measurement in\n   *     meters.\n   * @observable\n   * @api\n   */\n  getAccuracy() {\n    return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n  }\n\n  /**\n   * Get a geometry of the position accuracy.\n   * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n   * @observable\n   * @api\n   */\n  getAccuracyGeometry() {\n    return /** @type {?import(\"./geom/Polygon.js\").default} */ (\n      this.get(Property.ACCURACY_GEOMETRY) || null\n    );\n  }\n\n  /**\n   * Get the altitude associated with the position.\n   * @return {number|undefined} The altitude of the position in meters above mean\n   *     sea level.\n   * @observable\n   * @api\n   */\n  getAltitude() {\n    return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n  }\n\n  /**\n   * Get the altitude accuracy of the position.\n   * @return {number|undefined} The accuracy of the altitude measurement in\n   *     meters.\n   * @observable\n   * @api\n   */\n  getAltitudeAccuracy() {\n    return /** @type {number|undefined} */ (\n      this.get(Property.ALTITUDE_ACCURACY)\n    );\n  }\n\n  /**\n   * Get the heading as radians clockwise from North.\n   * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n   * is set to `true` in the tracking options.\n   * @return {number|undefined} The heading of the device in radians from north.\n   * @observable\n   * @api\n   */\n  getHeading() {\n    return /** @type {number|undefined} */ (this.get(Property.HEADING));\n  }\n\n  /**\n   * Get the position of the device.\n   * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n   *     in the current projection.\n   * @observable\n   * @api\n   */\n  getPosition() {\n    return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n      this.get(Property.POSITION)\n    );\n  }\n\n  /**\n   * Get the projection associated with the position.\n   * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n   *     reported in.\n   * @observable\n   * @api\n   */\n  getProjection() {\n    return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (\n      this.get(Property.PROJECTION)\n    );\n  }\n\n  /**\n   * Get the speed in meters per second.\n   * @return {number|undefined} The instantaneous speed of the device in meters\n   *     per second.\n   * @observable\n   * @api\n   */\n  getSpeed() {\n    return /** @type {number|undefined} */ (this.get(Property.SPEED));\n  }\n\n  /**\n   * Determine if the device location is being tracked.\n   * @return {boolean} The device location is being tracked.\n   * @observable\n   * @api\n   */\n  getTracking() {\n    return /** @type {boolean} */ (this.get(Property.TRACKING));\n  }\n\n  /**\n   * Get the tracking options.\n   * See https://www.w3.org/TR/geolocation-API/#position-options.\n   * @return {PositionOptions|undefined} PositionOptions as defined by\n   *     the [HTML5 Geolocation spec\n   *     ](https://www.w3.org/TR/geolocation-API/#position_options_interface).\n   * @observable\n   * @api\n   */\n  getTrackingOptions() {\n    return /** @type {PositionOptions|undefined} */ (\n      this.get(Property.TRACKING_OPTIONS)\n    );\n  }\n\n  /**\n   * Set the projection to use for transforming the coordinates.\n   * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n   *     reported in.\n   * @observable\n   * @api\n   */\n  setProjection(projection) {\n    this.set(Property.PROJECTION, getProjection(projection));\n  }\n\n  /**\n   * Enable or disable tracking.\n   * @param {boolean} tracking Enable tracking.\n   * @observable\n   * @api\n   */\n  setTracking(tracking) {\n    this.set(Property.TRACKING, tracking);\n  }\n\n  /**\n   * Set the tracking options.\n   * See http://www.w3.org/TR/geolocation-API/#position-options.\n   * @param {PositionOptions} options PositionOptions as defined by the\n   *     [HTML5 Geolocation spec\n   *     ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n   * @observable\n   * @api\n   */\n  setTrackingOptions(options) {\n    this.set(Property.TRACKING_OPTIONS, options);\n  }\n}\n\nexport default Geolocation;\n","/**\n * @module ol/geom/flat/interpolate\n */\nimport {binarySearch} from '../../array.js';\nimport {lerp} from '../../math.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array<number>} [dest] Destination.\n * @param {number} [dimension] Destination dimension (default is `2`)\n * @return {Array<number>} Destination.\n */\nexport function interpolatePoint(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  fraction,\n  dest,\n  dimension,\n) {\n  let o, t;\n  const n = (end - offset) / stride;\n  if (n === 1) {\n    o = offset;\n  } else if (n === 2) {\n    o = offset;\n    t = fraction;\n  } else if (n !== 0) {\n    let x1 = flatCoordinates[offset];\n    let y1 = flatCoordinates[offset + 1];\n    let length = 0;\n    const cumulativeLengths = [0];\n    for (let i = offset + stride; i < end; i += stride) {\n      const x2 = flatCoordinates[i];\n      const y2 = flatCoordinates[i + 1];\n      length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n      cumulativeLengths.push(length);\n      x1 = x2;\n      y1 = y2;\n    }\n    const target = fraction * length;\n    const index = binarySearch(cumulativeLengths, target);\n    if (index < 0) {\n      t =\n        (target - cumulativeLengths[-index - 2]) /\n        (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n      o = offset + (-index - 2) * stride;\n    } else {\n      o = offset + index * stride;\n    }\n  }\n  dimension = dimension > 1 ? dimension : 2;\n  dest = dest ? dest : new Array(dimension);\n  for (let i = 0; i < dimension; ++i) {\n    dest[i] =\n      o === undefined\n        ? NaN\n        : t === undefined\n          ? flatCoordinates[o + i]\n          : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n  }\n  return dest;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringCoordinateAtM(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  m,\n  extrapolate,\n) {\n  if (end == offset) {\n    return null;\n  }\n  let coordinate;\n  if (m < flatCoordinates[offset + stride - 1]) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(offset, offset + stride);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  if (flatCoordinates[end - 1] < m) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(end - stride, end);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  // FIXME use O(1) search\n  if (m == flatCoordinates[offset + stride - 1]) {\n    return flatCoordinates.slice(offset, offset + stride);\n  }\n  let lo = offset / stride;\n  let hi = end / stride;\n  while (lo < hi) {\n    const mid = (lo + hi) >> 1;\n    if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n      hi = mid;\n    } else {\n      lo = mid + 1;\n    }\n  }\n  const m0 = flatCoordinates[lo * stride - 1];\n  if (m == m0) {\n    return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n  }\n  const m1 = flatCoordinates[(lo + 1) * stride - 1];\n  const t = (m - m0) / (m1 - m0);\n  coordinate = [];\n  for (let i = 0; i < stride - 1; ++i) {\n    coordinate.push(\n      lerp(\n        flatCoordinates[(lo - 1) * stride + i],\n        flatCoordinates[lo * stride + i],\n        t,\n      ),\n    );\n  }\n  coordinate.push(m);\n  return coordinate;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringsCoordinateAtM(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  m,\n  extrapolate,\n  interpolate,\n) {\n  if (interpolate) {\n    return lineStringCoordinateAtM(\n      flatCoordinates,\n      offset,\n      ends[ends.length - 1],\n      stride,\n      m,\n      extrapolate,\n    );\n  }\n  let coordinate;\n  if (m < flatCoordinates[stride - 1]) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(0, stride);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  if (flatCoordinates[flatCoordinates.length - 1] < m) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    if (offset == end) {\n      continue;\n    }\n    if (m < flatCoordinates[offset + stride - 1]) {\n      return null;\n    }\n    if (m <= flatCoordinates[end - 1]) {\n      return lineStringCoordinateAtM(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        m,\n        false,\n      );\n    }\n    offset = end;\n  }\n  return null;\n}\n","/**\n * @module ol/geom/flat/length\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n  let x1 = flatCoordinates[offset];\n  let y1 = flatCoordinates[offset + 1];\n  let length = 0;\n  for (let i = offset + stride; i < end; i += stride) {\n    const x2 = flatCoordinates[i];\n    const y2 = flatCoordinates[i + 1];\n    length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n    x1 = x2;\n    y1 = y2;\n  }\n  return length;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n  let perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n  const dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n  const dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n  perimeter += Math.sqrt(dx * dx + dy * dy);\n  return perimeter;\n}\n","/**\n * @module ol/geom/LineString\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {interpolatePoint, lineStringCoordinateAtM} from './flat/interpolate.js';\nimport {intersectsLineString} from './flat/intersectsextent.js';\nimport {lineStringLength} from './flat/length.js';\nimport {forEach as forEachSegment} from './flat/segments.js';\nimport {douglasPeucker} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nclass LineString extends SimpleGeometry {\n  /**\n   * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate|null}\n     */\n    this.flatMidpoint_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.flatMidpointRevision_ = -1;\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 (layout !== undefined && !Array.isArray(coordinates[0])) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n    } else {\n      this.setCoordinates(\n        /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed coordinate to the coordinates of the linestring.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @api\n   */\n  appendCoordinate(coordinate) {\n    extend(this.flatCoordinates, coordinate);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!LineString} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const lineString = new LineString(\n      this.flatCoordinates.slice(),\n      this.layout,\n    );\n    lineString.applyProperties(this);\n    return lineString;\n  }\n\n  /**\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   * @override\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(\n        maxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.flatCoordinates.length,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestPoint(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      this.maxDelta_,\n      false,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * Iterate over each segment, calling the provided callback.\n   * If the callback returns a truthy value the function returns that\n   * value immediately. Otherwise the function returns `false`.\n   *\n   * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n   *     called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n   * @return {T|boolean} Value.\n   * @template T,S\n   * @api\n   */\n  forEachSegment(callback) {\n    return forEachSegment(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      callback,\n    );\n  }\n\n  /**\n   * Returns the coordinate at `m` using linear interpolation, or `null` if no\n   * such coordinate exists.\n   *\n   * `extrapolate` controls extrapolation beyond the range of Ms in the\n   * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n   * M will return the first coordinate and Ms greater than the last M will\n   * return the last coordinate.\n   *\n   * @param {number} m M.\n   * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n   * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n   * @api\n   */\n  getCoordinateAtM(m, extrapolate) {\n    if (this.layout != 'XYM' && this.layout != 'XYZM') {\n      return null;\n    }\n    extrapolate = extrapolate !== undefined ? extrapolate : false;\n    return lineStringCoordinateAtM(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      m,\n      extrapolate,\n    );\n  }\n\n  /**\n   * Return the coordinates of the linestring.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the coordinate at the provided fraction along the linestring.\n   * The `fraction` is a number between 0 and 1, where 0 is the start of the\n   * linestring and 1 is the end.\n   * @param {number} fraction Fraction.\n   * @param {import(\"../coordinate.js\").Coordinate} [dest] Optional coordinate whose values will\n   *     be modified. If not provided, a new coordinate will be returned.\n   * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n   * @api\n   */\n  getCoordinateAt(fraction, dest) {\n    return interpolatePoint(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      fraction,\n      dest,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the length of the linestring on projected plane.\n   * @return {number} Length (on projected plane).\n   * @api\n   */\n  getLength() {\n    return lineStringLength(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoint.\n   */\n  getFlatMidpoint() {\n    if (this.flatMidpointRevision_ != this.getRevision()) {\n      this.flatMidpoint_ = this.getCoordinateAt(\n        0.5,\n        this.flatMidpoint_ ?? undefined,\n      );\n      this.flatMidpointRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.flatMidpoint_);\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {LineString} Simplified LineString.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    simplifiedFlatCoordinates.length = douglasPeucker(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n    );\n    return new LineString(simplifiedFlatCoordinates, 'XY');\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'LineString';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLineString(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      extent,\n      this.getExtent(),\n    );\n  }\n\n  /**\n   * Set the coordinates of the linestring.\n   * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 1);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinates(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default LineString;\n","/**\n * @module ol/render/EventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\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 composed.  When dispatched by the map, the event object will not have\n   * a `context` set.  When dispatched by a layer, the event object will have a `context` set.  Only\n   * WebGL layers currently dispatch this event.\n   * @event module:ol/render/Event~RenderEvent#precompose\n   * @api\n   */\n  PRECOMPOSE: 'precompose',\n\n  /**\n   * Triggered after layers are composed.  When dispatched by the map, the event object will not have\n   * a `context` set.  When dispatched by a layer, the event object will have a `context` set.  Only\n   * WebGL layers currently dispatch this event.\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 * @typedef {'postrender'|'precompose'|'postcompose'|'rendercomplete'} MapRenderEventTypes\n */\n\n/**\n * @typedef {'postrender'|'prerender'} LayerRenderEventTypes\n */\n","/**\n * @module ol/has\n */\n\nconst ua =\n  typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n    ? navigator.userAgent.toLowerCase()\n    : '';\n\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport const FIREFOX = ua.includes('firefox');\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.includes('safari') && !ua.includes('chrom');\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=237906\n * @type {boolean}\n */\nexport const SAFARI_BUG_237906 =\n  SAFARI &&\n  (ua.includes('version/15.4') ||\n    /cpu (os|iphone os) 15_4 like mac os x/.test(ua));\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.includes('webkit') && !ua.includes('edge');\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.includes('macintosh');\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 =\n  typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport const WORKER_OFFSCREEN_CANVAS =\n  typeof WorkerGlobalScope !== 'undefined' &&\n  typeof OffscreenCanvas !== 'undefined' &&\n  self instanceof WorkerGlobalScope; //eslint-disable-line\n\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport const IMAGE_DECODE =\n  typeof Image !== 'undefined' && Image.prototype.decode;\n\n/**\n * createImageBitmap() is supported.\n * @type {boolean}\n */\nexport const CREATE_IMAGE_BITMAP = typeof createImageBitmap === 'function';\n\n/**\n * @type {boolean}\n */\nexport const PASSIVE_EVENT_LISTENERS = (function () {\n  let passive = false;\n  try {\n    const options = Object.defineProperty({}, 'passive', {\n      get: function () {\n        passive = true;\n      },\n    });\n\n    // @ts-ignore Ignore invalid event type '_'\n    window.addEventListener('_', null, options);\n    // @ts-ignore Ignore invalid event type '_'\n    window.removeEventListener('_', null, options);\n  } catch {\n    // passive not supported\n  }\n  return passive;\n})();\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","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","/**\n * @module color-parse\n */\nimport names from 'color-name'\n\nexport default parse\n\n/**\n * Base hues\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\n */\n//FIXME: use external hue detector\nvar baseHues = {\n\tred: 0,\n\torange: 60,\n\tyellow: 120,\n\tgreen: 180,\n\tblue: 240,\n\tpurple: 300\n}\n\n/**\n * Parse color from the string passed\n *\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\n */\nfunction parse(cstr) {\n\tvar m, parts = [], alpha = 1, space\n\n\t//numeric case\n\tif (typeof cstr === 'number') {\n\t\treturn { space: 'rgb', values: [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff], alpha: 1 }\n\t}\n\tif (typeof cstr === 'number') return { space: 'rgb', values: [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff], alpha: 1 }\n\n\tcstr = String(cstr).toLowerCase();\n\n\t//keyword\n\tif (names[cstr]) {\n\t\tparts = names[cstr].slice()\n\t\tspace = 'rgb'\n\t}\n\n\t//reserved words\n\telse if (cstr === 'transparent') {\n\t\talpha = 0\n\t\tspace = 'rgb'\n\t\tparts = [0, 0, 0]\n\t}\n\n\t//hex\n\telse if (cstr[0] === '#') {\n\t\tvar base = cstr.slice(1)\n\t\tvar size = base.length\n\t\tvar isShort = size <= 4\n\t\talpha = 1\n\n\t\tif (isShort) {\n\t\t\tparts = [\n\t\t\t\tparseInt(base[0] + base[0], 16),\n\t\t\t\tparseInt(base[1] + base[1], 16),\n\t\t\t\tparseInt(base[2] + base[2], 16)\n\t\t\t]\n\t\t\tif (size === 4) {\n\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tparts = [\n\t\t\t\tparseInt(base[0] + base[1], 16),\n\t\t\t\tparseInt(base[2] + base[3], 16),\n\t\t\t\tparseInt(base[4] + base[5], 16)\n\t\t\t]\n\t\t\tif (size === 8) {\n\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\n\t\t\t}\n\t\t}\n\n\t\tif (!parts[0]) parts[0] = 0\n\t\tif (!parts[1]) parts[1] = 0\n\t\tif (!parts[2]) parts[2] = 0\n\n\t\tspace = 'rgb'\n\t}\n\n\t// color space\n\telse if (m = /^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n\t\tvar name = m[1]\n\t\tspace = name.replace(/a$/, '')\n\t\tvar dims = space === 'cmyk' ? 4 : space === 'gray' ? 1 : 3\n\t\tparts = m[2].trim().split(/\\s*[,\\/]\\s*|\\s+/)\n\n\t\t// color(srgb-linear x x x) -> srgb-linear(x x x)\n\t\tif (space === 'color') space = parts.shift()\n\n\t\tparts = parts.map(function (x, i) {\n\t\t\t//<percentage>\n\t\t\tif (x[x.length - 1] === '%') {\n\t\t\t\tx = parseFloat(x) / 100\n\t\t\t\t// alpha -> 0..1\n\t\t\t\tif (i === 3) return x\n\t\t\t\t// rgb -> 0..255\n\t\t\t\tif (space === 'rgb') return x * 255\n\t\t\t\t// hsl, hwb H -> 0..100\n\t\t\t\tif (space[0] === 'h') return x * 100\n\t\t\t\t// lch, lab L -> 0..100\n\t\t\t\tif (space[0] === 'l' && !i) return x * 100\n\t\t\t\t// lab A B -> -125..125\n\t\t\t\tif (space === 'lab') return x * 125\n\t\t\t\t// lch C -> 0..150, H -> 0..360\n\t\t\t\tif (space === 'lch') return i < 2 ? x * 150 : x * 360\n\t\t\t\t// oklch/oklab L -> 0..1\n\t\t\t\tif (space[0] === 'o' && !i) return x\n\t\t\t\t// oklab A B -> -0.4..0.4\n\t\t\t\tif (space === 'oklab') return x * 0.4\n\t\t\t\t// oklch C -> 0..0.4, H -> 0..360\n\t\t\t\tif (space === 'oklch') return i < 2 ? x * 0.4 : x * 360\n\t\t\t\t// color(xxx) -> 0..1\n\t\t\t\treturn x\n\t\t\t}\n\n\t\t\t//hue\n\t\t\tif (space[i] === 'h' || (i === 2 && space[space.length - 1] === 'h')) {\n\t\t\t\t//<base-hue>\n\t\t\t\tif (baseHues[x] !== undefined) return baseHues[x]\n\t\t\t\t//<deg>\n\t\t\t\tif (x.endsWith('deg')) return parseFloat(x)\n\t\t\t\t//<turn>\n\t\t\t\tif (x.endsWith('turn')) return parseFloat(x) * 360\n\t\t\t\tif (x.endsWith('grad')) return parseFloat(x) * 360 / 400\n\t\t\t\tif (x.endsWith('rad')) return parseFloat(x) * 180 / Math.PI\n\t\t\t}\n\t\t\tif (x === 'none') return 0\n\t\t\treturn parseFloat(x)\n\t\t});\n\n\t\talpha = parts.length > dims ? parts.pop() : 1\n\t}\n\n\t//named channels case\n\telse if (/[0-9](?:\\s|\\/|,)/.test(cstr)) {\n\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\n\t\t\treturn parseFloat(value)\n\t\t})\n\n\t\tspace = cstr.match(/([a-z])/ig)?.join('')?.toLowerCase() || 'rgb'\n\t}\n\n\treturn {\n\t\tspace,\n\t\tvalues: parts,\n\t\talpha\n\t}\n}\n","/**\n * RGB space.\n *\n * @module  color-space/rgb\n */\nconst rgb = {\n\tname: 'rgb',\n\tmin: [0, 0, 0],\n\tmax: [255, 255, 255],\n\tchannel: ['red', 'green', 'blue'],\n\talias: ['RGB']\n};\n\nexport default rgb;\n","/**\n * @module color-space/hsl\n */\nimport rgb from './rgb.js';\n\nvar hsl = {\n\tname: 'hsl',\n\tmin: [0, 0, 0],\n\tmax: [360, 100, 100],\n\tchannel: ['hue', 'saturation', 'lightness'],\n\talias: ['HSL'],\n\n\trgb: function (hsl) {\n\t\tvar h = hsl[0] / 360, s = hsl[1] / 100, l = hsl[2] / 100, t1, t2, t3, rgb, val, i = 0;\n\n\t\tif (s === 0) return val = l * 255, [val, val, val];\n\n\t\tt2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\t\tt1 = 2 * l - t2;\n\n\t\trgb = [0, 0, 0];\n\t\tfor (; i < 3;) {\n\t\t\tt3 = h + 1 / 3 * - (i - 1);\n\t\t\tt3 < 0 ? t3++ : t3 > 1 && t3--;\n\t\t\tval = 6 * t3 < 1 ? t1 + (t2 - t1) * 6 * t3 :\n\t\t\t\t2 * t3 < 1 ? t2 :\n\t\t\t\t\t3 * t3 < 2 ? t1 + (t2 - t1) * (2 / 3 - t3) * 6 :\n\t\t\t\t\t\tt1;\n\t\t\trgb[i++] = val * 255;\n\t\t}\n\n\t\treturn rgb;\n\t}\n};\n\nexport default (hsl);\n\n\n//extend rgb\nrgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255,\n\t\tg = rgb[1] / 255,\n\t\tb = rgb[2] / 255,\n\t\tmin = Math.min(r, g, b),\n\t\tmax = Math.max(r, g, b),\n\t\tdelta = max - min,\n\t\th, s, l;\n\n\tif (max === min) {\n\t\th = 0;\n\t}\n\telse if (r === max) {\n\t\th = (g - b) / delta;\n\t}\n\telse if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t}\n\telse if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\t//FIXME h is possibly undefined\n\t//@ts-ignore\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t}\n\telse if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t}\n\telse {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n","/** @module  color-rgba */\nimport parse from 'color-parse'\nimport rgb from 'color-space/rgb.js'\nimport hsl from 'color-space/hsl.js'\n\nexport default function rgba(color) {\n\t// template literals\n\tif (Array.isArray(color) && color.raw) color = String.raw(...arguments)\n\tif (color instanceof Number) color = +color\n\n\tvar values, i, l\n\n\t//attempt to parse non-array arguments\n\tvar parsed = parse(color)\n\n\tif (!parsed.space) return []\n\n\tconst min = parsed.space[0] === 'h' ? hsl.min : rgb.min\n\tconst max = parsed.space[0] === 'h' ? hsl.max : rgb.max\n\n\tvalues = Array(3)\n\tvalues[0] = Math.min(Math.max(parsed.values[0], min[0]), max[0])\n\tvalues[1] = Math.min(Math.max(parsed.values[1], min[1]), max[1])\n\tvalues[2] = Math.min(Math.max(parsed.values[2], min[2]), max[2])\n\n\tif (parsed.space[0] === 'h') {\n\t\tvalues = hsl.rgb(values)\n\t}\n\n\tvalues.push(Math.min(Math.max(parsed.alpha, 0), 1))\n\n\treturn values\n}\n","/**\n * CIE XYZ\n *\n * @module  color-space/xyz\n */\nimport rgb from './rgb.js';\n\nconst xyz = {\n\tname: 'xyz',\n\tmin: [0, 0, 0],\n\tchannel: ['X', 'Y', 'Z'],\n\talias: ['XYZ', 'ciexyz', 'cie1931'],\n\n\t// Whitepoint reference values with observer/illuminant\n\t// http://en.wikipedia.org/wiki/Standard_illuminant\n\twhitepoint: {\n\t\t//1931 2°\n\t\t2: {\n\t\t\t//incadescent\n\t\t\tA: [109.85, 100, 35.585],\n\t\t\t// B:[],\n\t\t\tC: [98.074, 100, 118.232],\n\t\t\tD50: [96.422, 100, 82.521],\n\t\t\tD55: [95.682, 100, 92.149],\n\t\t\t//daylight\n\t\t\tD65: [95.045592705167, 100, 108.9057750759878],\n\t\t\tD75: [94.972, 100, 122.638],\n\t\t\t//flourescent\n\t\t\t// F1: [],\n\t\t\tF2: [99.187, 100, 67.395],\n\t\t\t// F3: [],\n\t\t\t// F4: [],\n\t\t\t// F5: [],\n\t\t\t// F6:[],\n\t\t\tF7: [95.044, 100, 108.755],\n\t\t\t// F8: [],\n\t\t\t// F9: [],\n\t\t\t// F10: [],\n\t\t\tF11: [100.966, 100, 64.370],\n\t\t\t// F12: [],\n\t\t\tE: [100, 100, 100]\n\t\t},\n\n\t\t//1964  10°\n\t\t10: {\n\t\t\t//incadescent\n\t\t\tA: [111.144, 100, 35.200],\n\t\t\tC: [97.285, 100, 116.145],\n\t\t\tD50: [96.720, 100, 81.427],\n\t\t\tD55: [95.799, 100, 90.926],\n\t\t\t//daylight\n\t\t\tD65: [94.811, 100, 107.304],\n\t\t\tD75: [94.416, 100, 120.641],\n\t\t\t//flourescent\n\t\t\tF2: [103.280, 100, 69.026],\n\t\t\tF7: [95.792, 100, 107.687],\n\t\t\tF11: [103.866, 100, 65.627],\n\t\t\tE: [100, 100, 100]\n\t\t}\n\t}\n};\n\n\n/**\n * Top values are the whitepoint’s top values, default are D65\n */\nxyz.max = xyz.whitepoint[2].D65;\n\n\n/**\n * Transform xyz to rgb\n *\n * @param {Array<number>} _xyz Array of xyz values\n * @param {Array<number>} white Whitepoint reference\n * @return {Array<number>} RGB values\n */\nxyz.rgb = function (_xyz, white) {\n\t// FIXME: make sure we have to divide like this. Probably we have to replace matrix as well then\n\twhite = white || xyz.whitepoint[2].E;\n\n\tvar x = _xyz[0] / white[0],\n\t\ty = _xyz[1] / white[1],\n\t\tz = _xyz[2] / white[2],\n\t\tr, g, b;\n\n\t// assume sRGB\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\tr = (x * 3.240969941904521) + (y * -1.537383177570093) + (z * -0.498610760293);\n\tg = (x * -0.96924363628087) + (y * 1.87596750150772) + (z * 0.041555057407175);\n\tb = (x * 0.055630079696993) + (y * -0.20397695888897) + (z * 1.056971514242878);\n\n\tr = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r = (r * 12.92);\n\n\tg = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g = (g * 12.92);\n\n\tb = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b = (b * 12.92);\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n}\n\n\n\n/**\n * RGB to XYZ\n *\n * @param {Array<number>} rgb RGB channels\n *\n * @return {Array<number>} XYZ channels\n */\nrgb.xyz = function (rgb, white) {\n\tvar r = rgb[0] / 255,\n\t\tg = rgb[1] / 255,\n\t\tb = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.41239079926595) + (g * 0.35758433938387) + (b * 0.18048078840183);\n\tvar y = (r * 0.21263900587151) + (g * 0.71516867876775) + (b * 0.072192315360733);\n\tvar z = (r * 0.019330818715591) + (g * 0.11919477979462) + (b * 0.95053215224966);\n\n\twhite = white || xyz.whitepoint[2].E;\n\n\treturn [x * white[0], y * white[1], z * white[2]];\n};\n\n\n\nexport default xyz;\n","/**\n * CIE LUV (C'est la vie)\n *\n * @module color-space/luv\n */\nimport xyz from './xyz.js';\n\nvar luv = {\n\tname: 'luv',\n\t//NOTE: luv has no rigidly defined limits\n\t//easyrgb fails to get proper coords\n\t//boronine states no rigid limits\n\t//colorMine refers this ones:\n\tmin: [0, -134, -140],\n\tmax: [100, 224, 122],\n\tchannel: ['lightness', 'u', 'v'],\n\talias: ['LUV', 'cieluv', 'cie1976'],\n\n\txyz: function (arg, i, o) {\n\t\tvar _u, _v, l, u, v, x, y, z, xn, yn, zn, un, vn;\n\t\tl = arg[0], u = arg[1], v = arg[2];\n\n\t\tif (l === 0) return [0, 0, 0];\n\n\t\t//get constants\n\t\t//var e = 0.008856451679035631; //(6/29)^3\n\t\tvar k = 0.0011070564598794539; //(3/29)^3\n\n\t\t//get illuminant/observer\n\t\ti = i || 'D65';\n\t\to = o || 2;\n\n\t\txn = xyz.whitepoint[o][i][0];\n\t\tyn = xyz.whitepoint[o][i][1];\n\t\tzn = xyz.whitepoint[o][i][2];\n\n\t\tun = (4 * xn) / (xn + (15 * yn) + (3 * zn));\n\t\tvn = (9 * yn) / (xn + (15 * yn) + (3 * zn));\n\t\t// un = 0.19783000664283;\n\t\t// vn = 0.46831999493879;\n\n\n\t\t_u = u / (13 * l) + un || 0;\n\t\t_v = v / (13 * l) + vn || 0;\n\n\t\ty = l > 8 ? yn * Math.pow((l + 16) / 116, 3) : yn * l * k;\n\n\t\t//wikipedia method\n\t\tx = y * 9 * _u / (4 * _v) || 0;\n\t\tz = y * (12 - 3 * _u - 20 * _v) / (4 * _v) || 0;\n\n\t\t//boronine method\n\t\t//https://github.com/boronine/husl/blob/master/husl.coffee#L201\n\t\t// x = 0 - (9 * y * _u) / ((_u - 4) * _v - _u * _v);\n\t\t// z = (9 * y - (15 * _v * y) - (_v * x)) / (3 * _v);\n\n\t\treturn [x, y, z];\n\t}\n};\n\nexport default (luv);\n\n// http://www.brucelindbloom.com/index.html?Equations.html\n// https://github.com/boronine/husl/blob/master/husl.coffee\n//i - illuminant\n//o - observer\nxyz.luv = function (arg, i, o) {\n\tvar _u, _v, l, u, v, x, y, z, xn, yn, zn, un, vn;\n\n\t//get constants\n\tvar e = 0.008856451679035631; //(6/29)^3\n\tvar k = 903.2962962962961; //(29/3)^3\n\n\t//get illuminant/observer coords\n\ti = i || 'D65';\n\to = o || 2;\n\n\txn = xyz.whitepoint[o][i][0];\n\tyn = xyz.whitepoint[o][i][1];\n\tzn = xyz.whitepoint[o][i][2];\n\n\tun = (4 * xn) / (xn + (15 * yn) + (3 * zn));\n\tvn = (9 * yn) / (xn + (15 * yn) + (3 * zn));\n\n\n\tx = arg[0], y = arg[1], z = arg[2];\n\n\n\t_u = (4 * x) / (x + (15 * y) + (3 * z)) || 0;\n\t_v = (9 * y) / (x + (15 * y) + (3 * z)) || 0;\n\n\tvar yr = y / yn;\n\n\tl = yr <= e ? k * yr : 116 * Math.pow(yr, 1 / 3) - 16;\n\n\tu = 13 * l * (_u - un);\n\tv = 13 * l * (_v - vn);\n\n\treturn [l, u, v];\n};\n","/**\n * Cylindrical CIE LUV\n *\n * @module color-space/lchuv\n */\nimport luv from './luv.js';\nimport xyz from './xyz.js';\n\n// cylindrical luv\nvar lchuv = {\n\tname: 'lchuv',\n\tchannel: ['lightness', 'chroma', 'hue'],\n\talias: ['LCHuv', 'cielchuv'],\n\tmin: [0, 0, 0],\n\tmax: [100, 100, 360],\n\n\tluv: function (luv) {\n\t\tvar l = luv[0],\n\t\t\tc = luv[1],\n\t\t\th = luv[2],\n\t\t\tu, v, hr;\n\n\t\thr = h / 360 * 2 * Math.PI;\n\t\tu = c * Math.cos(hr);\n\t\tv = c * Math.sin(hr);\n\t\treturn [l, u, v];\n\t},\n\n\txyz: function (arg) {\n\t\treturn luv.xyz(lchuv.luv(arg));\n\t}\n};\n\nexport default (lchuv);\n\nluv.lchuv = function (luv) {\n\tvar l = luv[0], u = luv[1], v = luv[2];\n\n\tvar c = Math.sqrt(u * u + v * v);\n\tvar hr = Math.atan2(v, u);\n\tvar h = hr * 360 / 2 / Math.PI;\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\treturn [l, c, h]\n};\n\nxyz.lchuv = function (arg) {\n\treturn luv.lchuv(xyz.luv(arg));\n};\n","/**\n * @module ol/color\n */\nimport parseRgba from 'color-rgba';\nimport lchuv from 'color-space/lchuv.js';\nimport rgb from 'color-space/rgb.js';\nimport xyz from 'color-space/xyz.js';\nimport {clamp} from './math.js';\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<number>} Color\n * @api\n */\n\n/**\n * Color to indicate that no color should be rendered. This is meant to be used for per-reference\n * comparisons only.\n * @type {Color}\n */\nexport const NO_COLOR = [NaN, NaN, NaN, 0];\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  }\n  return toString(color);\n}\n\n/**\n * @type {number}\n */\nconst MAX_CACHE_SIZE = 1024;\n\n/**\n * We maintain a small cache of parsed strings.  Whenever the cache grows too large,\n * we delete an arbitrary set of the entries.\n *\n * @type {Object<string, Color>}\n */\nconst cache = {};\n\n/**\n * @type {number}\n */\nlet cacheSize = 0;\n\n/**\n * @param {Color} color A color that may or may not have an alpha channel.\n * @return {Color} The input color with an alpha channel.  If the input color has\n * an alpha channel, the input color will be returned unchanged.  Otherwise, a new\n * array will be returned with the input color and an alpha channel of 1.\n */\nexport function withAlpha(color) {\n  if (color.length === 4) {\n    return color;\n  }\n  const output = color.slice();\n  output[3] = 1;\n  return output;\n}\n\n/**\n * @param {Color} color RGBA color.\n * @return {Color} LCHuv color with alpha.\n */\nexport function rgbaToLcha(color) {\n  const output = xyz.lchuv(rgb.xyz(color));\n  output[3] = color[3];\n  return output;\n}\n\n/**\n * @param {Color} color LCHuv color with alpha.\n * @return {Color} RGBA color.\n */\nexport function lchaToRgba(color) {\n  const output = xyz.rgb(lchuv.xyz(color));\n  output[3] = color[3];\n  return output;\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport function fromString(s) {\n  if (s === 'none') {\n    return NO_COLOR;\n  }\n  if (cache.hasOwnProperty(s)) {\n    return cache[s];\n  }\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\n  const color = parseRgba(s);\n  if (color.length !== 4) {\n    throw new Error('failed to parse \"' + s + '\" as color');\n  }\n  for (const c of color) {\n    if (isNaN(c)) {\n      throw new Error('failed to parse \"' + s + '\" as color');\n    }\n  }\n  normalize(color);\n  cache[s] = color;\n  ++cacheSize;\n  return color;\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  }\n  return fromString(color);\n}\n\n/**\n * Exported for the tests.\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 * @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 : Math.round(color[3] * 1000) / 1000;\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  try {\n    fromString(s);\n    return true;\n  } catch {\n    return false;\n  }\n}\n","import {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\n/**\n * @module ol/dom\n */\n\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [width] Canvas width.\n * @param {number} [height] Canvas height.\n * @param {Array<HTMLCanvasElement>} [canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [settings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(width, height, canvasPool, settings) {\n  /** @type {HTMLCanvasElement|OffscreenCanvas} */\n  let canvas;\n  if (canvasPool && canvasPool.length) {\n    canvas = /** @type {HTMLCanvasElement} */ (canvasPool.shift());\n  } else if (WORKER_OFFSCREEN_CANVAS) {\n    canvas = new OffscreenCanvas(width || 300, height || 300);\n  } else {\n    canvas = document.createElement('canvas');\n  }\n  if (width) {\n    canvas.width = width;\n  }\n  if (height) {\n    canvas.height = height;\n  }\n  //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n  return /** @type {CanvasRenderingContext2D} */ (\n    canvas.getContext('2d', settings)\n  );\n}\n\n/** @type {CanvasRenderingContext2D} */\nlet sharedCanvasContext;\n\n/**\n * @return {CanvasRenderingContext2D} Shared canvas context.\n */\nexport function getSharedCanvasContext2D() {\n  if (!sharedCanvasContext) {\n    sharedCanvasContext = createCanvasContext2D(1, 1);\n  }\n  return sharedCanvasContext;\n}\n\n/**\n * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n  const canvas = context.canvas;\n  canvas.width = 1;\n  canvas.height = 1;\n  context.clearRect(0, 0, 1, 1);\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 * 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 the children from.\n */\nexport function removeChildren(node) {\n  while (node.lastChild) {\n    node.lastChild.remove();\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<Node>} 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/Image\n */\nimport ImageState from './ImageState.js';\nimport EventType from './events/EventType.js';\nimport EventTarget from './events/Target.js';\nimport {listenOnce, unlistenByKey} from './events.js';\nimport {toPromise} from './functions.js';\nimport {CREATE_IMAGE_BITMAP, IMAGE_DECODE} from './has.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n *     function(image, src) {\n *       image.getImage().src = src;\n *     }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(import(\"./Image.js\").default, string): void} LoadFunction\n * @api\n */\n\n/**\n * @typedef {Object} ImageObject\n * @property {import(\"./extent.js\").Extent} [extent] Extent, if different from the requested one.\n * @property {import(\"./resolution.js\").ResolutionLike} [resolution] Resolution, if different from the requested one.\n * When x and y resolution are different, use the array type (`[xResolution, yResolution]`).\n * @property {number} [pixelRatio] Pixel ratio, if different from the requested one.\n * @property {import('./DataTile.js').ImageLike} image Image.\n */\n\n/**\n * Loader function used for image sources. Receives extent, resolution and pixel ratio as arguments.\n * For images that cover any extent and resolution (static images), the loader function should not accept\n * any arguments. The function returns an {@link import(\"./DataTile.js\").ImageLike image}, an\n * {@link import(\"./Image.js\").ImageObject image object}, or a promise for the same.\n * For loaders that generate images, the promise should not resolve until the image is loaded.\n * If the returned image does not match the extent, resolution or pixel ratio passed to the loader,\n * it has to return an {@link import(\"./Image.js\").ImageObject image object} with the `image` and the\n * correct `extent`, `resolution` and `pixelRatio`.\n *\n * @typedef {function(import(\"./extent.js\").Extent, number, number, (function(HTMLImageElement, string): void)=): import(\"./DataTile.js\").ImageLike|ImageObject|Promise<import(\"./DataTile.js\").ImageLike|ImageObject>} Loader\n * @api\n */\n\n/**\n * Loader function used for image sources. Receives extent, resolution and pixel ratio as arguments.\n * The function returns a promise for an  {@link import(\"./Image.js\").ImageObject image object}.\n *\n * @typedef {function(import(\"./extent.js\").Extent, number, number, (function(HTMLImageElement, string): void)=): Promise<import(\"./DataTile.js\").ImageLike|ImageObject>} ImageObjectPromiseLoader\n */\n\nclass ImageWrapper extends EventTarget {\n  /**\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {number|Array<number>|undefined} resolution Resolution. If provided as array, x and y\n   * resolution will be assumed.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"./ImageState.js\").default|Loader} stateOrLoader State.\n   */\n  constructor(extent, resolution, pixelRatio, stateOrLoader) {\n    super();\n\n    /**\n     * @protected\n     * @type {import(\"./extent.js\").Extent}\n     */\n    this.extent = extent;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @protected\n     * @type {number|Array<number>|undefined}\n     */\n    this.resolution = resolution;\n\n    /**\n     * @protected\n     * @type {import(\"./ImageState.js\").default}\n     */\n    this.state =\n      typeof stateOrLoader === 'function' ? ImageState.IDLE : stateOrLoader;\n\n    /**\n     * @private\n     * @type {import('./DataTile.js').ImageLike|null}\n     */\n    this.image_ = null;\n\n    /**\n     * @protected\n     * @type {Loader|null}\n     */\n    this.loader = typeof stateOrLoader === 'function' ? stateOrLoader : null;\n  }\n\n  /**\n   * @protected\n   */\n  changed() {\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * @return {import(\"./extent.js\").Extent} Extent.\n   */\n  getExtent() {\n    return this.extent;\n  }\n\n  /**\n   * @return {import('./DataTile.js').ImageLike} Image.\n   */\n  getImage() {\n    return this.image_;\n  }\n\n  /**\n   * @return {number} PixelRatio.\n   */\n  getPixelRatio() {\n    return this.pixelRatio_;\n  }\n\n  /**\n   * @return {number|Array<number>} Resolution.\n   */\n  getResolution() {\n    return /** @type {number} */ (this.resolution);\n  }\n\n  /**\n   * @return {import(\"./ImageState.js\").default} State.\n   */\n  getState() {\n    return this.state;\n  }\n\n  /**\n   * Load not yet loaded URI.\n   */\n  load() {\n    if (this.state == ImageState.IDLE) {\n      if (this.loader) {\n        this.state = ImageState.LOADING;\n        this.changed();\n        const resolution = this.getResolution();\n        const requestResolution = Array.isArray(resolution)\n          ? resolution[0]\n          : resolution;\n        toPromise(() =>\n          this.loader(\n            this.getExtent(),\n            requestResolution,\n            this.getPixelRatio(),\n          ),\n        )\n          .then((image) => {\n            if ('image' in image) {\n              this.image_ = image.image;\n            }\n            if ('extent' in image) {\n              this.extent = image.extent;\n            }\n            if ('resolution' in image) {\n              this.resolution = image.resolution;\n            }\n            if ('pixelRatio' in image) {\n              this.pixelRatio_ = image.pixelRatio;\n            }\n            if (\n              image instanceof HTMLImageElement ||\n              (CREATE_IMAGE_BITMAP && image instanceof ImageBitmap) ||\n              image instanceof HTMLCanvasElement ||\n              image instanceof HTMLVideoElement\n            ) {\n              this.image_ = image;\n            }\n            this.state = ImageState.LOADED;\n          })\n          .catch((error) => {\n            this.state = ImageState.ERROR;\n            console.error(error); // eslint-disable-line no-console\n          })\n          .finally(() => this.changed());\n      }\n    }\n  }\n\n  /**\n   * @param {import('./DataTile.js').ImageLike} image The image.\n   */\n  setImage(image) {\n    this.image_ = image;\n  }\n\n  /**\n   * @param {number|Array<number>} resolution Resolution.\n   */\n  setResolution(resolution) {\n    this.resolution = resolution;\n  }\n}\n\n/**\n * @param {import('./DataTile.js').ImageLike} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n  const img = /** @type {HTMLImageElement} */ (image);\n  let listening = true;\n  let decoding = false;\n  let loaded = false;\n\n  const listenerKeys = [\n    listenOnce(img, EventType.LOAD, function () {\n      loaded = true;\n      if (!decoding) {\n        loadHandler();\n      }\n    }),\n  ];\n\n  if (img.src && IMAGE_DECODE) {\n    decoding = true;\n    img\n      .decode()\n      .then(function () {\n        if (listening) {\n          loadHandler();\n        }\n      })\n      .catch(function (error) {\n        if (listening) {\n          if (loaded) {\n            loadHandler();\n          } else {\n            errorHandler();\n          }\n        }\n      });\n  } else {\n    listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n  }\n\n  return function unlisten() {\n    listening = false;\n    listenerKeys.forEach(unlistenByKey);\n  };\n}\n\n/**\n * Loads an image.\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise<HTMLImageElement>} Promise resolving to an `HTMLImageElement`.\n * @api\n */\nexport function load(image, src) {\n  return new Promise((resolve, reject) => {\n    function handleLoad() {\n      unlisten();\n      resolve(image);\n    }\n    function handleError() {\n      unlisten();\n      reject(new Error('Image load error'));\n    }\n    function unlisten() {\n      image.removeEventListener('load', handleLoad);\n      image.removeEventListener('error', handleError);\n    }\n    image.addEventListener('load', handleLoad);\n    image.addEventListener('error', handleError);\n    if (src) {\n      image.src = src;\n    }\n  });\n}\n\n/**\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise<HTMLImageElement>} Promise resolving to an `HTMLImageElement`.\n */\nexport function decodeFallback(image, src) {\n  if (src) {\n    image.src = src;\n  }\n  return image.src && IMAGE_DECODE\n    ? new Promise((resolve, reject) =>\n        image\n          .decode()\n          .then(() => resolve(image))\n          .catch((e) =>\n            image.complete && image.width ? resolve(image) : reject(e),\n          ),\n      )\n    : load(image);\n}\n\n/**\n * Loads an image and decodes it to an `ImageBitmap` if `createImageBitmap()` is supported. Returns\n * the loaded image otherwise.\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise<ImageBitmap|HTMLImageElement>} Promise resolving to an `ImageBitmap` or an\n * `HTMLImageElement` if `createImageBitmap()` is not supported.\n * @api\n */\nexport function decode(image, src) {\n  if (src) {\n    image.src = src;\n  }\n  return image.src && IMAGE_DECODE && CREATE_IMAGE_BITMAP\n    ? image\n        .decode()\n        .then(() => createImageBitmap(image))\n        .catch((e) => {\n          if (image.complete && image.width) {\n            return image;\n          }\n          throw e;\n        })\n    : decodeFallback(image);\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/style/IconImageCache\n */\nimport ImageState from '../ImageState.js';\nimport {asArray} from '../color.js';\nimport {getSharedCanvasContext2D} from '../dom.js';\n\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache.shared}.\n */\nclass IconImageCache {\n  constructor() {\n    /**\n     * @type {!Object<string, import(\"./IconImage.js\").default>}\n     * @private\n     */\n    this.cache_ = {};\n\n    /**\n     * @type {!Object<string, CanvasPattern>}\n     * @private\n     */\n    this.patternCache_ = {};\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.cacheSize_ = 0;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.maxCacheSize_ = 1024;\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  clear() {\n    this.cache_ = {};\n    this.patternCache_ = {};\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          delete this.patternCache_[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|string|null} color Color.\n   * @return {import(\"./IconImage.js\").default} Icon image.\n   */\n  get(src, crossOrigin, color) {\n    const key = getCacheKey(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|string|null} color Color.\n   * @return {CanvasPattern} Icon image.\n   */\n  getPattern(src, crossOrigin, color) {\n    const key = getCacheKey(src, crossOrigin, color);\n    return key in this.patternCache_ ? this.patternCache_[key] : null;\n  }\n\n  /**\n   * @param {string} src Src.\n   * @param {?string} crossOrigin Cross origin.\n   * @param {import(\"../color.js\").Color|string|null} color Color.\n   * @param {import(\"./IconImage.js\").default|null} iconImage Icon image.\n   * @param {boolean} [pattern] Also cache a `'repeat'` pattern with this `iconImage`.\n   */\n  set(src, crossOrigin, color, iconImage, pattern) {\n    const key = getCacheKey(src, crossOrigin, color);\n    const update = key in this.cache_;\n    this.cache_[key] = iconImage;\n    if (pattern) {\n      if (iconImage.getImageState() === ImageState.IDLE) {\n        iconImage.load();\n      }\n      if (iconImage.getImageState() === ImageState.LOADING) {\n        iconImage.ready().then(() => {\n          this.patternCache_[key] = getSharedCanvasContext2D().createPattern(\n            iconImage.getImage(1),\n            'repeat',\n          );\n        });\n      } else {\n        this.patternCache_[key] = getSharedCanvasContext2D().createPattern(\n          iconImage.getImage(1),\n          'repeat',\n        );\n      }\n    }\n    if (!update) {\n      ++this.cacheSize_;\n    }\n  }\n\n  /**\n   * Set the cache size of the icon cache. Default is `1024`. Change this value when\n   * your map uses more than 1024 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 * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color|string|null} color Color.\n * @return {string} Cache key.\n */\nexport function getCacheKey(src, crossOrigin, color) {\n  const colorString = color ? asArray(color) : 'null';\n  return crossOrigin + ':' + src + ':' + colorString;\n}\n\nexport default IconImageCache;\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/style/IconImage\n */\n\nimport {decodeFallback} from '../Image.js';\nimport ImageState from '../ImageState.js';\nimport {asString} from '../color.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport EventTarget from '../events/Target.js';\nimport {shared as iconImageCache} from './IconImageCache.js';\n\n/**\n * @type {CanvasRenderingContext2D}\n */\nlet taintedTestContext = null;\n\nclass IconImage extends EventTarget {\n  /**\n   * @param {HTMLImageElement|HTMLCanvasElement|ImageBitmap|null} image Image.\n   * @param {string|undefined} src Src.\n   * @param {?string} crossOrigin Cross origin.\n   * @param {import(\"../ImageState.js\").default|undefined} imageState Image state.\n   * @param {import(\"../color.js\").Color|string|null} color Color.\n   */\n  constructor(image, src, crossOrigin, imageState, color) {\n    super();\n\n    /**\n     * @private\n     * @type {HTMLImageElement|HTMLCanvasElement|ImageBitmap}\n     */\n    this.hitDetectionImage_ = null;\n\n    /**\n     * @private\n     * @type {HTMLImageElement|HTMLCanvasElement|ImageBitmap|null}\n     */\n    this.image_ = image;\n\n    /**\n     * @private\n     * @type {string|null}\n     */\n    this.crossOrigin_ = crossOrigin;\n\n    /**\n     * @private\n     * @type {Object<number, HTMLCanvasElement>}\n     */\n    this.canvas_ = {};\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color|string|null}\n     */\n    this.color_ = color;\n\n    /**\n     * @private\n     * @type {import(\"../ImageState.js\").default}\n     */\n    this.imageState_ = imageState === undefined ? ImageState.IDLE : imageState;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size|null}\n     */\n    this.size_ =\n      image && image.width && image.height ? [image.width, image.height] : null;\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.src_ = src;\n\n    /**\n     * @private\n     */\n    this.tainted_;\n\n    /**\n     * @private\n     * @type {Promise<void>|null}\n     */\n    this.ready_ = null;\n  }\n\n  /**\n   * @private\n   */\n  initializeImage_() {\n    this.image_ = new Image();\n    if (this.crossOrigin_ !== null) {\n      this.image_.crossOrigin = this.crossOrigin_;\n    }\n  }\n\n  /**\n   * @private\n   * @return {boolean} The image canvas is tainted.\n   */\n  isTainted_() {\n    if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {\n      if (!taintedTestContext) {\n        taintedTestContext = createCanvasContext2D(1, 1, undefined, {\n          willReadFrequently: true,\n        });\n      }\n      taintedTestContext.drawImage(this.image_, 0, 0);\n      try {\n        taintedTestContext.getImageData(0, 0, 1, 1);\n        this.tainted_ = false;\n      } catch {\n        taintedTestContext = null;\n        this.tainted_ = true;\n      }\n    }\n    return this.tainted_ === true;\n  }\n\n  /**\n   * @private\n   */\n  dispatchChangeEvent_() {\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * @private\n   */\n  handleImageError_() {\n    this.imageState_ = ImageState.ERROR;\n    this.dispatchChangeEvent_();\n  }\n\n  /**\n   * @private\n   */\n  handleImageLoad_() {\n    this.imageState_ = ImageState.LOADED;\n    this.size_ = [this.image_.width, this.image_.height];\n    this.dispatchChangeEvent_();\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {HTMLImageElement|HTMLCanvasElement|ImageBitmap} Image or Canvas element or image bitmap.\n   */\n  getImage(pixelRatio) {\n    if (!this.image_) {\n      this.initializeImage_();\n    }\n    this.replaceColor_(pixelRatio);\n    return this.canvas_[pixelRatio] ? this.canvas_[pixelRatio] : this.image_;\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Image or Canvas element.\n   */\n  getPixelRatio(pixelRatio) {\n    this.replaceColor_(pixelRatio);\n    return this.canvas_[pixelRatio] ? pixelRatio : 1;\n  }\n\n  /**\n   * @return {import(\"../ImageState.js\").default} Image state.\n   */\n  getImageState() {\n    return this.imageState_;\n  }\n\n  /**\n   * @return {HTMLImageElement|HTMLCanvasElement|ImageBitmap} Image element.\n   */\n  getHitDetectionImage() {\n    if (!this.image_) {\n      this.initializeImage_();\n    }\n    if (!this.hitDetectionImage_) {\n      if (this.isTainted_()) {\n        const width = this.size_[0];\n        const height = this.size_[1];\n        const context = createCanvasContext2D(width, height);\n        context.fillRect(0, 0, width, height);\n        this.hitDetectionImage_ = context.canvas;\n      } else {\n        this.hitDetectionImage_ = this.image_;\n      }\n    }\n    return this.hitDetectionImage_;\n  }\n\n  /**\n   * Get the size of the icon (in pixels).\n   * @return {import(\"../size.js\").Size} Image size.\n   */\n  getSize() {\n    return this.size_;\n  }\n\n  /**\n   * @return {string|undefined} Image src.\n   */\n  getSrc() {\n    return this.src_;\n  }\n\n  /**\n   * Load not yet loaded URI.\n   */\n  load() {\n    if (this.imageState_ !== ImageState.IDLE) {\n      return;\n    }\n    if (!this.image_) {\n      this.initializeImage_();\n    }\n\n    this.imageState_ = ImageState.LOADING;\n    try {\n      if (this.src_ !== undefined) {\n        /** @type {HTMLImageElement} */ (this.image_).src = this.src_;\n      }\n    } catch {\n      this.handleImageError_();\n    }\n    if (this.image_ instanceof HTMLImageElement) {\n      decodeFallback(this.image_, this.src_)\n        .then((image) => {\n          this.image_ = image;\n          this.handleImageLoad_();\n        })\n        .catch(this.handleImageError_.bind(this));\n    }\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @private\n   */\n  replaceColor_(pixelRatio) {\n    if (\n      !this.color_ ||\n      this.canvas_[pixelRatio] ||\n      this.imageState_ !== ImageState.LOADED\n    ) {\n      return;\n    }\n\n    const image = this.image_;\n    const ctx = createCanvasContext2D(\n      Math.ceil(image.width * pixelRatio),\n      Math.ceil(image.height * pixelRatio),\n    );\n    const canvas = ctx.canvas;\n\n    ctx.scale(pixelRatio, pixelRatio);\n    ctx.drawImage(image, 0, 0);\n\n    ctx.globalCompositeOperation = 'multiply';\n    ctx.fillStyle = asString(this.color_);\n    ctx.fillRect(0, 0, canvas.width / pixelRatio, canvas.height / pixelRatio);\n\n    ctx.globalCompositeOperation = 'destination-in';\n    ctx.drawImage(image, 0, 0);\n\n    this.canvas_[pixelRatio] = canvas;\n  }\n\n  /**\n   * @return {Promise<void>} Promise that resolves when the image is loaded.\n   */\n  ready() {\n    if (!this.ready_) {\n      this.ready_ = new Promise((resolve) => {\n        if (\n          this.imageState_ === ImageState.LOADED ||\n          this.imageState_ === ImageState.ERROR\n        ) {\n          resolve();\n        } else {\n          const onChange = () => {\n            if (\n              this.imageState_ === ImageState.LOADED ||\n              this.imageState_ === ImageState.ERROR\n            ) {\n              this.removeEventListener(EventType.CHANGE, onChange);\n              resolve();\n            }\n          };\n          this.addEventListener(EventType.CHANGE, onChange);\n        }\n      });\n    }\n    return this.ready_;\n  }\n}\n\n/**\n * @param {HTMLImageElement|HTMLCanvasElement|ImageBitmap|null} image Image.\n * @param {string|undefined} cacheKey Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default|undefined} imageState Image state.\n * @param {import(\"../color.js\").Color|string|null} color Color.\n * @param {boolean} [pattern] Also cache a `repeat` pattern with the icon image.\n * @return {IconImage} Icon image.\n */\nexport function get(image, cacheKey, crossOrigin, imageState, color, pattern) {\n  let iconImage =\n    cacheKey === undefined\n      ? undefined\n      : iconImageCache.get(cacheKey, crossOrigin, color);\n  if (!iconImage) {\n    iconImage = new IconImage(\n      image,\n      image && 'src' in image ? image.src || undefined : cacheKey,\n      crossOrigin,\n      imageState,\n      color,\n    );\n    iconImageCache.set(cacheKey, crossOrigin, color, iconImage, pattern);\n  }\n  if (\n    pattern &&\n    iconImage &&\n    !iconImageCache.getPattern(cacheKey, crossOrigin, color)\n  ) {\n    iconImageCache.set(cacheKey, crossOrigin, color, iconImage, pattern);\n  }\n  return iconImage;\n}\n\nexport default IconImage;\n","/**\n * @module ol/colorlike\n */\nimport ImageState from './ImageState.js';\nimport {toString} from './color.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {get as getIconImage} from './style/IconImage.js';\nimport {shared as iconCache} from './style/IconImageCache.js';\n\n/**\n * @typedef {Object} PatternDescriptor\n * @property {string} src Pattern image URL\n * @property {import(\"./color.js\").Color|string} [color] Color to tint the pattern with.\n * @property {import(\"./size.js\").Size} [size] Size of the desired slice from the pattern image.\n * Use this together with `offset` when the pattern image is a sprite sheet.\n * @property {import(\"./size.js\").Size} [offset] Offset of the desired slice from the pattern image.\n * Use this together with `size` when the pattern image is a sprite sheet.\n */\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, [CanvasPattern](https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern),\n * or [CanvasGradient](https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient). The origin for\n * patterns and 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 * @param {import(\"./color.js\").Color|ColorLike|PatternDescriptor|null} color Color.\n * @return {ColorLike|null} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n  if (!color) {\n    return null;\n  }\n  if (Array.isArray(color)) {\n    return toString(color);\n  }\n  if (typeof color === 'object' && 'src' in color) {\n    return asCanvasPattern(color);\n  }\n  return color;\n}\n\n/**\n * @param {PatternDescriptor} pattern Pattern descriptor.\n * @return {CanvasPattern|null} Canvas pattern or null if the pattern referenced in the\n * PatternDescriptor was not found in the icon image cache.\n */\nfunction asCanvasPattern(pattern) {\n  if (!pattern.offset || !pattern.size) {\n    return iconCache.getPattern(pattern.src, 'anonymous', pattern.color);\n  }\n\n  const cacheKey = pattern.src + ':' + pattern.offset;\n\n  const canvasPattern = iconCache.getPattern(\n    cacheKey,\n    undefined,\n    pattern.color,\n  );\n  if (canvasPattern) {\n    return canvasPattern;\n  }\n\n  const iconImage = iconCache.get(pattern.src, 'anonymous', null);\n  if (iconImage.getImageState() !== ImageState.LOADED) {\n    return null;\n  }\n  const patternCanvasContext = createCanvasContext2D(\n    pattern.size[0],\n    pattern.size[1],\n  );\n  patternCanvasContext.drawImage(\n    iconImage.getImage(1),\n    pattern.offset[0],\n    pattern.offset[1],\n    pattern.size[0],\n    pattern.size[1],\n    0,\n    0,\n    pattern.size[0],\n    pattern.size[1],\n  );\n  getIconImage(\n    patternCanvasContext.canvas,\n    cacheKey,\n    undefined,\n    ImageState.LOADED,\n    pattern.color,\n    true,\n  );\n  return iconCache.getPattern(cacheKey, undefined, pattern.color);\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   * @param {Function} hitDetectionRenderer Renderer.\n   * @param {number} [index] Render order index.\n   */\n  drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {}\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   * @param {number} [index] Render order index.\n   */\n  drawCircle(circleGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"../style/Style.js\").default} style Style.\n   * @param {number} [index] Render order index.\n   */\n  drawFeature(feature, style, index) {}\n\n  /**\n   * @param {import(\"../geom/GeometryCollection.js\").default} geometryCollectionGeometry Geometry collection.\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawGeometryCollection(geometryCollectionGeometry, feature, index) {}\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   * @param {number} [index] Render order index.\n   */\n  drawLineString(lineStringGeometry, feature, index) {}\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   * @param {number} [index] Render order index.\n   */\n  drawMultiLineString(multiLineStringGeometry, feature, index) {}\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   * @param {number} [index] Render order index.\n   */\n  drawMultiPoint(multiPointGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawMultiPolygon(multiPolygonGeometry, feature, index) {}\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   * @param {number} [index] Render order index.\n   */\n  drawPoint(pointGeometry, feature, index) {}\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   * @param {number} [index] Render order index.\n   */\n  drawPolygon(polygonGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/SimpleGeometry.js\").default|import(\"./Feature.js\").default} geometry Geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawText(geometry, feature, index) {}\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(\"../render/canvas.js\").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with a text style.\n   */\n  setImageStyle(imageStyle, declutterImageWithText) {}\n\n  /**\n   * @param {import(\"../style/Text.js\").default} textStyle Text style.\n   * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with an image style.\n   */\n  setTextStyle(textStyle, declutterImageWithText) {}\n}\n\nexport default VectorContext;\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array<string>} families Families.\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 * 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 * 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 * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\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 * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nconst fontRegEx = new RegExp(\n  [\n    '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n    '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n    '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n    '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n    '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n    '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n    '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n  ].join(''),\n  'i',\n);\n/** @type {Array<'style'|'variant'|'weight'|'size'|'lineHeight'|'family'>} */\nconst fontRegExMatchIndex = [\n  'style',\n  'variant',\n  'weight',\n  'size',\n  'lineHeight',\n  'family',\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} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport const getFontParameters = function (fontSpec) {\n  const match = fontSpec.match(fontRegEx);\n  if (!match) {\n    return null;\n  }\n  const style = /** @type {FontParameters} */ ({\n    lineHeight: 'normal',\n    size: '1.2em',\n    style: 'normal',\n    weight: 'normal',\n    variant: 'normal',\n  });\n  for (let i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n    const value = match[i + 1];\n    if (value !== undefined) {\n      style[fontRegExMatchIndex[i]] = value;\n    }\n  }\n  style.families = style.family.split(/,\\s?/);\n  return style;\n};\n","/**\n * @module ol/render/canvas\n */\nimport BaseObject from '../Object.js';\nimport {getFontParameters} from '../css.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport {WORKER_OFFSCREEN_CANVAS} from '../has.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {'Circle' | 'Image' | 'LineString' | 'Polygon' | 'Text' | 'Default'} BuilderType\n */\n\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle FillStyle.\n */\n\n/**\n * @typedef Label\n * @property {number} width Width.\n * @property {number} height Height.\n * @property {Array<string|number>} contextInstructions ContextInstructions.\n */\n\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle] Current FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle] Current StrokeStyle.\n * @property {CanvasLineCap} [currentLineCap] Current LineCap.\n * @property {Array<number>} currentLineDash Current LineDash.\n * @property {number} [currentLineDashOffset] Current LineDashOffset.\n * @property {CanvasLineJoin} [currentLineJoin] Current LineJoin.\n * @property {number} [currentLineWidth] Current LineWidth.\n * @property {number} [currentMiterLimit] Current MiterLimit.\n * @property {number} [lastStroke] Last stroke.\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle] FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle] StrokeStyle.\n * @property {CanvasLineCap} [lineCap] LineCap.\n * @property {Array<number>} lineDash LineDash.\n * @property {number} [lineDashOffset] LineDashOffset.\n * @property {CanvasLineJoin} [lineJoin] LineJoin.\n * @property {number} [lineWidth] LineWidth.\n * @property {number} [miterLimit] MiterLimit.\n * @property {number} [fillPatternScale] Fill pattern scale.\n */\n\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap LineCap.\n * @property {Array<number>} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} lineWidth LineWidth.\n * @property {number} miterLimit MiterLimit.\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle StrokeStyle.\n */\n\n/**\n * @typedef {Object} TextState\n * @property {string} font Font.\n * @property {CanvasTextAlign} [textAlign] TextAlign.\n * @property {number} [repeat] Repeat.\n * @property {import(\"../style/Text.js\").TextJustify} [justify] Justify.\n * @property {CanvasTextBaseline} textBaseline TextBaseline.\n * @property {import(\"../style/Text.js\").TextPlacement} [placement] Placement.\n * @property {number} [maxAngle] MaxAngle.\n * @property {boolean} [overflow] Overflow.\n * @property {import(\"../style/Fill.js\").default} [backgroundFill] BackgroundFill.\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke] BackgroundStroke.\n * @property {import(\"../size.js\").Size} [scale] Scale.\n * @property {Array<number>} [padding] Padding.\n */\n\n/**\n * @typedef {Object} SerializableInstructions\n * @property {Array<*>} instructions The rendering instructions.\n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.\n * @property {Array<number>} coordinates The array of all coordinates.\n * @property {!Object<string, TextState>} [textStates] The text states (decluttering).\n * @property {!Object<string, FillState>} [fillStates] The fill states (decluttering).\n * @property {!Object<string, StrokeState>} [strokeStates] The stroke states (decluttering).\n */\n\n/**\n * @typedef {Object<number, import(\"./canvas/Executor.js\").ReplayImageOrLabelArgs>} DeclutterImageWithText\n */\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultFont = '10px sans-serif';\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultFillStyle = '#000';\n\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport const defaultLineCap = 'round';\n\n/**\n * @const\n * @type {Array<number>}\n */\nexport const defaultLineDash = [];\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultLineDashOffset = 0;\n\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport const defaultLineJoin = 'round';\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultMiterLimit = 10;\n\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport const defaultStrokeStyle = '#000';\n\n/**\n * @const\n * @type {CanvasTextAlign}\n */\nexport const defaultTextAlign = 'center';\n\n/**\n * @const\n * @type {CanvasTextBaseline}\n */\nexport const defaultTextBaseline = 'middle';\n\n/**\n * @const\n * @type {Array<number>}\n */\nexport const defaultPadding = [0, 0, 0, 0];\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultLineWidth = 1;\n\n/**\n * @type {BaseObject}\n */\nexport const checkedFonts = new BaseObject();\n\n/**\n * @type {CanvasRenderingContext2D}\n */\nlet measureContext = null;\n\n/**\n * @type {string}\n */\nlet measureFont;\n\n/**\n * @type {!Object<string, number>}\n */\nexport const textHeights = {};\n\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport const registerFont = (function () {\n  const retries = 100;\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    let available = true;\n    for (let i = 0; i < len; ++i) {\n      const referenceFont = referenceFonts[i];\n      referenceWidth = measureTextWidth(\n        fontStyle + ' ' + fontWeight + ' ' + size + referenceFont,\n        text,\n      );\n      if (fontFamily != referenceFont) {\n        const width = measureTextWidth(\n          fontStyle +\n            ' ' +\n            fontWeight +\n            ' ' +\n            size +\n            fontFamily +\n            ',' +\n            referenceFont,\n          text,\n        );\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    const fonts = checkedFonts.getKeys();\n    for (let i = 0, ii = fonts.length; i < ii; ++i) {\n      const font = fonts[i];\n      if (checkedFonts.get(font) < retries) {\n        const [style, weight, family] = font.split('\\n');\n        if (isAvailable(style, weight, family)) {\n          clear(textHeights);\n          // Make sure that loaded fonts are picked up by Safari\n          measureContext = null;\n          measureFont = undefined;\n          checkedFonts.set(font, retries);\n        } else {\n          checkedFonts.set(font, checkedFonts.get(font) + 1, true);\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 (checkedFonts.get(key) === undefined) {\n        checkedFonts.set(key, retries, true);\n        if (!isAvailable(font.style, font.weight, family)) {\n          checkedFonts.set(key, 0, true);\n          if (interval === undefined) {\n            interval = setInterval(check, 32);\n          }\n        }\n      }\n    }\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 measureElement;\n  return function (fontSpec) {\n    let height = textHeights[fontSpec];\n    if (height == undefined) {\n      if (WORKER_OFFSCREEN_CANVAS) {\n        const font = getFontParameters(fontSpec);\n        const metrics = measureText(fontSpec, 'Žg');\n        const lineHeight = isNaN(Number(font.lineHeight))\n          ? 1.2\n          : Number(font.lineHeight);\n        height =\n          lineHeight *\n          (metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n      } else {\n        if (!measureElement) {\n          measureElement = document.createElement('div');\n          measureElement.innerHTML = 'M';\n          measureElement.style.minHeight = '0';\n          measureElement.style.maxHeight = 'none';\n          measureElement.style.height = 'auto';\n          measureElement.style.padding = '0';\n          measureElement.style.border = 'none';\n          measureElement.style.position = 'absolute';\n          measureElement.style.display = 'block';\n          measureElement.style.left = '-99999px';\n        }\n        measureElement.style.font = fontSpec;\n        document.body.appendChild(measureElement);\n        height = measureElement.offsetHeight;\n        document.body.removeChild(measureElement);\n      }\n      textHeights[fontSpec] = height;\n    }\n    return height;\n  };\n})();\n\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {TextMetrics} Text metrics.\n */\nfunction measureText(font, text) {\n  if (!measureContext) {\n    measureContext = createCanvasContext2D(1, 1);\n  }\n  if (font != measureFont) {\n    measureContext.font = font;\n    measureFont = measureContext.font;\n  }\n  return measureContext.measureText(text);\n}\n\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n  return measureText(font, text).width;\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<string, number>} cache A lookup of cached widths by text.\n * @return {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n  if (text in cache) {\n    return cache[text];\n  }\n  const width = text\n    .split('\\n')\n    .reduce((prev, curr) => Math.max(prev, measureTextWidth(font, curr)), 0);\n  cache[text] = width;\n  return width;\n}\n\n/**\n * @param {TextState} baseStyle Base style.\n * @param {Array<string>} chunks Text chunks to measure.\n * @return {{width: number, height: number, widths: Array<number>, heights: Array<number>, lineWidths: Array<number>}}} Text metrics.\n */\nexport function getTextDimensions(baseStyle, chunks) {\n  const widths = [];\n  const heights = [];\n  const lineWidths = [];\n  let width = 0;\n  let lineWidth = 0;\n  let height = 0;\n  let lineHeight = 0;\n  for (let i = 0, ii = chunks.length; i <= ii; i += 2) {\n    const text = chunks[i];\n    if (text === '\\n' || i === ii) {\n      width = Math.max(width, lineWidth);\n      lineWidths.push(lineWidth);\n      lineWidth = 0;\n      height += lineHeight;\n      lineHeight = 0;\n      continue;\n    }\n    const font = chunks[i + 1] || baseStyle.font;\n    const currentWidth = measureTextWidth(font, text);\n    widths.push(currentWidth);\n    lineWidth += currentWidth;\n    const currentHeight = measureTextHeight(font);\n    heights.push(currentHeight);\n    lineHeight = Math.max(lineHeight, currentHeight);\n  }\n  return {width, height, widths, heights, lineWidths};\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/**\n * @param {CanvasRenderingContext2D|import(\"../render/canvas/ZIndexContext.js\").ZIndexContextProxy} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {Label|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} labelOrImage Label.\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 {import(\"../size.js\").Size} scale Scale.\n */\nexport function drawImageOrLabel(\n  context,\n  transform,\n  opacity,\n  labelOrImage,\n  originX,\n  originY,\n  w,\n  h,\n  x,\n  y,\n  scale,\n) {\n  context.save();\n\n  if (opacity !== 1) {\n    if (context.globalAlpha === undefined) {\n      context.globalAlpha = (context) => (context.globalAlpha *= opacity);\n    } else {\n      context.globalAlpha *= opacity;\n    }\n  }\n  if (transform) {\n    context.transform.apply(context, transform);\n  }\n\n  if (/** @type {*} */ (labelOrImage).contextInstructions) {\n    // label\n    context.translate(x, y);\n    context.scale(scale[0], scale[1]);\n    executeLabelInstructions(/** @type {Label} */ (labelOrImage), context);\n  } else if (scale[0] < 0 || scale[1] < 0) {\n    // flipped image\n    context.translate(x, y);\n    context.scale(scale[0], scale[1]);\n    context.drawImage(\n      /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (\n        labelOrImage\n      ),\n      originX,\n      originY,\n      w,\n      h,\n      0,\n      0,\n      w,\n      h,\n    );\n  } else {\n    // if image not flipped translate and scale can be avoided\n    context.drawImage(\n      /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (\n        labelOrImage\n      ),\n      originX,\n      originY,\n      w,\n      h,\n      x,\n      y,\n      w * scale[0],\n      h * scale[1],\n    );\n  }\n\n  context.restore();\n}\n\n/**\n * @param {Label} label Label.\n * @param {CanvasRenderingContext2D} context Context.\n */\nfunction executeLabelInstructions(label, context) {\n  const contextInstructions = label.contextInstructions;\n  for (let i = 0, ii = contextInstructions.length; i < ii; i += 2) {\n    if (Array.isArray(contextInstructions[i + 1])) {\n      context[contextInstructions[i]].apply(\n        context,\n        contextInstructions[i + 1],\n      );\n    } else {\n      context[contextInstructions[i]] = contextInstructions[i + 1];\n    }\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 {transformGeom2D} from '../../geom/SimpleGeometry.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {toFixed} from '../../math.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../../transform.js';\nimport VectorContext from '../VectorContext.js';\nimport {\n  defaultFillStyle,\n  defaultFont,\n  defaultLineCap,\n  defaultLineDash,\n  defaultLineDashOffset,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultStrokeStyle,\n  defaultTextAlign,\n  defaultTextBaseline,\n} from '../canvas.js';\n\n/**\n * @classdesc\n * A concrete subclass of {@link module:ol/render/VectorContext~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} [squaredTolerance] Optional squared tolerance for simplification.\n   * @param {import(\"../../proj.js\").TransformFunction} [userTransform] Transform from user to view projection.\n   */\n  constructor(\n    context,\n    pixelRatio,\n    extent,\n    transform,\n    viewRotation,\n    squaredTolerance,\n    userTransform,\n  ) {\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.transformRotation_ = transform\n      ? toFixed(Math.atan2(transform[1], transform[0]), 10)\n      : 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.viewRotation_ = viewRotation;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.squaredTolerance_ = squaredTolerance;\n\n    /**\n     * @private\n     * @type {import(\"../../proj.js\").TransformFunction}\n     */\n    this.userTransform_ = 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 {import('../../DataTile.js').ImageLike}\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 {import(\"../../size.js\").Size}\n     */\n    this.imageScale_ = [0, 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 {import(\"../../size.js\").Size}\n     */\n    this.textScale_ = [0, 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<number>}\n     */\n    this.pixelCoordinates_ = [];\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.tmpLocalTransform_ = createTransform();\n  }\n\n  /**\n   * @param {Array<number>} 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,\n      offset,\n      end,\n      stride,\n      this.transform_,\n      this.pixelCoordinates_,\n    );\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.transformRotation_ === 0) {\n      rotation -= this.viewRotation_;\n    }\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 (\n        rotation !== 0 ||\n        this.imageScale_[0] != 1 ||\n        this.imageScale_[1] != 1\n      ) {\n        const centerX = x + this.imageAnchorX_;\n        const centerY = y + this.imageAnchorY_;\n        composeTransform(\n          localTransform,\n          centerX,\n          centerY,\n          1,\n          1,\n          rotation,\n          -centerX,\n          -centerY,\n        );\n        context.save();\n        context.transform.apply(context, localTransform);\n        context.translate(centerX, centerY);\n        context.scale(this.imageScale_[0], this.imageScale_[1]);\n        context.drawImage(\n          this.image_,\n          this.imageOriginX_,\n          this.imageOriginY_,\n          this.imageWidth_,\n          this.imageHeight_,\n          -this.imageAnchorX_,\n          -this.imageAnchorY_,\n          this.imageWidth_,\n          this.imageHeight_,\n        );\n        context.restore();\n      } else {\n        context.drawImage(\n          this.image_,\n          this.imageOriginX_,\n          this.imageOriginY_,\n          this.imageWidth_,\n          this.imageHeight_,\n          x,\n          y,\n          this.imageWidth_,\n          this.imageHeight_,\n        );\n      }\n    }\n    if (this.imageOpacity_ != 1) {\n      context.globalAlpha = alpha;\n    }\n  }\n\n  /**\n   * @param {Array<number>} 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,\n      offset,\n      end,\n      stride,\n      this.transform_,\n      this.pixelCoordinates_,\n    );\n    const context = this.context_;\n    let rotation = this.textRotation_;\n    if (this.transformRotation_ === 0) {\n      rotation -= this.viewRotation_;\n    }\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 (\n        rotation !== 0 ||\n        this.textScale_[0] != 1 ||\n        this.textScale_[1] != 1\n      ) {\n        context.save();\n        context.translate(x - this.textOffsetX_, y - this.textOffsetY_);\n        context.rotate(rotation);\n        context.translate(this.textOffsetX_, this.textOffsetY_);\n        context.scale(this.textScale_[0], this.textScale_[1]);\n        if (this.textStrokeState_) {\n          context.strokeText(this.text_, 0, 0);\n        }\n        if (this.textFillState_) {\n          context.fillText(this.text_, 0, 0);\n        }\n        context.restore();\n      } else {\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    }\n  }\n\n  /**\n   * @param {Array<number>} 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,\n      offset,\n      end,\n      stride,\n      this.transform_,\n      this.pixelCoordinates_,\n    );\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<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {Array<number>} 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_(\n        flatCoordinates,\n        offset,\n        ends[i],\n        stride,\n        true,\n      );\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   * @api\n   * @override\n   */\n  drawCircle(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/Circle.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\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,\n        this.transform_,\n        this.pixelCoordinates_,\n      );\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],\n        pixelCoordinates[1],\n        radius,\n        0,\n        2 * Math.PI,\n      );\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   * @api\n   * @override\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~CanvasImmediateRenderer#setStyle renderer.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   * @api\n   * @override\n   */\n  drawGeometry(geometry) {\n    const type = geometry.getType();\n    switch (type) {\n      case 'Point':\n        this.drawPoint(\n          /** @type {import(\"../../geom/Point.js\").default} */ (geometry),\n        );\n        break;\n      case 'LineString':\n        this.drawLineString(\n          /** @type {import(\"../../geom/LineString.js\").default} */ (geometry),\n        );\n        break;\n      case 'Polygon':\n        this.drawPolygon(\n          /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry),\n        );\n        break;\n      case 'MultiPoint':\n        this.drawMultiPoint(\n          /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry),\n        );\n        break;\n      case 'MultiLineString':\n        this.drawMultiLineString(\n          /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n            geometry\n          ),\n        );\n        break;\n      case 'MultiPolygon':\n        this.drawMultiPolygon(\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ),\n        );\n        break;\n      case 'GeometryCollection':\n        this.drawGeometryCollection(\n          /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (\n            geometry\n          ),\n        );\n        break;\n      case 'Circle':\n        this.drawCircle(\n          /** @type {import(\"../../geom/Circle.js\").default} */ (geometry),\n        );\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   * @api\n   * @override\n   */\n  drawFeature(feature, style) {\n    const geometry = style.getGeometryFunction()(feature);\n    if (!geometry) {\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} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\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} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\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} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\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_(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        geometry.getStride(),\n        false,\n      );\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 =\n        /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n          geometry.simplifyTransformed(\n            this.squaredTolerance_,\n            this.userTransform_,\n          )\n        );\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<number>} */ (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_(\n          flatCoordinates,\n          offset,\n          ends[i],\n          stride,\n          false,\n        );\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} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\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_(\n        geometry.getOrientedFlatCoordinates(),\n        0,\n        /** @type {Array<number>} */ (geometry.getEnds()),\n        geometry.getStride(),\n      );\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} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\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      context.setLineDash(strokeState.lineDash);\n      context.lineDashOffset = strokeState.lineDashOffset;\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 (!equals(contextStrokeState.lineDash, strokeState.lineDash)) {\n        context.setLineDash(\n          (contextStrokeState.lineDash = strokeState.lineDash),\n        );\n      }\n      if (contextStrokeState.lineDashOffset != strokeState.lineDashOffset) {\n        contextStrokeState.lineDashOffset = strokeState.lineDashOffset;\n        context.lineDashOffset = strokeState.lineDashOffset;\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\n      : defaultTextAlign;\n    if (!contextTextState) {\n      context.font = textState.font;\n      context.textAlign = textAlign;\n      context.textBaseline = 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 = textAlign;\n        context.textAlign = textAlign;\n      }\n      if (contextTextState.textBaseline != textState.textBaseline) {\n        contextTextState.textBaseline = textState.textBaseline;\n        context.textBaseline = 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(\n          fillStyleColor ? fillStyleColor : defaultFillStyle,\n        ),\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      const lineDash = strokeStyleLineDash\n        ? strokeStyleLineDash\n        : defaultLineDash;\n      this.strokeState_ = {\n        lineCap:\n          strokeStyleLineCap !== undefined\n            ? strokeStyleLineCap\n            : defaultLineCap,\n        lineDash:\n          this.pixelRatio_ === 1\n            ? lineDash\n            : lineDash.map((n) => n * this.pixelRatio_),\n        lineDashOffset:\n          (strokeStyleLineDashOffset\n            ? strokeStyleLineDashOffset\n            : defaultLineDashOffset) * this.pixelRatio_,\n        lineJoin:\n          strokeStyleLineJoin !== undefined\n            ? strokeStyleLineJoin\n            : defaultLineJoin,\n        lineWidth:\n          (strokeStyleWidth !== undefined\n            ? strokeStyleWidth\n            : defaultLineWidth) * this.pixelRatio_,\n        miterLimit:\n          strokeStyleMiterLimit !== undefined\n            ? strokeStyleMiterLimit\n            : defaultMiterLimit,\n        strokeStyle: asColorLike(\n          strokeStyleColor ? strokeStyleColor : defaultStrokeStyle,\n        ),\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    let imageSize;\n    if (!imageStyle || !(imageSize = imageStyle.getSize())) {\n      this.image_ = null;\n      return;\n    }\n    const imagePixelRatio = imageStyle.getPixelRatio(this.pixelRatio_);\n    const imageAnchor = imageStyle.getAnchor();\n    const imageOrigin = imageStyle.getOrigin();\n    this.image_ = imageStyle.getImage(this.pixelRatio_);\n    this.imageAnchorX_ = imageAnchor[0] * imagePixelRatio;\n    this.imageAnchorY_ = imageAnchor[1] * imagePixelRatio;\n    this.imageHeight_ = imageSize[1] * imagePixelRatio;\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    const imageScale = imageStyle.getScaleArray();\n    this.imageScale_ = [\n      (imageScale[0] * this.pixelRatio_) / imagePixelRatio,\n      (imageScale[1] * this.pixelRatio_) / imagePixelRatio,\n    ];\n    this.imageWidth_ = imageSize[0] * imagePixelRatio;\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(\n            textFillStyleColor ? textFillStyleColor : defaultFillStyle,\n          ),\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 =\n          textStrokeStyle.getLineDashOffset();\n        const textStrokeStyleLineJoin = textStrokeStyle.getLineJoin();\n        const textStrokeStyleWidth = textStrokeStyle.getWidth();\n        const textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit();\n        this.textStrokeState_ = {\n          lineCap:\n            textStrokeStyleLineCap !== undefined\n              ? textStrokeStyleLineCap\n              : defaultLineCap,\n          lineDash: textStrokeStyleLineDash\n            ? textStrokeStyleLineDash\n            : defaultLineDash,\n          lineDashOffset: textStrokeStyleLineDashOffset\n            ? textStrokeStyleLineDashOffset\n            : defaultLineDashOffset,\n          lineJoin:\n            textStrokeStyleLineJoin !== undefined\n              ? textStrokeStyleLineJoin\n              : defaultLineJoin,\n          lineWidth:\n            textStrokeStyleWidth !== undefined\n              ? textStrokeStyleWidth\n              : defaultLineWidth,\n          miterLimit:\n            textStrokeStyleMiterLimit !== undefined\n              ? textStrokeStyleMiterLimit\n              : defaultMiterLimit,\n          strokeStyle: asColorLike(\n            textStrokeStyleColor ? textStrokeStyleColor : defaultStrokeStyle,\n          ),\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.getScaleArray();\n      const textText = textStyle.getText();\n      const textTextAlign = textStyle.getTextAlign();\n      const textTextBaseline = textStyle.getTextBaseline();\n      this.textState_ = {\n        font: textFont !== undefined ? textFont : defaultFont,\n        textAlign:\n          textTextAlign !== undefined ? textTextAlign : defaultTextAlign,\n        textBaseline:\n          textTextBaseline !== undefined\n            ? textTextBaseline\n            : defaultTextBaseline,\n      };\n      this.text_ =\n        textText !== undefined\n          ? Array.isArray(textText)\n            ? textText.reduce((acc, t, i) => (acc += i % 2 ? ' ' : t), '')\n            : textText\n          : '';\n      this.textOffsetX_ =\n        textOffsetX !== undefined ? this.pixelRatio_ * textOffsetX : 0;\n      this.textOffsetY_ =\n        textOffsetY !== undefined ? this.pixelRatio_ * textOffsetY : 0;\n      this.textRotateWithView_ =\n        textRotateWithView !== undefined ? textRotateWithView : false;\n      this.textRotation_ = textRotation !== undefined ? textRotation : 0;\n      this.textScale_ = [\n        this.pixelRatio_ * textScale[0],\n        this.pixelRatio_ * textScale[1],\n      ];\n    }\n  }\n}\n\nexport default CanvasImmediateRenderer;\n","/**\n * @module ol/renderer/vector\n */\nimport ImageState from '../ImageState.js';\nimport {getUid} from '../util.js';\n\n/**\n * Feature callback. The callback will be called with three arguments. The first\n * argument is one {@link module:ol/Feature~Feature feature} or {@link module:ol/render/Feature~RenderFeature render feature}\n * at the pixel, the second is the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. The third is the {@link module:ol/geom/SimpleGeometry~SimpleGeometry} of the feature. For features\n * with a GeometryCollection geometry, it will be the first detected geometry from the collection.\n * @template T\n * @typedef {function(import(\"../Feature.js\").FeatureLike, import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>, import(\"../geom/SimpleGeometry.js\").default): T} FeatureCallback\n */\n\n/**\n * Tolerance for geometry simplification in device pixels.\n * @type {number}\n */\nconst SIMPLIFY_TOLERANCE = 0.5;\n\n/**\n * @const\n * @type {Object<import(\"../geom/Geometry.js\").Type,\n *                function(import(\"../render/canvas/BuilderGroup.js\").default, import(\"../geom/Geometry.js\").default,\n *                         import(\"../style/Style.js\").default, Object): void>}\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 * @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 * @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 * @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 * @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 * @param {number} [index] Render order index.\n */\nfunction renderCircleGeometry(builderGroup, geometry, style, feature, index) {\n  const fillStyle = style.getFill();\n  const strokeStyle = style.getStroke();\n  if (fillStyle || strokeStyle) {\n    const circleReplay = builderGroup.getBuilder(style.getZIndex(), 'Circle');\n    circleReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n    circleReplay.drawCircle(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature);\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} [transform] Transform from user to view projection.\n * @param {boolean} [declutter] Enable decluttering.\n * @param {number} [index] Render order index..\n * @return {boolean} `true` if style is loading.\n */\nexport function renderFeature(\n  replayGroup,\n  feature,\n  style,\n  squaredTolerance,\n  listener,\n  transform,\n  declutter,\n  index,\n) {\n  const loadingPromises = [];\n  const imageStyle = style.getImage();\n  if (imageStyle) {\n    let loading = true;\n    const imageState = imageStyle.getImageState();\n    if (imageState == ImageState.LOADED || imageState == ImageState.ERROR) {\n      loading = false;\n    } else {\n      if (imageState == ImageState.IDLE) {\n        imageStyle.load();\n      }\n    }\n    if (loading) {\n      loadingPromises.push(imageStyle.ready());\n    }\n  }\n  const fillStyle = style.getFill();\n  if (fillStyle && fillStyle.loading()) {\n    loadingPromises.push(fillStyle.ready());\n  }\n  const loading = loadingPromises.length > 0;\n  if (loading) {\n    Promise.all(loadingPromises).then(() => listener(null));\n  }\n  renderFeatureInternal(\n    replayGroup,\n    feature,\n    style,\n    squaredTolerance,\n    transform,\n    declutter,\n    index,\n  );\n\n  return loading;\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} [transform] Optional transform function.\n * @param {boolean} [declutter] Enable decluttering.\n * @param {number} [index] Render order index..\n */\nfunction renderFeatureInternal(\n  replayGroup,\n  feature,\n  style,\n  squaredTolerance,\n  transform,\n  declutter,\n  index,\n) {\n  const geometry = style.getGeometryFunction()(feature);\n  if (!geometry) {\n    return;\n  }\n  const simplifiedGeometry = geometry.simplifyTransformed(\n    squaredTolerance,\n    transform,\n  );\n  const renderer = style.getRenderer();\n  if (renderer) {\n    renderGeometry(replayGroup, simplifiedGeometry, style, feature, index);\n  } else {\n    const geometryRenderer = GEOMETRY_RENDERERS[simplifiedGeometry.getType()];\n    geometryRenderer(\n      replayGroup,\n      simplifiedGeometry,\n      style,\n      feature,\n      index,\n      declutter,\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 * @param {number} [index] Render order index.\n */\nfunction renderGeometry(replayGroup, geometry, style, feature, index) {\n  if (geometry.getType() == 'GeometryCollection') {\n    const geometries =\n      /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n        geometry\n      ).getGeometries();\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      renderGeometry(replayGroup, geometries[i], style, feature, index);\n    }\n    return;\n  }\n  const replay = replayGroup.getBuilder(style.getZIndex(), 'Default');\n  replay.drawCustom(\n    /** @type {import(\"../geom/SimpleGeometry.js\").default} */ (geometry),\n    feature,\n    style.getRenderer(),\n    style.getHitDetectionRenderer(),\n    index,\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 * @param {import(\"../render/canvas/BuilderGroup.js\").default} [declutterBuilderGroup] Builder for decluttering.\n * @param {number} [index] Render order index.\n */\nfunction renderGeometryCollectionGeometry(\n  replayGroup,\n  geometry,\n  style,\n  feature,\n  declutterBuilderGroup,\n  index,\n) {\n  const geometries = geometry.getGeometriesArray();\n  let i, ii;\n  for (i = 0, ii = geometries.length; i < ii; ++i) {\n    const geometryRenderer = GEOMETRY_RENDERERS[geometries[i].getType()];\n    geometryRenderer(\n      replayGroup,\n      geometries[i],\n      style,\n      feature,\n      declutterBuilderGroup,\n      index,\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 * @param {number} [index] Render order index.\n */\nfunction renderLineStringGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n) {\n  const strokeStyle = style.getStroke();\n  if (strokeStyle) {\n    const lineStringReplay = builderGroup.getBuilder(\n      style.getZIndex(),\n      'LineString',\n    );\n    lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n    lineStringReplay.drawLineString(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\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 * @param {number} [index] Render order index.\n */\nfunction renderMultiLineStringGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n) {\n  const strokeStyle = style.getStroke();\n  if (strokeStyle) {\n    const lineStringReplay = builderGroup.getBuilder(\n      style.getZIndex(),\n      'LineString',\n    );\n    lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n    lineStringReplay.drawMultiLineString(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\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 * @param {number} [index] Render order index.\n */\nfunction renderMultiPolygonGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n) {\n  const fillStyle = style.getFill();\n  const strokeStyle = style.getStroke();\n  if (strokeStyle || fillStyle) {\n    const polygonReplay = builderGroup.getBuilder(style.getZIndex(), 'Polygon');\n    polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n    polygonReplay.drawMultiPolygon(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\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 * @param {number} [index] Render order index.\n * @param {boolean} [declutter] Enable decluttering.\n */\nfunction renderPointGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n  declutter,\n) {\n  const imageStyle = style.getImage();\n  const textStyle = style.getText();\n  const hasText = textStyle && textStyle.getText();\n  /** @type {import(\"../render/canvas.js\").DeclutterImageWithText} */\n  const declutterImageWithText =\n    declutter && imageStyle && hasText ? {} : undefined;\n  if (imageStyle) {\n    if (imageStyle.getImageState() != ImageState.LOADED) {\n      return;\n    }\n    const imageReplay = builderGroup.getBuilder(style.getZIndex(), 'Image');\n    imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n    imageReplay.drawPoint(geometry, feature, index);\n  }\n  if (hasText) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle, declutterImageWithText);\n    textReplay.drawText(geometry, feature, index);\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 * @param {number} [index] Render order index.\n * @param {boolean} [declutter] Enable decluttering.\n */\nfunction renderMultiPointGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n  declutter,\n) {\n  const imageStyle = style.getImage();\n  const hasImage = imageStyle && imageStyle.getOpacity() !== 0;\n  const textStyle = style.getText();\n  const hasText = textStyle && textStyle.getText();\n  /** @type {import(\"../render/canvas.js\").DeclutterImageWithText} */\n  const declutterImageWithText =\n    declutter && hasImage && hasText ? {} : undefined;\n  if (hasImage) {\n    if (imageStyle.getImageState() != ImageState.LOADED) {\n      return;\n    }\n    const imageReplay = builderGroup.getBuilder(style.getZIndex(), 'Image');\n    imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n    imageReplay.drawMultiPoint(geometry, feature, index);\n  }\n  if (hasText) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle, declutterImageWithText);\n    textReplay.drawText(geometry, feature, index);\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 * @param {number} [index] Render order index.\n */\nfunction renderPolygonGeometry(builderGroup, geometry, style, feature, index) {\n  const fillStyle = style.getFill();\n  const strokeStyle = style.getStroke();\n  if (fillStyle || strokeStyle) {\n    const polygonReplay = builderGroup.getBuilder(style.getZIndex(), 'Polygon');\n    polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n    polygonReplay.drawPolygon(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n","/**\n * @module ol/render\n */\nimport {DEVICE_PIXEL_RATIO} from './has.js';\nimport {getTransformFromProjections, getUserProjection} from './proj.js';\nimport CanvasImmediateRenderer from './render/canvas/Immediate.js';\nimport {getSquaredTolerance} from './renderer/vector.js';\nimport {\n  apply as applyTransform,\n  create as createTransform,\n  multiply as multiplyTransform,\n  scale as scaleTransform,\n} from './transform.js';\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 Feature.\n * @property {import(\"./geom/SimpleGeometry.js\").default} geometry 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 * A function to be used when sorting features before rendering.\n * It takes two instances of {@link module:ol/Feature~Feature} or\n * {@link module:ol/render/Feature~RenderFeature} and returns a `{number}`.\n *\n * @typedef {function(import(\"./Feature.js\").FeatureLike, import(\"./Feature.js\").FeatureLike):number} OrderFunction\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 * 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.js';\n * import Fill from 'ol/style/Fill.js';\n * import Polygon from 'ol/geom/Polygon.js';\n *\n * const canvas = document.createElement('canvas');\n * const render = toContext(\n *     canvas.getContext('2d'),\n *     {size: [100, 100]}\n * );\n * render.setFillStrokeStyle(new Fill({ color: blue }));\n * render.drawPolygon(\n *     new Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]])\n * );\n * ```\n *\n * @param {CanvasRenderingContext2D} context Canvas context.\n * @param {ToContextOptions} [options] Options.\n * @return {CanvasImmediateRenderer} Canvas Immediate.\n * @api\n */\nexport function toContext(context, options) {\n  const canvas = context.canvas;\n  options = options ? 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 * @return {CanvasImmediateRenderer} Vector context.\n * @api\n */\nexport function getVectorContext(event) {\n  if (!(event.context instanceof CanvasRenderingContext2D)) {\n    throw new Error('Only works for render events from Canvas 2D layers');\n  }\n\n  // canvas may be at a different pixel ratio than frameState.pixelRatio\n  const a = event.inversePixelTransform[0];\n  const b = event.inversePixelTransform[1];\n  const canvasPixelRatio = Math.sqrt(a * a + b * b);\n  const frameState = event.frameState;\n  const transform = multiplyTransform(\n    event.inversePixelTransform.slice(),\n    frameState.coordinateToPixelTransform,\n  );\n  const squaredTolerance = getSquaredTolerance(\n    frameState.viewState.resolution,\n    canvasPixelRatio,\n  );\n  let userTransform;\n  const userProjection = getUserProjection();\n  if (userProjection) {\n    userTransform = getTransformFromProjections(\n      userProjection,\n      frameState.viewState.projection,\n    );\n  }\n\n  return new CanvasImmediateRenderer(\n    event.context,\n    canvasPixelRatio,\n    frameState.extent,\n    transform,\n    frameState.viewState.rotation,\n    squaredTolerance,\n    userTransform,\n  );\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 * @return {import(\"./pixel.js\").Pixel} Pixel on the event's canvas context.\n * @api\n */\nexport function getRenderPixel(event, pixel) {\n  return applyTransform(event.inversePixelTransform, pixel.slice(0));\n}\n","/**\n * @module ol/featureloader\n */\nimport {VOID} from './functions.js';\n\n/**\n *\n * @type {boolean}\n * @private\n */\nlet withCredentials = false;\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * load features.\n *\n * This function takes up to 5 arguments. These are an {@link module:ol/extent~Extent} representing\n * the area to be loaded, a `{number}` representing the resolution (map units per pixel), a\n * {@link module:ol/proj/Projection~Projection} for the projection, an optional success callback that should get\n * the loaded features passed as an argument and an optional failure callback with no arguments. If\n * the callbacks are not used, the corresponding vector source will not fire `'featuresloadend'` and\n * `'featuresloaderror'` events. `this` within the function is bound to the\n * {@link module:ol/source/Vector~VectorSource} it's called from.\n *\n * The function is responsible for loading the features and adding them to the\n * source.\n *\n * @template {import(\"./Feature.js\").FeatureLike} [FeatureType=import(\"./Feature.js\").FeatureLike]\n * @typedef {(\n *           extent: import(\"./extent.js\").Extent,\n *           resolution: number,\n *           projection: import(\"./proj/Projection.js\").default,\n *           success?: (features: Array<FeatureType>) => void,\n *           failure?: () => void) => void} FeatureLoader\n * @api\n */\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * get the url to load features from.\n *\n * This function takes an {@link module:ol/extent~Extent} representing the area\n * to be loaded, a `{number}` representing the resolution (map units per pixel)\n * and an {@link module:ol/proj/Projection~Projection} for the projection  as\n * arguments and returns a `{string}` representing the URL.\n * @typedef {function(import(\"./extent.js\").Extent, number, import(\"./proj/Projection.js\").default): string} FeatureUrlFunction\n * @api\n */\n\n/**\n * @template {import(\"./Feature.js\").FeatureLike} [FeatureType=import(\"./Feature.js\").default]\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default<FeatureType>} format Feature format.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array<FeatureType>, import(\"./proj/Projection.js\").default): void} success Success\n *      Function called with the loaded features and optionally with the data projection.\n * @param {function(): void} failure Failure\n *      Function called when loading failed.\n */\nexport function loadFeaturesXhr(\n  url,\n  format,\n  extent,\n  resolution,\n  projection,\n  success,\n  failure,\n) {\n  const xhr = new XMLHttpRequest();\n  xhr.open(\n    'GET',\n    typeof url === 'function' ? url(extent, resolution, projection) : url,\n    true,\n  );\n  if (format.getType() == 'arraybuffer') {\n    xhr.responseType = 'arraybuffer';\n  }\n  xhr.withCredentials = withCredentials;\n  /**\n   * @param {Event} event Event.\n   * @private\n   */\n  xhr.onload = function (event) {\n    // status will be 0 for file:// urls\n    if (!xhr.status || (xhr.status >= 200 && xhr.status < 300)) {\n      const type = format.getType();\n      try {\n        /** @type {Document|Node|Object|string|undefined} */\n        let source;\n        if (type == 'text' || type == 'json') {\n          source = xhr.responseText;\n        } else if (type == 'xml') {\n          source = xhr.responseXML || xhr.responseText;\n        } else if (type == 'arraybuffer') {\n          source = /** @type {ArrayBuffer} */ (xhr.response);\n        }\n        if (source) {\n          success(\n            /** @type {Array<FeatureType>} */\n            (\n              format.readFeatures(source, {\n                extent: extent,\n                featureProjection: projection,\n              })\n            ),\n            format.readProjection(source),\n          );\n        } else {\n          failure();\n        }\n      } catch {\n        failure();\n      }\n    } else {\n      failure();\n    }\n  };\n  /**\n   * @private\n   */\n  xhr.onerror = failure;\n  xhr.send();\n}\n\n/**\n * Create an XHR feature loader for a `url` and `format`. The feature loader\n * loads features (with XHR), parses the features, and adds them to the\n * vector source.\n *\n * @template {import(\"./Feature.js\").FeatureLike} [FeatureType=import(\"./Feature.js\").default]\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default<FeatureType>} format Feature format.\n * @return {FeatureLoader<FeatureType>} The feature loader.\n * @api\n */\nexport function xhr(url, format) {\n  /**\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {import(\"./proj/Projection.js\").default} projection Projection.\n   * @param {function(Array<FeatureType>): void} [success] Success\n   *      Function called when loading succeeded.\n   * @param {function(): void} [failure] Failure\n   *      Function called when loading failed.\n   * @this {import(\"./source/Vector.js\").default<FeatureType>}\n   */\n  return function (extent, resolution, projection, success, failure) {\n    loadFeaturesXhr(\n      url,\n      format,\n      extent,\n      resolution,\n      projection,\n      /**\n       * @param {Array<FeatureType>} features The loaded features.\n       * @param {import(\"./proj/Projection.js\").default} dataProjection Data\n       * projection.\n       */\n      (features, dataProjection) => {\n        this.addFeatures(features);\n        if (success !== undefined) {\n          success(features);\n        }\n      },\n      /* FIXME handle error */ failure ? failure : VOID,\n    );\n  };\n}\n\n/**\n * Setter for the withCredentials configuration for the XHR.\n *\n * @param {boolean} xhrWithCredentials The value of withCredentials to set.\n * Compare https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/\n * @api\n */\nexport function setWithCredentials(xhrWithCredentials) {\n  withCredentials = xhrWithCredentials;\n}\n","/**\n * @module ol/loadingstrategy\n */\n\nimport {fromUserExtent, fromUserResolution, toUserExtent} from './proj.js';\n\n/**\n * Strategy function for loading all features with a single request.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array<import(\"./extent.js\").Extent>} Extents.\n * @api\n */\nexport function all(extent, resolution) {\n  return [[-Infinity, -Infinity, Infinity, Infinity]];\n}\n\n/**\n * Strategy function for loading features based on the view's extent and\n * resolution.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array<import(\"./extent.js\").Extent>} Extents.\n * @api\n */\nexport function bbox(extent, resolution) {\n  return [extent];\n}\n\n/**\n * Creates a strategy function for loading features based on a tile grid.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {function(import(\"./extent.js\").Extent, number, import(\"./proj.js\").Projection): Array<import(\"./extent.js\").Extent>} Loading strategy.\n * @api\n */\nexport function tile(tileGrid) {\n  return (\n    /**\n     * @param {import(\"./extent.js\").Extent} extent Extent.\n     * @param {number} resolution Resolution.\n     * @param {import(\"./proj.js\").Projection} projection Projection.\n     * @return {Array<import(\"./extent.js\").Extent>} Extents.\n     */\n    function (extent, resolution, projection) {\n      const z = tileGrid.getZForResolution(\n        fromUserResolution(resolution, projection),\n      );\n      const tileRange = tileGrid.getTileRangeForExtentAndZ(\n        fromUserExtent(extent, projection),\n        z,\n      );\n      /** @type {Array<import(\"./extent.js\").Extent>} */\n      const extents = [];\n      /** @type {import(\"./tilecoord.js\").TileCoord} */\n      const tileCoord = [z, 0, 0];\n      for (\n        tileCoord[1] = tileRange.minX;\n        tileCoord[1] <= tileRange.maxX;\n        ++tileCoord[1]\n      ) {\n        for (\n          tileCoord[2] = tileRange.minY;\n          tileCoord[2] <= tileRange.maxY;\n          ++tileCoord[2]\n        ) {\n          extents.push(\n            toUserExtent(tileGrid.getTileCoordExtent(tileCoord), projection),\n          );\n        }\n      }\n      return extents;\n    }\n  );\n}\n","/**\n * @module ol/geom/flat/center\n */\nimport {createEmpty, createOrUpdateFromFlatCoordinates} from '../../extent.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @return {Array<number>} Flat centers.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n  const flatCenters = [];\n  let extent = createEmpty();\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    extent = createOrUpdateFromFlatCoordinates(\n      flatCoordinates,\n      offset,\n      ends[0],\n      stride,\n    );\n    flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);\n    offset = ends[ends.length - 1];\n  }\n  return flatCenters;\n}\n","/**\n * @module ol/geom/Circle\n */\nimport {createOrUpdate, forEachCorner, intersects} from '../extent.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {rotate} from './flat/transform.js';\n\n/**\n * @classdesc\n * Circle geometry.\n *\n * @api\n */\nclass Circle extends SimpleGeometry {\n  /**\n   * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n   *     For internal use, flat coordinates in combination with `layout` and no\n   *     `radius` are also accepted.\n   * @param {number} [radius] Radius in units of the projection.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(center, radius, layout) {\n    super();\n    if (layout !== undefined && radius === undefined) {\n      this.setFlatCoordinates(layout, center);\n    } else {\n      radius = radius ? radius : 0;\n      this.setCenterAndRadius(center, radius, layout);\n    }\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!Circle} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const circle = new Circle(\n      this.flatCoordinates.slice(),\n      undefined,\n      this.layout,\n    );\n    circle.applyProperties(this);\n    return circle;\n  }\n\n  /**\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   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    const flatCoordinates = this.flatCoordinates;\n    const dx = x - flatCoordinates[0];\n    const dy = y - flatCoordinates[1];\n    const squaredDistance = dx * dx + dy * dy;\n    if (squaredDistance < minSquaredDistance) {\n      if (squaredDistance === 0) {\n        for (let i = 0; i < this.stride; ++i) {\n          closestPoint[i] = flatCoordinates[i];\n        }\n      } else {\n        const delta = this.getRadius() / Math.sqrt(squaredDistance);\n        closestPoint[0] = flatCoordinates[0] + delta * dx;\n        closestPoint[1] = flatCoordinates[1] + delta * dy;\n        for (let i = 2; i < this.stride; ++i) {\n          closestPoint[i] = flatCoordinates[i];\n        }\n      }\n      closestPoint.length = this.stride;\n      return squaredDistance;\n    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    const flatCoordinates = this.flatCoordinates;\n    const dx = x - flatCoordinates[0];\n    const dy = y - flatCoordinates[1];\n    return dx * dx + dy * dy <= this.getRadiusSquared_();\n  }\n\n  /**\n   * Return the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n   * @return {import(\"../coordinate.js\").Coordinate} Center.\n   * @api\n   */\n  getCenter() {\n    return this.flatCoordinates.slice(0, this.stride);\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    const flatCoordinates = this.flatCoordinates;\n    const radius = flatCoordinates[this.stride] - flatCoordinates[0];\n    return createOrUpdate(\n      flatCoordinates[0] - radius,\n      flatCoordinates[1] - radius,\n      flatCoordinates[0] + radius,\n      flatCoordinates[1] + radius,\n      extent,\n    );\n  }\n\n  /**\n   * Return the radius of the circle.\n   * @return {number} Radius.\n   * @api\n   */\n  getRadius() {\n    return Math.sqrt(this.getRadiusSquared_());\n  }\n\n  /**\n   * @private\n   * @return {number} Radius squared.\n   */\n  getRadiusSquared_() {\n    const dx = this.flatCoordinates[this.stride] - this.flatCoordinates[0];\n    const dy = this.flatCoordinates[this.stride + 1] - this.flatCoordinates[1];\n    return dx * dx + dy * dy;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'Circle';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    const circleExtent = this.getExtent();\n    if (intersects(extent, circleExtent)) {\n      const center = this.getCenter();\n\n      if (extent[0] <= center[0] && extent[2] >= center[0]) {\n        return true;\n      }\n      if (extent[1] <= center[1] && extent[3] >= center[1]) {\n        return true;\n      }\n\n      return forEachCorner(extent, this.intersectsCoordinate.bind(this));\n    }\n    return false;\n  }\n\n  /**\n   * Set the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n   * @param {import(\"../coordinate.js\").Coordinate} center Center.\n   * @api\n   */\n  setCenter(center) {\n    const stride = this.stride;\n    const radius = this.flatCoordinates[stride] - this.flatCoordinates[0];\n    const flatCoordinates = center.slice();\n    flatCoordinates[stride] = flatCoordinates[0] + radius;\n    for (let i = 1; i < stride; ++i) {\n      flatCoordinates[stride + i] = center[i];\n    }\n    this.setFlatCoordinates(this.layout, flatCoordinates);\n    this.changed();\n  }\n\n  /**\n   * Set the center (as {@link module:ol/coordinate~Coordinate coordinate}) and the radius (as\n   * number) of the circle.\n   * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n   * @param {number} radius Radius.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   */\n  setCenterAndRadius(center, radius, layout) {\n    this.setLayout(layout, center, 0);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    /** @type {Array<number>} */\n    const flatCoordinates = this.flatCoordinates;\n    let offset = deflateCoordinate(flatCoordinates, 0, center, this.stride);\n    flatCoordinates[offset++] = flatCoordinates[0] + radius;\n    for (let i = 1, ii = this.stride; i < ii; ++i) {\n      flatCoordinates[offset++] = flatCoordinates[i];\n    }\n    flatCoordinates.length = offset;\n    this.changed();\n  }\n\n  /**\n   * @override\n   */\n  getCoordinates() {\n    return null;\n  }\n\n  /**\n   * @override\n   */\n  setCoordinates(coordinates, layout) {}\n\n  /**\n   * Set the radius of the circle. The radius is in the units of the projection.\n   * @param {number} radius Radius.\n   * @api\n   */\n  setRadius(radius) {\n    this.flatCoordinates[this.stride] = this.flatCoordinates[0] + radius;\n    this.changed();\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 counter-clockwise radians.\n   * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n   * @api\n   * @override\n   */\n  rotate(angle, anchor) {\n    const center = this.getCenter();\n    const stride = this.getStride();\n    this.setCenter(\n      rotate(center, 0, center.length, stride, angle, anchor, center),\n    );\n    this.changed();\n  }\n}\n\n/**\n * Transform each coordinate of the circle from one coordinate reference system\n * to another. 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 *\n * Internally a circle is currently represented by two points: the center of\n * the circle `[cx, cy]`, and the point to the right of the circle\n * `[cx + r, cy]`. This `transform` function just transforms these two points.\n * So the resulting geometry is also a circle, and that circle does not\n * correspond to the shape that would be obtained by transforming every point\n * of the original circle.\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 {Circle} This geometry.  Note that original geometry is\n *     modified in place.\n * @function\n * @api\n */\nCircle.prototype.transform;\nexport default Circle;\n","/**\n * @module ol/geom/GeometryCollection\n */\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {\n  closestSquaredDistanceXY,\n  createOrUpdateEmpty,\n  extend,\n  getCenter,\n} from '../extent.js';\nimport Geometry from './Geometry.js';\n\n/**\n * @classdesc\n * An array of {@link module:ol/geom/Geometry~Geometry} objects.\n *\n * @api\n */\nclass GeometryCollection extends Geometry {\n  /**\n   * @param {Array<Geometry>} geometries Geometries.\n   */\n  constructor(geometries) {\n    super();\n\n    /**\n     * @private\n     * @type {Array<Geometry>}\n     */\n    this.geometries_ = geometries;\n\n    /**\n     * @private\n     * @type {Array<import(\"../events.js\").EventsKey>}\n     */\n    this.changeEventsKeys_ = [];\n\n    this.listenGeometriesChange_();\n  }\n\n  /**\n   * @private\n   */\n  unlistenGeometriesChange_() {\n    this.changeEventsKeys_.forEach(unlistenByKey);\n    this.changeEventsKeys_.length = 0;\n  }\n\n  /**\n   * @private\n   */\n  listenGeometriesChange_() {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      this.changeEventsKeys_.push(\n        listen(geometries[i], EventType.CHANGE, this.changed, this),\n      );\n    }\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!GeometryCollection} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const geometryCollection = new GeometryCollection(\n      cloneGeometries(this.geometries_),\n    );\n    geometryCollection.applyProperties(this);\n    return geometryCollection;\n  }\n\n  /**\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   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      minSquaredDistance = geometries[i].closestPointXY(\n        x,\n        y,\n        closestPoint,\n        minSquaredDistance,\n      );\n    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      if (geometries[i].containsXY(x, y)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    createOrUpdateEmpty(extent);\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      extend(extent, geometries[i].getExtent());\n    }\n    return extent;\n  }\n\n  /**\n   * Return the geometries that make up this geometry collection.\n   * @return {Array<Geometry>} Geometries.\n   * @api\n   */\n  getGeometries() {\n    return cloneGeometries(this.geometries_);\n  }\n\n  /**\n   * @return {Array<Geometry>} Geometries.\n   */\n  getGeometriesArray() {\n    return this.geometries_;\n  }\n\n  /**\n   * @return {Array<Geometry>} Geometries.\n   */\n  getGeometriesArrayRecursive() {\n    /** @type {Array<Geometry>} */\n    let geometriesArray = [];\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      if (geometries[i].getType() === this.getType()) {\n        geometriesArray = geometriesArray.concat(\n          /** @type {GeometryCollection} */ (\n            geometries[i]\n          ).getGeometriesArrayRecursive(),\n        );\n      } else {\n        geometriesArray.push(geometries[i]);\n      }\n    }\n    return geometriesArray;\n  }\n\n  /**\n   * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {GeometryCollection} Simplified GeometryCollection.\n   * @override\n   */\n  getSimplifiedGeometry(squaredTolerance) {\n    if (this.simplifiedGeometryRevision !== this.getRevision()) {\n      this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n      this.simplifiedGeometryRevision = this.getRevision();\n    }\n    if (\n      squaredTolerance < 0 ||\n      (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n        squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance)\n    ) {\n      return this;\n    }\n\n    const simplifiedGeometries = [];\n    const geometries = this.geometries_;\n    let simplified = false;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      const geometry = geometries[i];\n      const simplifiedGeometry =\n        geometry.getSimplifiedGeometry(squaredTolerance);\n      simplifiedGeometries.push(simplifiedGeometry);\n      if (simplifiedGeometry !== geometry) {\n        simplified = true;\n      }\n    }\n    if (simplified) {\n      const simplifiedGeometryCollection = new GeometryCollection(\n        simplifiedGeometries,\n      );\n      return simplifiedGeometryCollection;\n    }\n    this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n    return this;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'GeometryCollection';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      if (geometries[i].intersectsExtent(extent)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return this.geometries_.length === 0;\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   * @override\n   */\n  rotate(angle, anchor) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].rotate(angle, anchor);\n    }\n    this.changed();\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} [sy] The scaling factor in the y-direction (defaults to sx).\n   * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n   *     of the geometry extent).\n   * @api\n   * @override\n   */\n  scale(sx, sy, anchor) {\n    if (!anchor) {\n      anchor = getCenter(this.getExtent());\n    }\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].scale(sx, sy, anchor);\n    }\n    this.changed();\n  }\n\n  /**\n   * Set the geometries that make up this geometry collection.\n   * @param {Array<Geometry>} geometries Geometries.\n   * @api\n   */\n  setGeometries(geometries) {\n    this.setGeometriesArray(cloneGeometries(geometries));\n  }\n\n  /**\n   * @param {Array<Geometry>} geometries Geometries.\n   */\n  setGeometriesArray(geometries) {\n    this.unlistenGeometriesChange_();\n    this.geometries_ = geometries;\n    this.listenGeometriesChange_();\n    this.changed();\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   * @override\n   */\n  applyTransform(transformFn) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].applyTransform(transformFn);\n    }\n    this.changed();\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   * @override\n   */\n  translate(deltaX, deltaY) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].translate(deltaX, deltaY);\n    }\n    this.changed();\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.unlistenGeometriesChange_();\n    super.disposeInternal();\n  }\n}\n\n/**\n * @param {Array<Geometry>} geometries Geometries.\n * @return {Array<Geometry>} Cloned geometries.\n */\nfunction cloneGeometries(geometries) {\n  return geometries.map((geometry) => geometry.clone());\n}\n\nexport default GeometryCollection;\n","/**\n * @module ol/geom/MultiLineString\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport LineString from './LineString.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} from './flat/closest.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {\n  interpolatePoint,\n  lineStringsCoordinateAtM,\n} from './flat/interpolate.js';\nimport {intersectsLineStringArray} from './flat/intersectsextent.js';\nimport {douglasPeuckerArray} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Multi-linestring geometry.\n *\n * @api\n */\nclass MultiLineString extends SimpleGeometry {\n  /**\n   * @param {Array<Array<import(\"../coordinate.js\").Coordinate>|LineString>|Array<number>} coordinates\n   *     Coordinates or LineString geometries. (For internal use, flat coordinates in\n   *     combination with `layout` and `ends` are also accepted.)\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @param {Array<number>} [ends] Flat coordinate ends for internal use.\n   */\n  constructor(coordinates, layout, ends) {\n    super();\n\n    /**\n     * @type {Array<number>}\n     * @private\n     */\n    this.ends_ = [];\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 (Array.isArray(coordinates[0])) {\n      this.setCoordinates(\n        /** @type {Array<Array<import(\"../coordinate.js\").Coordinate>>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    } else if (layout !== undefined && ends) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n      this.ends_ = ends;\n    } else {\n      const lineStrings = /** @type {Array<LineString>} */ (coordinates);\n      /** @type {Array<number>} */\n      const flatCoordinates = [];\n      const ends = [];\n      for (let i = 0, ii = lineStrings.length; i < ii; ++i) {\n        const lineString = lineStrings[i];\n        extend(flatCoordinates, lineString.getFlatCoordinates());\n        ends.push(flatCoordinates.length);\n      }\n      const layout =\n        lineStrings.length === 0\n          ? this.getLayout()\n          : lineStrings[0].getLayout();\n      this.setFlatCoordinates(layout, flatCoordinates);\n      this.ends_ = ends;\n    }\n  }\n\n  /**\n   * Append the passed linestring to the multilinestring.\n   * @param {LineString} lineString LineString.\n   * @api\n   */\n  appendLineString(lineString) {\n    extend(this.flatCoordinates, lineString.getFlatCoordinates().slice());\n    this.ends_.push(this.flatCoordinates.length);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!MultiLineString} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const multiLineString = new MultiLineString(\n      this.flatCoordinates.slice(),\n      this.layout,\n      this.ends_.slice(),\n    );\n    multiLineString.applyProperties(this);\n    return multiLineString;\n  }\n\n  /**\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   * @override\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(\n        arrayMaxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.ends_,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestArrayPoint(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      this.maxDelta_,\n      false,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * Returns the coordinate at `m` using linear interpolation, or `null` if no\n   * such coordinate exists.\n   *\n   * `extrapolate` controls extrapolation beyond the range of Ms in the\n   * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n   * M will return the first coordinate and Ms greater than the last M will\n   * return the last coordinate.\n   *\n   * `interpolate` controls interpolation between consecutive LineStrings\n   * within the MultiLineString. If `interpolate` is `true` the coordinates\n   * will be linearly interpolated between the last coordinate of one LineString\n   * and the first coordinate of the next LineString.  If `interpolate` is\n   * `false` then the function will return `null` for Ms falling between\n   * LineStrings.\n   *\n   * @param {number} m M.\n   * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n   * @param {boolean} [interpolate] Interpolate. Default is `false`.\n   * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n   * @api\n   */\n  getCoordinateAtM(m, extrapolate, interpolate) {\n    if (\n      (this.layout != 'XYM' && this.layout != 'XYZM') ||\n      this.flatCoordinates.length === 0\n    ) {\n      return null;\n    }\n    extrapolate = extrapolate !== undefined ? extrapolate : false;\n    interpolate = interpolate !== undefined ? interpolate : false;\n    return lineStringsCoordinateAtM(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      m,\n      extrapolate,\n      interpolate,\n    );\n  }\n\n  /**\n   * Return the coordinates of the multilinestring.\n   * @return {Array<Array<import(\"../coordinate.js\").Coordinate>>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n    );\n  }\n\n  /**\n   * @return {Array<number>} Ends.\n   */\n  getEnds() {\n    return this.ends_;\n  }\n\n  /**\n   * Return the linestring at the specified index.\n   * @param {number} index Index.\n   * @return {LineString} LineString.\n   * @api\n   */\n  getLineString(index) {\n    if (index < 0 || this.ends_.length <= index) {\n      return null;\n    }\n    return new LineString(\n      this.flatCoordinates.slice(\n        index === 0 ? 0 : this.ends_[index - 1],\n        this.ends_[index],\n      ),\n      this.layout,\n    );\n  }\n\n  /**\n   * Return the linestrings of this multilinestring.\n   * @return {Array<LineString>} LineStrings.\n   * @api\n   */\n  getLineStrings() {\n    const flatCoordinates = this.flatCoordinates;\n    const ends = this.ends_;\n    const layout = this.layout;\n    /** @type {Array<LineString>} */\n    const lineStrings = [];\n    let offset = 0;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const lineString = new LineString(\n        flatCoordinates.slice(offset, end),\n        layout,\n      );\n      lineStrings.push(lineString);\n      offset = end;\n    }\n    return lineStrings;\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoints.\n   */\n  getFlatMidpoints() {\n    /** @type {Array<number>} */\n    const midpoints = [];\n    const flatCoordinates = this.flatCoordinates;\n    let offset = 0;\n    const ends = this.ends_;\n    const stride = this.stride;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const midpoint = interpolatePoint(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        0.5,\n      );\n      extend(midpoints, midpoint);\n      offset = end;\n    }\n    return midpoints;\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {MultiLineString} Simplified MultiLineString.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedFlatCoordinates.length = douglasPeuckerArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n      simplifiedEnds,\n    );\n    return new MultiLineString(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'MultiLineString';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLineStringArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * Set the coordinates of the multilinestring.\n   * @param {!Array<Array<import(\"../coordinate.js\").Coordinate>>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 2);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    const ends = deflateCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n      this.ends_,\n    );\n    this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n    this.changed();\n  }\n}\n\nexport default MultiLineString;\n","/**\n * @module ol/geom/MultiPoint\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY, containsXY} from '../extent.js';\nimport {squaredDistance as squaredDx} from '../math.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\n\n/**\n * @classdesc\n * Multi-point geometry.\n *\n * @api\n */\nclass MultiPoint extends SimpleGeometry {\n  /**\n   * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n    if (layout && !Array.isArray(coordinates[0])) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n    } else {\n      this.setCoordinates(\n        /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed point to this multipoint.\n   * @param {Point} point Point.\n   * @api\n   */\n  appendPoint(point) {\n    extend(this.flatCoordinates, point.getFlatCoordinates());\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!MultiPoint} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const multiPoint = new MultiPoint(\n      this.flatCoordinates.slice(),\n      this.layout,\n    );\n    multiPoint.applyProperties(this);\n    return multiPoint;\n  }\n\n  /**\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   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    const flatCoordinates = this.flatCoordinates;\n    const stride = this.stride;\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      const squaredDistance = squaredDx(\n        x,\n        y,\n        flatCoordinates[i],\n        flatCoordinates[i + 1],\n      );\n      if (squaredDistance < minSquaredDistance) {\n        minSquaredDistance = squaredDistance;\n        for (let j = 0; j < stride; ++j) {\n          closestPoint[j] = flatCoordinates[i + j];\n        }\n        closestPoint.length = stride;\n      }\n    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * Return the coordinates of the multipoint.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the point at the specified index.\n   * @param {number} index Index.\n   * @return {Point} Point.\n   * @api\n   */\n  getPoint(index) {\n    const n = this.flatCoordinates.length / this.stride;\n    if (index < 0 || n <= index) {\n      return null;\n    }\n    return new Point(\n      this.flatCoordinates.slice(\n        index * this.stride,\n        (index + 1) * this.stride,\n      ),\n      this.layout,\n    );\n  }\n\n  /**\n   * Return the points of this multipoint.\n   * @return {Array<Point>} Points.\n   * @api\n   */\n  getPoints() {\n    const flatCoordinates = this.flatCoordinates;\n    const layout = this.layout;\n    const stride = this.stride;\n    /** @type {Array<Point>} */\n    const points = [];\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      const point = new Point(flatCoordinates.slice(i, i + stride), layout);\n      points.push(point);\n    }\n    return points;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'MultiPoint';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    const flatCoordinates = this.flatCoordinates;\n    const stride = this.stride;\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      const x = flatCoordinates[i];\n      const y = flatCoordinates[i + 1];\n      if (containsXY(extent, x, y)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Set the coordinates of the multipoint.\n   * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 1);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinates(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default MultiPoint;\n","/**\n * @module ol/geom/MultiPolygon\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport MultiPoint from './MultiPoint.js';\nimport Polygon from './Polygon.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRingss as linearRingssArea} from './flat/area.js';\nimport {linearRingss as linearRingssCenter} from './flat/center.js';\nimport {\n  assignClosestMultiArrayPoint,\n  multiArrayMaxSquaredDelta,\n} from './flat/closest.js';\nimport {linearRingssContainsXY} from './flat/contains.js';\nimport {deflateMultiCoordinatesArray} from './flat/deflate.js';\nimport {inflateMultiCoordinatesArray} from './flat/inflate.js';\nimport {getInteriorPointsOfMultiArray} from './flat/interiorpoint.js';\nimport {intersectsLinearRingMultiArray} from './flat/intersectsextent.js';\nimport {\n  linearRingssAreOriented,\n  orientLinearRingsArray,\n} from './flat/orient.js';\nimport {quantizeMultiArray} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Multi-polygon geometry.\n *\n * @api\n */\nclass MultiPolygon extends SimpleGeometry {\n  /**\n   * @param {Array<Array<Array<import(\"../coordinate.js\").Coordinate>>|Polygon>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` and `endss` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @param {Array<Array<number>>} [endss] Array of ends for internal use with flat coordinates.\n   */\n  constructor(coordinates, layout, endss) {\n    super();\n\n    /**\n     * @type {Array<Array<number>>}\n     * @private\n     */\n    this.endss_ = [];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.flatInteriorPointsRevision_ = -1;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.flatInteriorPoints_ = 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<number>|null}\n     */\n    this.orientedFlatCoordinates_ = null;\n\n    if (!endss && !Array.isArray(coordinates[0])) {\n      const polygons = /** @type {Array<Polygon>} */ (coordinates);\n      /** @type {Array<number>} */\n      const flatCoordinates = [];\n      const thisEndss = [];\n      for (let i = 0, ii = polygons.length; i < ii; ++i) {\n        const polygon = polygons[i];\n        const offset = flatCoordinates.length;\n        const ends = polygon.getEnds();\n        for (let j = 0, jj = ends.length; j < jj; ++j) {\n          ends[j] += offset;\n        }\n        extend(flatCoordinates, polygon.getFlatCoordinates());\n        thisEndss.push(ends);\n      }\n      layout =\n        polygons.length === 0 ? this.getLayout() : polygons[0].getLayout();\n      coordinates = flatCoordinates;\n      endss = thisEndss;\n    }\n    if (layout !== undefined && endss) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n      this.endss_ = endss;\n    } else {\n      this.setCoordinates(\n        /** @type {Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed polygon to this multipolygon.\n   * @param {Polygon} polygon Polygon.\n   * @api\n   */\n  appendPolygon(polygon) {\n    /** @type {Array<number>} */\n    let ends;\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = polygon.getFlatCoordinates().slice();\n      ends = polygon.getEnds().slice();\n      this.endss_.push();\n    } else {\n      const offset = this.flatCoordinates.length;\n      extend(this.flatCoordinates, polygon.getFlatCoordinates());\n      ends = polygon.getEnds().slice();\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        ends[i] += offset;\n      }\n    }\n    this.endss_.push(ends);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!MultiPolygon} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const len = this.endss_.length;\n    const newEndss = new Array(len);\n    for (let i = 0; i < len; ++i) {\n      newEndss[i] = this.endss_[i].slice();\n    }\n\n    const multiPolygon = new MultiPolygon(\n      this.flatCoordinates.slice(),\n      this.layout,\n      newEndss,\n    );\n    multiPolygon.applyProperties(this);\n\n    return multiPolygon;\n  }\n\n  /**\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   * @override\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(\n        multiArrayMaxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.endss_,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestMultiArrayPoint(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n      this.maxDelta_,\n      true,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    return linearRingssContainsXY(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n      x,\n      y,\n    );\n  }\n\n  /**\n   * Return the area of the multipolygon on projected plane.\n   * @return {number} Area (on projected plane).\n   * @api\n   */\n  getArea() {\n    return linearRingssArea(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n    );\n  }\n\n  /**\n   * Get the coordinate array for this geometry.  This array has the structure\n   * of a GeoJSON coordinate array for multi-polygons.\n   *\n   * @param {boolean} [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<Array<Array<import(\"../coordinate.js\").Coordinate>>>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates(right) {\n    let flatCoordinates;\n    if (right !== undefined) {\n      flatCoordinates = this.getOrientedFlatCoordinates().slice();\n      orientLinearRingsArray(\n        flatCoordinates,\n        0,\n        this.endss_,\n        this.stride,\n        right,\n      );\n    } else {\n      flatCoordinates = this.flatCoordinates;\n    }\n\n    return inflateMultiCoordinatesArray(\n      flatCoordinates,\n      0,\n      this.endss_,\n      this.stride,\n    );\n  }\n\n  /**\n   * @return {Array<Array<number>>} Endss.\n   */\n  getEndss() {\n    return this.endss_;\n  }\n\n  /**\n   * @return {Array<number>} Flat interior points.\n   */\n  getFlatInteriorPoints() {\n    if (this.flatInteriorPointsRevision_ != this.getRevision()) {\n      const flatCenters = linearRingssCenter(\n        this.flatCoordinates,\n        0,\n        this.endss_,\n        this.stride,\n      );\n      this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(\n        this.getOrientedFlatCoordinates(),\n        0,\n        this.endss_,\n        this.stride,\n        flatCenters,\n      );\n      this.flatInteriorPointsRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.flatInteriorPoints_);\n  }\n\n  /**\n   * Return the interior points as {@link module:ol/geom/MultiPoint~MultiPoint multipoint}.\n   * @return {MultiPoint} Interior points as XYM coordinates, where M is\n   * the length of the horizontal intersection that the point belongs to.\n   * @api\n   */\n  getInteriorPoints() {\n    return new MultiPoint(this.getFlatInteriorPoints().slice(), 'XYM');\n  }\n\n  /**\n   * @return {Array<number>} Oriented flat coordinates.\n   */\n  getOrientedFlatCoordinates() {\n    if (this.orientedRevision_ != this.getRevision()) {\n      const flatCoordinates = this.flatCoordinates;\n      if (\n        linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)\n      ) {\n        this.orientedFlatCoordinates_ = flatCoordinates;\n      } else {\n        this.orientedFlatCoordinates_ = flatCoordinates.slice();\n        this.orientedFlatCoordinates_.length = orientLinearRingsArray(\n          this.orientedFlatCoordinates_,\n          0,\n          this.endss_,\n          this.stride,\n        );\n      }\n      this.orientedRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.orientedFlatCoordinates_);\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {MultiPolygon} Simplified MultiPolygon.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    /** @type {Array<Array<number>>} */\n    const simplifiedEndss = [];\n    simplifiedFlatCoordinates.length = quantizeMultiArray(\n      this.flatCoordinates,\n      0,\n      this.endss_,\n      this.stride,\n      Math.sqrt(squaredTolerance),\n      simplifiedFlatCoordinates,\n      0,\n      simplifiedEndss,\n    );\n    return new MultiPolygon(simplifiedFlatCoordinates, 'XY', simplifiedEndss);\n  }\n\n  /**\n   * Return the polygon at the specified index.\n   * @param {number} index Index.\n   * @return {Polygon} Polygon.\n   * @api\n   */\n  getPolygon(index) {\n    if (index < 0 || this.endss_.length <= index) {\n      return null;\n    }\n    let offset;\n    if (index === 0) {\n      offset = 0;\n    } else {\n      const prevEnds = this.endss_[index - 1];\n      offset = prevEnds[prevEnds.length - 1];\n    }\n    const ends = this.endss_[index].slice();\n    const end = ends[ends.length - 1];\n    if (offset !== 0) {\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        ends[i] -= offset;\n      }\n    }\n    return new Polygon(\n      this.flatCoordinates.slice(offset, end),\n      this.layout,\n      ends,\n    );\n  }\n\n  /**\n   * Return the polygons of this multipolygon.\n   * @return {Array<Polygon>} Polygons.\n   * @api\n   */\n  getPolygons() {\n    const layout = this.layout;\n    const flatCoordinates = this.flatCoordinates;\n    const endss = this.endss_;\n    const polygons = [];\n    let offset = 0;\n    for (let i = 0, ii = endss.length; i < ii; ++i) {\n      const ends = endss[i].slice();\n      const end = ends[ends.length - 1];\n      if (offset !== 0) {\n        for (let j = 0, jj = ends.length; j < jj; ++j) {\n          ends[j] -= offset;\n        }\n      }\n      const polygon = new Polygon(\n        flatCoordinates.slice(offset, end),\n        layout,\n        ends,\n      );\n      polygons.push(polygon);\n      offset = end;\n    }\n    return polygons;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'MultiPolygon';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLinearRingMultiArray(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * Set the coordinates of the multipolygon.\n   * @param {!Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 3);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    const endss = deflateMultiCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n      this.endss_,\n    );\n    if (endss.length === 0) {\n      this.flatCoordinates.length = 0;\n    } else {\n      const lastEnds = endss[endss.length - 1];\n      this.flatCoordinates.length =\n        lastEnds.length === 0 ? 0 : lastEnds[lastEnds.length - 1];\n    }\n    this.changed();\n  }\n}\n\nexport default MultiPolygon;\n","/**\n * @module ol/render/Feature\n */\nimport Feature from '../Feature.js';\nimport {extend} from '../array.js';\nimport {\n  createOrUpdateFromCoordinate,\n  createOrUpdateFromFlatCoordinates,\n  getCenter,\n  getHeight,\n} from '../extent.js';\nimport {memoizeOne} from '../functions.js';\nimport {linearRingss as linearRingssCenter} from '../geom/flat/center.js';\nimport {\n  getInteriorPointOfArray,\n  getInteriorPointsOfMultiArray,\n} from '../geom/flat/interiorpoint.js';\nimport {interpolatePoint} from '../geom/flat/interpolate.js';\nimport {inflateEnds} from '../geom/flat/orient.js';\nimport {\n  douglasPeucker,\n  douglasPeuckerArray,\n  quantizeArray,\n} from '../geom/flat/simplify.js';\nimport {transform2D} from '../geom/flat/transform.js';\nimport {\n  LineString,\n  MultiLineString,\n  MultiPoint,\n  MultiPolygon,\n  Point,\n  Polygon,\n} from '../geom.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../transform.js';\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString'} Type\n * The geometry type.  One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'` or 'MultiLineString'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/**\n * Lightweight, read-only, {@link module:ol/Feature~Feature} and {@link module:ol/geom/Geometry~Geometry} like\n * structure, optimized for vector tile rendering and styling. Geometry access\n * through the API is limited to getting the type and extent of the geometry.\n */\nclass RenderFeature {\n  /**\n   * @param {Type} type Geometry type.\n   * @param {Array<number>} flatCoordinates Flat coordinates. These always need\n   *     to be right-handed for polygons.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @param {Object<string, *>} properties Properties.\n   * @param {number|string|undefined} id Feature id.\n   */\n  constructor(type, flatCoordinates, ends, stride, properties, id) {\n    /**\n     * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n     */\n    this.styleFunction;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent|undefined}\n     */\n    this.extent_;\n\n    /**\n     * @private\n     * @type {number|string|undefined}\n     */\n    this.id_ = id;\n\n    /**\n     * @private\n     * @type {Type}\n     */\n    this.type_ = type;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.flatCoordinates_ = flatCoordinates;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.flatInteriorPoints_ = null;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.flatMidpoints_ = null;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.ends_ = ends || null;\n\n    /**\n     * @private\n     * @type {Object<string, *>}\n     */\n    this.properties_ = properties;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.squaredTolerance_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.stride_ = stride;\n\n    /**\n     * @private\n     * @type {RenderFeature}\n     */\n    this.simplifiedGeometry_;\n  }\n\n  /**\n   * Get a feature property by its key.\n   * @param {string} key Key\n   * @return {*} Value for the requested key.\n   * @api\n   */\n  get(key) {\n    return this.properties_[key];\n  }\n\n  /**\n   * Get the extent of this feature's geometry.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getExtent() {\n    if (!this.extent_) {\n      this.extent_ =\n        this.type_ === 'Point'\n          ? createOrUpdateFromCoordinate(this.flatCoordinates_)\n          : createOrUpdateFromFlatCoordinates(\n              this.flatCoordinates_,\n              0,\n              this.flatCoordinates_.length,\n              2,\n            );\n    }\n    return this.extent_;\n  }\n\n  /**\n   * @return {Array<number>} Flat interior points.\n   */\n  getFlatInteriorPoint() {\n    if (!this.flatInteriorPoints_) {\n      const flatCenter = getCenter(this.getExtent());\n      this.flatInteriorPoints_ = getInteriorPointOfArray(\n        this.flatCoordinates_,\n        0,\n        this.ends_,\n        2,\n        flatCenter,\n        0,\n      );\n    }\n    return this.flatInteriorPoints_;\n  }\n\n  /**\n   * @return {Array<number>} Flat interior points.\n   */\n  getFlatInteriorPoints() {\n    if (!this.flatInteriorPoints_) {\n      const ends = inflateEnds(this.flatCoordinates_, this.ends_);\n      const flatCenters = linearRingssCenter(this.flatCoordinates_, 0, ends, 2);\n      this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(\n        this.flatCoordinates_,\n        0,\n        ends,\n        2,\n        flatCenters,\n      );\n    }\n    return this.flatInteriorPoints_;\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoint.\n   */\n  getFlatMidpoint() {\n    if (!this.flatMidpoints_) {\n      this.flatMidpoints_ = interpolatePoint(\n        this.flatCoordinates_,\n        0,\n        this.flatCoordinates_.length,\n        2,\n        0.5,\n      );\n    }\n    return this.flatMidpoints_;\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoints.\n   */\n  getFlatMidpoints() {\n    if (!this.flatMidpoints_) {\n      this.flatMidpoints_ = [];\n      const flatCoordinates = this.flatCoordinates_;\n      let offset = 0;\n      const ends = /** @type {Array<number>} */ (this.ends_);\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        const end = ends[i];\n        const midpoint = interpolatePoint(flatCoordinates, offset, end, 2, 0.5);\n        extend(this.flatMidpoints_, midpoint);\n        offset = end;\n      }\n    }\n    return this.flatMidpoints_;\n  }\n\n  /**\n   * Get the feature identifier.  This is a stable identifier for the feature and\n   * is set when reading data from a remote source.\n   * @return {number|string|undefined} Id.\n   * @api\n   */\n  getId() {\n    return this.id_;\n  }\n\n  /**\n   * @return {Array<number>} Flat coordinates.\n   */\n  getOrientedFlatCoordinates() {\n    return this.flatCoordinates_;\n  }\n\n  /**\n   * For API compatibility with {@link module:ol/Feature~Feature}, this method is useful when\n   * determining the geometry type in style function (see {@link #getType}).\n   * @return {RenderFeature} Feature.\n   * @api\n   */\n  getGeometry() {\n    return this;\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {RenderFeature} Simplified geometry.\n   */\n  getSimplifiedGeometry(squaredTolerance) {\n    return this;\n  }\n\n  /**\n   * Get a transformed and simplified version of the geometry.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n   * @return {RenderFeature} Simplified geometry.\n   */\n  simplifyTransformed(squaredTolerance, transform) {\n    return this;\n  }\n\n  /**\n   * Get the feature properties.\n   * @return {Object<string, *>} Feature properties.\n   * @api\n   */\n  getProperties() {\n    return this.properties_;\n  }\n\n  /**\n   * Get an object of all property names and values.  This has the same behavior as getProperties,\n   * but is here to conform with the {@link module:ol/Feature~Feature} interface.\n   * @return {Object<string, *>?} Object.\n   */\n  getPropertiesInternal() {\n    return this.properties_;\n  }\n\n  /**\n   * @return {number} Stride.\n   */\n  getStride() {\n    return this.stride_;\n  }\n\n  /**\n   * @return {import('../style/Style.js').StyleFunction|undefined} Style\n   */\n  getStyleFunction() {\n    return this.styleFunction;\n  }\n\n  /**\n   * Get the type of this feature's geometry.\n   * @return {Type} Geometry type.\n   * @api\n   */\n  getType() {\n    return this.type_;\n  }\n\n  /**\n   * Transform geometry coordinates from tile pixel space to projected.\n   *\n   * @param {import(\"../proj.js\").ProjectionLike} projection The data projection\n   */\n  transform(projection) {\n    projection = getProjection(projection);\n    const pixelExtent = projection.getExtent();\n    const projectedExtent = projection.getWorldExtent();\n    if (pixelExtent && projectedExtent) {\n      const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n      composeTransform(\n        tmpTransform,\n        projectedExtent[0],\n        projectedExtent[3],\n        scale,\n        -scale,\n        0,\n        0,\n        0,\n      );\n      transform2D(\n        this.flatCoordinates_,\n        0,\n        this.flatCoordinates_.length,\n        2,\n        tmpTransform,\n        this.flatCoordinates_,\n      );\n    }\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   */\n  applyTransform(transformFn) {\n    transformFn(this.flatCoordinates_, this.flatCoordinates_, this.stride_);\n  }\n\n  /**\n   * @return {RenderFeature} A cloned render feature.\n   */\n  clone() {\n    return new RenderFeature(\n      this.type_,\n      this.flatCoordinates_.slice(),\n      this.ends_?.slice(),\n      this.stride_,\n      Object.assign({}, this.properties_),\n      this.id_,\n    );\n  }\n\n  /**\n   * @return {Array<number>|null} Ends.\n   */\n  getEnds() {\n    return this.ends_;\n  }\n\n  /**\n   * Add transform and resolution based geometry simplification to this instance.\n   * @return {RenderFeature} This render feature.\n   */\n  enableSimplifyTransformed() {\n    this.simplifyTransformed = memoizeOne((squaredTolerance, transform) => {\n      if (squaredTolerance === this.squaredTolerance_) {\n        return this.simplifiedGeometry_;\n      }\n      this.simplifiedGeometry_ = this.clone();\n      if (transform) {\n        this.simplifiedGeometry_.applyTransform(transform);\n      }\n      const simplifiedFlatCoordinates =\n        this.simplifiedGeometry_.getFlatCoordinates();\n      let simplifiedEnds;\n      switch (this.type_) {\n        case 'LineString':\n          simplifiedFlatCoordinates.length = douglasPeucker(\n            simplifiedFlatCoordinates,\n            0,\n            this.simplifiedGeometry_.flatCoordinates_.length,\n            this.simplifiedGeometry_.stride_,\n            squaredTolerance,\n            simplifiedFlatCoordinates,\n            0,\n          );\n          simplifiedEnds = [simplifiedFlatCoordinates.length];\n          break;\n        case 'MultiLineString':\n          simplifiedEnds = [];\n          simplifiedFlatCoordinates.length = douglasPeuckerArray(\n            simplifiedFlatCoordinates,\n            0,\n            this.simplifiedGeometry_.ends_,\n            this.simplifiedGeometry_.stride_,\n            squaredTolerance,\n            simplifiedFlatCoordinates,\n            0,\n            simplifiedEnds,\n          );\n          break;\n        case 'Polygon':\n          simplifiedEnds = [];\n          simplifiedFlatCoordinates.length = quantizeArray(\n            simplifiedFlatCoordinates,\n            0,\n            this.simplifiedGeometry_.ends_,\n            this.simplifiedGeometry_.stride_,\n            Math.sqrt(squaredTolerance),\n            simplifiedFlatCoordinates,\n            0,\n            simplifiedEnds,\n          );\n          break;\n        default:\n      }\n      if (simplifiedEnds) {\n        this.simplifiedGeometry_ = new RenderFeature(\n          this.type_,\n          simplifiedFlatCoordinates,\n          simplifiedEnds,\n          2,\n          this.properties_,\n          this.id_,\n        );\n      }\n      this.squaredTolerance_ = squaredTolerance;\n      return this.simplifiedGeometry_;\n    });\n    return this;\n  }\n}\n\n/**\n * @return {Array<number>} Flat coordinates.\n */\nRenderFeature.prototype.getFlatCoordinates =\n  RenderFeature.prototype.getOrientedFlatCoordinates;\n\n/**\n * Create a geometry from an `ol/render/Feature`\n * @param {RenderFeature} renderFeature\n * Render Feature\n * @return {Point|MultiPoint|LineString|MultiLineString|Polygon|MultiPolygon}\n * New geometry instance.\n * @api\n */\nexport function toGeometry(renderFeature) {\n  const geometryType = renderFeature.getType();\n  switch (geometryType) {\n    case 'Point':\n      return new Point(renderFeature.getFlatCoordinates());\n    case 'MultiPoint':\n      return new MultiPoint(renderFeature.getFlatCoordinates(), 'XY');\n    case 'LineString':\n      return new LineString(renderFeature.getFlatCoordinates(), 'XY');\n    case 'MultiLineString':\n      return new MultiLineString(\n        renderFeature.getFlatCoordinates(),\n        'XY',\n        /** @type {Array<number>} */ (renderFeature.getEnds()),\n      );\n    case 'Polygon':\n      const flatCoordinates = renderFeature.getFlatCoordinates();\n      const ends = renderFeature.getEnds();\n      const endss = inflateEnds(flatCoordinates, ends);\n      return endss.length > 1\n        ? new MultiPolygon(flatCoordinates, 'XY', endss)\n        : new Polygon(flatCoordinates, 'XY', ends);\n    default:\n      throw new Error('Invalid geometry type:' + geometryType);\n  }\n}\n\n/**\n * Create an `ol/Feature` from an `ol/render/Feature`\n * @param {RenderFeature} renderFeature RenderFeature\n * @param {string} [geometryName] Geometry name to use\n * when creating the Feature.\n * @return {Feature} Newly constructed `ol/Feature` with properties,\n * geometry, and id copied over.\n * @api\n */\nexport function toFeature(renderFeature, geometryName) {\n  const id = renderFeature.getId();\n  const geometry = toGeometry(renderFeature);\n  const properties = renderFeature.getProperties();\n  const feature = new Feature();\n  if (geometryName !== undefined) {\n    feature.setGeometryName(geometryName);\n  }\n  feature.setGeometry(geometry);\n  if (id !== undefined) {\n    feature.setId(id);\n  }\n  feature.setProperties(properties, true);\n  return feature;\n}\n\nexport default RenderFeature;\n","\n/**\n * Rearranges items so that all items in the [left, k] are the smallest.\n * The k-th element will have the (k - left + 1)-th smallest value in [left, right].\n *\n * @template T\n * @param {T[]} arr the array to partially sort (in place)\n * @param {number} k middle index for partial sorting (as defined above)\n * @param {number} [left=0] left index of the range to sort\n * @param {number} [right=arr.length-1] right index\n * @param {(a: T, b: T) => number} [compare = (a, b) => a - b] compare function\n */\nexport default function quickselect(arr, k, left = 0, right = arr.length - 1, compare = defaultCompare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            const n = right - left + 1;\n            const m = k - left + 1;\n            const z = Math.log(n);\n            const s = 0.5 * Math.exp(2 * z / 3);\n            const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselect(arr, k, newLeft, newRight, compare);\n        }\n\n        const t = arr[k];\n        let i = left;\n        /** @type {number} */\n        let j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\n/**\n * @template T\n * @param {T[]} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @returns {number}\n */\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n","import quickselect from 'quickselect';\n\nexport default class RBush {\n    constructor(maxEntries = 9) {\n        // max entries in a node is 9 by default; min node fill is 40% for best performance\n        this._maxEntries = Math.max(4, maxEntries);\n        this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n        this.clear();\n    }\n\n    all() {\n        return this._all(this.data, []);\n    }\n\n    search(bbox) {\n        let node = this.data;\n        const result = [];\n\n        if (!intersects(bbox, node)) return result;\n\n        const toBBox = this.toBBox;\n        const nodesToSearch = [];\n\n        while (node) {\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf) result.push(child);\n                    else if (contains(bbox, childBBox)) this._all(child, result);\n                    else nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return result;\n    }\n\n    collides(bbox) {\n        let node = this.data;\n\n        if (!intersects(bbox, node)) return false;\n\n        const nodesToSearch = [];\n        while (node) {\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const childBBox = node.leaf ? this.toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf || contains(bbox, childBBox)) return true;\n                    nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return false;\n    }\n\n    load(data) {\n        if (!(data && data.length)) return this;\n\n        if (data.length < this._minEntries) {\n            for (let i = 0; i < data.length; i++) {\n                this.insert(data[i]);\n            }\n            return this;\n        }\n\n        // recursively build the tree with the given data from scratch using OMT algorithm\n        let node = this._build(data.slice(), 0, data.length - 1, 0);\n\n        if (!this.data.children.length) {\n            // save as is if tree is empty\n            this.data = node;\n\n        } else if (this.data.height === node.height) {\n            // split root if trees have the same height\n            this._splitRoot(this.data, node);\n\n        } else {\n            if (this.data.height < node.height) {\n                // swap trees if inserted one is bigger\n                const tmpNode = this.data;\n                this.data = node;\n                node = tmpNode;\n            }\n\n            // insert the small tree into the large tree at appropriate level\n            this._insert(node, this.data.height - node.height - 1, true);\n        }\n\n        return this;\n    }\n\n    insert(item) {\n        if (item) this._insert(item, this.data.height - 1);\n        return this;\n    }\n\n    clear() {\n        this.data = createNode([]);\n        return this;\n    }\n\n    remove(item, equalsFn) {\n        if (!item) return this;\n\n        let node = this.data;\n        const bbox = this.toBBox(item);\n        const path = [];\n        const indexes = [];\n        let i, parent, goingUp;\n\n        // depth-first iterative tree traversal\n        while (node || path.length) {\n\n            if (!node) { // go up\n                node = path.pop();\n                parent = path[path.length - 1];\n                i = indexes.pop();\n                goingUp = true;\n            }\n\n            if (node.leaf) { // check current node\n                const index = findItem(item, node.children, equalsFn);\n\n                if (index !== -1) {\n                    // item found, remove the item and condense tree upwards\n                    node.children.splice(index, 1);\n                    path.push(node);\n                    this._condense(path);\n                    return this;\n                }\n            }\n\n            if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n                path.push(node);\n                indexes.push(i);\n                i = 0;\n                parent = node;\n                node = node.children[0];\n\n            } else if (parent) { // go right\n                i++;\n                node = parent.children[i];\n                goingUp = false;\n\n            } else node = null; // nothing found\n        }\n\n        return this;\n    }\n\n    toBBox(item) { return item; }\n\n    compareMinX(a, b) { return a.minX - b.minX; }\n    compareMinY(a, b) { return a.minY - b.minY; }\n\n    toJSON() { return this.data; }\n\n    fromJSON(data) {\n        this.data = data;\n        return this;\n    }\n\n    _all(node, result) {\n        const nodesToSearch = [];\n        while (node) {\n            if (node.leaf) result.push(...node.children);\n            else nodesToSearch.push(...node.children);\n\n            node = nodesToSearch.pop();\n        }\n        return result;\n    }\n\n    _build(items, left, right, height) {\n\n        const N = right - left + 1;\n        let M = this._maxEntries;\n        let node;\n\n        if (N <= M) {\n            // reached leaf level; return leaf\n            node = createNode(items.slice(left, right + 1));\n            calcBBox(node, this.toBBox);\n            return node;\n        }\n\n        if (!height) {\n            // target height of the bulk-loaded tree\n            height = Math.ceil(Math.log(N) / Math.log(M));\n\n            // target number of root entries to maximize storage utilization\n            M = Math.ceil(N / Math.pow(M, height - 1));\n        }\n\n        node = createNode([]);\n        node.leaf = false;\n        node.height = height;\n\n        // split the items into M mostly square tiles\n\n        const N2 = Math.ceil(N / M);\n        const N1 = N2 * Math.ceil(Math.sqrt(M));\n\n        multiSelect(items, left, right, N1, this.compareMinX);\n\n        for (let i = left; i <= right; i += N1) {\n\n            const right2 = Math.min(i + N1 - 1, right);\n\n            multiSelect(items, i, right2, N2, this.compareMinY);\n\n            for (let j = i; j <= right2; j += N2) {\n\n                const right3 = Math.min(j + N2 - 1, right2);\n\n                // pack each entry recursively\n                node.children.push(this._build(items, j, right3, height - 1));\n            }\n        }\n\n        calcBBox(node, this.toBBox);\n\n        return node;\n    }\n\n    _chooseSubtree(bbox, node, level, path) {\n        while (true) {\n            path.push(node);\n\n            if (node.leaf || path.length - 1 === level) break;\n\n            let minArea = Infinity;\n            let minEnlargement = Infinity;\n            let targetNode;\n\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const area = bboxArea(child);\n                const enlargement = enlargedArea(bbox, child) - area;\n\n                // choose entry with the least area enlargement\n                if (enlargement < minEnlargement) {\n                    minEnlargement = enlargement;\n                    minArea = area < minArea ? area : minArea;\n                    targetNode = child;\n\n                } else if (enlargement === minEnlargement) {\n                    // otherwise choose one with the smallest area\n                    if (area < minArea) {\n                        minArea = area;\n                        targetNode = child;\n                    }\n                }\n            }\n\n            node = targetNode || node.children[0];\n        }\n\n        return node;\n    }\n\n    _insert(item, level, isNode) {\n        const bbox = isNode ? item : this.toBBox(item);\n        const insertPath = [];\n\n        // find the best node for accommodating the item, saving all nodes along the path too\n        const node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n        // put the item into the node\n        node.children.push(item);\n        extend(node, bbox);\n\n        // split on node overflow; propagate upwards if necessary\n        while (level >= 0) {\n            if (insertPath[level].children.length > this._maxEntries) {\n                this._split(insertPath, level);\n                level--;\n            } else break;\n        }\n\n        // adjust bboxes along the insertion path\n        this._adjustParentBBoxes(bbox, insertPath, level);\n    }\n\n    // split overflowed node into two\n    _split(insertPath, level) {\n        const node = insertPath[level];\n        const M = node.children.length;\n        const m = this._minEntries;\n\n        this._chooseSplitAxis(node, m, M);\n\n        const splitIndex = this._chooseSplitIndex(node, m, M);\n\n        const newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n        newNode.height = node.height;\n        newNode.leaf = node.leaf;\n\n        calcBBox(node, this.toBBox);\n        calcBBox(newNode, this.toBBox);\n\n        if (level) insertPath[level - 1].children.push(newNode);\n        else this._splitRoot(node, newNode);\n    }\n\n    _splitRoot(node, newNode) {\n        // split root node\n        this.data = createNode([node, newNode]);\n        this.data.height = node.height + 1;\n        this.data.leaf = false;\n        calcBBox(this.data, this.toBBox);\n    }\n\n    _chooseSplitIndex(node, m, M) {\n        let index;\n        let minOverlap = Infinity;\n        let minArea = Infinity;\n\n        for (let i = m; i <= M - m; i++) {\n            const bbox1 = distBBox(node, 0, i, this.toBBox);\n            const bbox2 = distBBox(node, i, M, this.toBBox);\n\n            const overlap = intersectionArea(bbox1, bbox2);\n            const area = bboxArea(bbox1) + bboxArea(bbox2);\n\n            // choose distribution with minimum overlap\n            if (overlap < minOverlap) {\n                minOverlap = overlap;\n                index = i;\n\n                minArea = area < minArea ? area : minArea;\n\n            } else if (overlap === minOverlap) {\n                // otherwise choose distribution with minimum area\n                if (area < minArea) {\n                    minArea = area;\n                    index = i;\n                }\n            }\n        }\n\n        return index || M - m;\n    }\n\n    // sorts node children by the best axis for split\n    _chooseSplitAxis(node, m, M) {\n        const compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n        const compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n        const xMargin = this._allDistMargin(node, m, M, compareMinX);\n        const yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n        // if total distributions margin value is minimal for x, sort by minX,\n        // otherwise it's already sorted by minY\n        if (xMargin < yMargin) node.children.sort(compareMinX);\n    }\n\n    // total margin of all possible split distributions where each node is at least m full\n    _allDistMargin(node, m, M, compare) {\n        node.children.sort(compare);\n\n        const toBBox = this.toBBox;\n        const leftBBox = distBBox(node, 0, m, toBBox);\n        const rightBBox = distBBox(node, M - m, M, toBBox);\n        let margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n        for (let i = m; i < M - m; i++) {\n            const child = node.children[i];\n            extend(leftBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(leftBBox);\n        }\n\n        for (let i = M - m - 1; i >= m; i--) {\n            const child = node.children[i];\n            extend(rightBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(rightBBox);\n        }\n\n        return margin;\n    }\n\n    _adjustParentBBoxes(bbox, path, level) {\n        // adjust bboxes along the given tree path\n        for (let i = level; i >= 0; i--) {\n            extend(path[i], bbox);\n        }\n    }\n\n    _condense(path) {\n        // go through the path, removing empty nodes and updating bboxes\n        for (let i = path.length - 1, siblings; i >= 0; i--) {\n            if (path[i].children.length === 0) {\n                if (i > 0) {\n                    siblings = path[i - 1].children;\n                    siblings.splice(siblings.indexOf(path[i]), 1);\n\n                } else this.clear();\n\n            } else calcBBox(path[i], this.toBBox);\n        }\n    }\n}\n\nfunction findItem(item, items, equalsFn) {\n    if (!equalsFn) return items.indexOf(item);\n\n    for (let i = 0; i < items.length; i++) {\n        if (equalsFn(item, items[i])) return i;\n    }\n    return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n    distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n    if (!destNode) destNode = createNode(null);\n    destNode.minX = Infinity;\n    destNode.minY = Infinity;\n    destNode.maxX = -Infinity;\n    destNode.maxY = -Infinity;\n\n    for (let i = k; i < p; i++) {\n        const child = node.children[i];\n        extend(destNode, node.leaf ? toBBox(child) : child);\n    }\n\n    return destNode;\n}\n\nfunction extend(a, b) {\n    a.minX = Math.min(a.minX, b.minX);\n    a.minY = Math.min(a.minY, b.minY);\n    a.maxX = Math.max(a.maxX, b.maxX);\n    a.maxY = Math.max(a.maxY, b.maxY);\n    return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a)   { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n    return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n           (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n    const minX = Math.max(a.minX, b.minX);\n    const minY = Math.max(a.minY, b.minY);\n    const maxX = Math.min(a.maxX, b.maxX);\n    const maxY = Math.min(a.maxY, b.maxY);\n\n    return Math.max(0, maxX - minX) *\n           Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n    return a.minX <= b.minX &&\n           a.minY <= b.minY &&\n           b.maxX <= a.maxX &&\n           b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n    return b.minX <= a.maxX &&\n           b.minY <= a.maxY &&\n           b.maxX >= a.minX &&\n           b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n    return {\n        children,\n        height: 1,\n        leaf: true,\n        minX: Infinity,\n        minY: Infinity,\n        maxX: -Infinity,\n        maxY: -Infinity\n    };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n    const stack = [left, right];\n\n    while (stack.length) {\n        right = stack.pop();\n        left = stack.pop();\n\n        if (right - left <= n) continue;\n\n        const mid = left + Math.ceil((right - left) / n / 2) * n;\n        quickselect(arr, mid, left, right, compare);\n\n        stack.push(left, mid, mid, right);\n    }\n}\n","/**\n * @module ol/structs/RBush\n */\nimport RBush_ from 'rbush';\nimport {createOrUpdate, equals} from '../extent.js';\nimport {isEmpty} from '../obj.js';\nimport {getUid} from '../util.js';\n\n/**\n * @typedef {import(\"rbush\").BBox & {value: T}} Entry\n * @template T\n */\n\n/**\n * @classdesc\n * Wrapper around the RBush by Vladimir Agafonkin.\n * See https://github.com/mourner/rbush.\n *\n * @template {Object} T\n */\nclass RBush {\n  /**\n   * @param {number} [maxEntries] Max entries.\n   */\n  constructor(maxEntries) {\n    /**\n     * @private\n     * @type {RBush_<Entry<T>>}\n     */\n    this.rbush_ = new RBush_(maxEntries);\n\n    /**\n     * A mapping between the objects added to this rbush wrapper\n     * and the objects that are actually added to the internal rbush.\n     * @private\n     * @type {Object<string, Entry<T>>}\n     */\n    this.items_ = {};\n  }\n\n  /**\n   * Insert a value into the RBush.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {T} value Value.\n   */\n  insert(extent, value) {\n    /** @type {Entry<T>} */\n    const item = {\n      minX: extent[0],\n      minY: extent[1],\n      maxX: extent[2],\n      maxY: extent[3],\n      value: value,\n    };\n\n    this.rbush_.insert(item);\n    this.items_[getUid(value)] = item;\n  }\n\n  /**\n   * Bulk-insert values into the RBush.\n   * @param {Array<import(\"../extent.js\").Extent>} extents Extents.\n   * @param {Array<T>} values Values.\n   */\n  load(extents, values) {\n    const items = new Array(values.length);\n    for (let i = 0, l = values.length; i < l; i++) {\n      const extent = extents[i];\n      const value = values[i];\n\n      /** @type {Entry<T>} */\n      const item = {\n        minX: extent[0],\n        minY: extent[1],\n        maxX: extent[2],\n        maxY: extent[3],\n        value: value,\n      };\n      items[i] = item;\n      this.items_[getUid(value)] = item;\n    }\n    this.rbush_.load(items);\n  }\n\n  /**\n   * Remove a value from the RBush.\n   * @param {T} value Value.\n   * @return {boolean} Removed.\n   */\n  remove(value) {\n    const uid = getUid(value);\n\n    // get the object in which the value was wrapped when adding to the\n    // internal rbush. then use that object to do the removal.\n    const item = this.items_[uid];\n    delete this.items_[uid];\n    return this.rbush_.remove(item) !== null;\n  }\n\n  /**\n   * Update the extent of a value in the RBush.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {T} value Value.\n   */\n  update(extent, value) {\n    const item = this.items_[getUid(value)];\n    const bbox = [item.minX, item.minY, item.maxX, item.maxY];\n    if (!equals(bbox, extent)) {\n      this.remove(value);\n      this.insert(extent, value);\n    }\n  }\n\n  /**\n   * Return all values in the RBush.\n   * @return {Array<T>} All.\n   */\n  getAll() {\n    const items = this.rbush_.all();\n    return items.map(function (item) {\n      return item.value;\n    });\n  }\n\n  /**\n   * Return all values in the given extent.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {Array<T>} All in extent.\n   */\n  getInExtent(extent) {\n    /** @type {import(\"rbush\").BBox} */\n    const bbox = {\n      minX: extent[0],\n      minY: extent[1],\n      maxX: extent[2],\n      maxY: extent[3],\n    };\n    const items = this.rbush_.search(bbox);\n    return items.map(function (item) {\n      return item.value;\n    });\n  }\n\n  /**\n   * Calls a callback function with each value in the tree.\n   * If the callback returns a truthy value, this value is returned without\n   * checking the rest of the tree.\n   * @param {function(T): R} callback Callback.\n   * @return {R|undefined} Callback return value.\n   * @template R\n   */\n  forEach(callback) {\n    return this.forEach_(this.getAll(), callback);\n  }\n\n  /**\n   * Calls a callback function with each value in the provided extent.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {function(T): R} callback Callback.\n   * @return {R|undefined} Callback return value.\n   * @template R\n   */\n  forEachInExtent(extent, callback) {\n    return this.forEach_(this.getInExtent(extent), callback);\n  }\n\n  /**\n   * @param {Array<T>} values Values.\n   * @param {function(T): R} callback Callback.\n   * @return {R|undefined} Callback return value.\n   * @template R\n   * @private\n   */\n  forEach_(values, callback) {\n    let result;\n    for (let i = 0, l = values.length; i < l; i++) {\n      result = callback(values[i]);\n      if (result) {\n        return result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return isEmpty(this.items_);\n  }\n\n  /**\n   * Remove all values from the RBush.\n   */\n  clear() {\n    this.rbush_.clear();\n    this.items_ = {};\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} [extent] Extent.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   */\n  getExtent(extent) {\n    const data = this.rbush_.toJSON();\n    return createOrUpdate(data.minX, data.minY, data.maxX, data.maxY, extent);\n  }\n\n  /**\n   * @param {RBush<T>} rbush R-Tree.\n   */\n  concat(rbush) {\n    this.rbush_.load(rbush.rbush_.all());\n    for (const i in rbush.items_) {\n      this.items_[i] = rbush.items_[i];\n    }\n  }\n}\n\nexport default RBush;\n","/**\n * @module ol/source/Source\n */\nimport BaseObject from '../Object.js';\nimport {get as getProjection} from '../proj.js';\n\n/**\n * @typedef {'undefined' | 'loading' | 'ready' | 'error'} State\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\n\n/**\n * A function that takes a {@link import(\"../View.js\").ViewStateLayerStateExtent} and returns a string or\n * an array of strings representing source attributions.\n *\n * @typedef {function(import(\"../View.js\").ViewStateLayerStateExtent): (string|Array<string>)} Attribution\n */\n\n/**\n * A type that can be used to provide attribution information for data sources.\n *\n * It represents either\n * a simple string (e.g. `'© Acme Inc.'`)\n * an array of simple strings (e.g. `['© Acme Inc.', '© Bacme Inc.']`)\n * a function that returns a string or array of strings ({@link module:ol/source/Source~Attribution})\n *\n * @typedef {string|Array<string>|Attribution} AttributionLike\n */\n\n/**\n * @typedef {Object} Options\n * @property {AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {import(\"./Source.js\").State} [state='ready'] State.\n * @property {boolean} [wrapX=false] WrapX.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\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 {@link module:ol/layer/Layer~Layer} sources.\n *\n * A generic `change` event is triggered when the state of the source changes.\n * @abstract\n * @api\n */\nclass Source extends BaseObject {\n  /**\n   * @param {Options} options Source options.\n   */\n  constructor(options) {\n    super();\n\n    /**\n     * @protected\n     * @type {import(\"../proj/Projection.js\").default|null}\n     */\n    this.projection = getProjection(options.projection);\n\n    /**\n     * @private\n     * @type {?Attribution}\n     */\n    this.attributions_ = adaptAttributions(options.attributions);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.attributionsCollapsible_ = options.attributionsCollapsible ?? true;\n\n    /**\n     * This source is currently loading data. Sources that defer loading to the\n     * map's tile queue never set this to `true`.\n     * @type {boolean}\n     */\n    this.loading = false;\n\n    /**\n     * @private\n     * @type {import(\"./Source.js\").State}\n     */\n    this.state_ = options.state !== undefined ? options.state : 'ready';\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.wrapX_ = options.wrapX !== undefined ? options.wrapX : false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.interpolate_ = !!options.interpolate;\n\n    /**\n     * @protected\n     * @type {function(import(\"../View.js\").ViewOptions):void}\n     */\n    this.viewResolver = null;\n\n    /**\n     * @protected\n     * @type {function(Error):void}\n     */\n    this.viewRejector = null;\n\n    const self = this;\n    /**\n     * @private\n     * @type {Promise<import(\"../View.js\").ViewOptions>}\n     */\n    this.viewPromise_ = new Promise(function (resolve, reject) {\n      self.viewResolver = resolve;\n      self.viewRejector = reject;\n    });\n  }\n\n  /**\n   * Get the attribution function for the source.\n   * @return {?Attribution} Attribution function.\n   * @api\n   */\n  getAttributions() {\n    return this.attributions_;\n  }\n\n  /**\n   * @return {boolean} Attributions are collapsible.\n   * @api\n   */\n  getAttributionsCollapsible() {\n    return this.attributionsCollapsible_;\n  }\n\n  /**\n   * Get the projection of the source.\n   * @return {import(\"../proj/Projection.js\").default|null} Projection.\n   * @api\n   */\n  getProjection() {\n    return this.projection;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection\").default} [projection] Projection.\n   * @return {Array<number>|null} Resolutions.\n   */\n  getResolutions(projection) {\n    return null;\n  }\n\n  /**\n   * @return {Promise<import(\"../View.js\").ViewOptions>} A promise for view-related properties.\n   */\n  getView() {\n    return this.viewPromise_;\n  }\n\n  /**\n   * Get the state of the source, see {@link import(\"./Source.js\").State} for possible states.\n   * @return {import(\"./Source.js\").State} State.\n   * @api\n   */\n  getState() {\n    return this.state_;\n  }\n\n  /**\n   * @return {boolean|undefined} Wrap X.\n   */\n  getWrapX() {\n    return this.wrapX_;\n  }\n\n  /**\n   * @return {boolean} Use linear interpolation when resampling.\n   */\n  getInterpolate() {\n    return this.interpolate_;\n  }\n\n  /**\n   * Refreshes the source. The source will be cleared, and data from the server will be reloaded.\n   * @api\n   */\n  refresh() {\n    this.changed();\n  }\n\n  /**\n   * Set the attributions of the source.\n   * @param {AttributionLike|undefined} attributions Attributions.\n   *     Can be passed as `string`, `Array<string>`, {@link module:ol/source/Source~Attribution},\n   *     or `undefined`.\n   * @api\n   */\n  setAttributions(attributions) {\n    this.attributions_ = adaptAttributions(attributions);\n    this.changed();\n  }\n\n  /**\n   * Set the state of the source.\n   * @param {import(\"./Source.js\").State} state State.\n   */\n  setState(state) {\n    this.state_ = state;\n    this.changed();\n  }\n}\n\n/**\n * Turns the attributions option into an attributions function.\n * @param {AttributionLike|undefined} attributionLike The attribution option.\n * @return {Attribution|null} An attribution function (or null).\n */\nfunction adaptAttributions(attributionLike) {\n  if (!attributionLike) {\n    return null;\n  }\n  if (typeof attributionLike === 'function') {\n    return attributionLike;\n  }\n  if (!Array.isArray(attributionLike)) {\n    attributionLike = [attributionLike];\n  }\n  return (frameState) => attributionLike;\n}\n\nexport default Source;\n","/**\n * @module ol/source/VectorEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered when a feature is added to the source.\n   * @event module:ol/source/Vector.VectorSourceEvent#addfeature\n   * @api\n   */\n  ADDFEATURE: 'addfeature',\n\n  /**\n   * Triggered when a feature is updated.\n   * @event module:ol/source/Vector.VectorSourceEvent#changefeature\n   * @api\n   */\n  CHANGEFEATURE: 'changefeature',\n\n  /**\n   * Triggered when the clear method is called on the source.\n   * @event module:ol/source/Vector.VectorSourceEvent#clear\n   * @api\n   */\n  CLEAR: 'clear',\n\n  /**\n   * Triggered when a feature is removed from the source.\n   * See {@link module:ol/source/Vector~VectorSource#clear source.clear()} for exceptions.\n   * @event module:ol/source/Vector.VectorSourceEvent#removefeature\n   * @api\n   */\n  REMOVEFEATURE: 'removefeature',\n\n  /**\n   * Triggered when features starts loading.\n   * @event module:ol/source/Vector.VectorSourceEvent#featuresloadstart\n   * @api\n   */\n  FEATURESLOADSTART: 'featuresloadstart',\n\n  /**\n   * Triggered when features finishes loading.\n   * @event module:ol/source/Vector.VectorSourceEvent#featuresloadend\n   * @api\n   */\n  FEATURESLOADEND: 'featuresloadend',\n\n  /**\n   * Triggered if feature loading results in an error.\n   * @event module:ol/source/Vector.VectorSourceEvent#featuresloaderror\n   * @api\n   */\n  FEATURESLOADERROR: 'featuresloaderror',\n};\n\n/**\n * @typedef {'addfeature'|'changefeature'|'clear'|'removefeature'|'featuresloadstart'|'featuresloadend'|'featuresloaderror'} VectorSourceEventTypes\n */\n","/**\n * @module ol/source/Vector\n */\n\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {extend} from '../array.js';\nimport {assert} from '../asserts.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {containsExtent, equals, wrapAndSliceX} from '../extent.js';\nimport {xhr} from '../featureloader.js';\nimport {TRUE, VOID} from '../functions.js';\nimport {all as allStrategy} from '../loadingstrategy.js';\nimport {isEmpty} from '../obj.js';\nimport RenderFeature from '../render/Feature.js';\nimport RBush from '../structs/RBush.js';\nimport {getUid} from '../util.js';\nimport Source from './Source.js';\nimport VectorEventType from './VectorEventType.js';\n\n/**\n * A function that takes an {@link module:ol/extent~Extent} and a resolution as arguments, and\n * returns an array of {@link module:ol/extent~Extent} with the extents to load. Usually this\n * is one of the standard {@link module:ol/loadingstrategy} strategies.\n *\n * @typedef {function(import(\"../extent.js\").Extent, number, import(\"../proj/Projection.js\").default): Array<import(\"../extent.js\").Extent>} LoadingStrategy\n * @api\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Vector~VectorSource} instances are instances of this\n * type.\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n */\nexport class VectorSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {FeatureType} [feature] Feature.\n   * @param {Array<FeatureType>} [features] Features.\n   */\n  constructor(type, feature, features) {\n    super(type);\n\n    /**\n     * The added or removed feature for the `ADDFEATURE` and `REMOVEFEATURE` events, `undefined` otherwise.\n     * @type {FeatureType|undefined}\n     * @api\n     */\n    this.feature = feature;\n\n    /**\n     * The loaded features for the `FEATURESLOADED` event, `undefined` otherwise.\n     * @type {Array<FeatureType>|undefined}\n     * @api\n     */\n    this.features = features;\n  }\n}\n\n/***\n * @template {import(\"../Feature.js\").FeatureLike} [T=import(\"../Feature.js\").default]\n * @typedef {T extends RenderFeature ? T|Array<T> : T} FeatureClassOrArrayOfRenderFeatures\n */\n\n/***\n * @template Return\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./VectorEventType\").VectorSourceEventTypes, VectorSourceEvent<FeatureType>, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     import(\"./VectorEventType\").VectorSourceEventTypes, Return>} VectorSourceOnSignature\n */\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {Array<FeatureType>|Collection<FeatureType>} [features]\n * Features. If provided as {@link module:ol/Collection~Collection}, the features in the source\n * and the collection will stay in sync.\n * @property {import(\"../format/Feature.js\").default<FeatureType>} [format] The feature format used by the XHR\n * feature loader when `url` is set. Required if `url` is set, otherwise ignored.\n * @property {import(\"../featureloader.js\").FeatureLoader<FeatureType>} [loader]\n * The loader function used to load features, from a remote source for example.\n * If this is not set and `url` is set, the source will create and use an XHR\n * feature loader. The `'featuresloadend'` and `'featuresloaderror'` events\n * will only fire if the `success` and `failure` callbacks are used.\n *\n * Example:\n *\n * ```js\n * import Vector from 'ol/source/Vector.js';\n * import GeoJSON from 'ol/format/GeoJSON.js';\n * import {bbox} from 'ol/loadingstrategy.js';\n *\n * const vectorSource = new Vector({\n *   format: new GeoJSON(),\n *   loader: function(extent, resolution, projection, success, failure) {\n *      const proj = projection.getCode();\n *      const url = 'https://ahocevar.com/geoserver/wfs?service=WFS&' +\n *          'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +\n *          'outputFormat=application/json&srsname=' + proj + '&' +\n *          'bbox=' + extent.join(',') + ',' + proj;\n *      const xhr = new XMLHttpRequest();\n *      xhr.open('GET', url);\n *      const onError = function() {\n *        vectorSource.removeLoadedExtent(extent);\n *        failure();\n *      }\n *      xhr.onerror = onError;\n *      xhr.onload = function() {\n *        if (xhr.status == 200) {\n *          const features = vectorSource.getFormat().readFeatures(xhr.responseText);\n *          vectorSource.addFeatures(features);\n *          success(features);\n *        } else {\n *          onError();\n *        }\n *      }\n *      xhr.send();\n *    },\n *    strategy: bbox,\n *  });\n * ```\n * @property {boolean} [overlaps=true] This source may have overlapping geometries.\n * Setting this to `false` (e.g. for sources with polygons that represent administrative\n * boundaries or TopoJSON sources) allows the renderer to optimise fill and\n * stroke operations.\n * @property {LoadingStrategy} [strategy] The loading strategy to use.\n * By default an {@link module:ol/loadingstrategy.all}\n * strategy is used, a one-off strategy which loads all features at once.\n * @property {string|import(\"../featureloader.js\").FeatureUrlFunction} [url]\n * Setting this option instructs the source to load features using an XHR loader\n * (see {@link module:ol/featureloader.xhr}). Use a `string` and an\n * {@link module:ol/loadingstrategy.all} for a one-off download of all features from\n * the given URL. Use a {@link module:ol/featureloader~FeatureUrlFunction} to generate the url with\n * other loading strategies.\n * Requires `format` to be set as well.\n * When default XHR feature loader is provided, the features will\n * be transformed from the data projection to the view projection\n * during parsing. If your remote data source does not advertise its projection\n * properly, this transformation will be incorrect. For some formats, the\n * default projection (usually EPSG:4326) can be overridden by setting the\n * dataProjection constructor option on the format.\n * Note that if a source contains non-feature data, such as a GeoJSON geometry\n * or a KML NetworkLink, these will be ignored. Use a custom loader to load these.\n * @property {boolean} [useSpatialIndex=true]\n * By default, an RTree is used as spatial index. When features are removed and\n * added frequently, and the total number of features is low, setting this to\n * `false` may improve performance.\n *\n * Note that\n * {@link module:ol/source/Vector~VectorSource#getFeaturesInExtent},\n * {@link module:ol/source/Vector~VectorSource#getClosestFeatureToCoordinate} and\n * {@link module:ol/source/Vector~VectorSource#getExtent} cannot be used when `useSpatialIndex` is\n * set to `false`, and {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent} will loop\n * through all features.\n *\n * When set to `false`, the features will be maintained in an\n * {@link module:ol/Collection~Collection}, which can be retrieved through\n * {@link module:ol/source/Vector~VectorSource#getFeaturesCollection}.\n * @property {boolean} [wrapX=true] Wrap the world horizontally. For vector editing across the\n * -180° and 180° meridians to work properly, this should be set to `false`. The\n * resulting geometry coordinates will then exceed the world bounds.\n */\n\n/**\n * @classdesc\n * Provides a source of features for vector layers. Vector features provided\n * by this source are suitable for editing. See {@link module:ol/source/VectorTile~VectorTile} for\n * vector data that is optimized for rendering.\n *\n * @fires VectorSourceEvent\n * @api\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n */\nclass VectorSource extends Source {\n  /**\n   * @param {Options<FeatureType>} [options] Vector source options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    super({\n      attributions: options.attributions,\n      interpolate: true,\n      projection: undefined,\n      state: 'ready',\n      wrapX: options.wrapX !== undefined ? options.wrapX : true,\n    });\n\n    /***\n     * @type {VectorSourceOnSignature<import(\"../events\").EventsKey, FeatureType>}\n     */\n    this.on;\n\n    /***\n     * @type {VectorSourceOnSignature<import(\"../events\").EventsKey, FeatureType>}\n     */\n    this.once;\n\n    /***\n     * @type {VectorSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {import(\"../featureloader.js\").FeatureLoader<import(\"../Feature.js\").FeatureLike>}\n     */\n    this.loader_ = VOID;\n\n    /**\n     * @private\n     * @type {import(\"../format/Feature.js\").default<FeatureType>|null}\n     */\n    this.format_ = options.format || null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overlaps_ = options.overlaps === undefined ? true : options.overlaps;\n\n    /**\n     * @private\n     * @type {string|import(\"../featureloader.js\").FeatureUrlFunction|undefined}\n     */\n    this.url_ = options.url;\n\n    if (options.loader !== undefined) {\n      this.loader_ = options.loader;\n    } else if (this.url_ !== undefined) {\n      assert(this.format_, '`format` must be set when `url` is set');\n      // create a XHR feature loader for \"url\" and \"format\"\n      this.loader_ = xhr(this.url_, this.format_);\n    }\n\n    /**\n     * @private\n     * @type {LoadingStrategy}\n     */\n    this.strategy_ =\n      options.strategy !== undefined ? options.strategy : allStrategy;\n\n    const useSpatialIndex =\n      options.useSpatialIndex !== undefined ? options.useSpatialIndex : true;\n\n    /**\n     * @private\n     * @type {RBush<FeatureType>}\n     */\n    this.featuresRtree_ = useSpatialIndex ? new RBush() : null;\n\n    /**\n     * @private\n     * @type {RBush<{extent: import(\"../extent.js\").Extent}>}\n     */\n    this.loadedExtentsRtree_ = new RBush();\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.loadingExtentsCount_ = 0;\n\n    /**\n     * @private\n     * @type {!Object<string, FeatureType>}\n     */\n    this.nullGeometryFeatures_ = {};\n\n    /**\n     * A lookup of features by id (the return from feature.getId()).\n     * @private\n     * @type {!Object<string, import('../Feature.js').FeatureLike|Array<import('../Feature.js').FeatureLike>>}\n     */\n    this.idIndex_ = {};\n\n    /**\n     * A lookup of features by uid (using getUid(feature)).\n     * @private\n     * @type {!Object<string, FeatureType>}\n     */\n    this.uidIndex_ = {};\n\n    /**\n     * @private\n     * @type {Object<string, Array<import(\"../events.js\").EventsKey>>}\n     */\n    this.featureChangeKeys_ = {};\n\n    /**\n     * @private\n     * @type {Collection<FeatureType>|null}\n     */\n    this.featuresCollection_ = null;\n\n    /** @type {Collection<FeatureType>} */\n    let collection;\n    /** @type {Array<FeatureType>} */\n    let features;\n    if (Array.isArray(options.features)) {\n      features = options.features;\n    } else if (options.features) {\n      collection = options.features;\n      features = collection.getArray();\n    }\n    if (!useSpatialIndex && collection === undefined) {\n      collection = new Collection(features);\n    }\n    if (features !== undefined) {\n      this.addFeaturesInternal(features);\n    }\n    if (collection !== undefined) {\n      this.bindFeaturesCollection_(collection);\n    }\n  }\n\n  /**\n   * Add a single feature to the source.  If you want to add a batch of features\n   * at once, call {@link module:ol/source/Vector~VectorSource#addFeatures #addFeatures()}\n   * instead. A feature will not be added to the source if feature with\n   * the same id is already there. The reason for this behavior is to avoid\n   * feature duplication when using bbox or tile loading strategies.\n   * Note: this also applies if a {@link module:ol/Collection~Collection} is used for features,\n   * meaning that if a feature with a duplicate id is added in the collection, it will\n   * be removed from it right away.\n   * @param {FeatureType} feature Feature to add.\n   * @api\n   */\n  addFeature(feature) {\n    this.addFeatureInternal(feature);\n    this.changed();\n  }\n\n  /**\n   * Add a feature without firing a `change` event.\n   * @param {FeatureType} feature Feature.\n   * @protected\n   */\n  addFeatureInternal(feature) {\n    const featureKey = getUid(feature);\n\n    if (!this.addToIndex_(featureKey, feature)) {\n      if (this.featuresCollection_) {\n        this.featuresCollection_.remove(feature);\n      }\n      return;\n    }\n\n    this.setupChangeEvents_(featureKey, feature);\n\n    const geometry = feature.getGeometry();\n    if (geometry) {\n      const extent = geometry.getExtent();\n      if (this.featuresRtree_) {\n        this.featuresRtree_.insert(extent, feature);\n      }\n    } else {\n      this.nullGeometryFeatures_[featureKey] = feature;\n    }\n\n    this.dispatchEvent(\n      new VectorSourceEvent(VectorEventType.ADDFEATURE, feature),\n    );\n  }\n\n  /**\n   * @param {string} featureKey Unique identifier for the feature.\n   * @param {FeatureType} feature The feature.\n   * @private\n   */\n  setupChangeEvents_(featureKey, feature) {\n    if (feature instanceof RenderFeature) {\n      return;\n    }\n    this.featureChangeKeys_[featureKey] = [\n      listen(feature, EventType.CHANGE, this.handleFeatureChange_, this),\n      listen(\n        feature,\n        ObjectEventType.PROPERTYCHANGE,\n        this.handleFeatureChange_,\n        this,\n      ),\n    ];\n  }\n\n  /**\n   * @param {string} featureKey Unique identifier for the feature.\n   * @param {FeatureType} feature The feature.\n   * @return {boolean} The feature is \"valid\", in the sense that it is also a\n   *     candidate for insertion into the Rtree.\n   * @private\n   */\n  addToIndex_(featureKey, feature) {\n    let valid = true;\n    if (feature.getId() !== undefined) {\n      const id = String(feature.getId());\n      if (!(id in this.idIndex_)) {\n        this.idIndex_[id] = feature;\n      } else if (feature instanceof RenderFeature) {\n        const indexedFeature = this.idIndex_[id];\n        if (!(indexedFeature instanceof RenderFeature)) {\n          valid = false;\n        } else if (!Array.isArray(indexedFeature)) {\n          this.idIndex_[id] = [indexedFeature, feature];\n        } else {\n          indexedFeature.push(feature);\n        }\n      } else {\n        valid = false;\n      }\n    }\n    if (valid) {\n      assert(\n        !(featureKey in this.uidIndex_),\n        'The passed `feature` was already added to the source',\n      );\n      this.uidIndex_[featureKey] = feature;\n    }\n    return valid;\n  }\n\n  /**\n   * Add a batch of features to the source.\n   * @param {Array<FeatureType>} features Features to add.\n   * @api\n   */\n  addFeatures(features) {\n    this.addFeaturesInternal(features);\n    this.changed();\n  }\n\n  /**\n   * Add features without firing a `change` event.\n   * @param {Array<FeatureType>} features Features.\n   * @protected\n   */\n  addFeaturesInternal(features) {\n    const extents = [];\n    /** @type {Array<FeatureType>} */\n    const newFeatures = [];\n    /** @type {Array<FeatureType>} */\n    const geometryFeatures = [];\n\n    for (let i = 0, length = features.length; i < length; i++) {\n      const feature = features[i];\n      const featureKey = getUid(feature);\n      if (this.addToIndex_(featureKey, feature)) {\n        newFeatures.push(feature);\n      }\n    }\n\n    for (let i = 0, length = newFeatures.length; i < length; i++) {\n      const feature = newFeatures[i];\n      const featureKey = getUid(feature);\n      this.setupChangeEvents_(featureKey, feature);\n\n      const geometry = feature.getGeometry();\n      if (geometry) {\n        const extent = geometry.getExtent();\n        extents.push(extent);\n        geometryFeatures.push(feature);\n      } else {\n        this.nullGeometryFeatures_[featureKey] = feature;\n      }\n    }\n    if (this.featuresRtree_) {\n      this.featuresRtree_.load(extents, geometryFeatures);\n    }\n\n    if (this.hasListener(VectorEventType.ADDFEATURE)) {\n      for (let i = 0, length = newFeatures.length; i < length; i++) {\n        this.dispatchEvent(\n          new VectorSourceEvent(VectorEventType.ADDFEATURE, newFeatures[i]),\n        );\n      }\n    }\n  }\n\n  /**\n   * @param {!Collection<FeatureType>} collection Collection.\n   * @private\n   */\n  bindFeaturesCollection_(collection) {\n    let modifyingCollection = false;\n    this.addEventListener(\n      VectorEventType.ADDFEATURE,\n      /**\n       * @param {VectorSourceEvent<FeatureType>} evt The vector source event\n       */\n      function (evt) {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          collection.push(evt.feature);\n          modifyingCollection = false;\n        }\n      },\n    );\n    this.addEventListener(\n      VectorEventType.REMOVEFEATURE,\n      /**\n       * @param {VectorSourceEvent<FeatureType>} evt The vector source event\n       */\n      function (evt) {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          collection.remove(evt.feature);\n          modifyingCollection = false;\n        }\n      },\n    );\n    collection.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"../Collection.js\").CollectionEvent<FeatureType>} evt The collection event\n       */\n      (evt) => {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          this.addFeature(evt.element);\n          modifyingCollection = false;\n        }\n      },\n    );\n    collection.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"../Collection.js\").CollectionEvent<FeatureType>} evt The collection event\n       */\n      (evt) => {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          this.removeFeature(evt.element);\n          modifyingCollection = false;\n        }\n      },\n    );\n    this.featuresCollection_ = collection;\n  }\n\n  /**\n   * Remove all features from the source.\n   * @param {boolean} [fast] Skip dispatching of {@link module:ol/source/Vector.VectorSourceEvent#event:removefeature} events.\n   * @api\n   */\n  clear(fast) {\n    if (fast) {\n      for (const featureId in this.featureChangeKeys_) {\n        const keys = this.featureChangeKeys_[featureId];\n        keys.forEach(unlistenByKey);\n      }\n      if (!this.featuresCollection_) {\n        this.featureChangeKeys_ = {};\n        this.idIndex_ = {};\n        this.uidIndex_ = {};\n      }\n    } else {\n      if (this.featuresRtree_) {\n        this.featuresRtree_.forEach((feature) => {\n          this.removeFeatureInternal(feature);\n        });\n        for (const id in this.nullGeometryFeatures_) {\n          this.removeFeatureInternal(this.nullGeometryFeatures_[id]);\n        }\n      }\n    }\n    if (this.featuresCollection_) {\n      this.featuresCollection_.clear();\n    }\n\n    if (this.featuresRtree_) {\n      this.featuresRtree_.clear();\n    }\n    this.nullGeometryFeatures_ = {};\n\n    const clearEvent = new VectorSourceEvent(VectorEventType.CLEAR);\n    this.dispatchEvent(clearEvent);\n    this.changed();\n  }\n\n  /**\n   * Iterate through all features on the source, calling the provided callback\n   * with each one.  If the callback returns any \"truthy\" value, iteration will\n   * stop and the function will return the same value.\n   * Note: this function only iterate through the feature that have a defined geometry.\n   *\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     on the source.  Return a truthy value to stop iteration.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   * @api\n   */\n  forEachFeature(callback) {\n    if (this.featuresRtree_) {\n      return this.featuresRtree_.forEach(callback);\n    }\n    if (this.featuresCollection_) {\n      this.featuresCollection_.forEach(callback);\n    }\n  }\n\n  /**\n   * Iterate through all features whose geometries contain the provided\n   * coordinate, calling the callback with each feature.  If the callback returns\n   * a \"truthy\" value, iteration will stop and the function will return the same\n   * value.\n   *\n   * For {@link module:ol/render/Feature~RenderFeature} features, the callback will be\n   * called for all features.\n   *\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     whose goemetry contains the provided coordinate.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   */\n  forEachFeatureAtCoordinateDirect(coordinate, callback) {\n    const extent = [coordinate[0], coordinate[1], coordinate[0], coordinate[1]];\n    return this.forEachFeatureInExtent(extent, function (feature) {\n      const geometry = feature.getGeometry();\n      if (\n        geometry instanceof RenderFeature ||\n        geometry.intersectsCoordinate(coordinate)\n      ) {\n        return callback(feature);\n      }\n      return undefined;\n    });\n  }\n\n  /**\n   * Iterate through all features whose bounding box intersects the provided\n   * extent (note that the feature's geometry may not intersect the extent),\n   * calling the callback with each feature.  If the callback returns a \"truthy\"\n   * value, iteration will stop and the function will return the same value.\n   *\n   * If you are interested in features whose geometry intersects an extent, call\n   * the {@link module:ol/source/Vector~VectorSource#forEachFeatureIntersectingExtent #forEachFeatureIntersectingExtent()} method instead.\n   *\n   * When `useSpatialIndex` is set to false, this method will loop through all\n   * features, equivalent to {@link module:ol/source/Vector~VectorSource#forEachFeature #forEachFeature()}.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     whose bounding box intersects the provided extent.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   * @api\n   */\n  forEachFeatureInExtent(extent, callback) {\n    if (this.featuresRtree_) {\n      return this.featuresRtree_.forEachInExtent(extent, callback);\n    }\n    if (this.featuresCollection_) {\n      this.featuresCollection_.forEach(callback);\n    }\n  }\n\n  /**\n   * Iterate through all features whose geometry intersects the provided extent,\n   * calling the callback with each feature.  If the callback returns a \"truthy\"\n   * value, iteration will stop and the function will return the same value.\n   *\n   * If you only want to test for bounding box intersection, call the\n   * {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent #forEachFeatureInExtent()} method instead.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     whose geometry intersects the provided extent.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   * @api\n   */\n  forEachFeatureIntersectingExtent(extent, callback) {\n    return this.forEachFeatureInExtent(\n      extent,\n      /**\n       * @param {FeatureType} feature Feature.\n       * @return {T|undefined} The return value from the last call to the callback.\n       */\n      function (feature) {\n        const geometry = feature.getGeometry();\n        if (\n          geometry instanceof RenderFeature ||\n          geometry.intersectsExtent(extent)\n        ) {\n          const result = callback(feature);\n          if (result) {\n            return result;\n          }\n        }\n      },\n    );\n  }\n\n  /**\n   * Get the features collection associated with this source. Will be `null`\n   * unless the source was configured with `useSpatialIndex` set to `false`, or\n   * with a {@link module:ol/Collection~Collection} as `features`.\n   * @return {Collection<FeatureType>|null} The collection of features.\n   * @api\n   */\n  getFeaturesCollection() {\n    return this.featuresCollection_;\n  }\n\n  /**\n   * Get a snapshot of the features currently on the source in random order. The returned array\n   * is a copy, the features are references to the features in the source.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeatures() {\n    let features;\n    if (this.featuresCollection_) {\n      features = this.featuresCollection_.getArray().slice(0);\n    } else if (this.featuresRtree_) {\n      features = this.featuresRtree_.getAll();\n      if (!isEmpty(this.nullGeometryFeatures_)) {\n        extend(features, Object.values(this.nullGeometryFeatures_));\n      }\n    }\n    return features;\n  }\n\n  /**\n   * Get all features whose geometry intersects the provided coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeaturesAtCoordinate(coordinate) {\n    /** @type {Array<FeatureType>} */\n    const features = [];\n    this.forEachFeatureAtCoordinateDirect(coordinate, function (feature) {\n      features.push(feature);\n    });\n    return features;\n  }\n\n  /**\n   * Get all features whose bounding box intersects the provided extent.  Note that this returns an array of\n   * all features intersecting the given extent in random order (so it may include\n   * features whose geometries do not intersect the extent).\n   *\n   * When `useSpatialIndex` is set to false, this method will return all\n   * features.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {import(\"../proj/Projection.js\").default} [projection] Include features\n   * where `extent` exceeds the x-axis bounds of `projection` and wraps around the world.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeaturesInExtent(extent, projection) {\n    if (this.featuresRtree_) {\n      const multiWorld = projection && projection.canWrapX() && this.getWrapX();\n\n      if (!multiWorld) {\n        return this.featuresRtree_.getInExtent(extent);\n      }\n\n      const extents = wrapAndSliceX(extent, projection);\n\n      return [].concat(\n        ...extents.map((anExtent) => this.featuresRtree_.getInExtent(anExtent)),\n      );\n    }\n    if (this.featuresCollection_) {\n      return this.featuresCollection_.getArray().slice(0);\n    }\n    return [];\n  }\n\n  /**\n   * Get the closest feature to the provided coordinate.\n   *\n   * This method is not available when the source is configured with\n   * `useSpatialIndex` set to `false` and the features in this source are of type\n   * {@link module:ol/Feature~Feature}.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {function(FeatureType):boolean} [filter] Feature filter function.\n   *     The filter function will receive one argument, the {@link module:ol/Feature~Feature feature}\n   *     and it should return a boolean value. By default, no filtering is made.\n   * @return {FeatureType} Closest feature.\n   * @api\n   */\n  getClosestFeatureToCoordinate(coordinate, filter) {\n    // Find the closest feature using branch and bound.  We start searching an\n    // infinite extent, and find the distance from the first feature found.  This\n    // becomes the closest feature.  We then compute a smaller extent which any\n    // closer feature must intersect.  We continue searching with this smaller\n    // extent, trying to find a closer feature.  Every time we find a closer\n    // feature, we update the extent being searched so that any even closer\n    // feature must intersect it.  We continue until we run out of features.\n    const x = coordinate[0];\n    const y = coordinate[1];\n    let closestFeature = null;\n    const closestPoint = [NaN, NaN];\n    let minSquaredDistance = Infinity;\n    const extent = [-Infinity, -Infinity, Infinity, Infinity];\n    filter = filter ? filter : TRUE;\n    this.featuresRtree_.forEachInExtent(\n      extent,\n      /**\n       * @param {FeatureType} feature Feature.\n       */\n      function (feature) {\n        if (filter(feature)) {\n          const geometry = feature.getGeometry();\n          const previousMinSquaredDistance = minSquaredDistance;\n          minSquaredDistance =\n            geometry instanceof RenderFeature\n              ? 0\n              : geometry.closestPointXY(x, y, closestPoint, minSquaredDistance);\n          if (minSquaredDistance < previousMinSquaredDistance) {\n            closestFeature = feature;\n            // This is sneaky.  Reduce the extent that it is currently being\n            // searched while the R-Tree traversal using this same extent object\n            // is still in progress.  This is safe because the new extent is\n            // strictly contained by the old extent.\n            const minDistance = Math.sqrt(minSquaredDistance);\n            extent[0] = x - minDistance;\n            extent[1] = y - minDistance;\n            extent[2] = x + minDistance;\n            extent[3] = y + minDistance;\n          }\n        }\n      },\n    );\n    return closestFeature;\n  }\n\n  /**\n   * Get the extent of the features currently in the source.\n   *\n   * This method is not available when the source is configured with\n   * `useSpatialIndex` set to `false`.\n   * @param {import(\"../extent.js\").Extent} [extent] Destination extent. If provided, no new extent\n   *     will be created. Instead, that extent's coordinates will be overwritten.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getExtent(extent) {\n    return this.featuresRtree_.getExtent(extent);\n  }\n\n  /**\n   * Get a feature by its identifier (the value returned by feature.getId()). When `RenderFeature`s\n   * are used, `getFeatureById()` can return an array of `RenderFeature`s. This allows for handling\n   * of `GeometryCollection` geometries, where format readers create one `RenderFeature` per\n   * `GeometryCollection` member.\n   * Note that the index treats string and numeric identifiers as the same.  So\n   * `source.getFeatureById(2)` will return a feature with id `'2'` or `2`.\n   *\n   * @param {string|number} id Feature identifier.\n   * @return {FeatureClassOrArrayOfRenderFeatures<FeatureType>|null} The feature (or `null` if not found).\n   * @api\n   */\n  getFeatureById(id) {\n    const feature = this.idIndex_[id.toString()];\n    return feature !== undefined\n      ? /** @type {FeatureClassOrArrayOfRenderFeatures<FeatureType>} */ (\n          feature\n        )\n      : null;\n  }\n\n  /**\n   * Get a feature by its internal unique identifier (using `getUid`).\n   *\n   * @param {string} uid Feature identifier.\n   * @return {FeatureType|null} The feature (or `null` if not found).\n   */\n  getFeatureByUid(uid) {\n    const feature = this.uidIndex_[uid];\n    return feature !== undefined ? feature : null;\n  }\n\n  /**\n   * Get the format associated with this source.\n   *\n   * @return {import(\"../format/Feature.js\").default<FeatureType>|null}} The feature format.\n   * @api\n   */\n  getFormat() {\n    return this.format_;\n  }\n\n  /**\n   * @return {boolean} The source can have overlapping geometries.\n   */\n  getOverlaps() {\n    return this.overlaps_;\n  }\n\n  /**\n   * Get the url associated with this source.\n   *\n   * @return {string|import(\"../featureloader.js\").FeatureUrlFunction|undefined} The url.\n   * @api\n   */\n  getUrl() {\n    return this.url_;\n  }\n\n  /**\n   * @param {Event} event Event.\n   * @private\n   */\n  handleFeatureChange_(event) {\n    const feature = /** @type {FeatureType} */ (event.target);\n    const featureKey = getUid(feature);\n    const geometry = feature.getGeometry();\n    if (!geometry) {\n      if (!(featureKey in this.nullGeometryFeatures_)) {\n        if (this.featuresRtree_) {\n          this.featuresRtree_.remove(feature);\n        }\n        this.nullGeometryFeatures_[featureKey] = feature;\n      }\n    } else {\n      const extent = geometry.getExtent();\n      if (featureKey in this.nullGeometryFeatures_) {\n        delete this.nullGeometryFeatures_[featureKey];\n        if (this.featuresRtree_) {\n          this.featuresRtree_.insert(extent, feature);\n        }\n      } else {\n        if (this.featuresRtree_) {\n          this.featuresRtree_.update(extent, feature);\n        }\n      }\n    }\n    const id = feature.getId();\n    if (id !== undefined) {\n      const sid = id.toString();\n      if (this.idIndex_[sid] !== feature) {\n        this.removeFromIdIndex_(feature);\n        this.idIndex_[sid] = feature;\n      }\n    } else {\n      this.removeFromIdIndex_(feature);\n      this.uidIndex_[featureKey] = feature;\n    }\n    this.changed();\n    this.dispatchEvent(\n      new VectorSourceEvent(VectorEventType.CHANGEFEATURE, feature),\n    );\n  }\n\n  /**\n   * Returns true if the feature is contained within the source.\n   * @param {FeatureType} feature Feature.\n   * @return {boolean} Has feature.\n   * @api\n   */\n  hasFeature(feature) {\n    const id = feature.getId();\n    if (id !== undefined) {\n      return id in this.idIndex_;\n    }\n    return getUid(feature) in this.uidIndex_;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    if (this.featuresRtree_) {\n      return (\n        this.featuresRtree_.isEmpty() && isEmpty(this.nullGeometryFeatures_)\n      );\n    }\n    if (this.featuresCollection_) {\n      return this.featuresCollection_.getLength() === 0;\n    }\n    return true;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   */\n  loadFeatures(extent, resolution, projection) {\n    const loadedExtentsRtree = this.loadedExtentsRtree_;\n    const extentsToLoad = this.strategy_(extent, resolution, projection);\n    for (let i = 0, ii = extentsToLoad.length; i < ii; ++i) {\n      const extentToLoad = extentsToLoad[i];\n      const alreadyLoaded = loadedExtentsRtree.forEachInExtent(\n        extentToLoad,\n        /**\n         * @param {{extent: import(\"../extent.js\").Extent}} object Object.\n         * @return {boolean} Contains.\n         */\n        function (object) {\n          return containsExtent(object.extent, extentToLoad);\n        },\n      );\n      if (!alreadyLoaded) {\n        ++this.loadingExtentsCount_;\n        this.dispatchEvent(\n          new VectorSourceEvent(VectorEventType.FEATURESLOADSTART),\n        );\n        this.loader_.call(\n          this,\n          extentToLoad,\n          resolution,\n          projection,\n          /**\n           * @param {Array<FeatureType>} features Loaded features\n           */\n          (features) => {\n            --this.loadingExtentsCount_;\n            this.dispatchEvent(\n              new VectorSourceEvent(\n                VectorEventType.FEATURESLOADEND,\n                undefined,\n                features,\n              ),\n            );\n          },\n          () => {\n            --this.loadingExtentsCount_;\n            this.dispatchEvent(\n              new VectorSourceEvent(VectorEventType.FEATURESLOADERROR),\n            );\n          },\n        );\n        loadedExtentsRtree.insert(extentToLoad, {extent: extentToLoad.slice()});\n      }\n    }\n    this.loading =\n      this.loader_.length < 4 ? false : this.loadingExtentsCount_ > 0;\n  }\n\n  /**\n   * @override\n   */\n  refresh() {\n    this.clear(true);\n    this.loadedExtentsRtree_.clear();\n    super.refresh();\n  }\n\n  /**\n   * Remove an extent from the list of loaded extents.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @api\n   */\n  removeLoadedExtent(extent) {\n    const loadedExtentsRtree = this.loadedExtentsRtree_;\n    const obj = loadedExtentsRtree.forEachInExtent(extent, function (object) {\n      if (equals(object.extent, extent)) {\n        return object;\n      }\n    });\n    if (obj) {\n      loadedExtentsRtree.remove(obj);\n    }\n  }\n\n  /**\n   * Batch remove features from the source.  If you want to remove all features\n   * at once, use the {@link module:ol/source/Vector~VectorSource#clear #clear()} method\n   * instead.\n   * @param {Array<FeatureType>} features Features to remove.\n   * @api\n   */\n  removeFeatures(features) {\n    let removed = false;\n    for (let i = 0, ii = features.length; i < ii; ++i) {\n      removed = this.removeFeatureInternal(features[i]) || removed;\n    }\n    if (removed) {\n      this.changed();\n    }\n  }\n\n  /**\n   * Remove a single feature from the source. If you want to batch remove\n   * features, use the {@link module:ol/source/Vector~VectorSource#removeFeatures #removeFeatures()} method\n   * instead.\n   * @param {FeatureType} feature Feature to remove.\n   * @api\n   */\n  removeFeature(feature) {\n    if (!feature) {\n      return;\n    }\n    const removed = this.removeFeatureInternal(feature);\n    if (removed) {\n      this.changed();\n    }\n  }\n\n  /**\n   * Remove feature without firing a `change` event.\n   * @param {FeatureType} feature Feature.\n   * @return {boolean} True if the feature was removed, false if it was not found.\n   * @protected\n   */\n  removeFeatureInternal(feature) {\n    const featureKey = getUid(feature);\n    if (!(featureKey in this.uidIndex_)) {\n      return false;\n    }\n\n    if (featureKey in this.nullGeometryFeatures_) {\n      delete this.nullGeometryFeatures_[featureKey];\n    } else {\n      if (this.featuresRtree_) {\n        this.featuresRtree_.remove(feature);\n      }\n    }\n\n    const featureChangeKeys = this.featureChangeKeys_[featureKey];\n    featureChangeKeys?.forEach(unlistenByKey);\n    delete this.featureChangeKeys_[featureKey];\n\n    const id = feature.getId();\n    if (id !== undefined) {\n      const idString = id.toString();\n      const indexedFeature = this.idIndex_[idString];\n      if (indexedFeature === feature) {\n        delete this.idIndex_[idString];\n      } else if (Array.isArray(indexedFeature)) {\n        indexedFeature.splice(indexedFeature.indexOf(feature), 1);\n        if (indexedFeature.length === 1) {\n          this.idIndex_[idString] = indexedFeature[0];\n        }\n      }\n    }\n    delete this.uidIndex_[featureKey];\n    if (this.hasListener(VectorEventType.REMOVEFEATURE)) {\n      this.dispatchEvent(\n        new VectorSourceEvent(VectorEventType.REMOVEFEATURE, feature),\n      );\n    }\n    return true;\n  }\n\n  /**\n   * Remove a feature from the id index.  Called internally when the feature id\n   * may have changed.\n   * @param {FeatureType} feature The feature.\n   * @private\n   */\n  removeFromIdIndex_(feature) {\n    for (const id in this.idIndex_) {\n      if (this.idIndex_[id] === feature) {\n        delete this.idIndex_[id];\n        break;\n      }\n    }\n  }\n\n  /**\n   * Set the new loader of the source. The next render cycle will use the\n   * new loader.\n   * @param {import(\"../featureloader.js\").FeatureLoader} loader The loader to set.\n   * @api\n   */\n  setLoader(loader) {\n    this.loader_ = loader;\n  }\n\n  /**\n   * Points the source to a new url. The next render cycle will use the new url.\n   * @param {string|import(\"../featureloader.js\").FeatureUrlFunction} url Url.\n   * @api\n   */\n  setUrl(url) {\n    assert(this.format_, '`format` must be set when `url` is set');\n    this.url_ = url;\n    this.setLoader(xhr(url, this.format_));\n  }\n\n  /**\n   * @param {boolean} overlaps The source can have overlapping geometries.\n   */\n  setOverlaps(overlaps) {\n    this.overlaps_ = overlaps;\n    this.changed();\n  }\n}\n\nexport default VectorSource;\n","/**\n * @module ol/style/Fill\n */\n\nimport ImageState from '../ImageState.js';\nimport {asArray} from '../color.js';\nimport {getUid} from '../util.js';\nimport {get as getIconImage} from './IconImage.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null} [color=null] A color,\n * gradient or pattern.\n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats. For polygon fills (not for {@link import(\"./RegularShape.js\").default} fills),\n * a pattern can also be provided as {@link module:ol/colorlike~PatternDescriptor}.\n * Default null; if null, the Canvas/renderer default black will be used.\n */\n\n/**\n * @classdesc\n * Set fill style for vector features.\n * @api\n */\nclass Fill {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {import(\"./IconImage.js\").default|null}\n     */\n    this.patternImage_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null}\n     */\n    this.color_ = null;\n    if (options.color !== undefined) {\n      this.setColor(options.color);\n    }\n  }\n\n  /**\n   * Clones the style. The color is not cloned if it is a {@link module:ol/colorlike~ColorLike}.\n   * @return {Fill} The cloned style.\n   * @api\n   */\n  clone() {\n    const color = this.getColor();\n    return new Fill({\n      color: Array.isArray(color) ? color.slice() : color || undefined,\n    });\n  }\n\n  /**\n   * Get the fill color.\n   * @return {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null} Color.\n   * @api\n   */\n  getColor() {\n    return this.color_;\n  }\n\n  /**\n   * Set the color.\n   *\n   * @param {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null} color Color.\n   * @api\n   */\n  setColor(color) {\n    if (color !== null && typeof color === 'object' && 'src' in color) {\n      const patternImage = getIconImage(\n        null,\n        color.src,\n        'anonymous',\n        undefined,\n        color.offset ? null : color.color ? color.color : null,\n        !(color.offset && color.size),\n      );\n      patternImage.ready().then(() => {\n        this.patternImage_ = null;\n      });\n      if (patternImage.getImageState() === ImageState.IDLE) {\n        patternImage.load();\n      }\n      if (patternImage.getImageState() === ImageState.LOADING) {\n        this.patternImage_ = patternImage;\n      }\n    }\n    this.color_ = color;\n  }\n\n  /**\n   * @return {string} Key of the fill for cache lookup.\n   */\n  getKey() {\n    const fill = this.getColor();\n    if (!fill) {\n      return '';\n    }\n    return fill instanceof CanvasPattern || fill instanceof CanvasGradient\n      ? getUid(fill)\n      : typeof fill === 'object' && 'src' in fill\n        ? fill.src + ':' + fill.offset\n        : asArray(fill).toString();\n  }\n\n  /**\n   * @return {boolean} The fill style is loading an image pattern.\n   */\n  loading() {\n    return !!this.patternImage_;\n  }\n\n  /**\n   * @return {Promise<void>} `false` or a promise that resolves when the style is ready to use.\n   */\n  ready() {\n    return this.patternImage_ ? this.patternImage_.ready() : Promise.resolve();\n  }\n}\n\nexport default Fill;\n","/**\n * @module ol/style/Stroke\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [color] A color, gradient or pattern.\n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.\n * Default null; if null, the Canvas/renderer default black will be used.\n * @property {CanvasLineCap} [lineCap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [lineJoin='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array<number>} [lineDash] Line dash pattern. Default is `null` (no dash).\n * @property {number} [lineDashOffset=0] Line dash offset.\n * @property {number} [miterLimit=10] Miter limit.\n * @property {number} [width] Width.\n */\n\n/**\n * @classdesc\n * Set stroke style for vector features.\n * Note that the defaults given are the Canvas defaults, which will be used if\n * option is not defined. The `get` functions return whatever was entered in\n * the options; they will not return the default.\n * @api\n */\nclass Stroke {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike}\n     */\n    this.color_ = options.color !== undefined ? options.color : null;\n\n    /**\n     * @private\n     * @type {CanvasLineCap|undefined}\n     */\n    this.lineCap_ = options.lineCap;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.lineDash_ = options.lineDash !== undefined ? options.lineDash : null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lineDashOffset_ = options.lineDashOffset;\n\n    /**\n     * @private\n     * @type {CanvasLineJoin|undefined}\n     */\n    this.lineJoin_ = options.lineJoin;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.miterLimit_ = options.miterLimit;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.width_ = options.width;\n  }\n\n  /**\n   * Clones the style.\n   * @return {Stroke} The cloned style.\n   * @api\n   */\n  clone() {\n    const color = this.getColor();\n    return new Stroke({\n      color: Array.isArray(color) ? color.slice() : color || undefined,\n      lineCap: this.getLineCap(),\n      lineDash: this.getLineDash() ? this.getLineDash().slice() : undefined,\n      lineDashOffset: this.getLineDashOffset(),\n      lineJoin: this.getLineJoin(),\n      miterLimit: this.getMiterLimit(),\n      width: this.getWidth(),\n    });\n  }\n\n  /**\n   * Get the stroke color.\n   * @return {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} Color.\n   * @api\n   */\n  getColor() {\n    return this.color_;\n  }\n\n  /**\n   * Get the line cap type for the stroke.\n   * @return {CanvasLineCap|undefined} Line cap.\n   * @api\n   */\n  getLineCap() {\n    return this.lineCap_;\n  }\n\n  /**\n   * Get the line dash style for the stroke.\n   * @return {Array<number>|null} Line dash.\n   * @api\n   */\n  getLineDash() {\n    return this.lineDash_;\n  }\n\n  /**\n   * Get the line dash offset for the stroke.\n   * @return {number|undefined} Line dash offset.\n   * @api\n   */\n  getLineDashOffset() {\n    return this.lineDashOffset_;\n  }\n\n  /**\n   * Get the line join type for the stroke.\n   * @return {CanvasLineJoin|undefined} Line join.\n   * @api\n   */\n  getLineJoin() {\n    return this.lineJoin_;\n  }\n\n  /**\n   * Get the miter limit for the stroke.\n   * @return {number|undefined} Miter limit.\n   * @api\n   */\n  getMiterLimit() {\n    return this.miterLimit_;\n  }\n\n  /**\n   * Get the stroke width.\n   * @return {number|undefined} Width.\n   * @api\n   */\n  getWidth() {\n    return this.width_;\n  }\n\n  /**\n   * Set the color.\n   *\n   * @param {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} color Color.\n   * @api\n   */\n  setColor(color) {\n    this.color_ = color;\n  }\n\n  /**\n   * Set the line cap.\n   *\n   * @param {CanvasLineCap|undefined} lineCap Line cap.\n   * @api\n   */\n  setLineCap(lineCap) {\n    this.lineCap_ = lineCap;\n  }\n\n  /**\n   * Set the line dash.\n   *\n   * @param {Array<number>|null} lineDash Line dash.\n   * @api\n   */\n  setLineDash(lineDash) {\n    this.lineDash_ = lineDash;\n  }\n\n  /**\n   * Set the line dash offset.\n   *\n   * @param {number|undefined} lineDashOffset Line dash offset.\n   * @api\n   */\n  setLineDashOffset(lineDashOffset) {\n    this.lineDashOffset_ = lineDashOffset;\n  }\n\n  /**\n   * Set the line join.\n   *\n   * @param {CanvasLineJoin|undefined} lineJoin Line join.\n   * @api\n   */\n  setLineJoin(lineJoin) {\n    this.lineJoin_ = lineJoin;\n  }\n\n  /**\n   * Set the miter limit.\n   *\n   * @param {number|undefined} miterLimit Miter limit.\n   * @api\n   */\n  setMiterLimit(miterLimit) {\n    this.miterLimit_ = miterLimit;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @param {number|undefined} width Width.\n   * @api\n   */\n  setWidth(width) {\n    this.width_ = width;\n  }\n}\n\nexport default Stroke;\n","/**\n * @module ol/size\n */\n\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array<number>} Size\n * @api\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} [dest] Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, dest) {\n  if (dest === undefined) {\n    dest = [0, 0];\n  }\n  dest[0] = size[0] + 2 * num;\n  dest[1] = size[1] + 2 * num;\n  return dest;\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 * 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} [dest] Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, dest) {\n  if (dest === undefined) {\n    dest = [0, 0];\n  }\n  dest[0] = (size[0] * ratio + 0.5) | 0;\n  dest[1] = (size[1] * ratio + 0.5) | 0;\n  return dest;\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} [dest] Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, dest) {\n  if (Array.isArray(size)) {\n    return size;\n  }\n  if (dest === undefined) {\n    dest = [size, size];\n  } else {\n    dest[0] = size;\n    dest[1] = size;\n  }\n  return dest;\n}\n","/**\n * @module ol/style/Image\n */\nimport {toSize} from '../size.js';\nimport {abstract} from '../util.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} opacity Opacity.\n * @property {boolean} rotateWithView If the image should get rotated with the view.\n * @property {number} rotation Rotation.\n * @property {number|import(\"../size.js\").Size} scale Scale.\n * @property {Array<number>} displacement Displacement.\n * @property {import('../style/Style.js').DeclutterMode} declutterMode Declutter mode: `declutter`, `obstacle`, `none`.\n */\n\n/**\n * @classdesc\n * A base class used for creating subclasses and not instantiated in\n * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} and\n * {@link module:ol/style/RegularShape~RegularShape}.\n * @abstract\n * @api\n */\nclass ImageStyle {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    /**\n     * @private\n     * @type {number}\n     */\n    this.opacity_ = options.opacity;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.rotateWithView_ = options.rotateWithView;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.rotation_ = options.rotation;\n\n    /**\n     * @private\n     * @type {number|import(\"../size.js\").Size}\n     */\n    this.scale_ = options.scale;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.scaleArray_ = toSize(options.scale);\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.displacement_ = options.displacement;\n\n    /**\n     * @private\n     * @type {import('../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = options.declutterMode;\n  }\n\n  /**\n   * Clones the style.\n   * @return {ImageStyle} The cloned style.\n   * @api\n   */\n  clone() {\n    const scale = this.getScale();\n    return new ImageStyle({\n      opacity: this.getOpacity(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n  }\n\n  /**\n   * Get the symbolizer opacity.\n   * @return {number} Opacity.\n   * @api\n   */\n  getOpacity() {\n    return this.opacity_;\n  }\n\n  /**\n   * Determine whether the symbolizer rotates with the map.\n   * @return {boolean} Rotate with map.\n   * @api\n   */\n  getRotateWithView() {\n    return this.rotateWithView_;\n  }\n\n  /**\n   * Get the symoblizer rotation.\n   * @return {number} Rotation.\n   * @api\n   */\n  getRotation() {\n    return this.rotation_;\n  }\n\n  /**\n   * Get the symbolizer scale.\n   * @return {number|import(\"../size.js\").Size} Scale.\n   * @api\n   */\n  getScale() {\n    return this.scale_;\n  }\n\n  /**\n   * Get the symbolizer scale array.\n   * @return {import(\"../size.js\").Size} Scale array.\n   */\n  getScaleArray() {\n    return this.scaleArray_;\n  }\n\n  /**\n   * Get the displacement of the shape\n   * @return {Array<number>} Shape's center displacement\n   * @api\n   */\n  getDisplacement() {\n    return this.displacement_;\n  }\n\n  /**\n   * Get the declutter mode of the shape\n   * @return {import(\"./Style.js\").DeclutterMode} Shape's declutter mode\n   * @api\n   */\n  getDeclutterMode() {\n    return this.declutterMode_;\n  }\n\n  /**\n   * Get the anchor point in pixels. The anchor determines the center point for the\n   * symbolizer.\n   * @abstract\n   * @return {Array<number>} Anchor.\n   */\n  getAnchor() {\n    return abstract();\n  }\n\n  /**\n   * Get the image element for the symbolizer.\n   * @abstract\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {import('../DataTile.js').ImageLike} Image element.\n   */\n  getImage(pixelRatio) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @return {import('../DataTile.js').ImageLike} Image element.\n   */\n  getHitDetectionImage() {\n    return abstract();\n  }\n\n  /**\n   * Get the image pixel ratio.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Pixel ratio.\n   */\n  getPixelRatio(pixelRatio) {\n    return 1;\n  }\n\n  /**\n   * @abstract\n   * @return {import(\"../ImageState.js\").default} Image state.\n   */\n  getImageState() {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @return {import(\"../size.js\").Size} Image size.\n   */\n  getImageSize() {\n    return abstract();\n  }\n\n  /**\n   * Get the origin of the symbolizer.\n   * @abstract\n   * @return {Array<number>} Origin.\n   */\n  getOrigin() {\n    return abstract();\n  }\n\n  /**\n   * Get the size of the symbolizer (in pixels).\n   * @abstract\n   * @return {import(\"../size.js\").Size} Size.\n   */\n  getSize() {\n    return abstract();\n  }\n\n  /**\n   * Set the displacement.\n   *\n   * @param {Array<number>} displacement Displacement.\n   * @api\n   */\n  setDisplacement(displacement) {\n    this.displacement_ = displacement;\n  }\n\n  /**\n   * Set the opacity.\n   *\n   * @param {number} opacity Opacity.\n   * @api\n   */\n  setOpacity(opacity) {\n    this.opacity_ = opacity;\n  }\n\n  /**\n   * Set whether to rotate the style with the view.\n   *\n   * @param {boolean} rotateWithView Rotate with map.\n   * @api\n   */\n  setRotateWithView(rotateWithView) {\n    this.rotateWithView_ = rotateWithView;\n  }\n\n  /**\n   * Set the rotation.\n   *\n   * @param {number} rotation Rotation.\n   * @api\n   */\n  setRotation(rotation) {\n    this.rotation_ = rotation;\n  }\n\n  /**\n   * Set the scale.\n   *\n   * @param {number|import(\"../size.js\").Size} scale Scale.\n   * @api\n   */\n  setScale(scale) {\n    this.scale_ = scale;\n    this.scaleArray_ = toSize(scale);\n  }\n\n  /**\n   * @abstract\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   */\n  listenImageChange(listener) {\n    abstract();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @abstract\n   */\n  load() {\n    abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   */\n  unlistenImageChange(listener) {\n    abstract();\n  }\n\n  /**\n   * @return {Promise<void>} `false` or Promise that resolves when the style is ready to use.\n   */\n  ready() {\n    return Promise.resolve();\n  }\n}\n\nexport default ImageStyle;\n","/**\n * @module ol/style/RegularShape\n */\n\nimport ImageState from '../ImageState.js';\nimport {asArray} from '../color.js';\nimport {asColorLike} from '../colorlike.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport {\n  defaultFillStyle,\n  defaultLineCap,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultStrokeStyle,\n} from '../render/canvas.js';\nimport IconImage from './IconImage.js';\nimport {shared as iconImageCache} from './IconImageCache.js';\nimport ImageStyle from './Image.js';\n\n/**\n * Specify radius for regular polygons, or both radius and radius2 for stars.\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} points Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides.\n * @property {number} radius Radius of a regular polygon.\n * @property {number} [radius2] Second radius to make a star instead of a regular polygon.\n * @property {number} [angle=0] Shape's angle in radians. A value of 0 will have one of the shape's points facing up.\n * @property {Array<number>} [displacement=[0, 0]] Displacement of the shape in pixels.\n * Positive values will shift the shape right and up.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. Unless two dimensional scaling is required a better\n * result may be obtained with appropriate settings for `radius` and `radius2`.\n * @property {import('./Style.js').DeclutterMode} [declutterMode] Declutter mode.\n */\n\n/**\n * @typedef {Object} RenderOptions\n * @property {import(\"../colorlike.js\").ColorLike|undefined} strokeStyle StrokeStyle.\n * @property {number} strokeWidth StrokeWidth.\n * @property {number} size Size.\n * @property {CanvasLineCap} lineCap LineCap.\n * @property {Array<number>|null} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} miterLimit MiterLimit.\n */\n\n/**\n * @classdesc\n * Set regular shape style for vector features. The resulting shape will be\n * a regular polygon when `radius` is provided, or a star when both `radius` and\n * `radius2` are provided.\n * @api\n */\nclass RegularShape extends ImageStyle {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    super({\n      opacity: 1,\n      rotateWithView:\n        options.rotateWithView !== undefined ? options.rotateWithView : false,\n      rotation: options.rotation !== undefined ? options.rotation : 0,\n      scale: options.scale !== undefined ? options.scale : 1,\n      displacement:\n        options.displacement !== undefined ? options.displacement : [0, 0],\n      declutterMode: options.declutterMode,\n    });\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement|null}\n     */\n    this.hitDetectionCanvas_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.fill_ = options.fill !== undefined ? options.fill : null;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.origin_ = [0, 0];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.points_ = options.points;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.radius = options.radius;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.radius2_ = options.radius2;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.angle_ = options.angle !== undefined ? options.angle : 0;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.size_;\n\n    /**\n     * @private\n     * @type {RenderOptions}\n     */\n    this.renderOptions_;\n\n    /**\n     * @private\n     */\n    this.imageState_ =\n      this.fill_ && this.fill_.loading()\n        ? ImageState.LOADING\n        : ImageState.LOADED;\n    if (this.imageState_ === ImageState.LOADING) {\n      this.ready().then(() => (this.imageState_ = ImageState.LOADED));\n    }\n    this.render();\n  }\n\n  /**\n   * Clones the style.\n   * @return {RegularShape} The cloned style.\n   * @api\n   * @override\n   */\n  clone() {\n    const scale = this.getScale();\n    const style = new RegularShape({\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      points: this.getPoints(),\n      radius: this.getRadius(),\n      radius2: this.getRadius2(),\n      angle: this.getAngle(),\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n    style.setOpacity(this.getOpacity());\n    return style;\n  }\n\n  /**\n   * Get the anchor point in pixels. The anchor determines the center point for the\n   * symbolizer.\n   * @return {Array<number>} Anchor.\n   * @api\n   * @override\n   */\n  getAnchor() {\n    const size = this.size_;\n    const displacement = this.getDisplacement();\n    const scale = this.getScaleArray();\n    // anchor is scaled by renderer but displacement should not be scaled\n    // so divide by scale here\n    return [\n      size[0] / 2 - displacement[0] / scale[0],\n      size[1] / 2 + displacement[1] / scale[1],\n    ];\n  }\n\n  /**\n   * Get the angle used in generating the shape.\n   * @return {number} Shape's rotation in radians.\n   * @api\n   */\n  getAngle() {\n    return this.angle_;\n  }\n\n  /**\n   * Get the fill style for the shape.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getFill() {\n    return this.fill_;\n  }\n\n  /**\n   * Set the fill style.\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setFill(fill) {\n    this.fill_ = fill;\n    this.render();\n  }\n\n  /**\n   * @return {HTMLCanvasElement} Image element.\n   * @override\n   */\n  getHitDetectionImage() {\n    if (!this.hitDetectionCanvas_) {\n      this.hitDetectionCanvas_ = this.createHitDetectionCanvas_(\n        this.renderOptions_,\n      );\n    }\n    return this.hitDetectionCanvas_;\n  }\n\n  /**\n   * Get the image icon.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {HTMLCanvasElement} Image or Canvas element.\n   * @api\n   * @override\n   */\n  getImage(pixelRatio) {\n    const fillKey = this.fill_?.getKey();\n    const cacheKey =\n      `${pixelRatio},${this.angle_},${this.radius},${this.radius2_},${this.points_},${fillKey}` +\n      Object.values(this.renderOptions_).join(',');\n    let image = /** @type {HTMLCanvasElement} */ (\n      iconImageCache.get(cacheKey, null, null)?.getImage(1)\n    );\n    if (!image) {\n      const renderOptions = this.renderOptions_;\n      const size = Math.ceil(renderOptions.size * pixelRatio);\n      const context = createCanvasContext2D(size, size);\n      this.draw_(renderOptions, context, pixelRatio);\n\n      image = context.canvas;\n      iconImageCache.set(\n        cacheKey,\n        null,\n        null,\n        new IconImage(image, undefined, null, ImageState.LOADED, null),\n      );\n    }\n    return image;\n  }\n\n  /**\n   * Get the image pixel ratio.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Pixel ratio.\n   * @override\n   */\n  getPixelRatio(pixelRatio) {\n    return pixelRatio;\n  }\n\n  /**\n   * @return {import(\"../size.js\").Size} Image size.\n   * @override\n   */\n  getImageSize() {\n    return this.size_;\n  }\n\n  /**\n   * @return {import(\"../ImageState.js\").default} Image state.\n   * @override\n   */\n  getImageState() {\n    return this.imageState_;\n  }\n\n  /**\n   * Get the origin of the symbolizer.\n   * @return {Array<number>} Origin.\n   * @api\n   * @override\n   */\n  getOrigin() {\n    return this.origin_;\n  }\n\n  /**\n   * Get the number of points for generating the shape.\n   * @return {number} Number of points for stars and regular polygons.\n   * @api\n   */\n  getPoints() {\n    return this.points_;\n  }\n\n  /**\n   * Get the (primary) radius for the shape.\n   * @return {number} Radius.\n   * @api\n   */\n  getRadius() {\n    return this.radius;\n  }\n\n  /**\n   * Get the secondary radius for the shape.\n   * @return {number|undefined} Radius2.\n   * @api\n   */\n  getRadius2() {\n    return this.radius2_;\n  }\n\n  /**\n   * Get the size of the symbolizer (in pixels).\n   * @return {import(\"../size.js\").Size} Size.\n   * @api\n   * @override\n   */\n  getSize() {\n    return this.size_;\n  }\n\n  /**\n   * Get the stroke style for the shape.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getStroke() {\n    return this.stroke_;\n  }\n\n  /**\n   * Set the stroke style.\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setStroke(stroke) {\n    this.stroke_ = stroke;\n    this.render();\n  }\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  listenImageChange(listener) {}\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {}\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  unlistenImageChange(listener) {}\n\n  /**\n   * Calculate additional canvas size needed for the miter.\n   * @param {string} lineJoin Line join\n   * @param {number} strokeWidth Stroke width\n   * @param {number} miterLimit Miter limit\n   * @return {number} Additional canvas size needed\n   * @private\n   */\n  calculateLineJoinSize_(lineJoin, strokeWidth, miterLimit) {\n    if (\n      strokeWidth === 0 ||\n      this.points_ === Infinity ||\n      (lineJoin !== 'bevel' && lineJoin !== 'miter')\n    ) {\n      return strokeWidth;\n    }\n    // m  | ^\n    // i  | |\\                  .\n    // t >|  #\\\n    // e  | |\\ \\              .\n    // r      \\s\\\n    //      |  \\t\\          .                 .\n    //          \\r\\                      .   .\n    //      |    \\o\\      .          .  . . .\n    //          e \\k\\            .  .    . .\n    //      |      \\e\\  .    .  .       . .\n    //       d      \\ \\  .  .          . .\n    //      | _ _a_ _\\#  .            . .\n    //   r1          / `             . .\n    //      |                       . .\n    //       b     /               . .\n    //      |                     . .\n    //           / r2            . .\n    //      |                        .   .\n    //         /                           .   .\n    //      |α                                   .   .\n    //       /                                         .   .\n    //      ° center\n    let r1 = this.radius;\n    let r2 = this.radius2_ === undefined ? r1 : this.radius2_;\n    if (r1 < r2) {\n      const tmp = r1;\n      r1 = r2;\n      r2 = tmp;\n    }\n    const points =\n      this.radius2_ === undefined ? this.points_ : this.points_ * 2;\n    const alpha = (2 * Math.PI) / points;\n    const a = r2 * Math.sin(alpha);\n    const b = Math.sqrt(r2 * r2 - a * a);\n    const d = r1 - b;\n    const e = Math.sqrt(a * a + d * d);\n    const miterRatio = e / a;\n    if (lineJoin === 'miter' && miterRatio <= miterLimit) {\n      return miterRatio * strokeWidth;\n    }\n    // Calculate the distance from center to the stroke corner where\n    // it was cut short because of the miter limit.\n    //              l\n    //        ----+---- <= distance from center to here is maxr\n    //       /####|k ##\\\n    //      /#####^#####\\\n    //     /#### /+\\# s #\\\n    //    /### h/+++\\# t #\\\n    //   /### t/+++++\\# r #\\\n    //  /### a/+++++++\\# o #\\\n    // /### p/++ fill +\\# k #\\\n    ///#### /+++++^+++++\\# e #\\\n    //#####/+++++/+\\+++++\\#####\\\n    const k = strokeWidth / 2 / miterRatio;\n    const l = (strokeWidth / 2) * (d / e);\n    const maxr = Math.sqrt((r1 + k) * (r1 + k) + l * l);\n    const bevelAdd = maxr - r1;\n    if (this.radius2_ === undefined || lineJoin === 'bevel') {\n      return bevelAdd * 2;\n    }\n    // If outer miter is over the miter limit the inner miter may reach through the\n    // center and be longer than the bevel, same calculation as above but swap r1 / r2.\n    const aa = r1 * Math.sin(alpha);\n    const bb = Math.sqrt(r1 * r1 - aa * aa);\n    const dd = r2 - bb;\n    const ee = Math.sqrt(aa * aa + dd * dd);\n    const innerMiterRatio = ee / aa;\n    if (innerMiterRatio <= miterLimit) {\n      const innerLength = (innerMiterRatio * strokeWidth) / 2 - r2 - r1;\n      return 2 * Math.max(bevelAdd, innerLength);\n    }\n    return bevelAdd * 2;\n  }\n\n  /**\n   * @return {RenderOptions}  The render options\n   * @protected\n   */\n  createRenderOptions() {\n    let lineCap = defaultLineCap;\n    let lineJoin = defaultLineJoin;\n    let miterLimit = 0;\n    let lineDash = null;\n    let lineDashOffset = 0;\n    let strokeStyle;\n    let strokeWidth = 0;\n\n    if (this.stroke_) {\n      strokeStyle = asColorLike(this.stroke_.getColor() ?? defaultStrokeStyle);\n      strokeWidth = this.stroke_.getWidth() ?? defaultLineWidth;\n      lineDash = this.stroke_.getLineDash();\n      lineDashOffset = this.stroke_.getLineDashOffset() ?? 0;\n      lineJoin = this.stroke_.getLineJoin() ?? defaultLineJoin;\n      lineCap = this.stroke_.getLineCap() ?? defaultLineCap;\n      miterLimit = this.stroke_.getMiterLimit() ?? defaultMiterLimit;\n    }\n\n    const add = this.calculateLineJoinSize_(lineJoin, strokeWidth, miterLimit);\n    const maxRadius = Math.max(this.radius, this.radius2_ || 0);\n    const size = Math.ceil(2 * maxRadius + add);\n\n    return {\n      strokeStyle: strokeStyle,\n      strokeWidth: strokeWidth,\n      size: size,\n      lineCap: lineCap,\n      lineDash: lineDash,\n      lineDashOffset: lineDashOffset,\n      lineJoin: lineJoin,\n      miterLimit: miterLimit,\n    };\n  }\n\n  /**\n   * @protected\n   */\n  render() {\n    this.renderOptions_ = this.createRenderOptions();\n    const size = this.renderOptions_.size;\n    this.hitDetectionCanvas_ = null;\n    this.size_ = [size, size];\n  }\n\n  /**\n   * @private\n   * @param {RenderOptions} renderOptions Render options.\n   * @param {CanvasRenderingContext2D} context The rendering context.\n   * @param {number} pixelRatio The pixel ratio.\n   */\n  draw_(renderOptions, context, pixelRatio) {\n    context.scale(pixelRatio, pixelRatio);\n    // set origin to canvas center\n    context.translate(renderOptions.size / 2, renderOptions.size / 2);\n\n    this.createPath_(context);\n\n    if (this.fill_) {\n      let color = this.fill_.getColor();\n      if (color === null) {\n        color = defaultFillStyle;\n      }\n      context.fillStyle = asColorLike(color);\n      context.fill();\n    }\n    if (renderOptions.strokeStyle) {\n      context.strokeStyle = renderOptions.strokeStyle;\n      context.lineWidth = renderOptions.strokeWidth;\n      if (renderOptions.lineDash) {\n        context.setLineDash(renderOptions.lineDash);\n        context.lineDashOffset = renderOptions.lineDashOffset;\n      }\n      context.lineCap = renderOptions.lineCap;\n      context.lineJoin = renderOptions.lineJoin;\n      context.miterLimit = renderOptions.miterLimit;\n      context.stroke();\n    }\n  }\n\n  /**\n   * @private\n   * @param {RenderOptions} renderOptions Render options.\n   * @return {HTMLCanvasElement} Canvas containing the icon\n   */\n  createHitDetectionCanvas_(renderOptions) {\n    let context;\n    if (this.fill_) {\n      let color = this.fill_.getColor();\n\n      // determine if fill is transparent (or pattern or gradient)\n      let opacity = 0;\n      if (typeof color === 'string') {\n        color = asArray(color);\n      }\n      if (color === null) {\n        opacity = 1;\n      } else if (Array.isArray(color)) {\n        opacity = color.length === 4 ? color[3] : 1;\n      }\n      if (opacity === 0) {\n        // if a transparent fill style is set, create an extra hit-detection image\n        // with a default fill style\n        context = createCanvasContext2D(renderOptions.size, renderOptions.size);\n        this.drawHitDetectionCanvas_(renderOptions, context);\n      }\n    }\n    return context ? context.canvas : this.getImage(1);\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D} context The context to draw in.\n   */\n  createPath_(context) {\n    let points = this.points_;\n    const radius = this.radius;\n    if (points === Infinity) {\n      context.arc(0, 0, radius, 0, 2 * Math.PI);\n    } else {\n      const radius2 = this.radius2_ === undefined ? radius : this.radius2_;\n      if (this.radius2_ !== undefined) {\n        points *= 2;\n      }\n      const startAngle = this.angle_ - Math.PI / 2;\n      const step = (2 * Math.PI) / points;\n      for (let i = 0; i < points; i++) {\n        const angle0 = startAngle + i * step;\n        const radiusC = i % 2 === 0 ? radius : radius2;\n        context.lineTo(radiusC * Math.cos(angle0), radiusC * Math.sin(angle0));\n      }\n      context.closePath();\n    }\n  }\n\n  /**\n   * @private\n   * @param {RenderOptions} renderOptions Render options.\n   * @param {CanvasRenderingContext2D} context The context.\n   */\n  drawHitDetectionCanvas_(renderOptions, context) {\n    // set origin to canvas center\n    context.translate(renderOptions.size / 2, renderOptions.size / 2);\n\n    this.createPath_(context);\n\n    context.fillStyle = defaultFillStyle;\n    context.fill();\n    if (renderOptions.strokeStyle) {\n      context.strokeStyle = renderOptions.strokeStyle;\n      context.lineWidth = renderOptions.strokeWidth;\n      if (renderOptions.lineDash) {\n        context.setLineDash(renderOptions.lineDash);\n        context.lineDashOffset = renderOptions.lineDashOffset;\n      }\n      context.lineJoin = renderOptions.lineJoin;\n      context.miterLimit = renderOptions.miterLimit;\n      context.stroke();\n    }\n  }\n\n  /**\n   * @override\n   */\n  ready() {\n    return this.fill_ ? this.fill_.ready() : Promise.resolve();\n  }\n}\n\nexport default RegularShape;\n","/**\n * @module ol/style/Circle\n */\n\nimport RegularShape from './RegularShape.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} radius Circle radius.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {Array<number>} [displacement=[0,0]] displacement\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. A two dimensional scale will produce an ellipse.\n * Unless two dimensional scaling is required a better result may be obtained with an appropriate setting for `radius`.\n * @property {number} [rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two dimensional scale).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view\n * (meaningful only when used in conjunction with a two dimensional scale).\n * @property {import('./Style.js').DeclutterMode} [declutterMode] Declutter mode\n */\n\n/**\n * @classdesc\n * Set circle style for vector features.\n * @api\n */\nclass CircleStyle extends RegularShape {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {radius: 5};\n\n    super({\n      points: Infinity,\n      fill: options.fill,\n      radius: options.radius,\n      stroke: options.stroke,\n      scale: options.scale !== undefined ? options.scale : 1,\n      rotation: options.rotation !== undefined ? options.rotation : 0,\n      rotateWithView:\n        options.rotateWithView !== undefined ? options.rotateWithView : false,\n      displacement:\n        options.displacement !== undefined ? options.displacement : [0, 0],\n      declutterMode: options.declutterMode,\n    });\n  }\n\n  /**\n   * Clones the style.\n   * @return {CircleStyle} The cloned style.\n   * @api\n   * @override\n   */\n  clone() {\n    const scale = this.getScale();\n    const style = new CircleStyle({\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      radius: this.getRadius(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n    style.setOpacity(this.getOpacity());\n    return style;\n  }\n\n  /**\n   * Set the circle radius.\n   *\n   * @param {number} radius Circle radius.\n   * @api\n   */\n  setRadius(radius) {\n    this.radius = radius;\n    this.render();\n  }\n}\n\nexport default CircleStyle;\n","/**\n * @module ol/style/Style\n */\n\nimport {assert} from '../asserts.js';\nimport CircleStyle from './Circle.js';\nimport Fill from './Fill.js';\nimport Stroke from './Stroke.js';\n\n/**\n * Defines how symbols and text are decluttered on layers ith `declutter` set to `true`\n * **declutter**: Overlapping symbols and text are decluttered.\n * **obstacle**: Symbols and text are rendered, but serve as obstacle for subsequent attempts\n *   to place a symbol or text at the same location.\n * **none**: No decluttering is done.\n *\n * @typedef {\"declutter\"|\"obstacle\"|\"none\"} DeclutterMode\n */\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} and a `{number}`\n * representing the view's resolution. The function should return a\n * {@link module:ol/style/Style~Style} or an array of them. This way e.g. a\n * vector layer can be styled. If the function returns `undefined`, the\n * feature will not be rendered.\n *\n * @typedef {function(import(\"../Feature.js\").FeatureLike, number):(Style|Array<Style>|void)} StyleFunction\n */\n\n/**\n * A {@link Style}, an array of {@link Style}, or a {@link StyleFunction}.\n * @typedef {Style|Array<Style>|StyleFunction} StyleLike\n */\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} as argument and returns an\n * {@link module:ol/geom/Geometry~Geometry} that will be rendered and styled for the feature.\n *\n * @typedef {function(import(\"../Feature.js\").FeatureLike):\n *     (import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default|undefined)} GeometryFunction\n */\n\n/**\n * Custom renderer function. Takes two arguments:\n *\n * 1. The pixel coordinates of the geometry in GeoJSON notation.\n * 2. The {@link module:ol/render~State} of the layer renderer.\n *\n * @typedef {function((import(\"../coordinate.js\").Coordinate|Array<import(\"../coordinate.js\").Coordinate>|Array<Array<import(\"../coordinate.js\").Coordinate>>|Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>),import(\"../render.js\").State): void} RenderFunction\n */\n\n/**\n * @typedef {Object} Options\n * @property {string|import(\"../geom/Geometry.js\").default|GeometryFunction} [geometry] Feature property or geometry\n * or function returning a geometry to render for this style.\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {import(\"./Image.js\").default} [image] Image style.\n * @property {RenderFunction} [renderer] Custom renderer. When configured, `fill`, `stroke` and `image` will be\n * ignored, and the provided function will be called with each render frame for each geometry.\n * @property {RenderFunction} [hitDetectionRenderer] Custom renderer for hit detection. If provided will be used\n * in hit detection rendering.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {import(\"./Text.js\").default} [text] Text style.\n * @property {number} [zIndex] Z index.\n */\n\n/**\n * @classdesc\n * Container for vector feature rendering styles. Any changes made to the style\n * or its children through `set*()` methods will not take effect until the\n * feature or layer that uses the style is re-rendered.\n *\n * ## Feature styles\n *\n * If no style is defined, the following default style is used:\n * ```js\n *  import {Circle, Fill, Stroke, Style} from 'ol/style.js';\n *\n *  const fill = new Fill({\n *    color: 'rgba(255,255,255,0.4)',\n *  });\n *  const stroke = new Stroke({\n *    color: '#3399CC',\n *    width: 1.25,\n *  });\n *  const styles = [\n *    new Style({\n *      image: new Circle({\n *        fill: fill,\n *        stroke: stroke,\n *        radius: 5,\n *      }),\n *      fill: fill,\n *      stroke: stroke,\n *    }),\n *  ];\n * ```\n *\n * A separate editing style has the following defaults:\n * ```js\n *  import {Circle, Fill, Stroke, Style} from 'ol/style.js';\n *\n *  const styles = {};\n *  const white = [255, 255, 255, 1];\n *  const blue = [0, 153, 255, 1];\n *  const width = 3;\n *  styles['Polygon'] = [\n *    new Style({\n *      fill: new Fill({\n *        color: [255, 255, 255, 0.5],\n *      }),\n *    }),\n *  ];\n *  styles['MultiPolygon'] =\n *      styles['Polygon'];\n *  styles['LineString'] = [\n *    new Style({\n *      stroke: new Stroke({\n *        color: white,\n *        width: width + 2,\n *      }),\n *    }),\n *    new Style({\n *      stroke: new Stroke({\n *        color: blue,\n *        width: width,\n *      }),\n *    }),\n *  ];\n *  styles['MultiLineString'] = styles['LineString'];\n *\n *  styles['Circle'] = styles['Polygon'].concat(\n *    styles['LineString']\n *  );\n *\n *  styles['Point'] = [\n *    new Style({\n *      image: new Circle({\n *        radius: width * 2,\n *        fill: new Fill({\n *          color: blue,\n *        }),\n *        stroke: new Stroke({\n *          color: white,\n *          width: width / 2,\n *        }),\n *      }),\n *      zIndex: Infinity,\n *    }),\n *  ];\n *  styles['MultiPoint'] =\n *      styles['Point'];\n *  styles['GeometryCollection'] =\n *      styles['Polygon'].concat(\n *          styles['LineString'],\n *          styles['Point']\n *      );\n * ```\n *\n * @api\n */\nclass Style {\n  /**\n   * @param {Options} [options] Style options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {string|import(\"../geom/Geometry.js\").default|GeometryFunction|null}\n     */\n    this.geometry_ = null;\n\n    /**\n     * @private\n     * @type {!GeometryFunction}\n     */\n    this.geometryFunction_ = defaultGeometryFunction;\n\n    if (options.geometry !== undefined) {\n      this.setGeometry(options.geometry);\n    }\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.fill_ = options.fill !== undefined ? options.fill : null;\n\n    /**\n     * @private\n     * @type {import(\"./Image.js\").default|null}\n     */\n    this.image_ = options.image !== undefined ? options.image : null;\n\n    /**\n     * @private\n     * @type {RenderFunction|null}\n     */\n    this.renderer_ = options.renderer !== undefined ? options.renderer : null;\n\n    /**\n     * @private\n     * @type {RenderFunction|null}\n     */\n    this.hitDetectionRenderer_ =\n      options.hitDetectionRenderer !== undefined\n        ? options.hitDetectionRenderer\n        : null;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n    /**\n     * @private\n     * @type {import(\"./Text.js\").default|null}\n     */\n    this.text_ = options.text !== undefined ? options.text : null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.zIndex_ = options.zIndex;\n  }\n\n  /**\n   * Clones the style.\n   * @return {Style} The cloned style.\n   * @api\n   */\n  clone() {\n    let geometry = this.getGeometry();\n    if (geometry && typeof geometry === 'object') {\n      geometry = /** @type {import(\"../geom/Geometry.js\").default} */ (\n        geometry\n      ).clone();\n    }\n    return new Style({\n      geometry: geometry ?? undefined,\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      image: this.getImage() ? this.getImage().clone() : undefined,\n      renderer: this.getRenderer() ?? undefined,\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      text: this.getText() ? this.getText().clone() : undefined,\n      zIndex: this.getZIndex(),\n    });\n  }\n\n  /**\n   * Get the custom renderer function that was configured with\n   * {@link #setRenderer} or the `renderer` constructor option.\n   * @return {RenderFunction|null} Custom renderer function.\n   * @api\n   */\n  getRenderer() {\n    return this.renderer_;\n  }\n\n  /**\n   * Sets a custom renderer function for this style. When set, `fill`, `stroke`\n   * and `image` options of the style will be ignored.\n   * @param {RenderFunction|null} renderer Custom renderer function.\n   * @api\n   */\n  setRenderer(renderer) {\n    this.renderer_ = renderer;\n  }\n\n  /**\n   * Sets a custom renderer function for this style used\n   * in hit detection.\n   * @param {RenderFunction|null} renderer Custom renderer function.\n   * @api\n   */\n  setHitDetectionRenderer(renderer) {\n    this.hitDetectionRenderer_ = renderer;\n  }\n\n  /**\n   * Get the custom renderer function that was configured with\n   * {@link #setHitDetectionRenderer} or the `hitDetectionRenderer` constructor option.\n   * @return {RenderFunction|null} Custom renderer function.\n   * @api\n   */\n  getHitDetectionRenderer() {\n    return this.hitDetectionRenderer_;\n  }\n\n  /**\n   * Get the geometry to be rendered.\n   * @return {string|import(\"../geom/Geometry.js\").default|GeometryFunction|null}\n   * Feature property or geometry or function that returns the geometry that will\n   * be rendered with this style.\n   * @api\n   */\n  getGeometry() {\n    return this.geometry_;\n  }\n\n  /**\n   * Get the function used to generate a geometry for rendering.\n   * @return {!GeometryFunction} Function that is called with a feature\n   * and returns the geometry to render instead of the feature's geometry.\n   * @api\n   */\n  getGeometryFunction() {\n    return this.geometryFunction_;\n  }\n\n  /**\n   * Get the fill style.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getFill() {\n    return this.fill_;\n  }\n\n  /**\n   * Set the fill style.\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setFill(fill) {\n    this.fill_ = fill;\n  }\n\n  /**\n   * Get the image style.\n   * @return {import(\"./Image.js\").default|null} Image style.\n   * @api\n   */\n  getImage() {\n    return this.image_;\n  }\n\n  /**\n   * Set the image style.\n   * @param {import(\"./Image.js\").default} image Image style.\n   * @api\n   */\n  setImage(image) {\n    this.image_ = image;\n  }\n\n  /**\n   * Get the stroke style.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getStroke() {\n    return this.stroke_;\n  }\n\n  /**\n   * Set the stroke style.\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setStroke(stroke) {\n    this.stroke_ = stroke;\n  }\n\n  /**\n   * Get the text style.\n   * @return {import(\"./Text.js\").default|null} Text style.\n   * @api\n   */\n  getText() {\n    return this.text_;\n  }\n\n  /**\n   * Set the text style.\n   * @param {import(\"./Text.js\").default} text Text style.\n   * @api\n   */\n  setText(text) {\n    this.text_ = text;\n  }\n\n  /**\n   * Get the z-index for the style.\n   * @return {number|undefined} ZIndex.\n   * @api\n   */\n  getZIndex() {\n    return this.zIndex_;\n  }\n\n  /**\n   * Set a geometry that is rendered instead of the feature's geometry.\n   *\n   * @param {string|import(\"../geom/Geometry.js\").default|GeometryFunction} geometry\n   *     Feature property or geometry or function returning a geometry to render\n   *     for this style.\n   * @api\n   */\n  setGeometry(geometry) {\n    if (typeof geometry === 'function') {\n      this.geometryFunction_ = geometry;\n    } else if (typeof geometry === 'string') {\n      this.geometryFunction_ = function (feature) {\n        return /** @type {import(\"../geom/Geometry.js\").default} */ (\n          feature.get(geometry)\n        );\n      };\n    } else if (!geometry) {\n      this.geometryFunction_ = defaultGeometryFunction;\n    } else if (geometry !== undefined) {\n      this.geometryFunction_ = function () {\n        return /** @type {import(\"../geom/Geometry.js\").default} */ (geometry);\n      };\n    }\n    this.geometry_ = geometry;\n  }\n\n  /**\n   * Set the z-index.\n   *\n   * @param {number|undefined} zIndex ZIndex.\n   * @api\n   */\n  setZIndex(zIndex) {\n    this.zIndex_ = zIndex;\n  }\n}\n\n/**\n * Convert the provided object into a style function.  Functions passed through\n * unchanged.  Arrays of Style or single style objects wrapped in a\n * new style function.\n * @param {StyleFunction|Array<Style>|Style} obj\n *     A style function, a single style, or an array of styles.\n * @return {StyleFunction} A style function.\n */\nexport function toFunction(obj) {\n  let styleFunction;\n\n  if (typeof obj === 'function') {\n    styleFunction = obj;\n  } else {\n    /**\n     * @type {Array<Style>}\n     */\n    let styles;\n    if (Array.isArray(obj)) {\n      styles = obj;\n    } else {\n      assert(\n        typeof (/** @type {?} */ (obj).getZIndex) === 'function',\n        'Expected an `Style` or an array of `Style`',\n      );\n      const style = /** @type {Style} */ (obj);\n      styles = [style];\n    }\n    styleFunction = function () {\n      return styles;\n    };\n  }\n  return styleFunction;\n}\n\n/**\n * @type {Array<Style>|null}\n */\nlet defaultStyles = null;\n\n/**\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} resolution Resolution.\n * @return {Array<Style>} Style.\n */\nexport function createDefaultStyle(feature, resolution) {\n  // We don't use an immediately-invoked function\n  // and a closure so we don't get an error at script evaluation time in\n  // browsers that do not support Canvas. (import(\"./Circle.js\").CircleStyle does\n  // canvas.getContext('2d') at construction time, which will cause an.error\n  // in such browsers.)\n  if (!defaultStyles) {\n    const fill = new Fill({\n      color: 'rgba(255,255,255,0.4)',\n    });\n    const stroke = new Stroke({\n      color: '#3399CC',\n      width: 1.25,\n    });\n    defaultStyles = [\n      new Style({\n        image: new CircleStyle({\n          fill: fill,\n          stroke: stroke,\n          radius: 5,\n        }),\n        fill: fill,\n        stroke: stroke,\n      }),\n    ];\n  }\n  return defaultStyles;\n}\n\n/**\n * Default styles for editing features.\n * @return {Object<import(\"../geom/Geometry.js\").Type, Array<Style>>} Styles\n */\nexport function createEditingStyle() {\n  /** @type {Object<import(\"../geom/Geometry.js\").Type, Array<Style>>} */\n  const styles = {};\n  const white = [255, 255, 255, 1];\n  const blue = [0, 153, 255, 1];\n  const width = 3;\n  styles['Polygon'] = [\n    new Style({\n      fill: new Fill({\n        color: [255, 255, 255, 0.5],\n      }),\n    }),\n  ];\n  styles['MultiPolygon'] = styles['Polygon'];\n\n  styles['LineString'] = [\n    new Style({\n      stroke: new Stroke({\n        color: white,\n        width: width + 2,\n      }),\n    }),\n    new Style({\n      stroke: new Stroke({\n        color: blue,\n        width: width,\n      }),\n    }),\n  ];\n  styles['MultiLineString'] = styles['LineString'];\n\n  styles['Circle'] = styles['Polygon'].concat(styles['LineString']);\n\n  styles['Point'] = [\n    new Style({\n      image: new CircleStyle({\n        radius: width * 2,\n        fill: new Fill({\n          color: blue,\n        }),\n        stroke: new Stroke({\n          color: white,\n          width: width / 2,\n        }),\n      }),\n      zIndex: Infinity,\n    }),\n  ];\n  styles['MultiPoint'] = styles['Point'];\n\n  styles['GeometryCollection'] = styles['Polygon'].concat(\n    styles['LineString'],\n    styles['Point'],\n  );\n\n  return styles;\n}\n\n/**\n * Function that is called with a feature and returns its default geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature to get the geometry for.\n * @return {import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default|undefined} Geometry to render.\n */\nfunction defaultGeometryFunction(feature) {\n  return feature.getGeometry();\n}\n\nexport default Style;\n","/**\n * @module ol/style/Text\n */\nimport {toSize} from '../size.js';\nimport Fill from './Fill.js';\n\n/**\n * @typedef {'point' | 'line'} TextPlacement\n * Default text placement is `'point'`. Note that\n * `'line'` requires the underlying geometry to be a {@link module:ol/geom/LineString~LineString},\n * {@link module:ol/geom/Polygon~Polygon}, {@link module:ol/geom/MultiLineString~MultiLineString} or\n * {@link module:ol/geom/MultiPolygon~MultiPolygon}.\n */\n\n/**\n * @typedef {'left' | 'center' | 'right'} TextJustify\n */\n\n/**\n * The default fill color to use if no fill was set at construction time; a\n * blackish `#333`.\n *\n * @const {string}\n */\nconst DEFAULT_FILL_COLOR = '#333';\n\n/**\n * @typedef {Object} Options\n * @property {string} [font] Font style as CSS `font` value, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. Default is `'10px sans-serif'`\n * @property {number} [maxAngle=Math.PI/4] When `placement` is set to `'line'`, allow a maximum angle between adjacent characters.\n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).\n * @property {number} [offsetX=0] Horizontal text offset in pixels. A positive will shift the text right.\n * @property {number} [offsetY=0] Vertical text offset in pixels. A positive will shift the text down.\n * @property {boolean} [overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceed\n * the width of the polygon at the label position or the length of the path that it follows.\n * @property {TextPlacement} [placement='point'] Text placement.\n * @property {number} [repeat] Repeat interval. When set, the text will be repeated at this interval, which specifies\n * the distance between two text anchors in pixels. Only available when `placement` is set to `'line'`. Overrides 'textAlign'.\n * @property {number|import(\"../size.js\").Size} [scale] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the text with the view.\n * @property {boolean} [keepUpright=true] Whether the text can be rotated 180° to prevent being rendered upside down.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {string|Array<string>} [text] Text content or rich text content. For plain text provide a string, which can\n * contain line breaks (`\\n`). For rich text provide an array of text/font tuples. A tuple consists of the text to\n * render and the font to use (or `''` to use the text style's font). A line break has to be a separate tuple (i.e. `'\\n', ''`).\n * **Example:** `['foo', 'bold 10px sans-serif', ' bar', 'italic 10px sans-serif', ' baz', '']` will yield \"**foo** *bar* baz\".\n * **Note:** Rich text is not supported for `placement: 'line'` or the immediate rendering API.\n * @property {CanvasTextAlign} [textAlign] Text alignment. Possible values: `'left'`, `'right'`, `'center'`, `'end'` or `'start'`.\n * Default is `'center'` for `placement: 'point'`. For `placement: 'line'`, the default is to let the renderer choose a\n * placement where `maxAngle` is not exceeded.\n * @property {TextJustify} [justify] Text justification within the text box.\n * If not set, text is justified towards the `textAlign` anchor.\n * Otherwise, use options `'left'`, `'center'`, or `'right'` to justify the text within the text box.\n * **Note:** `justify` is ignored for immediate rendering and also for `placement: 'line'`.\n * @property {CanvasTextBaseline} [textBaseline='middle'] Text base line. Possible values: `'bottom'`, `'top'`, `'middle'`, `'alphabetic'`,\n * `'hanging'`, `'ideographic'`.\n * @property {import(\"./Fill.js\").default|null} [fill] Fill style. If none is provided, we'll use a dark fill-style (#333). Specify `null` for no fill.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {import(\"./Fill.js\").default} [backgroundFill] Fill style for the text background when `placement` is\n * `'point'`. Default is no fill.\n * @property {import(\"./Stroke.js\").default} [backgroundStroke] Stroke style for the text background  when `placement`\n * is `'point'`. Default is no stroke.\n * @property {Array<number>} [padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order of\n * values in the array is `[top, right, bottom, left]`.\n * @property {import('../style/Style.js').DeclutterMode} [declutterMode] Declutter mode: `declutter`, `obstacle`, `none`\n */\n\n/**\n * @classdesc\n * Set text style for vector features.\n * @api\n */\nclass Text {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.font_ = options.font;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.rotation_ = options.rotation;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.rotateWithView_ = options.rotateWithView;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.keepUpright_ = options.keepUpright;\n\n    /**\n     * @private\n     * @type {number|import(\"../size.js\").Size|undefined}\n     */\n    this.scale_ = options.scale;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.scaleArray_ = toSize(options.scale !== undefined ? options.scale : 1);\n\n    /**\n     * @private\n     * @type {string|Array<string>|undefined}\n     */\n    this.text_ = options.text;\n\n    /**\n     * @private\n     * @type {CanvasTextAlign|undefined}\n     */\n    this.textAlign_ = options.textAlign;\n\n    /**\n     * @private\n     * @type {TextJustify|undefined}\n     */\n    this.justify_ = options.justify;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.repeat_ = options.repeat;\n\n    /**\n     * @private\n     * @type {CanvasTextBaseline|undefined}\n     */\n    this.textBaseline_ = options.textBaseline;\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.fill_ =\n      options.fill !== undefined\n        ? options.fill\n        : new Fill({color: DEFAULT_FILL_COLOR});\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxAngle_ =\n      options.maxAngle !== undefined ? options.maxAngle : Math.PI / 4;\n\n    /**\n     * @private\n     * @type {TextPlacement}\n     */\n    this.placement_ =\n      options.placement !== undefined ? options.placement : 'point';\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overflow_ = !!options.overflow;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.offsetX_ = options.offsetX !== undefined ? options.offsetX : 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.offsetY_ = options.offsetY !== undefined ? options.offsetY : 0;\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.backgroundFill_ = options.backgroundFill\n      ? options.backgroundFill\n      : null;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.backgroundStroke_ = options.backgroundStroke\n      ? options.backgroundStroke\n      : null;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.padding_ = options.padding === undefined ? null : options.padding;\n\n    /**\n     * @private\n     * @type {import('../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = options.declutterMode;\n  }\n\n  /**\n   * Clones the style.\n   * @return {Text} The cloned style.\n   * @api\n   */\n  clone() {\n    const scale = this.getScale();\n    return new Text({\n      font: this.getFont(),\n      placement: this.getPlacement(),\n      repeat: this.getRepeat(),\n      maxAngle: this.getMaxAngle(),\n      overflow: this.getOverflow(),\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      keepUpright: this.getKeepUpright(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      text: this.getText(),\n      textAlign: this.getTextAlign(),\n      justify: this.getJustify(),\n      textBaseline: this.getTextBaseline(),\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      offsetX: this.getOffsetX(),\n      offsetY: this.getOffsetY(),\n      backgroundFill: this.getBackgroundFill()\n        ? this.getBackgroundFill().clone()\n        : undefined,\n      backgroundStroke: this.getBackgroundStroke()\n        ? this.getBackgroundStroke().clone()\n        : undefined,\n      padding: this.getPadding() || undefined,\n      declutterMode: this.getDeclutterMode(),\n    });\n  }\n\n  /**\n   * Get the `overflow` configuration.\n   * @return {boolean} Let text overflow the length of the path they follow.\n   * @api\n   */\n  getOverflow() {\n    return this.overflow_;\n  }\n\n  /**\n   * Get the font name.\n   * @return {string|undefined} Font.\n   * @api\n   */\n  getFont() {\n    return this.font_;\n  }\n\n  /**\n   * Get the maximum angle between adjacent characters.\n   * @return {number} Angle in radians.\n   * @api\n   */\n  getMaxAngle() {\n    return this.maxAngle_;\n  }\n\n  /**\n   * Get the label placement.\n   * @return {TextPlacement} Text placement.\n   * @api\n   */\n  getPlacement() {\n    return this.placement_;\n  }\n\n  /**\n   * Get the repeat interval of the text.\n   * @return {number|undefined} Repeat interval in pixels.\n   * @api\n   */\n  getRepeat() {\n    return this.repeat_;\n  }\n\n  /**\n   * Get the x-offset for the text.\n   * @return {number} Horizontal text offset.\n   * @api\n   */\n  getOffsetX() {\n    return this.offsetX_;\n  }\n\n  /**\n   * Get the y-offset for the text.\n   * @return {number} Vertical text offset.\n   * @api\n   */\n  getOffsetY() {\n    return this.offsetY_;\n  }\n\n  /**\n   * Get the fill style for the text.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getFill() {\n    return this.fill_;\n  }\n\n  /**\n   * Determine whether the text rotates with the map.\n   * @return {boolean|undefined} Rotate with map.\n   * @api\n   */\n  getRotateWithView() {\n    return this.rotateWithView_;\n  }\n\n  /**\n   * Determine whether the text can be rendered upside down.\n   * @return {boolean|undefined} Keep text upright.\n   * @api\n   */\n  getKeepUpright() {\n    return this.keepUpright_;\n  }\n\n  /**\n   * Get the text rotation.\n   * @return {number|undefined} Rotation.\n   * @api\n   */\n  getRotation() {\n    return this.rotation_;\n  }\n\n  /**\n   * Get the text scale.\n   * @return {number|import(\"../size.js\").Size|undefined} Scale.\n   * @api\n   */\n  getScale() {\n    return this.scale_;\n  }\n\n  /**\n   * Get the symbolizer scale array.\n   * @return {import(\"../size.js\").Size} Scale array.\n   */\n  getScaleArray() {\n    return this.scaleArray_;\n  }\n\n  /**\n   * Get the stroke style for the text.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getStroke() {\n    return this.stroke_;\n  }\n\n  /**\n   * Get the text to be rendered.\n   * @return {string|Array<string>|undefined} Text.\n   * @api\n   */\n  getText() {\n    return this.text_;\n  }\n\n  /**\n   * Get the text alignment.\n   * @return {CanvasTextAlign|undefined} Text align.\n   * @api\n   */\n  getTextAlign() {\n    return this.textAlign_;\n  }\n\n  /**\n   * Get the justification.\n   * @return {TextJustify|undefined} Justification.\n   * @api\n   */\n  getJustify() {\n    return this.justify_;\n  }\n\n  /**\n   * Get the text baseline.\n   * @return {CanvasTextBaseline|undefined} Text baseline.\n   * @api\n   */\n  getTextBaseline() {\n    return this.textBaseline_;\n  }\n\n  /**\n   * Get the background fill style for the text.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getBackgroundFill() {\n    return this.backgroundFill_;\n  }\n\n  /**\n   * Get the background stroke style for the text.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getBackgroundStroke() {\n    return this.backgroundStroke_;\n  }\n\n  /**\n   * Get the padding for the text.\n   * @return {Array<number>|null} Padding.\n   * @api\n   */\n  getPadding() {\n    return this.padding_;\n  }\n\n  /**\n   * Get the declutter mode of the shape\n   * @return {import(\"./Style.js\").DeclutterMode} Shape's declutter mode\n   * @api\n   */\n  getDeclutterMode() {\n    return this.declutterMode_;\n  }\n\n  /**\n   * Set the `overflow` property.\n   *\n   * @param {boolean} overflow Let text overflow the path that it follows.\n   * @api\n   */\n  setOverflow(overflow) {\n    this.overflow_ = overflow;\n  }\n\n  /**\n   * Set the font.\n   *\n   * @param {string|undefined} font Font.\n   * @api\n   */\n  setFont(font) {\n    this.font_ = font;\n  }\n\n  /**\n   * Set the maximum angle between adjacent characters.\n   *\n   * @param {number} maxAngle Angle in radians.\n   * @api\n   */\n  setMaxAngle(maxAngle) {\n    this.maxAngle_ = maxAngle;\n  }\n\n  /**\n   * Set the x offset.\n   *\n   * @param {number} offsetX Horizontal text offset.\n   * @api\n   */\n  setOffsetX(offsetX) {\n    this.offsetX_ = offsetX;\n  }\n\n  /**\n   * Set the y offset.\n   *\n   * @param {number} offsetY Vertical text offset.\n   * @api\n   */\n  setOffsetY(offsetY) {\n    this.offsetY_ = offsetY;\n  }\n\n  /**\n   * Set the text placement.\n   *\n   * @param {TextPlacement} placement Placement.\n   * @api\n   */\n  setPlacement(placement) {\n    this.placement_ = placement;\n  }\n\n  /**\n   * Set the repeat interval of the text.\n   * @param {number|undefined} [repeat] Repeat interval in pixels.\n   * @api\n   */\n  setRepeat(repeat) {\n    this.repeat_ = repeat;\n  }\n\n  /**\n   * Set whether to rotate the text with the view.\n   *\n   * @param {boolean} rotateWithView Rotate with map.\n   * @api\n   */\n  setRotateWithView(rotateWithView) {\n    this.rotateWithView_ = rotateWithView;\n  }\n\n  /**\n   * Set whether the text can be rendered upside down.\n   *\n   * @param {boolean} keepUpright Keep text upright.\n   * @api\n   */\n  setKeepUpright(keepUpright) {\n    this.keepUpright_ = keepUpright;\n  }\n\n  /**\n   * Set the fill.\n   *\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setFill(fill) {\n    this.fill_ = fill;\n  }\n\n  /**\n   * Set the rotation.\n   *\n   * @param {number|undefined} rotation Rotation.\n   * @api\n   */\n  setRotation(rotation) {\n    this.rotation_ = rotation;\n  }\n\n  /**\n   * Set the scale.\n   *\n   * @param {number|import(\"../size.js\").Size|undefined} scale Scale.\n   * @api\n   */\n  setScale(scale) {\n    this.scale_ = scale;\n    this.scaleArray_ = toSize(scale !== undefined ? scale : 1);\n  }\n\n  /**\n   * Set the stroke.\n   *\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setStroke(stroke) {\n    this.stroke_ = stroke;\n  }\n\n  /**\n   * Set the text.\n   *\n   * @param {string|Array<string>|undefined} text Text.\n   * @api\n   */\n  setText(text) {\n    this.text_ = text;\n  }\n\n  /**\n   * Set the text alignment.\n   *\n   * @param {CanvasTextAlign|undefined} textAlign Text align.\n   * @api\n   */\n  setTextAlign(textAlign) {\n    this.textAlign_ = textAlign;\n  }\n\n  /**\n   * Set the justification.\n   *\n   * @param {TextJustify|undefined} justify Justification.\n   * @api\n   */\n  setJustify(justify) {\n    this.justify_ = justify;\n  }\n\n  /**\n   * Set the text baseline.\n   *\n   * @param {CanvasTextBaseline|undefined} textBaseline Text baseline.\n   * @api\n   */\n  setTextBaseline(textBaseline) {\n    this.textBaseline_ = textBaseline;\n  }\n\n  /**\n   * Set the background fill.\n   *\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setBackgroundFill(fill) {\n    this.backgroundFill_ = fill;\n  }\n\n  /**\n   * Set the background stroke.\n   *\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setBackgroundStroke(stroke) {\n    this.backgroundStroke_ = stroke;\n  }\n\n  /**\n   * Set the padding (`[top, right, bottom, left]`).\n   *\n   * @param {Array<number>|null} padding Padding.\n   * @api\n   */\n  setPadding(padding) {\n    this.padding_ = padding;\n  }\n}\n\nexport default Text;\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/render/canvas/Instruction\n */\n\n/**\n * @enum {number}\n */\nconst Instruction = {\n  BEGIN_GEOMETRY: 0,\n  BEGIN_PATH: 1,\n  CIRCLE: 2,\n  CLOSE_PATH: 3,\n  CUSTOM: 4,\n  DRAW_CHARS: 5,\n  DRAW_IMAGE: 6,\n  END_GEOMETRY: 7,\n  FILL: 8,\n  MOVE_TO_LINE_TO: 9,\n  SET_FILL_STYLE: 10,\n  SET_STROKE_STYLE: 11,\n  STROKE: 12,\n};\n\n/**\n * @type {Array<Instruction>}\n */\nexport const fillInstruction = [Instruction.FILL];\n\n/**\n * @type {Array<Instruction>}\n */\nexport const strokeInstruction = [Instruction.STROKE];\n\n/**\n * @type {Array<Instruction>}\n */\nexport const beginPathInstruction = [Instruction.BEGIN_PATH];\n\n/**\n * @type {Array<Instruction>}\n */\nexport const closePathInstruction = [Instruction.CLOSE_PATH];\n\nexport default Instruction;\n","/**\n * @module ol/render/canvas/Builder\n */\nimport {equals, reverseSubArray} from '../../array.js';\nimport {asColorLike} from '../../colorlike.js';\nimport Relationship from '../../extent/Relationship.js';\nimport {\n  buffer,\n  clone,\n  containsCoordinate,\n  coordinateRelationship,\n} from '../../extent.js';\nimport {\n  inflateCoordinates,\n  inflateCoordinatesArray,\n  inflateMultiCoordinatesArray,\n} from '../../geom/flat/inflate.js';\nimport VectorContext from '../VectorContext.js';\nimport {\n  defaultFillStyle,\n  defaultLineCap,\n  defaultLineDash,\n  defaultLineDashOffset,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultStrokeStyle,\n} from '../canvas.js';\nimport CanvasInstruction from './Instruction.js';\n\nclass CanvasBuilder extends VectorContext {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super();\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.tolerance = tolerance;\n\n    /**\n     * @protected\n     * @const\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.maxExtent = maxExtent;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.pixelRatio = pixelRatio;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.maxLineWidth = 0;\n\n    /**\n     * @protected\n     * @const\n     * @type {number}\n     */\n    this.resolution = resolution;\n\n    /**\n     * @private\n     * @type {Array<*>}\n     */\n    this.beginGeometryInstruction1_ = null;\n\n    /**\n     * @private\n     * @type {Array<*>}\n     */\n    this.beginGeometryInstruction2_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.bufferedMaxExtent_ = null;\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.instructions = [];\n\n    /**\n     * @protected\n     * @type {Array<number>}\n     */\n    this.coordinates = [];\n\n    /**\n     * @private\n     * @type {import(\"../../coordinate.js\").Coordinate}\n     */\n    this.tmpCoordinate_ = [];\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.hitDetectionInstructions = [];\n\n    /**\n     * @protected\n     * @type {import(\"../canvas.js\").FillStrokeState}\n     */\n    this.state = /** @type {import(\"../canvas.js\").FillStrokeState} */ ({});\n  }\n\n  /**\n   * @protected\n   * @param {Array<number>} dashArray Dash array.\n   * @return {Array<number>} Dash array with pixel ratio applied\n   */\n  applyPixelRatio(dashArray) {\n    const pixelRatio = this.pixelRatio;\n    return pixelRatio == 1\n      ? dashArray\n      : dashArray.map(function (dash) {\n          return dash * pixelRatio;\n        });\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} stride Stride.\n   * @protected\n   * @return {number} My end\n   */\n  appendFlatPointCoordinates(flatCoordinates, stride) {\n    const extent = this.getBufferedMaxExtent();\n    const tmpCoord = this.tmpCoordinate_;\n    const coordinates = this.coordinates;\n    let myEnd = coordinates.length;\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      tmpCoord[0] = flatCoordinates[i];\n      tmpCoord[1] = flatCoordinates[i + 1];\n      if (containsCoordinate(extent, tmpCoord)) {\n        coordinates[myEnd++] = tmpCoord[0];\n        coordinates[myEnd++] = tmpCoord[1];\n      }\n    }\n    return myEnd;\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @param {boolean} closed Last input coordinate equals first.\n   * @param {boolean} skipFirst Skip first coordinate.\n   * @protected\n   * @return {number} My end.\n   */\n  appendFlatLineCoordinates(\n    flatCoordinates,\n    offset,\n    end,\n    stride,\n    closed,\n    skipFirst,\n  ) {\n    const coordinates = this.coordinates;\n    let myEnd = coordinates.length;\n    const extent = this.getBufferedMaxExtent();\n    if (skipFirst) {\n      offset += stride;\n    }\n    let lastXCoord = flatCoordinates[offset];\n    let lastYCoord = flatCoordinates[offset + 1];\n    const nextCoord = this.tmpCoordinate_;\n    let skipped = true;\n\n    let i, lastRel, nextRel;\n    for (i = offset + stride; i < end; i += stride) {\n      nextCoord[0] = flatCoordinates[i];\n      nextCoord[1] = flatCoordinates[i + 1];\n      nextRel = coordinateRelationship(extent, nextCoord);\n      if (nextRel !== lastRel) {\n        if (skipped) {\n          coordinates[myEnd++] = lastXCoord;\n          coordinates[myEnd++] = lastYCoord;\n          skipped = false;\n        }\n        coordinates[myEnd++] = nextCoord[0];\n        coordinates[myEnd++] = nextCoord[1];\n      } else if (nextRel === Relationship.INTERSECTING) {\n        coordinates[myEnd++] = nextCoord[0];\n        coordinates[myEnd++] = nextCoord[1];\n        skipped = false;\n      } else {\n        skipped = true;\n      }\n      lastXCoord = nextCoord[0];\n      lastYCoord = nextCoord[1];\n      lastRel = nextRel;\n    }\n\n    // Last coordinate equals first or only one point to append:\n    if ((closed && skipped) || i === offset + stride) {\n      coordinates[myEnd++] = lastXCoord;\n      coordinates[myEnd++] = lastYCoord;\n    }\n    return myEnd;\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @param {Array<number>} builderEnds Builder ends.\n   * @return {number} Offset.\n   */\n  drawCustomCoordinates_(flatCoordinates, offset, ends, stride, builderEnds) {\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const builderEnd = this.appendFlatLineCoordinates(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        false,\n        false,\n      );\n      builderEnds.push(builderEnd);\n      offset = end;\n    }\n    return offset;\n  }\n\n  /**\n   * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {Function} renderer Renderer.\n   * @param {Function} hitDetectionRenderer Renderer.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {\n    this.beginGeometry(geometry, feature, index);\n\n    const type = geometry.getType();\n    const stride = geometry.getStride();\n    const builderBegin = this.coordinates.length;\n\n    let flatCoordinates, builderEnd, builderEnds, builderEndss;\n    let offset;\n\n    switch (type) {\n      case 'MultiPolygon':\n        flatCoordinates =\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ).getOrientedFlatCoordinates();\n        builderEndss = [];\n        const endss =\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ).getEndss();\n        offset = 0;\n        for (let i = 0, ii = endss.length; i < ii; ++i) {\n          const myEnds = [];\n          offset = this.drawCustomCoordinates_(\n            flatCoordinates,\n            offset,\n            endss[i],\n            stride,\n            myEnds,\n          );\n          builderEndss.push(myEnds);\n        }\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEndss,\n          geometry,\n          renderer,\n          inflateMultiCoordinatesArray,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEndss,\n          geometry,\n          hitDetectionRenderer || renderer,\n          inflateMultiCoordinatesArray,\n          index,\n        ]);\n        break;\n      case 'Polygon':\n      case 'MultiLineString':\n        builderEnds = [];\n        flatCoordinates =\n          type == 'Polygon'\n            ? /** @type {import(\"../../geom/Polygon.js\").default} */ (\n                geometry\n              ).getOrientedFlatCoordinates()\n            : geometry.getFlatCoordinates();\n        offset = this.drawCustomCoordinates_(\n          flatCoordinates,\n          0,\n          /** @type {import(\"../../geom/Polygon.js\").default|import(\"../../geom/MultiLineString.js\").default} */ (\n            geometry\n          ).getEnds(),\n          stride,\n          builderEnds,\n        );\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnds,\n          geometry,\n          renderer,\n          inflateCoordinatesArray,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnds,\n          geometry,\n          hitDetectionRenderer || renderer,\n          inflateCoordinatesArray,\n          index,\n        ]);\n        break;\n      case 'LineString':\n      case 'Circle':\n        flatCoordinates = geometry.getFlatCoordinates();\n        builderEnd = this.appendFlatLineCoordinates(\n          flatCoordinates,\n          0,\n          flatCoordinates.length,\n          stride,\n          false,\n          false,\n        );\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          renderer,\n          inflateCoordinates,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          hitDetectionRenderer || renderer,\n          inflateCoordinates,\n          index,\n        ]);\n        break;\n      case 'MultiPoint':\n        flatCoordinates = geometry.getFlatCoordinates();\n        builderEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n\n        if (builderEnd > builderBegin) {\n          this.instructions.push([\n            CanvasInstruction.CUSTOM,\n            builderBegin,\n            builderEnd,\n            geometry,\n            renderer,\n            inflateCoordinates,\n            index,\n          ]);\n          this.hitDetectionInstructions.push([\n            CanvasInstruction.CUSTOM,\n            builderBegin,\n            builderEnd,\n            geometry,\n            hitDetectionRenderer || renderer,\n            inflateCoordinates,\n            index,\n          ]);\n        }\n        break;\n      case 'Point':\n        flatCoordinates = geometry.getFlatCoordinates();\n        this.coordinates.push(flatCoordinates[0], flatCoordinates[1]);\n        builderEnd = this.coordinates.length;\n\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          renderer,\n          undefined,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          hitDetectionRenderer || renderer,\n          undefined,\n          index,\n        ]);\n        break;\n      default:\n    }\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @protected\n   * @param {import(\"../../geom/Geometry\").default|import(\"../Feature.js\").default} geometry The geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} index Render order index\n   */\n  beginGeometry(geometry, feature, index) {\n    this.beginGeometryInstruction1_ = [\n      CanvasInstruction.BEGIN_GEOMETRY,\n      feature,\n      0,\n      geometry,\n      index,\n    ];\n    this.instructions.push(this.beginGeometryInstruction1_);\n    this.beginGeometryInstruction2_ = [\n      CanvasInstruction.BEGIN_GEOMETRY,\n      feature,\n      0,\n      geometry,\n      index,\n    ];\n    this.hitDetectionInstructions.push(this.beginGeometryInstruction2_);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   */\n  finish() {\n    return {\n      instructions: this.instructions,\n      hitDetectionInstructions: this.hitDetectionInstructions,\n      coordinates: this.coordinates,\n    };\n  }\n\n  /**\n   * Reverse the hit detection instructions.\n   */\n  reverseHitDetectionInstructions() {\n    const hitDetectionInstructions = this.hitDetectionInstructions;\n    // step 1 - reverse array\n    hitDetectionInstructions.reverse();\n    // step 2 - reverse instructions within geometry blocks\n    let i;\n    const n = hitDetectionInstructions.length;\n    let instruction;\n    let type;\n    let begin = -1;\n    for (i = 0; i < n; ++i) {\n      instruction = hitDetectionInstructions[i];\n      type = /** @type {import(\"./Instruction.js\").default} */ (instruction[0]);\n      if (type == CanvasInstruction.END_GEOMETRY) {\n        begin = i;\n      } else if (type == CanvasInstruction.BEGIN_GEOMETRY) {\n        instruction[2] = i;\n        reverseSubArray(this.hitDetectionInstructions, begin, i);\n        begin = -1;\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n   * @param {import('../canvas.js').FillStrokeState} [state] State.\n   * @return {import('../canvas.js').FillStrokeState} State.\n   */\n  fillStyleToState(\n    fillStyle,\n    state = /** @type {import('../canvas.js').FillStrokeState} */ ({}),\n  ) {\n    if (fillStyle) {\n      const fillStyleColor = fillStyle.getColor();\n      state.fillPatternScale =\n        fillStyleColor &&\n        typeof fillStyleColor === 'object' &&\n        'src' in fillStyleColor\n          ? this.pixelRatio\n          : 1;\n      state.fillStyle = asColorLike(\n        fillStyleColor ? fillStyleColor : defaultFillStyle,\n      );\n    } else {\n      state.fillStyle = undefined;\n    }\n    return state;\n  }\n\n  /**\n   * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @return {import(\"../canvas.js\").FillStrokeState} State.\n   */\n  strokeStyleToState(\n    strokeStyle,\n    state = /** @type {import('../canvas.js').FillStrokeState} */ ({}),\n  ) {\n    if (strokeStyle) {\n      const strokeStyleColor = strokeStyle.getColor();\n      state.strokeStyle = asColorLike(\n        strokeStyleColor ? strokeStyleColor : defaultStrokeStyle,\n      );\n      const strokeStyleLineCap = strokeStyle.getLineCap();\n      state.lineCap =\n        strokeStyleLineCap !== undefined ? strokeStyleLineCap : defaultLineCap;\n      const strokeStyleLineDash = strokeStyle.getLineDash();\n      state.lineDash = strokeStyleLineDash\n        ? strokeStyleLineDash.slice()\n        : defaultLineDash;\n      const strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n      state.lineDashOffset = strokeStyleLineDashOffset\n        ? strokeStyleLineDashOffset\n        : defaultLineDashOffset;\n      const strokeStyleLineJoin = strokeStyle.getLineJoin();\n      state.lineJoin =\n        strokeStyleLineJoin !== undefined\n          ? strokeStyleLineJoin\n          : defaultLineJoin;\n      const strokeStyleWidth = strokeStyle.getWidth();\n      state.lineWidth =\n        strokeStyleWidth !== undefined ? strokeStyleWidth : defaultLineWidth;\n      const strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n      state.miterLimit =\n        strokeStyleMiterLimit !== undefined\n          ? strokeStyleMiterLimit\n          : defaultMiterLimit;\n\n      if (state.lineWidth > this.maxLineWidth) {\n        this.maxLineWidth = state.lineWidth;\n        // invalidate the buffered max extent cache\n        this.bufferedMaxExtent_ = null;\n      }\n    } else {\n      state.strokeStyle = undefined;\n      state.lineCap = undefined;\n      state.lineDash = null;\n      state.lineDashOffset = undefined;\n      state.lineJoin = undefined;\n      state.lineWidth = undefined;\n      state.miterLimit = undefined;\n    }\n    return state;\n  }\n\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    const state = this.state;\n    this.fillStyleToState(fillStyle, state);\n    this.strokeStyleToState(strokeStyle, state);\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @return {Array<*>} Fill instruction.\n   */\n  createFill(state) {\n    const fillStyle = state.fillStyle;\n    /** @type {Array<*>} */\n    const fillInstruction = [CanvasInstruction.SET_FILL_STYLE, fillStyle];\n    if (typeof fillStyle !== 'string') {\n      // Fill is a pattern or gradient - align and scale it!\n      fillInstruction.push(state.fillPatternScale);\n    }\n    return fillInstruction;\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   */\n  applyStroke(state) {\n    this.instructions.push(this.createStroke(state));\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @return {Array<*>} Stroke instruction.\n   */\n  createStroke(state) {\n    return [\n      CanvasInstruction.SET_STROKE_STYLE,\n      state.strokeStyle,\n      state.lineWidth * this.pixelRatio,\n      state.lineCap,\n      state.lineJoin,\n      state.miterLimit,\n      state.lineDash ? this.applyPixelRatio(state.lineDash) : null,\n      state.lineDashOffset * this.pixelRatio,\n    ];\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @param {function(this:CanvasBuilder, import(\"../canvas.js\").FillStrokeState):Array<*>} createFill Create fill.\n   */\n  updateFillStyle(state, createFill) {\n    const fillStyle = state.fillStyle;\n    if (typeof fillStyle !== 'string' || state.currentFillStyle != fillStyle) {\n      if (fillStyle !== undefined) {\n        this.instructions.push(createFill.call(this, state));\n      }\n      state.currentFillStyle = fillStyle;\n    }\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @param {function(this:CanvasBuilder, import(\"../canvas.js\").FillStrokeState): void} applyStroke Apply stroke.\n   */\n  updateStrokeStyle(state, applyStroke) {\n    const strokeStyle = state.strokeStyle;\n    const lineCap = state.lineCap;\n    const lineDash = state.lineDash;\n    const lineDashOffset = state.lineDashOffset;\n    const lineJoin = state.lineJoin;\n    const lineWidth = state.lineWidth;\n    const miterLimit = state.miterLimit;\n    if (\n      state.currentStrokeStyle != strokeStyle ||\n      state.currentLineCap != lineCap ||\n      (lineDash != state.currentLineDash &&\n        !equals(state.currentLineDash, lineDash)) ||\n      state.currentLineDashOffset != lineDashOffset ||\n      state.currentLineJoin != lineJoin ||\n      state.currentLineWidth != lineWidth ||\n      state.currentMiterLimit != miterLimit\n    ) {\n      if (strokeStyle !== undefined) {\n        applyStroke.call(this, state);\n      }\n      state.currentStrokeStyle = strokeStyle;\n      state.currentLineCap = lineCap;\n      state.currentLineDash = lineDash;\n      state.currentLineDashOffset = lineDashOffset;\n      state.currentLineJoin = lineJoin;\n      state.currentLineWidth = lineWidth;\n      state.currentMiterLimit = miterLimit;\n    }\n  }\n\n  /**\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   */\n  endGeometry(feature) {\n    this.beginGeometryInstruction1_[2] = this.instructions.length;\n    this.beginGeometryInstruction1_ = null;\n    this.beginGeometryInstruction2_[2] = this.hitDetectionInstructions.length;\n    this.beginGeometryInstruction2_ = null;\n    const endGeometryInstruction = [CanvasInstruction.END_GEOMETRY, feature];\n    this.instructions.push(endGeometryInstruction);\n    this.hitDetectionInstructions.push(endGeometryInstruction);\n  }\n\n  /**\n   * Get the buffered rendering extent.  Rendering will be clipped to the extent\n   * provided to the constructor.  To account for symbolizers that may intersect\n   * this extent, we calculate a buffered extent (e.g. based on stroke width).\n   * @return {import(\"../../extent.js\").Extent} The buffered rendering extent.\n   * @protected\n   */\n  getBufferedMaxExtent() {\n    if (!this.bufferedMaxExtent_) {\n      this.bufferedMaxExtent_ = clone(this.maxExtent);\n      if (this.maxLineWidth > 0) {\n        const width = (this.resolution * (this.maxLineWidth + 1)) / 2;\n        buffer(this.bufferedMaxExtent_, width, this.bufferedMaxExtent_);\n      }\n    }\n    return this.bufferedMaxExtent_;\n  }\n}\n\nexport default CanvasBuilder;\n","/**\n * @module ol/render/canvas/ImageBuilder\n */\nimport {containsCoordinate} from '../../extent.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction from './Instruction.js';\n\nclass CanvasImageBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n\n    /**\n     * @private\n     * @type {import('../../DataTile.js').ImageLike}\n     */\n    this.hitDetectionImage_ = null;\n\n    /**\n     * @private\n     * @type {import('../../DataTile.js').ImageLike}\n     */\n    this.image_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.imagePixelRatio_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.anchorX_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.anchorY_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.height_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.opacity_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.originX_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.originY_ = undefined;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.rotateWithView_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.rotation_ = undefined;\n\n    /**\n     * @private\n     * @type {import(\"../../size.js\").Size|undefined}\n     */\n    this.scale_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.width_ = undefined;\n\n    /**\n     * @private\n     * @type {import('../../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = undefined;\n\n    /**\n     * Data shared with a text builder for combined decluttering.\n     * @private\n     * @type {import(\"../canvas.js\").DeclutterImageWithText}\n     */\n    this.declutterImageWithText_ = undefined;\n  }\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   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawPoint(pointGeometry, feature, index) {\n    if (\n      !this.image_ ||\n      (this.maxExtent &&\n        !containsCoordinate(this.maxExtent, pointGeometry.getFlatCoordinates()))\n    ) {\n      return;\n    }\n    this.beginGeometry(pointGeometry, feature, index);\n    const flatCoordinates = pointGeometry.getFlatCoordinates();\n    const stride = pointGeometry.getStride();\n    const myBegin = this.coordinates.length;\n    const myEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n    this.instructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.image_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_ * this.imagePixelRatio_,\n      this.anchorY_ * this.imagePixelRatio_,\n      Math.ceil(this.height_ * this.imagePixelRatio_),\n      this.opacity_,\n      this.originX_ * this.imagePixelRatio_,\n      this.originY_ * this.imagePixelRatio_,\n      this.rotateWithView_,\n      this.rotation_,\n      [\n        (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_,\n        (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_,\n      ],\n      Math.ceil(this.width_ * this.imagePixelRatio_),\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.hitDetectionImage_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_,\n      this.anchorY_,\n      this.height_,\n      1,\n      this.originX_,\n      this.originY_,\n      this.rotateWithView_,\n      this.rotation_,\n      this.scale_,\n      this.width_,\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.endGeometry(feature);\n  }\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   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawMultiPoint(multiPointGeometry, feature, index) {\n    if (!this.image_) {\n      return;\n    }\n    this.beginGeometry(multiPointGeometry, feature, index);\n    const flatCoordinates = multiPointGeometry.getFlatCoordinates();\n    const filteredFlatCoordinates = [];\n    for (\n      let i = 0, ii = flatCoordinates.length;\n      i < ii;\n      i += multiPointGeometry.getStride()\n    ) {\n      if (\n        !this.maxExtent ||\n        containsCoordinate(this.maxExtent, flatCoordinates.slice(i, i + 2))\n      ) {\n        filteredFlatCoordinates.push(\n          flatCoordinates[i],\n          flatCoordinates[i + 1],\n        );\n      }\n    }\n    const myBegin = this.coordinates.length;\n    const myEnd = this.appendFlatPointCoordinates(filteredFlatCoordinates, 2);\n    this.instructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.image_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_ * this.imagePixelRatio_,\n      this.anchorY_ * this.imagePixelRatio_,\n      Math.ceil(this.height_ * this.imagePixelRatio_),\n      this.opacity_,\n      this.originX_ * this.imagePixelRatio_,\n      this.originY_ * this.imagePixelRatio_,\n      this.rotateWithView_,\n      this.rotation_,\n      [\n        (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_,\n        (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_,\n      ],\n      Math.ceil(this.width_ * this.imagePixelRatio_),\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.hitDetectionImage_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_,\n      this.anchorY_,\n      this.height_,\n      1,\n      this.originX_,\n      this.originY_,\n      this.rotateWithView_,\n      this.rotation_,\n      this.scale_,\n      this.width_,\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    this.reverseHitDetectionInstructions();\n    // FIXME this doesn't really protect us against further calls to draw*Geometry\n    this.anchorX_ = undefined;\n    this.anchorY_ = undefined;\n    this.hitDetectionImage_ = null;\n    this.image_ = null;\n    this.imagePixelRatio_ = undefined;\n    this.height_ = undefined;\n    this.scale_ = undefined;\n    this.opacity_ = undefined;\n    this.originX_ = undefined;\n    this.originY_ = undefined;\n    this.rotateWithView_ = undefined;\n    this.rotation_ = undefined;\n    this.width_ = undefined;\n    return super.finish();\n  }\n\n  /**\n   * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n   * @param {Object} [sharedData] Shared data.\n   * @override\n   */\n  setImageStyle(imageStyle, sharedData) {\n    const anchor = imageStyle.getAnchor();\n    const size = imageStyle.getSize();\n    const origin = imageStyle.getOrigin();\n    this.imagePixelRatio_ = imageStyle.getPixelRatio(this.pixelRatio);\n    this.anchorX_ = anchor[0];\n    this.anchorY_ = anchor[1];\n    this.hitDetectionImage_ = imageStyle.getHitDetectionImage();\n    this.image_ = imageStyle.getImage(this.pixelRatio);\n    this.height_ = size[1];\n    this.opacity_ = imageStyle.getOpacity();\n    this.originX_ = origin[0];\n    this.originY_ = origin[1];\n    this.rotateWithView_ = imageStyle.getRotateWithView();\n    this.rotation_ = imageStyle.getRotation();\n    this.scale_ = imageStyle.getScaleArray();\n    this.width_ = size[0];\n    this.declutterMode_ = imageStyle.getDeclutterMode();\n    this.declutterImageWithText_ = sharedData;\n  }\n}\n\nexport default CanvasImageBuilder;\n","/**\n * @module ol/render/canvas/LineStringBuilder\n */\nimport {defaultLineDash, defaultLineDashOffset} from '../canvas.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction, {\n  beginPathInstruction,\n  strokeInstruction,\n} from './Instruction.js';\n\nclass CanvasLineStringBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @private\n   * @return {number} end.\n   */\n  drawFlatCoordinates_(flatCoordinates, offset, end, stride) {\n    const myBegin = this.coordinates.length;\n    const myEnd = this.appendFlatLineCoordinates(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      false,\n      false,\n    );\n    const moveToLineToInstruction = [\n      CanvasInstruction.MOVE_TO_LINE_TO,\n      myBegin,\n      myEnd,\n    ];\n    this.instructions.push(moveToLineToInstruction);\n    this.hitDetectionInstructions.push(moveToLineToInstruction);\n    return end;\n  }\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   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawLineString(lineStringGeometry, feature, index) {\n    const state = this.state;\n    const strokeStyle = state.strokeStyle;\n    const lineWidth = state.lineWidth;\n    if (strokeStyle === undefined || lineWidth === undefined) {\n      return;\n    }\n    this.updateStrokeStyle(state, this.applyStroke);\n    this.beginGeometry(lineStringGeometry, feature, index);\n    this.hitDetectionInstructions.push(\n      [\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ],\n      beginPathInstruction,\n    );\n    const flatCoordinates = lineStringGeometry.getFlatCoordinates();\n    const stride = lineStringGeometry.getStride();\n    this.drawFlatCoordinates_(\n      flatCoordinates,\n      0,\n      flatCoordinates.length,\n      stride,\n    );\n    this.hitDetectionInstructions.push(strokeInstruction);\n    this.endGeometry(feature);\n  }\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   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawMultiLineString(multiLineStringGeometry, feature, index) {\n    const state = this.state;\n    const strokeStyle = state.strokeStyle;\n    const lineWidth = state.lineWidth;\n    if (strokeStyle === undefined || lineWidth === undefined) {\n      return;\n    }\n    this.updateStrokeStyle(state, this.applyStroke);\n    this.beginGeometry(multiLineStringGeometry, feature, index);\n    this.hitDetectionInstructions.push(\n      [\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ],\n      beginPathInstruction,\n    );\n    const ends = multiLineStringGeometry.getEnds();\n    const flatCoordinates = multiLineStringGeometry.getFlatCoordinates();\n    const stride = multiLineStringGeometry.getStride();\n    let offset = 0;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      offset = this.drawFlatCoordinates_(\n        flatCoordinates,\n        offset,\n        /** @type {number} */ (ends[i]),\n        stride,\n      );\n    }\n    this.hitDetectionInstructions.push(strokeInstruction);\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    const state = this.state;\n    if (\n      state.lastStroke != undefined &&\n      state.lastStroke != this.coordinates.length\n    ) {\n      this.instructions.push(strokeInstruction);\n    }\n    this.reverseHitDetectionInstructions();\n    this.state = null;\n    return super.finish();\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @override\n   */\n  applyStroke(state) {\n    if (\n      state.lastStroke != undefined &&\n      state.lastStroke != this.coordinates.length\n    ) {\n      this.instructions.push(strokeInstruction);\n      state.lastStroke = this.coordinates.length;\n    }\n    state.lastStroke = 0;\n    super.applyStroke(state);\n    this.instructions.push(beginPathInstruction);\n  }\n}\n\nexport default CanvasLineStringBuilder;\n","/**\n * @module ol/render/canvas/PolygonBuilder\n */\nimport {snap} from '../../geom/flat/simplify.js';\nimport {\n  defaultFillStyle,\n  defaultLineDash,\n  defaultLineDashOffset,\n} from '../canvas.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction, {\n  beginPathInstruction,\n  closePathInstruction,\n  fillInstruction,\n  strokeInstruction,\n} from './Instruction.js';\n\nclass CanvasPolygonBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @private\n   * @return {number} End.\n   */\n  drawFlatCoordinatess_(flatCoordinates, offset, ends, stride) {\n    const state = this.state;\n    const fill = state.fillStyle !== undefined;\n    const stroke = state.strokeStyle !== undefined;\n    const numEnds = ends.length;\n    this.instructions.push(beginPathInstruction);\n    this.hitDetectionInstructions.push(beginPathInstruction);\n    for (let i = 0; i < numEnds; ++i) {\n      const end = ends[i];\n      const myBegin = this.coordinates.length;\n      const myEnd = this.appendFlatLineCoordinates(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        true,\n        !stroke,\n      );\n      const moveToLineToInstruction = [\n        CanvasInstruction.MOVE_TO_LINE_TO,\n        myBegin,\n        myEnd,\n      ];\n      this.instructions.push(moveToLineToInstruction);\n      this.hitDetectionInstructions.push(moveToLineToInstruction);\n      if (stroke) {\n        // Performance optimization: only call closePath() when we have a stroke.\n        // Otherwise the ring is closed already (see appendFlatLineCoordinates above).\n        this.instructions.push(closePathInstruction);\n        this.hitDetectionInstructions.push(closePathInstruction);\n      }\n      offset = end;\n    }\n    if (fill) {\n      this.instructions.push(fillInstruction);\n      this.hitDetectionInstructions.push(fillInstruction);\n    }\n    if (stroke) {\n      this.instructions.push(strokeInstruction);\n      this.hitDetectionInstructions.push(strokeInstruction);\n    }\n    return offset;\n  }\n\n  /**\n   * @param {import(\"../../geom/Circle.js\").default} circleGeometry Circle geometry.\n   * @param {import(\"../../Feature.js\").default} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawCircle(circleGeometry, feature, index) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    if (fillStyle === undefined && strokeStyle === undefined) {\n      return;\n    }\n    this.setFillStrokeStyles_();\n    this.beginGeometry(circleGeometry, feature, index);\n    if (state.fillStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_FILL_STYLE,\n        defaultFillStyle,\n      ]);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ]);\n    }\n    const flatCoordinates = circleGeometry.getFlatCoordinates();\n    const stride = circleGeometry.getStride();\n    const myBegin = this.coordinates.length;\n    this.appendFlatLineCoordinates(\n      flatCoordinates,\n      0,\n      flatCoordinates.length,\n      stride,\n      false,\n      false,\n    );\n    const circleInstruction = [CanvasInstruction.CIRCLE, myBegin];\n    this.instructions.push(beginPathInstruction, circleInstruction);\n    this.hitDetectionInstructions.push(beginPathInstruction, circleInstruction);\n    if (state.fillStyle !== undefined) {\n      this.instructions.push(fillInstruction);\n      this.hitDetectionInstructions.push(fillInstruction);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.instructions.push(strokeInstruction);\n      this.hitDetectionInstructions.push(strokeInstruction);\n    }\n    this.endGeometry(feature);\n  }\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   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawPolygon(polygonGeometry, feature, index) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    if (fillStyle === undefined && strokeStyle === undefined) {\n      return;\n    }\n    this.setFillStrokeStyles_();\n    this.beginGeometry(polygonGeometry, feature, index);\n    if (state.fillStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_FILL_STYLE,\n        defaultFillStyle,\n      ]);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ]);\n    }\n    const ends = polygonGeometry.getEnds();\n    const flatCoordinates = polygonGeometry.getOrientedFlatCoordinates();\n    const stride = polygonGeometry.getStride();\n    this.drawFlatCoordinatess_(\n      flatCoordinates,\n      0,\n      /** @type {Array<number>} */ (ends),\n      stride,\n    );\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @param {import(\"../../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawMultiPolygon(multiPolygonGeometry, feature, index) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    if (fillStyle === undefined && strokeStyle === undefined) {\n      return;\n    }\n    this.setFillStrokeStyles_();\n    this.beginGeometry(multiPolygonGeometry, feature, index);\n    if (state.fillStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_FILL_STYLE,\n        defaultFillStyle,\n      ]);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ]);\n    }\n    const endss = multiPolygonGeometry.getEndss();\n    const flatCoordinates = multiPolygonGeometry.getOrientedFlatCoordinates();\n    const stride = multiPolygonGeometry.getStride();\n    let offset = 0;\n    for (let i = 0, ii = endss.length; i < ii; ++i) {\n      offset = this.drawFlatCoordinatess_(\n        flatCoordinates,\n        offset,\n        endss[i],\n        stride,\n      );\n    }\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    this.reverseHitDetectionInstructions();\n    this.state = null;\n    // We want to preserve topology when drawing polygons.  Polygons are\n    // simplified using quantization and point elimination. However, we might\n    // have received a mix of quantized and non-quantized geometries, so ensure\n    // that all are quantized by quantizing all coordinates in the batch.\n    const tolerance = this.tolerance;\n    if (tolerance !== 0) {\n      const coordinates = this.coordinates;\n      for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n        coordinates[i] = snap(coordinates[i], tolerance);\n      }\n    }\n    return super.finish();\n  }\n\n  /**\n   * @private\n   */\n  setFillStrokeStyles_() {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    if (fillStyle !== undefined) {\n      this.updateFillStyle(state, this.createFill);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.updateStrokeStyle(state, this.applyStroke);\n    }\n  }\n}\n\nexport default CanvasPolygonBuilder;\n","import {lerp} from '../../math.js';\n\n/**\n * Creates chunks of equal length from a linestring\n * @param {number} chunkLength Length of each chunk.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Start offset of the `flatCoordinates`.\n * @param {number} end End offset of the `flatCoordinates`.\n * @param {number} stride Stride.\n * @return {Array<Array<number>>} Chunks of linestrings with stride 2.\n */\nexport function lineChunk(chunkLength, flatCoordinates, offset, end, stride) {\n  const chunks = [];\n  let cursor = offset;\n  let chunkM = 0;\n  let currentChunk = flatCoordinates.slice(offset, 2);\n  while (chunkM < chunkLength && cursor + stride < end) {\n    const [x1, y1] = currentChunk.slice(-2);\n    const x2 = flatCoordinates[cursor + stride];\n    const y2 = flatCoordinates[cursor + stride + 1];\n    const segmentLength = Math.sqrt(\n      (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1),\n    );\n    chunkM += segmentLength;\n    if (chunkM >= chunkLength) {\n      const m = (chunkLength - chunkM + segmentLength) / segmentLength;\n      const x = lerp(x1, x2, m);\n      const y = lerp(y1, y2, m);\n      currentChunk.push(x, y);\n      chunks.push(currentChunk);\n      currentChunk = [x, y];\n      if (chunkM == chunkLength) {\n        cursor += stride;\n      }\n      chunkM = 0;\n    } else if (chunkM < chunkLength) {\n      currentChunk.push(\n        flatCoordinates[cursor + stride],\n        flatCoordinates[cursor + stride + 1],\n      );\n      cursor += stride;\n    } else {\n      const missing = segmentLength - chunkM;\n      const x = lerp(x1, x2, missing / segmentLength);\n      const y = lerp(y1, y2, missing / segmentLength);\n      currentChunk.push(x, y);\n      chunks.push(currentChunk);\n      currentChunk = [x, y];\n      chunkM = 0;\n      cursor += stride;\n    }\n  }\n  if (chunkM > 0) {\n    chunks.push(currentChunk);\n  }\n  return chunks;\n}\n","/**\n * @module ol/geom/flat/straightchunk\n */\n\n/**\n * @param {number} maxAngle Maximum acceptable angle delta between segments.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Array<number>} Start and end of the first suitable chunk of the\n * given `flatCoordinates`.\n */\nexport function matchingChunk(maxAngle, flatCoordinates, offset, end, stride) {\n  let chunkStart = offset;\n  let chunkEnd = offset;\n  let chunkM = 0;\n  let m = 0;\n  let start = offset;\n  let acos, i, m12, m23, x1, y1, x12, y12, x23, y23;\n  for (i = offset; i < end; i += stride) {\n    const x2 = flatCoordinates[i];\n    const y2 = flatCoordinates[i + 1];\n    if (x1 !== undefined) {\n      x23 = x2 - x1;\n      y23 = y2 - y1;\n      m23 = Math.sqrt(x23 * x23 + y23 * y23);\n      if (x12 !== undefined) {\n        m += m12;\n        acos = Math.acos((x12 * x23 + y12 * y23) / (m12 * m23));\n        if (acos > maxAngle) {\n          if (m > chunkM) {\n            chunkM = m;\n            chunkStart = start;\n            chunkEnd = i;\n          }\n          m = 0;\n          start = i - stride;\n        }\n      }\n      m12 = m23;\n      x12 = x23;\n      y12 = y23;\n    }\n    x1 = x2;\n    y1 = y2;\n  }\n  m += m23;\n  return m > chunkM ? [start, i] : [chunkStart, chunkEnd];\n}\n","/**\n * @module ol/render/canvas/TextBuilder\n */\nimport {asColorLike} from '../../colorlike.js';\nimport {intersects} from '../../extent.js';\nimport {lineChunk} from '../../geom/flat/linechunk.js';\nimport {matchingChunk} from '../../geom/flat/straightchunk.js';\nimport {getUid} from '../../util.js';\nimport {\n  defaultFillStyle,\n  defaultFont,\n  defaultLineCap,\n  defaultLineDash,\n  defaultLineDashOffset,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultPadding,\n  defaultStrokeStyle,\n  defaultTextAlign,\n  defaultTextBaseline,\n  registerFont,\n} from '../canvas.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction from './Instruction.js';\n/**\n * @const\n * @type {{left: 0, center: 0.5, right: 1, top: 0, middle: 0.5, hanging: 0.2, alphabetic: 0.8, ideographic: 0.8, bottom: 1}}\n */\nexport const TEXT_ALIGN = {\n  'left': 0,\n  'center': 0.5,\n  'right': 1,\n  'top': 0,\n  'middle': 0.5,\n  'hanging': 0.2,\n  'alphabetic': 0.8,\n  'ideographic': 0.8,\n  'bottom': 1,\n};\n\nclass CanvasTextBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n\n    /**\n     * @private\n     * @type {Array<HTMLCanvasElement>}\n     */\n    this.labels_ = null;\n\n    /**\n     * @private\n     * @type {string|Array<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|undefined}\n     */\n    this.textRotateWithView_ = undefined;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.textKeepUpright_ = undefined;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textRotation_ = 0;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").FillState}\n     */\n    this.textFillState_ = null;\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").FillState>}\n     */\n    this.fillStates = {};\n    this.fillStates[defaultFillStyle] = {fillStyle: defaultFillStyle};\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").StrokeState}\n     */\n    this.textStrokeState_ = null;\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").StrokeState>}\n     */\n    this.strokeStates = {};\n\n    /**\n     * @private\n     * @type {import(\"../canvas.js\").TextState}\n     */\n    this.textState_ = /** @type {import(\"../canvas.js\").TextState} */ ({});\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").TextState>}\n     */\n    this.textStates = {};\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.textKey_ = '';\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.fillKey_ = '';\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.strokeKey_ = '';\n\n    /**\n     * @private\n     * @type {import('../../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = undefined;\n\n    /**\n     * Data shared with an image builder for combined decluttering.\n     * @private\n     * @type {import(\"../canvas.js\").DeclutterImageWithText}\n     */\n    this.declutterImageWithText_ = undefined;\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    const instructions = super.finish();\n    instructions.textStates = this.textStates;\n    instructions.fillStates = this.fillStates;\n    instructions.strokeStates = this.strokeStates;\n    return instructions;\n  }\n\n  /**\n   * @param {import(\"../../geom/SimpleGeometry.js\").default|import(\"../Feature.js\").default} geometry Geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawText(geometry, feature, index) {\n    const fillState = this.textFillState_;\n    const strokeState = this.textStrokeState_;\n    const textState = this.textState_;\n    if (this.text_ === '' || !textState || (!fillState && !strokeState)) {\n      return;\n    }\n\n    const coordinates = this.coordinates;\n    let begin = coordinates.length;\n\n    const geometryType = geometry.getType();\n    let flatCoordinates = null;\n    let stride = geometry.getStride();\n\n    if (\n      textState.placement === 'line' &&\n      (geometryType == 'LineString' ||\n        geometryType == 'MultiLineString' ||\n        geometryType == 'Polygon' ||\n        geometryType == 'MultiPolygon')\n    ) {\n      if (!intersects(this.maxExtent, geometry.getExtent())) {\n        return;\n      }\n      let ends;\n      flatCoordinates = geometry.getFlatCoordinates();\n      if (geometryType == 'LineString') {\n        ends = [flatCoordinates.length];\n      } else if (geometryType == 'MultiLineString') {\n        ends = /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n          geometry\n        ).getEnds();\n      } else if (geometryType == 'Polygon') {\n        ends = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry)\n          .getEnds()\n          .slice(0, 1);\n      } else if (geometryType == 'MultiPolygon') {\n        const endss =\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ).getEndss();\n        ends = [];\n        for (let i = 0, ii = endss.length; i < ii; ++i) {\n          ends.push(endss[i][0]);\n        }\n      }\n      this.beginGeometry(geometry, feature, index);\n      const repeat = textState.repeat;\n      const textAlign = repeat ? undefined : textState.textAlign;\n      // No `justify` support for line placement.\n      let flatOffset = 0;\n      for (let o = 0, oo = ends.length; o < oo; ++o) {\n        let chunks;\n        if (repeat) {\n          chunks = lineChunk(\n            repeat * this.resolution,\n            flatCoordinates,\n            flatOffset,\n            ends[o],\n            stride,\n          );\n        } else {\n          chunks = [flatCoordinates.slice(flatOffset, ends[o])];\n        }\n        for (let c = 0, cc = chunks.length; c < cc; ++c) {\n          const chunk = chunks[c];\n          let chunkBegin = 0;\n          let chunkEnd = chunk.length;\n          if (textAlign == undefined) {\n            const range = matchingChunk(\n              textState.maxAngle,\n              chunk,\n              0,\n              chunk.length,\n              2,\n            );\n            chunkBegin = range[0];\n            chunkEnd = range[1];\n          }\n          for (let i = chunkBegin; i < chunkEnd; i += stride) {\n            coordinates.push(chunk[i], chunk[i + 1]);\n          }\n          const end = coordinates.length;\n          flatOffset = ends[o];\n          this.drawChars_(begin, end);\n          begin = end;\n        }\n      }\n      this.endGeometry(feature);\n    } else {\n      let geometryWidths = textState.overflow ? null : [];\n      switch (geometryType) {\n        case 'Point':\n        case 'MultiPoint':\n          flatCoordinates =\n            /** @type {import(\"../../geom/MultiPoint.js\").default} */ (\n              geometry\n            ).getFlatCoordinates();\n          break;\n        case 'LineString':\n          flatCoordinates =\n            /** @type {import(\"../../geom/LineString.js\").default} */ (\n              geometry\n            ).getFlatMidpoint();\n          break;\n        case 'Circle':\n          flatCoordinates =\n            /** @type {import(\"../../geom/Circle.js\").default} */ (\n              geometry\n            ).getCenter();\n          break;\n        case 'MultiLineString':\n          flatCoordinates =\n            /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n              geometry\n            ).getFlatMidpoints();\n          stride = 2;\n          break;\n        case 'Polygon':\n          flatCoordinates =\n            /** @type {import(\"../../geom/Polygon.js\").default} */ (\n              geometry\n            ).getFlatInteriorPoint();\n          if (!textState.overflow) {\n            geometryWidths.push(flatCoordinates[2] / this.resolution);\n          }\n          stride = 3;\n          break;\n        case 'MultiPolygon':\n          const interiorPoints =\n            /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n              geometry\n            ).getFlatInteriorPoints();\n          flatCoordinates = [];\n          for (let i = 0, ii = interiorPoints.length; i < ii; i += 3) {\n            if (!textState.overflow) {\n              geometryWidths.push(interiorPoints[i + 2] / this.resolution);\n            }\n            flatCoordinates.push(interiorPoints[i], interiorPoints[i + 1]);\n          }\n          if (flatCoordinates.length === 0) {\n            return;\n          }\n          stride = 2;\n          break;\n        default:\n      }\n      const end = this.appendFlatPointCoordinates(flatCoordinates, stride);\n      if (end === begin) {\n        return;\n      }\n      if (\n        geometryWidths &&\n        (end - begin) / 2 !== flatCoordinates.length / stride\n      ) {\n        let beg = begin / 2;\n        geometryWidths = geometryWidths.filter((w, i) => {\n          const keep =\n            coordinates[(beg + i) * 2] === flatCoordinates[i * stride] &&\n            coordinates[(beg + i) * 2 + 1] === flatCoordinates[i * stride + 1];\n          if (!keep) {\n            --beg;\n          }\n          return keep;\n        });\n      }\n\n      this.saveTextStates_();\n\n      const backgroundFill = textState.backgroundFill\n        ? this.createFill(this.fillStyleToState(textState.backgroundFill))\n        : null;\n      const backgroundStroke = textState.backgroundStroke\n        ? this.createStroke(this.strokeStyleToState(textState.backgroundStroke))\n        : null;\n\n      this.beginGeometry(geometry, feature, index);\n\n      // adjust padding for negative scale\n      let padding = textState.padding;\n      if (\n        padding != defaultPadding &&\n        (textState.scale[0] < 0 || textState.scale[1] < 0)\n      ) {\n        let p0 = textState.padding[0];\n        let p1 = textState.padding[1];\n        let p2 = textState.padding[2];\n        let p3 = textState.padding[3];\n        if (textState.scale[0] < 0) {\n          p1 = -p1;\n          p3 = -p3;\n        }\n        if (textState.scale[1] < 0) {\n          p0 = -p0;\n          p2 = -p2;\n        }\n        padding = [p0, p1, p2, p3];\n      }\n\n      // The image is unknown at this stage so we pass null; it will be computed at render time.\n      // For clarity, we pass NaN for offsetX, offsetY, width and height, which will be computed at\n      // render time.\n      const pixelRatio = this.pixelRatio;\n      this.instructions.push([\n        CanvasInstruction.DRAW_IMAGE,\n        begin,\n        end,\n        null,\n        NaN,\n        NaN,\n        NaN,\n        1,\n        0,\n        0,\n        this.textRotateWithView_,\n        this.textRotation_,\n        [1, 1],\n        NaN,\n        this.declutterMode_,\n        this.declutterImageWithText_,\n        padding == defaultPadding\n          ? defaultPadding\n          : padding.map(function (p) {\n              return p * pixelRatio;\n            }),\n        backgroundFill,\n        backgroundStroke,\n        this.text_,\n        this.textKey_,\n        this.strokeKey_,\n        this.fillKey_,\n        this.textOffsetX_,\n        this.textOffsetY_,\n        geometryWidths,\n      ]);\n      const scale = 1 / pixelRatio;\n      // Set default fill for hit detection background\n      const hitDetectionBackgroundFill = backgroundFill\n        ? backgroundFill.slice(0)\n        : null;\n      if (hitDetectionBackgroundFill) {\n        hitDetectionBackgroundFill[1] = defaultFillStyle;\n      }\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.DRAW_IMAGE,\n        begin,\n        end,\n        null,\n        NaN,\n        NaN,\n        NaN,\n        1,\n        0,\n        0,\n        this.textRotateWithView_,\n        this.textRotation_,\n        [scale, scale],\n        NaN,\n        this.declutterMode_,\n        this.declutterImageWithText_,\n        padding,\n        hitDetectionBackgroundFill,\n        backgroundStroke,\n        this.text_,\n        this.textKey_,\n        this.strokeKey_,\n        this.fillKey_ ? defaultFillStyle : this.fillKey_,\n        this.textOffsetX_,\n        this.textOffsetY_,\n        geometryWidths,\n      ]);\n\n      this.endGeometry(feature);\n    }\n  }\n\n  /**\n   * @private\n   */\n  saveTextStates_() {\n    const strokeState = this.textStrokeState_;\n    const textState = this.textState_;\n    const fillState = this.textFillState_;\n\n    const strokeKey = this.strokeKey_;\n    if (strokeState) {\n      if (!(strokeKey in this.strokeStates)) {\n        this.strokeStates[strokeKey] = {\n          strokeStyle: strokeState.strokeStyle,\n          lineCap: strokeState.lineCap,\n          lineDashOffset: strokeState.lineDashOffset,\n          lineWidth: strokeState.lineWidth,\n          lineJoin: strokeState.lineJoin,\n          miterLimit: strokeState.miterLimit,\n          lineDash: strokeState.lineDash,\n        };\n      }\n    }\n    const textKey = this.textKey_;\n    if (!(textKey in this.textStates)) {\n      this.textStates[textKey] = {\n        font: textState.font,\n        textAlign: textState.textAlign || defaultTextAlign,\n        justify: textState.justify,\n        textBaseline: textState.textBaseline || defaultTextBaseline,\n        scale: textState.scale,\n      };\n    }\n    const fillKey = this.fillKey_;\n    if (fillState) {\n      if (!(fillKey in this.fillStates)) {\n        this.fillStates[fillKey] = {\n          fillStyle: fillState.fillStyle,\n        };\n      }\n    }\n  }\n\n  /**\n   * @private\n   * @param {number} begin Begin.\n   * @param {number} end End.\n   */\n  drawChars_(begin, end) {\n    const strokeState = this.textStrokeState_;\n    const textState = this.textState_;\n\n    const strokeKey = this.strokeKey_;\n    const textKey = this.textKey_;\n    const fillKey = this.fillKey_;\n    this.saveTextStates_();\n\n    const pixelRatio = this.pixelRatio;\n    const baseline = TEXT_ALIGN[textState.textBaseline];\n\n    const offsetY = this.textOffsetY_ * pixelRatio;\n    const text = this.text_;\n    const strokeWidth = strokeState\n      ? (strokeState.lineWidth * Math.abs(textState.scale[0])) / 2\n      : 0;\n\n    this.instructions.push([\n      CanvasInstruction.DRAW_CHARS,\n      begin,\n      end,\n      baseline,\n      textState.overflow,\n      fillKey,\n      textState.maxAngle,\n      pixelRatio,\n      offsetY,\n      strokeKey,\n      strokeWidth * pixelRatio,\n      text,\n      textKey,\n      1,\n      this.declutterMode_,\n      this.textKeepUpright_,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.DRAW_CHARS,\n      begin,\n      end,\n      baseline,\n      textState.overflow,\n      fillKey ? defaultFillStyle : fillKey,\n      textState.maxAngle,\n      pixelRatio,\n      offsetY,\n      strokeKey,\n      strokeWidth * pixelRatio,\n      text,\n      textKey,\n      1 / pixelRatio,\n      this.declutterMode_,\n      this.textKeepUpright_,\n    ]);\n  }\n\n  /**\n   * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n   * @param {Object} [sharedData] Shared data.\n   * @override\n   */\n  setTextStyle(textStyle, sharedData) {\n    let textState, fillState, strokeState;\n    if (!textStyle) {\n      this.text_ = '';\n    } else {\n      const textFillStyle = textStyle.getFill();\n      if (!textFillStyle) {\n        fillState = null;\n        this.textFillState_ = fillState;\n      } else {\n        fillState = this.textFillState_;\n        if (!fillState) {\n          fillState = /** @type {import(\"../canvas.js\").FillState} */ ({});\n          this.textFillState_ = fillState;\n        }\n        fillState.fillStyle = asColorLike(\n          textFillStyle.getColor() || defaultFillStyle,\n        );\n      }\n\n      const textStrokeStyle = textStyle.getStroke();\n      if (!textStrokeStyle) {\n        strokeState = null;\n        this.textStrokeState_ = strokeState;\n      } else {\n        strokeState = this.textStrokeState_;\n        if (!strokeState) {\n          strokeState = /** @type {import(\"../canvas.js\").StrokeState} */ ({});\n          this.textStrokeState_ = strokeState;\n        }\n        const lineDash = textStrokeStyle.getLineDash();\n        const lineDashOffset = textStrokeStyle.getLineDashOffset();\n        const lineWidth = textStrokeStyle.getWidth();\n        const miterLimit = textStrokeStyle.getMiterLimit();\n        strokeState.lineCap = textStrokeStyle.getLineCap() || defaultLineCap;\n        strokeState.lineDash = lineDash ? lineDash.slice() : defaultLineDash;\n        strokeState.lineDashOffset =\n          lineDashOffset === undefined ? defaultLineDashOffset : lineDashOffset;\n        strokeState.lineJoin = textStrokeStyle.getLineJoin() || defaultLineJoin;\n        strokeState.lineWidth =\n          lineWidth === undefined ? defaultLineWidth : lineWidth;\n        strokeState.miterLimit =\n          miterLimit === undefined ? defaultMiterLimit : miterLimit;\n        strokeState.strokeStyle = asColorLike(\n          textStrokeStyle.getColor() || defaultStrokeStyle,\n        );\n      }\n\n      textState = this.textState_;\n      const font = textStyle.getFont() || defaultFont;\n      registerFont(font);\n      const textScale = textStyle.getScaleArray();\n      textState.overflow = textStyle.getOverflow();\n      textState.font = font;\n      textState.maxAngle = textStyle.getMaxAngle();\n      textState.placement = textStyle.getPlacement();\n      textState.textAlign = textStyle.getTextAlign();\n      textState.repeat = textStyle.getRepeat();\n      textState.justify = textStyle.getJustify();\n      textState.textBaseline =\n        textStyle.getTextBaseline() || defaultTextBaseline;\n      textState.backgroundFill = textStyle.getBackgroundFill();\n      textState.backgroundStroke = textStyle.getBackgroundStroke();\n      textState.padding = textStyle.getPadding() || defaultPadding;\n      textState.scale = textScale === undefined ? [1, 1] : textScale;\n\n      const textOffsetX = textStyle.getOffsetX();\n      const textOffsetY = textStyle.getOffsetY();\n      const textRotateWithView = textStyle.getRotateWithView();\n      const textKeepUpright = textStyle.getKeepUpright();\n      const textRotation = textStyle.getRotation();\n      this.text_ = textStyle.getText() || '';\n      this.textOffsetX_ = textOffsetX === undefined ? 0 : textOffsetX;\n      this.textOffsetY_ = textOffsetY === undefined ? 0 : textOffsetY;\n      this.textRotateWithView_ =\n        textRotateWithView === undefined ? false : textRotateWithView;\n      this.textKeepUpright_ =\n        textKeepUpright === undefined ? true : textKeepUpright;\n      this.textRotation_ = textRotation === undefined ? 0 : textRotation;\n\n      this.strokeKey_ = strokeState\n        ? (typeof strokeState.strokeStyle == 'string'\n            ? strokeState.strokeStyle\n            : getUid(strokeState.strokeStyle)) +\n          strokeState.lineCap +\n          strokeState.lineDashOffset +\n          '|' +\n          strokeState.lineWidth +\n          strokeState.lineJoin +\n          strokeState.miterLimit +\n          '[' +\n          strokeState.lineDash.join() +\n          ']'\n        : '';\n      this.textKey_ =\n        textState.font +\n        textState.scale +\n        (textState.textAlign || '?') +\n        (textState.repeat || '?') +\n        (textState.justify || '?') +\n        (textState.textBaseline || '?');\n      this.fillKey_ =\n        fillState && fillState.fillStyle\n          ? typeof fillState.fillStyle == 'string'\n            ? fillState.fillStyle\n            : '|' + getUid(fillState.fillStyle)\n          : '';\n    }\n    this.declutterMode_ = textStyle.getDeclutterMode();\n    this.declutterImageWithText_ = sharedData;\n  }\n}\n\nexport default CanvasTextBuilder;\n","/**\n * @module ol/render/canvas/BuilderGroup\n */\n\nimport Builder from './Builder.js';\nimport ImageBuilder from './ImageBuilder.js';\nimport LineStringBuilder from './LineStringBuilder.js';\nimport PolygonBuilder from './PolygonBuilder.js';\nimport TextBuilder from './TextBuilder.js';\n\n/**\n * @type {Object<import(\"../canvas.js\").BuilderType, typeof Builder>}\n */\nconst BATCH_CONSTRUCTORS = {\n  'Circle': PolygonBuilder,\n  'Default': Builder,\n  'Image': ImageBuilder,\n  'LineString': LineStringBuilder,\n  'Polygon': PolygonBuilder,\n  'Text': TextBuilder,\n};\n\nclass BuilderGroup {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Max extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    /**\n     * @private\n     * @type {number}\n     */\n    this.tolerance_ = tolerance;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.maxExtent_ = maxExtent;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.resolution_ = resolution;\n\n    /**\n     * @private\n     * @type {!Object<string, !Object<import(\"../canvas.js\").BuilderType, Builder>>}\n     */\n    this.buildersByZIndex_ = {};\n  }\n\n  /**\n   * @return {!Object<string, !Object<import(\"../canvas.js\").BuilderType, import(\"./Builder.js\").SerializableInstructions>>} The serializable instructions\n   */\n  finish() {\n    const builderInstructions = {};\n    for (const zKey in this.buildersByZIndex_) {\n      builderInstructions[zKey] = builderInstructions[zKey] || {};\n      const builders = this.buildersByZIndex_[zKey];\n      for (const builderKey in builders) {\n        const builderInstruction = builders[builderKey].finish();\n        builderInstructions[zKey][builderKey] = builderInstruction;\n      }\n    }\n    return builderInstructions;\n  }\n\n  /**\n   * @param {number|undefined} zIndex Z index.\n   * @param {import(\"../canvas.js\").BuilderType} builderType Replay type.\n   * @return {import(\"../VectorContext.js\").default} Replay.\n   */\n  getBuilder(zIndex, builderType) {\n    const zIndexKey = zIndex !== undefined ? zIndex.toString() : '0';\n    let replays = this.buildersByZIndex_[zIndexKey];\n    if (replays === undefined) {\n      replays = {};\n      this.buildersByZIndex_[zIndexKey] = replays;\n    }\n    let replay = replays[builderType];\n    if (replay === undefined) {\n      const Constructor = BATCH_CONSTRUCTORS[builderType];\n      replay = new Constructor(\n        this.tolerance_,\n        this.maxExtent_,\n        this.resolution_,\n        this.pixelRatio_,\n      );\n      replays[builderType] = replay;\n    }\n    return replay;\n  }\n}\n\nexport default BuilderGroup;\n","/**\n * @module ol/geom/flat/textpath\n */\nimport {lerp} from '../../math.js';\nimport {rotate} from './transform.js';\n\n/**\n * @param {Array<number>} flatCoordinates Path to put text on.\n * @param {number} offset Start offset of the `flatCoordinates`.\n * @param {number} end End offset of the `flatCoordinates`.\n * @param {number} stride Stride.\n * @param {string} text Text to place on the path.\n * @param {number} startM m along the path where the text starts.\n * @param {number} maxAngle Max angle between adjacent chars in radians.\n * @param {number} scale The product of the text scale and the device pixel ratio.\n * @param {function(string, string, Object<string, number>):number} measureAndCacheTextWidth Measure and cache text width.\n * @param {string} font The font.\n * @param {Object<string, number>} cache A cache of measured widths.\n * @param {number} rotation Rotation to apply to the flatCoordinates to determine whether text needs to be reversed.\n * @param {boolean} keepUpright Whether the text needs to be kept upright\n * @return {Array<Array<*>>|null} The result array (or null if `maxAngle` was\n * exceeded). Entries of the array are x, y, anchorX, angle, chunk.\n */\nexport function drawTextOnPath(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  text,\n  startM,\n  maxAngle,\n  scale,\n  measureAndCacheTextWidth,\n  font,\n  cache,\n  rotation,\n  keepUpright = true,\n) {\n  let x2 = flatCoordinates[offset];\n  let y2 = flatCoordinates[offset + 1];\n  let x1 = 0;\n  let y1 = 0;\n  let segmentLength = 0;\n  let segmentM = 0;\n\n  function advance() {\n    x1 = x2;\n    y1 = y2;\n    offset += stride;\n    x2 = flatCoordinates[offset];\n    y2 = flatCoordinates[offset + 1];\n    segmentM += segmentLength;\n    segmentLength = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  }\n  do {\n    advance();\n  } while (offset < end - stride && segmentM + segmentLength < startM);\n\n  let interpolate =\n    segmentLength === 0 ? 0 : (startM - segmentM) / segmentLength;\n  const beginX = lerp(x1, x2, interpolate);\n  const beginY = lerp(y1, y2, interpolate);\n\n  const startOffset = offset - stride;\n  const startLength = segmentM;\n  const endM = startM + scale * measureAndCacheTextWidth(font, text, cache);\n  while (offset < end - stride && segmentM + segmentLength < endM) {\n    advance();\n  }\n  interpolate = segmentLength === 0 ? 0 : (endM - segmentM) / segmentLength;\n  const endX = lerp(x1, x2, interpolate);\n  const endY = lerp(y1, y2, interpolate);\n\n  // Keep text upright if the option is selected\n  let reverse = false;\n  if (keepUpright) {\n    if (rotation) {\n      const flat = [beginX, beginY, endX, endY];\n      rotate(flat, 0, 4, 2, rotation, flat, flat);\n      reverse = flat[0] > flat[2];\n    } else {\n      reverse = beginX > endX;\n    }\n  }\n\n  const PI = Math.PI;\n  const result = [];\n  const singleSegment = startOffset + stride === offset;\n\n  offset = startOffset;\n  segmentLength = 0;\n  segmentM = startLength;\n  x2 = flatCoordinates[offset];\n  y2 = flatCoordinates[offset + 1];\n\n  let previousAngle;\n  // All on the same segment\n  if (singleSegment) {\n    advance();\n\n    previousAngle = Math.atan2(y2 - y1, x2 - x1);\n    if (reverse) {\n      previousAngle += previousAngle > 0 ? -PI : PI;\n    }\n    const x = (endX + beginX) / 2;\n    const y = (endY + beginY) / 2;\n    result[0] = [x, y, (endM - startM) / 2, previousAngle, text];\n    return result;\n  }\n\n  // rendering across line segments\n  text = text.replace(/\\n/g, ' '); // ensure rendering in single-line as all calculations below don't handle multi-lines\n\n  for (let i = 0, ii = text.length; i < ii; ) {\n    advance();\n    let angle = Math.atan2(y2 - y1, x2 - x1);\n    if (reverse) {\n      angle += angle > 0 ? -PI : PI;\n    }\n    if (previousAngle !== undefined) {\n      let delta = angle - previousAngle;\n      delta += delta > PI ? -2 * PI : delta < -PI ? 2 * PI : 0;\n      if (Math.abs(delta) > maxAngle) {\n        return null;\n      }\n    }\n    previousAngle = angle;\n\n    const iStart = i;\n    let charLength = 0;\n    for (; i < ii; ++i) {\n      const index = reverse ? ii - i - 1 : i;\n      const len = scale * measureAndCacheTextWidth(font, text[index], cache);\n      if (\n        offset + stride < end &&\n        segmentM + segmentLength < startM + charLength + len / 2\n      ) {\n        break;\n      }\n      charLength += len;\n    }\n    if (i === iStart) {\n      continue;\n    }\n    const chars = reverse\n      ? text.substring(ii - iStart, ii - i)\n      : text.substring(iStart, i);\n    interpolate =\n      segmentLength === 0\n        ? 0\n        : (startM + charLength / 2 - segmentM) / segmentLength;\n    const x = lerp(x1, x2, interpolate);\n    const y = lerp(y1, y2, interpolate);\n    result.push([x, y, charLength / 2, angle, chars]);\n    startM += charLength;\n  }\n  return result;\n}\n","/**\n * @module ol/render/canvas/ZIndexContext\n */\n\nimport {getSharedCanvasContext2D} from '../../dom.js';\n\n/** @typedef {CanvasRenderingContext2D & {globalAlpha: any}} ZIndexContextProxy */\n\n/**\n * @extends {CanvasRenderingContext2D}\n */\nclass ZIndexContext {\n  constructor() {\n    /**\n     * @private\n     * @type {Array<Array<*>>}\n     */\n    this.instructions_ = [];\n    /**\n     * @type {number}\n     */\n    this.zIndex = 0;\n    /**\n     * @private\n     * @type {number}\n     */\n    this.offset_ = 0;\n\n    /**\n     * @private\n     * @type {ZIndexContextProxy}\n     */\n    this.context_ = /** @type {ZIndexContextProxy} */ (\n      new Proxy(getSharedCanvasContext2D(), {\n        get: (target, property) => {\n          if (\n            typeof (/** @type {*} */ (getSharedCanvasContext2D())[property]) !==\n            'function'\n          ) {\n            // we only accept calling functions on the proxy, not accessing properties\n            return undefined;\n          }\n          if (!this.instructions_[this.zIndex + this.offset_]) {\n            this.instructions_[this.zIndex + this.offset_] = [];\n          }\n          this.instructions_[this.zIndex + this.offset_].push(property);\n          return this.pushMethodArgs_;\n        },\n        set: (target, property, value) => {\n          if (!this.instructions_[this.zIndex + this.offset_]) {\n            this.instructions_[this.zIndex + this.offset_] = [];\n          }\n          this.instructions_[this.zIndex + this.offset_].push(property, value);\n          return true;\n        },\n      })\n    );\n  }\n\n  /**\n   * @private\n   * @param {...*} args Args.\n   * @return {ZIndexContext} This.\n   */\n  pushMethodArgs_ = (...args) => {\n    this.instructions_[this.zIndex + this.offset_].push(args);\n    return this;\n  };\n\n  /**\n   * Push a function that renders to the context directly.\n   * @param {function(CanvasRenderingContext2D): void} render Function.\n   */\n  pushFunction(render) {\n    this.instructions_[this.zIndex + this.offset_].push(render);\n  }\n\n  /**\n   * Get a proxy for CanvasRenderingContext2D which does not support getting state\n   * (e.g. `context.globalAlpha`, which will return `undefined`). To set state, if it relies on a\n   * previous state (e.g. `context.globalAlpha = context.globalAlpha / 2`), set a function,\n   * e.g. `context.globalAlpha = (context) => context.globalAlpha / 2`.\n   * @return {ZIndexContextProxy} Context.\n   */\n  getContext() {\n    return this.context_;\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   */\n  draw(context) {\n    this.instructions_.forEach((instructionsAtIndex) => {\n      for (let i = 0, ii = instructionsAtIndex.length; i < ii; ++i) {\n        const property = instructionsAtIndex[i];\n        if (typeof property === 'function') {\n          property(context);\n          continue;\n        }\n        const instructionAtIndex = instructionsAtIndex[++i];\n        if (typeof (/** @type {*} */ (context)[property]) === 'function') {\n          /** @type {*} */ (context)[property](...instructionAtIndex);\n        } else {\n          if (typeof instructionAtIndex === 'function') {\n            /** @type {*} */ (context)[property] = instructionAtIndex(context);\n            continue;\n          }\n          /** @type {*} */ (context)[property] = instructionAtIndex;\n        }\n      }\n    });\n  }\n\n  clear() {\n    this.instructions_.length = 0;\n    this.zIndex = 0;\n    this.offset_ = 0;\n  }\n\n  /**\n   * Offsets the zIndex by the highest current zIndex. Useful for rendering multiple worlds or tiles, to\n   * avoid conflicting context.clip() or context.save()/restore() calls.\n   */\n  offset() {\n    this.offset_ = this.instructions_.length;\n    this.zIndex = 0;\n  }\n}\n\nexport default ZIndexContext;\n","/**\n * @module ol/render/canvas/Executor\n */\nimport {equals} from '../../array.js';\nimport {createEmpty, createOrUpdate, intersects} from '../../extent.js';\nimport {lineStringLength} from '../../geom/flat/length.js';\nimport {drawTextOnPath} from '../../geom/flat/textpath.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n  create as createTransform,\n  setFromArray as transformSetFromArray,\n} from '../../transform.js';\nimport ZIndexContext from '../canvas/ZIndexContext.js';\nimport {\n  defaultPadding,\n  defaultTextAlign,\n  defaultTextBaseline,\n  drawImageOrLabel,\n  getTextDimensions,\n  measureAndCacheTextWidth,\n} from '../canvas.js';\nimport CanvasInstruction from './Instruction.js';\nimport {TEXT_ALIGN} from './TextBuilder.js';\n\n/**\n * @typedef {import('../../structs/RBush.js').Entry<import('../../Feature.js').FeatureLike>} DeclutterEntry\n */\n\n/**\n * @typedef {Object} ImageOrLabelDimensions\n * @property {number} drawImageX DrawImageX.\n * @property {number} drawImageY DrawImageY.\n * @property {number} drawImageW DrawImageW.\n * @property {number} drawImageH DrawImageH.\n * @property {number} originX OriginX.\n * @property {number} originY OriginY.\n * @property {Array<number>} scale Scale.\n * @property {DeclutterEntry} declutterBox DeclutterBox.\n * @property {import(\"../../transform.js\").Transform} canvasTransform CanvasTransform.\n */\n\n/**\n * @typedef {{0: CanvasRenderingContext2D, 1: import('../../size.js').Size, 2: import(\"../canvas.js\").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement, 3: ImageOrLabelDimensions, 4: number, 5: Array<*>, 6: Array<*>}} ReplayImageOrLabelArgs\n */\n\n/**\n * @template T\n * @typedef {function(import(\"../../Feature.js\").FeatureLike, import(\"../../geom/SimpleGeometry.js\").default, import(\"../../style/Style.js\").DeclutterMode): T} FeatureCallback\n */\n\n/**\n * @type {import(\"../../extent.js\").Extent}\n */\nconst tmpExtent = createEmpty();\n\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p1 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p2 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p3 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p4 = [];\n\n/**\n * @param {ReplayImageOrLabelArgs} replayImageOrLabelArgs Arguments to replayImageOrLabel\n * @return {DeclutterEntry} Declutter rbush entry.\n */\nfunction getDeclutterBox(replayImageOrLabelArgs) {\n  return replayImageOrLabelArgs[3].declutterBox;\n}\n\nconst rtlRegEx = new RegExp(\n  /* eslint-disable prettier/prettier */\n  '[' +\n    String.fromCharCode(0x00591) + '-' + String.fromCharCode(0x008ff) +\n    String.fromCharCode(0x0fb1d) + '-' + String.fromCharCode(0x0fdff) +\n    String.fromCharCode(0x0fe70) + '-' + String.fromCharCode(0x0fefc) +\n    String.fromCharCode(0x10800) + '-' + String.fromCharCode(0x10fff) +\n    String.fromCharCode(0x1e800) + '-' + String.fromCharCode(0x1efff) +\n  ']'\n  /* eslint-enable prettier/prettier */\n);\n\n/**\n * @param {string} text Text.\n * @param {CanvasTextAlign} align Alignment.\n * @return {number} Text alignment.\n */\nfunction horizontalTextAlign(text, align) {\n  if (align === 'start') {\n    align = rtlRegEx.test(text) ? 'right' : 'left';\n  } else if (align === 'end') {\n    align = rtlRegEx.test(text) ? 'left' : 'right';\n  }\n  return TEXT_ALIGN[align];\n}\n\n/**\n * @param {Array<string>} acc Accumulator.\n * @param {string} line Line of text.\n * @param {number} i Index\n * @return {Array<string>} Accumulator.\n */\nfunction createTextChunks(acc, line, i) {\n  if (i > 0) {\n    acc.push('\\n', '');\n  }\n  acc.push(line, '');\n  return acc;\n}\n\nclass Executor {\n  /**\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {boolean} overlaps The replay can have overlapping geometries.\n   * @param {import(\"../canvas.js\").SerializableInstructions} instructions The serializable instructions.\n   * @param {boolean} [deferredRendering] Enable deferred rendering.\n   */\n  constructor(\n    resolution,\n    pixelRatio,\n    overlaps,\n    instructions,\n    deferredRendering,\n  ) {\n    /**\n     * @protected\n     * @type {boolean}\n     */\n    this.overlaps = overlaps;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.pixelRatio = pixelRatio;\n\n    /**\n     * @protected\n     * @const\n     * @type {number}\n     */\n    this.resolution = resolution;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.alignAndScaleFill_;\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.instructions = instructions.instructions;\n\n    /**\n     * @protected\n     * @type {Array<number>}\n     */\n    this.coordinates = instructions.coordinates;\n\n    /**\n     * @private\n     * @type {!Object<number,import(\"../../coordinate.js\").Coordinate|Array<import(\"../../coordinate.js\").Coordinate>|Array<Array<import(\"../../coordinate.js\").Coordinate>>>}\n     */\n    this.coordinateCache_ = {};\n\n    /**\n     * @private\n     * @type {!import(\"../../transform.js\").Transform}\n     */\n    this.renderedTransform_ = createTransform();\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.hitDetectionInstructions = instructions.hitDetectionInstructions;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.pixelCoordinates_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.viewRotation_ = 0;\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").FillState>}\n     */\n    this.fillStates = instructions.fillStates || {};\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").StrokeState>}\n     */\n    this.strokeStates = instructions.strokeStates || {};\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").TextState>}\n     */\n    this.textStates = instructions.textStates || {};\n\n    /**\n     * @private\n     * @type {Object<string, Object<string, number>>}\n     */\n    this.widths_ = {};\n\n    /**\n     * @private\n     * @type {Object<string, import(\"../canvas.js\").Label>}\n     */\n    this.labels_ = {};\n\n    /**\n     * @private\n     * @type {import(\"../canvas/ZIndexContext.js\").default}\n     */\n    this.zIndexContext_ = deferredRendering ? new ZIndexContext() : null;\n  }\n\n  /**\n   * @return {ZIndexContext} ZIndex context.\n   */\n  getZIndexContext() {\n    return this.zIndexContext_;\n  }\n\n  /**\n   * @param {string|Array<string>} text Text.\n   * @param {string} textKey Text style key.\n   * @param {string} fillKey Fill style key.\n   * @param {string} strokeKey Stroke style key.\n   * @return {import(\"../canvas.js\").Label} Label.\n   */\n  createLabel(text, textKey, fillKey, strokeKey) {\n    const key = text + textKey + fillKey + strokeKey;\n    if (this.labels_[key]) {\n      return this.labels_[key];\n    }\n    const strokeState = strokeKey ? this.strokeStates[strokeKey] : null;\n    const fillState = fillKey ? this.fillStates[fillKey] : null;\n    const textState = this.textStates[textKey];\n    const pixelRatio = this.pixelRatio;\n    const scale = [\n      textState.scale[0] * pixelRatio,\n      textState.scale[1] * pixelRatio,\n    ];\n    const align = textState.justify\n      ? TEXT_ALIGN[textState.justify]\n      : horizontalTextAlign(\n          Array.isArray(text) ? text[0] : text,\n          textState.textAlign || defaultTextAlign,\n        );\n    const strokeWidth =\n      strokeKey && strokeState.lineWidth ? strokeState.lineWidth : 0;\n\n    const chunks = Array.isArray(text)\n      ? text\n      : String(text).split('\\n').reduce(createTextChunks, []);\n\n    const {width, height, widths, heights, lineWidths} = getTextDimensions(\n      textState,\n      chunks,\n    );\n    const renderWidth = width + strokeWidth;\n    const contextInstructions = [];\n    // make canvas 2 pixels wider to account for italic text width measurement errors\n    const w = (renderWidth + 2) * scale[0];\n    const h = (height + strokeWidth) * scale[1];\n    /** @type {import(\"../canvas.js\").Label} */\n    const label = {\n      width: w < 0 ? Math.floor(w) : Math.ceil(w),\n      height: h < 0 ? Math.floor(h) : Math.ceil(h),\n      contextInstructions: contextInstructions,\n    };\n    if (scale[0] != 1 || scale[1] != 1) {\n      contextInstructions.push('scale', scale);\n    }\n    if (strokeKey) {\n      contextInstructions.push('strokeStyle', strokeState.strokeStyle);\n      contextInstructions.push('lineWidth', strokeWidth);\n      contextInstructions.push('lineCap', strokeState.lineCap);\n      contextInstructions.push('lineJoin', strokeState.lineJoin);\n      contextInstructions.push('miterLimit', strokeState.miterLimit);\n      contextInstructions.push('setLineDash', [strokeState.lineDash]);\n      contextInstructions.push('lineDashOffset', strokeState.lineDashOffset);\n    }\n    if (fillKey) {\n      contextInstructions.push('fillStyle', fillState.fillStyle);\n    }\n    contextInstructions.push('textBaseline', 'middle');\n    contextInstructions.push('textAlign', 'center');\n    const leftRight = 0.5 - align;\n    let x = align * renderWidth + leftRight * strokeWidth;\n    const strokeInstructions = [];\n    const fillInstructions = [];\n    let lineHeight = 0;\n    let lineOffset = 0;\n    let widthHeightIndex = 0;\n    let lineWidthIndex = 0;\n    let previousFont;\n    for (let i = 0, ii = chunks.length; i < ii; i += 2) {\n      const text = chunks[i];\n      if (text === '\\n') {\n        lineOffset += lineHeight;\n        lineHeight = 0;\n        x = align * renderWidth + leftRight * strokeWidth;\n        ++lineWidthIndex;\n        continue;\n      }\n      const font = chunks[i + 1] || textState.font;\n      if (font !== previousFont) {\n        if (strokeKey) {\n          strokeInstructions.push('font', font);\n        }\n        if (fillKey) {\n          fillInstructions.push('font', font);\n        }\n        previousFont = font;\n      }\n      lineHeight = Math.max(lineHeight, heights[widthHeightIndex]);\n      const fillStrokeArgs = [\n        text,\n        x +\n          leftRight * widths[widthHeightIndex] +\n          align * (widths[widthHeightIndex] - lineWidths[lineWidthIndex]),\n        0.5 * (strokeWidth + lineHeight) + lineOffset,\n      ];\n      x += widths[widthHeightIndex];\n      if (strokeKey) {\n        strokeInstructions.push('strokeText', fillStrokeArgs);\n      }\n      if (fillKey) {\n        fillInstructions.push('fillText', fillStrokeArgs);\n      }\n      ++widthHeightIndex;\n    }\n    Array.prototype.push.apply(contextInstructions, strokeInstructions);\n    Array.prototype.push.apply(contextInstructions, fillInstructions);\n    this.labels_[key] = label;\n    return label;\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../coordinate.js\").Coordinate} p1 1st point of the background box.\n   * @param {import(\"../../coordinate.js\").Coordinate} p2 2nd point of the background box.\n   * @param {import(\"../../coordinate.js\").Coordinate} p3 3rd point of the background box.\n   * @param {import(\"../../coordinate.js\").Coordinate} p4 4th point of the background box.\n   * @param {Array<*>} fillInstruction Fill instruction.\n   * @param {Array<*>} strokeInstruction Stroke instruction.\n   */\n  replayTextBackground_(\n    context,\n    p1,\n    p2,\n    p3,\n    p4,\n    fillInstruction,\n    strokeInstruction,\n  ) {\n    context.beginPath();\n    context.moveTo.apply(context, p1);\n    context.lineTo.apply(context, p2);\n    context.lineTo.apply(context, p3);\n    context.lineTo.apply(context, p4);\n    context.lineTo.apply(context, p1);\n    if (fillInstruction) {\n      this.alignAndScaleFill_ = /** @type {number} */ (fillInstruction[2]);\n      context.fillStyle = /** @type {string} */ (fillInstruction[1]);\n      this.fill_(context);\n    }\n    if (strokeInstruction) {\n      this.setStrokeStyle_(\n        context,\n        /** @type {Array<*>} */ (strokeInstruction),\n      );\n      context.stroke();\n    }\n  }\n\n  /**\n   * @private\n   * @param {number} sheetWidth Width of the sprite sheet.\n   * @param {number} sheetHeight Height of the sprite sheet.\n   * @param {number} centerX X.\n   * @param {number} centerY Y.\n   * @param {number} width Width.\n   * @param {number} height Height.\n   * @param {number} anchorX Anchor X.\n   * @param {number} anchorY Anchor Y.\n   * @param {number} originX Origin X.\n   * @param {number} originY Origin Y.\n   * @param {number} rotation Rotation.\n   * @param {import(\"../../size.js\").Size} scale Scale.\n   * @param {boolean} snapToPixel Snap to pixel.\n   * @param {Array<number>} padding Padding.\n   * @param {boolean} fillStroke Background fill or stroke.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @return {ImageOrLabelDimensions} Dimensions for positioning and decluttering the image or label.\n   */\n  calculateImageOrLabelDimensions_(\n    sheetWidth,\n    sheetHeight,\n    centerX,\n    centerY,\n    width,\n    height,\n    anchorX,\n    anchorY,\n    originX,\n    originY,\n    rotation,\n    scale,\n    snapToPixel,\n    padding,\n    fillStroke,\n    feature,\n  ) {\n    anchorX *= scale[0];\n    anchorY *= scale[1];\n    let x = centerX - anchorX;\n    let y = centerY - anchorY;\n\n    const w = width + originX > sheetWidth ? sheetWidth - originX : width;\n    const h = height + originY > sheetHeight ? sheetHeight - originY : height;\n    const boxW = padding[3] + w * scale[0] + padding[1];\n    const boxH = padding[0] + h * scale[1] + padding[2];\n    const boxX = x - padding[3];\n    const boxY = y - padding[0];\n\n    if (fillStroke || rotation !== 0) {\n      p1[0] = boxX;\n      p4[0] = boxX;\n      p1[1] = boxY;\n      p2[1] = boxY;\n      p2[0] = boxX + boxW;\n      p3[0] = p2[0];\n      p3[1] = boxY + boxH;\n      p4[1] = p3[1];\n    }\n\n    let transform;\n    if (rotation !== 0) {\n      transform = composeTransform(\n        createTransform(),\n        centerX,\n        centerY,\n        1,\n        1,\n        rotation,\n        -centerX,\n        -centerY,\n      );\n\n      applyTransform(transform, p1);\n      applyTransform(transform, p2);\n      applyTransform(transform, p3);\n      applyTransform(transform, p4);\n      createOrUpdate(\n        Math.min(p1[0], p2[0], p3[0], p4[0]),\n        Math.min(p1[1], p2[1], p3[1], p4[1]),\n        Math.max(p1[0], p2[0], p3[0], p4[0]),\n        Math.max(p1[1], p2[1], p3[1], p4[1]),\n        tmpExtent,\n      );\n    } else {\n      createOrUpdate(\n        Math.min(boxX, boxX + boxW),\n        Math.min(boxY, boxY + boxH),\n        Math.max(boxX, boxX + boxW),\n        Math.max(boxY, boxY + boxH),\n        tmpExtent,\n      );\n    }\n    if (snapToPixel) {\n      x = Math.round(x);\n      y = Math.round(y);\n    }\n    return {\n      drawImageX: x,\n      drawImageY: y,\n      drawImageW: w,\n      drawImageH: h,\n      originX: originX,\n      originY: originY,\n      declutterBox: {\n        minX: tmpExtent[0],\n        minY: tmpExtent[1],\n        maxX: tmpExtent[2],\n        maxY: tmpExtent[3],\n        value: feature,\n      },\n      canvasTransform: transform,\n      scale: scale,\n    };\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.\n   * @param {import(\"../canvas.js\").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} imageOrLabel Image.\n   * @param {ImageOrLabelDimensions} dimensions Dimensions.\n   * @param {number} opacity Opacity.\n   * @param {Array<*>} fillInstruction Fill instruction.\n   * @param {Array<*>} strokeInstruction Stroke instruction.\n   * @return {boolean} The image or label was rendered.\n   */\n  replayImageOrLabel_(\n    context,\n    scaledCanvasSize,\n    imageOrLabel,\n    dimensions,\n    opacity,\n    fillInstruction,\n    strokeInstruction,\n  ) {\n    const fillStroke = !!(fillInstruction || strokeInstruction);\n\n    const box = dimensions.declutterBox;\n    const strokePadding = strokeInstruction\n      ? (strokeInstruction[2] * dimensions.scale[0]) / 2\n      : 0;\n    const intersects =\n      box.minX - strokePadding <= scaledCanvasSize[0] &&\n      box.maxX + strokePadding >= 0 &&\n      box.minY - strokePadding <= scaledCanvasSize[1] &&\n      box.maxY + strokePadding >= 0;\n\n    if (intersects) {\n      if (fillStroke) {\n        this.replayTextBackground_(\n          context,\n          p1,\n          p2,\n          p3,\n          p4,\n          /** @type {Array<*>} */ (fillInstruction),\n          /** @type {Array<*>} */ (strokeInstruction),\n        );\n      }\n      drawImageOrLabel(\n        context,\n        dimensions.canvasTransform,\n        opacity,\n        imageOrLabel,\n        dimensions.originX,\n        dimensions.originY,\n        dimensions.drawImageW,\n        dimensions.drawImageH,\n        dimensions.drawImageX,\n        dimensions.drawImageY,\n        dimensions.scale,\n      );\n    }\n    return true;\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D} context Context.\n   */\n  fill_(context) {\n    const alignAndScale = this.alignAndScaleFill_;\n    if (alignAndScale) {\n      const origin = applyTransform(this.renderedTransform_, [0, 0]);\n      const repeatSize = 512 * this.pixelRatio;\n      context.save();\n      context.translate(origin[0] % repeatSize, origin[1] % repeatSize);\n      if (alignAndScale !== 1) {\n        context.scale(alignAndScale, alignAndScale);\n      }\n      context.rotate(this.viewRotation_);\n    }\n    context.fill();\n    if (alignAndScale) {\n      context.restore();\n    }\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {Array<*>} instruction Instruction.\n   */\n  setStrokeStyle_(context, instruction) {\n    context.strokeStyle =\n      /** @type {import(\"../../colorlike.js\").ColorLike} */ (instruction[1]);\n    context.lineWidth = /** @type {number} */ (instruction[2]);\n    context.lineCap = /** @type {CanvasLineCap} */ (instruction[3]);\n    context.lineJoin = /** @type {CanvasLineJoin} */ (instruction[4]);\n    context.miterLimit = /** @type {number} */ (instruction[5]);\n    context.lineDashOffset = /** @type {number} */ (instruction[7]);\n    context.setLineDash(/** @type {Array<number>} */ (instruction[6]));\n  }\n\n  /**\n   * @private\n   * @param {string|Array<string>} text The text to draw.\n   * @param {string} textKey The key of the text state.\n   * @param {string} strokeKey The key for the stroke state.\n   * @param {string} fillKey The key for the fill state.\n   * @return {{label: import(\"../canvas.js\").Label, anchorX: number, anchorY: number}} The text image and its anchor.\n   */\n  drawLabelWithPointPlacement_(text, textKey, strokeKey, fillKey) {\n    const textState = this.textStates[textKey];\n\n    const label = this.createLabel(text, textKey, fillKey, strokeKey);\n\n    const strokeState = this.strokeStates[strokeKey];\n    const pixelRatio = this.pixelRatio;\n    const align = horizontalTextAlign(\n      Array.isArray(text) ? text[0] : text,\n      textState.textAlign || defaultTextAlign,\n    );\n    const baseline = TEXT_ALIGN[textState.textBaseline || defaultTextBaseline];\n    const strokeWidth =\n      strokeState && strokeState.lineWidth ? strokeState.lineWidth : 0;\n\n    // Remove the 2 pixels we added in createLabel() for the anchor\n    const width = label.width / pixelRatio - 2 * textState.scale[0];\n    const anchorX = align * width + 2 * (0.5 - align) * strokeWidth;\n    const anchorY =\n      (baseline * label.height) / pixelRatio +\n      2 * (0.5 - baseline) * strokeWidth;\n\n    return {\n      label: label,\n      anchorX: anchorX,\n      anchorY: anchorY,\n    };\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {Array<*>} instructions Instructions array.\n   * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.\n   * @param {FeatureCallback<T>} [featureCallback] Feature callback.\n   * @param {import(\"../../extent.js\").Extent} [hitExtent] Only check\n   *     features that intersect this extent.\n   * @param {import(\"rbush\").default<DeclutterEntry>} [declutterTree] Declutter tree.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  execute_(\n    context,\n    scaledCanvasSize,\n    transform,\n    instructions,\n    snapToPixel,\n    featureCallback,\n    hitExtent,\n    declutterTree,\n  ) {\n    const zIndexContext = this.zIndexContext_;\n    /** @type {Array<number>} */\n    let pixelCoordinates;\n    if (this.pixelCoordinates_ && equals(transform, this.renderedTransform_)) {\n      pixelCoordinates = this.pixelCoordinates_;\n    } else {\n      if (!this.pixelCoordinates_) {\n        this.pixelCoordinates_ = [];\n      }\n      pixelCoordinates = transform2D(\n        this.coordinates,\n        0,\n        this.coordinates.length,\n        2,\n        transform,\n        this.pixelCoordinates_,\n      );\n      transformSetFromArray(this.renderedTransform_, transform);\n    }\n    let i = 0; // instruction index\n    const ii = instructions.length; // end of instructions\n    let d = 0; // data index\n    let dd; // end of per-instruction data\n    let anchorX,\n      anchorY,\n      /** @type {import('../../style/Style.js').DeclutterMode} */\n      declutterMode,\n      prevX,\n      prevY,\n      roundX,\n      roundY,\n      image,\n      text,\n      textKey,\n      strokeKey,\n      fillKey;\n    let pendingFill = 0;\n    let pendingStroke = 0;\n    const coordinateCache = this.coordinateCache_;\n    const viewRotation = this.viewRotation_;\n    const viewRotationFromTransform =\n      Math.round(Math.atan2(-transform[1], transform[0]) * 1e12) / 1e12;\n\n    const state = /** @type {import(\"../../render.js\").State} */ ({\n      context: context,\n      pixelRatio: this.pixelRatio,\n      resolution: this.resolution,\n      rotation: viewRotation,\n    });\n\n    // When the batch size gets too big, performance decreases. 200 is a good\n    // balance between batch size and number of fill/stroke instructions.\n    const batchSize =\n      this.instructions != instructions || this.overlaps ? 0 : 200;\n    let /** @type {import(\"../../Feature.js\").FeatureLike} */ feature;\n    let x, y, currentGeometry;\n    while (i < ii) {\n      const instruction = instructions[i];\n      const type = /** @type {import(\"./Instruction.js\").default} */ (\n        instruction[0]\n      );\n      switch (type) {\n        case CanvasInstruction.BEGIN_GEOMETRY:\n          feature = /** @type {import(\"../../Feature.js\").FeatureLike} */ (\n            instruction[1]\n          );\n          currentGeometry = instruction[3];\n          if (!feature.getGeometry()) {\n            i = /** @type {number} */ (instruction[2]);\n          } else if (\n            hitExtent !== undefined &&\n            !intersects(hitExtent, currentGeometry.getExtent())\n          ) {\n            i = /** @type {number} */ (instruction[2]) + 1;\n          } else {\n            ++i;\n          }\n          if (zIndexContext) {\n            zIndexContext.zIndex = instruction[4];\n          }\n          break;\n        case CanvasInstruction.BEGIN_PATH:\n          if (pendingFill > batchSize) {\n            this.fill_(context);\n            pendingFill = 0;\n          }\n          if (pendingStroke > batchSize) {\n            context.stroke();\n            pendingStroke = 0;\n          }\n          if (!pendingFill && !pendingStroke) {\n            context.beginPath();\n            prevX = NaN;\n            prevY = NaN;\n          }\n          ++i;\n          break;\n        case CanvasInstruction.CIRCLE:\n          d = /** @type {number} */ (instruction[1]);\n          const x1 = pixelCoordinates[d];\n          const y1 = pixelCoordinates[d + 1];\n          const x2 = pixelCoordinates[d + 2];\n          const y2 = pixelCoordinates[d + 3];\n          const dx = x2 - x1;\n          const dy = y2 - y1;\n          const r = Math.sqrt(dx * dx + dy * dy);\n          context.moveTo(x1 + r, y1);\n          context.arc(x1, y1, r, 0, 2 * Math.PI, true);\n          ++i;\n          break;\n        case CanvasInstruction.CLOSE_PATH:\n          context.closePath();\n          ++i;\n          break;\n        case CanvasInstruction.CUSTOM:\n          d = /** @type {number} */ (instruction[1]);\n          dd = instruction[2];\n          const geometry =\n            /** @type {import(\"../../geom/SimpleGeometry.js\").default} */ (\n              instruction[3]\n            );\n          const renderer = instruction[4];\n          const fn = instruction[5];\n          state.geometry = geometry;\n          state.feature = feature;\n          if (!(i in coordinateCache)) {\n            coordinateCache[i] = [];\n          }\n          const coords = coordinateCache[i];\n          if (fn) {\n            fn(pixelCoordinates, d, dd, 2, coords);\n          } else {\n            coords[0] = pixelCoordinates[d];\n            coords[1] = pixelCoordinates[d + 1];\n            coords.length = 2;\n          }\n          if (zIndexContext) {\n            zIndexContext.zIndex = instruction[6];\n          }\n          renderer(coords, state);\n          ++i;\n          break;\n        case CanvasInstruction.DRAW_IMAGE:\n          d = /** @type {number} */ (instruction[1]);\n          dd = /** @type {number} */ (instruction[2]);\n          image =\n            /** @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} */ (\n              instruction[3]\n            );\n\n          // Remaining arguments in DRAW_IMAGE are in alphabetical order\n          anchorX = /** @type {number} */ (instruction[4]);\n          anchorY = /** @type {number} */ (instruction[5]);\n          let height = /** @type {number} */ (instruction[6]);\n          const opacity = /** @type {number} */ (instruction[7]);\n          const originX = /** @type {number} */ (instruction[8]);\n          const originY = /** @type {number} */ (instruction[9]);\n          const rotateWithView = /** @type {boolean} */ (instruction[10]);\n          let rotation = /** @type {number} */ (instruction[11]);\n          const scale = /** @type {import(\"../../size.js\").Size} */ (\n            instruction[12]\n          );\n          let width = /** @type {number} */ (instruction[13]);\n          declutterMode = instruction[14] || 'declutter';\n          const declutterImageWithText =\n            /** @type {{args: import(\"../canvas.js\").DeclutterImageWithText, declutterMode: import('../../style/Style.js').DeclutterMode}} */ (\n              instruction[15]\n            );\n\n          if (!image && instruction.length >= 20) {\n            // create label images\n            text = /** @type {string} */ (instruction[19]);\n            textKey = /** @type {string} */ (instruction[20]);\n            strokeKey = /** @type {string} */ (instruction[21]);\n            fillKey = /** @type {string} */ (instruction[22]);\n            const labelWithAnchor = this.drawLabelWithPointPlacement_(\n              text,\n              textKey,\n              strokeKey,\n              fillKey,\n            );\n            image = labelWithAnchor.label;\n            instruction[3] = image;\n            const textOffsetX = /** @type {number} */ (instruction[23]);\n            anchorX = (labelWithAnchor.anchorX - textOffsetX) * this.pixelRatio;\n            instruction[4] = anchorX;\n            const textOffsetY = /** @type {number} */ (instruction[24]);\n            anchorY = (labelWithAnchor.anchorY - textOffsetY) * this.pixelRatio;\n            instruction[5] = anchorY;\n            height = image.height;\n            instruction[6] = height;\n            width = image.width;\n            instruction[13] = width;\n          }\n\n          let geometryWidths;\n          if (instruction.length > 25) {\n            geometryWidths = /** @type {number} */ (instruction[25]);\n          }\n\n          let padding, backgroundFillInstruction, backgroundStrokeInstruction;\n          if (instruction.length > 17) {\n            padding = /** @type {Array<number>} */ (instruction[16]);\n            backgroundFillInstruction = /** @type {Array<*>} */ (\n              instruction[17]\n            );\n            backgroundStrokeInstruction = /** @type {Array<*>} */ (\n              instruction[18]\n            );\n          } else {\n            padding = defaultPadding;\n            backgroundFillInstruction = null;\n            backgroundStrokeInstruction = null;\n          }\n\n          if (rotateWithView && viewRotationFromTransform) {\n            // Canvas is expected to be rotated to reverse view rotation.\n            rotation += viewRotation;\n          } else if (!rotateWithView && !viewRotationFromTransform) {\n            // Canvas is not rotated, images need to be rotated back to be north-up.\n            rotation -= viewRotation;\n          }\n          let widthIndex = 0;\n          for (; d < dd; d += 2) {\n            if (\n              geometryWidths &&\n              geometryWidths[widthIndex++] < width / this.pixelRatio\n            ) {\n              continue;\n            }\n            const dimensions = this.calculateImageOrLabelDimensions_(\n              image.width,\n              image.height,\n              pixelCoordinates[d],\n              pixelCoordinates[d + 1],\n              width,\n              height,\n              anchorX,\n              anchorY,\n              originX,\n              originY,\n              rotation,\n              scale,\n              snapToPixel,\n              padding,\n              !!backgroundFillInstruction || !!backgroundStrokeInstruction,\n              feature,\n            );\n            /** @type {ReplayImageOrLabelArgs} */\n            const args = [\n              context,\n              scaledCanvasSize,\n              image,\n              dimensions,\n              opacity,\n              backgroundFillInstruction,\n              backgroundStrokeInstruction,\n            ];\n            if (declutterTree) {\n              let imageArgs, imageDeclutterMode, imageDeclutterBox;\n              if (declutterImageWithText) {\n                const index = dd - d;\n                if (!declutterImageWithText[index]) {\n                  // We now have the image for an image+text combination.\n                  declutterImageWithText[index] = {args, declutterMode};\n                  // Don't render anything for now, wait for the text.\n                  continue;\n                }\n                const imageDeclutter = declutterImageWithText[index];\n                imageArgs = imageDeclutter.args;\n                imageDeclutterMode = imageDeclutter.declutterMode;\n                delete declutterImageWithText[index];\n                imageDeclutterBox = getDeclutterBox(imageArgs);\n              }\n              // We now have image and text for an image+text combination.\n              let renderImage, renderText;\n              if (\n                imageArgs &&\n                (imageDeclutterMode !== 'declutter' ||\n                  !declutterTree.collides(imageDeclutterBox))\n              ) {\n                renderImage = true;\n              }\n              if (\n                declutterMode !== 'declutter' ||\n                !declutterTree.collides(dimensions.declutterBox)\n              ) {\n                renderText = true;\n              }\n              if (\n                imageDeclutterMode === 'declutter' &&\n                declutterMode === 'declutter'\n              ) {\n                const render = renderImage && renderText;\n                renderImage = render;\n                renderText = render;\n              }\n              if (renderImage) {\n                if (imageDeclutterMode !== 'none') {\n                  declutterTree.insert(imageDeclutterBox);\n                }\n                this.replayImageOrLabel_.apply(this, imageArgs);\n              }\n              if (renderText) {\n                if (declutterMode !== 'none') {\n                  declutterTree.insert(dimensions.declutterBox);\n                }\n                this.replayImageOrLabel_.apply(this, args);\n              }\n            } else {\n              this.replayImageOrLabel_.apply(this, args);\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.DRAW_CHARS:\n          const begin = /** @type {number} */ (instruction[1]);\n          const end = /** @type {number} */ (instruction[2]);\n          const baseline = /** @type {number} */ (instruction[3]);\n          const overflow = /** @type {number} */ (instruction[4]);\n          fillKey = /** @type {string} */ (instruction[5]);\n          const maxAngle = /** @type {number} */ (instruction[6]);\n          const measurePixelRatio = /** @type {number} */ (instruction[7]);\n          const offsetY = /** @type {number} */ (instruction[8]);\n          strokeKey = /** @type {string} */ (instruction[9]);\n          const strokeWidth = /** @type {number} */ (instruction[10]);\n          text = /** @type {string} */ (instruction[11]);\n          textKey = /** @type {string} */ (instruction[12]);\n          const pixelRatioScale = [\n            /** @type {number} */ (instruction[13]),\n            /** @type {number} */ (instruction[13]),\n          ];\n          declutterMode = instruction[14] || 'declutter';\n\n          const textKeepUpright = /** @type {boolean} */ (instruction[15]);\n          const textState = this.textStates[textKey];\n          const font = textState.font;\n          const textScale = [\n            textState.scale[0] * measurePixelRatio,\n            textState.scale[1] * measurePixelRatio,\n          ];\n\n          let cachedWidths;\n          if (font in this.widths_) {\n            cachedWidths = this.widths_[font];\n          } else {\n            cachedWidths = {};\n            this.widths_[font] = cachedWidths;\n          }\n\n          const pathLength = lineStringLength(pixelCoordinates, begin, end, 2);\n          const textLength =\n            Math.abs(textScale[0]) *\n            measureAndCacheTextWidth(font, text, cachedWidths);\n          if (overflow || textLength <= pathLength) {\n            const textAlign = this.textStates[textKey].textAlign;\n            const startM =\n              (pathLength - textLength) * horizontalTextAlign(text, textAlign);\n            const parts = drawTextOnPath(\n              pixelCoordinates,\n              begin,\n              end,\n              2,\n              text,\n              startM,\n              maxAngle,\n              Math.abs(textScale[0]),\n              measureAndCacheTextWidth,\n              font,\n              cachedWidths,\n              viewRotationFromTransform ? 0 : this.viewRotation_,\n              textKeepUpright,\n            );\n            drawChars: if (parts) {\n              /** @type {Array<ReplayImageOrLabelArgs>} */\n              const replayImageOrLabelArgs = [];\n              let c, cc, chars, label, part;\n              if (strokeKey) {\n                for (c = 0, cc = parts.length; c < cc; ++c) {\n                  part = parts[c]; // x, y, anchorX, rotation, chunk\n                  chars = /** @type {string} */ (part[4]);\n                  label = this.createLabel(chars, textKey, '', strokeKey);\n                  anchorX =\n                    /** @type {number} */ (part[2]) +\n                    (textScale[0] < 0 ? -strokeWidth : strokeWidth);\n                  anchorY =\n                    baseline * label.height +\n                    ((0.5 - baseline) * 2 * strokeWidth * textScale[1]) /\n                      textScale[0] -\n                    offsetY;\n                  const dimensions = this.calculateImageOrLabelDimensions_(\n                    label.width,\n                    label.height,\n                    part[0],\n                    part[1],\n                    label.width,\n                    label.height,\n                    anchorX,\n                    anchorY,\n                    0,\n                    0,\n                    part[3],\n                    pixelRatioScale,\n                    false,\n                    defaultPadding,\n                    false,\n                    feature,\n                  );\n                  if (\n                    declutterTree &&\n                    declutterMode === 'declutter' &&\n                    declutterTree.collides(dimensions.declutterBox)\n                  ) {\n                    break drawChars;\n                  }\n                  replayImageOrLabelArgs.push([\n                    context,\n                    scaledCanvasSize,\n                    label,\n                    dimensions,\n                    1,\n                    null,\n                    null,\n                  ]);\n                }\n              }\n              if (fillKey) {\n                for (c = 0, cc = parts.length; c < cc; ++c) {\n                  part = parts[c]; // x, y, anchorX, rotation, chunk\n                  chars = /** @type {string} */ (part[4]);\n                  label = this.createLabel(chars, textKey, fillKey, '');\n                  anchorX = /** @type {number} */ (part[2]);\n                  anchorY = baseline * label.height - offsetY;\n                  const dimensions = this.calculateImageOrLabelDimensions_(\n                    label.width,\n                    label.height,\n                    part[0],\n                    part[1],\n                    label.width,\n                    label.height,\n                    anchorX,\n                    anchorY,\n                    0,\n                    0,\n                    part[3],\n                    pixelRatioScale,\n                    false,\n                    defaultPadding,\n                    false,\n                    feature,\n                  );\n                  if (\n                    declutterTree &&\n                    declutterMode === 'declutter' &&\n                    declutterTree.collides(dimensions.declutterBox)\n                  ) {\n                    break drawChars;\n                  }\n                  replayImageOrLabelArgs.push([\n                    context,\n                    scaledCanvasSize,\n                    label,\n                    dimensions,\n                    1,\n                    null,\n                    null,\n                  ]);\n                }\n              }\n              if (declutterTree && declutterMode !== 'none') {\n                declutterTree.load(replayImageOrLabelArgs.map(getDeclutterBox));\n              }\n              for (let i = 0, ii = replayImageOrLabelArgs.length; i < ii; ++i) {\n                this.replayImageOrLabel_.apply(this, replayImageOrLabelArgs[i]);\n              }\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.END_GEOMETRY:\n          if (featureCallback !== undefined) {\n            feature = /** @type {import(\"../../Feature.js\").FeatureLike} */ (\n              instruction[1]\n            );\n            const result = featureCallback(\n              feature,\n              currentGeometry,\n              declutterMode,\n            );\n            if (result) {\n              return result;\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.FILL:\n          if (batchSize) {\n            pendingFill++;\n          } else {\n            this.fill_(context);\n          }\n          ++i;\n          break;\n        case CanvasInstruction.MOVE_TO_LINE_TO:\n          d = /** @type {number} */ (instruction[1]);\n          dd = /** @type {number} */ (instruction[2]);\n          x = pixelCoordinates[d];\n          y = pixelCoordinates[d + 1];\n          context.moveTo(x, y);\n          prevX = (x + 0.5) | 0;\n          prevY = (y + 0.5) | 0;\n          for (d += 2; d < dd; d += 2) {\n            x = pixelCoordinates[d];\n            y = pixelCoordinates[d + 1];\n            roundX = (x + 0.5) | 0;\n            roundY = (y + 0.5) | 0;\n            if (d == dd - 2 || roundX !== prevX || roundY !== prevY) {\n              context.lineTo(x, y);\n              prevX = roundX;\n              prevY = roundY;\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.SET_FILL_STYLE:\n          this.alignAndScaleFill_ = instruction[2];\n\n          if (pendingFill) {\n            this.fill_(context);\n            pendingFill = 0;\n            if (pendingStroke) {\n              context.stroke();\n              pendingStroke = 0;\n            }\n          }\n\n          /** @type {import(\"../../colorlike.js\").ColorLike} */\n          context.fillStyle = instruction[1];\n          ++i;\n          break;\n        case CanvasInstruction.SET_STROKE_STYLE:\n          if (pendingStroke) {\n            context.stroke();\n            pendingStroke = 0;\n          }\n          this.setStrokeStyle_(context, /** @type {Array<*>} */ (instruction));\n          ++i;\n          break;\n        case CanvasInstruction.STROKE:\n          if (batchSize) {\n            pendingStroke++;\n          } else {\n            context.stroke();\n          }\n          ++i;\n          break;\n        default: // consume the instruction anyway, to avoid an infinite loop\n          ++i;\n          break;\n      }\n    }\n    if (pendingFill) {\n      this.fill_(context);\n    }\n    if (pendingStroke) {\n      context.stroke();\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.\n   * @param {import(\"rbush\").default<DeclutterEntry>} [declutterTree] Declutter tree.\n   */\n  execute(\n    context,\n    scaledCanvasSize,\n    transform,\n    viewRotation,\n    snapToPixel,\n    declutterTree,\n  ) {\n    this.viewRotation_ = viewRotation;\n    this.execute_(\n      context,\n      scaledCanvasSize,\n      transform,\n      this.instructions,\n      snapToPixel,\n      undefined,\n      undefined,\n      declutterTree,\n    );\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {FeatureCallback<T>} [featureCallback] Feature callback.\n   * @param {import(\"../../extent.js\").Extent} [hitExtent] Only check\n   *     features that intersect this extent.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  executeHitDetection(\n    context,\n    transform,\n    viewRotation,\n    featureCallback,\n    hitExtent,\n  ) {\n    this.viewRotation_ = viewRotation;\n    return this.execute_(\n      context,\n      [context.canvas.width, context.canvas.height],\n      transform,\n      this.hitDetectionInstructions,\n      true,\n      featureCallback,\n      hitExtent,\n    );\n  }\n}\n\nexport default Executor;\n","/**\n * @module ol/render/canvas/ExecutorGroup\n */\n\nimport {ascending, descending} from '../../array.js';\nimport {createCanvasContext2D} from '../../dom.js';\nimport {buffer, createEmpty, extendCoordinate} from '../../extent.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {isEmpty} from '../../obj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../../transform.js';\nimport Executor from './Executor.js';\n\n/**\n * @const\n * @type {Array<import(\"../canvas.js\").BuilderType>}\n */\nexport const ALL = [\n  'Polygon',\n  'Circle',\n  'LineString',\n  'Image',\n  'Text',\n  'Default',\n];\n\n/**\n * @const\n * @type {Array<import(\"../canvas.js\").BuilderType>}\n */\nexport const DECLUTTER = ['Image', 'Text'];\n\n/**\n * @const\n * @type {Array<import(\"../canvas.js\").BuilderType>}\n */\nexport const NON_DECLUTTER = ALL.filter(\n  (builderType) => !DECLUTTER.includes(builderType),\n);\n\nclass ExecutorGroup {\n  /**\n   * @param {import(\"../../extent.js\").Extent} maxExtent Max extent for clipping. When a\n   * `maxExtent` was set on the Builder for this executor group, the same `maxExtent`\n   * should be set here, unless the target context does not exceed that extent (which\n   * can be the case when rendering to tiles).\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {boolean} overlaps The executor group can have overlapping geometries.\n   * @param {!Object<string, !Object<import(\"../canvas.js\").BuilderType, import(\"../canvas.js\").SerializableInstructions>>} allInstructions\n   * The serializable instructions.\n   * @param {number} [renderBuffer] Optional rendering buffer.\n   * @param {boolean} [deferredRendering] Enable deferred rendering with renderDeferred().\n   */\n  constructor(\n    maxExtent,\n    resolution,\n    pixelRatio,\n    overlaps,\n    allInstructions,\n    renderBuffer,\n    deferredRendering,\n  ) {\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.maxExtent_ = maxExtent;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overlaps_ = overlaps;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.resolution_ = resolution;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.renderBuffer_ = renderBuffer;\n\n    /**\n     * @private\n     * @type {!Object<string, !Object<string, import(\"./Executor\").default>>}\n     */\n    this.executorsByZIndex_ = {};\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D}\n     */\n    this.hitDetectionContext_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.hitDetectionTransform_ = createTransform();\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D}\n     */\n    this.renderedContext_ = null;\n\n    /**\n     * @private\n     * @type {Object<number, Array<import(\"./ZIndexContext.js\").default>>}\n     */\n    this.deferredZIndexContexts_ = {};\n\n    this.createExecutors_(allInstructions, deferredRendering);\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   */\n  clip(context, transform) {\n    const flatClipCoords = this.getClipCoords(transform);\n    context.beginPath();\n    context.moveTo(flatClipCoords[0], flatClipCoords[1]);\n    context.lineTo(flatClipCoords[2], flatClipCoords[3]);\n    context.lineTo(flatClipCoords[4], flatClipCoords[5]);\n    context.lineTo(flatClipCoords[6], flatClipCoords[7]);\n    context.clip();\n  }\n\n  /**\n   * Create executors and populate them using the provided instructions.\n   * @private\n   * @param {!Object<string, !Object<string, import(\"../canvas.js\").SerializableInstructions>>} allInstructions The serializable instructions\n   * @param {boolean} deferredRendering Enable deferred rendering.\n   */\n  createExecutors_(allInstructions, deferredRendering) {\n    for (const zIndex in allInstructions) {\n      let executors = this.executorsByZIndex_[zIndex];\n      if (executors === undefined) {\n        executors = {};\n        this.executorsByZIndex_[zIndex] = executors;\n      }\n      const instructionByZindex = allInstructions[zIndex];\n      for (const builderType in instructionByZindex) {\n        const instructions = instructionByZindex[builderType];\n        executors[builderType] = new Executor(\n          this.resolution_,\n          this.pixelRatio_,\n          this.overlaps_,\n          instructions,\n          deferredRendering,\n        );\n      }\n    }\n  }\n\n  /**\n   * @param {Array<import(\"../canvas.js\").BuilderType>} executors Executors.\n   * @return {boolean} Has executors of the provided types.\n   */\n  hasExecutors(executors) {\n    for (const zIndex in this.executorsByZIndex_) {\n      const candidates = this.executorsByZIndex_[zIndex];\n      for (let i = 0, ii = executors.length; i < ii; ++i) {\n        if (executors[i] in candidates) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} resolution Resolution.\n   * @param {number} rotation Rotation.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {function(import(\"../../Feature.js\").FeatureLike, import(\"../../geom/SimpleGeometry.js\").default, number): T} callback Feature callback.\n   * @param {Array<import(\"../../Feature.js\").FeatureLike>} declutteredFeatures Decluttered features.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    resolution,\n    rotation,\n    hitTolerance,\n    callback,\n    declutteredFeatures,\n  ) {\n    hitTolerance = Math.round(hitTolerance);\n    const contextSize = hitTolerance * 2 + 1;\n    const transform = composeTransform(\n      this.hitDetectionTransform_,\n      hitTolerance + 0.5,\n      hitTolerance + 0.5,\n      1 / resolution,\n      -1 / resolution,\n      -rotation,\n      -coordinate[0],\n      -coordinate[1],\n    );\n\n    const newContext = !this.hitDetectionContext_;\n    if (newContext) {\n      this.hitDetectionContext_ = createCanvasContext2D(\n        contextSize,\n        contextSize,\n        undefined,\n        {willReadFrequently: true},\n      );\n    }\n    const context = this.hitDetectionContext_;\n\n    if (\n      context.canvas.width !== contextSize ||\n      context.canvas.height !== contextSize\n    ) {\n      context.canvas.width = contextSize;\n      context.canvas.height = contextSize;\n    } else if (!newContext) {\n      context.clearRect(0, 0, contextSize, contextSize);\n    }\n\n    /** @type {import(\"../../extent.js\").Extent|undefined} */\n    let hitExtent;\n    if (this.renderBuffer_ !== undefined) {\n      hitExtent = createEmpty();\n      extendCoordinate(hitExtent, coordinate);\n      buffer(\n        hitExtent,\n        resolution * (this.renderBuffer_ + hitTolerance),\n        hitExtent,\n      );\n    }\n\n    const indexes = getPixelIndexArray(hitTolerance);\n\n    /** @type {import(\"../canvas.js\").BuilderType} */\n    let builderType;\n\n    /**\n     * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n     * @param {import('../../style/Style.js').DeclutterMode} declutterMode Declutter mode.\n     * @return {T|undefined} Callback result.\n     */\n    function featureCallback(feature, geometry, declutterMode) {\n      const imageData = context.getImageData(\n        0,\n        0,\n        contextSize,\n        contextSize,\n      ).data;\n      for (let i = 0, ii = indexes.length; i < ii; i++) {\n        if (imageData[indexes[i]] > 0) {\n          if (\n            !declutteredFeatures ||\n            declutterMode === 'none' ||\n            (builderType !== 'Image' && builderType !== 'Text') ||\n            declutteredFeatures.includes(feature)\n          ) {\n            const idx = (indexes[i] - 3) / 4;\n            const x = hitTolerance - (idx % contextSize);\n            const y = hitTolerance - ((idx / contextSize) | 0);\n            const result = callback(feature, geometry, x * x + y * y);\n            if (result) {\n              return result;\n            }\n          }\n          context.clearRect(0, 0, contextSize, contextSize);\n          break;\n        }\n      }\n      return undefined;\n    }\n\n    /** @type {Array<number>} */\n    const zs = Object.keys(this.executorsByZIndex_).map(Number);\n    zs.sort(ascending);\n\n    let i, j, executors, executor, result;\n    for (i = zs.length - 1; i >= 0; --i) {\n      const zIndexKey = zs[i].toString();\n      executors = this.executorsByZIndex_[zIndexKey];\n      for (j = ALL.length - 1; j >= 0; --j) {\n        builderType = ALL[j];\n        executor = executors[builderType];\n        if (executor !== undefined) {\n          result = executor.executeHitDetection(\n            context,\n            transform,\n            rotation,\n            featureCallback,\n            hitExtent,\n          );\n          if (result) {\n            return result;\n          }\n        }\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @return {Array<number>|null} Clip coordinates.\n   */\n  getClipCoords(transform) {\n    const maxExtent = this.maxExtent_;\n    if (!maxExtent) {\n      return null;\n    }\n    const minX = maxExtent[0];\n    const minY = maxExtent[1];\n    const maxX = maxExtent[2];\n    const maxY = maxExtent[3];\n    const flatClipCoords = [minX, minY, minX, maxY, maxX, maxY, maxX, minY];\n    transform2D(flatClipCoords, 0, 8, 2, transform, flatClipCoords);\n    return flatClipCoords;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return isEmpty(this.executorsByZIndex_);\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} targetContext Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scale of the context.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {boolean} snapToPixel Snap point symbols and test to integer pixel.\n   * @param {Array<import(\"../canvas.js\").BuilderType>} [builderTypes] Ordered replay types to replay.\n   *     Default is {@link module:ol/render/replay~ALL}\n   * @param {import(\"rbush\").default<import('./Executor.js').DeclutterEntry>|null} [declutterTree] Declutter tree.\n   *     When set to null, no decluttering is done, even when the executor group has a `ZIndexContext`.\n   */\n  execute(\n    targetContext,\n    scaledCanvasSize,\n    transform,\n    viewRotation,\n    snapToPixel,\n    builderTypes,\n    declutterTree,\n  ) {\n    const zs = Object.keys(this.executorsByZIndex_).map(Number);\n    zs.sort(declutterTree ? descending : ascending);\n\n    builderTypes = builderTypes ? builderTypes : ALL;\n    const maxBuilderTypes = ALL.length;\n    for (let i = 0, ii = zs.length; i < ii; ++i) {\n      const zIndexKey = zs[i].toString();\n      const replays = this.executorsByZIndex_[zIndexKey];\n      for (let j = 0, jj = builderTypes.length; j < jj; ++j) {\n        const builderType = builderTypes[j];\n        const replay = replays[builderType];\n        if (replay !== undefined) {\n          const zIndexContext =\n            declutterTree === null ? undefined : replay.getZIndexContext();\n          const context = zIndexContext\n            ? zIndexContext.getContext()\n            : targetContext;\n          const requireClip =\n            this.maxExtent_ &&\n            builderType !== 'Image' &&\n            builderType !== 'Text';\n          if (requireClip) {\n            context.save();\n            // setup clipping so that the parts of over-simplified geometries are not\n            // visible outside the current extent when panning\n            this.clip(context, transform);\n          }\n          if (\n            !zIndexContext ||\n            builderType === 'Text' ||\n            builderType === 'Image'\n          ) {\n            replay.execute(\n              context,\n              scaledCanvasSize,\n              transform,\n              viewRotation,\n              snapToPixel,\n              declutterTree,\n            );\n          } else {\n            zIndexContext.pushFunction((context) =>\n              replay.execute(\n                context,\n                scaledCanvasSize,\n                transform,\n                viewRotation,\n                snapToPixel,\n                declutterTree,\n              ),\n            );\n          }\n          if (requireClip) {\n            context.restore();\n          }\n          if (zIndexContext) {\n            zIndexContext.offset();\n            const index = zs[i] * maxBuilderTypes + j;\n            if (!this.deferredZIndexContexts_[index]) {\n              this.deferredZIndexContexts_[index] = [];\n            }\n            this.deferredZIndexContexts_[index].push(zIndexContext);\n          }\n        }\n      }\n    }\n\n    this.renderedContext_ = targetContext;\n  }\n\n  getDeferredZIndexContexts() {\n    return this.deferredZIndexContexts_;\n  }\n\n  getRenderedContext() {\n    return this.renderedContext_;\n  }\n\n  renderDeferred() {\n    const deferredZIndexContexts = this.deferredZIndexContexts_;\n    const zs = Object.keys(deferredZIndexContexts).map(Number).sort(ascending);\n    for (let i = 0, ii = zs.length; i < ii; ++i) {\n      deferredZIndexContexts[zs[i]].forEach((zIndexContext) => {\n        zIndexContext.draw(this.renderedContext_); // FIXME Pass clip to replay for temporarily enabling clip\n        zIndexContext.clear();\n      });\n      deferredZIndexContexts[zs[i]].length = 0;\n    }\n  }\n}\n\n/**\n * This cache is used to store arrays of indexes for calculated pixel circles\n * to increase performance.\n * It is a static property to allow each Replaygroup to access it.\n * @type {Object<number, Array<number>>}\n */\nconst circlePixelIndexArrayCache = {};\n\n/**\n * This methods creates an array with indexes of all pixels within a circle,\n * ordered by how close they are to the center.\n * A cache is used to increase performance.\n * @param {number} radius Radius.\n * @return {Array<number>} An array with indexes within a circle.\n */\nexport function getPixelIndexArray(radius) {\n  if (circlePixelIndexArrayCache[radius] !== undefined) {\n    return circlePixelIndexArrayCache[radius];\n  }\n\n  const size = radius * 2 + 1;\n  const maxDistanceSq = radius * radius;\n  const distances = new Array(maxDistanceSq + 1);\n  for (let i = 0; i <= radius; ++i) {\n    for (let j = 0; j <= radius; ++j) {\n      const distanceSq = i * i + j * j;\n      if (distanceSq > maxDistanceSq) {\n        break;\n      }\n      let distance = distances[distanceSq];\n      if (!distance) {\n        distance = [];\n        distances[distanceSq] = distance;\n      }\n      distance.push(((radius + i) * size + (radius + j)) * 4 + 3);\n      if (i > 0) {\n        distance.push(((radius - i) * size + (radius + j)) * 4 + 3);\n      }\n      if (j > 0) {\n        distance.push(((radius + i) * size + (radius - j)) * 4 + 3);\n        if (i > 0) {\n          distance.push(((radius - i) * size + (radius - j)) * 4 + 3);\n        }\n      }\n    }\n  }\n\n  const pixelIndex = [];\n  for (let i = 0, ii = distances.length; i < ii; ++i) {\n    if (distances[i]) {\n      pixelIndex.push(...distances[i]);\n    }\n  }\n\n  circlePixelIndexArrayCache[radius] = pixelIndex;\n  return pixelIndex;\n}\n\nexport default ExecutorGroup;\n","/**\n * @module ol/style/Icon\n */\nimport ImageState from '../ImageState.js';\nimport {assert} from '../asserts.js';\nimport {asArray} from '../color.js';\nimport EventType from '../events/EventType.js';\nimport {getUid} from '../util.js';\nimport {get as getIconImage} from './IconImage.js';\nimport ImageStyle from './Image.js';\n\n/**\n * @typedef {'fraction' | 'pixels'} IconAnchorUnits\n * Anchor unit can be either a fraction of the icon size or in pixels.\n */\n\n/**\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} IconOrigin\n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.\n */\n\n/**\n * @typedef {Object} Options\n * @property {Array<number>} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {IconOrigin} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {IconAnchorUnits} [anchorXUnits='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {IconAnchorUnits} [anchorYUnits='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {HTMLImageElement|HTMLCanvasElement|ImageBitmap} [img] Image object for the icon.\n * @property {Array<number>} [displacement=[0, 0]] Displacement of the icon in pixels.\n * Positive values will shift the icon right and up.\n * @property {number} [opacity=1] Opacity of the icon.\n * @property {number} [width] The width of the icon in pixels. This can't be used together with `scale`.\n * @property {number} [height] The height of the icon in pixels. This can't be used together with `scale`.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {Array<number>} [offset=[0, 0]] Offset which, together with `size` and `offsetOrigin`, defines the\n * sub-rectangle to use from the original (sprite) image.\n * @property {IconOrigin} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"../size.js\").Size} [size] Icon size in pixels. Used together with `offset` to define the\n * sub-rectangle to use from the original (sprite) image.\n * @property {string} [src] Image source URI.\n * @property {import(\"./Style.js\").DeclutterMode} [declutterMode] Declutter mode.\n */\n\n/**\n * @param {number} width The width.\n * @param {number} height The height.\n * @param {number|undefined} wantedWidth The wanted width.\n * @param {number|undefined} wantedHeight The wanted height.\n * @return {number|Array<number>} The scale.\n */\nfunction calculateScale(width, height, wantedWidth, wantedHeight) {\n  if (wantedWidth !== undefined && wantedHeight !== undefined) {\n    return [wantedWidth / width, wantedHeight / height];\n  }\n  if (wantedWidth !== undefined) {\n    return wantedWidth / width;\n  }\n  if (wantedHeight !== undefined) {\n    return wantedHeight / height;\n  }\n  return 1;\n}\n\n/**\n * @classdesc\n * Set icon style for vector features.\n * @api\n */\nclass Icon extends ImageStyle {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @type {number}\n     */\n    const opacity = options.opacity !== undefined ? options.opacity : 1;\n\n    /**\n     * @type {number}\n     */\n    const rotation = options.rotation !== undefined ? options.rotation : 0;\n\n    /**\n     * @type {number|import(\"../size.js\").Size}\n     */\n    const scale = options.scale !== undefined ? options.scale : 1;\n\n    /**\n     * @type {boolean}\n     */\n    const rotateWithView =\n      options.rotateWithView !== undefined ? options.rotateWithView : false;\n\n    super({\n      opacity: opacity,\n      rotation: rotation,\n      scale: scale,\n      displacement:\n        options.displacement !== undefined ? options.displacement : [0, 0],\n      rotateWithView: rotateWithView,\n      declutterMode: options.declutterMode,\n    });\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.anchor_ = options.anchor !== undefined ? options.anchor : [0.5, 0.5];\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.normalizedAnchor_ = null;\n\n    /**\n     * @private\n     * @type {IconOrigin}\n     */\n    this.anchorOrigin_ =\n      options.anchorOrigin !== undefined ? options.anchorOrigin : 'top-left';\n\n    /**\n     * @private\n     * @type {IconAnchorUnits}\n     */\n    this.anchorXUnits_ =\n      options.anchorXUnits !== undefined ? options.anchorXUnits : 'fraction';\n\n    /**\n     * @private\n     * @type {IconAnchorUnits}\n     */\n    this.anchorYUnits_ =\n      options.anchorYUnits !== undefined ? options.anchorYUnits : 'fraction';\n\n    /**\n     * @private\n     * @type {?string}\n     */\n    this.crossOrigin_ =\n      options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n    const image = options.img !== undefined ? options.img : null;\n\n    let cacheKey = options.src;\n\n    assert(\n      !(cacheKey !== undefined && image),\n      '`image` and `src` cannot be provided at the same time',\n    );\n\n    if ((cacheKey === undefined || cacheKey.length === 0) && image) {\n      cacheKey = /** @type {HTMLImageElement} */ (image).src || getUid(image);\n    }\n    assert(\n      cacheKey !== undefined && cacheKey.length > 0,\n      'A defined and non-empty `src` or `image` must be provided',\n    );\n\n    assert(\n      !(\n        (options.width !== undefined || options.height !== undefined) &&\n        options.scale !== undefined\n      ),\n      '`width` or `height` cannot be provided together with `scale`',\n    );\n\n    let imageState;\n    if (options.src !== undefined) {\n      imageState = ImageState.IDLE;\n    } else if (image !== undefined) {\n      if ('complete' in image) {\n        if (image.complete) {\n          imageState = image.src ? ImageState.LOADED : ImageState.IDLE;\n        } else {\n          imageState = ImageState.LOADING;\n        }\n      } else {\n        imageState = ImageState.LOADED;\n      }\n    }\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color}\n     */\n    this.color_ = options.color !== undefined ? asArray(options.color) : null;\n\n    /**\n     * @private\n     * @type {import(\"./IconImage.js\").default}\n     */\n    this.iconImage_ = getIconImage(\n      image,\n      /** @type {string} */ (cacheKey),\n      this.crossOrigin_,\n      imageState,\n      this.color_,\n    );\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.offset_ = options.offset !== undefined ? options.offset : [0, 0];\n    /**\n     * @private\n     * @type {IconOrigin}\n     */\n    this.offsetOrigin_ =\n      options.offsetOrigin !== undefined ? options.offsetOrigin : 'top-left';\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.origin_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.size_ = options.size !== undefined ? options.size : null;\n\n    /**\n     * @private\n     */\n    this.initialOptions_;\n\n    /**\n     * Calculate the scale if width or height were given.\n     */\n    if (options.width !== undefined || options.height !== undefined) {\n      let width, height;\n      if (options.size) {\n        [width, height] = options.size;\n      } else {\n        const image = this.getImage(1);\n        if (image.width && image.height) {\n          width = image.width;\n          height = image.height;\n        } else if (image instanceof HTMLImageElement) {\n          this.initialOptions_ = options;\n          const onload = () => {\n            this.unlistenImageChange(onload);\n            if (!this.initialOptions_) {\n              return;\n            }\n            const imageSize = this.iconImage_.getSize();\n            this.setScale(\n              calculateScale(\n                imageSize[0],\n                imageSize[1],\n                options.width,\n                options.height,\n              ),\n            );\n          };\n          this.listenImageChange(onload);\n          return;\n        }\n      }\n      if (width !== undefined) {\n        this.setScale(\n          calculateScale(width, height, options.width, options.height),\n        );\n      }\n    }\n  }\n\n  /**\n   * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.\n   * @return {Icon} The cloned style.\n   * @api\n   * @override\n   */\n  clone() {\n    let scale, width, height;\n    if (this.initialOptions_) {\n      width = this.initialOptions_.width;\n      height = this.initialOptions_.height;\n    } else {\n      scale = this.getScale();\n      scale = Array.isArray(scale) ? scale.slice() : scale;\n    }\n    return new Icon({\n      anchor: this.anchor_.slice(),\n      anchorOrigin: this.anchorOrigin_,\n      anchorXUnits: this.anchorXUnits_,\n      anchorYUnits: this.anchorYUnits_,\n      color:\n        this.color_ && this.color_.slice\n          ? this.color_.slice()\n          : this.color_ || undefined,\n      crossOrigin: this.crossOrigin_,\n      offset: this.offset_.slice(),\n      offsetOrigin: this.offsetOrigin_,\n      opacity: this.getOpacity(),\n      rotateWithView: this.getRotateWithView(),\n      rotation: this.getRotation(),\n      scale,\n      width,\n      height,\n      size: this.size_ !== null ? this.size_.slice() : undefined,\n      src: this.getSrc(),\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n  }\n\n  /**\n   * Get the anchor point in pixels. The anchor determines the center point for the\n   * symbolizer.\n   * @return {Array<number>} Anchor.\n   * @api\n   * @override\n   */\n  getAnchor() {\n    let anchor = this.normalizedAnchor_;\n    if (!anchor) {\n      anchor = this.anchor_;\n      const size = this.getSize();\n      if (\n        this.anchorXUnits_ == 'fraction' ||\n        this.anchorYUnits_ == 'fraction'\n      ) {\n        if (!size) {\n          return null;\n        }\n        anchor = this.anchor_.slice();\n        if (this.anchorXUnits_ == 'fraction') {\n          anchor[0] *= size[0];\n        }\n        if (this.anchorYUnits_ == 'fraction') {\n          anchor[1] *= size[1];\n        }\n      }\n\n      if (this.anchorOrigin_ != 'top-left') {\n        if (!size) {\n          return null;\n        }\n        if (anchor === this.anchor_) {\n          anchor = this.anchor_.slice();\n        }\n        if (\n          this.anchorOrigin_ == 'top-right' ||\n          this.anchorOrigin_ == 'bottom-right'\n        ) {\n          anchor[0] = -anchor[0] + size[0];\n        }\n        if (\n          this.anchorOrigin_ == 'bottom-left' ||\n          this.anchorOrigin_ == 'bottom-right'\n        ) {\n          anchor[1] = -anchor[1] + size[1];\n        }\n      }\n      this.normalizedAnchor_ = anchor;\n    }\n    const displacement = this.getDisplacement();\n    const scale = this.getScaleArray();\n    // anchor is scaled by renderer but displacement should not be scaled\n    // so divide by scale here\n    return [\n      anchor[0] - displacement[0] / scale[0],\n      anchor[1] + displacement[1] / scale[1],\n    ];\n  }\n\n  /**\n   * Set the anchor point. The anchor determines the center point for the\n   * symbolizer.\n   *\n   * @param {Array<number>} anchor Anchor.\n   * @api\n   */\n  setAnchor(anchor) {\n    this.anchor_ = anchor;\n    this.normalizedAnchor_ = null;\n  }\n\n  /**\n   * Get the icon color.\n   * @return {import(\"../color.js\").Color} Color.\n   * @api\n   */\n  getColor() {\n    return this.color_;\n  }\n\n  /**\n   * Get the image icon.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {HTMLImageElement|HTMLCanvasElement|ImageBitmap} Image or Canvas element. If the Icon\n   * style was configured with `src` or with a not let loaded `img`, an `ImageBitmap` will be returned.\n   * @api\n   * @override\n   */\n  getImage(pixelRatio) {\n    return this.iconImage_.getImage(pixelRatio);\n  }\n\n  /**\n   * Get the pixel ratio.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} The pixel ratio of the image.\n   * @api\n   * @override\n   */\n  getPixelRatio(pixelRatio) {\n    return this.iconImage_.getPixelRatio(pixelRatio);\n  }\n\n  /**\n   * @return {import(\"../size.js\").Size} Image size.\n   * @override\n   */\n  getImageSize() {\n    return this.iconImage_.getSize();\n  }\n\n  /**\n   * @return {import(\"../ImageState.js\").default} Image state.\n   * @override\n   */\n  getImageState() {\n    return this.iconImage_.getImageState();\n  }\n\n  /**\n   * @return {HTMLImageElement|HTMLCanvasElement|ImageBitmap} Image element.\n   * @override\n   */\n  getHitDetectionImage() {\n    return this.iconImage_.getHitDetectionImage();\n  }\n\n  /**\n   * Get the origin of the symbolizer.\n   * @return {Array<number>} Origin.\n   * @api\n   * @override\n   */\n  getOrigin() {\n    if (this.origin_) {\n      return this.origin_;\n    }\n    let offset = this.offset_;\n\n    if (this.offsetOrigin_ != 'top-left') {\n      const size = this.getSize();\n      const iconImageSize = this.iconImage_.getSize();\n      if (!size || !iconImageSize) {\n        return null;\n      }\n      offset = offset.slice();\n      if (\n        this.offsetOrigin_ == 'top-right' ||\n        this.offsetOrigin_ == 'bottom-right'\n      ) {\n        offset[0] = iconImageSize[0] - size[0] - offset[0];\n      }\n      if (\n        this.offsetOrigin_ == 'bottom-left' ||\n        this.offsetOrigin_ == 'bottom-right'\n      ) {\n        offset[1] = iconImageSize[1] - size[1] - offset[1];\n      }\n    }\n    this.origin_ = offset;\n    return this.origin_;\n  }\n\n  /**\n   * Get the image URL.\n   * @return {string|undefined} Image src.\n   * @api\n   */\n  getSrc() {\n    return this.iconImage_.getSrc();\n  }\n\n  /**\n   * Get the size of the icon (in pixels).\n   * @return {import(\"../size.js\").Size} Image size.\n   * @api\n   * @override\n   */\n  getSize() {\n    return !this.size_ ? this.iconImage_.getSize() : this.size_;\n  }\n\n  /**\n   * Get the width of the icon (in pixels). Will return undefined when the icon image is not yet loaded.\n   * @return {number} Icon width (in pixels).\n   * @api\n   */\n  getWidth() {\n    const scale = this.getScaleArray();\n    if (this.size_) {\n      return this.size_[0] * scale[0];\n    }\n    if (this.iconImage_.getImageState() == ImageState.LOADED) {\n      return this.iconImage_.getSize()[0] * scale[0];\n    }\n    return undefined;\n  }\n\n  /**\n   * Get the height of the icon (in pixels). Will return undefined when the icon image is not yet loaded.\n   * @return {number} Icon height (in pixels).\n   * @api\n   */\n  getHeight() {\n    const scale = this.getScaleArray();\n    if (this.size_) {\n      return this.size_[1] * scale[1];\n    }\n    if (this.iconImage_.getImageState() == ImageState.LOADED) {\n      return this.iconImage_.getSize()[1] * scale[1];\n    }\n    return undefined;\n  }\n\n  /**\n   * Set the scale.\n   *\n   * @param {number|import(\"../size.js\").Size} scale Scale.\n   * @api\n   * @override\n   */\n  setScale(scale) {\n    delete this.initialOptions_;\n    super.setScale(scale);\n  }\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  listenImageChange(listener) {\n    this.iconImage_.addEventListener(EventType.CHANGE, listener);\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * When rendering a feature with an icon style, the vector renderer will\n   * automatically call this method. However, you might want to call this\n   * method yourself for preloading or other purposes.\n   * @api\n   * @override\n   */\n  load() {\n    this.iconImage_.load();\n  }\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  unlistenImageChange(listener) {\n    this.iconImage_.removeEventListener(EventType.CHANGE, listener);\n  }\n\n  /**\n   * @override\n   */\n  ready() {\n    return this.iconImage_.ready();\n  }\n}\n\nexport default Icon;\n","/**\n * @module ol/render/canvas/hitdetect\n */\n\nimport {ascending} from '../../array.js';\nimport {createCanvasContext2D} from '../../dom.js';\nimport {intersects} from '../../extent.js';\nimport {clamp} from '../../math.js';\nimport {\n  getTransformFromProjections,\n  getUserProjection,\n  toUserExtent,\n} from '../../proj.js';\nimport {Icon} from '../../style.js';\nimport CanvasImmediateRenderer from './Immediate.js';\n\nexport const HIT_DETECT_RESOLUTION = 0.5;\n\n/**\n * @param {import(\"../../size.js\").Size} size Canvas size in css pixels.\n * @param {Array<import(\"../../transform.js\").Transform>} transforms Transforms\n * for rendering features to all worlds of the viewport, from coordinates to css\n * pixels.\n * @param {Array<import(\"../../Feature.js\").FeatureLike>} features\n * Features to consider for hit detection.\n * @param {import(\"../../style/Style.js\").StyleFunction|undefined} styleFunction\n * Layer style function.\n * @param {import(\"../../extent.js\").Extent} extent Extent in render projection.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {number} [squaredTolerance] Squared tolerance.\n * @param {import(\"../../proj/Projection.js\").default} [projection] Render projection.\n * @return {ImageData} Hit detection image data.\n */\nexport function createHitDetectionImageData(\n  size,\n  transforms,\n  features,\n  styleFunction,\n  extent,\n  resolution,\n  rotation,\n  squaredTolerance,\n  projection,\n) {\n  const userExtent = projection ? toUserExtent(extent, projection) : extent;\n  const width = size[0] * HIT_DETECT_RESOLUTION;\n  const height = size[1] * HIT_DETECT_RESOLUTION;\n  const context = createCanvasContext2D(width, height);\n  context.imageSmoothingEnabled = false;\n  const canvas = context.canvas;\n  const renderer = new CanvasImmediateRenderer(\n    context,\n    HIT_DETECT_RESOLUTION,\n    extent,\n    null,\n    rotation,\n    squaredTolerance,\n    projection\n      ? getTransformFromProjections(getUserProjection(), projection)\n      : null,\n  );\n  const featureCount = features.length;\n  // Stretch hit detection index to use the whole available color range\n  const indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);\n  const featuresByZIndex = {};\n  for (let i = 1; i <= featureCount; ++i) {\n    const feature = features[i - 1];\n    const featureStyleFunction = feature.getStyleFunction() || styleFunction;\n    if (!featureStyleFunction) {\n      continue;\n    }\n    let styles = featureStyleFunction(feature, resolution);\n    if (!styles) {\n      continue;\n    }\n    if (!Array.isArray(styles)) {\n      styles = [styles];\n    }\n    const index = i * indexFactor;\n    const color = index.toString(16).padStart(7, '#00000');\n    for (let j = 0, jj = styles.length; j < jj; ++j) {\n      const originalStyle = styles[j];\n      const geometry = originalStyle.getGeometryFunction()(feature);\n      if (!geometry || !intersects(userExtent, geometry.getExtent())) {\n        continue;\n      }\n      const style = originalStyle.clone();\n      const fill = style.getFill();\n      if (fill) {\n        fill.setColor(color);\n      }\n      const stroke = style.getStroke();\n      if (stroke) {\n        stroke.setColor(color);\n        stroke.setLineDash(null);\n      }\n      style.setText(undefined);\n      const image = originalStyle.getImage();\n      if (image) {\n        const imgSize = image.getImageSize();\n        if (!imgSize) {\n          continue;\n        }\n\n        const imgContext = createCanvasContext2D(\n          imgSize[0],\n          imgSize[1],\n          undefined,\n          {alpha: false},\n        );\n        const img = imgContext.canvas;\n        imgContext.fillStyle = color;\n        imgContext.fillRect(0, 0, img.width, img.height);\n        style.setImage(\n          new Icon({\n            img: img,\n            anchor: image.getAnchor(),\n            anchorXUnits: 'pixels',\n            anchorYUnits: 'pixels',\n            offset: image.getOrigin(),\n            opacity: 1,\n            size: image.getSize(),\n            scale: image.getScale(),\n            rotation: image.getRotation(),\n            rotateWithView: image.getRotateWithView(),\n          }),\n        );\n      }\n      const zIndex = style.getZIndex() || 0;\n      let byGeometryType = featuresByZIndex[zIndex];\n      if (!byGeometryType) {\n        byGeometryType = {};\n        featuresByZIndex[zIndex] = byGeometryType;\n        byGeometryType['Polygon'] = [];\n        byGeometryType['Circle'] = [];\n        byGeometryType['LineString'] = [];\n        byGeometryType['Point'] = [];\n      }\n      const type = geometry.getType();\n      if (type === 'GeometryCollection') {\n        const geometries =\n          /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (\n            geometry\n          ).getGeometriesArrayRecursive();\n        for (let i = 0, ii = geometries.length; i < ii; ++i) {\n          const geometry = geometries[i];\n          byGeometryType[geometry.getType().replace('Multi', '')].push(\n            geometry,\n            style,\n          );\n        }\n      } else {\n        byGeometryType[type.replace('Multi', '')].push(geometry, style);\n      }\n    }\n  }\n\n  const zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(ascending);\n  for (let i = 0, ii = zIndexKeys.length; i < ii; ++i) {\n    const byGeometryType = featuresByZIndex[zIndexKeys[i]];\n    for (const type in byGeometryType) {\n      const geomAndStyle = byGeometryType[type];\n      for (let j = 0, jj = geomAndStyle.length; j < jj; j += 2) {\n        renderer.setStyle(geomAndStyle[j + 1]);\n        for (let k = 0, kk = transforms.length; k < kk; ++k) {\n          renderer.setTransform(transforms[k]);\n          renderer.drawGeometry(geomAndStyle[j]);\n        }\n      }\n    }\n  }\n  return context.getImageData(0, 0, canvas.width, canvas.height);\n}\n\n/**\n * @param {import(\"../../pixel\").Pixel} pixel Pixel coordinate on the hit\n * detection canvas in css pixels.\n * @param {Array<F>} features Features. Has to\n * match the `features` array that was passed to `createHitDetectionImageData()`.\n * @param {ImageData} imageData Hit detection image data generated by\n * `createHitDetectionImageData()`.\n * @return {Array<F>} Features.\n * @template {import(\"../../Feature.js\").FeatureLike} F\n */\nexport function hitDetect(pixel, features, imageData) {\n  /** @type {Array<F>} */\n  const resultFeatures = [];\n  if (imageData) {\n    const x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);\n    const y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);\n    // The pixel coordinate is clamped down to the hit-detect canvas' size to account\n    // for browsers returning coordinates slightly larger than the actual canvas size\n    // due to a non-integer pixel ratio.\n    const index =\n      (clamp(x, 0, imageData.width - 1) +\n        clamp(y, 0, imageData.height - 1) * imageData.width) *\n      4;\n    const r = imageData.data[index];\n    const g = imageData.data[index + 1];\n    const b = imageData.data[index + 2];\n    const i = b + 256 * (g + 256 * r);\n    const indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);\n    if (i && i % indexFactor === 0) {\n      resultFeatures.push(features[i / indexFactor - 1]);\n    }\n  }\n  return resultFeatures;\n}\n","/**\n * @module ol/render/Event\n */\n\nimport Event from '../events/Event.js';\n\nclass RenderEvent extends Event {\n  /**\n   * @param {import(\"./EventType.js\").default} type Type.\n   * @param {import(\"../transform.js\").Transform} [inversePixelTransform] Transform for\n   *     CSS pixels to rendered pixels.\n   * @param {import(\"../Map.js\").FrameState} [frameState] Frame state.\n   * @param {?(CanvasRenderingContext2D|WebGLRenderingContext)} [context] Context.\n   */\n  constructor(type, inversePixelTransform, frameState, context) {\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`. Only available when a Canvas renderer is used, null otherwise.\n     * @type {import(\"../transform.js\").Transform|undefined}\n     * @api\n     */\n    this.inversePixelTransform = inversePixelTransform;\n\n    /**\n     * An object representing the current render frame state.\n     * @type {import(\"../Map.js\").FrameState|undefined}\n     * @api\n     */\n    this.frameState = frameState;\n\n    /**\n     * Canvas context. Not available when the event is dispatched by the map. For Canvas 2D layers,\n     * the context will be the 2D rendering context.  For WebGL layers, the context will be the WebGL\n     * context.\n     * @type {CanvasRenderingContext2D|WebGLRenderingContext|undefined}\n     * @api\n     */\n    this.context = context;\n  }\n}\n\nexport default RenderEvent;\n","/**\n * @module ol/renderer/Layer\n */\nimport ImageState from '../ImageState.js';\nimport Observable from '../Observable.js';\nimport EventType from '../events/EventType.js';\nimport {abstract} from '../util.js';\n\nconst maxStaleKeys = 5;\n\n/**\n * @template {import(\"../layer/Layer.js\").default} LayerType\n */\nclass LayerRenderer extends Observable {\n  /**\n   * @param {LayerType} layer Layer.\n   */\n  constructor(layer) {\n    super();\n\n    /**\n     * The renderer is initialized and ready to render.\n     * @type {boolean}\n     */\n    this.ready = true;\n\n    /** @private */\n    this.boundHandleImageChange_ = this.handleImageChange_.bind(this);\n\n    /**\n     * @private\n     * @type {LayerType}\n     */\n    this.layer_ = layer;\n\n    /**\n     * @type {Array<string>}\n     * @private\n     */\n    this.staleKeys_ = new Array();\n\n    /**\n     * @type {number}\n     * @protected\n     */\n    this.maxStaleKeys = maxStaleKeys;\n  }\n\n  /**\n   * @return {Array<string>} Get the list of stale keys.\n   */\n  getStaleKeys() {\n    return this.staleKeys_;\n  }\n\n  /**\n   * @param {string} key The new stale key.\n   */\n  prependStaleKey(key) {\n    this.staleKeys_.unshift(key);\n    if (this.staleKeys_.length > this.maxStaleKeys) {\n      this.staleKeys_.length = this.maxStaleKeys;\n    }\n  }\n\n  /**\n   * Asynchronous layer level hit detection.\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with\n   * an array of features.\n   */\n  getFeatures(pixel) {\n    return abstract();\n  }\n\n  /**\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   */\n  getData(pixel) {\n    return null;\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @abstract\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   */\n  prepareFrame(frameState) {\n    return abstract();\n  }\n\n  /**\n   * Render the layer.\n   * @abstract\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement|null} target Target that may be used to render content to.\n   * @return {HTMLElement|null} The rendered element.\n   */\n  renderFrame(frameState, target) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"./vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"./Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    return undefined;\n  }\n\n  /**\n   * @return {LayerType} Layer.\n   */\n  getLayer() {\n    return this.layer_;\n  }\n\n  /**\n   * Perform action necessary to get the layer rendered after new fonts have loaded\n   * @abstract\n   */\n  handleFontsChanged() {}\n\n  /**\n   * Handle changes in image state.\n   * @param {import(\"../events/Event.js\").default} event Image change event.\n   * @private\n   */\n  handleImageChange_(event) {\n    const image = /** @type {import(\"../Image.js\").default} */ (event.target);\n    if (\n      image.getState() === ImageState.LOADED ||\n      image.getState() === ImageState.ERROR\n    ) {\n      this.renderIfReadyAndVisible();\n    }\n  }\n\n  /**\n   * Load the image if not already loaded, and register the image change\n   * listener if needed.\n   * @param {import(\"../Image.js\").default} image Image.\n   * @return {boolean} `true` if the image is already loaded, `false` otherwise.\n   * @protected\n   */\n  loadImage(image) {\n    let imageState = image.getState();\n    if (imageState != ImageState.LOADED && imageState != ImageState.ERROR) {\n      image.addEventListener(EventType.CHANGE, this.boundHandleImageChange_);\n    }\n    if (imageState == ImageState.IDLE) {\n      image.load();\n      imageState = image.getState();\n    }\n    return imageState == ImageState.LOADED;\n  }\n\n  /**\n   * @protected\n   */\n  renderIfReadyAndVisible() {\n    const layer = this.getLayer();\n    if (layer && layer.getVisible() && layer.getSourceState() === 'ready') {\n      layer.changed();\n    }\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeferred(frameState) {}\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    delete this.layer_;\n    super.disposeInternal();\n  }\n}\n\nexport default LayerRenderer;\n","/**\n * @module ol/renderer/canvas/Layer\n */\nimport {equals} from '../../array.js';\nimport {asArray} from '../../color.js';\nimport {createCanvasContext2D} from '../../dom.js';\nimport {\n  getBottomLeft,\n  getBottomRight,\n  getHeight,\n  getTopLeft,\n  getTopRight,\n  getWidth,\n} from '../../extent.js';\nimport RenderEvent from '../../render/Event.js';\nimport RenderEventType from '../../render/EventType.js';\nimport ZIndexContext from '../../render/canvas/ZIndexContext.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n  create as createTransform,\n  makeInverse,\n  toString as toTransformString,\n} from '../../transform.js';\nimport LayerRenderer from '../Layer.js';\n\n/**\n * @type {Array<HTMLCanvasElement>}\n */\nexport const canvasPool = [];\n\n/**\n * @type {CanvasRenderingContext2D}\n */\nlet pixelContext = null;\n\nfunction createPixelContext() {\n  pixelContext = createCanvasContext2D(1, 1, undefined, {\n    willReadFrequently: true,\n  });\n}\n\n/**\n * @abstract\n * @template {import(\"../../layer/Layer.js\").default} LayerType\n * @extends {LayerRenderer<LayerType>}\n */\nclass CanvasLayerRenderer extends LayerRenderer {\n  /**\n   * @param {LayerType} layer Layer.\n   */\n  constructor(layer) {\n    super(layer);\n\n    /**\n     * @protected\n     * @type {HTMLElement}\n     */\n    this.container = null;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.renderedResolution;\n\n    /**\n     * A temporary transform.  The values in this transform should only be used in a\n     * function that sets the values.\n     * @protected\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.tempTransform = createTransform();\n\n    /**\n     * The transform for rendered pixels to viewport CSS pixels.  This transform must\n     * be set when rendering a frame and may be used by other functions after rendering.\n     * @protected\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.pixelTransform = createTransform();\n\n    /**\n     * The transform for viewport CSS pixels to rendered pixels.  This transform must\n     * be set when rendering a frame and may be used by other functions after rendering.\n     * @protected\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.inversePixelTransform = createTransform();\n\n    /**\n     * @type {CanvasRenderingContext2D}\n     */\n    this.context = null;\n\n    /**\n     * @private\n     * @type {ZIndexContext}\n     */\n    this.deferredContext_ = null;\n\n    /**\n     * @type {boolean}\n     */\n    this.containerReused = false;\n\n    /**\n     * @protected\n     * @type {import(\"../../Map.js\").FrameState|null}\n     */\n    this.frameState = null;\n  }\n\n  /**\n   * @param {import('../../DataTile.js').ImageLike} image Image.\n   * @param {number} col The column index.\n   * @param {number} row The row index.\n   * @return {Uint8ClampedArray|null} The image data.\n   */\n  getImageData(image, col, row) {\n    if (!pixelContext) {\n      createPixelContext();\n    }\n    pixelContext.clearRect(0, 0, 1, 1);\n\n    let data;\n    try {\n      pixelContext.drawImage(image, col, row, 1, 1, 0, 0, 1, 1);\n      data = pixelContext.getImageData(0, 0, 1, 1).data;\n    } catch {\n      pixelContext = null;\n      return null;\n    }\n    return data;\n  }\n\n  /**\n   * @param {import('../../Map.js').FrameState} frameState Frame state.\n   * @return {string} Background color.\n   */\n  getBackground(frameState) {\n    const layer = this.getLayer();\n    let background = layer.getBackground();\n    if (typeof background === 'function') {\n      background = background(frameState.viewState.resolution);\n    }\n    return background || undefined;\n  }\n\n  /**\n   * Get a rendering container from an existing target, if compatible.\n   * @param {HTMLElement} target Potential render target.\n   * @param {string} transform CSS Transform.\n   * @param {string} [backgroundColor] Background color.\n   */\n  useContainer(target, transform, backgroundColor) {\n    const layerClassName = this.getLayer().getClassName();\n    let container, context;\n    if (\n      target &&\n      target.className === layerClassName &&\n      (!backgroundColor ||\n        (target &&\n          target.style.backgroundColor &&\n          equals(\n            asArray(target.style.backgroundColor),\n            asArray(backgroundColor),\n          )))\n    ) {\n      const canvas = target.firstElementChild;\n      if (canvas instanceof HTMLCanvasElement) {\n        context = canvas.getContext('2d');\n      }\n    }\n    if (context && context.canvas.style.transform === transform) {\n      // Container of the previous layer renderer can be used.\n      this.container = target;\n      this.context = context;\n      this.containerReused = true;\n    } else if (this.containerReused) {\n      // Previously reused container cannot be used any more.\n      this.container = null;\n      this.context = null;\n      this.containerReused = false;\n    } else if (this.container) {\n      this.container.style.backgroundColor = null;\n    }\n    if (!this.container) {\n      container = document.createElement('div');\n      container.className = layerClassName;\n      let style = container.style;\n      style.position = 'absolute';\n      style.width = '100%';\n      style.height = '100%';\n      context = createCanvasContext2D();\n      const canvas = context.canvas;\n      container.appendChild(canvas);\n      style = canvas.style;\n      style.position = 'absolute';\n      style.left = '0';\n      style.transformOrigin = 'top left';\n      this.container = container;\n      this.context = context;\n    }\n    if (\n      !this.containerReused &&\n      backgroundColor &&\n      !this.container.style.backgroundColor\n    ) {\n      this.container.style.backgroundColor = backgroundColor;\n    }\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../extent.js\").Extent} extent Clip extent.\n   * @protected\n   */\n  clipUnrotated(context, frameState, extent) {\n    const topLeft = getTopLeft(extent);\n    const topRight = getTopRight(extent);\n    const bottomRight = getBottomRight(extent);\n    const bottomLeft = getBottomLeft(extent);\n\n    applyTransform(frameState.coordinateToPixelTransform, topLeft);\n    applyTransform(frameState.coordinateToPixelTransform, topRight);\n    applyTransform(frameState.coordinateToPixelTransform, bottomRight);\n    applyTransform(frameState.coordinateToPixelTransform, bottomLeft);\n\n    const inverted = this.inversePixelTransform;\n    applyTransform(inverted, topLeft);\n    applyTransform(inverted, topRight);\n    applyTransform(inverted, bottomRight);\n    applyTransform(inverted, bottomLeft);\n\n    context.save();\n    context.beginPath();\n    context.moveTo(Math.round(topLeft[0]), Math.round(topLeft[1]));\n    context.lineTo(Math.round(topRight[0]), Math.round(topRight[1]));\n    context.lineTo(Math.round(bottomRight[0]), Math.round(bottomRight[1]));\n    context.lineTo(Math.round(bottomLeft[0]), Math.round(bottomLeft[1]));\n    context.clip();\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target that may be used to render content to.\n   * @protected\n   */\n  prepareContainer(frameState, target) {\n    const extent = frameState.extent;\n    const resolution = frameState.viewState.resolution;\n    const rotation = frameState.viewState.rotation;\n    const pixelRatio = frameState.pixelRatio;\n    const width = Math.round((getWidth(extent) / resolution) * pixelRatio);\n    const height = Math.round((getHeight(extent) / resolution) * pixelRatio);\n    // set forward and inverse pixel transforms\n    composeTransform(\n      this.pixelTransform,\n      frameState.size[0] / 2,\n      frameState.size[1] / 2,\n      1 / pixelRatio,\n      1 / pixelRatio,\n      rotation,\n      -width / 2,\n      -height / 2,\n    );\n    makeInverse(this.inversePixelTransform, this.pixelTransform);\n\n    const canvasTransform = toTransformString(this.pixelTransform);\n    this.useContainer(target, canvasTransform, this.getBackground(frameState));\n\n    if (!this.containerReused) {\n      const canvas = this.context.canvas;\n      if (canvas.width != width || canvas.height != height) {\n        canvas.width = width;\n        canvas.height = height;\n      } else {\n        this.context.clearRect(0, 0, width, height);\n      }\n      if (canvasTransform !== canvas.style.transform) {\n        canvas.style.transform = canvasTransform;\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../../render/EventType.js\").default} type Event type.\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @private\n   */\n  dispatchRenderEvent_(type, context, frameState) {\n    const layer = this.getLayer();\n    if (layer.hasListener(type)) {\n      const event = new RenderEvent(\n        type,\n        this.inversePixelTransform,\n        frameState,\n        context,\n      );\n      layer.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  preRender(context, frameState) {\n    this.frameState = frameState;\n    if (frameState.declutter) {\n      return;\n    }\n    this.dispatchRenderEvent_(RenderEventType.PRERENDER, context, frameState);\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  postRender(context, frameState) {\n    if (frameState.declutter) {\n      return;\n    }\n    this.dispatchRenderEvent_(RenderEventType.POSTRENDER, context, frameState);\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeferredInternal(frameState) {}\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import('../../render/canvas/ZIndexContext.js').ZIndexContextProxy} Context.\n   */\n  getRenderContext(frameState) {\n    if (frameState.declutter && !this.deferredContext_) {\n      this.deferredContext_ = new ZIndexContext();\n    }\n    return frameState.declutter\n      ? this.deferredContext_.getContext()\n      : this.context;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderDeferred(frameState) {\n    if (!frameState.declutter) {\n      return;\n    }\n    this.dispatchRenderEvent_(\n      RenderEventType.PRERENDER,\n      this.context,\n      frameState,\n    );\n    if (frameState.declutter && this.deferredContext_) {\n      this.deferredContext_.draw(this.context);\n      this.deferredContext_.clear();\n    }\n    this.renderDeferredInternal(frameState);\n    this.dispatchRenderEvent_(\n      RenderEventType.POSTRENDER,\n      this.context,\n      frameState,\n    );\n  }\n\n  /**\n   * Creates a transform for rendering to an element that will be rotated after rendering.\n   * @param {import(\"../../coordinate.js\").Coordinate} center Center.\n   * @param {number} resolution Resolution.\n   * @param {number} rotation Rotation.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {number} width Width of the rendered element (in pixels).\n   * @param {number} height Height of the rendered element (in pixels).\n   * @param {number} offsetX Offset on the x-axis in view coordinates.\n   * @protected\n   * @return {!import(\"../../transform.js\").Transform} Transform.\n   */\n  getRenderTransform(\n    center,\n    resolution,\n    rotation,\n    pixelRatio,\n    width,\n    height,\n    offsetX,\n  ) {\n    const dx1 = width / 2;\n    const dy1 = height / 2;\n    const sx = pixelRatio / resolution;\n    const sy = -sx;\n    const dx2 = -center[0] + offsetX;\n    const dy2 = -center[1];\n    return composeTransform(\n      this.tempTransform,\n      dx1,\n      dy1,\n      sx,\n      sy,\n      -rotation,\n      dx2,\n      dy2,\n    );\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    delete this.frameState;\n    super.disposeInternal();\n  }\n}\n\nexport default CanvasLayerRenderer;\n","/**\n * @module ol/renderer/canvas/VectorLayer\n */\nimport ViewHint from '../../ViewHint.js';\nimport {equals} from '../../array.js';\nimport {wrapX as wrapCoordinateX} from '../../coordinate.js';\nimport {createCanvasContext2D, releaseCanvas} from '../../dom.js';\nimport {\n  buffer,\n  containsExtent,\n  createEmpty,\n  getHeight,\n  getWidth,\n  intersects as intersectsExtent,\n  wrapX as wrapExtentX,\n} from '../../extent.js';\nimport {\n  fromUserExtent,\n  getTransformFromProjections,\n  getUserProjection,\n  toUserExtent,\n  toUserResolution,\n} from '../../proj.js';\nimport RenderEventType from '../../render/EventType.js';\nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';\nimport ExecutorGroup, {\n  ALL,\n  DECLUTTER,\n  NON_DECLUTTER,\n} from '../../render/canvas/ExecutorGroup.js';\nimport {\n  HIT_DETECT_RESOLUTION,\n  createHitDetectionImageData,\n  hitDetect,\n} from '../../render/canvas/hitdetect.js';\nimport {getUid} from '../../util.js';\nimport {\n  defaultOrder as defaultRenderOrder,\n  getSquaredTolerance as getSquaredRenderTolerance,\n  getTolerance as getRenderTolerance,\n  renderFeature,\n} from '../vector.js';\nimport CanvasLayerRenderer, {canvasPool} from './Layer.js';\n\n/**\n * @classdesc\n * Canvas renderer for vector layers.\n * @api\n */\nclass CanvasVectorLayerRenderer extends CanvasLayerRenderer {\n  /**\n   * @param {import(\"../../layer/BaseVector.js\").default} vectorLayer Vector layer.\n   */\n  constructor(vectorLayer) {\n    super(vectorLayer);\n\n    /** @private */\n    this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.animatingOrInteracting_;\n\n    /**\n     * @private\n     * @type {ImageData|null}\n     */\n    this.hitDetectionImageData_ = null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.clipped_ = false;\n\n    /**\n     * @private\n     * @type {Array<import(\"../../Feature.js\").default>}\n     */\n    this.renderedFeatures_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRevision_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedResolution_ = NaN;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.renderedExtent_ = createEmpty();\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.wrappedRenderedExtent_ = createEmpty();\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRotation_;\n\n    /**\n     * @private\n     * @type {import(\"../../coordinate\").Coordinate}\n     */\n    this.renderedCenter_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../proj/Projection\").default}\n     */\n    this.renderedProjection_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedPixelRatio_ = 1;\n\n    /**\n     * @private\n     * @type {import(\"../../render.js\").OrderFunction|null}\n     */\n    this.renderedRenderOrder_ = null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderedFrameDeclutter_;\n\n    /**\n     * @private\n     * @type {import(\"../../render/canvas/ExecutorGroup\").default}\n     */\n    this.replayGroup_ = null;\n\n    /**\n     * A new replay group had to be created by `prepareFrame()`\n     * @type {boolean}\n     */\n    this.replayGroupChanged = true;\n\n    /**\n     * Clipping to be performed by `renderFrame()`\n     * @type {boolean}\n     */\n    this.clipping = true;\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D}\n     */\n    this.targetContext_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.opacity_ = 1;\n  }\n\n  /**\n   * @param {ExecutorGroup} executorGroup Executor group.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {boolean} [declutterable] `true` to only render declutterable items,\n   *     `false` to only render non-declutterable items, `undefined` to render all.\n   */\n  renderWorlds(executorGroup, frameState, declutterable) {\n    const extent = frameState.extent;\n    const viewState = frameState.viewState;\n    const center = viewState.center;\n    const resolution = viewState.resolution;\n    const projection = viewState.projection;\n    const rotation = viewState.rotation;\n    const projectionExtent = projection.getExtent();\n    const vectorSource = this.getLayer().getSource();\n    const declutter = this.getLayer().getDeclutter();\n    const pixelRatio = frameState.pixelRatio;\n    const viewHints = frameState.viewHints;\n    const snapToPixel = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n    const context = this.context;\n    const width = Math.round((getWidth(extent) / resolution) * pixelRatio);\n    const height = Math.round((getHeight(extent) / resolution) * pixelRatio);\n\n    const multiWorld = vectorSource.getWrapX() && projection.canWrapX();\n    const worldWidth = multiWorld ? getWidth(projectionExtent) : null;\n    const endWorld = multiWorld\n      ? Math.ceil((extent[2] - projectionExtent[2]) / worldWidth) + 1\n      : 1;\n    let world = multiWorld\n      ? Math.floor((extent[0] - projectionExtent[0]) / worldWidth)\n      : 0;\n    do {\n      let transform = this.getRenderTransform(\n        center,\n        resolution,\n        0,\n        pixelRatio,\n        width,\n        height,\n        world * worldWidth,\n      );\n      if (frameState.declutter) {\n        transform = transform.slice(0);\n      }\n      executorGroup.execute(\n        context,\n        [context.canvas.width, context.canvas.height],\n        transform,\n        rotation,\n        snapToPixel,\n        declutterable === undefined\n          ? ALL\n          : declutterable\n            ? DECLUTTER\n            : NON_DECLUTTER,\n        declutterable\n          ? declutter && frameState.declutter[declutter]\n          : undefined,\n      );\n    } while (++world < endWorld);\n  }\n\n  /**\n   * @private\n   */\n  setDrawContext_() {\n    if (this.opacity_ !== 1) {\n      this.targetContext_ = this.context;\n      this.context = createCanvasContext2D(\n        this.context.canvas.width,\n        this.context.canvas.height,\n        canvasPool,\n      );\n    }\n  }\n\n  /**\n   * @private\n   */\n  resetDrawContext_() {\n    if (this.opacity_ !== 1) {\n      const alpha = this.targetContext_.globalAlpha;\n      this.targetContext_.globalAlpha = this.opacity_;\n      this.targetContext_.drawImage(this.context.canvas, 0, 0);\n      this.targetContext_.globalAlpha = alpha;\n      releaseCanvas(this.context);\n      canvasPool.push(this.context.canvas);\n      this.context = this.targetContext_;\n      this.targetContext_ = null;\n    }\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeclutter(frameState) {\n    if (!this.replayGroup_ || !this.getLayer().getDeclutter()) {\n      return;\n    }\n    this.renderWorlds(this.replayGroup_, frameState, true);\n  }\n\n  /**\n   * Render deferred instructions.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderDeferredInternal(frameState) {\n    if (!this.replayGroup_) {\n      return;\n    }\n    this.replayGroup_.renderDeferred();\n    if (this.clipped_) {\n      this.context.restore();\n    }\n    this.resetDrawContext_();\n  }\n\n  /**\n   * Render the layer.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement|null} target Target that may be used to render content to.\n   * @return {HTMLElement|null} The rendered element.\n   * @override\n   */\n  renderFrame(frameState, target) {\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    this.opacity_ = layerState.opacity;\n    const viewState = frameState.viewState;\n\n    this.prepareContainer(frameState, target);\n    const context = this.context;\n\n    const replayGroup = this.replayGroup_;\n    let render = replayGroup && !replayGroup.isEmpty();\n    if (!render) {\n      const hasRenderListeners =\n        this.getLayer().hasListener(RenderEventType.PRERENDER) ||\n        this.getLayer().hasListener(RenderEventType.POSTRENDER);\n      if (!hasRenderListeners) {\n        return null;\n      }\n    }\n\n    this.setDrawContext_();\n\n    this.preRender(context, frameState);\n\n    const projection = viewState.projection;\n\n    // clipped rendering if layer extent is set\n    this.clipped_ = false;\n    if (render && layerState.extent && this.clipping) {\n      const layerExtent = fromUserExtent(layerState.extent, projection);\n      render = intersectsExtent(layerExtent, frameState.extent);\n      this.clipped_ = render && !containsExtent(layerExtent, frameState.extent);\n      if (this.clipped_) {\n        this.clipUnrotated(context, frameState, layerExtent);\n      }\n    }\n\n    if (render) {\n      this.renderWorlds(\n        replayGroup,\n        frameState,\n        this.getLayer().getDeclutter() ? false : undefined,\n      );\n    }\n\n    if (!frameState.declutter && this.clipped_) {\n      context.restore();\n    }\n\n    this.postRender(context, frameState);\n\n    if (this.renderedRotation_ !== viewState.rotation) {\n      this.renderedRotation_ = viewState.rotation;\n      this.hitDetectionImageData_ = null;\n    }\n    if (!frameState.declutter) {\n      this.resetDrawContext_();\n    }\n    return this.container;\n  }\n\n  /**\n   * Asynchronous layer level hit detection.\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../../Feature\").default>>} Promise\n   * that resolves with an array of features.\n   * @override\n   */\n  getFeatures(pixel) {\n    return new Promise((resolve) => {\n      if (\n        this.frameState &&\n        !this.hitDetectionImageData_ &&\n        !this.animatingOrInteracting_\n      ) {\n        const size = this.frameState.size.slice();\n        const center = this.renderedCenter_;\n        const resolution = this.renderedResolution_;\n        const rotation = this.renderedRotation_;\n        const projection = this.renderedProjection_;\n        const extent = this.wrappedRenderedExtent_;\n        const layer = this.getLayer();\n        const transforms = [];\n        const width = size[0] * HIT_DETECT_RESOLUTION;\n        const height = size[1] * HIT_DETECT_RESOLUTION;\n        transforms.push(\n          this.getRenderTransform(\n            center,\n            resolution,\n            rotation,\n            HIT_DETECT_RESOLUTION,\n            width,\n            height,\n            0,\n          ).slice(),\n        );\n        const source = layer.getSource();\n        const projectionExtent = projection.getExtent();\n        if (\n          source.getWrapX() &&\n          projection.canWrapX() &&\n          !containsExtent(projectionExtent, extent)\n        ) {\n          let startX = extent[0];\n          const worldWidth = getWidth(projectionExtent);\n          let world = 0;\n          let offsetX;\n          while (startX < projectionExtent[0]) {\n            --world;\n            offsetX = worldWidth * world;\n            transforms.push(\n              this.getRenderTransform(\n                center,\n                resolution,\n                rotation,\n                HIT_DETECT_RESOLUTION,\n                width,\n                height,\n                offsetX,\n              ).slice(),\n            );\n            startX += worldWidth;\n          }\n          world = 0;\n          startX = extent[2];\n          while (startX > projectionExtent[2]) {\n            ++world;\n            offsetX = worldWidth * world;\n            transforms.push(\n              this.getRenderTransform(\n                center,\n                resolution,\n                rotation,\n                HIT_DETECT_RESOLUTION,\n                width,\n                height,\n                offsetX,\n              ).slice(),\n            );\n            startX -= worldWidth;\n          }\n        }\n        const userProjection = getUserProjection();\n        this.hitDetectionImageData_ = createHitDetectionImageData(\n          size,\n          transforms,\n          this.renderedFeatures_,\n          layer.getStyleFunction(),\n          extent,\n          resolution,\n          rotation,\n          getSquaredRenderTolerance(resolution, this.renderedPixelRatio_),\n          userProjection ? projection : null,\n        );\n      }\n      resolve(\n        hitDetect(pixel, this.renderedFeatures_, this.hitDetectionImageData_),\n      );\n    });\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"../vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"../Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   * @override\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    if (!this.replayGroup_) {\n      return undefined;\n    }\n    const resolution = frameState.viewState.resolution;\n    const rotation = frameState.viewState.rotation;\n    const layer = this.getLayer();\n\n    /** @type {!Object<string, import(\"../Map.js\").HitMatch<T>|true>} */\n    const features = {};\n\n    /**\n     * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n     * @param {number} distanceSq The squared distance to the click position\n     * @return {T|undefined} Callback result.\n     */\n    const featureCallback = function (feature, geometry, distanceSq) {\n      const key = getUid(feature);\n      const match = features[key];\n      if (!match) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          return callback(feature, layer, geometry);\n        }\n        matches.push(\n          (features[key] = {\n            feature: feature,\n            layer: layer,\n            geometry: geometry,\n            distanceSq: distanceSq,\n            callback: callback,\n          }),\n        );\n      } else if (match !== true && distanceSq < match.distanceSq) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          matches.splice(matches.lastIndexOf(match), 1);\n          return callback(feature, layer, geometry);\n        }\n        match.geometry = geometry;\n        match.distanceSq = distanceSq;\n      }\n      return undefined;\n    };\n\n    const declutter = this.getLayer().getDeclutter();\n    return this.replayGroup_.forEachFeatureAtCoordinate(\n      coordinate,\n      resolution,\n      rotation,\n      hitTolerance,\n      featureCallback,\n      declutter\n        ? frameState.declutter?.[declutter]?.all().map((item) => item.value)\n        : null,\n    );\n  }\n\n  /**\n   * Perform action necessary to get the layer rendered after new fonts have loaded\n   * @override\n   */\n  handleFontsChanged() {\n    const layer = this.getLayer();\n    if (layer.getVisible() && this.replayGroup_) {\n      layer.changed();\n    }\n  }\n\n  /**\n   * Handle changes in image style state.\n   * @param {import(\"../../events/Event.js\").default} event Image style change event.\n   * @private\n   */\n  handleStyleImageChange_(event) {\n    this.renderIfReadyAndVisible();\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    const vectorLayer = this.getLayer();\n    const vectorSource = vectorLayer.getSource();\n    if (!vectorSource) {\n      return false;\n    }\n\n    const animating = frameState.viewHints[ViewHint.ANIMATING];\n    const interacting = frameState.viewHints[ViewHint.INTERACTING];\n    const updateWhileAnimating = vectorLayer.getUpdateWhileAnimating();\n    const updateWhileInteracting = vectorLayer.getUpdateWhileInteracting();\n\n    if (\n      (this.ready && !updateWhileAnimating && animating) ||\n      (!updateWhileInteracting && interacting)\n    ) {\n      this.animatingOrInteracting_ = true;\n      return true;\n    }\n    this.animatingOrInteracting_ = false;\n\n    const frameStateExtent = frameState.extent;\n    const viewState = frameState.viewState;\n    const projection = viewState.projection;\n    const resolution = viewState.resolution;\n    const pixelRatio = frameState.pixelRatio;\n    const vectorLayerRevision = vectorLayer.getRevision();\n    const vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();\n    let vectorLayerRenderOrder = vectorLayer.getRenderOrder();\n\n    if (vectorLayerRenderOrder === undefined) {\n      vectorLayerRenderOrder = defaultRenderOrder;\n    }\n\n    const center = viewState.center.slice();\n    const extent = buffer(\n      frameStateExtent,\n      vectorLayerRenderBuffer * resolution,\n    );\n    const renderedExtent = extent.slice();\n    const loadExtents = [extent.slice()];\n    const projectionExtent = projection.getExtent();\n\n    if (\n      vectorSource.getWrapX() &&\n      projection.canWrapX() &&\n      !containsExtent(projectionExtent, frameState.extent)\n    ) {\n      // For the replay group, we need an extent that intersects the real world\n      // (-180° to +180°). To support geometries in a coordinate range from -540°\n      // to +540°, we add at least 1 world width on each side of the projection\n      // extent. If the viewport is wider than the world, we need to add half of\n      // the viewport width to make sure we cover the whole viewport.\n      const worldWidth = getWidth(projectionExtent);\n      const gutter = Math.max(getWidth(extent) / 2, worldWidth);\n      extent[0] = projectionExtent[0] - gutter;\n      extent[2] = projectionExtent[2] + gutter;\n      wrapCoordinateX(center, projection);\n      const loadExtent = wrapExtentX(loadExtents[0], projection);\n      // If the extent crosses the date line, we load data for both edges of the worlds\n      if (\n        loadExtent[0] < projectionExtent[0] &&\n        loadExtent[2] < projectionExtent[2]\n      ) {\n        loadExtents.push([\n          loadExtent[0] + worldWidth,\n          loadExtent[1],\n          loadExtent[2] + worldWidth,\n          loadExtent[3],\n        ]);\n      } else if (\n        loadExtent[0] > projectionExtent[0] &&\n        loadExtent[2] > projectionExtent[2]\n      ) {\n        loadExtents.push([\n          loadExtent[0] - worldWidth,\n          loadExtent[1],\n          loadExtent[2] - worldWidth,\n          loadExtent[3],\n        ]);\n      }\n    }\n\n    if (\n      this.ready &&\n      this.renderedResolution_ == resolution &&\n      this.renderedRevision_ == vectorLayerRevision &&\n      this.renderedRenderOrder_ == vectorLayerRenderOrder &&\n      this.renderedFrameDeclutter_ === !!frameState.declutter &&\n      containsExtent(this.wrappedRenderedExtent_, extent)\n    ) {\n      if (!equals(this.renderedExtent_, renderedExtent)) {\n        this.hitDetectionImageData_ = null;\n        this.renderedExtent_ = renderedExtent;\n      }\n      this.renderedCenter_ = center;\n      this.replayGroupChanged = false;\n      return true;\n    }\n\n    this.replayGroup_ = null;\n\n    const replayGroup = new CanvasBuilderGroup(\n      getRenderTolerance(resolution, pixelRatio),\n      extent,\n      resolution,\n      pixelRatio,\n    );\n\n    const userProjection = getUserProjection();\n    let userTransform;\n    if (userProjection) {\n      for (let i = 0, ii = loadExtents.length; i < ii; ++i) {\n        const extent = loadExtents[i];\n        const userExtent = toUserExtent(extent, projection);\n        vectorSource.loadFeatures(\n          userExtent,\n          toUserResolution(resolution, projection),\n          userProjection,\n        );\n      }\n      userTransform = getTransformFromProjections(userProjection, projection);\n    } else {\n      for (let i = 0, ii = loadExtents.length; i < ii; ++i) {\n        vectorSource.loadFeatures(loadExtents[i], resolution, projection);\n      }\n    }\n\n    const squaredTolerance = getSquaredRenderTolerance(resolution, pixelRatio);\n    let ready = true;\n    const render =\n      /**\n       * @param {import(\"../../Feature.js\").default} feature Feature.\n       * @param {number} index Index.\n       */\n      (feature, index) => {\n        let styles;\n        const styleFunction =\n          feature.getStyleFunction() || vectorLayer.getStyleFunction();\n        if (styleFunction) {\n          styles = styleFunction(feature, resolution);\n        }\n        if (styles) {\n          const dirty = this.renderFeature(\n            feature,\n            squaredTolerance,\n            styles,\n            replayGroup,\n            userTransform,\n            this.getLayer().getDeclutter(),\n            index,\n          );\n          ready = ready && !dirty;\n        }\n      };\n\n    const userExtent = toUserExtent(extent, projection);\n    /** @type {Array<import(\"../../Feature.js\").default>} */\n    const features = vectorSource.getFeaturesInExtent(userExtent);\n    if (vectorLayerRenderOrder) {\n      features.sort(vectorLayerRenderOrder);\n    }\n    for (let i = 0, ii = features.length; i < ii; ++i) {\n      render(features[i], i);\n    }\n    this.renderedFeatures_ = features;\n    this.ready = ready;\n\n    const replayGroupInstructions = replayGroup.finish();\n    const executorGroup = new ExecutorGroup(\n      extent,\n      resolution,\n      pixelRatio,\n      vectorSource.getOverlaps(),\n      replayGroupInstructions,\n      vectorLayer.getRenderBuffer(),\n      !!frameState.declutter,\n    );\n\n    this.renderedResolution_ = resolution;\n    this.renderedRevision_ = vectorLayerRevision;\n    this.renderedRenderOrder_ = vectorLayerRenderOrder;\n    this.renderedFrameDeclutter_ = !!frameState.declutter;\n    this.renderedExtent_ = renderedExtent;\n    this.wrappedRenderedExtent_ = extent;\n    this.renderedCenter_ = center;\n    this.renderedProjection_ = projection;\n    this.renderedPixelRatio_ = pixelRatio;\n    this.replayGroup_ = executorGroup;\n    this.hitDetectionImageData_ = null;\n\n    this.replayGroupChanged = true;\n    return true;\n  }\n\n  /**\n   * @param {import(\"../../Feature.js\").default} feature Feature.\n   * @param {number} squaredTolerance Squared render tolerance.\n   * @param {import(\"../../style/Style.js\").default|Array<import(\"../../style/Style.js\").default>} styles The style or array of styles.\n   * @param {import(\"../../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n   * @param {import(\"../../proj.js\").TransformFunction} [transform] Transform from user to view projection.\n   * @param {boolean} [declutter] Enable decluttering.\n   * @param {number} [index] Render order index.\n   * @return {boolean} `true` if an image is loading.\n   */\n  renderFeature(\n    feature,\n    squaredTolerance,\n    styles,\n    builderGroup,\n    transform,\n    declutter,\n    index,\n  ) {\n    if (!styles) {\n      return false;\n    }\n    let loading = false;\n    if (Array.isArray(styles)) {\n      for (let i = 0, ii = styles.length; i < ii; ++i) {\n        loading =\n          renderFeature(\n            builderGroup,\n            feature,\n            styles[i],\n            squaredTolerance,\n            this.boundHandleStyleImageChange_,\n            transform,\n            declutter,\n            index,\n          ) || loading;\n      }\n    } else {\n      loading = renderFeature(\n        builderGroup,\n        feature,\n        styles,\n        squaredTolerance,\n        this.boundHandleStyleImageChange_,\n        transform,\n        declutter,\n        index,\n      );\n    }\n    return loading;\n  }\n}\n\nexport default CanvasVectorLayerRenderer;\n","/**\n * @module ol/expr/expression\n */\nimport {ascending} from '../array.js';\nimport {fromString as colorFromString} from '../color.js';\nimport {toSize} from '../size.js';\n\n/**\n * @fileoverview This module includes types and functions for parsing array encoded expressions.\n * The result of parsing an encoded expression is one of the specific expression classes.\n * During parsing, information is added to the parsing context about the data accessed by the\n * expression.\n */\n\n/**\n * Base type used for literal style parameters; can be a number literal or the output of an operator,\n * which in turns takes {@link import(\"./expression.js\").ExpressionValue} arguments.\n *\n * See below for details on the available operators (with notes for those that are WebGL or Canvas only).\n *\n * Reading operators:\n *   `['band', bandIndex, xOffset, yOffset]` For tile layers only. Fetches pixel values from band\n *     `bandIndex` of the source's data. The first `bandIndex` of the source data is `1`. Fetched values\n *     are in the 0..1 range. {@link import(\"../source/TileImage.js\").default} sources have 4 bands: red,\n *     green, blue and alpha. {@link import(\"../source/DataTile.js\").default} sources can have any number\n *     of bands, depending on the underlying data source and\n *     {@link import(\"../source/GeoTIFF.js\").Options configuration}. `xOffset` and `yOffset` are optional\n *     and allow specifying pixel offsets for x and y. This is used for sampling data from neighboring pixels (WebGL only).\n *   `['get', attributeName]` fetches a feature property value, similar to `feature.get('attributeName')`.\n *   `['get', attributeName, keyOrArrayIndex, ...]` (Canvas only) Access nested properties and array items of a\n *     feature property. The result is `undefined` when there is nothing at the specified key or index.\n *   `['geometry-type']` returns a feature's geometry type as string, either: 'LineString', 'Point' or 'Polygon'\n *     `Multi*` values are returned as their singular equivalent\n *     `Circle` geometries are returned as 'Polygon'\n *     `GeometryCollection` geometries are returned as the type of the first geometry found in the collection (WebGL only).\n *   `['resolution']` returns the current resolution\n *   `['time']` The time in seconds since the creation of the layer (WebGL only).\n *   `['var', 'varName']` fetches a value from the style variables; will throw an error if that variable is undefined\n *   `['zoom']` The current zoom level (WebGL only).\n *   `['line-metric']` returns the M component of the current point on a line (WebGL only); in case where the geometry layout of the line\n *      does not contain an M component (e.g. XY or XYZ), 0 is returned; 0 is also returned for geometries other than lines.\n *      Please note that the M component will be linearly interpolated between the two points composing a segment.\n *\n * Math operators:\n *   `['*', value1, value2, ...]` multiplies the values (either numbers or colors)\n *   `['/', value1, value2]` divides `value1` by `value2`\n *   `['+', value1, value2, ...]` adds the values\n *   `['-', value1, value2]` subtracts `value2` from `value1`\n *   `['clamp', value, low, high]` clamps `value` between `low` and `high`\n *   `['%', value1, value2]` returns the result of `value1 % value2` (modulo)\n *   `['^', value1, value2]` returns the value of `value1` raised to the `value2` power\n *   `['abs', value1]` returns the absolute value of `value1`\n *   `['floor', value1]` returns the nearest integer less than or equal to `value1`\n *   * `['round', value1]` returns the nearest integer to `value1`\n *   * `['ceil', value1]` returns the nearest integer greater than or equal to `value1`\n *   * `['sin', value1]` returns the sine of `value1`\n *   * `['cos', value1]` returns the cosine of `value1`\n *   * `['atan', value1, value2]` returns `atan2(value1, value2)`. If `value2` is not provided, returns `atan(value1)`\n *   * `['sqrt', value1]` returns the square root of `value1`\n *\n * * Transform operators:\n *   * `['case', condition1, output1, ...conditionN, outputN, fallback]` selects the first output whose corresponding\n *     condition evaluates to `true`. If no match is found, returns the `fallback` value.\n *     All conditions should be `boolean`, output and fallback can be any kind.\n *   * `['match', input, match1, output1, ...matchN, outputN, fallback]` compares the `input` value against all\n *     provided `matchX` values, returning the output associated with the first valid match. If no match is found,\n *     returns the `fallback` value.\n *     `input` and `matchX` values must all be of the same type, and can be `number` or `string`. `outputX` and\n *     `fallback` values must be of the same type, and can be of any kind.\n *   * `['interpolate', interpolation, input, stop1, output1, ...stopN, outputN]` returns a value by interpolating between\n *     pairs of inputs and outputs; `interpolation` can either be `['linear']` or `['exponential', base]` where `base` is\n *     the rate of increase from stop A to stop B (i.e. power to which the interpolation ratio is raised); a value\n *     of 1 is equivalent to `['linear']`.\n *     `input` and `stopX` values must all be of type `number`. `outputX` values can be `number` or `color` values.\n *     Note: `input` will be clamped between `stop1` and `stopN`, meaning that all output values will be comprised\n *     between `output1` and `outputN`.\n *   * `['string', value1, value2, ...]` returns the first value in the list that evaluates to a string.\n *     An example would be to provide a default value for get: `['string', ['get', 'propertyname'], 'default value']]`\n *     (Canvas only).\n *   * `['number', value1, value2, ...]` returns the first value in the list that evaluates to a number.\n *     An example would be to provide a default value for get: `['string', ['get', 'propertyname'], 42]]`\n *     (Canvas only).\n *   * `['coalesce', value1, value2, ...]` returns the first value in the list which is not null or undefined.\n *     An example would be to provide a default value for get: `['coalesce', ['get','propertyname'], 'default value']]`\n *     (Canvas only).\n *\n * * Logical operators:\n *   * `['<', value1, value2]` returns `true` if `value1` is strictly lower than `value2`, or `false` otherwise.\n *   * `['<=', value1, value2]` returns `true` if `value1` is lower than or equals `value2`, or `false` otherwise.\n *   * `['>', value1, value2]` returns `true` if `value1` is strictly greater than `value2`, or `false` otherwise.\n *   * `['>=', value1, value2]` returns `true` if `value1` is greater than or equals `value2`, or `false` otherwise.\n *   * `['==', value1, value2]` returns `true` if `value1` equals `value2`, or `false` otherwise.\n *   * `['!=', value1, value2]` returns `true` if `value1` does not equal `value2`, or `false` otherwise.\n *   * `['!', value1]` returns `false` if `value1` is `true` or greater than `0`, or `true` otherwise.\n *   * `['all', value1, value2, ...]` returns `true` if all the inputs are `true`, `false` otherwise.\n *   * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.\n *   * `['has', attributeName, keyOrArrayIndex, ...]` returns `true` if feature properties include the (nested) key `attributeName`,\n *     `false` otherwise.\n *   * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`\n *     (inclusively), or `false` otherwise.\n *   * `['in', needle, haystack]` returns `true` if `needle` is found in `haystack`, and\n *     `false` otherwise.\n *     This operator has the following limitations:\n *     * `haystack` has to be an array of numbers or strings (searching for a substring in a string is not supported yet)\n *     * Only literal arrays are supported as `haystack` for now; this means that `haystack` cannot be the result of an\n *     expression. If `haystack` is an array of strings, use the `literal` operator to disambiguate from an expression:\n *     `['literal', ['abc', 'def', 'ghi']]`\n *\n * * Conversion operators:\n *   * `['array', value1, ...valueN]` creates a numerical array from `number` values; please note that the amount of\n *     values can currently only be 2, 3 or 4 (WebGL only).\n *   * `['color', red, green, blue, alpha]` or `['color', shade, alpha]` creates a `color` value from `number` values;\n *     the `alpha` parameter is optional; if not specified, it will be set to 1 (WebGL only).\n *     Note: `red`, `green` and `blue` or `shade` components must be values between 0 and 255; `alpha` between 0 and 1.\n *   * `['palette', index, colors]` picks a `color` value from an array of colors using the given index; the `index`\n *     expression must evaluate to a number; the items in the `colors` array must be strings with hex colors\n *     (e.g. `'#86A136'`), colors using the rgba[a] functional notation (e.g. `'rgb(134, 161, 54)'` or `'rgba(134, 161, 54, 1)'`),\n *     named colors (e.g. `'red'`), or array literals with 3 ([r, g, b]) or 4 ([r, g, b, a]) values (with r, g, and b\n *     in the 0-255 range and a in the 0-1 range) (WebGL only).\n *   * `['to-string', value]` converts the input value to a string. If the input is a boolean, the result is \"true\" or \"false\".\n *     If the input is a number, it is converted to a string as specified by the \"NumberToString\" algorithm of the ECMAScript\n *     Language Specification. If the input is a color, it is converted to a string of the form \"rgba(r,g,b,a)\". (Canvas only)\n *\n * Values can either be literals or another operator, as they will be evaluated recursively.\n * Literal values can be of the following types:\n * * `boolean`\n * * `number`\n * * `number[]` (number arrays can only have a length of 2, 3 or 4)\n * * `string`\n * * {@link module:ol/color~Color}\n *\n * @typedef {Array<*>|import(\"../color.js\").Color|string|number|boolean} ExpressionValue\n * @api\n */\n\nlet numTypes = 0;\nexport const NoneType = 0;\nexport const BooleanType = 1 << numTypes++;\nexport const NumberType = 1 << numTypes++;\nexport const StringType = 1 << numTypes++;\nexport const ColorType = 1 << numTypes++;\nexport const NumberArrayType = 1 << numTypes++;\nexport const SizeType = 1 << numTypes++;\nexport const AnyType = Math.pow(2, numTypes) - 1;\n\nconst typeNames = {\n  [BooleanType]: 'boolean',\n  [NumberType]: 'number',\n  [StringType]: 'string',\n  [ColorType]: 'color',\n  [NumberArrayType]: 'number[]',\n  [SizeType]: 'size',\n};\n\nconst namedTypes = Object.keys(typeNames).map(Number).sort(ascending);\n\n/**\n * @param {number} type The type.\n * @return {boolean} The type is one of the specific types (not any or a union type).\n */\nfunction isSpecific(type) {\n  return type in typeNames;\n}\n\n/**\n * Get a string representation for a type.\n * @param {number} type The type.\n * @return {string} The type name.\n */\nexport function typeName(type) {\n  const names = [];\n  for (const namedType of namedTypes) {\n    if (includesType(type, namedType)) {\n      names.push(typeNames[namedType]);\n    }\n  }\n  if (names.length === 0) {\n    return 'untyped';\n  }\n  if (names.length < 3) {\n    return names.join(' or ');\n  }\n  return names.slice(0, -1).join(', ') + ', or ' + names[names.length - 1];\n}\n\n/**\n * @param {number} broad The broad type.\n * @param {number} specific The specific type.\n * @return {boolean} The broad type includes the specific type.\n */\nexport function includesType(broad, specific) {\n  return (broad & specific) === specific;\n}\n\n/**\n * @param {number} oneType One type.\n * @param {number} otherType Another type.\n * @return {boolean} The set of types overlap (share a common specific type)\n */\nexport function overlapsType(oneType, otherType) {\n  return !!(oneType & otherType);\n}\n\n/**\n * @param {number} type The type.\n * @param {number} expected The expected type.\n * @return {boolean} The given type is exactly the expected type.\n */\nexport function isType(type, expected) {\n  return type === expected;\n}\n\n/**\n * @typedef {boolean|number|string|Array<number>} LiteralValue\n */\n\nexport class LiteralExpression {\n  /**\n   * @param {number} type The value type.\n   * @param {LiteralValue} value The literal value.\n   */\n  constructor(type, value) {\n    if (!isSpecific(type)) {\n      throw new Error(\n        `literal expressions must have a specific type, got ${typeName(type)}`,\n      );\n    }\n    this.type = type;\n    this.value = value;\n  }\n}\n\nexport class CallExpression {\n  /**\n   * @param {number} type The return type.\n   * @param {string} operator The operator.\n   * @param {...Expression} args The arguments.\n   */\n  constructor(type, operator, ...args) {\n    this.type = type;\n    this.operator = operator;\n    this.args = args;\n  }\n}\n\n/**\n * @typedef {LiteralExpression|CallExpression} Expression\n */\n\n/**\n * @typedef {Object} ParsingContext\n * @property {Set<string>} variables Variables referenced with the 'var' operator.\n * @property {Set<string>} properties Properties referenced with the 'get' operator.\n * @property {boolean} featureId The style uses the feature id.\n * @property {boolean} geometryType The style uses the feature geometry type.\n * @property {boolean} mapState The style uses the map state (view state or time elapsed).\n */\n\n/**\n * @return {ParsingContext} A new parsing context.\n */\nexport function newParsingContext() {\n  return {\n    variables: new Set(),\n    properties: new Set(),\n    featureId: false,\n    geometryType: false,\n    mapState: false,\n  };\n}\n\n/**\n * @typedef {LiteralValue|Array} EncodedExpression\n */\n\n/**\n * @param {EncodedExpression} encoded The encoded expression.\n * @param {number} expectedType The expected type.\n * @param {ParsingContext} context The parsing context.\n * @return {Expression} The parsed expression result.\n */\nexport function parse(encoded, expectedType, context) {\n  switch (typeof encoded) {\n    case 'boolean': {\n      if (isType(expectedType, StringType)) {\n        return new LiteralExpression(StringType, encoded ? 'true' : 'false');\n      }\n      if (!includesType(expectedType, BooleanType)) {\n        throw new Error(\n          `got a boolean, but expected ${typeName(expectedType)}`,\n        );\n      }\n      return new LiteralExpression(BooleanType, encoded);\n    }\n    case 'number': {\n      if (isType(expectedType, SizeType)) {\n        return new LiteralExpression(SizeType, toSize(encoded));\n      }\n      if (isType(expectedType, BooleanType)) {\n        return new LiteralExpression(BooleanType, !!encoded);\n      }\n      if (isType(expectedType, StringType)) {\n        return new LiteralExpression(StringType, encoded.toString());\n      }\n      if (!includesType(expectedType, NumberType)) {\n        throw new Error(`got a number, but expected ${typeName(expectedType)}`);\n      }\n      return new LiteralExpression(NumberType, encoded);\n    }\n    case 'string': {\n      if (isType(expectedType, ColorType)) {\n        return new LiteralExpression(ColorType, colorFromString(encoded));\n      }\n      if (isType(expectedType, BooleanType)) {\n        return new LiteralExpression(BooleanType, !!encoded);\n      }\n      if (!includesType(expectedType, StringType)) {\n        throw new Error(`got a string, but expected ${typeName(expectedType)}`);\n      }\n      return new LiteralExpression(StringType, encoded);\n    }\n    default: {\n      // pass\n    }\n  }\n\n  if (!Array.isArray(encoded)) {\n    throw new Error('expression must be an array or a primitive value');\n  }\n\n  if (encoded.length === 0) {\n    throw new Error('empty expression');\n  }\n\n  if (typeof encoded[0] === 'string') {\n    return parseCallExpression(encoded, expectedType, context);\n  }\n\n  for (const item of encoded) {\n    if (typeof item !== 'number') {\n      throw new Error('expected an array of numbers');\n    }\n  }\n\n  if (isType(expectedType, SizeType)) {\n    if (encoded.length !== 2) {\n      throw new Error(\n        `expected an array of two values for a size, got ${encoded.length}`,\n      );\n    }\n    return new LiteralExpression(SizeType, encoded);\n  }\n\n  if (isType(expectedType, ColorType)) {\n    if (encoded.length === 3) {\n      return new LiteralExpression(ColorType, [...encoded, 1]);\n    }\n    if (encoded.length === 4) {\n      return new LiteralExpression(ColorType, encoded);\n    }\n    throw new Error(\n      `expected an array of 3 or 4 values for a color, got ${encoded.length}`,\n    );\n  }\n\n  if (!includesType(expectedType, NumberArrayType)) {\n    throw new Error(\n      `got an array of numbers, but expected ${typeName(expectedType)}`,\n    );\n  }\n\n  return new LiteralExpression(NumberArrayType, encoded);\n}\n\n/**\n * @type {Object<string, string>}\n */\nexport const Ops = {\n  Get: 'get',\n  Var: 'var',\n  Concat: 'concat',\n  GeometryType: 'geometry-type',\n  LineMetric: 'line-metric',\n  Any: 'any',\n  All: 'all',\n  Not: '!',\n  Resolution: 'resolution',\n  Zoom: 'zoom',\n  Time: 'time',\n  Equal: '==',\n  NotEqual: '!=',\n  GreaterThan: '>',\n  GreaterThanOrEqualTo: '>=',\n  LessThan: '<',\n  LessThanOrEqualTo: '<=',\n  Multiply: '*',\n  Divide: '/',\n  Add: '+',\n  Subtract: '-',\n  Clamp: 'clamp',\n  Mod: '%',\n  Pow: '^',\n  Abs: 'abs',\n  Floor: 'floor',\n  Ceil: 'ceil',\n  Round: 'round',\n  Sin: 'sin',\n  Cos: 'cos',\n  Atan: 'atan',\n  Sqrt: 'sqrt',\n  Match: 'match',\n  Between: 'between',\n  Interpolate: 'interpolate',\n  Coalesce: 'coalesce',\n  Case: 'case',\n  In: 'in',\n  Number: 'number',\n  String: 'string',\n  Array: 'array',\n  Color: 'color',\n  Id: 'id',\n  Band: 'band',\n  Palette: 'palette',\n  ToString: 'to-string',\n  Has: 'has',\n};\n\n/**\n * @typedef {function(Array, number, ParsingContext):Expression} Parser\n *\n * Second argument is the expected type.\n */\n\n/**\n * @type {Object<string, Parser>}\n */\nconst parsers = {\n  [Ops.Get]: createCallExpressionParser(hasArgsCount(1, Infinity), withGetArgs),\n  [Ops.Var]: createCallExpressionParser(hasArgsCount(1, 1), withVarArgs),\n  [Ops.Has]: createCallExpressionParser(hasArgsCount(1, Infinity), withGetArgs),\n  [Ops.Id]: createCallExpressionParser(usesFeatureId, withNoArgs),\n  [Ops.Concat]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(StringType),\n  ),\n  [Ops.GeometryType]: createCallExpressionParser(usesGeometryType, withNoArgs),\n  [Ops.LineMetric]: createCallExpressionParser(withNoArgs),\n  [Ops.Resolution]: createCallExpressionParser(usesMapState, withNoArgs),\n  [Ops.Zoom]: createCallExpressionParser(usesMapState, withNoArgs),\n  [Ops.Time]: createCallExpressionParser(usesMapState, withNoArgs),\n  [Ops.Any]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(BooleanType),\n  ),\n  [Ops.All]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(BooleanType),\n  ),\n  [Ops.Not]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(BooleanType),\n  ),\n  [Ops.Equal]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.NotEqual]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.GreaterThan]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.GreaterThanOrEqualTo]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.LessThan]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.LessThanOrEqualTo]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Multiply]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfReturnType,\n  ),\n  [Ops.Coalesce]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfReturnType,\n  ),\n  [Ops.Divide]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Add]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Subtract]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Clamp]: createCallExpressionParser(\n    hasArgsCount(3, 3),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Mod]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Pow]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Abs]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Floor]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Ceil]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Round]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Sin]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Cos]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Atan]: createCallExpressionParser(\n    hasArgsCount(1, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Sqrt]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Match]: createCallExpressionParser(\n    hasArgsCount(4, Infinity),\n    hasEvenArgs,\n    withMatchArgs,\n  ),\n  [Ops.Between]: createCallExpressionParser(\n    hasArgsCount(3, 3),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Interpolate]: createCallExpressionParser(\n    hasArgsCount(6, Infinity),\n    hasEvenArgs,\n    withInterpolateArgs,\n  ),\n  [Ops.Case]: createCallExpressionParser(\n    hasArgsCount(3, Infinity),\n    hasOddArgs,\n    withCaseArgs,\n  ),\n  [Ops.In]: createCallExpressionParser(hasArgsCount(2, 2), withInArgs),\n  [Ops.Number]: createCallExpressionParser(\n    hasArgsCount(1, Infinity),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.String]: createCallExpressionParser(\n    hasArgsCount(1, Infinity),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.Array]: createCallExpressionParser(\n    hasArgsCount(1, Infinity),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Color]: createCallExpressionParser(\n    hasArgsCount(1, 4),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Band]: createCallExpressionParser(\n    hasArgsCount(1, 3),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Palette]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withPaletteArgs,\n  ),\n  [Ops.ToString]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(BooleanType | NumberType | StringType | ColorType),\n  ),\n};\n\n/**\n * @typedef {function(Array<EncodedExpression>, number, ParsingContext):Array<Expression>|void} ArgValidator\n *\n * An argument validator applies various checks to an encoded expression arguments and\n * returns the parsed arguments if any.  The second argument is the return type of the call expression.\n */\n\n/**\n * @type {ArgValidator}\n */\nfunction withGetArgs(encoded, returnType, context) {\n  const argsCount = encoded.length - 1;\n  const args = new Array(argsCount);\n  for (let i = 0; i < argsCount; ++i) {\n    const key = encoded[i + 1];\n    switch (typeof key) {\n      case 'number': {\n        args[i] = new LiteralExpression(NumberType, key);\n        break;\n      }\n      case 'string': {\n        args[i] = new LiteralExpression(StringType, key);\n        break;\n      }\n      default: {\n        throw new Error(\n          `expected a string key or numeric array index for a get operation, got ${key}`,\n        );\n      }\n    }\n    if (i === 0) {\n      context.properties.add(String(key));\n    }\n  }\n  return args;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withVarArgs(encoded, returnType, context) {\n  const name = encoded[1];\n  if (typeof name !== 'string') {\n    throw new Error('expected a string argument for var operation');\n  }\n  context.variables.add(name);\n\n  return [new LiteralExpression(StringType, name)];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction usesFeatureId(encoded, returnType, context) {\n  context.featureId = true;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction usesGeometryType(encoded, returnType, context) {\n  context.geometryType = true;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction usesMapState(encoded, returnType, context) {\n  context.mapState = true;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withNoArgs(encoded, returnType, context) {\n  const operation = encoded[0];\n  if (encoded.length !== 1) {\n    throw new Error(`expected no arguments for ${operation} operation`);\n  }\n  return [];\n}\n\n/**\n * @param {number} minArgs The minimum number of arguments.\n * @param {number} maxArgs The maximum number of arguments.\n * @return {ArgValidator} The argument validator\n */\nfunction hasArgsCount(minArgs, maxArgs) {\n  return function (encoded, returnType, context) {\n    const operation = encoded[0];\n    const argCount = encoded.length - 1;\n    if (minArgs === maxArgs) {\n      if (argCount !== minArgs) {\n        const plural = minArgs === 1 ? '' : 's';\n        throw new Error(\n          `expected ${minArgs} argument${plural} for ${operation}, got ${argCount}`,\n        );\n      }\n    } else if (argCount < minArgs || argCount > maxArgs) {\n      const range =\n        maxArgs === Infinity\n          ? `${minArgs} or more`\n          : `${minArgs} to ${maxArgs}`;\n      throw new Error(\n        `expected ${range} arguments for ${operation}, got ${argCount}`,\n      );\n    }\n  };\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withArgsOfReturnType(encoded, returnType, context) {\n  const argCount = encoded.length - 1;\n  /**\n   * @type {Array<Expression>}\n   */\n  const args = new Array(argCount);\n  for (let i = 0; i < argCount; ++i) {\n    const expression = parse(encoded[i + 1], returnType, context);\n    args[i] = expression;\n  }\n  return args;\n}\n\n/**\n * @param {number} argType The argument type.\n * @return {ArgValidator} The argument validator\n */\nfunction withArgsOfType(argType) {\n  return function (encoded, returnType, context) {\n    const argCount = encoded.length - 1;\n    /**\n     * @type {Array<Expression>}\n     */\n    const args = new Array(argCount);\n    for (let i = 0; i < argCount; ++i) {\n      const expression = parse(encoded[i + 1], argType, context);\n      args[i] = expression;\n    }\n    return args;\n  };\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction hasOddArgs(encoded, returnType, context) {\n  const operation = encoded[0];\n  const argCount = encoded.length - 1;\n  if (argCount % 2 === 0) {\n    throw new Error(\n      `expected an odd number of arguments for ${operation}, got ${argCount} instead`,\n    );\n  }\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction hasEvenArgs(encoded, returnType, context) {\n  const operation = encoded[0];\n  const argCount = encoded.length - 1;\n  if (argCount % 2 === 1) {\n    throw new Error(\n      `expected an even number of arguments for operation ${operation}, got ${argCount} instead`,\n    );\n  }\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withMatchArgs(encoded, returnType, context) {\n  const argsCount = encoded.length - 1;\n\n  const inputType = StringType | NumberType | BooleanType;\n\n  const input = parse(encoded[1], inputType, context);\n\n  const fallback = parse(encoded[encoded.length - 1], returnType, context);\n\n  const args = new Array(argsCount - 2);\n  for (let i = 0; i < argsCount - 2; i += 2) {\n    try {\n      const match = parse(encoded[i + 2], input.type, context);\n      args[i] = match;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 1} of match expression: ${err.message}`,\n      );\n    }\n    try {\n      const output = parse(encoded[i + 3], fallback.type, context);\n      args[i + 1] = output;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 2} of match expression: ${err.message}`,\n      );\n    }\n  }\n\n  return [input, ...args, fallback];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withInterpolateArgs(encoded, returnType, context) {\n  const interpolationType = encoded[1];\n  /**\n   * @type {number}\n   */\n  let base;\n  switch (interpolationType[0]) {\n    case 'linear':\n      base = 1;\n      break;\n    case 'exponential':\n      const b = interpolationType[1];\n      if (typeof b !== 'number' || b <= 0) {\n        throw new Error(\n          `expected a number base for exponential interpolation` +\n            `, got ${JSON.stringify(b)} instead`,\n        );\n      }\n      base = b;\n      break;\n    default:\n      throw new Error(\n        `invalid interpolation type: ${JSON.stringify(interpolationType)}`,\n      );\n  }\n\n  const interpolation = new LiteralExpression(NumberType, base);\n\n  let input;\n  try {\n    input = parse(encoded[2], NumberType, context);\n  } catch (err) {\n    throw new Error(\n      `failed to parse argument 1 in interpolate expression: ${err.message}`,\n    );\n  }\n\n  const args = new Array(encoded.length - 3);\n  for (let i = 0; i < args.length; i += 2) {\n    try {\n      const stop = parse(encoded[i + 3], NumberType, context);\n      args[i] = stop;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 2} for interpolate expression: ${err.message}`,\n      );\n    }\n    try {\n      const output = parse(encoded[i + 4], returnType, context);\n      args[i + 1] = output;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 3} for interpolate expression: ${err.message}`,\n      );\n    }\n  }\n\n  return [interpolation, input, ...args];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withCaseArgs(encoded, returnType, context) {\n  const fallback = parse(encoded[encoded.length - 1], returnType, context);\n\n  const args = new Array(encoded.length - 1);\n  for (let i = 0; i < args.length - 1; i += 2) {\n    try {\n      const condition = parse(encoded[i + 1], BooleanType, context);\n      args[i] = condition;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i} of case expression: ${err.message}`,\n      );\n    }\n    try {\n      const output = parse(encoded[i + 2], fallback.type, context);\n      args[i + 1] = output;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 1} of case expression: ${err.message}`,\n      );\n    }\n  }\n\n  args[args.length - 1] = fallback;\n  return args;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withInArgs(encoded, returnType, context) {\n  let haystack = encoded[2];\n  if (!Array.isArray(haystack)) {\n    throw new Error(\n      `the second argument for the \"in\" operator must be an array`,\n    );\n  }\n  /**\n   * @type {number}\n   */\n  let needleType;\n  if (typeof haystack[0] === 'string') {\n    if (haystack[0] !== 'literal') {\n      throw new Error(\n        `for the \"in\" operator, a string array should be wrapped in a \"literal\" operator to disambiguate from expressions`,\n      );\n    }\n    if (!Array.isArray(haystack[1])) {\n      throw new Error(\n        `failed to parse \"in\" expression: the literal operator must be followed by an array`,\n      );\n    }\n    haystack = haystack[1];\n    needleType = StringType;\n  } else {\n    needleType = NumberType;\n  }\n\n  const args = new Array(haystack.length);\n  for (let i = 0; i < args.length; i++) {\n    try {\n      const arg = parse(haystack[i], needleType, context);\n      args[i] = arg;\n    } catch (err) {\n      throw new Error(\n        `failed to parse haystack item ${i} for \"in\" expression: ${err.message}`,\n      );\n    }\n  }\n\n  const needle = parse(encoded[1], needleType, context);\n  return [needle, ...args];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withPaletteArgs(encoded, returnType, context) {\n  let index;\n  try {\n    index = parse(encoded[1], NumberType, context);\n  } catch (err) {\n    throw new Error(\n      `failed to parse first argument in palette expression: ${err.message}`,\n    );\n  }\n  const colors = encoded[2];\n  if (!Array.isArray(colors)) {\n    throw new Error('the second argument of palette must be an array');\n  }\n  const parsedColors = new Array(colors.length);\n  for (let i = 0; i < parsedColors.length; i++) {\n    let color;\n    try {\n      color = parse(colors[i], ColorType, context);\n    } catch (err) {\n      throw new Error(\n        `failed to parse color at index ${i} in palette expression: ${err.message}`,\n      );\n    }\n    if (!(color instanceof LiteralExpression)) {\n      throw new Error(\n        `the palette color at index ${i} must be a literal value`,\n      );\n    }\n    parsedColors[i] = color;\n  }\n  return [index, ...parsedColors];\n}\n\n/**\n * @param {Array<ArgValidator>} validators A chain of argument validators.  The last validator is expected\n * to return the parsed arguments.\n * @return {Parser} The parser.\n */\nfunction createCallExpressionParser(...validators) {\n  return function (encoded, returnType, context) {\n    const operator = encoded[0];\n\n    /**\n     * @type {Array<Expression>}\n     */\n    let args;\n    for (let i = 0; i < validators.length; i++) {\n      const parsed = validators[i](encoded, returnType, context);\n      if (i == validators.length - 1) {\n        if (!parsed) {\n          throw new Error(\n            'expected last argument validator to return the parsed args',\n          );\n        }\n        args = parsed;\n      }\n    }\n    return new CallExpression(returnType, operator, ...args);\n  };\n}\n\n/**\n * @param {Array} encoded The encoded expression.\n * @param {number} returnType The expected return type of the call expression.\n * @param {ParsingContext} context The parsing context.\n * @return {Expression} The parsed expression.\n */\nfunction parseCallExpression(encoded, returnType, context) {\n  const operator = encoded[0];\n\n  const parser = parsers[operator];\n  if (!parser) {\n    throw new Error(`unknown operator: ${operator}`);\n  }\n  return parser(encoded, returnType, context);\n}\n\n/**\n * Returns a simplified geometry type suited for the `geometry-type` operator\n * @param {import('../geom/Geometry.js').default|import('../render/Feature.js').default} geometry Geometry object\n * @return {'Point'|'LineString'|'Polygon'|''} Simplified geometry type; empty string of no geometry found\n */\nexport function computeGeometryType(geometry) {\n  if (!geometry) {\n    return '';\n  }\n  const type = geometry.getType();\n  switch (type) {\n    case 'Point':\n    case 'LineString':\n    case 'Polygon':\n      return type;\n    case 'MultiPoint':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n      return /** @type {'Point'|'LineString'|'Polygon'} */ (type.substring(5));\n    case 'Circle':\n      return 'Polygon';\n    case 'GeometryCollection':\n      return computeGeometryType(\n        /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n          geometry\n        ).getGeometries()[0],\n      );\n    default:\n      return '';\n  }\n}\n","/**\n * @module ol/expr/cpu\n */\n\nimport {\n  fromString,\n  lchaToRgba,\n  normalize,\n  rgbaToLcha,\n  toString,\n  withAlpha,\n} from '../color.js';\nimport {ColorType, LiteralExpression, Ops, parse} from './expression.js';\n\n/**\n * @fileoverview This module includes functions to build expressions for evaluation on the CPU.\n * Building is composed of two steps: parsing and compiling.  The parsing step takes an encoded\n * expression and returns an instance of one of the expression classes.  The compiling step takes\n * the expression instance and returns a function that can be evaluated in to return a literal\n * value.  The evaluator function should do as little allocation and work as possible.\n */\n\n/**\n * @typedef {Object} EvaluationContext\n * @property {Object} properties The values for properties used in 'get' expressions.\n * @property {Object} variables The values for variables used in 'var' expressions.\n * @property {number} resolution The map resolution.\n * @property {string|number|null} featureId The feature id.\n * @property {string} geometryType Geometry type of the current object.\n */\n\n/**\n * @return {EvaluationContext} A new evaluation context.\n */\nexport function newEvaluationContext() {\n  return {\n    variables: {},\n    properties: {},\n    resolution: NaN,\n    featureId: null,\n    geometryType: '',\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):import(\"./expression.js\").LiteralValue} ExpressionEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):boolean} BooleanEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):number} NumberEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):string} StringEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):(Array<number>|string)} ColorLikeEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):Array<number>} NumberArrayEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):Array<number>} CoordinateEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):(Array<number>)} SizeEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):(Array<number>|number)} SizeLikeEvaluator\n */\n\n/**\n * @param {import('./expression.js').EncodedExpression} encoded The encoded expression.\n * @param {number} type The expected type.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The expression evaluator.\n */\nexport function buildExpression(encoded, type, context) {\n  const expression = parse(encoded, type, context);\n  return compileExpression(expression, context);\n}\n\n/**\n * @param {import(\"./expression.js\").Expression} expression The expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileExpression(expression, context) {\n  if (expression instanceof LiteralExpression) {\n    // convert colors to array if possible\n    if (expression.type === ColorType && typeof expression.value === 'string') {\n      const colorValue = fromString(expression.value);\n      return function () {\n        return colorValue;\n      };\n    }\n    return function () {\n      return expression.value;\n    };\n  }\n  const operator = expression.operator;\n  switch (operator) {\n    case Ops.Number:\n    case Ops.String:\n    case Ops.Coalesce: {\n      return compileAssertionExpression(expression, context);\n    }\n    case Ops.Get:\n    case Ops.Var:\n    case Ops.Has: {\n      return compileAccessorExpression(expression, context);\n    }\n    case Ops.Id: {\n      return (context) => context.featureId;\n    }\n    case Ops.GeometryType: {\n      return (context) => context.geometryType;\n    }\n    case Ops.Concat: {\n      const args = expression.args.map((e) => compileExpression(e, context));\n      return (context) =>\n        ''.concat(...args.map((arg) => arg(context).toString()));\n    }\n    case Ops.Resolution: {\n      return (context) => context.resolution;\n    }\n    case Ops.Any:\n    case Ops.All:\n    case Ops.Between:\n    case Ops.In:\n    case Ops.Not: {\n      return compileLogicalExpression(expression, context);\n    }\n    case Ops.Equal:\n    case Ops.NotEqual:\n    case Ops.LessThan:\n    case Ops.LessThanOrEqualTo:\n    case Ops.GreaterThan:\n    case Ops.GreaterThanOrEqualTo: {\n      return compileComparisonExpression(expression, context);\n    }\n    case Ops.Multiply:\n    case Ops.Divide:\n    case Ops.Add:\n    case Ops.Subtract:\n    case Ops.Clamp:\n    case Ops.Mod:\n    case Ops.Pow:\n    case Ops.Abs:\n    case Ops.Floor:\n    case Ops.Ceil:\n    case Ops.Round:\n    case Ops.Sin:\n    case Ops.Cos:\n    case Ops.Atan:\n    case Ops.Sqrt: {\n      return compileNumericExpression(expression, context);\n    }\n    case Ops.Case: {\n      return compileCaseExpression(expression, context);\n    }\n    case Ops.Match: {\n      return compileMatchExpression(expression, context);\n    }\n    case Ops.Interpolate: {\n      return compileInterpolateExpression(expression, context);\n    }\n    case Ops.ToString: {\n      return compileConvertExpression(expression, context);\n    }\n    default: {\n      throw new Error(`Unsupported operator ${operator}`);\n    }\n    // TODO: unimplemented\n    // Ops.Zoom\n    // Ops.Time\n    // Ops.Array\n    // Ops.Color\n    // Ops.Band\n    // Ops.Palette\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileAssertionExpression(expression, context) {\n  const type = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (type) {\n    case Ops.Coalesce: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          const value = args[i](context);\n          if (typeof value !== 'undefined' && value !== null) {\n            return value;\n          }\n        }\n        throw new Error('Expected one of the values to be non-null');\n      };\n    }\n    case Ops.Number:\n    case Ops.String: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          const value = args[i](context);\n          if (typeof value === type) {\n            return value;\n          }\n        }\n        throw new Error(`Expected one of the values to be a ${type}`);\n      };\n    }\n    default: {\n      throw new Error(`Unsupported assertion operator ${type}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileAccessorExpression(expression, context) {\n  const nameExpression = /** @type {LiteralExpression} */ (expression.args[0]);\n  const name = /** @type {string} */ (nameExpression.value);\n  switch (expression.operator) {\n    case Ops.Get: {\n      return (context) => {\n        const args = expression.args;\n        let value = context.properties[name];\n        for (let i = 1, ii = args.length; i < ii; ++i) {\n          const keyExpression = /** @type {LiteralExpression} */ (args[i]);\n          const key = /** @type {string|number} */ (keyExpression.value);\n          value = value[key];\n        }\n        return value;\n      };\n    }\n    case Ops.Var: {\n      return (context) => context.variables[name];\n    }\n    case Ops.Has: {\n      return (context) => {\n        const args = expression.args;\n        if (!(name in context.properties)) {\n          return false;\n        }\n        let value = context.properties[name];\n        for (let i = 1, ii = args.length; i < ii; ++i) {\n          const keyExpression = /** @type {LiteralExpression} */ (args[i]);\n          const key = /** @type {string|number} */ (keyExpression.value);\n          if (!value || !Object.hasOwn(value, key)) {\n            return false;\n          }\n          value = value[key];\n        }\n        return true;\n      };\n    }\n    default: {\n      throw new Error(`Unsupported accessor operator ${expression.operator}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {BooleanEvaluator} The evaluator function.\n */\nfunction compileComparisonExpression(expression, context) {\n  const op = expression.operator;\n  const left = compileExpression(expression.args[0], context);\n  const right = compileExpression(expression.args[1], context);\n  switch (op) {\n    case Ops.Equal: {\n      return (context) => left(context) === right(context);\n    }\n    case Ops.NotEqual: {\n      return (context) => left(context) !== right(context);\n    }\n    case Ops.LessThan: {\n      return (context) => left(context) < right(context);\n    }\n    case Ops.LessThanOrEqualTo: {\n      return (context) => left(context) <= right(context);\n    }\n    case Ops.GreaterThan: {\n      return (context) => left(context) > right(context);\n    }\n    case Ops.GreaterThanOrEqualTo: {\n      return (context) => left(context) >= right(context);\n    }\n    default: {\n      throw new Error(`Unsupported comparison operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {BooleanEvaluator} The evaluator function.\n */\nfunction compileLogicalExpression(expression, context) {\n  const op = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (op) {\n    case Ops.Any: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          if (args[i](context)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    }\n    case Ops.All: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          if (!args[i](context)) {\n            return false;\n          }\n        }\n        return true;\n      };\n    }\n    case Ops.Between: {\n      return (context) => {\n        const value = args[0](context);\n        const min = args[1](context);\n        const max = args[2](context);\n        return value >= min && value <= max;\n      };\n    }\n    case Ops.In: {\n      return (context) => {\n        const value = args[0](context);\n        for (let i = 1; i < length; ++i) {\n          if (value === args[i](context)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    }\n    case Ops.Not: {\n      return (context) => !args[0](context);\n    }\n    default: {\n      throw new Error(`Unsupported logical operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {NumberEvaluator} The evaluator function.\n */\nfunction compileNumericExpression(expression, context) {\n  const op = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (op) {\n    case Ops.Multiply: {\n      return (context) => {\n        let value = 1;\n        for (let i = 0; i < length; ++i) {\n          value *= args[i](context);\n        }\n        return value;\n      };\n    }\n    case Ops.Divide: {\n      return (context) => args[0](context) / args[1](context);\n    }\n    case Ops.Add: {\n      return (context) => {\n        let value = 0;\n        for (let i = 0; i < length; ++i) {\n          value += args[i](context);\n        }\n        return value;\n      };\n    }\n    case Ops.Subtract: {\n      return (context) => args[0](context) - args[1](context);\n    }\n    case Ops.Clamp: {\n      return (context) => {\n        const value = args[0](context);\n        const min = args[1](context);\n        if (value < min) {\n          return min;\n        }\n        const max = args[2](context);\n        if (value > max) {\n          return max;\n        }\n        return value;\n      };\n    }\n    case Ops.Mod: {\n      return (context) => args[0](context) % args[1](context);\n    }\n    case Ops.Pow: {\n      return (context) => Math.pow(args[0](context), args[1](context));\n    }\n    case Ops.Abs: {\n      return (context) => Math.abs(args[0](context));\n    }\n    case Ops.Floor: {\n      return (context) => Math.floor(args[0](context));\n    }\n    case Ops.Ceil: {\n      return (context) => Math.ceil(args[0](context));\n    }\n    case Ops.Round: {\n      return (context) => Math.round(args[0](context));\n    }\n    case Ops.Sin: {\n      return (context) => Math.sin(args[0](context));\n    }\n    case Ops.Cos: {\n      return (context) => Math.cos(args[0](context));\n    }\n    case Ops.Atan: {\n      if (length === 2) {\n        return (context) => Math.atan2(args[0](context), args[1](context));\n      }\n      return (context) => Math.atan(args[0](context));\n    }\n    case Ops.Sqrt: {\n      return (context) => Math.sqrt(args[0](context));\n    }\n    default: {\n      throw new Error(`Unsupported numeric operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileCaseExpression(expression, context) {\n  const length = expression.args.length;\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  return (context) => {\n    for (let i = 0; i < length - 1; i += 2) {\n      const condition = args[i](context);\n      if (condition) {\n        return args[i + 1](context);\n      }\n    }\n    return args[length - 1](context);\n  };\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileMatchExpression(expression, context) {\n  const length = expression.args.length;\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  return (context) => {\n    const value = args[0](context);\n    for (let i = 1; i < length; i += 2) {\n      if (value === args[i](context)) {\n        return args[i + 1](context);\n      }\n    }\n    return args[length - 1](context);\n  };\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileInterpolateExpression(expression, context) {\n  const length = expression.args.length;\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  return (context) => {\n    const base = args[0](context);\n    const value = args[1](context);\n\n    let previousInput;\n    let previousOutput;\n    for (let i = 2; i < length; i += 2) {\n      const input = args[i](context);\n      let output = args[i + 1](context);\n      const isColor = Array.isArray(output);\n      if (isColor) {\n        output = withAlpha(output);\n      }\n      if (input >= value) {\n        if (i === 2) {\n          return output;\n        }\n        if (isColor) {\n          return interpolateColor(\n            base,\n            value,\n            previousInput,\n            previousOutput,\n            input,\n            output,\n          );\n        }\n        return interpolateNumber(\n          base,\n          value,\n          previousInput,\n          previousOutput,\n          input,\n          output,\n        );\n      }\n      previousInput = input;\n      previousOutput = output;\n    }\n    return previousOutput;\n  };\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileConvertExpression(expression, context) {\n  const op = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (op) {\n    case Ops.ToString: {\n      return (context) => {\n        const value = args[0](context);\n        if (expression.args[0].type === ColorType) {\n          return toString(value);\n        }\n        return value.toString();\n      };\n    }\n    default: {\n      throw new Error(`Unsupported convert operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {number} base The base.\n * @param {number} value The value.\n * @param {number} input1 The first input value.\n * @param {number} output1 The first output value.\n * @param {number} input2 The second input value.\n * @param {number} output2 The second output value.\n * @return {number} The interpolated value.\n */\nfunction interpolateNumber(base, value, input1, output1, input2, output2) {\n  const delta = input2 - input1;\n  if (delta === 0) {\n    return output1;\n  }\n  const along = value - input1;\n  const factor =\n    base === 1\n      ? along / delta\n      : (Math.pow(base, along) - 1) / (Math.pow(base, delta) - 1);\n  return output1 + factor * (output2 - output1);\n}\n\n/**\n * @param {number} base The base.\n * @param {number} value The value.\n * @param {number} input1 The first input value.\n * @param {import('../color.js').Color} rgba1 The first output value.\n * @param {number} input2 The second input value.\n * @param {import('../color.js').Color} rgba2 The second output value.\n * @return {import('../color.js').Color} The interpolated color.\n */\nfunction interpolateColor(base, value, input1, rgba1, input2, rgba2) {\n  const delta = input2 - input1;\n  if (delta === 0) {\n    return rgba1;\n  }\n  const lcha1 = rgbaToLcha(rgba1);\n  const lcha2 = rgbaToLcha(rgba2);\n  let deltaHue = lcha2[2] - lcha1[2];\n  if (deltaHue > 180) {\n    deltaHue -= 360;\n  } else if (deltaHue < -180) {\n    deltaHue += 360;\n  }\n\n  const lcha = [\n    interpolateNumber(base, value, input1, lcha1[0], input2, lcha2[0]),\n    interpolateNumber(base, value, input1, lcha1[1], input2, lcha2[1]),\n    lcha1[2] + interpolateNumber(base, value, input1, 0, input2, deltaHue),\n    interpolateNumber(base, value, input1, rgba1[3], input2, rgba2[3]),\n  ];\n  return normalize(lchaToRgba(lcha));\n}\n","/**\n * @module ol/render/canvas/style\n */\n\nimport {NO_COLOR} from '../../color.js';\nimport {buildExpression, newEvaluationContext} from '../../expr/cpu.js';\nimport {\n  BooleanType,\n  ColorType,\n  NumberArrayType,\n  NumberType,\n  StringType,\n  computeGeometryType,\n  newParsingContext,\n} from '../../expr/expression.js';\nimport {isEmpty} from '../../obj.js';\nimport {toSize} from '../../size.js';\nimport Circle from '../../style/Circle.js';\nimport Fill from '../../style/Fill.js';\nimport Icon from '../../style/Icon.js';\nimport RegularShape from '../../style/RegularShape.js';\nimport Stroke from '../../style/Stroke.js';\nimport Style from '../../style/Style.js';\nimport Text from '../../style/Text.js';\n\n/**\n * @fileoverview This module includes functions to build styles for the canvas renderer.  Building\n * is composed of two steps: parsing and compiling.  The parsing step takes an encoded expression\n * and returns an instance of one of the expression classes.  The compiling step takes the\n * expression instance and returns a function that can be evaluated to return a literal value.  The\n * evaluator function should do as little allocation and work as possible.\n */\n\n/**\n * @typedef {import(\"../../style/flat.js\").FlatStyle} FlatStyle\n */\n\n/**\n * @typedef {import(\"../../expr/expression.js\").EncodedExpression} EncodedExpression\n */\n\n/**\n * @typedef {import(\"../../expr/expression.js\").ParsingContext} ParsingContext\n */\n\n/**\n * @typedef {import(\"../../expr/expression.js\").CallExpression} CallExpression\n */\n\n/**\n * @typedef {import(\"../../expr/cpu.js\").EvaluationContext} EvaluationContext\n */\n\n/**\n * @typedef {import(\"../../expr/cpu.js\").ExpressionEvaluator} ExpressionEvaluator\n */\n\n/**\n * @param {EvaluationContext} context The evaluation context.\n * @return {boolean} Always true.\n */\nfunction always(context) {\n  return true;\n}\n\n/**\n * This function adapts a rule evaluator to the existing style function interface.\n * After we have deprecated the style function, we can use the compiled rules directly\n * and pass a more complete evaluation context (variables, zoom, time, etc.).\n *\n * @param {Array<import('../../style/flat.js').Rule>} rules The rules.\n * @return {import('../../style/Style.js').StyleFunction} A style function.\n */\nexport function rulesToStyleFunction(rules) {\n  const parsingContext = newParsingContext();\n  const evaluator = buildRuleSet(rules, parsingContext);\n  const evaluationContext = newEvaluationContext();\n  return function (feature, resolution) {\n    evaluationContext.properties = feature.getPropertiesInternal();\n    evaluationContext.resolution = resolution;\n    if (parsingContext.featureId) {\n      const id = feature.getId();\n      if (id !== undefined) {\n        evaluationContext.featureId = id;\n      } else {\n        evaluationContext.featureId = null;\n      }\n    }\n    if (parsingContext.geometryType) {\n      evaluationContext.geometryType = computeGeometryType(\n        feature.getGeometry(),\n      );\n    }\n    return evaluator(evaluationContext);\n  };\n}\n\n/**\n * This function adapts a style evaluator to the existing style function interface.\n * After we have deprecated the style function, we can use the compiled rules directly\n * and pass a more complete evaluation context (variables, zoom, time, etc.).\n *\n * @param {Array<import('../../style/flat.js').FlatStyle>} flatStyles The flat styles.\n * @return {import('../../style/Style.js').StyleFunction} A style function.\n */\nexport function flatStylesToStyleFunction(flatStyles) {\n  const parsingContext = newParsingContext();\n  const length = flatStyles.length;\n\n  /**\n   * @type {Array<StyleEvaluator>}\n   */\n  const evaluators = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    evaluators[i] = buildStyle(flatStyles[i], parsingContext);\n  }\n  const evaluationContext = newEvaluationContext();\n\n  /**\n   * @type {Array<Style>}\n   */\n  const styles = new Array(length);\n\n  return function (feature, resolution) {\n    evaluationContext.properties = feature.getPropertiesInternal();\n    evaluationContext.resolution = resolution;\n    if (parsingContext.featureId) {\n      const id = feature.getId();\n      if (id !== undefined) {\n        evaluationContext.featureId = id;\n      } else {\n        evaluationContext.featureId = null;\n      }\n    }\n    let nonNullCount = 0;\n    for (let i = 0; i < length; ++i) {\n      const style = evaluators[i](evaluationContext);\n      if (style) {\n        styles[nonNullCount] = style;\n        nonNullCount += 1;\n      }\n    }\n    styles.length = nonNullCount;\n    return styles;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Array<Style>} RuleSetEvaluator\n */\n\n/**\n * @typedef {Object} CompiledRule\n * @property {ExpressionEvaluator} filter The compiled filter evaluator.\n * @property {Array<StyleEvaluator>} styles The list of compiled style evaluators.\n */\n\n/**\n * @param {Array<import('../../style/flat.js').Rule>} rules The rules.\n * @param {ParsingContext} context The parsing context.\n * @return {RuleSetEvaluator} The evaluator function.\n */\nexport function buildRuleSet(rules, context) {\n  const length = rules.length;\n\n  /**\n   * @type {Array<CompiledRule>}\n   */\n  const compiledRules = new Array(length);\n\n  for (let i = 0; i < length; ++i) {\n    const rule = rules[i];\n    const filter =\n      'filter' in rule\n        ? buildExpression(rule.filter, BooleanType, context)\n        : always;\n\n    /**\n     * @type {Array<StyleEvaluator>}\n     */\n    let styles;\n    if (Array.isArray(rule.style)) {\n      const styleLength = rule.style.length;\n      styles = new Array(styleLength);\n      for (let j = 0; j < styleLength; ++j) {\n        styles[j] = buildStyle(rule.style[j], context);\n      }\n    } else {\n      styles = [buildStyle(rule.style, context)];\n    }\n\n    compiledRules[i] = {filter, styles};\n  }\n\n  return function (context) {\n    /**\n     * @type {Array<Style>}\n     */\n    const styles = [];\n\n    let someMatched = false;\n    for (let i = 0; i < length; ++i) {\n      const filterEvaluator = compiledRules[i].filter;\n      if (!filterEvaluator(context)) {\n        continue;\n      }\n      if (rules[i].else && someMatched) {\n        continue;\n      }\n      someMatched = true;\n      for (const styleEvaluator of compiledRules[i].styles) {\n        const style = styleEvaluator(context);\n        if (!style) {\n          continue;\n        }\n        styles.push(style);\n      }\n    }\n\n    return styles;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Style|null} StyleEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle A flat style literal.\n * @param {ParsingContext} context The parsing context.\n * @return {StyleEvaluator} A function that evaluates to a style.  The style returned by\n * this function will be reused between invocations.\n */\nexport function buildStyle(flatStyle, context) {\n  const evaluateFill = buildFill(flatStyle, '', context);\n  const evaluateStroke = buildStroke(flatStyle, '', context);\n  const evaluateText = buildText(flatStyle, context);\n  const evaluateImage = buildImage(flatStyle, context);\n  const evaluateZIndex = numberEvaluator(flatStyle, 'z-index', context);\n\n  if (\n    !evaluateFill &&\n    !evaluateStroke &&\n    !evaluateText &&\n    !evaluateImage &&\n    !isEmpty(flatStyle)\n  ) {\n    // assume this is a user error\n    // would be nice to check the properties and suggest \"did you mean...\"\n    throw new Error(\n      'No fill, stroke, point, or text symbolizer properties in style: ' +\n        JSON.stringify(flatStyle),\n    );\n  }\n\n  const style = new Style();\n  return function (context) {\n    let empty = true;\n    if (evaluateFill) {\n      const fill = evaluateFill(context);\n      if (fill) {\n        empty = false;\n      }\n      style.setFill(fill);\n    }\n    if (evaluateStroke) {\n      const stroke = evaluateStroke(context);\n      if (stroke) {\n        empty = false;\n      }\n      style.setStroke(stroke);\n    }\n    if (evaluateText) {\n      const text = evaluateText(context);\n      if (text) {\n        empty = false;\n      }\n      style.setText(text);\n    }\n    if (evaluateImage) {\n      const image = evaluateImage(context);\n      if (image) {\n        empty = false;\n      }\n      style.setImage(image);\n    }\n    if (evaluateZIndex) {\n      style.setZIndex(evaluateZIndex(context));\n    }\n    if (empty) {\n      return null;\n    }\n    return style;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Fill|null} FillEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @param {ParsingContext} context The parsing context.\n * @return {FillEvaluator?} A function that evaluates to a fill.\n */\nfunction buildFill(flatStyle, prefix, context) {\n  let evaluateColor;\n  if (prefix + 'fill-pattern-src' in flatStyle) {\n    evaluateColor = patternEvaluator(flatStyle, prefix + 'fill-', context);\n  } else {\n    if (flatStyle[prefix + 'fill-color'] === 'none') {\n      // avoids hit detection\n      return (context) => null;\n    }\n\n    evaluateColor = colorLikeEvaluator(\n      flatStyle,\n      prefix + 'fill-color',\n      context,\n    );\n  }\n  if (!evaluateColor) {\n    return null;\n  }\n\n  const fill = new Fill();\n  return function (context) {\n    const color = evaluateColor(context);\n    if (color === NO_COLOR) {\n      return null;\n    }\n    fill.setColor(color);\n    return fill;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Stroke|null} StrokeEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @param {ParsingContext} context The parsing context.\n * @return {StrokeEvaluator?} A function the evaluates to a stroke.\n */\nfunction buildStroke(flatStyle, prefix, context) {\n  const evaluateWidth = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-width',\n    context,\n  );\n\n  const evaluateColor = colorLikeEvaluator(\n    flatStyle,\n    prefix + 'stroke-color',\n    context,\n  );\n\n  if (!evaluateWidth && !evaluateColor) {\n    return null;\n  }\n\n  const evaluateLineCap = stringEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-cap',\n    context,\n  );\n\n  const evaluateLineJoin = stringEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-join',\n    context,\n  );\n\n  const evaluateLineDash = numberArrayEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-dash',\n    context,\n  );\n\n  const evaluateLineDashOffset = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-dash-offset',\n    context,\n  );\n\n  const evaluateMiterLimit = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-miter-limit',\n    context,\n  );\n\n  const stroke = new Stroke();\n  return function (context) {\n    if (evaluateColor) {\n      const color = evaluateColor(context);\n      if (color === NO_COLOR) {\n        return null;\n      }\n      stroke.setColor(color);\n    }\n\n    if (evaluateWidth) {\n      stroke.setWidth(evaluateWidth(context));\n    }\n\n    if (evaluateLineCap) {\n      const lineCap = evaluateLineCap(context);\n      if (lineCap !== 'butt' && lineCap !== 'round' && lineCap !== 'square') {\n        throw new Error('Expected butt, round, or square line cap');\n      }\n      stroke.setLineCap(lineCap);\n    }\n\n    if (evaluateLineJoin) {\n      const lineJoin = evaluateLineJoin(context);\n      if (\n        lineJoin !== 'bevel' &&\n        lineJoin !== 'round' &&\n        lineJoin !== 'miter'\n      ) {\n        throw new Error('Expected bevel, round, or miter line join');\n      }\n      stroke.setLineJoin(lineJoin);\n    }\n\n    if (evaluateLineDash) {\n      stroke.setLineDash(evaluateLineDash(context));\n    }\n\n    if (evaluateLineDashOffset) {\n      stroke.setLineDashOffset(evaluateLineDashOffset(context));\n    }\n\n    if (evaluateMiterLimit) {\n      stroke.setMiterLimit(evaluateMiterLimit(context));\n    }\n\n    return stroke;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Text} TextEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {TextEvaluator?} A function that evaluates to a text symbolizer.\n */\nfunction buildText(flatStyle, context) {\n  const prefix = 'text-';\n\n  // Currently, an Array<string> may be used for rich text support.  This doesn't\n  // work with our expression syntax where arrays of strings are interpreted as\n  // call expressions.  To support rich text, we could add a 'strings' operator\n  // where all the following arguments would be string values.\n  const evaluateValue = stringEvaluator(flatStyle, prefix + 'value', context);\n  if (!evaluateValue) {\n    return null;\n  }\n\n  const evaluateFill = buildFill(flatStyle, prefix, context);\n\n  const evaluateBackgroundFill = buildFill(\n    flatStyle,\n    prefix + 'background-',\n    context,\n  );\n\n  const evaluateStroke = buildStroke(flatStyle, prefix, context);\n\n  const evaluateBackgroundStroke = buildStroke(\n    flatStyle,\n    prefix + 'background-',\n    context,\n  );\n\n  const evaluateFont = stringEvaluator(flatStyle, prefix + 'font', context);\n\n  const evaluateMaxAngle = numberEvaluator(\n    flatStyle,\n    prefix + 'max-angle',\n    context,\n  );\n\n  const evaluateOffsetX = numberEvaluator(\n    flatStyle,\n    prefix + 'offset-x',\n    context,\n  );\n\n  const evaluateOffsetY = numberEvaluator(\n    flatStyle,\n    prefix + 'offset-y',\n    context,\n  );\n\n  const evaluateOverflow = booleanEvaluator(\n    flatStyle,\n    prefix + 'overflow',\n    context,\n  );\n\n  const evaluatePlacement = stringEvaluator(\n    flatStyle,\n    prefix + 'placement',\n    context,\n  );\n\n  const evaluateRepeat = numberEvaluator(flatStyle, prefix + 'repeat', context);\n\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n\n  const evaluateAlign = stringEvaluator(flatStyle, prefix + 'align', context);\n\n  const evaluateJustify = stringEvaluator(\n    flatStyle,\n    prefix + 'justify',\n    context,\n  );\n\n  const evaluateBaseline = stringEvaluator(\n    flatStyle,\n    prefix + 'baseline',\n    context,\n  );\n\n  const evaluateKeepUpright = booleanEvaluator(\n    flatStyle,\n    prefix + 'keep-upright',\n    context,\n  );\n\n  const evaluatePadding = numberArrayEvaluator(\n    flatStyle,\n    prefix + 'padding',\n    context,\n  );\n\n  // The following properties are not currently settable\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const text = new Text({declutterMode});\n\n  return function (context) {\n    text.setText(evaluateValue(context));\n\n    if (evaluateFill) {\n      text.setFill(evaluateFill(context));\n    }\n\n    if (evaluateBackgroundFill) {\n      text.setBackgroundFill(evaluateBackgroundFill(context));\n    }\n\n    if (evaluateStroke) {\n      text.setStroke(evaluateStroke(context));\n    }\n\n    if (evaluateBackgroundStroke) {\n      text.setBackgroundStroke(evaluateBackgroundStroke(context));\n    }\n\n    if (evaluateFont) {\n      text.setFont(evaluateFont(context));\n    }\n\n    if (evaluateMaxAngle) {\n      text.setMaxAngle(evaluateMaxAngle(context));\n    }\n\n    if (evaluateOffsetX) {\n      text.setOffsetX(evaluateOffsetX(context));\n    }\n\n    if (evaluateOffsetY) {\n      text.setOffsetY(evaluateOffsetY(context));\n    }\n\n    if (evaluateOverflow) {\n      text.setOverflow(evaluateOverflow(context));\n    }\n\n    if (evaluatePlacement) {\n      const placement = evaluatePlacement(context);\n      if (placement !== 'point' && placement !== 'line') {\n        throw new Error('Expected point or line for text-placement');\n      }\n      text.setPlacement(placement);\n    }\n\n    if (evaluateRepeat) {\n      text.setRepeat(evaluateRepeat(context));\n    }\n\n    if (evaluateScale) {\n      text.setScale(evaluateScale(context));\n    }\n\n    if (evaluateRotateWithView) {\n      text.setRotateWithView(evaluateRotateWithView(context));\n    }\n\n    if (evaluateRotation) {\n      text.setRotation(evaluateRotation(context));\n    }\n\n    if (evaluateAlign) {\n      const textAlign = evaluateAlign(context);\n      if (\n        textAlign !== 'left' &&\n        textAlign !== 'center' &&\n        textAlign !== 'right' &&\n        textAlign !== 'end' &&\n        textAlign !== 'start'\n      ) {\n        throw new Error(\n          'Expected left, right, center, start, or end for text-align',\n        );\n      }\n      text.setTextAlign(textAlign);\n    }\n\n    if (evaluateJustify) {\n      const justify = evaluateJustify(context);\n      if (justify !== 'left' && justify !== 'right' && justify !== 'center') {\n        throw new Error('Expected left, right, or center for text-justify');\n      }\n      text.setJustify(justify);\n    }\n\n    if (evaluateBaseline) {\n      const textBaseline = evaluateBaseline(context);\n      if (\n        textBaseline !== 'bottom' &&\n        textBaseline !== 'top' &&\n        textBaseline !== 'middle' &&\n        textBaseline !== 'alphabetic' &&\n        textBaseline !== 'hanging'\n      ) {\n        throw new Error(\n          'Expected bottom, top, middle, alphabetic, or hanging for text-baseline',\n        );\n      }\n      text.setTextBaseline(textBaseline);\n    }\n\n    if (evaluatePadding) {\n      text.setPadding(evaluatePadding(context));\n    }\n\n    if (evaluateKeepUpright) {\n      text.setKeepUpright(evaluateKeepUpright(context));\n    }\n\n    return text;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):import(\"../../style/Image.js\").default} ImageEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator?} A function that evaluates to an image symbolizer.\n */\nfunction buildImage(flatStyle, context) {\n  if ('icon-src' in flatStyle) {\n    return buildIcon(flatStyle, context);\n  }\n\n  if ('shape-points' in flatStyle) {\n    return buildShape(flatStyle, context);\n  }\n\n  if ('circle-radius' in flatStyle) {\n    return buildCircle(flatStyle, context);\n  }\n\n  return null;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator} A function that evaluates to an image symbolizer.\n */\nfunction buildIcon(flatStyle, context) {\n  const prefix = 'icon-';\n\n  // required property\n  const srcName = prefix + 'src';\n  const src = requireString(flatStyle[srcName], srcName);\n\n  // settable properties\n  const evaluateAnchor = coordinateEvaluator(\n    flatStyle,\n    prefix + 'anchor',\n    context,\n  );\n\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n\n  const evaluateOpacity = numberEvaluator(\n    flatStyle,\n    prefix + 'opacity',\n    context,\n  );\n\n  const evaluateDisplacement = coordinateEvaluator(\n    flatStyle,\n    prefix + 'displacement',\n    context,\n  );\n\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  // the remaining symbolizer properties are not currently settable\n  const anchorOrigin = optionalIconOrigin(flatStyle, prefix + 'anchor-origin');\n  const anchorXUnits = optionalIconAnchorUnits(\n    flatStyle,\n    prefix + 'anchor-x-units',\n  );\n  const anchorYUnits = optionalIconAnchorUnits(\n    flatStyle,\n    prefix + 'anchor-y-units',\n  );\n  const color = optionalColorLike(flatStyle, prefix + 'color');\n  const crossOrigin = optionalString(flatStyle, prefix + 'cross-origin');\n  const offset = optionalNumberArray(flatStyle, prefix + 'offset');\n  const offsetOrigin = optionalIconOrigin(flatStyle, prefix + 'offset-origin');\n  const width = optionalNumber(flatStyle, prefix + 'width');\n  const height = optionalNumber(flatStyle, prefix + 'height');\n  const size = optionalSize(flatStyle, prefix + 'size');\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const icon = new Icon({\n    src,\n    anchorOrigin,\n    anchorXUnits,\n    anchorYUnits,\n    color,\n    crossOrigin,\n    offset,\n    offsetOrigin,\n    height,\n    width,\n    size,\n    declutterMode,\n  });\n\n  return function (context) {\n    if (evaluateOpacity) {\n      icon.setOpacity(evaluateOpacity(context));\n    }\n\n    if (evaluateDisplacement) {\n      icon.setDisplacement(evaluateDisplacement(context));\n    }\n\n    if (evaluateRotation) {\n      icon.setRotation(evaluateRotation(context));\n    }\n\n    if (evaluateRotateWithView) {\n      icon.setRotateWithView(evaluateRotateWithView(context));\n    }\n\n    if (evaluateScale) {\n      icon.setScale(evaluateScale(context));\n    }\n\n    if (evaluateAnchor) {\n      icon.setAnchor(evaluateAnchor(context));\n    }\n    return icon;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator} A function that evaluates to an icon symbolizer.\n */\nfunction buildShape(flatStyle, context) {\n  const prefix = 'shape-';\n\n  // required property\n  const pointsName = prefix + 'points';\n  const radiusName = prefix + 'radius';\n  const points = requireNumber(flatStyle[pointsName], pointsName);\n  const radius = requireNumber(flatStyle[radiusName], radiusName);\n\n  // settable properties\n  const evaluateFill = buildFill(flatStyle, prefix, context);\n  const evaluateStroke = buildStroke(flatStyle, prefix, context);\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n  const evaluateDisplacement = coordinateEvaluator(\n    flatStyle,\n    prefix + 'displacement',\n    context,\n  );\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  // the remaining properties are not currently settable\n  const radius2 = optionalNumber(flatStyle, prefix + 'radius2');\n  const angle = optionalNumber(flatStyle, prefix + 'angle');\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const shape = new RegularShape({\n    points,\n    radius,\n    radius2,\n    angle,\n    declutterMode,\n  });\n\n  return function (context) {\n    if (evaluateFill) {\n      shape.setFill(evaluateFill(context));\n    }\n    if (evaluateStroke) {\n      shape.setStroke(evaluateStroke(context));\n    }\n    if (evaluateDisplacement) {\n      shape.setDisplacement(evaluateDisplacement(context));\n    }\n    if (evaluateRotation) {\n      shape.setRotation(evaluateRotation(context));\n    }\n    if (evaluateRotateWithView) {\n      shape.setRotateWithView(evaluateRotateWithView(context));\n    }\n    if (evaluateScale) {\n      shape.setScale(evaluateScale(context));\n    }\n\n    return shape;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator} A function that evaluates to a circle symbolizer.\n */\nfunction buildCircle(flatStyle, context) {\n  const prefix = 'circle-';\n\n  // settable properties\n  const evaluateFill = buildFill(flatStyle, prefix, context);\n  const evaluateStroke = buildStroke(flatStyle, prefix, context);\n  const evaluateRadius = numberEvaluator(flatStyle, prefix + 'radius', context);\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n  const evaluateDisplacement = coordinateEvaluator(\n    flatStyle,\n    prefix + 'displacement',\n    context,\n  );\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  // the remaining properties are not currently settable\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const circle = new Circle({\n    radius: 5, // this is arbitrary, but required - the evaluated radius is used below\n    declutterMode,\n  });\n\n  return function (context) {\n    if (evaluateRadius) {\n      circle.setRadius(evaluateRadius(context));\n    }\n    if (evaluateFill) {\n      circle.setFill(evaluateFill(context));\n    }\n    if (evaluateStroke) {\n      circle.setStroke(evaluateStroke(context));\n    }\n    if (evaluateDisplacement) {\n      circle.setDisplacement(evaluateDisplacement(context));\n    }\n    if (evaluateRotation) {\n      circle.setRotation(evaluateRotation(context));\n    }\n    if (evaluateRotateWithView) {\n      circle.setRotateWithView(evaluateRotateWithView(context));\n    }\n    if (evaluateScale) {\n      circle.setScale(evaluateScale(context));\n    }\n\n    return circle;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').NumberEvaluator|undefined} The expression evaluator or undefined.\n */\nfunction numberEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return undefined;\n  }\n  const evaluator = buildExpression(flatStyle[name], NumberType, context);\n  return function (context) {\n    return requireNumber(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').StringEvaluator?} The expression evaluator.\n */\nfunction stringEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(flatStyle[name], StringType, context);\n  return function (context) {\n    return requireString(evaluator(context), name);\n  };\n}\n\nfunction patternEvaluator(flatStyle, prefix, context) {\n  const srcEvaluator = stringEvaluator(\n    flatStyle,\n    prefix + 'pattern-src',\n    context,\n  );\n  const offsetEvaluator = sizeEvaluator(\n    flatStyle,\n    prefix + 'pattern-offset',\n    context,\n  );\n  const patternSizeEvaluator = sizeEvaluator(\n    flatStyle,\n    prefix + 'pattern-size',\n    context,\n  );\n  const colorEvaluator = colorLikeEvaluator(\n    flatStyle,\n    prefix + 'color',\n    context,\n  );\n  return function (context) {\n    return {\n      src: srcEvaluator(context),\n      offset: offsetEvaluator && offsetEvaluator(context),\n      size: patternSizeEvaluator && patternSizeEvaluator(context),\n      color: colorEvaluator && colorEvaluator(context),\n    };\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').BooleanEvaluator?} The expression evaluator.\n */\nfunction booleanEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(flatStyle[name], BooleanType, context);\n  return function (context) {\n    const value = evaluator(context);\n    if (typeof value !== 'boolean') {\n      throw new Error(`Expected a boolean for ${name}`);\n    }\n    return value;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').ColorLikeEvaluator?} The expression evaluator.\n */\nfunction colorLikeEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(flatStyle[name], ColorType, context);\n  return function (context) {\n    return requireColorLike(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').NumberArrayEvaluator?} The expression evaluator.\n */\nfunction numberArrayEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(flatStyle[name], NumberArrayType, context);\n  return function (context) {\n    return requireNumberArray(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').CoordinateEvaluator?} The expression evaluator.\n */\nfunction coordinateEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(flatStyle[name], NumberArrayType, context);\n  return function (context) {\n    const array = requireNumberArray(evaluator(context), name);\n    if (array.length !== 2) {\n      throw new Error(`Expected two numbers for ${name}`);\n    }\n    return array;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').SizeEvaluator?} The expression evaluator.\n */\nfunction sizeEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(flatStyle[name], NumberArrayType, context);\n  return function (context) {\n    return requireSize(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').SizeLikeEvaluator?} The expression evaluator.\n */\nfunction sizeLikeEvaluator(flatStyle, name, context) {\n  if (!(name in flatStyle)) {\n    return null;\n  }\n  const evaluator = buildExpression(\n    flatStyle[name],\n    NumberArrayType | NumberType,\n    context,\n  );\n  return function (context) {\n    return requireSizeLike(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {number|undefined} A number or undefined.\n */\nfunction optionalNumber(flatStyle, property) {\n  const value = flatStyle[property];\n  if (value === undefined) {\n    return undefined;\n  }\n  if (typeof value !== 'number') {\n    throw new Error(`Expected a number for ${property}`);\n  }\n  return value;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import(\"../../size.js\").Size|undefined} A size or undefined.\n */\nfunction optionalSize(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (typeof encoded === 'number') {\n    return toSize(encoded);\n  }\n  if (!Array.isArray(encoded)) {\n    throw new Error(`Expected a number or size array for ${property}`);\n  }\n  if (\n    encoded.length !== 2 ||\n    typeof encoded[0] !== 'number' ||\n    typeof encoded[1] !== 'number'\n  ) {\n    throw new Error(`Expected a number or size array for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {string|undefined} A string or undefined.\n */\nfunction optionalString(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (typeof encoded !== 'string') {\n    throw new Error(`Expected a string for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import(\"../../style/Icon.js\").IconOrigin|undefined} An icon origin or undefined.\n */\nfunction optionalIconOrigin(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (\n    encoded !== 'bottom-left' &&\n    encoded !== 'bottom-right' &&\n    encoded !== 'top-left' &&\n    encoded !== 'top-right'\n  ) {\n    throw new Error(\n      `Expected bottom-left, bottom-right, top-left, or top-right for ${property}`,\n    );\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import(\"../../style/Icon.js\").IconAnchorUnits|undefined} Icon anchor units or undefined.\n */\nfunction optionalIconAnchorUnits(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (encoded !== 'pixels' && encoded !== 'fraction') {\n    throw new Error(`Expected pixels or fraction for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {Array<number>|undefined} An array of numbers or undefined.\n */\nfunction optionalNumberArray(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  return requireNumberArray(encoded, property);\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import('../../style/Style.js').DeclutterMode} Icon declutter mode.\n */\nfunction optionalDeclutterMode(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (typeof encoded !== 'string') {\n    throw new Error(`Expected a string for ${property}`);\n  }\n  if (encoded !== 'declutter' && encoded !== 'obstacle' && encoded !== 'none') {\n    throw new Error(`Expected declutter, obstacle, or none for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {string|Array<number>|undefined} A string or an array of color values or undefined.\n */\nfunction optionalColorLike(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  return requireColorLike(encoded, property);\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {Array<number>} An array of numbers.\n */\nfunction requireNumberArray(value, property) {\n  if (!Array.isArray(value)) {\n    throw new Error(`Expected an array for ${property}`);\n  }\n  const length = value.length;\n  for (let i = 0; i < length; ++i) {\n    if (typeof value[i] !== 'number') {\n      throw new Error(`Expected an array of numbers for ${property}`);\n    }\n  }\n  return value;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {string} A string.\n */\nfunction requireString(value, property) {\n  if (typeof value !== 'string') {\n    throw new Error(`Expected a string for ${property}`);\n  }\n  return value;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {number} A number.\n */\nfunction requireNumber(value, property) {\n  if (typeof value !== 'number') {\n    throw new Error(`Expected a number for ${property}`);\n  }\n  return value;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {Array<number>|string} A color.\n */\nfunction requireColorLike(value, property) {\n  if (typeof value === 'string') {\n    return value;\n  }\n  const array = requireNumberArray(value, property);\n  const length = array.length;\n  if (length < 3 || length > 4) {\n    throw new Error(`Expected a color with 3 or 4 values for ${property}`);\n  }\n  return array;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {Array<number>} A number or an array of two numbers.\n */\nfunction requireSize(value, property) {\n  const size = requireNumberArray(value, property);\n  if (size.length !== 2) {\n    throw new Error(`Expected an array of two numbers for ${property}`);\n  }\n  return size;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {number|Array<number>} A number or an array of two numbers.\n */\nfunction requireSizeLike(value, property) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return requireSize(value, property);\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/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array<number>=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\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|undefined} resolution Resolution.\n     * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @param {Array<number>} [centerShift] Shift between map center and viewport center.\n     * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n     */\n    function (center, resolution, size, isMoving, centerShift) {\n      if (!center) {\n        return undefined;\n      }\n      if (!resolution && !onlyCenter) {\n        return center;\n      }\n      const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n      const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n      const shiftX = centerShift ? centerShift[0] : 0;\n      const shiftY = centerShift ? centerShift[1] : 0;\n      let minX = extent[0] + viewWidth / 2 + shiftX;\n      let maxX = extent[2] - viewWidth / 2 + shiftX;\n      let minY = extent[1] + viewHeight / 2 + shiftY;\n      let maxY = extent[3] - viewHeight / 2 + shiftY;\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\n      // during an interaction, allow some overscroll\n      if (isMoving && smooth && resolution) {\n        const ratio = 30 * resolution;\n        x +=\n          -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 +=\n          -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    }\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/easing\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 * 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 * 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 * 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 * 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  }\n  return 1 - inAndOut(2 * (t - 0.5));\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 * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into account 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 * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(\n  resolution,\n  maxExtent,\n  viewportSize,\n  showFullExtent,\n) {\n  const xResolution = getWidth(maxExtent) / viewportSize[0];\n  const yResolution = getHeight(maxExtent) / viewportSize[1];\n\n  if (showFullExtent) {\n    return Math.min(resolution, Math.max(xResolution, yResolution));\n  }\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 *=\n    Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n    1;\n  if (minResolution) {\n    result = Math.max(result, minResolution);\n    result /=\n      Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n        ratio +\n      1;\n  }\n  return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array<number>} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n  resolutions,\n  smooth,\n  maxExtent,\n  showFullExtent,\n) {\n  smooth = smooth !== undefined ? smooth : true;\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} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Resolution.\n     */\n    function (resolution, direction, size, isMoving) {\n      if (resolution !== undefined) {\n        const maxResolution = resolutions[0];\n        const minResolution = resolutions[resolutions.length - 1];\n        const cappedMaxRes = maxExtent\n          ? getViewportClampedResolution(\n              maxResolution,\n              maxExtent,\n              size,\n              showFullExtent,\n            )\n          : maxResolution;\n\n        // during interacting or animating, allow intermediary values\n        if (isMoving) {\n          if (!smooth) {\n            return clamp(resolution, minResolution, cappedMaxRes);\n          }\n          return getSmoothClampedResolution(\n            resolution,\n            cappedMaxRes,\n            minResolution,\n          );\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      }\n      return undefined;\n    }\n  );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n  power,\n  maxResolution,\n  minResolution,\n  smooth,\n  maxExtent,\n  showFullExtent,\n) {\n  smooth = smooth !== undefined ? smooth : true;\n  minResolution = minResolution !== undefined ? minResolution : 0;\n\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} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Resolution.\n     */\n    function (resolution, direction, size, isMoving) {\n      if (resolution !== undefined) {\n        const cappedMaxRes = maxExtent\n          ? getViewportClampedResolution(\n              maxResolution,\n              maxExtent,\n              size,\n              showFullExtent,\n            )\n          : maxResolution;\n\n        // during interacting or animating, allow intermediary values\n        if (isMoving) {\n          if (!smooth) {\n            return clamp(resolution, minResolution, cappedMaxRes);\n          }\n          return getSmoothClampedResolution(\n            resolution,\n            cappedMaxRes,\n            minResolution,\n          );\n        }\n\n        const tolerance = 1e-9;\n        const minZoomLevel = Math.ceil(\n          Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance,\n        );\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        );\n        const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n        const newResolution = maxResolution / Math.pow(power, zoomLevel);\n        return clamp(newResolution, minResolution, cappedMaxRes);\n      }\n      return undefined;\n    }\n  );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n  maxResolution,\n  minResolution,\n  smooth,\n  maxExtent,\n  showFullExtent,\n) {\n  smooth = smooth !== undefined ? smooth : true;\n\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} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Resolution.\n     */\n    function (resolution, direction, size, isMoving) {\n      if (resolution !== undefined) {\n        const cappedMaxRes = maxExtent\n          ? getViewportClampedResolution(\n              maxResolution,\n              maxExtent,\n              size,\n              showFullExtent,\n            )\n          : maxResolution;\n\n        if (!smooth || !isMoving) {\n          return clamp(resolution, minResolution, cappedMaxRes);\n        }\n        return getSmoothClampedResolution(\n          resolution,\n          cappedMaxRes,\n          minResolution,\n        );\n      }\n      return undefined;\n    }\n  );\n}\n","/**\n * @module ol/rotationconstraint\n */\nimport {toRadians} from './math.js';\n\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\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  }\n  return undefined;\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  }\n  return undefined;\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} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Rotation.\n     */\n    function (rotation, isMoving) {\n      if (isMoving) {\n        return rotation;\n      }\n\n      if (rotation !== undefined) {\n        rotation = Math.floor(rotation / theta + 0.5) * theta;\n        return rotation;\n      }\n      return undefined;\n    }\n  );\n}\n\n/**\n * @param {number} [tolerance] Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(tolerance) {\n  const t = tolerance === undefined ? toRadians(5) : tolerance;\n  return (\n    /**\n     * @param {number|undefined} rotation Rotation.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Rotation.\n     */\n    function (rotation, isMoving) {\n      if (isMoving || rotation === undefined) {\n        return rotation;\n      }\n\n      if (Math.abs(rotation) <= t) {\n        return 0;\n      }\n      return rotation;\n    }\n  );\n}\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/View\n */\nimport BaseObject from './Object.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {linearFindNearest} from './array.js';\nimport {assert} from './asserts.js';\nimport {createExtent, none as centerNone} from './centerconstraint.js';\nimport {\n  add as addCoordinate,\n  equals,\n  equals as coordinatesEqual,\n  rotate as rotateCoordinate,\n} from './coordinate.js';\nimport {easeOut, inAndOut} from './easing.js';\nimport {\n  getCenter,\n  getForViewAndSize,\n  getHeight,\n  getWidth,\n  isEmpty,\n} from './extent.js';\nimport {VOID} from './functions.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\nimport {clamp, modulo} from './math.js';\nimport {\n  METERS_PER_UNIT,\n  createProjection,\n  disableCoordinateWarning,\n  fromUserCoordinate,\n  fromUserExtent,\n  getUserProjection,\n  toUserCoordinate,\n  toUserExtent,\n} from './proj.js';\nimport {\n  createMinMaxResolution,\n  createSnapToPower,\n  createSnapToResolutions,\n} from './resolutionconstraint.js';\nimport {\n  createSnapToN,\n  createSnapToZero,\n  disable,\n  none as rotationNone,\n} from './rotationconstraint.js';\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to\n * fit the extent into. Defaults to the size of the map the view is associated with.\n * If no map or multiple maps are connected to the view, provide the desired box size\n * (e.g. `map.getSize()`).\n * @property {!Array<number>} [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):void} [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 * @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 {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\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<number>} [resolutions] Resolutions that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `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 * @property {!Array<number>} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\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 * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center (in view projection coordinates).\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {import(\"./coordinate.js\").Coordinate} [nextCenter] The next center during an animation series.\n * @property {number} [nextResolution] The next resolution during an animation series.\n * @property {number} [nextRotation] The next rotation during an animation series.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n\n/**\n * Like {@link import(\"./Map.js\").FrameState}, but just `viewState` and `extent`.\n * @typedef {Object} ViewStateLayerStateExtent\n * @property {State} viewState View state.\n * @property {import(\"./extent.js\").Extent} extent Extent (in user projection coordinates).\n * @property {Array<import(\"./layer/Layer.js\").State>} [layerStatesArray] Layer states.\n */\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<ViewObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|ViewObjectEventTypes, Return>} ViewOnSignature\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 * Web 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 `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   * @param {ViewOptions} [options] View options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {ViewOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ViewOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ViewOnSignature<void>}\n     */\n    this.un;\n\n    options = Object.assign({}, options);\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.hints_ = [0, 0];\n\n    /**\n     * @private\n     * @type {Array<Array<Animation>>}\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(\"./size.js\").Size}\n     */\n    this.viewportSize_ = [100, 100];\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    /**\n     * @private\n     * @type {import(\"./coordinate.js\").Coordinate}\n     */\n    this.nextCenter_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.nextResolution_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.nextRotation_;\n\n    /**\n     * @private\n     * @type {import(\"./coordinate.js\").Coordinate|undefined}\n     */\n    this.cancelAnchor_ = undefined;\n\n    if (options.projection) {\n      disableCoordinateWarning();\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    const properties = Object.assign({}, options);\n    for (const key in ViewProperty) {\n      delete properties[key];\n    }\n    this.setProperties(properties, true);\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<number>|undefined}\n     */\n    this.resolutions_ = options.resolutions;\n\n    /**\n     * @type {Array<number>|undefined}\n     * @private\n     */\n    this.padding_ = options.padding;\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(\n      options.center !== undefined ? options.center : null,\n    );\n    if (options.resolution !== undefined) {\n      this.setResolution(options.resolution);\n    } else if (options.zoom !== undefined) {\n      this.setZoom(options.zoom);\n    }\n  }\n\n  /**\n   * Padding (in css pixels).\n   * If the map viewport is partially covered with other content (overlays) along\n   * its edges, this setting allows to shift the center of the viewport away from that\n   * content. The order of the values in the array is top, right, bottom, left.\n   * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n   * @type {Array<number>|undefined}\n   * @api\n   */\n  get padding() {\n    return this.padding_;\n  }\n  set padding(padding) {\n    let oldPadding = this.padding_;\n    this.padding_ = padding;\n    const center = this.getCenterInternal();\n    if (center) {\n      const newPadding = padding || [0, 0, 0, 0];\n      oldPadding = oldPadding || [0, 0, 0, 0];\n      const resolution = this.getResolution();\n      const offsetX =\n        (resolution / 2) *\n        (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n      const offsetY =\n        (resolution / 2) *\n        (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n      this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\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 = this.getProperties();\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 Object.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 = Object.assign({}, options);\n        options.center = fromUserCoordinate(\n          options.center,\n          this.getProjection(),\n        );\n      }\n      if (options.anchor) {\n        options = Object.assign({}, options);\n        options.anchor = fromUserCoordinate(\n          options.anchor,\n          this.getProjection(),\n        );\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 (\n      animationCount > 1 &&\n      typeof arguments[animationCount - 1] === 'function'\n    ) {\n      callback = arguments[animationCount - 1];\n      --animationCount;\n    }\n\n    let i = 0;\n    for (; i < animationCount && !this.isDef(); ++i) {\n      // if view properties are not yet set, shortcut to the final state\n      const state = arguments[i];\n      if (state.center) {\n        this.setCenterInternal(state.center);\n      }\n      if (state.zoom !== undefined) {\n        this.setZoom(state.zoom);\n      } else if (state.resolution) {\n        this.setResolution(state.resolution);\n      }\n      if (state.rotation !== undefined) {\n        this.setRotation(state.rotation);\n      }\n    }\n    if (i === animationCount) {\n      if (callback) {\n        animationCallback(callback, true);\n      }\n      return;\n    }\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 (; 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 =\n          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    let anchor;\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      if (!anchor) {\n        for (let j = 0, jj = series.length; j < jj; ++j) {\n          const animation = series[j];\n          if (!animation.complete) {\n            anchor = animation.anchor;\n            break;\n          }\n        }\n      }\n    }\n    this.animations_.length = 0;\n    this.cancelAnchor_ = anchor;\n    this.nextCenter_ = null;\n    this.nextResolution_ = NaN;\n    this.nextRotation_ = NaN;\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 =\n          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          this.nextCenter_ = animation.targetCenter;\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 =\n            progress === 1\n              ? animation.targetResolution\n              : animation.sourceResolution +\n                progress *\n                  (animation.targetResolution - animation.sourceResolution);\n          if (animation.anchor) {\n            const size = this.getViewportSize_(this.getRotation());\n            const constrainedResolution = this.constraints_.resolution(\n              resolution,\n              0,\n              size,\n              true,\n            );\n            this.targetCenter_ = this.calculateCenterZoom(\n              constrainedResolution,\n              animation.anchor,\n            );\n          }\n          this.nextResolution_ = animation.targetResolution;\n          this.targetResolution_ = resolution;\n          this.applyTargetState_(true);\n        }\n        if (\n          animation.sourceRotation !== undefined &&\n          animation.targetRotation !== undefined\n        ) {\n          const rotation =\n            progress === 1\n              ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n                Math.PI\n              : animation.sourceRotation +\n                progress *\n                  (animation.targetRotation - animation.sourceRotation);\n          if (animation.anchor) {\n            const constrainedRotation = this.constraints_.rotation(\n              rotation,\n              true,\n            );\n            this.targetCenter_ = this.calculateCenterRotate(\n              constrainedRotation,\n              animation.anchor,\n            );\n          }\n          this.nextRotation_ = animation.targetRotation;\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        this.nextCenter_ = null;\n        this.nextResolution_ = NaN;\n        this.nextRotation_ = NaN;\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(\n        this.updateAnimations_.bind(this),\n      );\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 =\n        anchor[0] -\n        (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n      const y =\n        anchor[1] -\n        (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n      center = [x, y];\n    }\n    return center;\n  }\n\n  /**\n   * Returns the current viewport size.\n   * @private\n   * @param {number} [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  getViewportSize_(rotation) {\n    const size = this.viewportSize_;\n    if (rotation) {\n      const w = size[0];\n      const h = size[1];\n      return [\n        Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation)),\n        Math.abs(w * Math.sin(rotation)) + Math.abs(h * Math.cos(rotation)),\n      ];\n    }\n    return size;\n  }\n\n  /**\n   * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n   * to avoid performance hit and layout reflow.\n   * This should be done on map size change.\n   * Note: the constraints are not resolved during an animation to avoid stopping it\n   * @param {import(\"./size.js\").Size} [size] Viewport size; if undefined, [100, 100] is assumed\n   */\n  setViewportSize(size) {\n    this.viewportSize_ = Array.isArray(size) ? size.slice() : [100, 100];\n    if (!this.getAnimating()) {\n      this.resolveConstraints(0);\n    }\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} */ (\n      this.get(ViewProperty.CENTER)\n    );\n  }\n\n  /**\n   * @return {Constraints} Constraints.\n   */\n  getConstraints() {\n    return this.constraints_;\n  }\n\n  /**\n   * @return {boolean} Resolution constraint is set\n   */\n  getConstrainResolution() {\n    return this.get('constrainResolution');\n  }\n\n  /**\n   * @param {Array<number>} [hints] Destination array.\n   * @return {Array<number>} Hint.\n   */\n  getHints(hints) {\n    if (hints !== undefined) {\n      hints[0] = this.hints_[0];\n      hints[1] = this.hints_[1];\n      return hints;\n    }\n    return this.hints_.slice();\n  }\n\n  /**\n   * Calculate the extent for the current view state and the passed box size.\n   * @param {import(\"./size.js\").Size} [size] The pixel dimensions of the box\n   * into which the calculated extent should fit. Defaults to the size of the\n   * map the view is associated with.\n   * If no map or multiple maps are connected to the view, provide the desired\n   * box size (e.g. `map.getSize()`).\n   * @return {import(\"./extent.js\").Extent} Extent.\n   * @api\n   */\n  calculateExtent(size) {\n    const extent = this.calculateExtentInternal(size);\n    return toUserExtent(extent, this.getProjection());\n  }\n\n  /**\n   * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided,\n   * the map's last known viewport size will be used.\n   * @return {import(\"./extent.js\").Extent} Extent.\n   */\n  calculateExtentInternal(size) {\n    size = size || this.getViewportSizeMinusPadding_();\n    const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (\n      this.getCenterInternal()\n    );\n    assert(center, 'The view center is not defined');\n    const resolution = /** @type {!number} */ (this.getResolution());\n    assert(resolution !== undefined, 'The view resolution is not defined');\n    const rotation = /** @type {!number} */ (this.getRotation());\n    assert(rotation !== undefined, '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} */ (\n      this.getZoomForResolution(this.minResolution_)\n    );\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} */ (\n      this.getZoomForResolution(this.maxResolution_)\n    );\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 should 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<number>|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} [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, size) {\n    return this.getResolutionForExtentInternal(\n      fromUserExtent(extent, this.getProjection()),\n      size,\n    );\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} [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, size) {\n    size = size || this.getViewportSizeMinusPadding_();\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} [power] Power.\n   * @return {function(number): number} Resolution for value function.\n   */\n  getResolutionForValueFunction(power) {\n    power = power || 2;\n    const maxResolution = this.getConstrainedResolution(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  /**\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} [power] Power.\n   * @return {function(number): number} Value for resolution function.\n   */\n  getValueForResolutionFunction(power) {\n    const logPower = Math.log(power || 2);\n    const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n    const minResolution = this.minResolution_;\n    const max = Math.log(maxResolution / minResolution) / logPower;\n    return (\n      /**\n       * @param {number} resolution Resolution.\n       * @return {number} Value.\n       */\n      function (resolution) {\n        const value = Math.log(maxResolution / resolution) / logPower / max;\n        return value;\n      }\n    );\n  }\n\n  /**\n   * Returns the size of the viewport minus padding.\n   * @private\n   * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n   * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n   */\n  getViewportSizeMinusPadding_(rotation) {\n    let size = this.getViewportSize_(rotation);\n    const padding = this.padding_;\n    if (padding) {\n      size = [\n        size[0] - padding[1] - padding[3],\n        size[1] - padding[0] - padding[2],\n      ];\n    }\n    return size;\n  }\n\n  /**\n   * @return {State} View state.\n   */\n  getState() {\n    const projection = this.getProjection();\n    const resolution = this.getResolution();\n    const rotation = this.getRotation();\n    let center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n      this.getCenterInternal()\n    );\n    const padding = this.padding_;\n    if (padding) {\n      const reducedSize = this.getViewportSizeMinusPadding_();\n      center = calculateCenterOn(\n        center,\n        this.getViewportSize_(),\n        [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n        resolution,\n        rotation,\n      );\n    }\n    return {\n      center: center.slice(0),\n      projection: projection !== undefined ? projection : null,\n      resolution: resolution,\n      nextCenter: this.nextCenter_,\n      nextResolution: this.nextResolution_,\n      nextRotation: this.nextRotation_,\n      rotation: rotation,\n      zoom: this.getZoom(),\n    };\n  }\n\n  /**\n   * @return {ViewStateLayerStateExtent} Like `FrameState`, but just `viewState` and `extent`.\n   */\n  getViewStateAndExtent() {\n    return {\n      viewState: this.getState(),\n      extent: this.calculateExtent(),\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_?.length) {\n      if (this.resolutions_.length === 1) {\n        return this.resolutions_[0];\n      }\n      const baseLevel = clamp(\n        Math.floor(zoom),\n        0,\n        this.resolutions_.length - 2,\n      );\n      const zoomFactor =\n        this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n      return (\n        this.resolutions_[baseLevel] /\n        Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1))\n      );\n    }\n    return (\n      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} [options] Options.\n   * @api\n   */\n  fit(geometryOrExtent, options) {\n    /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n    let geometry;\n    assert(\n      Array.isArray(geometryOrExtent) ||\n        typeof (/** @type {?} */ (geometryOrExtent).getSimplifiedGeometry) ===\n          'function',\n      'Invalid extent or geometry provided as `geometry`',\n    );\n    if (Array.isArray(geometryOrExtent)) {\n      assert(\n        !isEmpty(geometryOrExtent),\n        'Cannot fit empty extent provided as `geometry`',\n      );\n      const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n      geometry = polygonFromExtent(extent);\n    } else if (geometryOrExtent.getType() === 'Circle') {\n      const extent = fromUserExtent(\n        geometryOrExtent.getExtent(),\n        this.getProjection(),\n      );\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} */ (\n          geometryOrExtent\n            .clone()\n            .transform(userProjection, this.getProjection())\n        );\n      } else {\n        geometry = geometryOrExtent;\n      }\n    }\n\n    this.fitInternal(geometry, options);\n  }\n\n  /**\n   * Calculate rotated extent\n   * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n   * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n   */\n  rotatedExtentForGeometry(geometry) {\n    const rotation = this.getRotation();\n    const cosAngle = Math.cos(rotation);\n    const sinAngle = Math.sin(-rotation);\n    const coords = geometry.getFlatCoordinates();\n    const stride = geometry.getStride();\n    let minRotX = +Infinity;\n    let minRotY = +Infinity;\n    let maxRotX = -Infinity;\n    let maxRotY = -Infinity;\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    return [minRotX, minRotY, maxRotX, maxRotY];\n  }\n\n  /**\n   * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n   * @param {FitOptions} [options] Options.\n   */\n  fitInternal(geometry, options) {\n    options = options || {};\n    let size = options.size;\n    if (!size) {\n      size = this.getViewportSizeMinusPadding_();\n    }\n    const padding =\n      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\n    const rotatedExtent = this.rotatedExtentForGeometry(geometry);\n\n    // calculate resolution\n    let resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n      size[0] - padding[1] - padding[3],\n      size[1] - padding[0] - padding[2],\n    ]);\n    resolution = isNaN(resolution)\n      ? minResolution\n      : Math.max(resolution, minResolution);\n    resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n    // calculate center\n    const rotation = this.getRotation();\n    const sinAngle = Math.sin(rotation);\n    const cosAngle = Math.cos(rotation);\n    const centerRot = getCenter(rotatedExtent);\n    centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n    centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n    const centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n    const centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n    const center = this.getConstrainedCenter([centerX, centerY], resolution);\n    const callback = options.callback ? options.callback : VOID;\n\n    if (options.duration !== undefined) {\n      this.animateInternal(\n        {\n          resolution: resolution,\n          center: center,\n          duration: options.duration,\n          easing: options.easing,\n        },\n        callback,\n      );\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(\n      fromUserCoordinate(coordinate, this.getProjection()),\n      size,\n      position,\n    );\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    this.setCenterInternal(\n      calculateCenterOn(\n        coordinate,\n        size,\n        position,\n        this.getResolution(),\n        this.getRotation(),\n      ),\n    );\n  }\n\n  /**\n   * Calculates the shift between map and viewport center.\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   * @return {Array<number>|undefined} Center shift.\n   */\n  calculateCenterShift(center, resolution, rotation, size) {\n    let centerShift;\n    const padding = this.padding_;\n    if (padding && center) {\n      const reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n      const shiftedCenter = calculateCenterOn(\n        center,\n        size,\n        [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n        resolution,\n        rotation,\n      );\n      centerShift = [\n        center[0] - shiftedCenter[0],\n        center[1] - shiftedCenter[1],\n      ];\n    }\n    return centerShift;\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([\n      center[0] + deltaCoordinates[0],\n      center[1] + deltaCoordinates[1],\n    ]);\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([\n      center[0] + deltaCoordinates[0],\n      center[1] + deltaCoordinates[1],\n    ]);\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} [anchor] The origin of the transformation.\n   * @api\n   */\n  adjustResolution(ratio, anchor) {\n    anchor = anchor && fromUserCoordinate(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} [anchor] The origin of the transformation.\n   */\n  adjustResolutionInternal(ratio, anchor) {\n    const isMoving = this.getAnimating() || this.getInteracting();\n    const size = this.getViewportSize_(this.getRotation());\n    const newResolution = this.constraints_.resolution(\n      this.targetResolution_ * ratio,\n      0,\n      size,\n      isMoving,\n    );\n\n    if (anchor) {\n      this.targetCenter_ = this.calculateCenterZoom(newResolution, 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} [anchor] The origin of the transformation.\n   * @api\n   */\n  adjustZoom(delta, anchor) {\n    this.adjustResolution(Math.pow(this.zoomFactor_, -delta), 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} [anchor] The rotation center.\n   * @api\n   */\n  adjustRotation(delta, anchor) {\n    if (anchor) {\n      anchor = fromUserCoordinate(anchor, this.getProjection());\n    }\n    this.adjustRotationInternal(delta, anchor);\n  }\n\n  /**\n   * @param {number} delta Relative value to add to the zoom rotation, in radians.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n   */\n  adjustRotationInternal(delta, anchor) {\n    const isMoving = this.getAnimating() || this.getInteracting();\n    const newRotation = this.constraints_.rotation(\n      this.targetRotation_ + delta,\n      isMoving,\n    );\n    if (anchor) {\n      this.targetCenter_ = this.calculateCenterRotate(newRotation, 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(\n      center ? fromUserCoordinate(center, this.getProjection()) : center,\n    );\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 {import(\"./ViewHint.js\").default} 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} [doNotCancelAnims] Do not cancel animations.\n   * @param {boolean} [forceMoving] Apply constraints as if the view is moving.\n   * @private\n   */\n  applyTargetState_(doNotCancelAnims, forceMoving) {\n    const isMoving =\n      this.getAnimating() || this.getInteracting() || forceMoving;\n\n    // compute rotation\n    const newRotation = this.constraints_.rotation(\n      this.targetRotation_,\n      isMoving,\n    );\n    const size = this.getViewportSize_(newRotation);\n    const newResolution = this.constraints_.resolution(\n      this.targetResolution_,\n      0,\n      size,\n      isMoving,\n    );\n    const newCenter = this.constraints_.center(\n      this.targetCenter_,\n      newResolution,\n      size,\n      isMoving,\n      this.calculateCenterShift(\n        this.targetCenter_,\n        newResolution,\n        newRotation,\n        size,\n      ),\n    );\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      this.set('zoom', this.getZoom(), true);\n    }\n    if (\n      !newCenter ||\n      !this.get(ViewProperty.CENTER) ||\n      !equals(this.get(ViewProperty.CENTER), newCenter)\n    ) {\n      this.set(ViewProperty.CENTER, newCenter);\n    }\n\n    if (this.getAnimating() && !doNotCancelAnims) {\n      this.cancelAnimations();\n    }\n    this.cancelAnchor_ = undefined;\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} [duration] The animation duration in ms.\n   * @param {number} [resolutionDirection] Which direction to zoom.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   */\n  resolveConstraints(duration, resolutionDirection, anchor) {\n    duration = duration !== undefined ? duration : 200;\n    const direction = resolutionDirection || 0;\n\n    const newRotation = this.constraints_.rotation(this.targetRotation_);\n    const size = this.getViewportSize_(newRotation);\n    const newResolution = this.constraints_.resolution(\n      this.targetResolution_,\n      direction,\n      size,\n    );\n    const newCenter = this.constraints_.center(\n      this.targetCenter_,\n      newResolution,\n      size,\n      false,\n      this.calculateCenterShift(\n        this.targetCenter_,\n        newResolution,\n        newRotation,\n        size,\n      ),\n    );\n\n    if (duration === 0 && !this.cancelAnchor_) {\n      this.targetResolution_ = newResolution;\n      this.targetRotation_ = newRotation;\n      this.targetCenter_ = newCenter;\n      this.applyTargetState_();\n      return;\n    }\n\n    anchor = anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n    this.cancelAnchor_ = undefined;\n\n    if (\n      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: 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} [duration] Animation duration in ms.\n   * @param {number} [resolutionDirection] Which direction to zoom.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   * @api\n   */\n  endInteraction(duration, resolutionDirection, anchor) {\n    anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n    this.endInteractionInternal(duration, 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} [duration] Animation duration in ms.\n   * @param {number} [resolutionDirection] Which direction to zoom.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   */\n  endInteractionInternal(duration, resolutionDirection, anchor) {\n    if (!this.getInteracting()) {\n      return;\n    }\n    this.setHint(ViewHint.INTERACTING, -1);\n    this.resolveConstraints(duration, resolutionDirection, 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} [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, targetResolution) {\n    const size = this.getViewportSize_(this.getRotation());\n    return this.constraints_.center(\n      targetCenter,\n      targetResolution || this.getResolution(),\n      size,\n    );\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} [direction] 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, direction) {\n    const targetRes = this.getResolutionForZoom(targetZoom);\n    return this.getZoomForResolution(\n      this.getConstrainedResolution(targetRes, direction),\n    );\n  }\n\n  /**\n   * Get a valid resolution according to the current view constraints.\n   * @param {number|undefined} targetResolution Target resolution.\n   * @param {number} [direction] 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, direction) {\n    direction = direction || 0;\n    const size = this.getViewportSize_(this.getRotation());\n\n    return this.constraints_.resolution(targetResolution, direction, size);\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 * @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 =\n      options.smoothExtentConstraint !== undefined\n        ? options.smoothExtentConstraint\n        : 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 * @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 =\n    options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n\n  let maxZoom =\n    options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n\n  const zoomFactor =\n    options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n\n  const multiWorld =\n    options.multiWorld !== undefined ? options.multiWorld : false;\n\n  const smooth =\n    options.smoothResolutionConstraint !== undefined\n      ? options.smoothResolutionConstraint\n      : true;\n\n  const showFullExtent =\n    options.showFullExtent !== undefined ? options.showFullExtent : false;\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 =\n      resolutions[maxZoom] !== undefined\n        ? resolutions[maxZoom]\n        : resolutions[resolutions.length - 1];\n\n    if (options.constrainResolution) {\n      resolutionConstraint = createSnapToResolutions(\n        resolutions,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    } else {\n      resolutionConstraint = createMinMaxResolution(\n        maxResolution,\n        minResolution,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\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.degrees) / projection.getMetersPerUnit()\n      : Math.max(getWidth(projExtent), getHeight(projExtent));\n\n    const defaultMaxResolution =\n      size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n    const defaultMinResolution =\n      defaultMaxResolution /\n      Math.pow(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 =\n      minZoom +\n      Math.floor(\n        Math.log(maxResolution / minResolution) / Math.log(zoomFactor),\n      );\n    minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n    if (options.constrainResolution) {\n      resolutionConstraint = createSnapToPower(\n        zoomFactor,\n        maxResolution,\n        minResolution,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    } else {\n      resolutionConstraint = createMinMaxResolution(\n        maxResolution,\n        minResolution,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    }\n  }\n  return {\n    constraint: resolutionConstraint,\n    maxResolution: maxResolution,\n    minResolution: minResolution,\n    minZoom: minZoom,\n    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 =\n    options.enableRotation !== undefined ? options.enableRotation : true;\n  if (enableRotation) {\n    const constrainRotation = options.constrainRotation;\n    if (constrainRotation === undefined || constrainRotation === true) {\n      return createSnapToZero();\n    }\n    if (constrainRotation === false) {\n      return rotationNone;\n    }\n    if (typeof constrainRotation === 'number') {\n      return createSnapToN(constrainRotation);\n    }\n    return rotationNone;\n  }\n  return disable;\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\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 * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n  // calculate rotated position\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  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  return [centerX, centerY];\n}\n\nexport default View;\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  MAP: 'map',\n};\n","/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport {assert} from '../asserts.js';\nimport {clamp} from '../math.js';\nimport {abstract} from '../util.js';\nimport LayerProperty from './Property.js';\n\n/**\n * A css color, or a function called with a view resolution returning a css color.\n *\n * @typedef {string|function(number):string} BackgroundColor\n * @api\n */\n\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n *    'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<BaseLayerObjectEventTypes, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|BaseLayerObjectEventTypes, Return>} BaseLayerOnSignature\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 | undefined} [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 {BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\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~BaseLayer} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object~BaseObject} 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    super();\n\n    /***\n     * @type {BaseLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {BaseLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {BaseLayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {BackgroundColor|false}\n     * @private\n     */\n    this.background_ = options.background;\n\n    /**\n     * @type {Object<string, *>}\n     */\n    const properties = Object.assign({}, options);\n    if (typeof options.properties === 'object') {\n      delete properties.properties;\n      Object.assign(properties, options.properties);\n    }\n\n    properties[LayerProperty.OPACITY] =\n      options.opacity !== undefined ? options.opacity : 1;\n    assert(\n      typeof properties[LayerProperty.OPACITY] === 'number',\n      'Layer opacity must be a number',\n    );\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_ =\n      properties.className !== undefined ? properties.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   * Get the background for this layer.\n   * @return {BackgroundColor|false} Layer background.\n   */\n  getBackground() {\n    return this.background_;\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} [managed] Layer is managed.\n   * @return {import(\"./Layer.js\").State} Layer state.\n   */\n  getLayerState(managed) {\n    /** @type {import(\"./Layer.js\").State} */\n    const state =\n      this.state_ ||\n      /** @type {?} */ ({\n        layer: this,\n        managed: managed === undefined ? true : managed,\n      });\n    const zIndex = this.getZIndex();\n    state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n    state.visible = this.getVisible();\n    state.extent = this.getExtent();\n    state.zIndex = zIndex === undefined && !state.managed ? Infinity : zIndex;\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<import(\"./Layer.js\").default>} [array] Array of layers (to be\n   *     modified in place).\n   * @return {Array<import(\"./Layer.js\").default>} Array of layers.\n   */\n  getLayersArray(array) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {Array<import(\"./Layer.js\").State>} [states] Optional list of layer\n   *     states (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").State>} List of layer states.\n   */\n  getLayerStatesArray(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 /** @type {import(\"../extent.js\").Extent|undefined} */ (\n      this.get(LayerProperty.EXTENT)\n    );\n  }\n\n  /**\n   * Return the maximum resolution of the layer. Returns Infinity if\n   * the layer has no maximum resolution set.\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. Returns 0 if\n   * the layer has no minimum resolution set.\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. Returns -Infinity if\n   * the layer has no minimum zoom set.\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. Returns Infinity if\n   * the layer has no maximum zoom set.\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/Source.js\").State} Source state.\n   */\n  getSourceState() {\n    return abstract();\n  }\n\n  /**\n   * Return the value of this layer's `visible` property. To find out whether the layer\n   * is visible on a map, use `isVisible()` instead.\n   * @return {boolean} The value of the `visible` property 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. Returns undefined if the layer is unmanaged.\n   * @return {number|undefined} The Z-index of the layer.\n   * @observable\n   * @api\n   */\n  getZIndex() {\n    return /** @type {number|undefined} */ (this.get(LayerProperty.Z_INDEX));\n  }\n\n  /**\n   * Sets the background color.\n   * @param {BackgroundColor} [background] Background color.\n   */\n  setBackground(background) {\n    this.background_ = background;\n    this.changed();\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', '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   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.state_) {\n      this.state_.layer = null;\n      this.state_ = null;\n    }\n    super.disposeInternal();\n  }\n}\n\nexport default BaseLayer;\n","/**\n * @module ol/layer/Layer\n */\nimport View from '../View.js';\nimport {assert} from '../asserts.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {intersects} from '../extent.js';\nimport RenderEventType from '../render/EventType.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\n\n/**\n * @typedef {function(import(\"../Map.js\").FrameState):HTMLElement} RenderFunction\n */\n\n/**\n * @typedef {'sourceready'|'change:source'} LayerEventType\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     LayerEventType, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../render/EventType\").LayerRenderEventTypes, import(\"../render/Event\").default, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|LayerEventType|\n *     import(\"../render/EventType\").LayerRenderEventTypes, Return>} LayerOnSignature\n */\n\n/**\n * @template {import(\"../source/Source.js\").default} [SourceType=import(\"../source/Source.js\").default]\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 * @property {SourceType} [source] Source for this layer.  If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer~Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../Map.js\").default|null} [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 * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer Layer.\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {boolean} visible Visible.\n * @property {boolean} managed Managed.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {number} zIndex ZIndex.\n * @property {number} maxResolution Maximum resolution.\n * @property {number} minResolution Minimum resolution.\n * @property {number} minZoom Minimum zoom.\n * @property {number} maxZoom Maximum zoom.\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 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 [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * Components like {@link module:ol/interaction/Draw~Draw} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * [layer.setMap()]{@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n * A `sourceready` event is fired when the layer's source is ready.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n * @fires import(\"../events/Event.js\").BaseEvent#sourceready\n *\n * @template {import(\"../source/Source.js\").default} [SourceType=import(\"../source/Source.js\").default]\n * @template {import(\"../renderer/Layer.js\").default} [RendererType=import(\"../renderer/Layer.js\").default]\n * @api\n */\nclass Layer extends BaseLayer {\n  /**\n   * @param {Options<SourceType>} options Layer options.\n   */\n  constructor(options) {\n    const baseOptions = Object.assign({}, options);\n    delete baseOptions.source;\n\n    super(baseOptions);\n\n    /***\n     * @type {LayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {LayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {LayerOnSignature<void>}\n     */\n    this.un;\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 {RendererType}\n     */\n    this.renderer_ = null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.sourceReady_ = false;\n\n    /**\n     * @protected\n     * @type {boolean}\n     */\n    this.rendered = false;\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.addChangeListener(\n      LayerProperty.SOURCE,\n      this.handleSourcePropertyChange_,\n    );\n\n    const source = options.source\n      ? /** @type {SourceType} */ (options.source)\n      : null;\n    this.setSource(source);\n  }\n\n  /**\n   * @param {Array<import(\"./Layer.js\").default>} [array] Array of layers (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").default>} Array of layers.\n   * @override\n   */\n  getLayersArray(array) {\n    array = array ? array : [];\n    array.push(this);\n    return array;\n  }\n\n  /**\n   * @param {Array<import(\"./Layer.js\").State>} [states] Optional list of layer states (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").State>} List of layer states.\n   * @override\n   */\n  getLayerStatesArray(states) {\n    states = states ? states : [];\n    states.push(this.getLayerState());\n    return states;\n  }\n\n  /**\n   * Get the layer source.\n   * @return {SourceType|null} 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   * @return {SourceType|null} The source being rendered.\n   */\n  getRenderSource() {\n    return this.getSource();\n  }\n\n  /**\n   * @return {import(\"../source/Source.js\").State} Source state.\n   * @override\n   */\n  getSourceState() {\n    const source = this.getSource();\n    return !source ? 'undefined' : source.getState();\n  }\n\n  /**\n   * @private\n   */\n  handleSourceChange_() {\n    this.changed();\n    if (this.sourceReady_ || this.getSource().getState() !== 'ready') {\n      return;\n    }\n    this.sourceReady_ = true;\n    this.dispatchEvent('sourceready');\n  }\n\n  /**\n   * @private\n   */\n  handleSourcePropertyChange_() {\n    if (this.sourceChangeKey_) {\n      unlistenByKey(this.sourceChangeKey_);\n      this.sourceChangeKey_ = null;\n    }\n    this.sourceReady_ = false;\n    const source = this.getSource();\n    if (source) {\n      this.sourceChangeKey_ = listen(\n        source,\n        EventType.CHANGE,\n        this.handleSourceChange_,\n        this,\n      );\n      if (source.getState() === 'ready') {\n        this.sourceReady_ = true;\n        setTimeout(() => {\n          this.dispatchEvent('sourceready');\n        }, 0);\n      }\n      this.clearRenderer();\n    }\n    this.changed();\n  }\n\n  /**\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with\n   * an array of features.\n   */\n  getFeatures(pixel) {\n    if (!this.renderer_) {\n      return Promise.resolve([]);\n    }\n    return this.renderer_.getFeatures(pixel);\n  }\n\n  /**\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   */\n  getData(pixel) {\n    if (!this.renderer_ || !this.rendered) {\n      return null;\n    }\n    return this.renderer_.getData(pixel);\n  }\n\n  /**\n   * The layer is visible on the map view, i.e. within its min/max resolution or zoom and\n   * extent, not set to `visible: false`, and not inside a layer group that is set\n   * to `visible: false`.\n   * @param {View|import(\"../View.js\").ViewStateLayerStateExtent} [view] View or {@link import(\"../Map.js\").FrameState}.\n   * Only required when the layer is not added to a map.\n   * @return {boolean} The layer is visible in the map view.\n   * @api\n   */\n  isVisible(view) {\n    let frameState;\n    const map = this.getMapInternal();\n    if (!view && map) {\n      view = map.getView();\n    }\n    if (view instanceof View) {\n      frameState = {\n        viewState: view.getState(),\n        extent: view.calculateExtent(),\n      };\n    } else {\n      frameState = view;\n    }\n    if (!frameState.layerStatesArray && map) {\n      frameState.layerStatesArray = map.getLayerGroup().getLayerStatesArray();\n    }\n    let layerState;\n    if (frameState.layerStatesArray) {\n      layerState = frameState.layerStatesArray.find(\n        (layerState) => layerState.layer === this,\n      );\n      if (!layerState) {\n        return false;\n      }\n    } else {\n      layerState = this.getLayerState();\n    }\n\n    const layerExtent = this.getExtent();\n\n    return (\n      inView(layerState, frameState.viewState) &&\n      (!layerExtent || intersects(layerExtent, frameState.extent))\n    );\n  }\n\n  /**\n   * Get the attributions of the source of this layer for the given view.\n   * @param {View|import(\"../View.js\").ViewStateLayerStateExtent} [view] View or {@link import(\"../Map.js\").FrameState}.\n   * Only required when the layer is not added to a map.\n   * @return {Array<string>} Attributions for this layer at the given view.\n   * @api\n   */\n  getAttributions(view) {\n    if (!this.isVisible(view)) {\n      return [];\n    }\n    const getAttributions = this.getSource()?.getAttributions();\n    if (!getAttributions) {\n      return [];\n    }\n    const frameState =\n      view instanceof View ? view.getViewStateAndExtent() : view;\n    let attributions = getAttributions(frameState);\n    if (!Array.isArray(attributions)) {\n      attributions = [attributions];\n    }\n    return attributions;\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(\"../Map.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|null} The rendered element.\n   */\n  render(frameState, target) {\n    const layerRenderer = this.getRenderer();\n\n    if (layerRenderer.prepareFrame(frameState)) {\n      this.rendered = true;\n      return layerRenderer.renderFrame(frameState, target);\n    }\n    return null;\n  }\n\n  /**\n   * Called when a layer is not visible during a map render.\n   */\n  unrender() {\n    this.rendered = false;\n  }\n\n  /** @return {string} Declutter */\n  getDeclutter() {\n    return undefined;\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../layer/Layer.js\").State} layerState Layer state.\n   */\n  renderDeclutter(frameState, layerState) {}\n\n  /**\n   * When the renderer follows a layout -> render approach, do the final rendering here.\n   * @param {import('../Map.js').FrameState} frameState Frame state\n   */\n  renderDeferred(frameState) {\n    const layerRenderer = this.getRenderer();\n    if (!layerRenderer) {\n      return;\n    }\n    layerRenderer.renderDeferred(frameState);\n  }\n\n  /**\n   * For use inside the library only.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   */\n  setMapInternal(map) {\n    if (!map) {\n      this.unrender();\n    }\n    this.set(LayerProperty.MAP, map);\n  }\n\n  /**\n   * For use inside the library only.\n   * @return {import(\"../Map.js\").default|null} Map.\n   */\n  getMapInternal() {\n    return this.get(LayerProperty.MAP);\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. 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~Map#addLayer} instead.\n   * @param {import(\"../Map.js\").default|null} 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(\n        map,\n        RenderEventType.PRECOMPOSE,\n        this.handlePrecompose_,\n        this,\n      );\n      this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n      this.changed();\n    }\n  }\n\n  /**\n   * @param {import(\"../events/Event.js\").default} renderEvent Render event\n   * @private\n   */\n  handlePrecompose_(renderEvent) {\n    const layerStatesArray =\n      /** @type {import(\"../render/Event.js\").default} */ (renderEvent)\n        .frameState.layerStatesArray;\n    const layerState = this.getLayerState(false);\n    assert(\n      !layerStatesArray.some(\n        (arrayLayerState) => arrayLayerState.layer === layerState.layer,\n      ),\n      'A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.',\n    );\n    layerStatesArray.push(layerState);\n  }\n\n  /**\n   * Set the layer source.\n   * @param {SourceType|null} 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 {RendererType|null} 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 {RendererType} A layer renderer.\n   * @protected\n   */\n  createRenderer() {\n    return null;\n  }\n\n  /**\n   * This will clear the renderer so that a new one can be created next time it is needed\n   */\n  clearRenderer() {\n    if (this.renderer_) {\n      this.renderer_.dispose();\n      delete this.renderer_;\n    }\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.clearRenderer();\n    this.setSource(null);\n    super.disposeInternal();\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 (\n    resolution < layerState.minResolution ||\n    resolution >= layerState.maxResolution\n  ) {\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/layer/BaseVector\n */\nimport RBush from 'rbush';\nimport {\n  flatStylesToStyleFunction,\n  rulesToStyleFunction,\n} from '../render/canvas/style.js';\nimport Style, {\n  createDefaultStyle,\n  toFunction as toStyleFunction,\n} from '../style/Style.js';\nimport Layer from './Layer.js';\n\n/***\n * @template T\n * @typedef {T extends import(\"../source/Vector.js\").default<infer U extends import(\"../Feature.js\").FeatureLike> ? U : never} ExtractedFeatureType\n */\n\n/**\n * @template {import('../Feature').FeatureLike} FeatureType\n * @template {import(\"../source/Vector.js\").default<FeatureType>|import(\"../source/VectorTile.js\").default<FeatureType>} VectorSourceType<FeatureType>\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 * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean|string|number} [declutter=false] Declutter images and text. Any truthy value will enable\n * decluttering. Within a layer, a feature rendered before another has higher priority. All layers with the\n * same `declutter` value will be decluttered together. The priority is determined by the drawing order of the\n * layers with the same `declutter` value. Higher in the layer stack means higher priority. To declutter distinct\n * layers or groups of layers separately, use different truthy values for `declutter`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n  RENDER_ORDER: 'renderOrder',\n};\n\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import('../Feature').FeatureLike} FeatureType\n * @template {import(\"../source/Vector.js\").default<FeatureType>|import(\"../source/VectorTile.js\").default<FeatureType>} VectorSourceType<FeatureType>\n * @extends {Layer<VectorSourceType, RendererType>}\n * @template {import(\"../renderer/canvas/VectorLayer.js\").default|import(\"../renderer/canvas/VectorTileLayer.js\").default|import(\"../renderer/canvas/VectorImageLayer.js\").default|import(\"../renderer/webgl/PointsLayer.js\").default} RendererType\n * @api\n */\nclass BaseVectorLayer extends Layer {\n  /**\n   * @param {Options<FeatureType, VectorSourceType>} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const baseOptions = Object.assign({}, options);\n\n    delete baseOptions.style;\n    delete baseOptions.renderBuffer;\n    delete baseOptions.updateWhileAnimating;\n    delete baseOptions.updateWhileInteracting;\n    super(baseOptions);\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.declutter_ = options.declutter ? String(options.declutter) : undefined;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.renderBuffer_ =\n      options.renderBuffer !== undefined ? options.renderBuffer : 100;\n\n    /**\n     * User provided style.\n     * @type {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike}\n     * @private\n     */\n    this.style_ = null;\n\n    /**\n     * Style function for use within the library.\n     * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n     * @private\n     */\n    this.styleFunction_ = undefined;\n\n    this.setStyle(options.style);\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.updateWhileAnimating_ =\n      options.updateWhileAnimating !== undefined\n        ? options.updateWhileAnimating\n        : false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.updateWhileInteracting_ =\n      options.updateWhileInteracting !== undefined\n        ? options.updateWhileInteracting\n        : false;\n  }\n\n  /**\n   * @return {string} Declutter group.\n   * @override\n   */\n  getDeclutter() {\n    return this.declutter_;\n  }\n\n  /**\n   * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n   * that resolves with an array of features. The array will either contain the topmost feature\n   * when a hit was detected, or it will be empty.\n   *\n   * The hit detection algorithm used for this method is optimized for performance, but is less\n   * accurate than the one used in [map.getFeaturesAtPixel()]{@link import(\"../Map.js\").default#getFeaturesAtPixel}.\n   * Text is not considered, and icons are only represented by their bounding box instead of the exact\n   * image.\n   *\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with an array of features.\n   * @api\n   * @override\n   */\n  getFeatures(pixel) {\n    return super.getFeatures(pixel);\n  }\n\n  /**\n   * @return {number|undefined} Render buffer.\n   */\n  getRenderBuffer() {\n    return this.renderBuffer_;\n  }\n\n  /**\n   * @return {import(\"../render.js\").OrderFunction|null|undefined} Render order.\n   */\n  getRenderOrder() {\n    return /** @type {import(\"../render.js\").OrderFunction|null|undefined} */ (\n      this.get(Property.RENDER_ORDER)\n    );\n  }\n\n  /**\n   * Get the style for features.  This returns whatever was passed to the `style`\n   * option at construction or to the `setStyle` method.\n   * @return {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null|undefined} Layer style.\n   * @api\n   */\n  getStyle() {\n    return this.style_;\n  }\n\n  /**\n   * Get the style function.\n   * @return {import(\"../style/Style.js\").StyleFunction|undefined} Layer style function.\n   * @api\n   */\n  getStyleFunction() {\n    return this.styleFunction_;\n  }\n\n  /**\n   * @return {boolean} Whether the rendered layer should be updated while\n   *     animating.\n   */\n  getUpdateWhileAnimating() {\n    return this.updateWhileAnimating_;\n  }\n\n  /**\n   * @return {boolean} Whether the rendered layer should be updated while\n   *     interacting.\n   */\n  getUpdateWhileInteracting() {\n    return this.updateWhileInteracting_;\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../layer/Layer.js\").State} layerState Layer state.\n   * @override\n   */\n  renderDeclutter(frameState, layerState) {\n    const declutterGroup = this.getDeclutter();\n    if (declutterGroup in frameState.declutter === false) {\n      frameState.declutter[declutterGroup] = new RBush(9);\n    }\n    this.getRenderer().renderDeclutter(frameState, layerState);\n  }\n\n  /**\n   * @param {import(\"../render.js\").OrderFunction|null|undefined} renderOrder\n   *     Render order.\n   */\n  setRenderOrder(renderOrder) {\n    this.set(Property.RENDER_ORDER, renderOrder);\n  }\n\n  /**\n   * Set the style for features.  This can be a single style object, an array\n   * of styles, or a function that takes a feature and resolution and returns\n   * an array of styles. If set to `null`, the layer has no style (a `null` style),\n   * so only features that have their own styles will be rendered in the layer. Call\n   * `setStyle()` without arguments to reset to the default style. See\n   * [the ol/style/Style module]{@link module:ol/style/Style~Style} for information on the default style.\n   *\n   * If your layer has a static style, you can use [flat style]{@link module:ol/style/flat~FlatStyle} object\n   * literals instead of using the `Style` and symbolizer constructors (`Fill`, `Stroke`, etc.):\n   * ```js\n   * vectorLayer.setStyle({\n   *   \"fill-color\": \"yellow\",\n   *   \"stroke-color\": \"black\",\n   *   \"stroke-width\": 4\n   * })\n   * ```\n   *\n   * @param {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style.\n   * @api\n   */\n  setStyle(style) {\n    this.style_ = style === undefined ? createDefaultStyle : style;\n    const styleLike = toStyleLike(style);\n    this.styleFunction_ =\n      style === null ? undefined : toStyleFunction(styleLike);\n    this.changed();\n  }\n\n  /**\n   * @param {boolean|string|number} declutter Declutter images and text.\n   * @api\n   */\n  setDeclutter(declutter) {\n    this.declutter_ = declutter ? String(declutter) : undefined;\n    this.changed();\n  }\n}\n\n/**\n * Coerce the allowed style types into a shorter list of types.  Flat styles, arrays of flat\n * styles, and arrays of rules are converted into style functions.\n *\n * @param {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style.\n * @return {import(\"../style/Style.js\").StyleLike|null} The style.\n */\nfunction toStyleLike(style) {\n  if (style === undefined) {\n    return createDefaultStyle;\n  }\n  if (!style) {\n    return null;\n  }\n  if (typeof style === 'function') {\n    return style;\n  }\n  if (style instanceof Style) {\n    return style;\n  }\n  if (!Array.isArray(style)) {\n    return flatStylesToStyleFunction([style]);\n  }\n  if (style.length === 0) {\n    return [];\n  }\n\n  const length = style.length;\n  const first = style[0];\n\n  if (first instanceof Style) {\n    /**\n     * @type {Array<Style>}\n     */\n    const styles = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      const candidate = style[i];\n      if (!(candidate instanceof Style)) {\n        throw new Error('Expected a list of style instances');\n      }\n      styles[i] = candidate;\n    }\n    return styles;\n  }\n\n  if ('style' in first) {\n    /**\n     * @type {Array<import(\"../style/flat.js\").Rule>}\n     */\n    const rules = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      const candidate = style[i];\n      if (!('style' in candidate)) {\n        throw new Error('Expected a list of rules with a style property');\n      }\n      rules[i] = candidate;\n    }\n    return rulesToStyleFunction(rules);\n  }\n\n  const flatStyles =\n    /** @type {Array<import(\"../style/flat.js\").FlatStyle>} */ (style);\n  return flatStylesToStyleFunction(flatStyles);\n}\n\nexport default BaseVectorLayer;\n","/**\n * @module ol/layer/Vector\n */\nimport CanvasVectorLayerRenderer from '../renderer/canvas/VectorLayer.js';\nimport BaseVectorLayer from './BaseVector.js';\n\n/**\n * @template {import(\"../source/Vector.js\").default<FeatureType>} [VectorSourceType=import(\"../source/Vector.js\").default<*>]\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"./BaseVector.js\").ExtractedFeatureType<VectorSourceType>]\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 * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean|string|number} [declutter=false] Declutter images and text. Any truthy value will enable\n * decluttering. Within a layer, a feature rendered before another has higher priority. All layers with the\n * same `declutter` value will be decluttered together. The priority is determined by the drawing order of the\n * layers with the same `declutter` value. Higher in the layer stack means higher priority. To declutter distinct\n * layers or groups of layers separately, use different truthy values for `declutter`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Vector data is rendered client-side, as vectors. This layer type provides most accurate rendering\n * even during animations. Points and labels stay upright on rotated views. For very large\n * amounts of vector data, performance may suffer during pan and zoom animations. In this case,\n * try {@link module:ol/layer/VectorImage~VectorImageLayer}.\n *\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default<FeatureType>} [VectorSourceType=import(\"../source/Vector.js\").default<*>]\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"./BaseVector.js\").ExtractedFeatureType<VectorSourceType>]\n * @extends {BaseVectorLayer<FeatureType, VectorSourceType, CanvasVectorLayerRenderer>}\n * @api\n */\nclass VectorLayer extends BaseVectorLayer {\n  /**\n   * @param {Options<VectorSourceType, FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasVectorLayerRenderer(this);\n  }\n}\n\nexport default VectorLayer;\n","/**\n * @module ol/ImageCanvas\n */\nimport ImageWrapper from './Image.js';\nimport ImageState from './ImageState.js';\n\n/**\n * A function that is called to trigger asynchronous canvas drawing.  It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\n\nclass ImageCanvas extends ImageWrapper {\n  /**\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {HTMLCanvasElement} canvas Canvas.\n   * @param {Loader} [loader] Optional loader function to\n   *     support asynchronous canvas drawing.\n   */\n  constructor(extent, resolution, pixelRatio, canvas, loader) {\n    const state = loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n\n    super(extent, resolution, pixelRatio, state);\n\n    /**\n     * Optional canvas loader function.\n     * @type {?Loader}\n     * @private\n     */\n    this.loader_ = loader !== undefined ? loader : null;\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement}\n     */\n    this.canvas_ = canvas;\n\n    /**\n     * @private\n     * @type {?Error}\n     */\n    this.error_ = null;\n  }\n\n  /**\n   * Get any error associated with asynchronous rendering.\n   * @return {?Error} Any error that occurred during rendering.\n   */\n  getError() {\n    return this.error_;\n  }\n\n  /**\n   * Handle async drawing complete.\n   * @param {Error} [err] Any error during drawing.\n   * @private\n   */\n  handleLoad_(err) {\n    if (err) {\n      this.error_ = err;\n      this.state = ImageState.ERROR;\n    } else {\n      this.state = ImageState.LOADED;\n    }\n    this.changed();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == ImageState.IDLE) {\n      this.state = ImageState.LOADING;\n      this.changed();\n      this.loader_(this.handleLoad_.bind(this));\n    }\n  }\n\n  /**\n   * @return {HTMLCanvasElement} Canvas element.\n   * @override\n   */\n  getImage() {\n    return this.canvas_;\n  }\n}\n\nexport default ImageCanvas;\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};\n","/**\n * @module ol/Tile\n */\nimport TileState from './TileState.js';\nimport {easeIn} from './easing.js';\nimport EventType from './events/EventType.js';\nimport EventTarget from './events/Target.js';\nimport {abstract} from './util.js';\n\n/**\n * A function that takes a {@link module:ol/Tile~Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n *   tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState.js';\n *\n * source.setTileLoadFunction(function(tile, src) {\n *   const xhr = new XMLHttpRequest();\n *   xhr.responseType = 'blob';\n *   xhr.addEventListener('loadend', function (evt) {\n *     const data = this.response;\n *     if (data !== undefined) {\n *       tile.getImage().src = URL.createObjectURL(data);\n *     } else {\n *       tile.setState(TileState.ERROR);\n *     }\n *   });\n *   xhr.addEventListener('error', function () {\n *     tile.setState(TileState.ERROR);\n *   });\n *   xhr.open('GET', src);\n *   xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~TileSource} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes a {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection~Projection} for the projection  as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n *           import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {Options} [options] Tile options.\n   */\n  constructor(tileCoord, state, options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @type {import(\"./tilecoord.js\").TileCoord}\n     */\n    this.tileCoord = tileCoord;\n\n    /**\n     * @protected\n     * @type {import(\"./TileState.js\").default}\n     */\n    this.state = state;\n\n    /**\n     * A key assigned to the tile. This is used in conjunction with a source key\n     * to determine if a cached version of this tile may be used by the renderer.\n     * @type {string}\n     */\n    this.key = '';\n\n    /**\n     * The duration for the opacity transition.\n     * @private\n     * @type {number}\n     */\n    this.transition_ =\n      options.transition === undefined ? 250 : options.transition;\n\n    /**\n     * Lookup of start times for rendering transitions.  If the start time is\n     * equal to -1, the transition is complete.\n     * @private\n     * @type {Object<string, number>}\n     */\n    this.transitionStarts_ = {};\n\n    /**\n     * @type {boolean}\n     */\n    this.interpolate = !!options.interpolate;\n  }\n\n  /**\n   * @protected\n   */\n  changed() {\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * Called by the tile cache when the tile is removed from the cache due to expiry\n   */\n  release() {\n    // to remove the `change` listener on this tile in `ol/TileQueue#handleTileChange`\n    this.setState(TileState.EMPTY);\n  }\n\n  /**\n   * @return {string} Key.\n   */\n  getKey() {\n    return this.key + '/' + this.tileCoord;\n  }\n\n  /**\n   * Get the tile coordinate for this tile.\n   * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n   * @api\n   */\n  getTileCoord() {\n    return this.tileCoord;\n  }\n\n  /**\n   * @return {import(\"./TileState.js\").default} State.\n   */\n  getState() {\n    return this.state;\n  }\n\n  /**\n   * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n   * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n   * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n   * the tile queue and will block other requests.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @api\n   */\n  setState(state) {\n    if (this.state === TileState.EMPTY) {\n      // no more state changes\n      return;\n    }\n    if (this.state !== TileState.ERROR && this.state > state) {\n      throw new Error('Tile load sequence violation');\n    }\n    this.state = state;\n    this.changed();\n  }\n\n  /**\n   * Load the image or retry if loading previously failed.\n   * Loading is taken care of by the tile queue, and calling this method is\n   * only needed for preloading or for reloading in case of an error.\n   * @abstract\n   * @api\n   */\n  load() {\n    abstract();\n  }\n\n  /**\n   * Get the alpha value for rendering.\n   * @param {string} id An id for the renderer.\n   * @param {number} time The render frame time.\n   * @return {number} A number between 0 and 1.\n   */\n  getAlpha(id, time) {\n    if (!this.transition_) {\n      return 1;\n    }\n\n    let start = this.transitionStarts_[id];\n    if (!start) {\n      start = time;\n      this.transitionStarts_[id] = start;\n    } else if (start === -1) {\n      return 1;\n    }\n\n    const delta = time - start + 1000 / 60; // avoid rendering at 0\n    if (delta >= this.transition_) {\n      return 1;\n    }\n    return easeIn(delta / this.transition_);\n  }\n\n  /**\n   * Determine if a tile is in an alpha transition.  A tile is considered in\n   * transition if tile.getAlpha() has not yet been called or has been called\n   * and returned 1.\n   * @param {string} id An id for the renderer.\n   * @return {boolean} The tile is in transition.\n   */\n  inTransition(id) {\n    if (!this.transition_) {\n      return false;\n    }\n    return this.transitionStarts_[id] !== -1;\n  }\n\n  /**\n   * Mark a transition as complete.\n   * @param {string} id An id for the renderer.\n   */\n  endTransition(id) {\n    if (this.transition_) {\n      this.transitionStarts_[id] = -1;\n    }\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    this.release();\n    super.disposeInternal();\n  }\n}\n\nexport default Tile;\n","/**\n * @module ol/ImageTile\n */\nimport {listenImage} from './Image.js';\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\n\nclass ImageTile extends Tile {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {string} src Image source URI.\n   * @param {?string} crossOrigin Cross origin.\n   * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n   * @param {import(\"./Tile.js\").Options} [options] Tile options.\n   */\n  constructor(tileCoord, state, src, crossOrigin, tileLoadFunction, options) {\n    super(tileCoord, state, options);\n\n    /**\n     * @private\n     * @type {?string}\n     */\n    this.crossOrigin_ = crossOrigin;\n\n    /**\n     * Image URI\n     *\n     * @private\n     * @type {string}\n     */\n    this.src_ = src;\n\n    this.key = src;\n\n    /**\n     * @private\n     * @type {HTMLImageElement|HTMLCanvasElement}\n     */\n    this.image_ = new Image();\n    if (crossOrigin !== null) {\n      this.image_.crossOrigin = crossOrigin;\n    }\n\n    /**\n     * @private\n     * @type {?function():void}\n     */\n    this.unlisten_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./Tile.js\").LoadFunction}\n     */\n    this.tileLoadFunction_ = tileLoadFunction;\n  }\n\n  /**\n   * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n   * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n   * @api\n   */\n  getImage() {\n    return this.image_;\n  }\n\n  /**\n   * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n   * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n   */\n  setImage(element) {\n    this.image_ = element;\n    this.state = TileState.LOADED;\n    this.unlistenImage_();\n    this.changed();\n  }\n\n  /**\n   * Tracks loading or read errors.\n   *\n   * @private\n   */\n  handleImageError_() {\n    this.state = TileState.ERROR;\n    this.unlistenImage_();\n    this.image_ = getBlankImage();\n    this.changed();\n  }\n\n  /**\n   * Tracks successful image load.\n   *\n   * @private\n   */\n  handleImageLoad_() {\n    const image = /** @type {HTMLImageElement} */ (this.image_);\n    if (image.naturalWidth && image.naturalHeight) {\n      this.state = TileState.LOADED;\n    } else {\n      this.state = TileState.EMPTY;\n    }\n    this.unlistenImage_();\n    this.changed();\n  }\n\n  /**\n   * Load the image or retry if loading previously failed.\n   * Loading is taken care of by the tile queue, and calling this method is\n   * only needed for preloading or for reloading in case of an error.\n   *\n   * To retry loading tiles on failed requests, use a custom `tileLoadFunction`\n   * that checks for error status codes and reloads only when the status code is\n   * 408, 429, 500, 502, 503 and 504, and only when not too many retries have been\n   * made already:\n   *\n   * ```js\n   * const retryCodes = [408, 429, 500, 502, 503, 504];\n   * const retries = {};\n   * source.setTileLoadFunction((tile, src) => {\n   *   const image = tile.getImage();\n   *   fetch(src)\n   *     .then((response) => {\n   *       if (retryCodes.includes(response.status)) {\n   *         retries[src] = (retries[src] || 0) + 1;\n   *         if (retries[src] <= 3) {\n   *           setTimeout(() => tile.load(), retries[src] * 1000);\n   *         }\n   *         return Promise.reject();\n   *       }\n   *       return response.blob();\n   *     })\n   *     .then((blob) => {\n   *       const imageUrl = URL.createObjectURL(blob);\n   *       image.src = imageUrl;\n   *       setTimeout(() => URL.revokeObjectURL(imageUrl), 5000);\n   *     })\n   *     .catch(() => tile.setState(3)); // error\n   * });\n   * ```\n   * @api\n   * @override\n   */\n  load() {\n    if (this.state == TileState.ERROR) {\n      this.state = TileState.IDLE;\n      this.image_ = new Image();\n      if (this.crossOrigin_ !== null) {\n        this.image_.crossOrigin = this.crossOrigin_;\n      }\n    }\n    if (this.state == TileState.IDLE) {\n      this.state = TileState.LOADING;\n      this.changed();\n      this.tileLoadFunction_(this, this.src_);\n      this.unlisten_ = listenImage(\n        this.image_,\n        this.handleImageLoad_.bind(this),\n        this.handleImageError_.bind(this),\n      );\n    }\n  }\n\n  /**\n   * Discards event handlers which listen for load completion or errors.\n   *\n   * @private\n   */\n  unlistenImage_() {\n    if (this.unlisten_) {\n      this.unlisten_();\n      this.unlisten_ = null;\n    }\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    this.unlistenImage_();\n    this.image_ = null;\n    super.disposeInternal();\n  }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n  const ctx = createCanvasContext2D(1, 1);\n  ctx.fillStyle = 'rgba(0,0,0,0)';\n  ctx.fillRect(0, 0, 1, 1);\n  return ctx.canvas;\n}\n\nexport default ImageTile;\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   * @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     * @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<number>}\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/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/Map~Map} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n  /**\n   * @param {string} type Event type.\n   * @param {import(\"./Map.js\").default} map Map.\n   * @param {?import(\"./Map.js\").FrameState} [frameState] Frame state.\n   */\n  constructor(type, map, frameState) {\n    super(type);\n\n    /**\n     * The map where the event occurred.\n     * @type {import(\"./Map.js\").default}\n     * @api\n     */\n    this.map = map;\n\n    /**\n     * The frame state at the time of the event.\n     * @type {?import(\"./Map.js\").FrameState}\n     * @api\n     */\n    this.frameState = frameState !== undefined ? frameState : null;\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/Map~Map} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nclass MapBrowserEvent extends MapEvent {\n  /**\n   * @param {string} type Event type.\n   * @param {import(\"./Map.js\").default} map Map.\n   * @param {EVENT} originalEvent Original event.\n   * @param {boolean} [dragging] Is the map currently being dragged?\n   * @param {import(\"./Map.js\").FrameState} [frameState] Frame state.\n   * @param {Array<PointerEvent>} [activePointers] Active pointers.\n   */\n  constructor(type, map, originalEvent, dragging, frameState, activePointers) {\n    super(type, map, frameState);\n\n    /**\n     * The original browser event.\n     * @const\n     * @type {EVENT}\n     * @api\n     */\n    this.originalEvent = originalEvent;\n\n    /**\n     * The map pixel relative to the viewport corresponding to the original browser event.\n     * @type {?import(\"./pixel.js\").Pixel}\n     * @private\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     * @private\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 = dragging !== undefined ? dragging : false;\n\n    /**\n     * @type {Array<PointerEvent>|undefined}\n     */\n    this.activePointers = activePointers;\n  }\n\n  /**\n   * The map pixel relative to the viewport corresponding to the original 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   * @api\n   * @override\n   */\n  preventDefault() {\n    super.preventDefault();\n    if ('preventDefault' in this.originalEvent) {\n      /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n    }\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   * @api\n   * @override\n   */\n  stopPropagation() {\n    super.stopPropagation();\n    if ('stopPropagation' in this.originalEvent) {\n      /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n    }\n  }\n}\n\nexport default MapBrowserEvent;\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   * 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/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\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 MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport EventType from './events/EventType.js';\nimport Target from './events/Target.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport PointerEventType from './pointer/EventType.js';\n\nclass MapBrowserEventHandler extends Target {\n  /**\n   * @param {import(\"./Map.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    super(map);\n\n    /**\n     * This is the element that we will listen to the real events on.\n     * @type {import(\"./Map.js\").default}\n     * @private\n     */\n    this.map_ = map;\n\n    /**\n     * @type {ReturnType<typeof setTimeout>}\n     * @private\n     */\n    this.clickTimeoutId_;\n\n    /**\n     * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n     * @type {boolean}\n     */\n    this.emulateClicks_ = false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.dragging_ = false;\n\n    /**\n     * @type {!Array<import(\"./events.js\").EventsKey>}\n     * @private\n     */\n    this.dragListenerKeys_ = [];\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n    /**\n     * The most recent \"down\" type event (or null if none have occurred).\n     * Set on pointerdown.\n     * @type {PointerEvent|null}\n     * @private\n     */\n    this.down_ = null;\n\n    const element = this.map_.getViewport();\n\n    /**\n     * @type {Array<PointerEvent>}\n     * @private\n     */\n    this.activePointers_ = [];\n\n    /**\n     * @type {!Object<number, Event>}\n     * @private\n     */\n    this.trackedTouches_ = {};\n\n    /**\n     * @private\n     */\n    this.element_ = element;\n\n    /**\n     * @type {?import(\"./events.js\").EventsKey}\n     * @private\n     */\n    this.pointerdownListenerKey_ = listen(\n      element,\n      PointerEventType.POINTERDOWN,\n      this.handlePointerDown_,\n      this,\n    );\n\n    /**\n     * @type {PointerEvent}\n     * @private\n     */\n    this.originalPointerMoveEvent_;\n\n    /**\n     * @type {?import(\"./events.js\").EventsKey}\n     * @private\n     */\n    this.relayedListenerKey_ = listen(\n      element,\n      PointerEventType.POINTERMOVE,\n      this.relayMoveEvent_,\n      this,\n    );\n\n    /**\n     * @private\n     */\n    this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n    this.element_.addEventListener(\n      EventType.TOUCHMOVE,\n      this.boundHandleTouchMove_,\n      PASSIVE_EVENT_LISTENERS ? {passive: false} : false,\n    );\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  emulateClick_(pointerEvent) {\n    let newEvent = new MapBrowserEvent(\n      MapBrowserEventType.CLICK,\n      this.map_,\n      pointerEvent,\n    );\n    this.dispatchEvent(newEvent);\n    if (this.clickTimeoutId_ !== undefined) {\n      // double-click\n      clearTimeout(this.clickTimeoutId_);\n      this.clickTimeoutId_ = undefined;\n      newEvent = new MapBrowserEvent(\n        MapBrowserEventType.DBLCLICK,\n        this.map_,\n        pointerEvent,\n      );\n      this.dispatchEvent(newEvent);\n    } else {\n      // click\n      this.clickTimeoutId_ = setTimeout(() => {\n        this.clickTimeoutId_ = undefined;\n        const newEvent = new MapBrowserEvent(\n          MapBrowserEventType.SINGLECLICK,\n          this.map_,\n          pointerEvent,\n        );\n        this.dispatchEvent(newEvent);\n      }, 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    const id = event.pointerId;\n\n    if (\n      event.type == MapBrowserEventType.POINTERUP ||\n      event.type == MapBrowserEventType.POINTERCANCEL\n    ) {\n      delete this.trackedTouches_[id];\n      for (const pointerId in this.trackedTouches_) {\n        if (this.trackedTouches_[pointerId].target !== event.target) {\n          // Some platforms assign a new pointerId when the target changes.\n          // If this happens, delete one tracked pointer. If there is more\n          // than one tracked pointer for the old target, it will be cleared\n          // by subsequent POINTERUP events from other pointers.\n          delete this.trackedTouches_[pointerId];\n          break;\n        }\n      }\n    } else if (\n      event.type == MapBrowserEventType.POINTERDOWN ||\n      event.type == MapBrowserEventType.POINTERMOVE\n    ) {\n      this.trackedTouches_[id] = event;\n    }\n    this.activePointers_ = Object.values(this.trackedTouches_);\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  handlePointerUp_(pointerEvent) {\n    this.updateActivePointers_(pointerEvent);\n    const newEvent = new MapBrowserEvent(\n      MapBrowserEventType.POINTERUP,\n      this.map_,\n      pointerEvent,\n      undefined,\n      undefined,\n      this.activePointers_,\n    );\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.preventDefault().\n    if (\n      this.emulateClicks_ &&\n      !newEvent.defaultPrevented &&\n      !this.dragging_ &&\n      this.isMouseActionButton_(pointerEvent)\n    ) {\n      this.emulateClick_(this.down_);\n    }\n\n    if (this.activePointers_.length === 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.emulateClicks_ = this.activePointers_.length === 0;\n    this.updateActivePointers_(pointerEvent);\n    const newEvent = new MapBrowserEvent(\n      MapBrowserEventType.POINTERDOWN,\n      this.map_,\n      pointerEvent,\n      undefined,\n      undefined,\n      this.activePointers_,\n    );\n    this.dispatchEvent(newEvent);\n\n    this.down_ = new PointerEvent(pointerEvent.type, pointerEvent);\n    Object.defineProperty(this.down_, 'target', {\n      writable: false,\n      value: pointerEvent.target,\n    });\n\n    if (this.dragListenerKeys_.length === 0) {\n      const doc = this.map_.getOwnerDocument();\n      this.dragListenerKeys_.push(\n        listen(\n          doc,\n          MapBrowserEventType.POINTERMOVE,\n          this.handlePointerMove_,\n          this,\n        ),\n        listen(doc, MapBrowserEventType.POINTERUP, 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(\n          this.element_,\n          MapBrowserEventType.POINTERCANCEL,\n          this.handlePointerUp_,\n          this,\n        ),\n      );\n      if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n        this.dragListenerKeys_.push(\n          listen(\n            this.element_.getRootNode(),\n            MapBrowserEventType.POINTERUP,\n            this.handlePointerUp_,\n            this,\n          ),\n        );\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.updateActivePointers_(pointerEvent);\n      this.dragging_ = true;\n      const newEvent = new MapBrowserEvent(\n        MapBrowserEventType.POINTERDRAG,\n        this.map_,\n        pointerEvent,\n        this.dragging_,\n        undefined,\n        this.activePointers_,\n      );\n      this.dispatchEvent(newEvent);\n    }\n  }\n\n  /**\n   * Wrap and relay a pointermove event.\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  relayMoveEvent_(pointerEvent) {\n    this.originalPointerMoveEvent_ = pointerEvent;\n    const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n    this.dispatchEvent(\n      new MapBrowserEvent(\n        MapBrowserEventType.POINTERMOVE,\n        this.map_,\n        pointerEvent,\n        dragging,\n      ),\n    );\n  }\n\n  /**\n   * Flexible handling of a `touch-action: none` css equivalent: because calling\n   * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n   * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n   * when an interaction (currently `DragPan` handles the event.\n   * @param {TouchEvent} event Event.\n   * @private\n   */\n  handleTouchMove_(event) {\n    // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n    // may not be initialized yet when we get here on a platform without native pointer events,\n    // when elm-pep is used as pointer events polyfill.\n    const originalEvent = this.originalPointerMoveEvent_;\n    if (\n      (!originalEvent || originalEvent.defaultPrevented) &&\n      (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n    ) {\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @return {boolean} Is moving.\n   * @private\n   */\n  isMoving_(pointerEvent) {\n    return (\n      this.dragging_ ||\n      Math.abs(pointerEvent.clientX - this.down_.clientX) >\n        this.moveTolerance_ ||\n      Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n    );\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.relayedListenerKey_) {\n      unlistenByKey(this.relayedListenerKey_);\n      this.relayedListenerKey_ = null;\n    }\n    this.element_.removeEventListener(\n      EventType.TOUCHMOVE,\n      this.boundHandleTouchMove_,\n    );\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\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\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   * Triggered when loading of additional map data (tiles, images, features) starts.\n   * @event module:ol/MapEvent~MapEvent#loadstart\n   * @api\n   */\n  LOADSTART: 'loadstart',\n\n  /**\n   * Triggered when loading of additional map data has completed.\n   * @event module:ol/MapEvent~MapEvent#loadend\n   * @api\n   */\n  LOADEND: 'loadend',\n};\n\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\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/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\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 https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n  /**\n   * @param {function(T): number} priorityFunction Priority function.\n   * @param {function(T): string} keyFunction Key function.\n   */\n  constructor(priorityFunction, keyFunction) {\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<T>}\n     * @private\n     */\n    this.elements_ = [];\n\n    /**\n     * @type {Array<number>}\n     * @private\n     */\n    this.priorities_ = [];\n\n    /**\n     * @type {!Object<string, boolean>}\n     * @private\n     */\n    this.queuedElements_ = {};\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   * 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] = /** @type {T} */ (elements.pop());\n      priorities[0] = /** @type {number} */ (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   * 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(\n      !(this.keyFunction_(element) in this.queuedElements_),\n      'Tried to enqueue an `element` that was already added to the queue',\n    );\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   * @return {number} Count.\n   */\n  getCount() {\n    return this.elements_.length;\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   * 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   * 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   * 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   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return this.elements_.length === 0;\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   * @param {T} element Element.\n   * @return {boolean} Is queued.\n   */\n  isQueued(element) {\n    return this.isKeyQueued(this.keyFunction_(element));\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 =\n        rIndex < count && priorities[rIndex] < priorities[lIndex]\n          ? rIndex\n          : 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   * @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   * 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\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import('./tilecoord.js').TileCoord, number): number} PriorityFunction\n */\n\n/**\n * @typedef {[import('./Tile.js').default, string, import('./tilecoord.js').TileCoord, number]} TileQueueElement\n */\n\n/**\n * @extends PriorityQueue<TileQueueElement>}\n */\nclass TileQueue extends PriorityQueue {\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    super(\n      (element) => tilePriorityFunction.apply(null, element),\n      (element) => 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<string,boolean>}\n     */\n    this.tilesLoadingKeys_ = {};\n  }\n\n  /**\n   * @param {TileQueueElement} element Element.\n   * @return {boolean} The element was added to the queue.\n   * @override\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 (\n      state === TileState.LOADED ||\n      state === TileState.ERROR ||\n      state === TileState.EMPTY\n    ) {\n      if (state !== TileState.ERROR) {\n        tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n      }\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    while (\n      this.tilesLoading_ < maxTotalLoading &&\n      newLoads < maxNewLoads &&\n      this.getCount() > 0\n    ) {\n      const tile = this.dequeue()[0];\n      const tileKey = tile.getKey();\n      const state = tile.getState();\n      if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n        this.tilesLoadingKeys_[tileKey] = true;\n        ++this.tilesLoading_;\n        ++newLoads;\n        tile.load();\n      }\n    }\n  }\n}\n\nexport default TileQueue;\n\n/**\n * @param {import('./Map.js').FrameState} frameState Frame state.\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 */\nexport function getTilePriority(\n  frameState,\n  tile,\n  tileSourceKey,\n  tileCenter,\n  tileResolution,\n) {\n  // Filter out tiles at higher zoom levels than the current zoom level, or that\n  // are outside the visible extent.\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 (\n    65536 * Math.log(tileResolution) +\n    Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n  );\n}\n","/**\n * @module ol/control/Control\n */\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {VOID} from '../functions.js';\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):void} [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 * @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 * const 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   * @param {Options} options Control options.\n   */\n  constructor(options) {\n    super();\n\n    const element = options.element;\n    if (element && !options.target && !element.style.pointerEvents) {\n      element.style.pointerEvents = 'auto';\n    }\n\n    /**\n     * @protected\n     * @type {HTMLElement}\n     */\n    this.element = element ? element : null;\n\n    /**\n     * @private\n     * @type {HTMLElement}\n     */\n    this.target_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default|null}\n     */\n    this.map_ = null;\n\n    /**\n     * @protected\n     * @type {!Array<import(\"../events.js\").EventsKey>}\n     */\n    this.listenerKeys = [];\n\n    if (options.render) {\n      this.render = options.render;\n    }\n\n    if (options.target) {\n      this.setTarget(options.target);\n    }\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.element?.remove();\n    super.disposeInternal();\n  }\n\n  /**\n   * Get the map associated with this control.\n   * @return {import(\"../Map.js\").default|null} 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   * Pass `null` to just remove the control from the current map.\n   * Subclasses may set up event handlers to get notified about changes to\n   * the map here.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @api\n   */\n  setMap(map) {\n    if (this.map_) {\n      this.element?.remove();\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 (map) {\n      const target = this.target_ ?? map.getOverlayContainerStopEvent();\n      if (this.element) {\n        target.appendChild(this.element);\n      }\n      if (this.render !== VOID) {\n        this.listenerKeys.push(\n          listen(map, MapEventType.POSTRENDER, this.render, this),\n        );\n      }\n      map.render();\n    }\n  }\n\n  /**\n   * Renders the control.\n   * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n   * @api\n   */\n  render(mapEvent) {}\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_ =\n      typeof target === 'string' ? document.getElementById(target) : target;\n  }\n}\n\nexport default Control;\n","/**\n * @module ol/control/Attribution\n */\nimport {equals} from '../array.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {removeChildren, replaceNode} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport {toPromise} from '../functions.js';\nimport Control from './Control.js';\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|HTMLElement} [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} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\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 {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {string|Array<string>|undefined} [attributions] Optional attribution(s) that will always be\n * displayed regardless of the layers rendered\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   * @param {Options} [options] Attribution options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      render: options.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_ =\n      options.collapsed !== undefined ? options.collapsed : true;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.userCollapsed_ = this.collapsed_;\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_ =\n      options.collapsible !== undefined ? options.collapsible : true;\n\n    if (!this.collapsible_) {\n      this.collapsed_ = false;\n    }\n\n    /**\n     * @private\n     * @type {string | Array<string> | undefined}\n     */\n    this.attributions_ = options.attributions;\n\n    const className =\n      options.className !== undefined ? options.className : 'ol-attribution';\n\n    const tipLabel =\n      options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n    const expandClassName =\n      options.expandClassName !== undefined\n        ? options.expandClassName\n        : className + '-expand';\n\n    const collapseLabel =\n      options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n\n    const collapseClassName =\n      options.collapseClassName !== undefined\n        ? options.collapseClassName\n        : className + '-collapse';\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      this.collapseLabel_.className = collapseClassName;\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      this.label_.className = expandClassName;\n    } else {\n      this.label_ = label;\n    }\n\n    const activeLabel =\n      this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n\n    /**\n     * @private\n     * @type {HTMLElement}\n     */\n    this.toggleButton_ = document.createElement('button');\n    this.toggleButton_.setAttribute('type', 'button');\n    this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n    this.toggleButton_.title = tipLabel;\n    this.toggleButton_.appendChild(activeLabel);\n\n    this.toggleButton_.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this),\n      false,\n    );\n\n    const cssClasses =\n      className +\n      ' ' +\n      CLASS_UNSELECTABLE +\n      ' ' +\n      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.toggleButton_);\n    element.appendChild(this.ulElement_);\n\n    /**\n     * A list of currently rendered resolutions.\n     * @type {Array<string>}\n     * @private\n     */\n    this.renderedAttributions_ = [];\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderedVisible_ = true;\n  }\n\n  /**\n   * Collect a list of visible attributions and set the collapsible state.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @return {Array<string>} Attributions.\n   * @private\n   */\n  collectSourceAttributions_(frameState) {\n    const layers = this.getMap().getAllLayers();\n    const visibleAttributions = new Set(\n      layers.flatMap((layer) => layer.getAttributions(frameState)),\n    );\n    if (this.attributions_ !== undefined) {\n      Array.isArray(this.attributions_)\n        ? this.attributions_.forEach((item) => visibleAttributions.add(item))\n        : visibleAttributions.add(this.attributions_);\n    }\n\n    if (!this.overrideCollapsible_) {\n      const collapsible = !layers.some(\n        (layer) => layer.getSource()?.getAttributionsCollapsible() === false,\n      );\n      this.setCollapsible(collapsible);\n    }\n    return Array.from(visibleAttributions);\n  }\n\n  /**\n   * @private\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  async 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 = await Promise.all(\n      this.collectSourceAttributions_(frameState).map((attribution) =>\n        toPromise(() => attribution),\n      ),\n    );\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    this.userCollapsed_ = this.collapsed_;\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    this.toggleButton_.setAttribute('aria-expanded', String(!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 (this.userCollapsed_) {\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    this.userCollapsed_ = 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   * Update the attribution element.\n   * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n   * @override\n   */\n  render(mapEvent) {\n    this.updateElement_(mapEvent.frameState);\n  }\n}\n\nexport default Attribution;\n","/**\n * @module ol/control/Rotate\n */\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\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 {string} [compassClassName='ol-compass'] CSS class name for the compass.\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):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [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 * @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   * @param {Options} [options] Rotate options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      render: options.render,\n      target: options.target,\n    });\n\n    const className =\n      options.className !== undefined ? options.className : 'ol-rotate';\n\n    const label = options.label !== undefined ? options.label : '\\u21E7';\n\n    const compassClassName =\n      options.compassClassName !== undefined\n        ? options.compassClassName\n        : 'ol-compass';\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 = compassClassName;\n      this.label_.textContent = label;\n    } else {\n      this.label_ = label;\n      this.label_.classList.add(compassClassName);\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(\n      EventType.CLICK,\n      this.handleClick_.bind(this),\n      false,\n    );\n\n    const cssClasses =\n      className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n    const element = this.element;\n    element.className = cssClasses;\n    element.appendChild(button);\n\n    /**\n     * @private\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   * @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    const rotation = view.getRotation();\n    if (rotation !== undefined) {\n      if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 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   * Update the rotate control element.\n   * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n   * @override\n   */\n  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}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\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} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\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 * @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   * @param {Options} [options] Zoom options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      target: options.target,\n    });\n\n    const className =\n      options.className !== undefined ? options.className : 'ol-zoom';\n\n    const delta = options.delta !== undefined ? options.delta : 1;\n\n    const zoomInClassName =\n      options.zoomInClassName !== undefined\n        ? options.zoomInClassName\n        : className + '-in';\n\n    const zoomOutClassName =\n      options.zoomOutClassName !== undefined\n        ? options.zoomOutClassName\n        : className + '-out';\n\n    const zoomInLabel =\n      options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n    const zoomOutLabel =\n      options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n\n    const zoomInTipLabel =\n      options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n    const zoomOutTipLabel =\n      options.zoomOutTipLabel !== undefined\n        ? options.zoomOutTipLabel\n        : 'Zoom out';\n\n    const inElement = document.createElement('button');\n    inElement.className = zoomInClassName;\n    inElement.setAttribute('type', 'button');\n    inElement.title = zoomInTipLabel;\n    inElement.appendChild(\n      typeof zoomInLabel === 'string'\n        ? document.createTextNode(zoomInLabel)\n        : zoomInLabel,\n    );\n\n    inElement.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this, delta),\n      false,\n    );\n\n    const outElement = document.createElement('button');\n    outElement.className = zoomOutClassName;\n    outElement.setAttribute('type', 'button');\n    outElement.title = zoomOutTipLabel;\n    outElement.appendChild(\n      typeof zoomOutLabel === 'string'\n        ? document.createTextNode(zoomOutLabel)\n        : zoomOutLabel,\n    );\n\n    outElement.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this, -delta),\n      false,\n    );\n\n    const cssClasses =\n      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   * @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\nexport default Zoom;\n","/**\n * @module ol/control/defaults\n */\nimport Collection from '../Collection.js';\nimport Attribution from './Attribution.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./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(\"./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(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\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} [options] Options for the default controls.\n * @return {Collection<import(\"./Control.js\").default>} A collection of controls\n * to be used with the {@link module:ol/Map~Map} constructor's `controls` option.\n * @api\n */\nexport function defaults(options) {\n  options = options ? options : {};\n\n  /** @type {Collection<import(\"./Control.js\").default>} */\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 =\n    options.attribution !== undefined ? options.attribution : true;\n  if (attributionControl) {\n    controls.push(new Attribution(options.attributionOptions));\n  }\n\n  return controls;\n}\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 * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active', Return>} InteractionOnSignature\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 * @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    /***\n     * @type {InteractionOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {InteractionOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {InteractionOnSignature<void>}\n     */\n    this.un;\n\n    if (options && options.handleEvent) {\n      this.handleEvent = options.handleEvent;\n    }\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default|null}\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(\"../Map.js\").default|null} Map.\n   * @api\n   */\n  getMap() {\n    return this.map_;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~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(\"../Map.js\").default|null} map Map.\n   */\n  setMap(map) {\n    this.map_ = map;\n  }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number} [duration] Duration.\n */\nexport function pan(view, delta, 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: duration !== undefined ? 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} [anchor] Anchor coordinate in the user projection.\n * @param {number} [duration] Duration.\n */\nexport function zoomByDelta(view, delta, anchor, 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: anchor,\n    duration: duration !== undefined ? 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 * @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 * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? 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   * Handles the {@link module:ol/MapBrowserEvent~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   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    let stopEvent = false;\n    if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n      const browserEvent = /** @type {MouseEvent} */ (\n        mapBrowserEvent.originalEvent\n      );\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      browserEvent.preventDefault();\n      stopEvent = true;\n    }\n    return !stopEvent;\n  }\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {assert} from '../asserts.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\n\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~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 * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n  const conditions = arguments;\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @return {boolean} All conditions passed.\n   */\n  return function (event) {\n    let pass = true;\n    for (let i = 0, ii = conditions.length; i < ii; ++i) {\n      pass = pass && conditions[i](event);\n      if (!pass) {\n        break;\n      }\n    }\n    return pass;\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} */ (\n    mapBrowserEvent.originalEvent\n  );\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} */ (\n    mapBrowserEvent.originalEvent\n  );\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. `<div id=\"map\" tabindex=\"1\">`.\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  const targetElement = event.map.getTargetElement();\n  const rootNode = targetElement.getRootNode();\n  const activeElement = event.map.getOwnerDocument().activeElement;\n\n  return rootNode instanceof ShadowRoot\n    ? rootNode.host.contains(activeElement)\n    : targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n  const targetElement = event.map.getTargetElement();\n  const rootNode = targetElement.getRootNode();\n  const tabIndexCandidate =\n    rootNode instanceof ShadowRoot ? rootNode.host : targetElement;\n\n  return tabIndexCandidate.hasAttribute('tabindex') ? focus(event) : true;\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 * 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 * 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} */ (\n    mapBrowserEvent.originalEvent\n  );\n  return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\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 * 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 * 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 * 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 * 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} */ (\n    mapBrowserEvent.originalEvent\n  );\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} */ (\n    mapBrowserEvent.originalEvent\n  );\n  return (\n    !originalEvent.altKey &&\n    (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n    !originalEvent.shiftKey\n  );\n};\n\n/**\n * Return `true` if the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKey = function (mapBrowserEvent) {\n  const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n    mapBrowserEvent.originalEvent\n  );\n  return MAC ? originalEvent.metaKey : originalEvent.ctrlKey;\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} */ (\n    mapBrowserEvent.originalEvent\n  );\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 an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport const targetNotEditable = function (mapBrowserEvent) {\n  const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n    mapBrowserEvent.originalEvent\n  );\n  const tagName = /** @type {Element} */ (originalEvent.target).tagName;\n  return (\n    tagName !== 'INPUT' &&\n    tagName !== 'SELECT' &&\n    tagName !== 'TEXTAREA' &&\n    // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n    // different type like `SVGElement`.\n    // @ts-ignore\n    !originalEvent.target.isContentEditable\n  );\n};\n\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport const mouseOnly = function (mapBrowserEvent) {\n  const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n    mapBrowserEvent\n  ).originalEvent;\n  assert(\n    pointerEvent !== undefined,\n    'mapBrowserEvent must originate from a pointer event',\n  );\n  // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n  return pointerEvent.pointerType == 'mouse';\n};\n\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport const touchOnly = function (mapBrowserEvent) {\n  const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n    mapBrowserEvent\n  ).originalEvent;\n  assert(\n    pointerEvt !== undefined,\n    'mapBrowserEvent must originate from a pointer event',\n  );\n  // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n  return pointerEvt.pointerType === 'touch';\n};\n\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport const penOnly = function (mapBrowserEvent) {\n  const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n    mapBrowserEvent\n  ).originalEvent;\n  assert(\n    pointerEvt !== undefined,\n    'mapBrowserEvent must originate from a pointer event',\n  );\n  // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n  return pointerEvt.pointerType === 'pen';\n};\n\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport const primaryAction = function (mapBrowserEvent) {\n  const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n    mapBrowserEvent\n  ).originalEvent;\n  assert(\n    pointerEvent !== undefined,\n    'mapBrowserEvent must originate from a pointer event',\n  );\n  return pointerEvent.isPrimary && pointerEvent.button === 0;\n};\n","/**\n * @module ol/interaction/Pointer\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\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. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n *  Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nclass PointerInteraction extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(\n      /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options),\n    );\n\n    if (options.handleDownEvent) {\n      this.handleDownEvent = options.handleDownEvent;\n    }\n\n    if (options.handleDragEvent) {\n      this.handleDragEvent = options.handleDragEvent;\n    }\n\n    if (options.handleMoveEvent) {\n      this.handleMoveEvent = options.handleMoveEvent;\n    }\n\n    if (options.handleUpEvent) {\n      this.handleUpEvent = options.handleUpEvent;\n    }\n\n    if (options.stopDown) {\n      this.stopDown = options.stopDown;\n    }\n\n    /**\n     * @type {boolean}\n     * @protected\n     */\n    this.handlingDownUpSequence = false;\n\n    /**\n     * @type {Array<PointerEvent>}\n     * @protected\n     */\n    this.targetPointers = [];\n  }\n\n  /**\n   * Returns the current number of pointers involved in the interaction,\n   * e.g. `2` when two fingers are used.\n   * @return {number} The number of pointers.\n   * @api\n   */\n  getPointerCount() {\n    return this.targetPointers.length;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @protected\n   */\n  handleDownEvent(mapBrowserEvent) {\n    return false;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @protected\n   */\n  handleDragEvent(mapBrowserEvent) {}\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may call into\n   * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n   * detected.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @api\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!mapBrowserEvent.originalEvent) {\n      return true;\n    }\n\n    let stopEvent = false;\n    this.updateTrackedPointers_(mapBrowserEvent);\n    if (this.handlingDownUpSequence) {\n      if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n        this.handleDragEvent(mapBrowserEvent);\n        // prevent page scrolling during dragging\n        mapBrowserEvent.originalEvent.preventDefault();\n      } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n        const handledUp = this.handleUpEvent(mapBrowserEvent);\n        this.handlingDownUpSequence =\n          handledUp && this.targetPointers.length > 0;\n      }\n    } else {\n      if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n        const handled = this.handleDownEvent(mapBrowserEvent);\n        this.handlingDownUpSequence = handled;\n        stopEvent = this.stopDown(handled);\n      } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n        this.handleMoveEvent(mapBrowserEvent);\n      }\n    }\n    return !stopEvent;\n  }\n\n  /**\n   * Handle pointer move events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @protected\n   */\n  handleMoveEvent(mapBrowserEvent) {}\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @protected\n   */\n  handleUpEvent(mapBrowserEvent) {\n    return false;\n  }\n\n  /**\n   * This function is used to determine if \"down\" events should be propagated\n   * to other interactions or should be stopped.\n   * @param {boolean} handled Was the event handled by the interaction?\n   * @return {boolean} Should the `down` event be stopped?\n   */\n  stopDown(handled) {\n    return handled;\n  }\n\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @private\n   */\n  updateTrackedPointers_(mapBrowserEvent) {\n    if (mapBrowserEvent.activePointers) {\n      this.targetPointers = mapBrowserEvent.activePointers;\n    }\n  }\n}\n\n/**\n * @param {Array<PointerEvent>} pointerEvents List of events.\n * @return {{clientX: number, clientY: number}} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n  const length = pointerEvents.length;\n  let clientX = 0;\n  let clientY = 0;\n  for (let i = 0; i < length; i++) {\n    clientX += pointerEvents[i].clientX;\n    clientY += pointerEvents[i].clientY;\n  }\n  return {clientX: clientX / length, clientY: clientY / length};\n}\n\nexport default PointerInteraction;\n","/**\n * @module ol/interaction/DragPan\n */\nimport {\n  rotate as rotateCoordinate,\n  scale as scaleCoordinate,\n} from '../coordinate.js';\nimport {easeOut} from '../easing.js';\nimport {\n  all,\n  focusWithTabindex,\n  noModifierKeys,\n  primaryAction,\n} from '../events/condition.js';\nimport {FALSE} from '../functions.js';\nimport PointerInteraction, {\n  centroid as centroidFromPointers,\n} from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.noModifierKeys} and {@link module:ol/events/condition.primaryAction}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nclass DragPan extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super({\n      stopDown: FALSE,\n    });\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     * @type {import(\"../Kinetic.js\").default|undefined}\n     */\n    this.kinetic_ = options.kinetic;\n\n    /**\n     * @type {import(\"../pixel.js\").Pixel}\n     */\n    this.lastCentroid = null;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.lastPointersCount_;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.panning_ = false;\n\n    const condition = options.condition\n      ? options.condition\n      : all(noModifierKeys, primaryAction);\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.onFocusOnly\n      ? all(focusWithTabindex, condition)\n      : condition;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.noKinetic_ = false;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    const map = mapBrowserEvent.map;\n    if (!this.panning_) {\n      this.panning_ = true;\n      map.getView().beginInteraction();\n    }\n    const targetPointers = this.targetPointers;\n    const centroid = map.getEventPixel(centroidFromPointers(targetPointers));\n    if (targetPointers.length == this.lastPointersCount_) {\n      if (this.kinetic_) {\n        this.kinetic_.update(centroid[0], centroid[1]);\n      }\n      if (this.lastCentroid) {\n        const delta = [\n          this.lastCentroid[0] - centroid[0],\n          centroid[1] - this.lastCentroid[1],\n        ];\n        const map = mapBrowserEvent.map;\n        const view = map.getView();\n        scaleCoordinate(delta, view.getResolution());\n        rotateCoordinate(delta, view.getRotation());\n        view.adjustCenterInternal(delta);\n      }\n    } else if (this.kinetic_) {\n      // reset so we don't overestimate the kinetic energy after\n      // after one finger down, tiny drag, second finger down\n      this.kinetic_.begin();\n    }\n    this.lastCentroid = centroid;\n    this.lastPointersCount_ = targetPointers.length;\n    mapBrowserEvent.originalEvent.preventDefault();\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    if (this.targetPointers.length === 0) {\n      if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n        const distance = this.kinetic_.getDistance();\n        const angle = this.kinetic_.getAngle();\n        const center = view.getCenterInternal();\n        const centerpx = map.getPixelFromCoordinateInternal(center);\n        const dest = map.getCoordinateFromPixelInternal([\n          centerpx[0] - distance * Math.cos(angle),\n          centerpx[1] - distance * Math.sin(angle),\n        ]);\n        view.animateInternal({\n          center: view.getConstrainedCenter(dest),\n          duration: 500,\n          easing: easeOut,\n        });\n      }\n      if (this.panning_) {\n        this.panning_ = false;\n        view.endInteraction();\n      }\n      return false;\n    }\n    if (this.kinetic_) {\n      // reset so we don't overestimate the kinetic energy after\n      // after one finger up, tiny drag, second finger up\n      this.kinetic_.begin();\n    }\n    this.lastCentroid = null;\n    return true;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) {\n      const map = mapBrowserEvent.map;\n      const view = map.getView();\n      this.lastCentroid = null;\n      // stop any current animation\n      if (view.getAnimating()) {\n        view.cancelAnimations();\n      }\n      if (this.kinetic_) {\n        this.kinetic_.begin();\n      }\n      // No kinetic as soon as more than one pointer on the screen is\n      // detected. This is to prevent nasty pans after pinch.\n      this.noKinetic_ = this.targetPointers.length > 1;\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default DragPan;\n","/**\n * @module ol/interaction/DragRotate\n */\nimport {\n  altShiftKeysOnly,\n  mouseActionButton,\n  mouseOnly,\n} from '../events/condition.js';\nimport {FALSE} from '../functions.js';\nimport {disable} from '../rotationconstraint.js';\nimport PointerInteraction from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes a\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with a {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nclass DragRotate extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      stopDown: FALSE,\n    });\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lastAngle_ = undefined;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    if (!mouseOnly(mapBrowserEvent)) {\n      return;\n    }\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    if (view.getConstraints().rotation === disable) {\n      return;\n    }\n    const size = map.getSize();\n    const offset = mapBrowserEvent.pixel;\n    const theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n    if (this.lastAngle_ !== undefined) {\n      const delta = theta - this.lastAngle_;\n      view.adjustRotationInternal(-delta);\n    }\n    this.lastAngle_ = theta;\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (!mouseOnly(mapBrowserEvent)) {\n      return true;\n    }\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    view.endInteraction(this.duration_);\n    return false;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (!mouseOnly(mapBrowserEvent)) {\n      return false;\n    }\n\n    if (\n      mouseActionButton(mapBrowserEvent) &&\n      this.condition_(mapBrowserEvent)\n    ) {\n      const map = mapBrowserEvent.map;\n      map.getView().beginInteraction();\n      this.lastAngle_ = undefined;\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default DragRotate;\n","/**\n * @module ol/render/Box\n */\n\nimport Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\n\nclass RenderBox extends Disposable {\n  /**\n   * @param {string} className CSS class name.\n   */\n  constructor(className) {\n    super();\n\n    /**\n     * @type {import(\"../geom/Polygon.js\").default}\n     * @private\n     */\n    this.geometry_ = null;\n\n    /**\n     * @type {HTMLDivElement}\n     * @private\n     */\n    this.element_ = document.createElement('div');\n    this.element_.style.position = 'absolute';\n    this.element_.style.pointerEvents = 'auto';\n    this.element_.className = 'ol-box ' + className;\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default|null}\n     */\n    this.map_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../pixel.js\").Pixel}\n     */\n    this.startPixel_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../pixel.js\").Pixel}\n     */\n    this.endPixel_ = null;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.setMap(null);\n  }\n\n  /**\n   * @private\n   */\n  render_() {\n    const startPixel = this.startPixel_;\n    const endPixel = this.endPixel_;\n    const px = 'px';\n    const style = this.element_.style;\n    style.left = Math.min(startPixel[0], endPixel[0]) + px;\n    style.top = Math.min(startPixel[1], endPixel[1]) + px;\n    style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n    style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n  }\n\n  /**\n   * @param {import(\"../Map.js\").default|null} map Map.\n   */\n  setMap(map) {\n    if (this.map_) {\n      this.map_.getOverlayContainer().removeChild(this.element_);\n      const style = this.element_.style;\n      style.left = 'inherit';\n      style.top = 'inherit';\n      style.width = 'inherit';\n      style.height = 'inherit';\n    }\n    this.map_ = map;\n    if (this.map_) {\n      this.map_.getOverlayContainer().appendChild(this.element_);\n    }\n  }\n\n  /**\n   * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n   * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n   */\n  setPixels(startPixel, endPixel) {\n    this.startPixel_ = startPixel;\n    this.endPixel_ = endPixel;\n    this.createOrUpdateGeometry();\n    this.render_();\n  }\n\n  /**\n   * Creates or updates the cached geometry.\n   */\n  createOrUpdateGeometry() {\n    if (!this.map_) {\n      return;\n    }\n\n    const startPixel = this.startPixel_;\n    const endPixel = this.endPixel_;\n    const pixels = [\n      startPixel,\n      [startPixel[0], endPixel[1]],\n      endPixel,\n      [endPixel[0], startPixel[1]],\n    ];\n    const coordinates = pixels.map(\n      this.map_.getCoordinateFromPixelInternal,\n      this.map_,\n    );\n    // close the polygon\n    coordinates[4] = coordinates[0].slice();\n    if (!this.geometry_) {\n      this.geometry_ = new Polygon([coordinates]);\n    } else {\n      this.geometry_.setCoordinates([coordinates]);\n    }\n  }\n\n  /**\n   * @return {import(\"../geom/Polygon.js\").default} Geometry.\n   */\n  getGeometry() {\n    return this.geometry_;\n  }\n}\n\nexport default RenderBox;\n","/**\n * @module ol/interaction/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport {mouseActionButton} from '../events/condition.js';\nimport RenderBox from '../render/Box.js';\nimport PointerInteraction from './Pointer.js';\n\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default):void} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n\n/**\n * @enum {string}\n */\nconst DragBoxEventType = {\n  /**\n   * Triggered upon drag box start.\n   * @event DragBoxEvent#boxstart\n   * @api\n   */\n  BOXSTART: 'boxstart',\n\n  /**\n   * Triggered on drag when box is active.\n   * @event DragBoxEvent#boxdrag\n   * @api\n   */\n  BOXDRAG: 'boxdrag',\n\n  /**\n   * Triggered upon drag box end.\n   * @event DragBoxEvent#boxend\n   * @api\n   */\n  BOXEND: 'boxend',\n\n  /**\n   * Triggered upon drag box canceled.\n   * @event DragBoxEvent#boxcancel\n   * @api\n   */\n  BOXCANCEL: 'boxcancel',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nexport class DragBoxEvent extends Event {\n  /**\n   * @param {string} type The event type.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n   */\n  constructor(type, coordinate, mapBrowserEvent) {\n    super(type);\n\n    /**\n     * The coordinate of the drag event.\n     * @const\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @api\n     */\n    this.coordinate = coordinate;\n\n    /**\n     * @const\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @api\n     */\n    this.mapBrowserEvent = mapBrowserEvent;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'boxcancel'|'boxdrag'|'boxend'|'boxstart', DragBoxEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'boxcancel'|'boxdrag'|'boxend', Return>} DragBoxOnSignature\n */\n\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with a {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom~DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nclass DragBox extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {DragBoxOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {DragBoxOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {DragBoxOnSignature<void>}\n     */\n    this.un;\n\n    options = options ?? {};\n\n    /**\n     * @type {import(\"../render/Box.js\").default}\n     * @private\n     */\n    this.box_ = new RenderBox(options.className || 'ol-dragbox');\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.minArea_ = options.minArea ?? 64;\n\n    if (options.onBoxEnd) {\n      this.onBoxEnd = options.onBoxEnd;\n    }\n\n    /**\n     * @type {import(\"../pixel.js\").Pixel}\n     * @private\n     */\n    this.startPixel_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ?? mouseActionButton;\n\n    /**\n     * @private\n     * @type {EndCondition}\n     */\n    this.boxEndCondition_ =\n      options.boxEndCondition ?? this.defaultBoxEndCondition;\n  }\n\n  /**\n   * The default condition for determining whether the boxend event\n   * should fire.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n   *     leading to the box end.\n   * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n   * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n   * @return {boolean} Whether or not the boxend condition should be fired.\n   */\n  defaultBoxEndCondition(mapBrowserEvent, startPixel, endPixel) {\n    const width = endPixel[0] - startPixel[0];\n    const height = endPixel[1] - startPixel[1];\n    return width * width + height * height >= this.minArea_;\n  }\n\n  /**\n   * Returns geometry of last drawn box.\n   * @return {import(\"../geom/Polygon.js\").default} Geometry.\n   * @api\n   */\n  getGeometry() {\n    return this.box_.getGeometry();\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    if (!this.startPixel_) {\n      return;\n    }\n\n    this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n\n    this.dispatchEvent(\n      new DragBoxEvent(\n        DragBoxEventType.BOXDRAG,\n        mapBrowserEvent.coordinate,\n        mapBrowserEvent,\n      ),\n    );\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (!this.startPixel_) {\n      return false;\n    }\n\n    const completeBox = this.boxEndCondition_(\n      mapBrowserEvent,\n      this.startPixel_,\n      mapBrowserEvent.pixel,\n    );\n    if (completeBox) {\n      this.onBoxEnd(mapBrowserEvent);\n    }\n    this.dispatchEvent(\n      new DragBoxEvent(\n        completeBox ? DragBoxEventType.BOXEND : DragBoxEventType.BOXCANCEL,\n        mapBrowserEvent.coordinate,\n        mapBrowserEvent,\n      ),\n    );\n\n    this.box_.setMap(null);\n    this.startPixel_ = null;\n\n    return false;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.condition_(mapBrowserEvent)) {\n      this.startPixel_ = mapBrowserEvent.pixel;\n      this.box_.setMap(mapBrowserEvent.map);\n      this.box_.setPixels(this.startPixel_, this.startPixel_);\n      this.dispatchEvent(\n        new DragBoxEvent(\n          DragBoxEventType.BOXSTART,\n          mapBrowserEvent.coordinate,\n          mapBrowserEvent,\n        ),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Function to execute just before `onboxend` is fired\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   */\n  onBoxEnd(event) {}\n\n  /**\n   * Activate or deactivate the interaction.\n   * @param {boolean} active Active.\n   * @observable\n   * @api\n   * @override\n   */\n  setActive(active) {\n    if (!active) {\n      this.box_.setMap(null);\n      if (this.startPixel_) {\n        this.dispatchEvent(\n          new DragBoxEvent(DragBoxEventType.BOXCANCEL, this.startPixel_, null),\n        );\n        this.startPixel_ = null;\n      }\n    }\n\n    super.setActive(active);\n  }\n\n  /**\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @override\n   */\n  setMap(map) {\n    const oldMap = this.getMap();\n\n    if (oldMap) {\n      this.box_.setMap(null);\n\n      if (this.startPixel_) {\n        this.dispatchEvent(\n          new DragBoxEvent(DragBoxEventType.BOXCANCEL, this.startPixel_, null),\n        );\n        this.startPixel_ = null;\n      }\n    }\n\n    super.setMap(map);\n  }\n}\n\nexport default DragBox;\n","/**\n * @module ol/interaction/DragZoom\n */\nimport {easeOut} from '../easing.js';\nimport {shiftKeyOnly} from '../events/condition.js';\nimport DragBox from './DragBox.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with a {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nclass DragZoom extends DragBox {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const condition = options.condition ? options.condition : shiftKeyOnly;\n\n    super({\n      condition: condition,\n      className: options.className || 'ol-dragzoom',\n      minArea: options.minArea,\n    });\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.out_ = options.out !== undefined ? options.out : false;\n  }\n\n  /**\n   * Function to execute just before `onboxend` is fired\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @override\n   */\n  onBoxEnd(event) {\n    const map = this.getMap();\n    const view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n    let geometry = this.getGeometry();\n\n    if (this.out_) {\n      const rotatedExtent = view.rotatedExtentForGeometry(geometry);\n      const resolution = view.getResolutionForExtentInternal(rotatedExtent);\n      const factor = view.getResolution() / resolution;\n      geometry = geometry.clone();\n      geometry.scale(factor * factor);\n    }\n\n    view.fitInternal(geometry, {\n      duration: this.duration_,\n      easing: easeOut,\n    });\n  }\n}\n\nexport default DragZoom;\n","/**\n * @module ol/events/Key\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n  LEFT: 'ArrowLeft',\n  UP: 'ArrowUp',\n  RIGHT: 'ArrowRight',\n  DOWN: 'ArrowDown',\n};\n","/**\n * @module ol/interaction/KeyboardPan\n */\nimport {rotate as rotateCoordinate} from '../coordinate.js';\nimport EventType from '../events/EventType.js';\nimport Key from '../events/Key.js';\nimport {noModifierKeys, targetNotEditable} from '../events/condition.js';\nimport Interaction, {pan} from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.noModifierKeys} and\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nclass KeyboardPan extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options || {};\n\n    /**\n     * @private\n     * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n     * @return {boolean} Combined condition result.\n     */\n    this.defaultCondition_ = function (mapBrowserEvent) {\n      return (\n        noModifierKeys(mapBrowserEvent) && targetNotEditable(mapBrowserEvent)\n      );\n    };\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ =\n      options.condition !== undefined\n        ? options.condition\n        : this.defaultCondition_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 100;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelDelta_ =\n      options.pixelDelta !== undefined ? options.pixelDelta : 128;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n   * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n   * pressed).\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    let stopEvent = false;\n    if (mapBrowserEvent.type == EventType.KEYDOWN) {\n      const keyEvent = /** @type {KeyboardEvent} */ (\n        mapBrowserEvent.originalEvent\n      );\n      const key = keyEvent.key;\n      if (\n        this.condition_(mapBrowserEvent) &&\n        (key == Key.DOWN ||\n          key == Key.LEFT ||\n          key == Key.RIGHT ||\n          key == Key.UP)\n      ) {\n        const map = mapBrowserEvent.map;\n        const view = map.getView();\n        const mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n        let deltaX = 0,\n          deltaY = 0;\n        if (key == Key.DOWN) {\n          deltaY = -mapUnitsDelta;\n        } else if (key == Key.LEFT) {\n          deltaX = -mapUnitsDelta;\n        } else if (key == Key.RIGHT) {\n          deltaX = mapUnitsDelta;\n        } else {\n          deltaY = mapUnitsDelta;\n        }\n        const delta = [deltaX, deltaY];\n        rotateCoordinate(delta, view.getRotation());\n        pan(view, delta, this.duration_);\n        keyEvent.preventDefault();\n        stopEvent = true;\n      }\n    }\n    return !stopEvent;\n  }\n}\n\nexport default KeyboardPan;\n","/**\n * @module ol/interaction/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport {platformModifierKey, targetNotEditable} from '../events/condition.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. The default condition is\n * that {@link module:ol/events/condition.targetNotEditable} is fulfilled and that\n * the platform modifier key isn't pressed\n * (!{@link module:ol/events/condition.platformModifierKey}).\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nclass KeyboardZoom extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition\n      ? options.condition\n      : function (mapBrowserEvent) {\n          return (\n            !platformModifierKey(mapBrowserEvent) &&\n            targetNotEditable(mapBrowserEvent)\n          );\n        };\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 : 100;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n   * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n   * key pressed was '+' or '-').\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    let stopEvent = false;\n    if (\n      mapBrowserEvent.type == EventType.KEYDOWN ||\n      mapBrowserEvent.type == EventType.KEYPRESS\n    ) {\n      const keyEvent = /** @type {KeyboardEvent} */ (\n        mapBrowserEvent.originalEvent\n      );\n      const key = keyEvent.key;\n      if (this.condition_(mapBrowserEvent) && (key === '+' || key === '-')) {\n        const map = mapBrowserEvent.map;\n        const delta = key === '+' ? this.delta_ : -this.delta_;\n        const view = map.getView();\n        zoomByDelta(view, delta, undefined, this.duration_);\n        keyEvent.preventDefault();\n        stopEvent = true;\n      }\n    }\n    return !stopEvent;\n  }\n}\n\nexport default KeyboardZoom;\n","/**\n * @module ol/interaction/MouseWheelZoom\n */\nimport EventType from '../events/EventType.js';\nimport {all, always, focusWithTabindex} from '../events/condition.js';\nimport {DEVICE_PIXEL_RATIO, FIREFOX} from '../has.js';\nimport {clamp} from '../math.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n/**\n * @typedef {'trackpad' | 'wheel'} Mode\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.always}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n * @property {boolean} [constrainResolution=false] If true, the mouse wheel zoom\n * event will always animate to the closest zoom level after an interaction;\n * false means intermediary zoom levels are allowed.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nclass MouseWheelZoom extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(\n      /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options),\n    );\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.totalDelta_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.lastDelta_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.useAnchor_ =\n      options.useAnchor !== undefined ? options.useAnchor : true;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.constrainResolution_ =\n      options.constrainResolution !== undefined\n        ? options.constrainResolution\n        : false;\n\n    const condition = options.condition ? options.condition : always;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.onFocusOnly\n      ? all(focusWithTabindex, condition)\n      : condition;\n\n    /**\n     * @private\n     * @type {?import(\"../pixel.js\").Pixel}\n     */\n    this.lastAnchor_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.startTime_ = undefined;\n\n    /**\n     * @private\n     * @type {ReturnType<typeof setTimeout>}\n     */\n    this.timeoutId_;\n\n    /**\n     * @private\n     * @type {Mode|undefined}\n     */\n    this.mode_ = undefined;\n\n    /**\n     * Trackpad events separated by this delay will be considered separate\n     * interactions.\n     * @private\n     * @type {number}\n     */\n    this.trackpadEventGap_ = 400;\n\n    /**\n     * @private\n     * @type {ReturnType<typeof setTimeout>}\n     */\n    this.trackpadTimeoutId_;\n\n    /**\n     * The number of delta values per zoom level\n     * @private\n     * @type {number}\n     */\n    this.deltaPerZoom_ = 300;\n  }\n\n  /**\n   * @private\n   */\n  endInteraction_() {\n    this.trackpadTimeoutId_ = undefined;\n    const map = this.getMap();\n    if (!map) {\n      return;\n    }\n    const view = map.getView();\n    view.endInteraction(\n      undefined,\n      this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0,\n      this.lastAnchor_ ? map.getCoordinateFromPixel(this.lastAnchor_) : null,\n    );\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n   * zooms the map.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!this.condition_(mapBrowserEvent)) {\n      return true;\n    }\n    const type = mapBrowserEvent.type;\n    if (type !== EventType.WHEEL) {\n      return true;\n    }\n\n    const map = mapBrowserEvent.map;\n    const wheelEvent = /** @type {WheelEvent} */ (\n      mapBrowserEvent.originalEvent\n    );\n    wheelEvent.preventDefault();\n\n    if (this.useAnchor_) {\n      this.lastAnchor_ = mapBrowserEvent.pixel;\n    }\n\n    // Delta normalisation inspired by\n    // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n    let delta;\n    if (mapBrowserEvent.type == EventType.WHEEL) {\n      delta = wheelEvent.deltaY;\n      if (FIREFOX && wheelEvent.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n        delta /= DEVICE_PIXEL_RATIO;\n      }\n      if (wheelEvent.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n        delta *= 40;\n      }\n    }\n\n    if (delta === 0) {\n      return false;\n    }\n    this.lastDelta_ = delta;\n\n    const now = Date.now();\n\n    if (this.startTime_ === undefined) {\n      this.startTime_ = now;\n    }\n\n    if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n      this.mode_ = Math.abs(delta) < 4 ? 'trackpad' : 'wheel';\n    }\n\n    const view = map.getView();\n    if (\n      this.mode_ === 'trackpad' &&\n      !(view.getConstrainResolution() || this.constrainResolution_)\n    ) {\n      if (this.trackpadTimeoutId_) {\n        clearTimeout(this.trackpadTimeoutId_);\n      } else {\n        if (view.getAnimating()) {\n          view.cancelAnimations();\n        }\n        view.beginInteraction();\n      }\n      this.trackpadTimeoutId_ = setTimeout(\n        this.endInteraction_.bind(this),\n        this.timeout_,\n      );\n      view.adjustZoom(\n        -delta / this.deltaPerZoom_,\n        this.lastAnchor_ ? map.getCoordinateFromPixel(this.lastAnchor_) : null,\n      );\n      this.startTime_ = now;\n      return false;\n    }\n\n    this.totalDelta_ += delta;\n\n    const timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n\n    clearTimeout(this.timeoutId_);\n    this.timeoutId_ = setTimeout(\n      this.handleWheelZoom_.bind(this, map),\n      timeLeft,\n    );\n\n    return false;\n  }\n\n  /**\n   * @private\n   * @param {import(\"../Map.js\").default} map Map.\n   */\n  handleWheelZoom_(map) {\n    const view = map.getView();\n    if (view.getAnimating()) {\n      view.cancelAnimations();\n    }\n    let delta =\n      -clamp(\n        this.totalDelta_,\n        -this.maxDelta_ * this.deltaPerZoom_,\n        this.maxDelta_ * this.deltaPerZoom_,\n      ) / this.deltaPerZoom_;\n    if (view.getConstrainResolution() || this.constrainResolution_) {\n      // view has a zoom constraint, zoom by 1\n      delta = delta ? (delta > 0 ? 1 : -1) : 0;\n    }\n    zoomByDelta(\n      view,\n      delta,\n      this.lastAnchor_ ? map.getCoordinateFromPixel(this.lastAnchor_) : null,\n      this.duration_,\n    );\n\n    this.mode_ = undefined;\n    this.totalDelta_ = 0;\n    this.lastAnchor_ = null;\n    this.startTime_ = undefined;\n    this.timeoutId_ = undefined;\n  }\n\n  /**\n   * Enable or disable using the mouse's location as an anchor when zooming\n   * @param {boolean} useAnchor true to zoom to the mouse's location, false\n   * to zoom to the center of the map\n   * @api\n   */\n  setMouseAnchor(useAnchor) {\n    this.useAnchor_ = useAnchor;\n    if (!useAnchor) {\n      this.lastAnchor_ = null;\n    }\n  }\n}\n\nexport default MouseWheelZoom;\n","/**\n * @module ol/interaction/PinchRotate\n */\nimport {FALSE} from '../functions.js';\nimport {disable} from '../rotationconstraint.js';\nimport PointerInteraction, {\n  centroid as centroidFromPointers,\n} from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchRotate extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n      options\n    );\n\n    if (!pointerOptions.stopDown) {\n      pointerOptions.stopDown = FALSE;\n    }\n\n    super(pointerOptions);\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate}\n     */\n    this.anchor_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lastAngle_ = undefined;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.rotating_ = false;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.rotationDelta_ = 0.0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    let rotationDelta = 0.0;\n\n    const touch0 = this.targetPointers[0];\n    const touch1 = this.targetPointers[1];\n\n    // angle between touches\n    const angle = Math.atan2(\n      touch1.clientY - touch0.clientY,\n      touch1.clientX - touch0.clientX,\n    );\n\n    if (this.lastAngle_ !== undefined) {\n      const delta = angle - this.lastAngle_;\n      this.rotationDelta_ += delta;\n      if (!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) {\n        this.rotating_ = true;\n      }\n      rotationDelta = delta;\n    }\n    this.lastAngle_ = angle;\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    if (view.getConstraints().rotation === disable) {\n      return;\n    }\n\n    // rotate anchor point.\n    // FIXME: should be the intersection point between the lines:\n    //     touch0,touch1 and previousTouch0,previousTouch1\n    this.anchor_ = map.getCoordinateFromPixelInternal(\n      map.getEventPixel(centroidFromPointers(this.targetPointers)),\n    );\n\n    // rotate\n    if (this.rotating_) {\n      map.render();\n      view.adjustRotationInternal(rotationDelta, this.anchor_);\n    }\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (this.targetPointers.length < 2) {\n      const map = mapBrowserEvent.map;\n      const view = map.getView();\n      view.endInteraction(this.duration_);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.targetPointers.length >= 2) {\n      const map = mapBrowserEvent.map;\n      this.anchor_ = null;\n      this.lastAngle_ = undefined;\n      this.rotating_ = false;\n      this.rotationDelta_ = 0.0;\n      if (!this.handlingDownUpSequence) {\n        map.getView().beginInteraction();\n      }\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default PinchRotate;\n","/**\n * @module ol/interaction/PinchZoom\n */\nimport {FALSE} from '../functions.js';\nimport PointerInteraction, {\n  centroid as centroidFromPointers,\n} from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchZoom extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n      options\n    );\n\n    if (!pointerOptions.stopDown) {\n      pointerOptions.stopDown = FALSE;\n    }\n\n    super(pointerOptions);\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate}\n     */\n    this.anchor_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 400;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lastDistance_ = undefined;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.lastScaleDelta_ = 1;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    let scaleDelta = 1.0;\n\n    const touch0 = this.targetPointers[0];\n    const touch1 = this.targetPointers[1];\n    const dx = touch0.clientX - touch1.clientX;\n    const dy = touch0.clientY - touch1.clientY;\n\n    // distance between touches\n    const distance = Math.sqrt(dx * dx + dy * dy);\n\n    if (this.lastDistance_ !== undefined) {\n      scaleDelta = this.lastDistance_ / distance;\n    }\n    this.lastDistance_ = distance;\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n\n    if (scaleDelta != 1.0) {\n      this.lastScaleDelta_ = scaleDelta;\n    }\n\n    // scale anchor point.\n    this.anchor_ = map.getCoordinateFromPixelInternal(\n      map.getEventPixel(centroidFromPointers(this.targetPointers)),\n    );\n\n    // scale, bypass the resolution constraint\n    map.render();\n    view.adjustResolutionInternal(scaleDelta, this.anchor_);\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (this.targetPointers.length < 2) {\n      const map = mapBrowserEvent.map;\n      const view = map.getView();\n      const direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n      view.endInteraction(this.duration_, direction);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.targetPointers.length >= 2) {\n      const map = mapBrowserEvent.map;\n      this.anchor_ = null;\n      this.lastDistance_ = undefined;\n      this.lastScaleDelta_ = 1;\n      if (!this.handlingDownUpSequence) {\n        map.getView().beginInteraction();\n      }\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default PinchZoom;\n","/**\n * @module ol/interaction/defaults\n */\nimport Collection from '../Collection.js';\nimport Kinetic from '../Kinetic.js';\nimport DoubleClickZoom from './DoubleClickZoom.js';\nimport DragPan from './DragPan.js';\nimport DragRotate from './DragRotate.js';\nimport DragZoom from './DragZoom.js';\nimport KeyboardPan from './KeyboardPan.js';\nimport KeyboardZoom from './KeyboardZoom.js';\nimport MouseWheelZoom from './MouseWheelZoom.js';\nimport PinchRotate from './PinchRotate.js';\nimport PinchZoom from './PinchZoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed.  If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction~Interaction} instances and insert\n * them into a {@link module:ol/Collection~Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * {@link module:ol/interaction/DragRotate~DragRotate}\n * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * {@link module:ol/interaction/DragPan~DragPan}\n * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions} [options] Defaults options.\n * @return {Collection<import(\"./Interaction.js\").default>}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(options) {\n  options = options ? options : {};\n\n  /** @type {Collection<import(\"./Interaction.js\").default>} */\n  const interactions = new Collection();\n\n  const kinetic = new Kinetic(-0.005, 0.05, 100);\n\n  const altShiftDragRotate =\n    options.altShiftDragRotate !== undefined\n      ? options.altShiftDragRotate\n      : true;\n  if (altShiftDragRotate) {\n    interactions.push(new DragRotate());\n  }\n\n  const doubleClickZoom =\n    options.doubleClickZoom !== undefined ? options.doubleClickZoom : true;\n  if (doubleClickZoom) {\n    interactions.push(\n      new DoubleClickZoom({\n        delta: options.zoomDelta,\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const dragPan = options.dragPan !== undefined ? options.dragPan : true;\n  if (dragPan) {\n    interactions.push(\n      new DragPan({\n        onFocusOnly: options.onFocusOnly,\n        kinetic: kinetic,\n      }),\n    );\n  }\n\n  const pinchRotate =\n    options.pinchRotate !== undefined ? options.pinchRotate : true;\n  if (pinchRotate) {\n    interactions.push(new PinchRotate());\n  }\n\n  const pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n  if (pinchZoom) {\n    interactions.push(\n      new PinchZoom({\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const keyboard = options.keyboard !== undefined ? options.keyboard : true;\n  if (keyboard) {\n    interactions.push(new KeyboardPan());\n    interactions.push(\n      new KeyboardZoom({\n        delta: options.zoomDelta,\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const mouseWheelZoom =\n    options.mouseWheelZoom !== undefined ? options.mouseWheelZoom : true;\n  if (mouseWheelZoom) {\n    interactions.push(\n      new MouseWheelZoom({\n        onFocusOnly: options.onFocusOnly,\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const shiftDragZoom =\n    options.shiftDragZoom !== undefined ? options.shiftDragZoom : true;\n  if (shiftDragZoom) {\n    interactions.push(\n      new DragZoom({\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  return interactions;\n}\n","/**\n * @module ol/layer/Group\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {assert} from '../asserts.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {getIntersection} from '../extent.js';\nimport {clear} from '../obj.js';\nimport {getUid} from '../util.js';\nimport BaseLayer from './Base.js';\n\n/**\n * @typedef {'addlayer'|'removelayer'} GroupEventType\n */\n\n/**\n * @classdesc\n * A layer group triggers 'addlayer' and 'removelayer' events when layers are added to or removed from\n * the group or one of its child groups.  When a layer group is added to or removed from another layer group,\n * a single event will be triggered (instead of one per layer in the group added or removed).\n */\nexport class GroupEvent extends Event {\n  /**\n   * @param {GroupEventType} type The event type.\n   * @param {BaseLayer} layer The layer.\n   */\n  constructor(type, layer) {\n    super(type);\n\n    /**\n     * The added or removed layer.\n     * @type {BaseLayer}\n     * @api\n     */\n    this.layer = layer;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     'change:layers', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|'change:layers', Return>} GroupOnSignature\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(\"./Base.js\").default>|Collection<import(\"./Base.js\").default>} [layers] Child layers.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n  LAYERS: 'layers',\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} [options] Layer options.\n   */\n  constructor(options) {\n    options = options || {};\n    const baseOptions = /** @type {Options} */ (Object.assign({}, options));\n    delete baseOptions.layers;\n\n    let layers = options.layers;\n\n    super(baseOptions);\n\n    /***\n     * @type {GroupOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {GroupOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {GroupOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {Array<import(\"../events.js\").EventsKey>}\n     */\n    this.layersListenerKeys_ = [];\n\n    /**\n     * @private\n     * @type {Object<string, Array<import(\"../events.js\").EventsKey>>}\n     */\n    this.listenerKeys_ = {};\n\n    this.addChangeListener(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(\n          typeof (/** @type {?} */ (layers).getArray) === 'function',\n          'Expected `layers` to be an array or a `Collection`',\n        );\n      }\n    } else {\n      layers = new Collection(undefined, {unique: true});\n    }\n\n    this.setLayers(layers);\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(\n        layers,\n        CollectionEventType.REMOVE,\n        this.handleLayersRemove_,\n        this,\n      ),\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.registerLayerListeners_(layer);\n      this.dispatchEvent(new GroupEvent('addlayer', layer));\n    }\n    this.changed();\n  }\n\n  /**\n   * @param {BaseLayer} layer The layer.\n   */\n  registerLayerListeners_(layer) {\n    const listenerKeys = [\n      listen(\n        layer,\n        ObjectEventType.PROPERTYCHANGE,\n        this.handleLayerChange_,\n        this,\n      ),\n      listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n    ];\n\n    if (layer instanceof LayerGroup) {\n      listenerKeys.push(\n        listen(layer, 'addlayer', this.handleLayerGroupAdd_, this),\n        listen(layer, 'removelayer', this.handleLayerGroupRemove_, this),\n      );\n    }\n\n    this.listenerKeys_[getUid(layer)] = listenerKeys;\n  }\n\n  /**\n   * @param {GroupEvent} event The layer group event.\n   */\n  handleLayerGroupAdd_(event) {\n    this.dispatchEvent(new GroupEvent('addlayer', event.layer));\n  }\n\n  /**\n   * @param {GroupEvent} event The layer group event.\n   */\n  handleLayerGroupRemove_(event) {\n    this.dispatchEvent(new GroupEvent('removelayer', event.layer));\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<import(\"./Base.js\").default>} collectionEvent CollectionEvent.\n   * @private\n   */\n  handleLayersAdd_(collectionEvent) {\n    const layer = collectionEvent.element;\n    this.registerLayerListeners_(layer);\n    this.dispatchEvent(new GroupEvent('addlayer', layer));\n    this.changed();\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<import(\"./Base.js\").default>} collectionEvent CollectionEvent.\n   * @private\n   */\n  handleLayersRemove_(collectionEvent) {\n    const layer = collectionEvent.element;\n    const key = getUid(layer);\n    this.listenerKeys_[key].forEach(unlistenByKey);\n    delete this.listenerKeys_[key];\n    this.dispatchEvent(new GroupEvent('removelayer', layer));\n    this.changed();\n  }\n\n  /**\n   * Returns the {@link module:ol/Collection~Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n   * in this group.\n   * @return {!Collection<import(\"./Base.js\").default>} Collection of\n   *   {@link module:ol/layer/Base~BaseLayer layers} that are part of this group.\n   * @observable\n   * @api\n   */\n  getLayers() {\n    return /** @type {!Collection<import(\"./Base.js\").default>} */ (\n      this.get(Property.LAYERS)\n    );\n  }\n\n  /**\n   * Set the {@link module:ol/Collection~Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n   * in this group.\n   * @param {!Collection<import(\"./Base.js\").default>} layers Collection of\n   *   {@link module:ol/layer/Base~BaseLayer layers} that are part of this group.\n   * @observable\n   * @api\n   */\n  setLayers(layers) {\n    const collection = this.getLayers();\n    if (collection) {\n      const currentLayers = collection.getArray();\n      for (let i = 0, ii = currentLayers.length; i < ii; ++i) {\n        this.dispatchEvent(new GroupEvent('removelayer', currentLayers[i]));\n      }\n    }\n\n    this.set(Property.LAYERS, layers);\n  }\n\n  /**\n   * @param {Array<import(\"./Layer.js\").default>} [array] Array of layers (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").default>} Array of layers.\n   * @override\n   */\n  getLayersArray(array) {\n    array = array !== undefined ? array : [];\n    this.getLayers().forEach(function (layer) {\n      layer.getLayersArray(array);\n    });\n    return array;\n  }\n\n  /**\n   * Get the layer states list and use this groups z-index as the default\n   * for all layers in this and nested groups, if it is unset at this point.\n   * If dest is not provided and this group's z-index is undefined\n   * 0 is used a the default z-index.\n   * @param {Array<import(\"./Layer.js\").State>} [dest] Optional list\n   * of layer states (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").State>} List of layer states.\n   * @override\n   */\n  getLayerStatesArray(dest) {\n    const states = dest !== undefined ? dest : [];\n    const pos = states.length;\n\n    this.getLayers().forEach(function (layer) {\n      layer.getLayerStatesArray(states);\n    });\n\n    const ownLayerState = this.getLayerState();\n    let defaultZIndex = ownLayerState.zIndex;\n    if (!dest && ownLayerState.zIndex === undefined) {\n      defaultZIndex = 0;\n    }\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,\n        ownLayerState.maxResolution,\n      );\n      layerState.minResolution = Math.max(\n        layerState.minResolution,\n        ownLayerState.minResolution,\n      );\n      layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n      layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n      if (ownLayerState.extent !== undefined) {\n        if (layerState.extent !== undefined) {\n          layerState.extent = getIntersection(\n            layerState.extent,\n            ownLayerState.extent,\n          );\n        } else {\n          layerState.extent = ownLayerState.extent;\n        }\n      }\n      if (layerState.zIndex === undefined) {\n        layerState.zIndex = defaultZIndex;\n      }\n    }\n\n    return states;\n  }\n\n  /**\n   * @return {import(\"../source/Source.js\").State} Source state.\n   * @override\n   */\n  getSourceState() {\n    return 'ready';\n  }\n}\n\nexport default LayerGroup;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {wrapX} from '../coordinate.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 {abstract} from '../util.js';\n\n/**\n * @template T\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback<T>} callback Callback.\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n  /**\n   * @param {import(\"../Map.js\").default} map Map.\n   */\n  constructor(map) {\n    super();\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default}\n     */\n    this.map_ = map;\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../render/EventType.js\").default} type Event type.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  dispatchRenderEvent(type, frameState) {\n    abstract();\n  }\n\n  /**\n   * @param {import(\"../Map.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(\n      coordinateToPixelTransform,\n      frameState.size[0] / 2,\n      frameState.size[1] / 2,\n      1 / viewState.resolution,\n      -1 / viewState.resolution,\n      -viewState.rotation,\n      -viewState.center[0],\n      -viewState.center[1],\n    );\n\n    makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n  }\n\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {boolean} checkWrapped Check for wrapped geometries.\n   * @param {import(\"./vector.js\").FeatureCallback<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     * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n     * @return {T|undefined} Callback result.\n     */\n    function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n      return callback.call(thisArg, feature, managed ? layer : null, geometry);\n    }\n\n    const projection = viewState.projection;\n\n    const translatedCoordinate = wrapX(coordinate.slice(), projection);\n    const offsets = [[0, 0]];\n    if (projection.canWrapX() && checkWrapped) {\n      const projectionExtent = projection.getExtent();\n      const worldWidth = getWidth(projectionExtent);\n      offsets.push([-worldWidth, 0], [worldWidth, 0]);\n    }\n\n    const layerStates = frameState.layerStatesArray;\n    const numLayers = layerStates.length;\n\n    const matches = /** @type {Array<HitMatch<T>>} */ ([]);\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 = layerState.layer;\n        if (\n          layer.hasRenderer() &&\n          inView(layerState, viewState) &&\n          layerFilter.call(thisArg2, layer)\n        ) {\n          const layerRenderer = layer.getRenderer();\n          const source = layer.getSource();\n          if (layerRenderer && source) {\n            const coordinates = source.getWrapX()\n              ? translatedCoordinate\n              : coordinate;\n            const callback = forEachFeatureAtCoordinate.bind(\n              null,\n              layerState.managed,\n            );\n            tmpCoord[0] = coordinates[0] + offsets[i][0];\n            tmpCoord[1] = coordinates[1] + offsets[i][1];\n            result = layerRenderer.forEachFeatureAtCoordinate(\n              tmpCoord,\n              frameState,\n              hitTolerance,\n              callback,\n              matches,\n            );\n          }\n          if (result) {\n            return result;\n          }\n        }\n      }\n    }\n    if (matches.length === 0) {\n      return undefined;\n    }\n    const order = 1 / matches.length;\n    matches.forEach((m, i) => (m.distanceSq += i * order));\n    matches.sort((a, b) => a.distanceSq - b.distanceSq);\n    matches.some((m) => {\n      return (result = m.callback(m.feature, m.layer, m.geometry));\n    });\n    return result;\n  }\n\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../Map.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(\n    coordinate,\n    frameState,\n    hitTolerance,\n    checkWrapped,\n    layerFilter,\n    thisArg,\n  ) {\n    const hasFeature = this.forEachFeatureAtCoordinate(\n      coordinate,\n      frameState,\n      hitTolerance,\n      checkWrapped,\n      TRUE,\n      this,\n      layerFilter,\n      thisArg,\n    );\n\n    return hasFeature !== undefined;\n  }\n\n  /**\n   * @return {import(\"../Map.js\").default} Map.\n   */\n  getMap() {\n    return this.map_;\n  }\n\n  /**\n   * Render.\n   * @abstract\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  renderFrame(frameState) {\n    abstract();\n  }\n\n  /**\n   * @param {import(\"../Map.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 * @param {import(\"../Map.js\").default} map Map.\n * @param {import(\"../Map.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 ObjectEventType from '../ObjectEventType.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {replaceChildren} from '../dom.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport BaseVectorLayer from '../layer/BaseVector.js';\nimport {inView} from '../layer/Layer.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport MapRenderer from './Map.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n  /**\n   * @param {import(\"../Map.js\").default} map Map.\n   */\n  constructor(map) {\n    super(map);\n\n    /**\n     * @private\n     * @type {import(\"../events.js\").EventsKey}\n     */\n    this.fontChangeListenerKey_ = listen(\n      checkedFonts,\n      ObjectEventType.PROPERTYCHANGE,\n      map.redrawText,\n      map,\n    );\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<HTMLElement>}\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(\"../Map.js\").FrameState} frameState Frame state.\n   * @override\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  /**\n   * @override\n   */\n  disposeInternal() {\n    unlistenByKey(this.fontChangeListenerKey_);\n    this.element_.remove();\n    super.disposeInternal();\n  }\n\n  /**\n   * Render.\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   * @override\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(\n      (a, b) => a.zIndex - b.zIndex,\n    );\n    const declutter = layerStatesArray.some(\n      (layerState) =>\n        layerState.layer instanceof BaseVectorLayer &&\n        layerState.layer.getDeclutter(),\n    );\n    if (declutter) {\n      // Some layers need decluttering, turn on deferred rendering hint\n      frameState.declutter = {};\n    }\n    const viewState = frameState.viewState;\n\n    this.children_.length = 0;\n\n    const renderedLayerStates = [];\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\n      const layer = layerState.layer;\n      const sourceState = layer.getSourceState();\n      if (\n        !inView(layerState, viewState) ||\n        (sourceState != 'ready' && sourceState != 'undefined')\n      ) {\n        layer.unrender();\n        continue;\n      }\n\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      renderedLayerStates.push(layerState);\n    }\n\n    this.declutter(frameState, renderedLayerStates);\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   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {Array<import('../layer/Layer.js').State>} layerStates Layers.\n   */\n  declutter(frameState, layerStates) {\n    if (!frameState.declutter) {\n      return;\n    }\n    for (let i = layerStates.length - 1; i >= 0; --i) {\n      const layerState = layerStates[i];\n      const layer = layerState.layer;\n      if (layer.getDeclutter()) {\n        layer.renderDeclutter(frameState, layerState);\n      }\n    }\n    layerStates.forEach((layerState) =>\n      layerState.layer.renderDeferred(frameState),\n    );\n  }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/Map\n */\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 BaseObject from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {equals} from './array.js';\nimport {assert} from './asserts.js';\nimport {warn} from './console.js';\nimport {defaults as defaultControls} from './control/defaults.js';\nimport EventType from './events/EventType.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {\n  clone,\n  createOrUpdateEmpty,\n  equals as equalsExtent,\n  getForViewAndSize,\n  isEmpty,\n} from './extent.js';\nimport {TRUE} from './functions.js';\nimport {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {defaults as defaultInteractions} from './interaction/defaults.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.js';\nimport Layer from './layer/Layer.js';\nimport PointerEventType from './pointer/EventType.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport RenderEventType from './render/EventType.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport {hasArea} from './size.js';\nimport {\n  apply as applyTransform,\n  create as createTransform,\n} from './transform.js';\nimport {getUid} from './util.js';\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 Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {Object<string, import(\"rbush\").default<import('./render/canvas/Executor.js').DeclutterEntry>>|null} declutter\n * Declutter trees by declutter group.\n * When null, no decluttering is needed because no layers have decluttering enabled.\n * @property {null|import(\"./extent.js\").Extent} extent Extent (in view projection coordinates).\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array<import(\"./layer/Layer.js\").State>} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array<PostRenderFunction>} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object<string, Object<string, boolean>>} usedTiles UsedTiles.\n * @property {Array<number>} viewHints ViewHints.\n * @property {!Object<string, Object<string, boolean>>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object<string, boolean>} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(Map, FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default<import(\"./source/Source\").default>): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/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 css 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 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 * @typedef {Object} MapOptionsInternal\n * @property {Collection<import(\"./control/Control.js\").default>} [controls] Controls.\n * @property {Collection<import(\"./interaction/Interaction.js\").default>} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection<import(\"./Overlay.js\").default>} overlays Overlays.\n * @property {Object<string, *>} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *    import(\"./Observable\").OnSignature<MapObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./MapBrowserEventType\").Types, import(\"./MapBrowserEvent\").default, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./MapEventType\").Types, import(\"./MapEvent\").default, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./render/EventType\").MapRenderEventTypes, import(\"./render/Event\").default, Return> &\n *    import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|MapObjectEventTypes|\n *      import(\"./MapBrowserEventType\").Types|import(\"./MapEventType\").Types|\n *      import(\"./render/EventType\").MapRenderEventTypes, Return>} MapEventHandler\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection<import(\"./control/Control.js\").default>|Array<import(\"./control/Control.js\").default>} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control/defaults.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<import(\"./interaction/Interaction.js\").default>|Array<import(\"./interaction/Interaction.js\").default>} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction/defaults.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<import(\"./layer/Base.js\").default>|Collection<import(\"./layer/Base.js\").default>|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<import(\"./Overlay.js\").default>|Array<import(\"./Overlay.js\").default>} [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. If passed by element, the container can be in a secondary document.\n * For accessibility (focus and keyboard events for map navigation), the `target` element must have a\n *  properly configured `tabindex` attribute. If the `target` element is inside a Shadow DOM, the\n *  `tabindex` atribute must be set on the custom element's host element.\n * **Note:** CSS `transform` support for the target element is limited to `scale`.\n * @property {View|Promise<import(\"./View.js\").ViewOptions>} [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 * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n  if (layer instanceof Layer) {\n    layer.setMapInternal(null);\n    return;\n  }\n  if (layer instanceof LayerGroup) {\n    layer.getLayers().forEach(removeLayerMapProperty);\n  }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {Map} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n  if (layer instanceof Layer) {\n    layer.setMapInternal(map);\n    return;\n  }\n  if (layer instanceof LayerGroup) {\n    const layers = layer.getLayers().getArray();\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n      setLayerMapProperty(layers[i], map);\n    }\n  }\n}\n\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n *     import Map from 'ol/Map.js';\n *     import View from 'ol/View.js';\n *     import TileLayer from 'ol/layer/Tile.js';\n *     import OSM from 'ol/source/OSM.js';\n *\n *     const map = new Map({\n *       view: new View({\n *         center: [0, 0],\n *         zoom: 1,\n *       }),\n *       layers: [\n *         new TileLayer({\n *           source: new OSM(),\n *         }),\n *       ],\n *       target: 'map',\n *     });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile~TileLayer} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\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 Map extends BaseObject {\n  /**\n   * @param {MapOptions} [options] Map options.\n   */\n  constructor(options) {\n    super();\n\n    options = options || {};\n\n    /***\n     * @type {MapEventHandler<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {MapEventHandler<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {MapEventHandler<void>}\n     */\n    this.un;\n\n    const optionsInternal = createOptionsInternal(options);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderComplete_ = false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.loaded_ = true;\n\n    /** @private */\n    this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.maxTilesLoading_ =\n      options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ =\n      options.pixelRatio !== undefined\n        ? options.pixelRatio\n        : DEVICE_PIXEL_RATIO;\n\n    /**\n     * @private\n     * @type {ReturnType<typeof setTimeout>}\n     */\n    this.postRenderTimeoutHandle_;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.animationDelayKey_;\n\n    /**\n     * @private\n     */\n    this.animationDelay_ = this.animationDelay_.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<import(\"./events.js\").EventsKey>}\n     */\n    this.layerGroupPropertyListenerKeys_ = null;\n\n    /**\n     * @private\n     * @type {!HTMLElement}\n     */\n    this.viewport_ = document.createElement('div');\n    this.viewport_.className =\n      '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     * @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_.style.pointerEvents = 'none';\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_.style.pointerEvents = 'none';\n    this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n    this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n    /**\n     * @private\n     * @type {MapBrowserEventHandler}\n     */\n    this.mapBrowserEventHandler_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.moveTolerance_ = options.moveTolerance;\n\n    /**\n     * @private\n     * @type {HTMLElement|Document}\n     */\n    this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n    /**\n     * @private\n     * @type {?Array<import(\"./events.js\").EventsKey>}\n     */\n    this.targetChangeHandlerKeys_ = null;\n\n    /**\n     * @private\n     * @type {HTMLElement|null}\n     */\n    this.targetElement_ = null;\n\n    /**\n     * @private\n     * @type {ResizeObserver}\n     */\n    this.resizeObserver_ = new ResizeObserver(() => this.updateSize());\n\n    /**\n     * @type {Collection<import(\"./control/Control.js\").default>}\n     * @protected\n     */\n    this.controls = optionsInternal.controls || defaultControls();\n\n    /**\n     * @type {Collection<import(\"./interaction/Interaction.js\").default>}\n     * @protected\n     */\n    this.interactions =\n      optionsInternal.interactions ||\n      defaultInteractions({\n        onFocusOnly: true,\n      });\n\n    /**\n     * @type {Collection<import(\"./Overlay.js\").default>}\n     * @private\n     */\n    this.overlays_ = optionsInternal.overlays;\n\n    /**\n     * A lookup of overlays by id.\n     * @private\n     * @type {Object<string, import(\"./Overlay.js\").default>}\n     */\n    this.overlayIdIndex_ = {};\n\n    /**\n     * @type {import(\"./renderer/Map.js\").default|null}\n     * @private\n     */\n    this.renderer_ = null;\n\n    /**\n     * @private\n     * @type {!Array<PostRenderFunction>}\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\n    this.addChangeListener(\n      MapProperty.LAYERGROUP,\n      this.handleLayerGroupChanged_,\n    );\n    this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n    this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n    this.addChangeListener(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    const map = this;\n    if (options.view && !(options.view instanceof View)) {\n      options.view.then(function (viewOptions) {\n        map.setView(new View(viewOptions));\n      });\n    }\n\n    this.controls.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./control/Control.js\").default>} event CollectionEvent\n       */\n      (event) => {\n        event.element.setMap(this);\n      },\n    );\n\n    this.controls.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./control/Control.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        event.element.setMap(null);\n      },\n    );\n\n    this.interactions.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./interaction/Interaction.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        event.element.setMap(this);\n      },\n    );\n\n    this.interactions.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./interaction/Interaction.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        event.element.setMap(null);\n      },\n    );\n\n    this.overlays_.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./Overlay.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        this.addOverlayInternal_(event.element);\n      },\n    );\n\n    this.overlays_.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./Overlay.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        const id = event.element.getId();\n        if (id !== undefined) {\n          delete this.overlayIdIndex_[id.toString()];\n        }\n        event.element.setMap(null);\n      },\n    );\n\n    this.controls.forEach(\n      /**\n       * @param {import(\"./control/Control.js\").default} control Control.\n       */\n      (control) => {\n        control.setMap(this);\n      },\n    );\n\n    this.interactions.forEach(\n      /**\n       * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n       */\n      (interaction) => {\n        interaction.setMap(this);\n      },\n    );\n\n    this.overlays_.forEach(this.addOverlayInternal_.bind(this));\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 `getInteractions()` 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   * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n   * @private\n   */\n  handleLayerAdd_(event) {\n    setLayerMapProperty(event.layer, this);\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   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.controls.clear();\n    this.interactions.clear();\n    this.overlays_.clear();\n    this.resizeObserver_.disconnect();\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 `options`.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n   * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default<import(\"./source/Source\").default>, import(\"./geom/SimpleGeometry.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 feature} or\n   *     {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n   *     the {@link module:ol/layer/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} [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 T\n   * @api\n   */\n  forEachFeatureAtPixel(pixel, callback, options) {\n    if (!this.frameState_ || !this.renderer_) {\n      return;\n    }\n    const coordinate = this.getCoordinateFromPixelInternal(pixel);\n    options = options !== undefined ? options : {};\n    const hitTolerance =\n      options.hitTolerance !== undefined ? options.hitTolerance : 0;\n    const layerFilter =\n      options.layerFilter !== undefined ? options.layerFilter : TRUE;\n    const checkWrapped = options.checkWrapped !== false;\n    return this.renderer_.forEachFeatureAtCoordinate(\n      coordinate,\n      this.frameState_,\n      hitTolerance,\n      checkWrapped,\n      callback,\n      null,\n      layerFilter,\n      null,\n    );\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} [options] Optional options.\n   * @return {Array<import(\"./Feature.js\").FeatureLike>} The detected features or\n   * an empty array if none were found.\n   * @api\n   */\n  getFeaturesAtPixel(pixel, options) {\n    const features = [];\n    this.forEachFeatureAtPixel(\n      pixel,\n      function (feature) {\n        features.push(feature);\n      },\n      options,\n    );\n    return features;\n  }\n\n  /**\n   * Get all layers from all layer groups.\n   * @return {Array<import(\"./layer/Layer.js\").default>} Layers.\n   * @api\n   */\n  getAllLayers() {\n    const layers = [];\n    function addLayersFrom(layerGroup) {\n      layerGroup.forEach(function (layer) {\n        if (layer instanceof LayerGroup) {\n          addLayersFrom(layer.getLayers());\n        } else {\n          layers.push(layer);\n        }\n      });\n    }\n    addLayersFrom(this.getLayers());\n    return layers;\n  }\n\n  /**\n   * Detect if features intersect a pixel on the viewport. Layers included in the\n   * detection can be configured through the `layerFilter` option.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n   * @param {AtPixelOptions} [options] Optional options.\n   * @return {boolean} Is there a feature at the given pixel?\n   * @api\n   */\n  hasFeatureAtPixel(pixel, options) {\n    if (!this.frameState_ || !this.renderer_) {\n      return false;\n    }\n    const coordinate = this.getCoordinateFromPixelInternal(pixel);\n    options = options !== undefined ? options : {};\n    const layerFilter =\n      options.layerFilter !== undefined ? options.layerFilter : TRUE;\n    const hitTolerance =\n      options.hitTolerance !== undefined ? options.hitTolerance : 0;\n    const checkWrapped = options.checkWrapped !== false;\n    return this.renderer_.hasFeatureAtCoordinate(\n      coordinate,\n      this.frameState_,\n      hitTolerance,\n      checkWrapped,\n      layerFilter,\n      null,\n    );\n  }\n\n  /**\n   * Returns the coordinate in user projection for a browser event.\n   * @param {MouseEvent} 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 {MouseEvent} 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 {UIEvent|{clientX: number, clientY: number}} event Event.\n   * @return {import(\"./pixel.js\").Pixel} Pixel.\n   * @api\n   */\n  getEventPixel(event) {\n    const viewport = this.viewport_;\n    const viewportPosition = viewport.getBoundingClientRect();\n    const viewportSize = this.getSize();\n    const scaleX = viewportPosition.width / viewportSize[0];\n    const scaleY = viewportPosition.height / viewportSize[1];\n    const eventPosition =\n      //FIXME Are we really calling this with a TouchEvent anywhere?\n      'changedTouches' in event\n        ? /** @type {TouchEvent} */ (event).changedTouches[0]\n        : /** @type {MouseEvent} */ (event);\n\n    return [\n      (eventPosition.clientX - viewportPosition.left) / scaleX,\n      (eventPosition.clientY - viewportPosition.top) / scaleY,\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} */ (\n      this.get(MapProperty.TARGET)\n    );\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    return this.targetElement_;\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(\n      this.getCoordinateFromPixelInternal(pixel),\n      this.getView().getProjection(),\n    );\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    }\n    return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n  }\n\n  /**\n   * Get the map controls. Modifying this collection changes the controls\n   * associated with the map.\n   * @return {Collection<import(\"./control/Control.js\").default>} 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<import(\"./Overlay.js\").default>} 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|null} 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<import(\"./interaction/Interaction.js\").default>} 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 /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n  }\n\n  /**\n   * Clear any existing layers and add layers to the map.\n   * @param {Array<import(\"./layer/Base.js\").default>|Collection<import(\"./layer/Base.js\").default>} layers The layers to be added to the map.\n   * @api\n   */\n  setLayers(layers) {\n    const group = this.getLayerGroup();\n    if (layers instanceof Collection) {\n      group.setLayers(layers);\n      return;\n    }\n\n    const collection = group.getLayers();\n    collection.clear();\n    collection.extend(layers);\n  }\n\n  /**\n   * Get the collection of layers associated with this map.\n   * @return {!Collection<import(\"./layer/Base.js\").default>} 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  getLoadingOrNotReady() {\n    const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n    for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n      const state = layerStatesArray[i];\n      if (!state.visible) {\n        continue;\n      }\n      const renderer = state.layer.getRenderer();\n      if (renderer && !renderer.ready) {\n        return true;\n      }\n      const source = state.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(\n      coordinate,\n      this.getView().getProjection(),\n    );\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    }\n    return applyTransform(\n      frameState.coordinateToPixelTransform,\n      coordinate.slice(0, 2),\n    );\n  }\n\n  /**\n   * Get the map renderer.\n   * @return {import(\"./renderer/Map.js\").default|null} 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 /** @type {import(\"./size.js\").Size|undefined} */ (\n      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 /** @type {View} */ (this.get(MapProperty.VIEW));\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   * @return {!Document} The document where the map is displayed.\n   */\n  getOwnerDocument() {\n    const targetElement = this.getTargetElement();\n    return targetElement ? targetElement.ownerDocument : document;\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    return getTilePriority(\n      this.frameState_,\n      tile,\n      tileSourceKey,\n      tileCenter,\n      tileResolution,\n    );\n  }\n\n  /**\n   * @param {UIEvent} browserEvent Browser event.\n   * @param {string} [type] Type.\n   */\n  handleBrowserEvent(browserEvent, type) {\n    type = 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    const originalEvent = /** @type {PointerEvent} */ (\n      mapBrowserEvent.originalEvent\n    );\n    const eventType = originalEvent.type;\n    if (\n      eventType === PointerEventType.POINTERDOWN ||\n      eventType === EventType.WHEEL ||\n      eventType === EventType.KEYDOWN\n    ) {\n      const doc = this.getOwnerDocument();\n      const rootNode = this.viewport_.getRootNode\n        ? this.viewport_.getRootNode()\n        : doc;\n      const target = /** @type {Node} */ (originalEvent.target);\n\n      const currentDoc =\n        rootNode instanceof ShadowRoot\n          ? rootNode.host === target\n            ? rootNode.host.ownerDocument\n            : rootNode\n          : rootNode === doc\n            ? doc.documentElement\n            : rootNode;\n      if (\n        // Abort if the target is a child of the container for elements whose events are not meant\n        // to be handled by map interactions.\n        this.overlayContainerStopEvent_.contains(target) ||\n        // Abort if the event target is a child of the container that is no longer in the page.\n        // It's possible for the target to no longer be in the page if it has been removed in an\n        // event listener, this might happen in a Control that recreates it's content based on\n        // user interaction either manually or via a render in something like https://reactjs.org/\n        !currentDoc.contains(target)\n      ) {\n        return;\n      }\n    }\n    mapBrowserEvent.frameState = this.frameState_;\n    if (this.dispatchEvent(mapBrowserEvent) !== false) {\n      const interactionsArray = this.getInteractions().getArray().slice();\n      for (let i = interactionsArray.length - 1; i >= 0; i--) {\n        const interaction = interactionsArray[i];\n        if (\n          interaction.getMap() !== this ||\n          !interaction.getActive() ||\n          !this.getTargetElement()\n        ) {\n          continue;\n        }\n        const cont = interaction.handleEvent(mapBrowserEvent);\n        if (!cont || mapBrowserEvent.propagationStopped) {\n          break;\n        }\n      }\n    }\n  }\n\n  /**\n   * @protected\n   */\n  handlePostRender() {\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 = 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.renderer_ && !frameState.animate) {\n      if (this.renderComplete_) {\n        if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n          this.renderer_.dispatchRenderEvent(\n            RenderEventType.RENDERCOMPLETE,\n            frameState,\n          );\n        }\n        if (this.loaded_ === false) {\n          this.loaded_ = true;\n          this.dispatchEvent(\n            new MapEvent(MapEventType.LOADEND, this, frameState),\n          );\n        }\n      } else if (this.loaded_ === true) {\n        this.loaded_ = false;\n        this.dispatchEvent(\n          new MapEvent(MapEventType.LOADSTART, this, frameState),\n        );\n      }\n    }\n\n    const postRenderFunctions = this.postRenderFunctions_;\n    if (frameState) {\n      for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n        postRenderFunctions[i](this, frameState);\n      }\n    }\n    postRenderFunctions.length = 0;\n  }\n\n  /**\n   * @private\n   */\n  handleSizeChanged_() {\n    if (this.getView() && !this.getView().getAnimating()) {\n      this.getView().resolveConstraints(0);\n    }\n\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  handleTargetChanged_() {\n    if (this.mapBrowserEventHandler_) {\n      for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n        unlistenByKey(this.targetChangeHandlerKeys_[i]);\n      }\n      this.targetChangeHandlerKeys_ = null;\n      this.viewport_.removeEventListener(\n        EventType.CONTEXTMENU,\n        this.boundHandleBrowserEvent_,\n      );\n      this.viewport_.removeEventListener(\n        EventType.WHEEL,\n        this.boundHandleBrowserEvent_,\n      );\n      this.mapBrowserEventHandler_.dispose();\n      this.mapBrowserEventHandler_ = null;\n      this.viewport_.remove();\n    }\n\n    if (this.targetElement_) {\n      this.resizeObserver_.unobserve(this.targetElement_);\n      const rootNode = this.targetElement_.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        this.resizeObserver_.unobserve(rootNode.host);\n      }\n      this.setSize(undefined);\n    }\n\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    const target = this.getTarget();\n    const targetElement =\n      typeof target === 'string' ? document.getElementById(target) : target;\n    this.targetElement_ = targetElement;\n    if (!targetElement) {\n      if (this.renderer_) {\n        clearTimeout(this.postRenderTimeoutHandle_);\n        this.postRenderTimeoutHandle_ = undefined;\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    } else {\n      targetElement.appendChild(this.viewport_);\n      if (!this.renderer_) {\n        this.renderer_ = new CompositeMapRenderer(this);\n      }\n\n      this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n        this,\n        this.moveTolerance_,\n      );\n      for (const key in MapBrowserEventType) {\n        this.mapBrowserEventHandler_.addEventListener(\n          MapBrowserEventType[key],\n          this.handleMapBrowserEvent.bind(this),\n        );\n      }\n      this.viewport_.addEventListener(\n        EventType.CONTEXTMENU,\n        this.boundHandleBrowserEvent_,\n        false,\n      );\n      this.viewport_.addEventListener(\n        EventType.WHEEL,\n        this.boundHandleBrowserEvent_,\n        PASSIVE_EVENT_LISTENERS ? {passive: false} : false,\n      );\n\n      let keyboardEventTarget;\n      if (!this.keyboardEventTarget_) {\n        // check if map target is in shadowDOM, if yes use host element as target\n        const targetRoot = targetElement.getRootNode();\n        const targetCandidate =\n          targetRoot instanceof ShadowRoot ? targetRoot.host : targetElement;\n        keyboardEventTarget = targetCandidate;\n      } else {\n        keyboardEventTarget = this.keyboardEventTarget_;\n      }\n\n      this.targetChangeHandlerKeys_ = [\n        listen(\n          keyboardEventTarget,\n          EventType.KEYDOWN,\n          this.handleBrowserEvent,\n          this,\n        ),\n        listen(\n          keyboardEventTarget,\n          EventType.KEYPRESS,\n          this.handleBrowserEvent,\n          this,\n        ),\n      ];\n      const rootNode = targetElement.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        this.resizeObserver_.observe(rootNode.host);\n      }\n      this.resizeObserver_.observe(targetElement);\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.updateViewportSize_(this.getSize());\n\n      this.viewPropertyListenerKey_ = listen(\n        view,\n        ObjectEventType.PROPERTYCHANGE,\n        this.handleViewPropertyChanged_,\n        this,\n      );\n      this.viewChangeListenerKey_ = listen(\n        view,\n        EventType.CHANGE,\n        this.handleViewPropertyChanged_,\n        this,\n      );\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.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n      this.layerGroupPropertyListenerKeys_ = [\n        listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n        listen(layerGroup, EventType.CHANGE, this.render, this),\n        listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n        listen(layerGroup, 'removelayer', this.handleLayerRemove_, 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   * @private\n   */\n  animationDelay_() {\n    this.animationDelayKey_ = undefined;\n    this.renderFrame_(Date.now());\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   * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n   * @private\n   */\n  handleLayerRemove_(event) {\n    removeLayerMapProperty(event.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(\n        this.frameState_ ? this.frameState_.viewHints : undefined,\n      );\n      const viewState = view.getState();\n      frameState = {\n        animate: false,\n        coordinateToPixelTransform: this.coordinateToPixelTransform_,\n        declutter: null,\n        extent: getForViewAndSize(\n          viewState.center,\n          viewState.resolution,\n          viewState.rotation,\n          size,\n        ),\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        mapId: getUid(this),\n        renderTargets: {},\n      };\n      if (viewState.nextCenter && viewState.nextResolution) {\n        const rotation = isNaN(viewState.nextRotation)\n          ? viewState.rotation\n          : viewState.nextRotation;\n\n        frameState.nextExtent = getForViewAndSize(\n          viewState.nextCenter,\n          viewState.nextResolution,\n          rotation,\n          size,\n        );\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(\n        this.postRenderFunctions_,\n        frameState.postRenderFunctions,\n      );\n\n      if (previousFrameState) {\n        const moveStart =\n          !this.previousExtent_ ||\n          (!isEmpty(this.previousExtent_) &&\n            !equalsExtent(frameState.extent, this.previousExtent_));\n        if (moveStart) {\n          this.dispatchEvent(\n            new MapEvent(MapEventType.MOVESTART, this, previousFrameState),\n          );\n          this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n        }\n      }\n\n      const idle =\n        this.previousExtent_ &&\n        !frameState.viewHints[ViewHint.ANIMATING] &&\n        !frameState.viewHints[ViewHint.INTERACTING] &&\n        !equalsExtent(frameState.extent, this.previousExtent_);\n\n      if (idle) {\n        this.dispatchEvent(\n          new MapEvent(MapEventType.MOVEEND, this, frameState),\n        );\n        clone(frameState.extent, this.previousExtent_);\n      }\n    }\n\n    this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n    this.renderComplete_ =\n      (this.hasListener(MapEventType.LOADSTART) ||\n        this.hasListener(MapEventType.LOADEND) ||\n        this.hasListener(RenderEventType.RENDERCOMPLETE)) &&\n      !this.tileQueue_.getTilesLoading() &&\n      !this.tileQueue_.getCount() &&\n      !this.getLoadingOrNotReady();\n\n    if (!this.postRenderTimeoutHandle_) {\n      this.postRenderTimeoutHandle_ = setTimeout(() => {\n        this.postRenderTimeoutHandle_ = undefined;\n        this.handlePostRender();\n      }, 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    const oldLayerGroup = this.getLayerGroup();\n    if (oldLayerGroup) {\n      this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n    }\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   * For accessibility (focus and keyboard events for map navigation), the `target` element must have a\n   *  properly configured `tabindex` attribute. If the `target` element is inside a Shadow DOM, the\n   *  `tabindex` atribute must be set on the custom element's host element.\n   * @param {HTMLElement|string} [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|Promise<import(\"./View.js\").ViewOptions>} view The view that controls this map.\n   * It is also possible to pass a promise that resolves to options for constructing a view.  This\n   * alternative allows view properties to be resolved by sources or other components that load\n   * view-related metadata.\n   * @observable\n   * @api\n   */\n  setView(view) {\n    if (!view || view instanceof View) {\n      this.set(MapProperty.VIEW, view);\n      return;\n    }\n    this.set(MapProperty.VIEW, new View());\n\n    const map = this;\n    view.then(function (viewOptions) {\n      map.setView(new View(viewOptions));\n    });\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    let size = undefined;\n    if (targetElement) {\n      const computedStyle = getComputedStyle(targetElement);\n      const width =\n        targetElement.offsetWidth -\n        parseFloat(computedStyle['borderLeftWidth']) -\n        parseFloat(computedStyle['paddingLeft']) -\n        parseFloat(computedStyle['paddingRight']) -\n        parseFloat(computedStyle['borderRightWidth']);\n      const height =\n        targetElement.offsetHeight -\n        parseFloat(computedStyle['borderTopWidth']) -\n        parseFloat(computedStyle['paddingTop']) -\n        parseFloat(computedStyle['paddingBottom']) -\n        parseFloat(computedStyle['borderBottomWidth']);\n      if (!isNaN(width) && !isNaN(height)) {\n        size = [Math.max(0, width), Math.max(0, height)];\n        if (\n          !hasArea(size) &&\n          !!(\n            targetElement.offsetWidth ||\n            targetElement.offsetHeight ||\n            targetElement.getClientRects().length\n          )\n        ) {\n          warn(\n            \"No map visible because the map container's width or height are 0.\",\n          );\n        }\n      }\n    }\n\n    const oldSize = this.getSize();\n    if (size && (!oldSize || !equals(size, oldSize))) {\n      this.setSize(size);\n      this.updateViewportSize_(size);\n    }\n  }\n\n  /**\n   * Recomputes the viewport size and save it on the view object (if any)\n   * @param {import(\"./size.js\").Size|undefined} size The size.\n   * @private\n   */\n  updateViewportSize_(size) {\n    const view = this.getView();\n    if (view) {\n      view.setViewportSize(size);\n    }\n  }\n}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n  /**\n   * @type {HTMLElement|Document}\n   */\n  let keyboardEventTarget = null;\n  if (options.keyboardEventTarget !== undefined) {\n    keyboardEventTarget =\n      typeof options.keyboardEventTarget === 'string'\n        ? document.getElementById(options.keyboardEventTarget)\n        : options.keyboardEventTarget;\n  }\n\n  /**\n   * @type {Object<string, *>}\n   */\n  const values = {};\n\n  const layerGroup =\n    options.layers &&\n    typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n      ? /** @type {LayerGroup} */ (options.layers)\n      : new LayerGroup({\n          layers:\n            /** @type {Collection<import(\"./layer/Base.js\").default>|Array<import(\"./layer/Base.js\").default>} */ (\n              options.layers\n            ),\n        });\n  values[MapProperty.LAYERGROUP] = layerGroup;\n\n  values[MapProperty.TARGET] = options.target;\n\n  values[MapProperty.VIEW] =\n    options.view instanceof View ? options.view : new View();\n\n  /** @type {Collection<import(\"./control/Control.js\").default>} */\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(\n        typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n        'Expected `controls` to be an array or an `ol/Collection.js`',\n      );\n      controls = options.controls;\n    }\n  }\n\n  /** @type {Collection<import(\"./interaction/Interaction\").default>} */\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(\n        typeof (/** @type {?} */ (options.interactions).getArray) ===\n          'function',\n        'Expected `interactions` to be an array or an `ol/Collection.js`',\n      );\n      interactions = options.interactions;\n    }\n  }\n\n  /** @type {Collection<import(\"./Overlay.js\").default>} */\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(\n        typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n        'Expected `overlays` to be an array or an `ol/Collection.js`',\n      );\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}\nexport default Map;\n","/**\n * @module ol/Overlay\n */\nimport MapEventType from './MapEventType.js';\nimport BaseObject from './Object.js';\nimport {CLASS_SELECTABLE} from './css.js';\nimport {outerHeight, outerWidth, removeChildren} from './dom.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {containsExtent} from './extent.js';\n\n/**\n * @typedef {'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-center' | 'center-right' | 'top-left' | 'top-center' | 'top-right'} Positioning\n * The overlay position: `'bottom-left'`, `'bottom-center'`,  `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, or `'top-right'`.\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<number>} [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 {Positioning} [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 {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\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 * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\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 * @typedef {import(\"./ObjectEventType\").Types|'change:element'|'change:map'|'change:offset'|'change:position'|\n *   'change:positioning'} OverlayObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<OverlayObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|OverlayObjectEventTypes, Return>} OverlayOnSignature\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.js';\n *\n *     // ...\n *     const 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   * @param {Options} options Overlay options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {OverlayOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {OverlayOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {OverlayOnSignature<void>}\n     */\n    this.un;\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 =\n      options.insertFirst !== undefined ? 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 =\n      options.className !== undefined\n        ? options.className\n        : 'ol-overlay-container ' + CLASS_SELECTABLE;\n    this.element.style.position = 'absolute';\n    this.element.style.pointerEvents = 'auto';\n\n    /**\n     * @protected\n     * @type {PanIntoViewOptions|undefined}\n     */\n    this.autoPan = options.autoPan === true ? {} : options.autoPan || undefined;\n\n    /**\n     * @protected\n     * @type {{transform_: string,\n     *         visible: boolean}}\n     */\n    this.rendered = {\n      transform_: '',\n      visible: true,\n    };\n\n    /**\n     * @protected\n     * @type {?import(\"./events.js\").EventsKey}\n     */\n    this.mapPostrenderListenerKey = null;\n\n    this.addChangeListener(Property.ELEMENT, this.handleElementChanged);\n    this.addChangeListener(Property.MAP, this.handleMapChanged);\n    this.addChangeListener(Property.OFFSET, this.handleOffsetChanged);\n    this.addChangeListener(Property.POSITION, this.handlePositionChanged);\n    this.addChangeListener(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 || 'top-left');\n\n    if (options.position !== undefined) {\n      this.setPosition(options.position);\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(\"./Map.js\").default|null} The map that the\n   * overlay is part of.\n   * @observable\n   * @api\n   */\n  getMap() {\n    return /** @type {import(\"./Map.js\").default|null} */ (\n      this.get(Property.MAP) || null\n    );\n  }\n\n  /**\n   * Get the offset of this overlay.\n   * @return {Array<number>} The offset.\n   * @observable\n   * @api\n   */\n  getOffset() {\n    return /** @type {Array<number>} */ (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 /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n      this.get(Property.POSITION)\n    );\n  }\n\n  /**\n   * Get the current positioning of this overlay.\n   * @return {Positioning} How the overlay is positioned\n   *     relative to its point on the map.\n   * @observable\n   * @api\n   */\n  getPositioning() {\n    return /** @type {Positioning} */ (this.get(Property.POSITIONING));\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      this.element?.remove();\n      unlistenByKey(this.mapPostrenderListenerKey);\n      this.mapPostrenderListenerKey = null;\n    }\n    const map = this.getMap();\n    if (map) {\n      this.mapPostrenderListenerKey = listen(\n        map,\n        MapEventType.POSTRENDER,\n        this.render,\n        this,\n      );\n      this.updatePixelPosition();\n      const container = this.stopEvent\n        ? map.getOverlayContainerStopEvent()\n        : map.getOverlayContainer();\n      if (this.insertFirst) {\n        container.insertBefore(this.element, container.childNodes[0] || null);\n      } else {\n        container.appendChild(this.element);\n      }\n      this.performAutoPan();\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    this.performAutoPan();\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(\"./Map.js\").default|null} map The map that the\n   * overlay is part of. Pass `null` to just remove the overlay from the current map.\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<number>} 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) using the configured autoPan parameters\n   * @protected\n   */\n  performAutoPan() {\n    if (this.autoPan) {\n      this.panIntoView(this.autoPan);\n    }\n  }\n\n  /**\n   * Pan the map so that the overlay is entirely visible in the current viewport\n   * (if necessary).\n   * @param {PanIntoViewOptions} [panIntoViewOptions] Options for the pan action\n   * @api\n   */\n  panIntoView(panIntoViewOptions) {\n    const map = this.getMap();\n\n    if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n      return;\n    }\n\n    const mapRect = this.getRect(map.getTargetElement(), map.getSize());\n    const element = this.getElement();\n    const overlayRect = this.getRect(element, [\n      outerWidth(element),\n      outerHeight(element),\n    ]);\n\n    panIntoViewOptions = panIntoViewOptions || {};\n\n    const myMargin =\n      panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\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 - myMargin;\n      } else if (offsetRight < 0) {\n        // move map to the right\n        delta[0] = Math.abs(offsetRight) + myMargin;\n      }\n      if (offsetTop < 0) {\n        // move map up\n        delta[1] = offsetTop - myMargin;\n      } else if (offsetBottom < 0) {\n        // move map down\n        delta[1] = Math.abs(offsetBottom) + myMargin;\n      }\n\n      if (delta[0] !== 0 || delta[1] !== 0) {\n        const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n          map.getView().getCenterInternal()\n        );\n        const centerPx = map.getPixelFromCoordinateInternal(center);\n        if (!centerPx) {\n          return;\n        }\n        const newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n\n        const panOptions = panIntoViewOptions.animation || {};\n        map.getView().animateInternal({\n          center: map.getCoordinateFromPixelInternal(newCenterPx),\n          duration: panOptions.duration,\n          easing: panOptions.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 [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n  }\n\n  /**\n   * Set the positioning for this overlay.\n   * @param {Positioning} 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    const x = Math.round(pixel[0] + offset[0]) + 'px';\n    const y = Math.round(pixel[1] + offset[1]) + 'px';\n    let posX = '0%';\n    let posY = '0%';\n    if (\n      positioning == 'bottom-right' ||\n      positioning == 'center-right' ||\n      positioning == 'top-right'\n    ) {\n      posX = '-100%';\n    } else if (\n      positioning == 'bottom-center' ||\n      positioning == 'center-center' ||\n      positioning == 'top-center'\n    ) {\n      posX = '-50%';\n    }\n    if (\n      positioning == 'bottom-left' ||\n      positioning == 'bottom-center' ||\n      positioning == 'bottom-right'\n    ) {\n      posY = '-100%';\n    } else if (\n      positioning == 'center-left' ||\n      positioning == 'center-center' ||\n      positioning == 'center-right'\n    ) {\n      posY = '-50%';\n    }\n    const transform = `translate(${posX}, ${posY}) translate(${x}, ${y})`;\n    if (this.rendered.transform_ != transform) {\n      this.rendered.transform_ = transform;\n      style.transform = transform;\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\nexport default Overlay;\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles.  A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n  /**\n   * @param {number} minX Minimum X.\n   * @param {number} maxX Maximum X.\n   * @param {number} minY Minimum Y.\n   * @param {number} maxY Maximum Y.\n   */\n  constructor(minX, maxX, minY, maxY) {\n    /**\n     * @type {number}\n     */\n    this.minX = minX;\n\n    /**\n     * @type {number}\n     */\n    this.maxX = maxX;\n\n    /**\n     * @type {number}\n     */\n    this.minY = minY;\n\n    /**\n     * @type {number}\n     */\n    this.maxY = maxY;\n  }\n\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @return {boolean} Contains tile coordinate.\n   */\n  contains(tileCoord) {\n    return this.containsXY(tileCoord[1], tileCoord[2]);\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   * @return {boolean} Contains.\n   */\n  containsTileRange(tileRange) {\n    return (\n      this.minX <= tileRange.minX &&\n      tileRange.maxX <= this.maxX &&\n      this.minY <= tileRange.minY &&\n      tileRange.maxY <= this.maxY\n    );\n  }\n\n  /**\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @return {boolean} Contains coordinate.\n   */\n  containsXY(x, y) {\n    return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   * @return {boolean} Equals.\n   */\n  equals(tileRange) {\n    return (\n      this.minX == tileRange.minX &&\n      this.minY == tileRange.minY &&\n      this.maxX == tileRange.maxX &&\n      this.maxY == tileRange.maxY\n    );\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   */\n  extend(tileRange) {\n    if (tileRange.minX < this.minX) {\n      this.minX = tileRange.minX;\n    }\n    if (tileRange.maxX > this.maxX) {\n      this.maxX = tileRange.maxX;\n    }\n    if (tileRange.minY < this.minY) {\n      this.minY = tileRange.minY;\n    }\n    if (tileRange.maxY > this.maxY) {\n      this.maxY = tileRange.maxY;\n    }\n  }\n\n  /**\n   * @return {number} Height.\n   */\n  getHeight() {\n    return this.maxY - this.minY + 1;\n  }\n\n  /**\n   * @return {import(\"./size.js\").Size} Size.\n   */\n  getSize() {\n    return [this.getWidth(), this.getHeight()];\n  }\n\n  /**\n   * @return {number} Width.\n   */\n  getWidth() {\n    return this.maxX - this.minX + 1;\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   * @return {boolean} Intersects.\n   */\n  intersects(tileRange) {\n    return (\n      this.minX <= tileRange.maxX &&\n      this.maxX >= tileRange.minX &&\n      this.minY <= tileRange.maxY &&\n      this.maxY >= tileRange.minY\n    );\n  }\n}\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange} [tileRange] TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n  if (tileRange !== undefined) {\n    tileRange.minX = minX;\n    tileRange.maxX = maxX;\n    tileRange.minY = minY;\n    tileRange.maxY = maxY;\n    return tileRange;\n  }\n  return new TileRange(minX, maxX, minY, maxY);\n}\n\nexport default TileRange;\n","/**\n * @module ol/VectorRenderTile\n */\nimport Tile from './Tile.js';\nimport {createCanvasContext2D, releaseCanvas} from './dom.js';\nimport {getUid} from './util.js';\n\n/**\n * @typedef {Object} ReplayState\n * @property {boolean} dirty Dirty.\n * @property {null|import(\"./render.js\").OrderFunction} renderedRenderOrder RenderedRenderOrder.\n * @property {number} renderedTileRevision RenderedTileRevision.\n * @property {number} renderedResolution RenderedResolution.\n * @property {number} renderedRevision RenderedRevision.\n * @property {number} renderedTileResolution RenderedTileResolution.\n * @property {number} renderedTileZ RenderedTileZ.\n */\n\n/**\n * @type {Array<HTMLCanvasElement>}\n */\nconst canvasPool = [];\n\nclass VectorRenderTile extends Tile {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {import(\"./tilecoord.js\").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.\n   * @param {function(VectorRenderTile):Array<import(\"./VectorTile\").default>} getSourceTiles Function.\n   * @param {function(VectorRenderTile):void} removeSourceTiles Function.\n   */\n  constructor(\n    tileCoord,\n    state,\n    urlTileCoord,\n    getSourceTiles,\n    removeSourceTiles,\n  ) {\n    super(tileCoord, state, {transition: 0});\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D|null}\n     */\n    this.context_ = null;\n\n    /**\n     * Executor groups. Read/written by the renderer.\n     * @type {Object<string, Array<import(\"./render/canvas/ExecutorGroup.js\").default>>}\n     */\n    this.executorGroups = {};\n\n    /**\n     * Number of loading source tiles. Read/written by the source.\n     * @type {number}\n     */\n    this.loadingSourceTiles = 0;\n\n    /**\n     * @type {Object<string, ImageData>}\n     */\n    this.hitDetectionImageData = {};\n\n    /**\n     * @private\n     * @type {!Object<string, ReplayState>}\n     */\n    this.replayState_ = {};\n\n    /**\n     * @type {Array<import(\"./VectorTile.js\").default>}\n     */\n    this.sourceTiles = [];\n\n    /**\n     * @type {Object<string, boolean>}\n     */\n    this.errorTileKeys = {};\n\n    /**\n     * @type {number}\n     */\n    this.wantedResolution;\n\n    /**\n     * @type {!function():Array<import(\"./VectorTile.js\").default>}\n     */\n    this.getSourceTiles = getSourceTiles.bind(undefined, this);\n\n    /**\n     * @type {!function(VectorRenderTile):void}\n     * @private\n     */\n    this.removeSourceTiles_ = removeSourceTiles;\n\n    /**\n     * @type {import(\"./tilecoord.js\").TileCoord}\n     */\n    this.wrappedTileCoord = urlTileCoord;\n  }\n\n  /**\n   * @return {CanvasRenderingContext2D} The rendering context.\n   */\n  getContext() {\n    if (!this.context_) {\n      this.context_ = createCanvasContext2D(1, 1, canvasPool);\n    }\n    return this.context_;\n  }\n\n  /**\n   * @return {boolean} Tile has a rendering context.\n   */\n  hasContext() {\n    return !!this.context_;\n  }\n\n  /**\n   * Get the Canvas for this tile.\n   * @return {HTMLCanvasElement} Canvas.\n   */\n  getImage() {\n    return this.hasContext() ? this.getContext().canvas : null;\n  }\n\n  /**\n   * @param {import(\"./layer/Layer.js\").default} layer Layer.\n   * @return {ReplayState} The replay state.\n   */\n  getReplayState(layer) {\n    const key = getUid(layer);\n    if (!(key in this.replayState_)) {\n      this.replayState_[key] = {\n        dirty: false,\n        renderedRenderOrder: null,\n        renderedResolution: NaN,\n        renderedRevision: -1,\n        renderedTileResolution: NaN,\n        renderedTileRevision: -1,\n        renderedTileZ: -1,\n      };\n    }\n    return this.replayState_[key];\n  }\n\n  /**\n   * Load the tile.\n   * @override\n   */\n  load() {\n    this.getSourceTiles();\n  }\n\n  /**\n   * Remove from the cache due to expiry\n   * @override\n   */\n  release() {\n    if (this.context_) {\n      releaseCanvas(this.context_);\n      canvasPool.push(this.context_.canvas);\n      this.context_ = null;\n    }\n    this.removeSourceTiles_(this);\n    this.sourceTiles.length = 0;\n    super.release();\n  }\n}\n\nexport default VectorRenderTile;\n","/**\n * @module ol/VectorTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\n\n/**\n * @template {import('./Feature.js').FeatureLike} FeatureType\n */\nclass VectorTile extends Tile {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {string} src Data source url.\n   * @param {import(\"./format/Feature.js\").default<FeatureType>} format Feature format.\n   * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n   * @param {import(\"./Tile.js\").Options} [options] Tile options.\n   */\n  constructor(tileCoord, state, src, format, tileLoadFunction, options) {\n    super(tileCoord, state, options);\n\n    /**\n     * Extent of this tile; set by the source.\n     * @type {import(\"./extent.js\").Extent}\n     */\n    this.extent = null;\n\n    /**\n     * @private\n     * @type {import(\"./format/Feature.js\").default<FeatureType>}\n     */\n    this.format_ = format;\n\n    /**\n     * @private\n     * @type {Array<FeatureType>}\n     */\n    this.features_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./featureloader.js\").FeatureLoader}\n     */\n    this.loader_;\n\n    /**\n     * Feature projection of this tile; set by the source.\n     * @type {import(\"./proj/Projection.js\").default}\n     */\n    this.projection = null;\n\n    /**\n     * Resolution of this tile; set by the source.\n     * @type {number}\n     */\n    this.resolution;\n\n    /**\n     * @private\n     * @type {import(\"./Tile.js\").LoadFunction}\n     */\n    this.tileLoadFunction_ = tileLoadFunction;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.url_ = src;\n\n    this.key = src;\n  }\n\n  /**\n   * @return {string} Tile url.\n   */\n  getTileUrl() {\n    return this.url_;\n  }\n\n  /**\n   * Get the feature format assigned for reading this tile's features.\n   * @return {import(\"./format/Feature.js\").default<FeatureType>} Feature format.\n   * @api\n   */\n  getFormat() {\n    return this.format_;\n  }\n\n  /**\n   * Get the features for this tile. Geometries will be in the view projection.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeatures() {\n    return this.features_;\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == TileState.IDLE) {\n      this.setState(TileState.LOADING);\n      this.tileLoadFunction_(this, this.url_);\n      if (this.loader_) {\n        this.loader_(this.extent, this.resolution, this.projection);\n      }\n    }\n  }\n\n  /**\n   * Handler for successful tile load.\n   * @param {Array<FeatureType>} features The loaded features.\n   * @param {import(\"./proj/Projection.js\").default} dataProjection Data projection.\n   */\n  onLoad(features, dataProjection) {\n    this.setFeatures(features);\n  }\n\n  /**\n   * Handler for tile load errors.\n   */\n  onError() {\n    this.setState(TileState.ERROR);\n  }\n\n  /**\n   * Function for use in a {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.\n   * Sets the features for the tile.\n   * @param {Array<FeatureType>} features Features.\n   * @api\n   */\n  setFeatures(features) {\n    this.features_ = features;\n    this.setState(TileState.LOADED);\n  }\n\n  /**\n   * Set the feature loader for reading this tile's features.\n   * @param {import(\"./featureloader.js\").FeatureLoader<FeatureType>} loader Feature loader.\n   * @api\n   */\n  setLoader(loader) {\n    this.loader_ = loader;\n  }\n}\n\nexport default VectorTile;\n","/**\r\n * Since all functions are exported for users, all functions with defaults\r\n * have to import this object themselves to use fallbacks.\r\n * @type {object}\r\n * @ignore\r\n */\r\nexport default {\r\n    target: \"map\",\r\n    epsg: \"EPSG:25832\",\r\n    backgroundImage: \"\",\r\n    extent: [510000.0, 5850000.0, 625000.4, 6000000.0],\r\n    options: [\r\n        {resolution: 66.14579761460263, scale: 250000, zoomLevel: 0},\r\n        {resolution: 26.458319045841044, scale: 100000, zoomLevel: 1},\r\n        {resolution: 15.874991427504629, scale: 60000, zoomLevel: 2},\r\n        {resolution: 10.583327618336419, scale: 40000, zoomLevel: 3},\r\n        {resolution: 5.2916638091682096, scale: 20000, zoomLevel: 4},\r\n        {resolution: 2.6458319045841048, scale: 10000, zoomLevel: 5},\r\n        {resolution: 1.3229159522920524, scale: 5000, zoomLevel: 6},\r\n        {resolution: 0.6614579761460262, scale: 2500, zoomLevel: 7},\r\n        {resolution: 0.2645831904584105, scale: 1000, zoomLevel: 8},\r\n        {resolution: 0.1322915952292052, scale: 500, zoomLevel: 9}\r\n    ],\r\n    namedProjections: [\r\n        [\"EPSG:25832\", \"+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"]\r\n    ],\r\n    startResolution: 15.874991427504629,\r\n    startCenter: [565874, 5934140],\r\n    layerConf: \"https://geodienste.hamburg.de/services-internet.json\",\r\n    layers: [\r\n        {\r\n            \"id\": \"453\",\r\n            \"visibility\": true\r\n        }\r\n    ],\r\n    gazetteerUrl: \"https://geodienste.hamburg.de/HH_WFS_GAGES?service=WFS&request=GetFeature&version=2.0.0\",\r\n    showGeographicIdentifier: false,\r\n    sceneOptions: {\r\n        camera: {\r\n            enableTerrainAdjustmentWhenLoading: true\r\n        },\r\n        globe: {\r\n            depthTestAgainstTerrain: true // is necessary for scene.pickedPosition and correct height of the terrain. @see {https://github.com/CesiumGS/cesium/issues/5676}\r\n        },\r\n        highDynamicRange: false,\r\n        pickTranslucentDepth: true,\r\n        shadowMap: {\r\n            darkness: 0.6,\r\n            maximumDistance: 5000.0,\r\n            size: 2048\r\n        },\r\n        shadows: false\r\n    }\r\n};\r\n","import {View} from \"ol\";\r\nimport defaults from \"../defaults\";\r\n\r\n/**\r\n * Sets the startResolution or the startZoomlevel, depending on the configuration.\r\n * Where the resolution is preferred.\r\n * The value to use is set and the other is undefined.\r\n * @param {object} config - configuration object\r\n * @param {object} [mergedConfig=defaults] - configuration from object merged with default configuration\r\n * @returns {object} object that contains startZoomLevel and startResolution\r\n */\r\nexport function chooseZoomOrResolution (config = {}, mergedConfig = defaults) {\r\n    const zoomResolution = {\r\n        startZoomLevel: undefined,\r\n        startResolution: undefined\r\n    };\r\n\r\n    if (Object.prototype.hasOwnProperty.call(config, \"startZoomLevel\") && !Object.prototype.hasOwnProperty.call(config, \"startResolution\")) {\r\n        zoomResolution.startZoomLevel = mergedConfig.startZoomLevel;\r\n    }\r\n    else {\r\n        zoomResolution.startResolution = mergedConfig.startResolution;\r\n    }\r\n\r\n    return zoomResolution;\r\n}\r\n\r\n/**\r\n * Creates a View from config.\r\n * @param {object} config - configuration object\r\n * @param {string} [config.epsg=\"EPSG:25832\"] - CRS to use\r\n * @param {number[]} [config.extent=[510000.0, 5850000.0, 625000.4, 6000000.0]] - extent to use\r\n * @param {Array.<string[]>} [config.options=[{resolution: 66.14579761460263, scale: 250000, zoomLevel: 0},{resolution: 26.458319045841044, scale: 100000, zoomLevel: 1},{resolution: 15.874991427504629, scale: 60000, zoomLevel: 2},{resolution: 10.583327618336419, scale: 40000, zoomLevel: 3},{resolution: 5.2916638091682096, scale: 20000, zoomLevel: 4},{resolution: 2.6458319045841048, scale: 10000, zoomLevel: 5},{resolution: 1.3229159522920524, scale: 5000, zoomLevel: 6},{resolution: 0.6614579761460262, scale: 2500, zoomLevel: 7},{resolution: 0.2645831904584105, scale: 1000, zoomLevel: 8},{resolution: 0.13229159522920521, scale: 500, zoomLevel: 9}]] - each sub-array has two values: projection name, and projection description\r\n * @param {number} [config.startResolution=15.874991427504629] - initial resolution\r\n * @param {number[]} [config.startCenter=[565874, 5934140]] - initial position\r\n * @returns {ol.View} view with start values from config\r\n */\r\nexport function createMapView (config) {\r\n    const mergedConfig = Object.assign({}, defaults, config),\r\n        zoomResolution = chooseZoomOrResolution(config, mergedConfig);\r\n\r\n    return new View({\r\n        projection: mergedConfig.epsg,\r\n        center: mergedConfig.startCenter,\r\n        extent: mergedConfig.extent,\r\n        zoom: zoomResolution.startZoomLevel,\r\n        options: mergedConfig.options,\r\n        resolution: zoomResolution.startResolution,\r\n        resolutions: mergedConfig.options.map(entry => entry.resolution),\r\n        constrainResolution: true,\r\n        constrainOnlyCenter: true,\r\n        backgroundImage: mergedConfig.backgroundImage\r\n    });\r\n}\r\n","export default function(defs) {\n  defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n  defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n  defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n  // UTM WGS84\n  for (var i = 1; i <= 60; ++i) {\n    defs('EPSG:' + (32600 + i), \"+proj=utm +zone=\" + i + \" +datum=WGS84 +units=m\");\n    defs('EPSG:' + (32700 + i), \"+proj=utm +zone=\" + i + \" +south +datum=WGS84 +units=m\");\n  }\n\n  defs.WGS84 = defs['EPSG:4326'];\n  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n  defs.GOOGLE = defs['EPSG:3857'];\n  defs['EPSG:900913'] = defs['EPSG:3857'];\n  defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_GRIDSHIFT = 3;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SRS_WGS84_SEMIMAJOR = 6378137.0;  // only used in grid shift transforms\nexport var SRS_WGS84_SEMIMINOR = 6356752.314;  // only used in grid shift transforms\nexport var SRS_WGS84_ESQUARED = 0.0066943799901413165; // only used in grid shift transforms\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n  'mm': {to_meter: 0.001},\n  'cm': {to_meter: 0.01},\n  'ft': {to_meter: 0.3048},\n  'us-ft': {to_meter: 1200 / 3937},\n  'fath': {to_meter: 1.8288},\n  'kmi': {to_meter: 1852},\n  'us-ch': {to_meter: 20.1168402336805},\n  'us-mi': {to_meter: 1609.34721869444},\n  'km': {to_meter: 1000},\n  'ind-ft': {to_meter: 0.30479841},\n  'ind-yd': {to_meter: 0.91439523},\n  'mi': {to_meter: 1609.344},\n  'yd': {to_meter: 0.9144},\n  'ch': {to_meter: 20.1168},\n  'link': {to_meter: 0.201168},\n  'dm': {to_meter: 0.01},\n  'in': {to_meter: 0.0254},\n  'ind-ch': {to_meter: 20.11669506},\n  'us-in': {to_meter: 0.025400050800101},\n  'us-yd': {to_meter: 0.914401828803658}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n  if (obj[key]) {\n    return obj[key];\n  }\n  var keys = Object.keys(obj);\n  var lkey = key.toLowerCase().replace(ignoredChar, '');\n  var i = -1;\n  var testkey, processedKey;\n  while (++i < keys.length) {\n    testkey = keys[i];\n    processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n    if (processedKey === lkey) {\n      return obj[testkey];\n    }\n  }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n  var self = {};\n  var paramObj = defData.split('+').map(function(v) {\n    return v.trim();\n  }).filter(function(a) {\n    return a;\n  }).reduce(function(p, a) {\n    var split = a.split('=');\n    split.push(true);\n    p[split[0].toLowerCase()] = split[1];\n    return p;\n  }, {});\n  var paramName, paramVal, paramOutname;\n  var params = {\n    proj: 'projName',\n    datum: 'datumCode',\n    rf: function(v) {\n      self.rf = parseFloat(v);\n    },\n    lat_0: function(v) {\n      self.lat0 = v * D2R;\n    },\n    lat_1: function(v) {\n      self.lat1 = v * D2R;\n    },\n    lat_2: function(v) {\n      self.lat2 = v * D2R;\n    },\n    lat_ts: function(v) {\n      self.lat_ts = v * D2R;\n    },\n    lon_0: function(v) {\n      self.long0 = v * D2R;\n    },\n    lon_1: function(v) {\n      self.long1 = v * D2R;\n    },\n    lon_2: function(v) {\n      self.long2 = v * D2R;\n    },\n    alpha: function(v) {\n      self.alpha = parseFloat(v) * D2R;\n    },\n    gamma: function(v) {\n      self.rectified_grid_angle = parseFloat(v);\n    },\n    lonc: function(v) {\n      self.longc = v * D2R;\n    },\n    x_0: function(v) {\n      self.x0 = parseFloat(v);\n    },\n    y_0: function(v) {\n      self.y0 = parseFloat(v);\n    },\n    k_0: function(v) {\n      self.k0 = parseFloat(v);\n    },\n    k: function(v) {\n      self.k0 = parseFloat(v);\n    },\n    a: function(v) {\n      self.a = parseFloat(v);\n    },\n    b: function(v) {\n      self.b = parseFloat(v);\n    },\n    r: function(v) {\n      self.a = self.b = parseFloat(v);\n    },\n    r_a: function() {\n      self.R_A = true;\n    },\n    zone: function(v) {\n      self.zone = parseInt(v, 10);\n    },\n    south: function() {\n      self.utmSouth = true;\n    },\n    towgs84: function(v) {\n      self.datum_params = v.split(\",\").map(function(a) {\n        return parseFloat(a);\n      });\n    },\n    to_meter: function(v) {\n      self.to_meter = parseFloat(v);\n    },\n    units: function(v) {\n      self.units = v;\n      var unit = match(units, v);\n      if (unit) {\n        self.to_meter = unit.to_meter;\n      }\n    },\n    from_greenwich: function(v) {\n      self.from_greenwich = v * D2R;\n    },\n    pm: function(v) {\n      var pm = match(PrimeMeridian, v);\n      self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n    },\n    nadgrids: function(v) {\n      if (v === '@null') {\n        self.datumCode = 'none';\n      }\n      else {\n        self.nadgrids = v;\n      }\n    },\n    axis: function(v) {\n      var legalAxis = \"ewnsud\";\n      if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n        self.axis = v;\n      }\n    },\n    approx: function() {\n      self.approx = true;\n    }\n  };\n  for (paramName in paramObj) {\n    paramVal = paramObj[paramName];\n    if (paramName in params) {\n      paramOutname = params[paramName];\n      if (typeof paramOutname === 'function') {\n        paramOutname(paramVal);\n      }\n      else {\n        self[paramOutname] = paramVal;\n      }\n    }\n    else {\n      self[paramName] = paramVal;\n    }\n  }\n  if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n    self.datumCode = self.datumCode.toLowerCase();\n  }\n  return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84_]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n  if (typeof text !== 'string') {\n    throw new Error('not a string');\n  }\n  this.text = text.trim();\n  this.level = 0;\n  this.place = 0;\n  this.root = null;\n  this.stack = [];\n  this.currentObject = null;\n  this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n  var char = this.text[this.place++];\n  if (this.state !== QUOTED) {\n    while (whitespace.test(char)) {\n      if (this.place >= this.text.length) {\n        return;\n      }\n      char = this.text[this.place++];\n    }\n  }\n  switch (this.state) {\n    case NEUTRAL:\n      return this.neutral(char);\n    case KEYWORD:\n      return this.keyword(char)\n    case QUOTED:\n      return this.quoted(char);\n    case AFTERQUOTE:\n      return this.afterquote(char);\n    case NUMBER:\n      return this.number(char);\n    case ENDED:\n      return;\n  }\n};\nParser.prototype.afterquote = function(char) {\n  if (char === '\"') {\n    this.word += '\"';\n    this.state = QUOTED;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.word = this.word.trim();\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n  if (char === ',') {\n    if (this.word !== null) {\n      this.currentObject.push(this.word);\n    }\n    this.word = null;\n    this.state = NEUTRAL;\n    return;\n  }\n  if (char === ']') {\n    this.level--;\n    if (this.word !== null) {\n      this.currentObject.push(this.word);\n      this.word = null;\n    }\n    this.state = NEUTRAL;\n    this.currentObject = this.stack.pop();\n    if (!this.currentObject) {\n      this.state = ENDED;\n    }\n\n    return;\n  }\n};\nParser.prototype.number = function(char) {\n  if (digets.test(char)) {\n    this.word += char;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.word = parseFloat(this.word);\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n  if (char === '\"') {\n    this.state = AFTERQUOTE;\n    return;\n  }\n  this.word += char;\n  return;\n};\nParser.prototype.keyword = function(char) {\n  if (keyword.test(char)) {\n    this.word += char;\n    return;\n  }\n  if (char === '[') {\n    var newObjects = [];\n    newObjects.push(this.word);\n    this.level++;\n    if (this.root === null) {\n      this.root = newObjects;\n    } else {\n      this.currentObject.push(newObjects);\n    }\n    this.stack.push(this.currentObject);\n    this.currentObject = newObjects;\n    this.state = NEUTRAL;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n  if (latin.test(char)) {\n    this.word = char;\n    this.state = KEYWORD;\n    return;\n  }\n  if (char === '\"') {\n    this.word = '';\n    this.state = QUOTED;\n    return;\n  }\n  if (digets.test(char)) {\n    this.word = char;\n    this.state = NUMBER;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n  while (this.place < this.text.length) {\n    this.readCharicter();\n  }\n  if (this.state === ENDED) {\n    return this.root;\n  }\n  throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n  var parser = new Parser(txt);\n  return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n  if (Array.isArray(key)) {\n    value.unshift(key);\n    key = null;\n  }\n  var thing = key ? {} : obj;\n\n  var out = value.reduce(function(newObj, item) {\n    sExpr(item, newObj);\n    return newObj\n  }, thing);\n  if (key) {\n    obj[key] = out;\n  }\n}\n\nexport function sExpr(v, obj) {\n  if (!Array.isArray(v)) {\n    obj[v] = true;\n    return;\n  }\n  var key = v.shift();\n  if (key === 'PARAMETER') {\n    key = v.shift();\n  }\n  if (v.length === 1) {\n    if (Array.isArray(v[0])) {\n      obj[key] = {};\n      sExpr(v[0], obj[key]);\n      return;\n    }\n    obj[key] = v[0];\n    return;\n  }\n  if (!v.length) {\n    obj[key] = true;\n    return;\n  }\n  if (key === 'TOWGS84') {\n    obj[key] = v;\n    return;\n  }\n  if (key === 'AXIS') {\n    if (!(key in obj)) {\n      obj[key] = [];\n    }\n    obj[key].push(v);\n    return;\n  }\n  if (!Array.isArray(key)) {\n    obj[key] = {};\n  }\n\n  var i;\n  switch (key) {\n    case 'UNIT':\n    case 'PRIMEM':\n    case 'VERT_DATUM':\n      obj[key] = {\n        name: v[0].toLowerCase(),\n        convert: v[1]\n      };\n      if (v.length === 3) {\n        sExpr(v[2], obj[key]);\n      }\n      return;\n    case 'SPHEROID':\n    case 'ELLIPSOID':\n      obj[key] = {\n        name: v[0],\n        a: v[1],\n        rf: v[2]\n      };\n      if (v.length === 4) {\n        sExpr(v[3], obj[key]);\n      }\n      return;\n    case 'EDATUM':\n    case 'ENGINEERINGDATUM':\n    case 'LOCAL_DATUM':\n    case 'DATUM':\n    case 'VERT_CS':\n    case 'VERTCRS':\n    case 'VERTICALCRS':\n      v[0] = ['name', v[0]];\n      mapit(obj, key, v);\n      return;\n    case 'COMPD_CS':\n    case 'COMPOUNDCRS':\n    case 'FITTED_CS':\n    // the followings are the crs defined in\n    // https://github.com/proj4js/proj4js/blob/1da4ed0b865d0fcb51c136090569210cdcc9019e/lib/parseCode.js#L11\n    case 'PROJECTEDCRS':\n    case 'PROJCRS':\n    case 'GEOGCS':\n    case 'GEOCCS':\n    case 'PROJCS':\n    case 'LOCAL_CS':\n    case 'GEODCRS':\n    case 'GEODETICCRS':\n    case 'GEODETICDATUM':\n    case 'ENGCRS':\n    case 'ENGINEERINGCRS':\n      v[0] = ['name', v[0]];\n      mapit(obj, key, v);\n      obj[key].type = key;\n      return;\n    default:\n      i = -1;\n      while (++i < v.length) {\n        if (!Array.isArray(v[i])) {\n          return sExpr(v, obj[key]);\n        }\n      }\n      return mapit(obj, key, v);\n  }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\nvar knownTypes = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS', 'GEOCCS', 'PROJCS', 'LOCAL_CS', 'GEODCRS',\n  'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\n\nfunction rename(obj, params) {\n  var outName = params[0];\n  var inName = params[1];\n  if (!(outName in obj) && (inName in obj)) {\n    obj[outName] = obj[inName];\n    if (params.length === 3) {\n      obj[outName] = params[2](obj[outName]);\n    }\n  }\n}\n\nfunction d2r(input) {\n  return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n  var keys = Object.keys(wkt);\n  for (var i = 0, ii = keys.length; i <ii; ++i) {\n    var key = keys[i];\n    // the followings are the crs defined in\n    // https://github.com/proj4js/proj4js/blob/1da4ed0b865d0fcb51c136090569210cdcc9019e/lib/parseCode.js#L11\n    if (knownTypes.indexOf(key) !== -1) {\n      setPropertiesFromWkt(wkt[key]);\n    }\n    if (typeof wkt[key] === 'object') {\n      cleanWKT(wkt[key]);\n    }\n  }\n}\n\nfunction setPropertiesFromWkt(wkt) {\n  if (wkt.AUTHORITY) {\n    var authority = Object.keys(wkt.AUTHORITY)[0];\n    if (authority && authority in wkt.AUTHORITY) {\n      wkt.title = authority + ':' + wkt.AUTHORITY[authority];\n    }\n  }\n  if (wkt.type === 'GEOGCS') {\n    wkt.projName = 'longlat';\n  } else if (wkt.type === 'LOCAL_CS') {\n    wkt.projName = 'identity';\n    wkt.local = true;\n  } else {\n    if (typeof wkt.PROJECTION === 'object') {\n      wkt.projName = Object.keys(wkt.PROJECTION)[0];\n    } else {\n      wkt.projName = wkt.PROJECTION;\n    }\n  }\n  if (wkt.AXIS) {\n    var axisOrder = '';\n    for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n      var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];\n      if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {\n        axisOrder += 'n';\n      } else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {\n        axisOrder += 's';\n      } else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {\n        axisOrder += 'e';\n      } else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {\n        axisOrder += 'w';\n      }\n    }\n    if (axisOrder.length === 2) {\n      axisOrder += 'u';\n    }\n    if (axisOrder.length === 3) {\n      wkt.axis = axisOrder;\n    }\n  }\n  if (wkt.UNIT) {\n    wkt.units = wkt.UNIT.name.toLowerCase();\n    if (wkt.units === 'metre') {\n      wkt.units = 'meter';\n    }\n    if (wkt.UNIT.convert) {\n      if (wkt.type === 'GEOGCS') {\n        if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n          wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n        }\n      } else {\n        wkt.to_meter = wkt.UNIT.convert;\n      }\n    }\n  }\n  var geogcs = wkt.GEOGCS;\n  if (wkt.type === 'GEOGCS') {\n    geogcs = wkt;\n  }\n  if (geogcs) {\n    //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n    //  wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n    //}\n    if (geogcs.DATUM) {\n      wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n    } else {\n      wkt.datumCode = geogcs.name.toLowerCase();\n    }\n    if (wkt.datumCode.slice(0, 2) === 'd_') {\n      wkt.datumCode = wkt.datumCode.slice(2);\n    }\n    if (wkt.datumCode === 'new_zealand_1949') {\n      wkt.datumCode = 'nzgd49';\n    }\n    if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n      if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n        wkt.sphere = true;\n      }\n      wkt.datumCode = 'wgs84';\n    }\n    if (wkt.datumCode === 'belge_1972') {\n      wkt.datumCode = 'rnb72';\n    }\n    if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n      wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n      if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n        wkt.ellps = 'intl';\n      }\n\n      wkt.a = geogcs.DATUM.SPHEROID.a;\n      wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n    }\n\n    if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n      wkt.datum_params = geogcs.DATUM.TOWGS84;\n    }\n    if (~wkt.datumCode.indexOf('osgb_1936')) {\n      wkt.datumCode = 'osgb36';\n    }\n    if (~wkt.datumCode.indexOf('osni_1952')) {\n      wkt.datumCode = 'osni52';\n    }\n    if (~wkt.datumCode.indexOf('tm65')\n      || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n      wkt.datumCode = 'ire65';\n    }\n    if (wkt.datumCode === 'ch1903+') {\n      wkt.datumCode = 'ch1903';\n    }\n    if (~wkt.datumCode.indexOf('israel')) {\n      wkt.datumCode = 'isr93';\n    }\n  }\n  if (wkt.b && !isFinite(wkt.b)) {\n    wkt.b = wkt.a;\n  }\n\n  function toMeter(input) {\n    var ratio = wkt.to_meter || 1;\n    return input * ratio;\n  }\n  var renamer = function(a) {\n    return rename(wkt, a);\n  };\n  var list = [\n    ['standard_parallel_1', 'Standard_Parallel_1'],\n    ['standard_parallel_1', 'Latitude of 1st standard parallel'],\n    ['standard_parallel_2', 'Standard_Parallel_2'],\n    ['standard_parallel_2', 'Latitude of 2nd standard parallel'],\n    ['false_easting', 'False_Easting'],\n    ['false_easting', 'False easting'],\n    ['false-easting', 'Easting at false origin'],\n    ['false_northing', 'False_Northing'],\n    ['false_northing', 'False northing'],\n    ['false_northing', 'Northing at false origin'],\n    ['central_meridian', 'Central_Meridian'],\n    ['central_meridian', 'Longitude of natural origin'],\n    ['central_meridian', 'Longitude of false origin'],\n    ['latitude_of_origin', 'Latitude_Of_Origin'],\n    ['latitude_of_origin', 'Central_Parallel'],\n    ['latitude_of_origin', 'Latitude of natural origin'],\n    ['latitude_of_origin', 'Latitude of false origin'],\n    ['scale_factor', 'Scale_Factor'],\n    ['k0', 'scale_factor'],\n    ['latitude_of_center', 'Latitude_Of_Center'],\n    ['latitude_of_center', 'Latitude_of_center'],\n    ['lat0', 'latitude_of_center', d2r],\n    ['longitude_of_center', 'Longitude_Of_Center'],\n    ['longitude_of_center', 'Longitude_of_center'],\n    ['longc', 'longitude_of_center', d2r],\n    ['x0', 'false_easting', toMeter],\n    ['y0', 'false_northing', toMeter],\n    ['long0', 'central_meridian', d2r],\n    ['lat0', 'latitude_of_origin', d2r],\n    ['lat0', 'standard_parallel_1', d2r],\n    ['lat1', 'standard_parallel_1', d2r],\n    ['lat2', 'standard_parallel_2', d2r],\n    ['azimuth', 'Azimuth'],\n    ['alpha', 'azimuth', d2r],\n    ['srsCode', 'name']\n  ];\n  list.forEach(renamer);\n  if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n    wkt.long0 = wkt.longc;\n  }\n  if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n    wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n    wkt.lat_ts = wkt.lat1;\n  } else if (!wkt.lat_ts && wkt.lat0 && wkt.projName === 'Polar_Stereographic') {\n    wkt.lat_ts = wkt.lat0;\n    wkt.lat0 = d2r(wkt.lat0 > 0 ? 90 : -90);\n  }\n}\nexport default function(wkt) {\n  var lisp = parser(wkt);\n  var type = lisp[0];\n  var obj = {};\n  sExpr(lisp, obj);\n  cleanWKT(obj);\n  return obj[type];\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n  /*global console*/\n  var that = this;\n  if (arguments.length === 2) {\n    var def = arguments[1];\n    if (typeof def === 'string') {\n      if (def.charAt(0) === '+') {\n        defs[name] = parseProj(arguments[1]);\n      }\n      else {\n        defs[name] = wkt(arguments[1]);\n      }\n    } else {\n      defs[name] = def;\n    }\n  }\n  else if (arguments.length === 1) {\n    if (Array.isArray(name)) {\n      return name.map(function(v) {\n        if (Array.isArray(v)) {\n          defs.apply(that, v);\n        }\n        else {\n          defs(v);\n        }\n      });\n    }\n    else if (typeof name === 'string') {\n      if (name in defs) {\n        return defs[name];\n      }\n    }\n    else if ('EPSG' in name) {\n      defs['EPSG:' + name.EPSG] = name;\n    }\n    else if ('ESRI' in name) {\n      defs['ESRI:' + name.ESRI] = name;\n    }\n    else if ('IAU2000' in name) {\n      defs['IAU2000:' + name.IAU2000] = name;\n    }\n    else {\n      console.log(name);\n    }\n    return;\n  }\n\n\n}\nglobals(defs);\nexport default defs;\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n  return typeof code === 'string';\n}\nfunction testDef(code){\n  return code in defs;\n}\nvar codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n  return codeWords.some(function (word) {\n    return code.indexOf(word) > -1;\n  });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n  var auth = match(item, 'authority');\n  if (!auth) {\n    return;\n  }\n  var code = match(auth, 'epsg');\n  return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n  var ext = match(item, 'extension');\n  if (!ext) {\n    return;\n  }\n  return match(ext, 'proj4');\n}\nfunction testProj(code){\n  return code[0] === '+';\n}\nfunction parse(code){\n  if (testObj(code)) {\n    //check to see if this is a WKT string\n    if (testDef(code)) {\n      return defs[code];\n    }\n    if (testWKT(code)) {\n      var out = wkt(code);\n      // test of spetial case, due to this being a very common and often malformed\n      if (checkMercator(out)) {\n        return defs['EPSG:3857'];\n      }\n      var maybeProjStr = checkProjStr(out);\n      if (maybeProjStr) {\n        return projStr(maybeProjStr);\n      }\n      return out;\n    }\n    if (testProj(code)) {\n      return projStr(code);\n    }\n  }else{\n    return code;\n  }\n}\n\nexport default parse;\n","export default function(destination, source) {\n  destination = destination || {};\n  var value, property;\n  if (!source) {\n    return destination;\n  }\n  for (property in source) {\n    value = source[property];\n    if (value !== undefined) {\n      destination[property] = value;\n    }\n  }\n  return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n  var con = eccent * sinphi;\n  return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n  return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n  return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n  var con = eccent * sinphi;\n  var com = 0.5 * eccent;\n  con = Math.pow(((1 - con) / (1 + con)), com);\n  return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n  var eccnth = 0.5 * eccent;\n  var con, dphi;\n  var phi = HALF_PI - 2 * Math.atan(ts);\n  for (var i = 0; i <= 15; i++) {\n    con = eccent * Math.sin(phi);\n    dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n    phi += dphi;\n    if (Math.abs(dphi) <= 0.0000000001) {\n      return phi;\n    }\n  }\n  //console.log(\"phi2z has NoConvergence\");\n  return -9999;\n}\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n  var con = this.b / this.a;\n  this.es = 1 - con * con;\n  if(!('x0' in this)){\n    this.x0 = 0;\n  }\n  if(!('y0' in this)){\n    this.y0 = 0;\n  }\n  this.e = Math.sqrt(this.es);\n  if (this.lat_ts) {\n    if (this.sphere) {\n      this.k0 = Math.cos(this.lat_ts);\n    }\n    else {\n      this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n    }\n  }\n  else {\n    if (!this.k0) {\n      if (this.k) {\n        this.k0 = this.k;\n      }\n      else {\n        this.k0 = 1;\n      }\n    }\n  }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n  --------------------------------------------------*/\n\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  // convert to radians\n  if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n    return null;\n  }\n\n  var x, y;\n  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n    return null;\n  }\n  else {\n    if (this.sphere) {\n      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n      y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n    }\n    else {\n      var sinphi = Math.sin(lat);\n      var ts = tsfnz(this.e, lat, sinphi);\n      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n      y = this.y0 - this.a * this.k0 * Math.log(ts);\n    }\n    p.x = x;\n    p.y = y;\n    return p;\n  }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n  --------------------------------------------------*/\nexport function inverse(p) {\n\n  var x = p.x - this.x0;\n  var y = p.y - this.y0;\n  var lon, lat;\n\n  if (this.sphere) {\n    lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n  }\n  else {\n    var ts = Math.exp(-y / (this.a * this.k0));\n    lat = phi2z(this.e, ts);\n    if (lat === -9999) {\n      return null;\n    }\n  }\n  lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export function init() {\n  //no-op for longlat\n}\n\nfunction identity(pt) {\n  return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n  init: init,\n  forward: identity,\n  inverse: identity,\n  names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n  var len = projStore.length;\n  if (!proj.names) {\n    console.log(i);\n    return true;\n  }\n  projStore[len] = proj;\n  proj.names.forEach(function(n) {\n    names[n.toLowerCase()] = len;\n  });\n  return this;\n}\n\nexport {add};\n\nexport function get(name) {\n  if (!name) {\n    return false;\n  }\n  var n = name.toLowerCase();\n  if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n    return projStore[names[n]];\n  }\n}\n\nexport function start() {\n  projs.forEach(add);\n}\nexport default {\n  start: start,\n  add: add,\n  get: get\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n  a: 6378137.0,\n  rf: 298.257,\n  ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n  a: 6378136.0,\n  rf: 298.257,\n  ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n  a: 6378137.0,\n  rf: 298.257222101,\n  ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n  a: 6378140.0,\n  rf: 298.257,\n  ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n  a: 6377563.396,\n  b: 6356256.910,\n  ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n  a: 6378137,\n  rf: 298.25,\n  ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n  a: 6378145.0,\n  rf: 298.25,\n  ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n  a: 6377340.189,\n  b: 6356034.446,\n  ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n  a: 6377104.43,\n  rf: 300.0,\n  ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n  a: 6378160.0,\n  rf: 298.25,\n  ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n  a: 6378160.0,\n  rf: 298.2471674270,\n  ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n  a: 6377397.155,\n  rf: 299.1528128,\n  ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n  a: 6377483.865,\n  rf: 299.1528128,\n  ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n  a: 6378206.4,\n  b: 6356583.8,\n  ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n  a: 6378249.145,\n  rf: 293.4663,\n  ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk80ign = {\n  a: 6378249.2,\n  b: 6356515,\n  rf: 293.4660213,\n  ellipseName: \"Clarke 1880 (IGN)\"\n};\n\nexports.clrk58 = {\n  a: 6378293.645208759,\n  rf: 294.2606763692654,\n  ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n  a: 6375738.7,\n  rf: 334.29,\n  ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n  a: 6376428.0,\n  rf: 311.5,\n  ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n  a: 6378136.05,\n  rf: 298.2566,\n  ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n  a: 6377276.345,\n  rf: 300.8017,\n  ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n  a: 6377304.063,\n  rf: 300.8017,\n  ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n  a: 6377301.243,\n  rf: 300.8017,\n  ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n  a: 6377295.664,\n  rf: 300.8017,\n  ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n  a: 6377298.556,\n  rf: 300.8017,\n  ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n  a: 6378166.0,\n  rf: 298.3,\n  ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n  a: 6378155.0,\n  rf: 298.3,\n  ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n  a: 6378150.0,\n  rf: 298.3,\n  ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n  a: 6378200.0,\n  rf: 298.3,\n  ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n  a: 6378270.0,\n  rf: 297.0,\n  ellipseName: \"Hough\"\n};\n\nexports.intl = {\n  a: 6378388.0,\n  rf: 297.0,\n  ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n  a: 6378163.0,\n  rf: 298.24,\n  ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n  a: 6378139.0,\n  rf: 298.257,\n  ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n  a: 6397300.0,\n  rf: 191.0,\n  ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n  a: 6378157.5,\n  b: 6356772.2,\n  ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n  a: 6376523.0,\n  rf: 6355863.0,\n  ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n  a: 6378245.0,\n  rf: 298.3,\n  ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n  a: 6378155.0,\n  b: 6356773.3205,\n  ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n  a: 6376896.0,\n  b: 6355834.8467,\n  ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n  a: 6378165.0,\n  rf: 298.3,\n  ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n  a: 6378145.0,\n  rf: 298.25,\n  ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n  a: 6378135.0,\n  rf: 298.26,\n  ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n  a: 6378137.0,\n  rf: 298.257223563,\n  ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n  a: 6370997.0,\n  b: 6370997.0,\n  ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n  var a2 = a * a; // used in geocentric\n  var b2 = b * b; // used in geocentric\n  var es = (a2 - b2) / a2; // e ^ 2\n  var e = 0;\n  if (R_A) {\n    a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n    a2 = a * a;\n    es = 0;\n  } else {\n    e = Math.sqrt(es); // eccentricity\n  }\n  var ep2 = (a2 - b2) / b2; // used in geocentric\n  return {\n    es: es,\n    e: e,\n    ep2: ep2\n  };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n  if (!a) { // do we have an ellipsoid?\n    var ellipse = match(Ellipsoid, ellps);\n    if (!ellipse) {\n      ellipse = WGS84;\n    }\n    a = ellipse.a;\n    b = ellipse.b;\n    rf = ellipse.rf;\n  }\n\n  if (rf && !b) {\n    b = (1.0 - 1.0 / rf) * a;\n  }\n  if (rf === 0 || Math.abs(a - b) < EPSLN) {\n    sphere = true;\n    b = a;\n  }\n  return {\n    a: a,\n    b: b,\n    rf: rf,\n    sphere: sphere\n  };\n}\n","var datums = {\n  wgs84: {\n    towgs84: \"0,0,0\",\n    ellipse: \"WGS84\",\n    datumName: \"WGS84\"\n  },\n  ch1903: {\n    towgs84: \"674.374,15.056,405.346\",\n    ellipse: \"bessel\",\n    datumName: \"swiss\"\n  },\n  ggrs87: {\n    towgs84: \"-199.87,74.79,246.62\",\n    ellipse: \"GRS80\",\n    datumName: \"Greek_Geodetic_Reference_System_1987\"\n  },\n  nad83: {\n    towgs84: \"0,0,0\",\n    ellipse: \"GRS80\",\n    datumName: \"North_American_Datum_1983\"\n  },\n  nad27: {\n    nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n    ellipse: \"clrk66\",\n    datumName: \"North_American_Datum_1927\"\n  },\n  potsdam: {\n    towgs84: \"598.1,73.7,418.2,0.202,0.045,-2.455,6.7\",\n    ellipse: \"bessel\",\n    datumName: \"Potsdam Rauenberg 1950 DHDN\"\n  },\n  carthage: {\n    towgs84: \"-263.0,6.0,431.0\",\n    ellipse: \"clark80\",\n    datumName: \"Carthage 1934 Tunisia\"\n  },\n  hermannskogel: {\n    towgs84: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\n    ellipse: \"bessel\",\n    datumName: \"Hermannskogel\"\n  },\n  mgi: {\n    towgs84: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\n    ellipse: \"bessel\",\n    datumName: \"Militar-Geographische Institut\",\n  },\n  osni52: {\n    towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n    ellipse: \"airy\",\n    datumName: \"Irish National\"\n  },\n  ire65: {\n    towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n    ellipse: \"mod_airy\",\n    datumName: \"Ireland 1965\"\n  },\n  rassadiran: {\n    towgs84: \"-133.63,-157.5,-158.62\",\n    ellipse: \"intl\",\n    datumName: \"Rassadiran\"\n  },\n  nzgd49: {\n    towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n    ellipse: \"intl\",\n    datumName: \"New Zealand Geodetic Datum 1949\"\n  },\n  osgb36: {\n    towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n    ellipse: \"airy\",\n    datumName: \"Ordnance Survey of Great Britain 1936\"\n  },\n  s_jtsk: {\n    towgs84: \"589,76,480\",\n    ellipse: 'bessel',\n    datumName: 'S-JTSK (Ferro)'\n  },\n  beduaram: {\n    towgs84: '-106,-87,188',\n    ellipse: 'clrk80',\n    datumName: 'Beduaram'\n  },\n  gunung_segara: {\n    towgs84: '-403,684,41',\n    ellipse: 'bessel',\n    datumName: 'Gunung Segara Jakarta'\n  },\n  rnb72: {\n    towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n    ellipse: \"intl\",\n    datumName: \"Reseau National Belge 1972\"\n  }\n};\n\nfor (var key in datums) {\n  var datum = datums[key];\n  datums[datum.datumName] = datum;\n}\n\nexport default datums;\n","import {PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {\n  var out = {};\n\n  if (datumCode === undefined || datumCode === 'none') {\n    out.datum_type = PJD_NODATUM;\n  } else {\n    out.datum_type = PJD_WGS84;\n  }\n\n  if (datum_params) {\n    out.datum_params = datum_params.map(parseFloat);\n    if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n      out.datum_type = PJD_3PARAM;\n    }\n    if (out.datum_params.length > 3) {\n      if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n        out.datum_type = PJD_7PARAM;\n        out.datum_params[3] *= SEC_TO_RAD;\n        out.datum_params[4] *= SEC_TO_RAD;\n        out.datum_params[5] *= SEC_TO_RAD;\n        out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n      }\n    }\n  }\n\n  if (nadgrids) {\n    out.datum_type = PJD_GRIDSHIFT;\n    out.grids = nadgrids;\n  }\n  out.a = a; //datum object also uses these values\n  out.b = b;\n  out.es = es;\n  out.ep2 = ep2;\n  return out;\n}\n\nexport default datum;\n","/**\n * Resources for details of NTv2 file formats:\n * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf\n * - http://mimaka.com/help/gs/html/004_NTV2%20Data%20Format.htm\n */\n\nvar loadedNadgrids = {};\n\n/**\n * Load a binary NTv2 file (.gsb) to a key that can be used in a proj string like +nadgrids=<key>. Pass the NTv2 file\n * as an ArrayBuffer.\n */\nexport default function nadgrid(key, data) {\n  var view = new DataView(data);\n  var isLittleEndian = detectLittleEndian(view);\n  var header = readHeader(view, isLittleEndian);\n  var subgrids = readSubgrids(view, header, isLittleEndian);\n  var nadgrid = {header: header, subgrids: subgrids};\n  loadedNadgrids[key] = nadgrid;\n  return nadgrid;\n}\n\n/**\n * Given a proj4 value for nadgrids, return an array of loaded grids\n */\nexport function getNadgrids(nadgrids) {\n  // Format details: http://proj.maptools.org/gen_parms.html\n  if (nadgrids === undefined) { return null; }\n  var grids = nadgrids.split(',');\n  return grids.map(parseNadgridString);\n}\n\nfunction parseNadgridString(value) {\n  if (value.length === 0) {\n    return null;\n  }\n  var optional = value[0] === '@';\n  if (optional) {\n    value = value.slice(1);\n  }\n  if (value === 'null') {\n    return {name: 'null', mandatory: !optional, grid: null, isNull: true};\n  }\n  return {\n    name: value,\n    mandatory: !optional,\n    grid: loadedNadgrids[value] || null,\n    isNull: false\n  };\n}\n\nfunction secondsToRadians(seconds) {\n  return (seconds / 3600) * Math.PI / 180;\n}\n\nfunction detectLittleEndian(view) {\n  var nFields = view.getInt32(8, false);\n  if (nFields === 11) {\n    return false;\n  }\n  nFields = view.getInt32(8, true);\n  if (nFields !== 11) {\n    console.warn('Failed to detect nadgrid endian-ness, defaulting to little-endian');\n  }\n  return true;\n}\n\nfunction readHeader(view, isLittleEndian) {\n  return {\n    nFields: view.getInt32(8, isLittleEndian),\n    nSubgridFields: view.getInt32(24, isLittleEndian),\n    nSubgrids: view.getInt32(40, isLittleEndian),\n    shiftType: decodeString(view, 56, 56 + 8).trim(),\n    fromSemiMajorAxis: view.getFloat64(120, isLittleEndian),\n    fromSemiMinorAxis: view.getFloat64(136, isLittleEndian),\n    toSemiMajorAxis: view.getFloat64(152, isLittleEndian),\n    toSemiMinorAxis: view.getFloat64(168, isLittleEndian),\n  };\n}\n\nfunction decodeString(view, start, end) {\n  return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start, end)));\n}\n\nfunction readSubgrids(view, header, isLittleEndian) {\n  var gridOffset = 176;\n  var grids = [];\n  for (var i = 0; i < header.nSubgrids; i++) {\n    var subHeader = readGridHeader(view, gridOffset, isLittleEndian);\n    var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian);\n    var lngColumnCount = Math.round(\n      1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval);\n    var latColumnCount = Math.round(\n      1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval);\n    // Proj4 operates on radians whereas the coordinates are in seconds in the grid\n    grids.push({\n      ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)],\n      del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)],\n      lim: [lngColumnCount, latColumnCount],\n      count: subHeader.gridNodeCount,\n      cvs: mapNodes(nodes)\n    });\n    gridOffset += 176 + subHeader.gridNodeCount * 16;\n  }\n  return grids;\n}\n\nfunction mapNodes(nodes) {\n  return nodes.map(function (r) {return [secondsToRadians(r.longitudeShift), secondsToRadians(r.latitudeShift)];});\n}\n\nfunction readGridHeader(view, offset, isLittleEndian) {\n  return {\n    name: decodeString(view, offset + 8, offset + 16).trim(),\n    parent: decodeString(view, offset + 24, offset + 24 + 8).trim(),\n    lowerLatitude: view.getFloat64(offset + 72, isLittleEndian),\n    upperLatitude: view.getFloat64(offset + 88, isLittleEndian),\n    lowerLongitude: view.getFloat64(offset + 104, isLittleEndian),\n    upperLongitude: view.getFloat64(offset + 120, isLittleEndian),\n    latitudeInterval: view.getFloat64(offset + 136, isLittleEndian),\n    longitudeInterval: view.getFloat64(offset + 152, isLittleEndian),\n    gridNodeCount: view.getInt32(offset + 168, isLittleEndian)\n  };\n}\n\nfunction readGridNodes(view, offset, gridHeader, isLittleEndian) {\n  var nodesOffset = offset + 176;\n  var gridRecordLength = 16;\n  var gridShiftRecords = [];\n  for (var i = 0; i < gridHeader.gridNodeCount; i++) {\n    var record = {\n      latitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength, isLittleEndian),\n      longitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength + 4, isLittleEndian),\n      latitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 8, isLittleEndian),\n      longitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 12, isLittleEndian),\n    };\n    gridShiftRecords.push(record);\n  }\n  return gridShiftRecords;\n}\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\nimport {getNadgrids} from \"./nadgrid\";\n\nfunction Projection(srsCode,callback) {\n  if (!(this instanceof Projection)) {\n    return new Projection(srsCode);\n  }\n  callback = callback || function(error){\n    if(error){\n      throw error;\n    }\n  };\n  var json = parseCode(srsCode);\n  if(typeof json !== 'object'){\n    callback('Could not parse to valid json: ' + srsCode);\n    return;\n  }\n  var ourProj = Projection.projections.get(json.projName);\n  if(!ourProj){\n    callback('Could not get projection name from: ' + srsCode);\n    return;\n  }\n  if (json.datumCode && json.datumCode !== 'none') {\n    var datumDef = match(Datum, json.datumCode);\n    if (datumDef) {\n      json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(',') : null);\n      json.ellps = datumDef.ellipse;\n      json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n    }\n  }\n  json.k0 = json.k0 || 1.0;\n  json.axis = json.axis || 'enu';\n  json.ellps = json.ellps || 'wgs84';\n  json.lat1 = json.lat1 || json.lat0; // Lambert_Conformal_Conic_1SP, for example, needs this\n\n  var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n  var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n  var nadgrids = getNadgrids(json.nadgrids);\n  var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2,\n    nadgrids);\n\n  extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n  extend(this, ourProj); // transfer all the methods from the projection\n\n  // copy the 4 things over we calculated in deriveConstants.sphere\n  this.a = sphere_.a;\n  this.b = sphere_.b;\n  this.rf = sphere_.rf;\n  this.sphere = sphere_.sphere;\n\n  // copy the 3 things we calculated in deriveConstants.eccentricity\n  this.es = ecc.es;\n  this.e = ecc.e;\n  this.ep2 = ecc.ep2;\n\n  // add in the datum object\n  this.datum = datumObj;\n\n  // init the projection\n  this.init();\n\n  // legecy callback from back in the day when it went to spatialreference.org\n  callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n  if (source.datum_type !== dest.datum_type) {\n    return false; // false, datums are not equal\n  } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n    // the tolerance for es is to ensure that GRS80 and WGS84\n    // are considered identical\n    return false;\n  } else if (source.datum_type === PJD_3PARAM) {\n    return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n  } else if (source.datum_type === PJD_7PARAM) {\n    return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n  } else {\n    return true; // datums are equal\n  }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n *    Latitude  : Geodetic latitude in radians                     (input)\n *    Longitude : Geodetic longitude in radians                    (input)\n *    Height    : Geodetic height, in meters                       (input)\n *    X         : Calculated Geocentric X coordinate, in meters    (output)\n *    Y         : Calculated Geocentric Y coordinate, in meters    (output)\n *    Z         : Calculated Geocentric Z coordinate, in meters    (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n  var Longitude = p.x;\n  var Latitude = p.y;\n  var Height = p.z ? p.z : 0; //Z value not always supplied\n\n  var Rn; /*  Earth radius at location  */\n  var Sin_Lat; /*  Math.sin(Latitude)  */\n  var Sin2_Lat; /*  Square of Math.sin(Latitude)  */\n  var Cos_Lat; /*  Math.cos(Latitude)  */\n\n  /*\n   ** Don't blow up if Latitude is just a little out of the value\n   ** range as it may just be a rounding issue.  Also removed longitude\n   ** test, it should be wrapped by Math.cos() and Math.sin().  NFW for PROJ.4, Sep/2001.\n   */\n  if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n    Latitude = -HALF_PI;\n  } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n    Latitude = HALF_PI;\n  } else if (Latitude < -HALF_PI) {\n    /* Latitude out of range */\n    //..reportError('geocent:lat out of range:' + Latitude);\n    return { x: -Infinity, y: -Infinity, z: p.z };\n  } else if (Latitude > HALF_PI) {\n    /* Latitude out of range */\n    return { x: Infinity, y: Infinity, z: p.z };\n  }\n\n  if (Longitude > Math.PI) {\n    Longitude -= (2 * Math.PI);\n  }\n  Sin_Lat = Math.sin(Latitude);\n  Cos_Lat = Math.cos(Latitude);\n  Sin2_Lat = Sin_Lat * Sin_Lat;\n  Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n  return {\n    x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n    y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n    z: ((Rn * (1 - es)) + Height) * Sin_Lat\n  };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n  /* local defintions and variables */\n  /* end-criterium of loop, accuracy of sin(Latitude) */\n  var genau = 1e-12;\n  var genau2 = (genau * genau);\n  var maxiter = 30;\n\n  var P; /* distance between semi-minor axis and location */\n  var RR; /* distance between center and location */\n  var CT; /* sin of geocentric latitude */\n  var ST; /* cos of geocentric latitude */\n  var RX;\n  var RK;\n  var RN; /* Earth radius at location */\n  var CPHI0; /* cos of start or old geodetic latitude in iterations */\n  var SPHI0; /* sin of start or old geodetic latitude in iterations */\n  var CPHI; /* cos of searched geodetic latitude */\n  var SPHI; /* sin of searched geodetic latitude */\n  var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n  var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n  var X = p.x;\n  var Y = p.y;\n  var Z = p.z ? p.z : 0.0; //Z value not always supplied\n  var Longitude;\n  var Latitude;\n  var Height;\n\n  P = Math.sqrt(X * X + Y * Y);\n  RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n  /*      special cases for latitude and longitude */\n  if (P / a < genau) {\n\n    /*  special case, if P=0. (X=0., Y=0.) */\n    Longitude = 0.0;\n\n    /*  if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n     *  of ellipsoid (=center of mass), Latitude becomes PI/2 */\n    if (RR / a < genau) {\n      Latitude = HALF_PI;\n      Height = -b;\n      return {\n        x: p.x,\n        y: p.y,\n        z: p.z\n      };\n    }\n  } else {\n    /*  ellipsoidal (geodetic) longitude\n     *  interval: -PI < Longitude <= +PI */\n    Longitude = Math.atan2(Y, X);\n  }\n\n  /* --------------------------------------------------------------\n   * Following iterative algorithm was developped by\n   * \"Institut for Erdmessung\", University of Hannover, July 1988.\n   * Internet: www.ife.uni-hannover.de\n   * Iterative computation of CPHI,SPHI and Height.\n   * Iteration of CPHI and SPHI to 10**-12 radian resp.\n   * 2*10**-7 arcsec.\n   * --------------------------------------------------------------\n   */\n  CT = Z / RR;\n  ST = P / RR;\n  RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n  CPHI0 = ST * (1.0 - es) * RX;\n  SPHI0 = CT * RX;\n  iter = 0;\n\n  /* loop to find sin(Latitude) resp. Latitude\n   * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n  do {\n    iter++;\n    RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n    /*  ellipsoidal (geodetic) height */\n    Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n    RK = es * RN / (RN + Height);\n    RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n    CPHI = ST * (1.0 - RK) * RX;\n    SPHI = CT * RX;\n    SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n    CPHI0 = CPHI;\n    SPHI0 = SPHI;\n  }\n  while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n  /*      ellipsoidal (geodetic) latitude */\n  Latitude = Math.atan(SPHI / Math.abs(CPHI));\n  return {\n    x: Longitude,\n    y: Latitude,\n    z: Height\n  };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n//  p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n    passed back and forth by reference rather than by value.\n    Other point classes may be used as long as they have\n    x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n  if (datum_type === PJD_3PARAM) {\n    // if( x[io] === HUGE_VAL )\n    //    continue;\n    return {\n      x: p.x + datum_params[0],\n      y: p.y + datum_params[1],\n      z: p.z + datum_params[2],\n    };\n  } else if (datum_type === PJD_7PARAM) {\n    var Dx_BF = datum_params[0];\n    var Dy_BF = datum_params[1];\n    var Dz_BF = datum_params[2];\n    var Rx_BF = datum_params[3];\n    var Ry_BF = datum_params[4];\n    var Rz_BF = datum_params[5];\n    var M_BF = datum_params[6];\n    // if( x[io] === HUGE_VAL )\n    //    continue;\n    return {\n      x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n      y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n      z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n    };\n  }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n//  coordinate system definition,\n//  point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n  if (datum_type === PJD_3PARAM) {\n    //if( x[io] === HUGE_VAL )\n    //    continue;\n    return {\n      x: p.x - datum_params[0],\n      y: p.y - datum_params[1],\n      z: p.z - datum_params[2],\n    };\n\n  } else if (datum_type === PJD_7PARAM) {\n    var Dx_BF = datum_params[0];\n    var Dy_BF = datum_params[1];\n    var Dz_BF = datum_params[2];\n    var Rx_BF = datum_params[3];\n    var Ry_BF = datum_params[4];\n    var Rz_BF = datum_params[5];\n    var M_BF = datum_params[6];\n    var x_tmp = (p.x - Dx_BF) / M_BF;\n    var y_tmp = (p.y - Dy_BF) / M_BF;\n    var z_tmp = (p.z - Dz_BF) / M_BF;\n    //if( x[io] === HUGE_VAL )\n    //    continue;\n\n    return {\n      x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n      y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n      z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n    };\n  } //cs_geocentric_from_wgs84()\n}\n","import {\n  PJD_3PARAM,\n  PJD_7PARAM,\n  PJD_GRIDSHIFT,\n  PJD_NODATUM,\n  R2D,\n  SRS_WGS84_ESQUARED,\n  SRS_WGS84_SEMIMAJOR, SRS_WGS84_SEMIMINOR\n} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nimport adjust_lon from \"./common/adjust_lon\";\nfunction checkParams(type) {\n  return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n  // Short cut if the datums are identical.\n  if (compareDatums(source, dest)) {\n    return point; // in this case, zero is sucess,\n    // whereas cs_compare_datums returns 1 to indicate TRUE\n    // confusing, should fix this\n  }\n\n  // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n  if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n    return point;\n  }\n\n  // If this datum requires grid shifts, then apply it to geodetic coordinates.\n  var source_a = source.a;\n  var source_es = source.es;\n  if (source.datum_type === PJD_GRIDSHIFT) {\n    var gridShiftCode = applyGridShift(source, false, point);\n    if (gridShiftCode !== 0) {\n      return undefined;\n    }\n    source_a = SRS_WGS84_SEMIMAJOR;\n    source_es = SRS_WGS84_ESQUARED;\n  }\n\n  var dest_a = dest.a;\n  var dest_b = dest.b;\n  var dest_es = dest.es;\n  if (dest.datum_type === PJD_GRIDSHIFT) {\n    dest_a = SRS_WGS84_SEMIMAJOR;\n    dest_b = SRS_WGS84_SEMIMINOR;\n    dest_es = SRS_WGS84_ESQUARED;\n  }\n\n  // Do we need to go through geocentric coordinates?\n  if (source_es === dest_es && source_a === dest_a && !checkParams(source.datum_type) &&  !checkParams(dest.datum_type)) {\n    return point;\n  }\n\n  // Convert to geocentric coordinates.\n  point = geodeticToGeocentric(point, source_es, source_a);\n  // Convert between datums\n  if (checkParams(source.datum_type)) {\n    point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n  }\n  if (checkParams(dest.datum_type)) {\n    point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n  }\n  point = geocentricToGeodetic(point, dest_es, dest_a, dest_b);\n\n  if (dest.datum_type === PJD_GRIDSHIFT) {\n    var destGridShiftResult = applyGridShift(dest, true, point);\n    if (destGridShiftResult !== 0) {\n      return undefined;\n    }\n  }\n\n  return point;\n}\n\nexport function applyGridShift(source, inverse, point) {\n  if (source.grids === null || source.grids.length === 0) {\n    console.log('Grid shift grids not found');\n    return -1;\n  }\n  var input = {x: -point.x, y: point.y};\n  var output = {x: Number.NaN, y: Number.NaN};\n  var onlyMandatoryGrids = false;\n  var attemptedGrids = [];\n  outer:\n  for (var i = 0; i < source.grids.length; i++) {\n    var grid = source.grids[i];\n    attemptedGrids.push(grid.name);\n    if (grid.isNull) {\n      output = input;\n      break;\n    }\n    onlyMandatoryGrids = grid.mandatory;\n    if (grid.grid === null) {\n      if (grid.mandatory) {\n        console.log(\"Unable to find mandatory grid '\" + grid.name + \"'\");\n        return -1;\n      }\n      continue;\n    }\n    var subgrids = grid.grid.subgrids;\n    for (var j = 0, jj = subgrids.length; j < jj; j++) {\n      var subgrid = subgrids[j];\n      // skip tables that don't match our point at all\n      var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 10000.0;\n      var minX = subgrid.ll[0] - epsilon;\n      var minY = subgrid.ll[1] - epsilon;\n      var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon;\n      var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon;\n      if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x ) {\n        continue;\n      }\n      output = applySubgridShift(input, inverse, subgrid);\n      if (!isNaN(output.x)) {\n        break outer;\n      }\n    }\n  }\n  if (isNaN(output.x)) {\n    console.log(\"Failed to find a grid shift table for location '\"+\n      -input.x * R2D + \" \" + input.y * R2D + \" tried: '\" + attemptedGrids + \"'\");\n    return -1;\n  }\n  point.x = -output.x;\n  point.y = output.y;\n  return 0;\n}\n\nfunction applySubgridShift(pin, inverse, ct) {\n  var val = {x: Number.NaN, y: Number.NaN};\n  if (isNaN(pin.x)) { return val; }\n  var tb = {x: pin.x, y: pin.y};\n  tb.x -= ct.ll[0];\n  tb.y -= ct.ll[1];\n  tb.x = adjust_lon(tb.x - Math.PI) + Math.PI;\n  var t = nadInterpolate(tb, ct);\n  if (inverse) {\n    if (isNaN(t.x)) {\n      return val;\n    }\n    t.x = tb.x - t.x;\n    t.y = tb.y - t.y;\n    var i = 9, tol = 1e-12;\n    var dif, del;\n    do {\n      del = nadInterpolate(t, ct);\n      if (isNaN(del.x)) {\n        console.log(\"Inverse grid shift iteration failed, presumably at grid edge.  Using first approximation.\");\n        break;\n      }\n      dif = {x: tb.x - (del.x + t.x), y: tb.y - (del.y + t.y)};\n      t.x += dif.x;\n      t.y += dif.y;\n    } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);\n    if (i < 0) {\n      console.log(\"Inverse grid shift iterator failed to converge.\");\n      return val;\n    }\n    val.x = adjust_lon(t.x + ct.ll[0]);\n    val.y = t.y + ct.ll[1];\n  } else {\n    if (!isNaN(t.x)) {\n      val.x = pin.x + t.x;\n      val.y = pin.y + t.y;\n    }\n  }\n  return val;\n}\n\nfunction nadInterpolate(pin, ct) {\n  var t = {x: pin.x / ct.del[0], y: pin.y / ct.del[1]};\n  var indx = {x: Math.floor(t.x), y: Math.floor(t.y)};\n  var frct = {x: t.x - 1.0 * indx.x, y: t.y - 1.0 * indx.y};\n  var val= {x: Number.NaN, y: Number.NaN};\n  var inx;\n  if (indx.x < 0 || indx.x >= ct.lim[0]) {\n    return val;\n  }\n  if (indx.y < 0 || indx.y >= ct.lim[1]) {\n    return val;\n  }\n  inx = (indx.y * ct.lim[0]) + indx.x;\n  var f00 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  inx++;\n  var f10= {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  inx += ct.lim[0];\n  var f11 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  inx--;\n  var f01 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  var m11 = frct.x * frct.y, m10 = frct.x * (1.0 - frct.y),\n    m00 = (1.0 - frct.x) * (1.0 - frct.y), m01 = (1.0 - frct.x) * frct.y;\n  val.x = (m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x);\n  val.y = (m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y);\n  return val;\n}\n","export default function(crs, denorm, point) {\n  var xin = point.x,\n    yin = point.y,\n    zin = point.z || 0.0;\n  var v, t, i;\n  var out = {};\n  for (i = 0; i < 3; i++) {\n    if (denorm && i === 2 && point.z === undefined) {\n      continue;\n    }\n    if (i === 0) {\n      v = xin;\n      if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n        t = 'x';\n      } else {\n        t = 'y';\n      }\n\n    }\n    else if (i === 1) {\n      v = yin;\n      if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n        t = 'y';\n      } else {\n        t = 'x';\n      }\n    }\n    else {\n      v = zin;\n      t = 'z';\n    }\n    switch (crs.axis[i]) {\n    case 'e':\n      out[t] = v;\n      break;\n    case 'w':\n      out[t] = -v;\n      break;\n    case 'n':\n      out[t] = v;\n      break;\n    case 's':\n      out[t] = -v;\n      break;\n    case 'u':\n      if (point[t] !== undefined) {\n        out.z = v;\n      }\n      break;\n    case 'd':\n      if (point[t] !== undefined) {\n        out.z = -v;\n      }\n      break;\n    default:\n      //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n      return null;\n    }\n  }\n  return out;\n}\n","export default function (array){\n  var out = {\n    x: array[0],\n    y: array[1]\n  };\n  if (array.length>2) {\n    out.z = array[2];\n  }\n  if (array.length>3) {\n    out.m = array[3];\n  }\n  return out;\n}","export default function (point) {\n  checkCoord(point.x);\n  checkCoord(point.y);\n}\nfunction checkCoord(num) {\n  if (typeof Number.isFinite === 'function') {\n    if (Number.isFinite(num)) {\n      return;\n    }\n    throw new TypeError('coordinates must be finite numbers');\n  }\n  if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n    throw new TypeError('coordinates must be finite numbers');\n  }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n  return (\n    (source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM || source.datum.datum_type === PJD_GRIDSHIFT) && dest.datumCode !== 'WGS84') ||\n    ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM || dest.datum.datum_type === PJD_GRIDSHIFT) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point, enforceAxis) {\n  var wgs84;\n  if (Array.isArray(point)) {\n    point = toPoint(point);\n  } else {\n    // Clone the point object so inputs don't get modified\n    point = {\n      x: point.x,\n      y: point.y,\n      z: point.z,\n      m: point.m\n    };\n  }\n  var hasZ = point.z !== undefined;\n  checkSanity(point);\n  // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n  if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n    wgs84 = new proj('WGS84');\n    point = transform(source, wgs84, point, enforceAxis);\n    source = wgs84;\n  }\n  // DGR, 2010/11/12\n  if (enforceAxis && source.axis !== 'enu') {\n    point = adjust_axis(source, false, point);\n  }\n  // Transform source points to long/lat, if they aren't already.\n  if (source.projName === 'longlat') {\n    point = {\n      x: point.x * D2R,\n      y: point.y * D2R,\n      z: point.z || 0\n    };\n  } else {\n    if (source.to_meter) {\n      point = {\n        x: point.x * source.to_meter,\n        y: point.y * source.to_meter,\n        z: point.z || 0\n      };\n    }\n    point = source.inverse(point); // Convert Cartesian to longlat\n    if (!point) {\n      return;\n    }\n  }\n  // Adjust for the prime meridian if necessary\n  if (source.from_greenwich) {\n    point.x += source.from_greenwich;\n  }\n\n  // Convert datums if needed, and if possible.\n  point = datum_transform(source.datum, dest.datum, point);\n  if (!point) {\n    return;\n  }\n\n  // Adjust for the prime meridian if necessary\n  if (dest.from_greenwich) {\n    point = {\n      x: point.x - dest.from_greenwich,\n      y: point.y,\n      z: point.z || 0\n    };\n  }\n\n  if (dest.projName === 'longlat') {\n    // convert radians to decimal degrees\n    point = {\n      x: point.x * R2D,\n      y: point.y * R2D,\n      z: point.z || 0\n    };\n  } else { // else project\n    point = dest.forward(point);\n    if (dest.to_meter) {\n      point = {\n        x: point.x / dest.to_meter,\n        y: point.y / dest.to_meter,\n        z: point.z || 0\n      };\n    }\n  }\n\n  // DGR, 2010/11/12\n  if (enforceAxis && dest.axis !== 'enu') {\n    return adjust_axis(dest, true, point);\n  }\n\n  if (point && !hasZ) {\n    delete point.z;\n  }\n  return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords, enforceAxis) {\n  var transformedArray, out, keys;\n  if (Array.isArray(coords)) {\n    transformedArray = transform(from, to, coords, enforceAxis) || {x: NaN, y: NaN};\n    if (coords.length > 2) {\n      if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n        if (typeof transformedArray.z === 'number') {\n          return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.slice(3));\n        } else {\n          return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.slice(3));\n        }\n      } else {\n        return [transformedArray.x, transformedArray.y].concat(coords.slice(2));\n      }\n    } else {\n      return [transformedArray.x, transformedArray.y];\n    }\n  } else {\n    out = transform(from, to, coords, enforceAxis);\n    keys = Object.keys(coords);\n    if (keys.length === 2) {\n      return out;\n    }\n    keys.forEach(function (key) {\n      if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n        if (key === 'x' || key === 'y' || key === 'z') {\n          return;\n        }\n      } else {\n        if (key === 'x' || key === 'y') {\n          return;\n        }\n      }\n      out[key] = coords[key];\n    });\n    return out;\n  }\n}\n\nfunction checkProj(item) {\n  if (item instanceof proj) {\n    return item;\n  }\n  if (item.oProj) {\n    return item.oProj;\n  }\n  return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n  fromProj = checkProj(fromProj);\n  var single = false;\n  var obj;\n  if (typeof toProj === 'undefined') {\n    toProj = fromProj;\n    fromProj = wgs84;\n    single = true;\n  } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n    coord = toProj;\n    toProj = fromProj;\n    fromProj = wgs84;\n    single = true;\n  }\n  toProj = checkProj(toProj);\n  if (coord) {\n    return transformer(fromProj, toProj, coord);\n  } else {\n    obj = {\n      forward: function (coords, enforceAxis) {\n        return transformer(fromProj, toProj, coords, enforceAxis);\n      },\n      inverse: function (coords, enforceAxis) {\n        return transformer(toProj, fromProj, coords, enforceAxis);\n      }\n    };\n    if (single) {\n      obj.oProj = toProj;\n    }\n    return obj;\n  }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n  forward: forward,\n  inverse: inverse,\n  toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n *     WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n *      100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n  accuracy = accuracy || 5; // default accuracy 1m\n  return encode(LLtoUTM({\n    lat: ll[1],\n    lon: ll[0]\n  }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n *     (longitude) and top (latitude) values in WGS84, representing the\n *     bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n  if (bbox.lat && bbox.lon) {\n    return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n  }\n  return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n  if (bbox.lat && bbox.lon) {\n    return [bbox.lon, bbox.lat];\n  }\n  return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n  return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n  return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n *     representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n *     northing, zoneNumber and zoneLetter properties, and an optional\n *     accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n  var Lat = ll.lat;\n  var Long = ll.lon;\n  var a = 6378137.0; //ellip.radius;\n  var eccSquared = 0.00669438; //ellip.eccsq;\n  var k0 = 0.9996;\n  var LongOrigin;\n  var eccPrimeSquared;\n  var N, T, C, A, M;\n  var LatRad = degToRad(Lat);\n  var LongRad = degToRad(Long);\n  var LongOriginRad;\n  var ZoneNumber;\n  // (int)\n  ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n  //Make sure the longitude 180.00 is in Zone 60\n  if (Long === 180) {\n    ZoneNumber = 60;\n  }\n\n  // Special zone for Norway\n  if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n    ZoneNumber = 32;\n  }\n\n  // Special zones for Svalbard\n  if (Lat >= 72.0 && Lat < 84.0) {\n    if (Long >= 0.0 && Long < 9.0) {\n      ZoneNumber = 31;\n    }\n    else if (Long >= 9.0 && Long < 21.0) {\n      ZoneNumber = 33;\n    }\n    else if (Long >= 21.0 && Long < 33.0) {\n      ZoneNumber = 35;\n    }\n    else if (Long >= 33.0 && Long < 42.0) {\n      ZoneNumber = 37;\n    }\n  }\n\n  LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n  // in middle of\n  // zone\n  LongOriginRad = degToRad(LongOrigin);\n\n  eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n  N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n  T = Math.tan(LatRad) * Math.tan(LatRad);\n  C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n  A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n  M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n  var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n  var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n  if (Lat < 0.0) {\n    UTMNorthing += 10000000.0; //10000000 meter offset for\n    // southern hemisphere\n  }\n\n  return {\n    northing: Math.round(UTMNorthing),\n    easting: Math.round(UTMEasting),\n    zoneNumber: ZoneNumber,\n    zoneLetter: getLetterDesignator(Lat)\n  };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n *     and zoneLetter properties. If an optional accuracy property is\n *     provided (in meters), a bounding box will be returned instead of\n *     latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n *     (if no accuracy was provided), or top, right, bottom and left values\n *     for the bounding box calculated according to the provided accuracy.\n *     Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n  var UTMNorthing = utm.northing;\n  var UTMEasting = utm.easting;\n  var zoneLetter = utm.zoneLetter;\n  var zoneNumber = utm.zoneNumber;\n  // check the ZoneNummber is valid\n  if (zoneNumber < 0 || zoneNumber > 60) {\n    return null;\n  }\n\n  var k0 = 0.9996;\n  var a = 6378137.0; //ellip.radius;\n  var eccSquared = 0.00669438; //ellip.eccsq;\n  var eccPrimeSquared;\n  var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n  var N1, T1, C1, R1, D, M;\n  var LongOrigin;\n  var mu, phi1Rad;\n\n  // remove 500,000 meter offset for longitude\n  var x = UTMEasting - 500000.0;\n  var y = UTMNorthing;\n\n  // We must know somehow if we are in the Northern or Southern\n  // hemisphere, this is the only time we use the letter So even\n  // if the Zone letter isn't exactly correct it should indicate\n  // the hemisphere correctly\n  if (zoneLetter < 'N') {\n    y -= 10000000.0; // remove 10,000,000 meter offset used\n    // for southern hemisphere\n  }\n\n  // There are 60 zones with zone 1 being at West -180 to -174\n  LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n  // in middle of\n  // zone\n\n  eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n  M = y / k0;\n  mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n  phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n  // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n  N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n  T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n  C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n  R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n  D = x / (N1 * k0);\n\n  var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n  lat = radToDeg(lat);\n\n  var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n  lon = LongOrigin + radToDeg(lon);\n\n  var result;\n  if (utm.accuracy) {\n    var topRight = UTMtoLL({\n      northing: utm.northing + utm.accuracy,\n      easting: utm.easting + utm.accuracy,\n      zoneLetter: utm.zoneLetter,\n      zoneNumber: utm.zoneNumber\n    });\n    result = {\n      top: topRight.lat,\n      right: topRight.lon,\n      bottom: lat,\n      left: lon\n    };\n  }\n  else {\n    result = {\n      lat: lat,\n      lon: lon\n    };\n  }\n  return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n *     for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n  //This is here as an error flag to show that the Latitude is\n  //outside MGRS limits\n  var LetterDesignator = 'Z';\n\n  if ((84 >= lat) && (lat >= 72)) {\n    LetterDesignator = 'X';\n  }\n  else if ((72 > lat) && (lat >= 64)) {\n    LetterDesignator = 'W';\n  }\n  else if ((64 > lat) && (lat >= 56)) {\n    LetterDesignator = 'V';\n  }\n  else if ((56 > lat) && (lat >= 48)) {\n    LetterDesignator = 'U';\n  }\n  else if ((48 > lat) && (lat >= 40)) {\n    LetterDesignator = 'T';\n  }\n  else if ((40 > lat) && (lat >= 32)) {\n    LetterDesignator = 'S';\n  }\n  else if ((32 > lat) && (lat >= 24)) {\n    LetterDesignator = 'R';\n  }\n  else if ((24 > lat) && (lat >= 16)) {\n    LetterDesignator = 'Q';\n  }\n  else if ((16 > lat) && (lat >= 8)) {\n    LetterDesignator = 'P';\n  }\n  else if ((8 > lat) && (lat >= 0)) {\n    LetterDesignator = 'N';\n  }\n  else if ((0 > lat) && (lat >= -8)) {\n    LetterDesignator = 'M';\n  }\n  else if ((-8 > lat) && (lat >= -16)) {\n    LetterDesignator = 'L';\n  }\n  else if ((-16 > lat) && (lat >= -24)) {\n    LetterDesignator = 'K';\n  }\n  else if ((-24 > lat) && (lat >= -32)) {\n    LetterDesignator = 'J';\n  }\n  else if ((-32 > lat) && (lat >= -40)) {\n    LetterDesignator = 'H';\n  }\n  else if ((-40 > lat) && (lat >= -48)) {\n    LetterDesignator = 'G';\n  }\n  else if ((-48 > lat) && (lat >= -56)) {\n    LetterDesignator = 'F';\n  }\n  else if ((-56 > lat) && (lat >= -64)) {\n    LetterDesignator = 'E';\n  }\n  else if ((-64 > lat) && (lat >= -72)) {\n    LetterDesignator = 'D';\n  }\n  else if ((-72 > lat) && (lat >= -80)) {\n    LetterDesignator = 'C';\n  }\n  return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n *     zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n  // prepend with leading zeroes\n  var seasting = \"00000\" + utm.easting,\n    snorthing = \"00000\" + utm.northing;\n\n  return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n  var setParm = get100kSetForZone(zoneNumber);\n  var setColumn = Math.floor(easting / 100000);\n  var setRow = Math.floor(northing / 100000) % 20;\n  return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n  var setParm = i % NUM_100K_SETS;\n  if (setParm === 0) {\n    setParm = NUM_100K_SETS;\n  }\n\n  return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n *        100k set spreadsheet, created from the UTM easting.\n *        Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n *        spreadsheet, created from the UTM northing value. Values\n *        are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n *        spreadsheet, created from the UTM zone. Values are from\n *        1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n  // colOrigin and rowOrigin are the letters at the origin of the set\n  var index = parm - 1;\n  var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n  var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n  // colInt and rowInt are the letters to build to return\n  var colInt = colOrigin + column - 1;\n  var rowInt = rowOrigin + row;\n  var rollover = false;\n\n  if (colInt > Z) {\n    colInt = colInt - Z + A - 1;\n    rollover = true;\n  }\n\n  if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n    colInt++;\n  }\n\n  if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n    colInt++;\n\n    if (colInt === I) {\n      colInt++;\n    }\n  }\n\n  if (colInt > Z) {\n    colInt = colInt - Z + A - 1;\n  }\n\n  if (rowInt > V) {\n    rowInt = rowInt - V + A - 1;\n    rollover = true;\n  }\n  else {\n    rollover = false;\n  }\n\n  if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n    rowInt++;\n  }\n\n  if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n    rowInt++;\n\n    if (rowInt === I) {\n      rowInt++;\n    }\n  }\n\n  if (rowInt > V) {\n    rowInt = rowInt - V + A - 1;\n  }\n\n  var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n  return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n *     zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n  if (mgrsString && mgrsString.length === 0) {\n    throw (\"MGRSPoint coverting from nothing\");\n  }\n\n  var length = mgrsString.length;\n\n  var hunK = null;\n  var sb = \"\";\n  var testChar;\n  var i = 0;\n\n  // get Zone number\n  while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n    if (i >= 2) {\n      throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n    }\n    sb += testChar;\n    i++;\n  }\n\n  var zoneNumber = parseInt(sb, 10);\n\n  if (i === 0 || i + 3 > length) {\n    // A good MGRS string has to be 4-5 digits long,\n    // ##AAA/#AAA at least.\n    throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n  }\n\n  var zoneLetter = mgrsString.charAt(i++);\n\n  // Should we check the zone letter here? Why not.\n  if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n    throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n  }\n\n  hunK = mgrsString.substring(i, i += 2);\n\n  var set = get100kSetForZone(zoneNumber);\n\n  var east100k = getEastingFromChar(hunK.charAt(0), set);\n  var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n  // We have a bug where the northing may be 2000000 too low.\n  // How\n  // do we know when to roll over?\n\n  while (north100k < getMinNorthing(zoneLetter)) {\n    north100k += 2000000;\n  }\n\n  // calculate the char index for easting/northing separator\n  var remainder = length - i;\n\n  if (remainder % 2 !== 0) {\n    throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n  }\n\n  var sep = remainder / 2;\n\n  var sepEasting = 0.0;\n  var sepNorthing = 0.0;\n  var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n  if (sep > 0) {\n    accuracyBonus = 100000.0 / Math.pow(10, sep);\n    sepEastingString = mgrsString.substring(i, i + sep);\n    sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n    sepNorthingString = mgrsString.substring(i + sep);\n    sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n  }\n\n  easting = sepEasting + east100k;\n  northing = sepNorthing + north100k;\n\n  return {\n    easting: easting,\n    northing: northing,\n    zoneLetter: zoneLetter,\n    zoneNumber: zoneNumber,\n    accuracy: accuracyBonus\n  };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n  // colOrigin is the letter at the origin of the set for the\n  // column\n  var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n  var eastingValue = 100000.0;\n  var rewindMarker = false;\n\n  while (curCol !== e.charCodeAt(0)) {\n    curCol++;\n    if (curCol === I) {\n      curCol++;\n    }\n    if (curCol === O) {\n      curCol++;\n    }\n    if (curCol > Z) {\n      if (rewindMarker) {\n        throw (\"Bad character: \" + e);\n      }\n      curCol = A;\n      rewindMarker = true;\n    }\n    eastingValue += 100000.0;\n  }\n\n  return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n *     UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n  if (n > 'V') {\n    throw (\"MGRSPoint given invalid Northing \" + n);\n  }\n\n  // rowOrigin is the letter at the origin of the set for the\n  // column\n  var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n  var northingValue = 0.0;\n  var rewindMarker = false;\n\n  while (curRow !== n.charCodeAt(0)) {\n    curRow++;\n    if (curRow === I) {\n      curRow++;\n    }\n    if (curRow === O) {\n      curRow++;\n    }\n    // fixing a bug making whole application hang in this loop\n    // when 'n' is a wrong character\n    if (curRow > V) {\n      if (rewindMarker) { // making sure that this loop ends\n        throw (\"Bad character: \" + n);\n      }\n      curRow = A;\n      rewindMarker = true;\n    }\n    northingValue += 100000.0;\n  }\n\n  return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n  var northing;\n  switch (zoneLetter) {\n  case 'C':\n    northing = 1100000.0;\n    break;\n  case 'D':\n    northing = 2000000.0;\n    break;\n  case 'E':\n    northing = 2800000.0;\n    break;\n  case 'F':\n    northing = 3700000.0;\n    break;\n  case 'G':\n    northing = 4600000.0;\n    break;\n  case 'H':\n    northing = 5500000.0;\n    break;\n  case 'J':\n    northing = 6400000.0;\n    break;\n  case 'K':\n    northing = 7300000.0;\n    break;\n  case 'L':\n    northing = 8200000.0;\n    break;\n  case 'M':\n    northing = 9100000.0;\n    break;\n  case 'N':\n    northing = 0.0;\n    break;\n  case 'P':\n    northing = 800000.0;\n    break;\n  case 'Q':\n    northing = 1700000.0;\n    break;\n  case 'R':\n    northing = 2600000.0;\n    break;\n  case 'S':\n    northing = 3500000.0;\n    break;\n  case 'T':\n    northing = 4400000.0;\n    break;\n  case 'U':\n    northing = 5300000.0;\n    break;\n  case 'V':\n    northing = 6200000.0;\n    break;\n  case 'W':\n    northing = 7000000.0;\n    break;\n  case 'X':\n    northing = 7900000.0;\n    break;\n  default:\n    northing = -1.0;\n  }\n  if (northing >= 0.0) {\n    return northing;\n  }\n  else {\n    throw (\"Invalid zone letter: \" + zoneLetter);\n  }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n  if (!(this instanceof Point)) {\n    return new Point(x, y, z);\n  }\n  if (Array.isArray(x)) {\n    this.x = x[0];\n    this.y = x[1];\n    this.z = x[2] || 0.0;\n  } else if(typeof x === 'object') {\n    this.x = x.x;\n    this.y = x.y;\n    this.z = x.z || 0.0;\n  } else if (typeof x === 'string' && typeof y === 'undefined') {\n    var coords = x.split(',');\n    this.x = parseFloat(coords[0], 10);\n    this.y = parseFloat(coords[1], 10);\n    this.z = parseFloat(coords[2], 10) || 0.0;\n  } else {\n    this.x = x;\n    this.y = y;\n    this.z = z || 0.0;\n  }\n  console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n  return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n  return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n  var en = [];\n  en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n  en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n  var t = es * es;\n  en[2] = t * (C44 - es * (C46 + es * C48));\n  t *= es;\n  en[3] = t * (C66 - es * C68);\n  en[4] = t * es * C88;\n  return en;\n}","export default function(phi, sphi, cphi, en) {\n  cphi *= sphi;\n  sphi *= sphi;\n  return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n  var k = 1 / (1 - es);\n  var phi = arg;\n  for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n    var s = Math.sin(phi);\n    var t = 1 - es * s * s;\n    //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n    //phi -= t * (t * Math.sqrt(t)) * k;\n    t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n    phi -= t;\n    if (Math.abs(t) < EPSLN) {\n      return phi;\n    }\n  }\n  //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n  return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n  this.x0 = this.x0 !== undefined ? this.x0 : 0;\n  this.y0 = this.y0 !== undefined ? this.y0 : 0;\n  this.long0 = this.long0 !== undefined ? this.long0 : 0;\n  this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n  if (this.es) {\n    this.en = pj_enfn(this.es);\n    this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n  }\n}\n\n/**\n    Transverse Mercator Forward  - long/lat to x/y\n    long/lat in radians\n  */\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n\n  var delta_lon = adjust_lon(lon - this.long0);\n  var con;\n  var x, y;\n  var sin_phi = Math.sin(lat);\n  var cos_phi = Math.cos(lat);\n\n  if (!this.es) {\n    var b = cos_phi * Math.sin(delta_lon);\n\n    if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n      return (93);\n    }\n    else {\n      x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n      y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n      b = Math.abs(y);\n\n      if (b >= 1) {\n        if ((b - 1) > EPSLN) {\n          return (93);\n        }\n        else {\n          y = 0;\n        }\n      }\n      else {\n        y = Math.acos(y);\n      }\n\n      if (lat < 0) {\n        y = -y;\n      }\n\n      y = this.a * this.k0 * (y - this.lat0) + this.y0;\n    }\n  }\n  else {\n    var al = cos_phi * delta_lon;\n    var als = Math.pow(al, 2);\n    var c = this.ep2 * Math.pow(cos_phi, 2);\n    var cs = Math.pow(c, 2);\n    var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n    var t = Math.pow(tq, 2);\n    var ts = Math.pow(t, 2);\n    con = 1 - this.es * Math.pow(sin_phi, 2);\n    al = al / Math.sqrt(con);\n    var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n    x = this.a * (this.k0 * al * (1 +\n      als / 6 * (1 - t + c +\n      als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n      als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n      this.x0;\n\n    y = this.a * (this.k0 * (ml - this.ml0 +\n      sin_phi * delta_lon * al / 2 * (1 +\n      als / 12 * (5 - t + 9 * c + 4 * cs +\n      als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n      als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n      this.y0;\n  }\n\n  p.x = x;\n  p.y = y;\n\n  return p;\n}\n\n/**\n    Transverse Mercator Inverse  -  x/y to long/lat\n  */\nexport function inverse(p) {\n  var con, phi;\n  var lat, lon;\n  var x = (p.x - this.x0) * (1 / this.a);\n  var y = (p.y - this.y0) * (1 / this.a);\n\n  if (!this.es) {\n    var f = Math.exp(x / this.k0);\n    var g = 0.5 * (f - 1 / f);\n    var temp = this.lat0 + y / this.k0;\n    var h = Math.cos(temp);\n    con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n    lat = Math.asin(con);\n\n    if (y < 0) {\n      lat = -lat;\n    }\n\n    if ((g === 0) && (h === 0)) {\n      lon = 0;\n    }\n    else {\n      lon = adjust_lon(Math.atan2(g, h) + this.long0);\n    }\n  }\n  else { // ellipsoidal form\n    con = this.ml0 + y / this.k0;\n    phi = pj_inv_mlfn(con, this.es, this.en);\n\n    if (Math.abs(phi) < HALF_PI) {\n      var sin_phi = Math.sin(phi);\n      var cos_phi = Math.cos(phi);\n      var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n      var c = this.ep2 * Math.pow(cos_phi, 2);\n      var cs = Math.pow(c, 2);\n      var t = Math.pow(tan_phi, 2);\n      var ts = Math.pow(t, 2);\n      con = 1 - this.es * Math.pow(sin_phi, 2);\n      var d = x * Math.sqrt(con) / this.k0;\n      var ds = Math.pow(d, 2);\n      con = con * tan_phi;\n\n      lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n        ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n        ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n        ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n      lon = adjust_lon(this.long0 + (d * (1 -\n        ds / 6 * (1 + 2 * t + c -\n        ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n        ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n    }\n    else {\n      lat = HALF_PI * sign(y);\n      lon = 0;\n    }\n  }\n\n  p.x = lon;\n  p.y = lat;\n\n  return p;\n}\n\nexport var names = [\"Fast_Transverse_Mercator\", \"Fast Transverse Mercator\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export default function(x) {\n  var r = Math.exp(x);\n  r = (r - 1 / r) / 2;\n  return r;\n}","export default function(x, y) {\n  x = Math.abs(x);\n  y = Math.abs(y);\n  var a = Math.max(x, y);\n  var b = Math.min(x, y) / (a ? a : 1);\n\n  return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","export default function(x) {\n  var y = 1 + x;\n  var z = y - 1;\n\n  return z === 0 ? x : x * Math.log(y) / z;\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n  var y = Math.abs(x);\n  y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n  return x < 0 ? -y : y;\n}\n","export default function(pp, B) {\n  var cos_2B = 2 * Math.cos(2 * B);\n  var i = pp.length - 1;\n  var h1 = pp[i];\n  var h2 = 0;\n  var h;\n\n  while (--i >= 0) {\n    h = -h2 + cos_2B * h1 + pp[i];\n    h2 = h1;\n    h1 = h;\n  }\n\n  return (B + h * Math.sin(2 * B));\n}\n","export default function(pp, arg_r) {\n  var r = 2 * Math.cos(arg_r);\n  var i = pp.length - 1;\n  var hr1 = pp[i];\n  var hr2 = 0;\n  var hr;\n\n  while (--i >= 0) {\n    hr = -hr2 + r * hr1 + pp[i];\n    hr2 = hr1;\n    hr1 = hr;\n  }\n\n  return Math.sin(arg_r) * hr;\n}\n","export default function(x) {\n  var r = Math.exp(x);\n  r = (r + 1 / r) / 2;\n  return r;\n}","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n  var sin_arg_r = Math.sin(arg_r);\n  var cos_arg_r = Math.cos(arg_r);\n  var sinh_arg_i = sinh(arg_i);\n  var cosh_arg_i = cosh(arg_i);\n  var r = 2 * cos_arg_r * cosh_arg_i;\n  var i = -2 * sin_arg_r * sinh_arg_i;\n  var j = pp.length - 1;\n  var hr = pp[j];\n  var hi1 = 0;\n  var hr1 = 0;\n  var hi = 0;\n  var hr2;\n  var hi2;\n\n  while (--j >= 0) {\n    hr2 = hr1;\n    hi2 = hi1;\n    hr1 = hr;\n    hi1 = hi;\n    hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n    hi = -hi2 + i * hr1 + r * hi1;\n  }\n\n  r = sin_arg_r * cosh_arg_i;\n  i = cos_arg_r * sinh_arg_i;\n\n  return [r * hr - i * hi, r * hi + i * hr];\n}\n","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport tmerc from '../projections/tmerc';\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n  if (!this.approx && (isNaN(this.es) || this.es <= 0)) {\n    throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');\n  }\n  if (this.approx) {\n    // When '+approx' is set, use tmerc instead\n    tmerc.init.apply(this);\n    this.forward = tmerc.forward;\n    this.inverse = tmerc.inverse;\n  }\n\n  this.x0 = this.x0 !== undefined ? this.x0 : 0;\n  this.y0 = this.y0 !== undefined ? this.y0 : 0;\n  this.long0 = this.long0 !== undefined ? this.long0 : 0;\n  this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n  this.cgb = [];\n  this.cbg = [];\n  this.utg = [];\n  this.gtu = [];\n\n  var f = this.es / (1 + Math.sqrt(1 - this.es));\n  var n = f / (2 - f);\n  var np = n;\n\n  this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n  this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n  np = np * n;\n  this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n  this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n  np = np * n;\n  this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n  this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n  np = np * n;\n  this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n  this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n  np = np * n;\n  this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n  this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n  np = np * n;\n  this.cgb[5] = np * (601676 / 22275);\n  this.cbg[5] = np * (444337 / 155925);\n\n  np = Math.pow(n, 2);\n  this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n  this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n  this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n  this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n  this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n  np = np * n;\n  this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n  this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n  np = np * n;\n  this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n  this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n  np = np * n;\n  this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n  this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n  np = np * n;\n  this.utg[5] = np * (-20648693 / 638668800);\n  this.gtu[5] = np * (212378941 / 319334400);\n\n  var Z = gatg(this.cbg, this.lat0);\n  this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n  var Ce = adjust_lon(p.x - this.long0);\n  var Cn = p.y;\n\n  Cn = gatg(this.cbg, Cn);\n  var sin_Cn = Math.sin(Cn);\n  var cos_Cn = Math.cos(Cn);\n  var sin_Ce = Math.sin(Ce);\n  var cos_Ce = Math.cos(Ce);\n\n  Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n  Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n  Ce = asinhy(Math.tan(Ce));\n\n  var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n  Cn = Cn + tmp[0];\n  Ce = Ce + tmp[1];\n\n  var x;\n  var y;\n\n  if (Math.abs(Ce) <= 2.623395162778) {\n    x = this.a * (this.Qn * Ce) + this.x0;\n    y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n  }\n  else {\n    x = Infinity;\n    y = Infinity;\n  }\n\n  p.x = x;\n  p.y = y;\n\n  return p;\n}\n\nexport function inverse(p) {\n  var Ce = (p.x - this.x0) * (1 / this.a);\n  var Cn = (p.y - this.y0) * (1 / this.a);\n\n  Cn = (Cn - this.Zb) / this.Qn;\n  Ce = Ce / this.Qn;\n\n  var lon;\n  var lat;\n\n  if (Math.abs(Ce) <= 2.623395162778) {\n    var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n    Cn = Cn + tmp[0];\n    Ce = Ce + tmp[1];\n    Ce = Math.atan(sinh(Ce));\n\n    var sin_Cn = Math.sin(Cn);\n    var cos_Cn = Math.cos(Cn);\n    var sin_Ce = Math.sin(Ce);\n    var cos_Ce = Math.cos(Ce);\n\n    Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n    Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n    lon = adjust_lon(Ce + this.long0);\n    lat = gatg(this.cgb, Cn);\n  }\n  else {\n    lon = Infinity;\n    lat = Infinity;\n  }\n\n  p.x = lon;\n  p.y = lat;\n\n  return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\", \"Transverse_Mercator\", \"Transverse Mercator\", \"Gauss Kruger\", \"Gauss_Kruger\", \"tmerc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n  if (zone === undefined) {\n    zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n    if (zone < 0) {\n      return 0;\n    } else if (zone > 60) {\n      return 60;\n    }\n  }\n  return zone;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n  var zone = adjust_zone(this.zone, this.long0);\n  if (zone === undefined) {\n    throw new Error('unknown utm zone');\n  }\n  this.lat0 = 0;\n  this.long0 =  ((6 * Math.abs(zone)) - 183) * D2R;\n  this.x0 = 500000;\n  this.y0 = this.utmSouth ? 10000000 : 0;\n  this.k0 = 0.9996;\n\n  etmerc.init.apply(this);\n  this.forward = etmerc.forward;\n  this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n  init: init,\n  names: names,\n  dependsOn: dependsOn\n};\n","export default function(esinp, exp) {\n  return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n  var sphi = Math.sin(this.lat0);\n  var cphi = Math.cos(this.lat0);\n  cphi *= cphi;\n  this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n  this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n  this.phic0 = Math.asin(sphi / this.C);\n  this.ratexp = 0.5 * this.C * this.e;\n  this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n\n  p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n  p.x = this.C * lon;\n  return p;\n}\n\nexport function inverse(p) {\n  var DEL_TOL = 1e-14;\n  var lon = p.x / this.C;\n  var lat = p.y;\n  var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n  for (var i = MAX_ITER; i > 0; --i) {\n    lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n    if (Math.abs(lat - p.y) < DEL_TOL) {\n      break;\n    }\n    p.y = lat;\n  }\n  /* convergence failed */\n  if (!i) {\n    return null;\n  }\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\nimport hypot from '../common/hypot';\n\nexport function init() {\n  gauss.init.apply(this);\n  if (!this.rc) {\n    return;\n  }\n  this.sinc0 = Math.sin(this.phic0);\n  this.cosc0 = Math.cos(this.phic0);\n  this.R2 = 2 * this.rc;\n  if (!this.title) {\n    this.title = \"Oblique Stereographic Alternative\";\n  }\n}\n\nexport function forward(p) {\n  var sinc, cosc, cosl, k;\n  p.x = adjust_lon(p.x - this.long0);\n  gauss.forward.apply(this, [p]);\n  sinc = Math.sin(p.y);\n  cosc = Math.cos(p.y);\n  cosl = Math.cos(p.x);\n  k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n  p.x = k * cosc * Math.sin(p.x);\n  p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n  p.x = this.a * p.x + this.x0;\n  p.y = this.a * p.y + this.y0;\n  return p;\n}\n\nexport function inverse(p) {\n  var sinc, cosc, lon, lat, rho;\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  p.x /= this.k0;\n  p.y /= this.k0;\n  if ((rho = hypot(p.x, p.y))) {\n    var c = 2 * Math.atan2(rho, this.R2);\n    sinc = Math.sin(c);\n    cosc = Math.cos(c);\n    lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n    lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n  }\n  else {\n    lat = this.phic0;\n    lon = 0;\n  }\n\n  p.x = lon;\n  p.y = lat;\n  gauss.inverse.apply(this, [p]);\n  p.x = adjust_lon(p.x + this.long0);\n  return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n  sinphi *= eccen;\n  return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n\n  // setting default parameters\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  this.lat0 = this.lat0 || 0;\n  this.long0 = this.long0 || 0;\n\n  this.coslat0 = Math.cos(this.lat0);\n  this.sinlat0 = Math.sin(this.lat0);\n  if (this.sphere) {\n    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n      this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n    }\n  }\n  else {\n    if (Math.abs(this.coslat0) <= EPSLN) {\n      if (this.lat0 > 0) {\n        //North pole\n        //trace('stere:north pole');\n        this.con = 1;\n      }\n      else {\n        //South pole\n        //trace('stere:south pole');\n        this.con = -1;\n      }\n    }\n    this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN && Math.abs(Math.cos(this.lat_ts)) > EPSLN) {\n      // When k0 is 1 (default value) and lat_ts is a vaild number and lat0 is at a pole and lat_ts is not at a pole\n      // Recalculate k0 using formula 21-35 from p161 of Snyder, 1987\n      this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n    }\n    this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n    this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n    this.cosX0 = Math.cos(this.X0);\n    this.sinX0 = Math.sin(this.X0);\n  }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var sinlat = Math.sin(lat);\n  var coslat = Math.cos(lat);\n  var A, X, sinX, cosX, ts, rh;\n  var dlon = adjust_lon(lon - this.long0);\n\n  if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n    //case of the origine point\n    //trace('stere:this is the origin point');\n    p.x = NaN;\n    p.y = NaN;\n    return p;\n  }\n  if (this.sphere) {\n    //trace('stere:sphere case');\n    A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n    p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n    p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n    return p;\n  }\n  else {\n    X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n    cosX = Math.cos(X);\n    sinX = Math.sin(X);\n    if (Math.abs(this.coslat0) <= EPSLN) {\n      ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n      rh = 2 * this.a * this.k0 * ts / this.cons;\n      p.x = this.x0 + rh * Math.sin(lon - this.long0);\n      p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n      //trace(p.toString());\n      return p;\n    }\n    else if (Math.abs(this.sinlat0) < EPSLN) {\n      //Eq\n      //trace('stere:equateur');\n      A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n      p.y = A * sinX;\n    }\n    else {\n      //other case\n      //trace('stere:normal case');\n      A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n      p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n    }\n    p.x = A * cosX * Math.sin(dlon) + this.x0;\n  }\n  //trace(p.toString());\n  return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var lon, lat, ts, ce, Chi;\n  var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n  if (this.sphere) {\n    var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n    lon = this.long0;\n    lat = this.lat0;\n    if (rh <= EPSLN) {\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n    lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n    if (Math.abs(this.coslat0) < EPSLN) {\n      if (this.lat0 > 0) {\n        lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n      }\n      else {\n        lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n      }\n    }\n    else {\n      lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n    }\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  else {\n    if (Math.abs(this.coslat0) <= EPSLN) {\n      if (rh <= EPSLN) {\n        lat = this.lat0;\n        lon = this.long0;\n        p.x = lon;\n        p.y = lat;\n        //trace(p.toString());\n        return p;\n      }\n      p.x *= this.con;\n      p.y *= this.con;\n      ts = rh * this.cons / (2 * this.a * this.k0);\n      lat = this.con * phi2z(this.e, ts);\n      lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n    }\n    else {\n      ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n      lon = this.long0;\n      if (rh <= EPSLN) {\n        Chi = this.X0;\n      }\n      else {\n        Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n        lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n      }\n      lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n    }\n  }\n  p.x = lon;\n  p.y = lat;\n\n  //trace(p.toString());\n  return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\", \"Polar_Stereographic\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names,\n  ssfn_: ssfn_\n};\n","/*\n  references:\n    Formules et constantes pour le Calcul pour la\n    projection cylindrique conforme à axe oblique et pour la transformation entre\n    des systèmes de référence.\n    http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n  */\n\nexport function init() {\n  var phy0 = this.lat0;\n  this.lambda0 = this.long0;\n  var sinPhy0 = Math.sin(phy0);\n  var semiMajorAxis = this.a;\n  var invF = this.rf;\n  var flattening = 1 / invF;\n  var e2 = 2 * flattening - Math.pow(flattening, 2);\n  var e = this.e = Math.sqrt(e2);\n  this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n  this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n  this.b0 = Math.asin(sinPhy0 / this.alpha);\n  var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n  var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n  var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n  this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n  var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n  var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n  var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n  // spheric latitude\n  var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n  // spheric longitude\n  var I = this.alpha * (p.x - this.lambda0);\n\n  // psoeudo equatorial rotation\n  var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n  var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n  p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n  p.x = this.R * rotI + this.x0;\n  return p;\n}\n\nexport function inverse(p) {\n  var Y = p.x - this.x0;\n  var X = p.y - this.y0;\n\n  var rotI = Y / this.R;\n  var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n  var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n  var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n  var lambda = this.lambda0 + I / this.alpha;\n\n  var S = 0;\n  var phy = b;\n  var prevPhy = -1000;\n  var iteration = 0;\n  while (Math.abs(phy - prevPhy) > 0.0000001) {\n    if (++iteration > 20) {\n      //...reportError(\"omercFwdInfinity\");\n      return;\n    }\n    //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n    S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n    prevPhy = phy;\n    phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n  }\n\n  p.x = lambda;\n  p.y = phy;\n  return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport { D2R, EPSLN, HALF_PI, TWO_PI, FORTPI } from '../constants/values';\n\nvar TOL = 1e-7;\n\nfunction isTypeA(P) {\n  var typeAProjections = ['Hotine_Oblique_Mercator','Hotine_Oblique_Mercator_Azimuth_Natural_Origin'];\n  var projectionName = typeof P.PROJECTION === \"object\" ? Object.keys(P.PROJECTION)[0] : P.PROJECTION;\n  \n  return 'no_uoff' in P || 'no_off' in P || typeAProjections.indexOf(projectionName) !== -1;\n}\n\n\n/* Initialize the Oblique Mercator  projection\n    ------------------------------------------*/\nexport function init() {  \n  var con, com, cosph0, D, F, H, L, sinph0, p, J, gamma = 0,\n    gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0, AB;\n  \n  // only Type A uses the no_off or no_uoff property\n  // https://github.com/OSGeo/proj.4/issues/104\n  this.no_off = isTypeA(this);\n  this.no_rot = 'no_rot' in this;\n  \n  var alp = false;\n  if (\"alpha\" in this) {\n    alp = true;\n  }\n\n  var gam = false;\n  if (\"rectified_grid_angle\" in this) {\n    gam = true;\n  }\n\n  if (alp) {\n    alpha_c = this.alpha;\n  }\n  \n  if (gam) {\n    gamma = (this.rectified_grid_angle * D2R);\n  }\n  \n  if (alp || gam) {\n    lamc = this.longc;\n  } else {\n    lam1 = this.long1;\n    phi1 = this.lat1;\n    lam2 = this.long2;\n    phi2 = this.lat2;\n    \n    if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL ||\n        Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL ||\n        Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {\n      throw new Error();\n    }\n  }\n  \n  var one_es = 1.0 - this.es;\n  com = Math.sqrt(one_es);\n  \n  if (Math.abs(this.lat0) > EPSLN) {\n    sinph0 = Math.sin(this.lat0);\n    cosph0 = Math.cos(this.lat0);\n    con = 1 - this.es * sinph0 * sinph0;\n    this.B = cosph0 * cosph0;\n    this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);\n    this.A = this.B * this.k0 * com / con;\n    D = this.B * com / (cosph0 * Math.sqrt(con));\n    F = D * D -1;\n    \n    if (F <= 0) {\n      F = 0;\n    } else {\n      F = Math.sqrt(F);\n      if (this.lat0 < 0) {\n        F = -F;\n      }\n    }\n    \n    this.E = F += D;\n    this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);\n  } else {\n    this.B = 1 / com;\n    this.A = this.k0;\n    this.E = D = F = 1;\n  }\n  \n  if (alp || gam) {\n    if (alp) {\n      gamma0 = Math.asin(Math.sin(alpha_c) / D);\n      if (!gam) {\n        gamma = alpha_c;\n      }\n    } else {\n      gamma0 = gamma;\n      alpha_c = Math.asin(D * Math.sin(gamma0));\n    }\n    this.lam0 = lamc - Math.asin(0.5 * (F - 1 / F) * Math.tan(gamma0)) / this.B;\n  } else {\n    H = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);\n    L = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);\n    F = this.E / H;\n    p = (L - H) / (L + H);\n    J = this.E * this.E;\n    J = (J - L * H) / (J + L * H);\n    con = lam1 - lam2;\n    \n    if (con < -Math.pi) {\n      lam2 -=TWO_PI;\n    } else if (con > Math.pi) {\n      lam2 += TWO_PI;\n    }\n    \n    this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J * Math.tan(0.5 * this.B * (lam1 - lam2)) / p) / this.B);\n    gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F - 1 / F));\n    gamma = alpha_c = Math.asin(D * Math.sin(gamma0));\n  }\n  \n  this.singam = Math.sin(gamma0);\n  this.cosgam = Math.cos(gamma0);\n  this.sinrot = Math.sin(gamma);\n  this.cosrot = Math.cos(gamma);\n  \n  this.rB = 1 / this.B;\n  this.ArB = this.A * this.rB;\n  this.BrA = 1 / this.ArB;\n  AB = this.A * this.B;\n  \n  if (this.no_off) {\n    this.u_0 = 0;\n  } else {\n    this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D * D - 1) / Math.cos(alpha_c)));\n    \n    if (this.lat0 < 0) {\n      this.u_0 = - this.u_0;\n    }  \n  }\n    \n  F = 0.5 * gamma0;\n  this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F));\n  this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F));\n}\n\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n    ----------------------------------------------------------*/\nexport function forward(p) {\n  var coords = {};\n  var S, T, U, V, W, temp, u, v;\n  p.x = p.x - this.lam0;\n  \n  if (Math.abs(Math.abs(p.y) - HALF_PI) > EPSLN) {\n    W = this.E / Math.pow(tsfnz(this.e, p.y, Math.sin(p.y)), this.B);\n    \n    temp = 1 / W;\n    S = 0.5 * (W - temp);\n    T = 0.5 * (W + temp);\n    V = Math.sin(this.B * p.x);\n    U = (S * this.singam - V * this.cosgam) / T;\n        \n    if (Math.abs(Math.abs(U) - 1.0) < EPSLN) {\n      throw new Error();\n    }\n    \n    v = 0.5 * this.ArB * Math.log((1 - U)/(1 + U));\n    temp = Math.cos(this.B * p.x);\n    \n    if (Math.abs(temp) < TOL) {\n      u = this.A * p.x;\n    } else {\n      u = this.ArB * Math.atan2((S * this.cosgam + V * this.singam), temp);\n    }    \n  } else {\n    v = p.y > 0 ? this.v_pole_n : this.v_pole_s;\n    u = this.ArB * p.y;\n  }\n     \n  if (this.no_rot) {\n    coords.x = u;\n    coords.y = v;\n  } else {\n    u -= this.u_0;\n    coords.x = v * this.cosrot + u * this.sinrot;\n    coords.y = u * this.cosrot - v * this.sinrot;\n  }\n  \n  coords.x = (this.a * coords.x + this.x0);\n  coords.y = (this.a * coords.y + this.y0);\n  \n  return coords;\n}\n\nexport function inverse(p) {\n  var u, v, Qp, Sp, Tp, Vp, Up;\n  var coords = {};\n  \n  p.x = (p.x - this.x0) * (1.0 / this.a);\n  p.y = (p.y - this.y0) * (1.0 / this.a);\n\n  if (this.no_rot) {\n    v = p.y;\n    u = p.x;\n  } else {\n    v = p.x * this.cosrot - p.y * this.sinrot;\n    u = p.y * this.cosrot + p.x * this.sinrot + this.u_0;\n  }\n  \n  Qp = Math.exp(-this.BrA * v);\n  Sp = 0.5 * (Qp - 1 / Qp);\n  Tp = 0.5 * (Qp + 1 / Qp);\n  Vp = Math.sin(this.BrA * u);\n  Up = (Vp * this.cosgam + Sp * this.singam) / Tp;\n  \n  if (Math.abs(Math.abs(Up) - 1) < EPSLN) {\n    coords.x = 0;\n    coords.y = Up < 0 ? -HALF_PI : HALF_PI;\n  } else {\n    coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));\n    coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));\n    \n    if (coords.y === Infinity) {\n      throw new Error();\n    }\n        \n    coords.x = -this.rB * Math.atan2((Sp * this.cosgam - Vp * this.singam), Math.cos(this.BrA * u));\n  }\n  \n  coords.x += this.lam0;\n  \n  return coords;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Two_Point_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"Oblique_Mercator\", \"omerc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n  \n  //double lat0;                    /* the reference latitude               */\n  //double long0;                   /* the reference longitude              */\n  //double lat1;                    /* first standard parallel              */\n  //double lat2;                    /* second standard parallel             */\n  //double r_maj;                   /* major axis                           */\n  //double r_min;                   /* minor axis                           */\n  //double false_east;              /* x offset in meters                   */\n  //double false_north;             /* y offset in meters                   */\n  \n  //the above value can be set with proj4.defs\n  //example: proj4.defs(\"EPSG:2154\",\"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\");\n\n  if (!this.lat2) {\n    this.lat2 = this.lat1;\n  } //if lat2 is not defined\n  if (!this.k0) {\n    this.k0 = 1;\n  }\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  // Standard Parallels cannot be equal and on opposite sides of the equator\n  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n    return;\n  }\n\n  var temp = this.b / this.a;\n  this.e = Math.sqrt(1 - temp * temp);\n\n  var sin1 = Math.sin(this.lat1);\n  var cos1 = Math.cos(this.lat1);\n  var ms1 = msfnz(this.e, sin1, cos1);\n  var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n  var sin2 = Math.sin(this.lat2);\n  var cos2 = Math.cos(this.lat2);\n  var ms2 = msfnz(this.e, sin2, cos2);\n  var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n  var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n    this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n  }\n  else {\n    this.ns = sin1;\n  }\n  if (isNaN(this.ns)) {\n    this.ns = sin1;\n  }\n  this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n  this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n  if (!this.title) {\n    this.title = \"Lambert Conformal Conic\";\n  }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  // singular cases :\n  if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n    lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n  }\n\n  var con = Math.abs(Math.abs(lat) - HALF_PI);\n  var ts, rh1;\n  if (con > EPSLN) {\n    ts = tsfnz(this.e, lat, Math.sin(lat));\n    rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n  }\n  else {\n    con = lat * this.ns;\n    if (con <= 0) {\n      return null;\n    }\n    rh1 = 0;\n  }\n  var theta = this.ns * adjust_lon(lon - this.long0);\n  p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n  p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n  return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n  var rh1, con, ts;\n  var lat, lon;\n  var x = (p.x - this.x0) / this.k0;\n  var y = (this.rh - (p.y - this.y0) / this.k0);\n  if (this.ns > 0) {\n    rh1 = Math.sqrt(x * x + y * y);\n    con = 1;\n  }\n  else {\n    rh1 = -Math.sqrt(x * x + y * y);\n    con = -1;\n  }\n  var theta = 0;\n  if (rh1 !== 0) {\n    theta = Math.atan2((con * x), (con * y));\n  }\n  if ((rh1 !== 0) || (this.ns > 0)) {\n    con = 1 / this.ns;\n    ts = Math.pow((rh1 / (this.a * this.f0)), con);\n    lat = phi2z(this.e, ts);\n    if (lat === -9999) {\n      return null;\n    }\n  }\n  else {\n    lat = -HALF_PI;\n  }\n  lon = adjust_lon(theta / this.ns + this.long0);\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\n  \"Lambert Tangential Conformal Conic Projection\",\n  \"Lambert_Conformal_Conic\",\n  \"Lambert_Conformal_Conic_1SP\",\n  \"Lambert_Conformal_Conic_2SP\",\n  \"lcc\",\n  \"Lambert Conic Conformal (1SP)\",\n  \"Lambert Conic Conformal (2SP)\"\n];\n\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n  this.a = 6377397.155;\n  this.es = 0.006674372230614;\n  this.e = Math.sqrt(this.es);\n  if (!this.lat0) {\n    this.lat0 = 0.863937979737193;\n  }\n  if (!this.long0) {\n    this.long0 = 0.7417649320975901 - 0.308341501185665;\n  }\n  /* if scale not set default to 0.9999 */\n  if (!this.k0) {\n    this.k0 = 0.9999;\n  }\n  this.s45 = 0.785398163397448; /* 45 */\n  this.s90 = 2 * this.s45;\n  this.fi0 = this.lat0;\n  this.e2 = this.es;\n  this.e = Math.sqrt(this.e2);\n  this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n  this.uq = 1.04216856380474;\n  this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n  this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n  this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n  this.k1 = this.k0;\n  this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n  this.s0 = 1.37008346281555;\n  this.n = Math.sin(this.s0);\n  this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n  this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n  var gfi, u, deltav, s, d, eps, ro;\n  var lon = p.x;\n  var lat = p.y;\n  var delta_lon = adjust_lon(lon - this.long0);\n  /* Transformation */\n  gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n  u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n  deltav = -delta_lon * this.alfa;\n  s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n  d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n  eps = this.n * d;\n  ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n  p.y = ro * Math.cos(eps) / 1;\n  p.x = ro * Math.sin(eps) / 1;\n\n  if (!this.czech) {\n    p.y *= -1;\n    p.x *= -1;\n  }\n  return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n  var u, deltav, s, d, eps, ro, fi1;\n  var ok;\n\n  /* Transformation */\n  /* revert y, x*/\n  var tmp = p.x;\n  p.x = p.y;\n  p.y = tmp;\n  if (!this.czech) {\n    p.y *= -1;\n    p.x *= -1;\n  }\n  ro = Math.sqrt(p.x * p.x + p.y * p.y);\n  eps = Math.atan2(p.y, p.x);\n  d = eps / Math.sin(this.s0);\n  s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n  u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n  deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n  p.x = this.long0 - deltav / this.alfa;\n  fi1 = u;\n  ok = 0;\n  var iter = 0;\n  do {\n    p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n    if (Math.abs(fi1 - p.y) < 0.0000000001) {\n      ok = 1;\n    }\n    fi1 = p.y;\n    iter += 1;\n  } while (ok === 0 && iter < 15);\n  if (iter >= 15) {\n    return null;\n  }\n\n  return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n  return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n  return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n  return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n  return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n  return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n  var temp = e * sinphi;\n  return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n  return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n  var phi;\n  var dphi;\n\n  phi = ml / e0;\n  for (var i = 0; i < 15; i++) {\n    dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n    phi += dphi;\n    if (Math.abs(dphi) <= 0.0000000001) {\n      return phi;\n    }\n  }\n\n  //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n  return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n  if (!this.sphere) {\n    this.e0 = e0fn(this.es);\n    this.e1 = e1fn(this.es);\n    this.e2 = e2fn(this.es);\n    this.e3 = e3fn(this.es);\n    this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n  }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n  -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n  /* Forward equations\n      -----------------*/\n  var x, y;\n  var lam = p.x;\n  var phi = p.y;\n  lam = adjust_lon(lam - this.long0);\n\n  if (this.sphere) {\n    x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n    y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n  }\n  else {\n    //ellipsoid\n    var sinphi = Math.sin(phi);\n    var cosphi = Math.cos(phi);\n    var nl = gN(this.a, this.e, sinphi);\n    var tl = Math.tan(phi) * Math.tan(phi);\n    var al = lam * Math.cos(phi);\n    var asq = al * al;\n    var cl = this.es * cosphi * cosphi / (1 - this.es);\n    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n    x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n    y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n  }\n\n  p.x = x + this.x0;\n  p.y = y + this.y0;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var x = p.x / this.a;\n  var y = p.y / this.a;\n  var phi, lam;\n\n  if (this.sphere) {\n    var dd = y + this.lat0;\n    phi = Math.asin(Math.sin(dd) * Math.cos(x));\n    lam = Math.atan2(Math.tan(x), Math.cos(dd));\n  }\n  else {\n    /* ellipsoid */\n    var ml1 = this.ml0 / this.a + y;\n    var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n    if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n      p.x = this.long0;\n      p.y = HALF_PI;\n      if (y < 0) {\n        p.y *= -1;\n      }\n      return p;\n    }\n    var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n    var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n    var tl1 = Math.pow(Math.tan(phi1), 2);\n    var dl = x * this.a / nl1;\n    var dsq = dl * dl;\n    phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n    lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n  }\n\n  p.x = adjust_lon(lam + this.long0);\n  p.y = adjust_lat(phi);\n  return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export default function(eccent, sinphi) {\n  var con;\n  if (eccent > 1.0e-7) {\n    con = eccent * sinphi;\n    return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n  }\n  else {\n    return (2 * sinphi);\n  }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n  reference\n    \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n  */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n  ------------------------------------------------------*/\nexport function init() {\n  var t = Math.abs(this.lat0);\n  if (Math.abs(t - HALF_PI) < EPSLN) {\n    this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n  }\n  else if (Math.abs(t) < EPSLN) {\n    this.mode = this.EQUIT;\n  }\n  else {\n    this.mode = this.OBLIQ;\n  }\n  if (this.es > 0) {\n    var sinphi;\n\n    this.qp = qsfnz(this.e, 1);\n    this.mmf = 0.5 / (1 - this.es);\n    this.apa = authset(this.es);\n    switch (this.mode) {\n    case this.N_POLE:\n      this.dd = 1;\n      break;\n    case this.S_POLE:\n      this.dd = 1;\n      break;\n    case this.EQUIT:\n      this.rq = Math.sqrt(0.5 * this.qp);\n      this.dd = 1 / this.rq;\n      this.xmf = 1;\n      this.ymf = 0.5 * this.qp;\n      break;\n    case this.OBLIQ:\n      this.rq = Math.sqrt(0.5 * this.qp);\n      sinphi = Math.sin(this.lat0);\n      this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n      this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n      this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n      this.ymf = (this.xmf = this.rq) / this.dd;\n      this.xmf *= this.dd;\n      break;\n    }\n  }\n  else {\n    if (this.mode === this.OBLIQ) {\n      this.sinph0 = Math.sin(this.lat0);\n      this.cosph0 = Math.cos(this.lat0);\n    }\n  }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n  -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n  /* Forward equations\n      -----------------*/\n  var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n  var lam = p.x;\n  var phi = p.y;\n\n  lam = adjust_lon(lam - this.long0);\n  if (this.sphere) {\n    sinphi = Math.sin(phi);\n    cosphi = Math.cos(phi);\n    coslam = Math.cos(lam);\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n      if (y <= EPSLN) {\n        return null;\n      }\n      y = Math.sqrt(2 / y);\n      x = y * cosphi * Math.sin(lam);\n      y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n    }\n    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n      if (this.mode === this.N_POLE) {\n        coslam = -coslam;\n      }\n      if (Math.abs(phi + this.lat0) < EPSLN) {\n        return null;\n      }\n      y = FORTPI - phi * 0.5;\n      y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n      x = y * Math.sin(lam);\n      y *= coslam;\n    }\n  }\n  else {\n    sinb = 0;\n    cosb = 0;\n    b = 0;\n    coslam = Math.cos(lam);\n    sinlam = Math.sin(lam);\n    sinphi = Math.sin(phi);\n    q = qsfnz(this.e, sinphi);\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      sinb = q / this.qp;\n      cosb = Math.sqrt(1 - sinb * sinb);\n    }\n    switch (this.mode) {\n    case this.OBLIQ:\n      b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n      break;\n    case this.EQUIT:\n      b = 1 + cosb * coslam;\n      break;\n    case this.N_POLE:\n      b = HALF_PI + phi;\n      q = this.qp - q;\n      break;\n    case this.S_POLE:\n      b = phi - HALF_PI;\n      q = this.qp + q;\n      break;\n    }\n    if (Math.abs(b) < EPSLN) {\n      return null;\n    }\n    switch (this.mode) {\n    case this.OBLIQ:\n    case this.EQUIT:\n      b = Math.sqrt(2 / b);\n      if (this.mode === this.OBLIQ) {\n        y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n      }\n      else {\n        y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n      }\n      x = this.xmf * b * cosb * sinlam;\n      break;\n    case this.N_POLE:\n    case this.S_POLE:\n      if (q >= 0) {\n        x = (b = Math.sqrt(q)) * sinlam;\n        y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n      }\n      else {\n        x = y = 0;\n      }\n      break;\n    }\n  }\n\n  p.x = this.a * x + this.x0;\n  p.y = this.a * y + this.y0;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var x = p.x / this.a;\n  var y = p.y / this.a;\n  var lam, phi, cCe, sCe, q, rho, ab;\n  if (this.sphere) {\n    var cosz = 0,\n      rh, sinz = 0;\n\n    rh = Math.sqrt(x * x + y * y);\n    phi = rh * 0.5;\n    if (phi > 1) {\n      return null;\n    }\n    phi = 2 * Math.asin(phi);\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      sinz = Math.sin(phi);\n      cosz = Math.cos(phi);\n    }\n    switch (this.mode) {\n    case this.EQUIT:\n      phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n      x *= sinz;\n      y = cosz * rh;\n      break;\n    case this.OBLIQ:\n      phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n      x *= sinz * this.cosph0;\n      y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n      break;\n    case this.N_POLE:\n      y = -y;\n      phi = HALF_PI - phi;\n      break;\n    case this.S_POLE:\n      phi -= HALF_PI;\n      break;\n    }\n    lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n  }\n  else {\n    ab = 0;\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      x /= this.dd;\n      y *= this.dd;\n      rho = Math.sqrt(x * x + y * y);\n      if (rho < EPSLN) {\n        p.x = this.long0;\n        p.y = this.lat0;\n        return p;\n      }\n      sCe = 2 * Math.asin(0.5 * rho / this.rq);\n      cCe = Math.cos(sCe);\n      x *= (sCe = Math.sin(sCe));\n      if (this.mode === this.OBLIQ) {\n        ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n        q = this.qp * ab;\n        y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n      }\n      else {\n        ab = y * sCe / rho;\n        q = this.qp * ab;\n        y = rho * cCe;\n      }\n    }\n    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n      if (this.mode === this.N_POLE) {\n        y = -y;\n      }\n      q = (x * x + y * y);\n      if (!q) {\n        p.x = this.long0;\n        p.y = this.lat0;\n        return p;\n      }\n      ab = 1 - q / this.qp;\n      if (this.mode === this.S_POLE) {\n        ab = -ab;\n      }\n    }\n    lam = Math.atan2(x, y);\n    phi = authlat(Math.asin(ab), this.apa);\n  }\n\n  p.x = adjust_lon(this.long0 + lam);\n  p.y = phi;\n  return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n  var t;\n  var APA = [];\n  APA[0] = es * P00;\n  t = es * es;\n  APA[0] += t * P01;\n  APA[1] = t * P10;\n  t *= es;\n  APA[0] += t * P02;\n  APA[1] += t * P11;\n  APA[2] = t * P20;\n  return APA;\n}\n\nfunction authlat(beta, APA) {\n  var t = beta + beta;\n  return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names,\n  S_POLE: S_POLE,\n  N_POLE: N_POLE,\n  EQUIT: EQUIT,\n  OBLIQ: OBLIQ\n};\n","export default function(x) {\n  if (Math.abs(x) > 1) {\n    x = (x > 1) ? 1 : -1;\n  }\n  return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n    return;\n  }\n  this.temp = this.b / this.a;\n  this.es = 1 - Math.pow(this.temp, 2);\n  this.e3 = Math.sqrt(this.es);\n\n  this.sin_po = Math.sin(this.lat1);\n  this.cos_po = Math.cos(this.lat1);\n  this.t1 = this.sin_po;\n  this.con = this.sin_po;\n  this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n  this.qs1 = qsfnz(this.e3, this.sin_po);\n\n  this.sin_po = Math.sin(this.lat2);\n  this.cos_po = Math.cos(this.lat2);\n  this.t2 = this.sin_po;\n  this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n  this.qs2 = qsfnz(this.e3, this.sin_po);\n\n  this.sin_po = Math.sin(this.lat0);\n  this.cos_po = Math.cos(this.lat0);\n  this.t3 = this.sin_po;\n  this.qs0 = qsfnz(this.e3, this.sin_po);\n\n  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n    this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n  }\n  else {\n    this.ns0 = this.con;\n  }\n  this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n  this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n  -------------------------------------------------------------------*/\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  this.sin_phi = Math.sin(lat);\n  this.cos_phi = Math.cos(lat);\n\n  var qs = qsfnz(this.e3, this.sin_phi);\n  var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n  var theta = this.ns0 * adjust_lon(lon - this.long0);\n  var x = rh1 * Math.sin(theta) + this.x0;\n  var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var rh1, qs, con, theta, lon, lat;\n\n  p.x -= this.x0;\n  p.y = this.rh - p.y + this.y0;\n  if (this.ns0 >= 0) {\n    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n    con = 1;\n  }\n  else {\n    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n    con = -1;\n  }\n  theta = 0;\n  if (rh1 !== 0) {\n    theta = Math.atan2(con * p.x, con * p.y);\n  }\n  con = rh1 * this.ns0 / this.a;\n  if (this.sphere) {\n    lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n  }\n  else {\n    qs = (this.c - con * con) / this.ns0;\n    lat = this.phi1z(this.e3, qs);\n  }\n\n  lon = adjust_lon(theta / this.ns0 + this.long0);\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n   Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n  var sinphi, cosphi, con, com, dphi;\n  var phi = asinz(0.5 * qs);\n  if (eccent < EPSLN) {\n    return phi;\n  }\n\n  var eccnts = eccent * eccent;\n  for (var i = 1; i <= 25; i++) {\n    sinphi = Math.sin(phi);\n    cosphi = Math.cos(phi);\n    con = eccent * sinphi;\n    com = 1 - con * con;\n    dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n    phi = phi + dphi;\n    if (Math.abs(dphi) <= 1e-7) {\n      return phi;\n    }\n  }\n  return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names,\n  phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n  reference:\n    Wolfram Mathworld \"Gnomonic Projection\"\n    http://mathworld.wolfram.com/GnomonicProjection.html\n    Accessed: 12th November 2009\n  */\nexport function init() {\n\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  this.sin_p14 = Math.sin(this.lat0);\n  this.cos_p14 = Math.cos(this.lat0);\n  // Approximation for projecting points to the horizon (infinity)\n  this.infinity_dist = 1000 * this.a;\n  this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n    ---------------------------------------------------*/\nexport function forward(p) {\n  var sinphi, cosphi; /* sin and cos value        */\n  var dlon; /* delta longitude value      */\n  var coslon; /* cos of longitude        */\n  var ksp; /* scale factor          */\n  var g;\n  var x, y;\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n      -----------------*/\n  dlon = adjust_lon(lon - this.long0);\n\n  sinphi = Math.sin(lat);\n  cosphi = Math.cos(lat);\n\n  coslon = Math.cos(dlon);\n  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n  ksp = 1;\n  if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n    x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n  }\n  else {\n\n    // Point is in the opposing hemisphere and is unprojectable\n    // We still need to return a reasonable point, so we project\n    // to infinity, on a bearing\n    // equivalent to the northern hemisphere equivalent\n    // This is a reasonable approximation for short shapes and lines that\n    // straddle the horizon.\n\n    x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n    y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n  }\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var rh; /* Rho */\n  var sinc, cosc;\n  var c;\n  var lon, lat;\n\n  /* Inverse equations\n      -----------------*/\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  p.x /= this.k0;\n  p.y /= this.k0;\n\n  if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n    c = Math.atan2(rh, this.rc);\n    sinc = Math.sin(c);\n    cosc = Math.cos(c);\n\n    lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n    lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n    lon = adjust_lon(this.long0 + lon);\n  }\n  else {\n    lat = this.phic0;\n    lon = 0;\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n  var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n  if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n    if (q < 0) {\n      return (-1 * HALF_PI);\n    }\n    else {\n      return HALF_PI;\n    }\n  }\n  //var phi = 0.5* q/(1-eccent*eccent);\n  var phi = Math.asin(0.5 * q);\n  var dphi;\n  var sin_phi;\n  var cos_phi;\n  var con;\n  for (var i = 0; i < 30; i++) {\n    sin_phi = Math.sin(phi);\n    cos_phi = Math.cos(phi);\n    con = eccent * sin_phi;\n    dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n    phi += dphi;\n    if (Math.abs(dphi) <= 0.0000000001) {\n      return phi;\n    }\n  }\n\n  //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n  return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n  reference:\n    \"Cartographic Projection Procedures for the UNIX Environment-\n    A User's Manual\" by Gerald I. Evenden,\n    USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n  //no-op\n  if (!this.sphere) {\n    this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n  }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n    ------------------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var x, y;\n  /* Forward equations\n      -----------------*/\n  var dlon = adjust_lon(lon - this.long0);\n  if (this.sphere) {\n    x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n    y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n  }\n  else {\n    var qs = qsfnz(this.e, Math.sin(lat));\n    x = this.x0 + this.a * this.k0 * dlon;\n    y = this.y0 + this.a * qs * 0.5 / this.k0;\n  }\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n    ------------------------------------------------------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var lon, lat;\n\n  if (this.sphere) {\n    lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n    lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n  }\n  else {\n    lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n    lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  this.lat0 = this.lat0 || 0;\n  this.long0 = this.long0 || 0;\n  this.lat_ts = this.lat_ts || 0;\n  this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n  this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  var dlon = adjust_lon(lon - this.long0);\n  var dlat = adjust_lat(lat - this.lat0);\n  p.x = this.x0 + (this.a * dlon * this.rc);\n  p.y = this.y0 + (this.a * dlat);\n  return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n  var x = p.x;\n  var y = p.y;\n\n  p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n  p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n  return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  this.temp = this.b / this.a;\n  this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n  this.e = Math.sqrt(this.es);\n  this.e0 = e0fn(this.es);\n  this.e1 = e1fn(this.es);\n  this.e2 = e2fn(this.es);\n  this.e3 = e3fn(this.es);\n  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n    ---------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var x, y, el;\n  var dlon = adjust_lon(lon - this.long0);\n  el = dlon * Math.sin(lat);\n  if (this.sphere) {\n    if (Math.abs(lat) <= EPSLN) {\n      x = this.a * dlon;\n      y = -1 * this.a * this.lat0;\n    }\n    else {\n      x = this.a * Math.sin(el) / Math.tan(lat);\n      y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n    }\n  }\n  else {\n    if (Math.abs(lat) <= EPSLN) {\n      x = this.a * dlon;\n      y = -1 * this.ml0;\n    }\n    else {\n      var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n      x = nl * Math.sin(el);\n      y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n    }\n\n  }\n  p.x = x + this.x0;\n  p.y = y + this.y0;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  var lon, lat, x, y, i;\n  var al, bl;\n  var phi, dphi;\n  x = p.x - this.x0;\n  y = p.y - this.y0;\n\n  if (this.sphere) {\n    if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n      lon = adjust_lon(x / this.a + this.long0);\n      lat = 0;\n    }\n    else {\n      al = this.lat0 + y / this.a;\n      bl = x * x / this.a / this.a + al * al;\n      phi = al;\n      var tanphi;\n      for (i = MAX_ITER; i; --i) {\n        tanphi = Math.tan(phi);\n        dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n        phi += dphi;\n        if (Math.abs(dphi) <= EPSLN) {\n          lat = phi;\n          break;\n        }\n      }\n      lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n    }\n  }\n  else {\n    if (Math.abs(y + this.ml0) <= EPSLN) {\n      lat = 0;\n      lon = adjust_lon(this.long0 + x / this.a);\n    }\n    else {\n\n      al = (this.ml0 + y) / this.a;\n      bl = x * x / this.a / this.a + al * al;\n      phi = al;\n      var cl, mln, mlnp, ma;\n      var con;\n      for (i = MAX_ITER; i; --i) {\n        con = this.e * Math.sin(phi);\n        cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n        mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n        mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n        ma = mln / this.a;\n        dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n        phi -= dphi;\n        if (Math.abs(dphi) <= EPSLN) {\n          lat = phi;\n          break;\n        }\n      }\n\n      //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n      cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n      lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n    }\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n  reference\n    Department of Land and Survey Technical Circular 1973/32\n      http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n    OSG Technical Report 4.1\n      http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n  */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n *     0 -> km accuracy\n *     1 -> m accuracy -- suitable for most mapping applications\n *     2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n  this.A = [];\n  this.A[1] = 0.6399175073;\n  this.A[2] = -0.1358797613;\n  this.A[3] = 0.063294409;\n  this.A[4] = -0.02526853;\n  this.A[5] = 0.0117879;\n  this.A[6] = -0.0055161;\n  this.A[7] = 0.0026906;\n  this.A[8] = -0.001333;\n  this.A[9] = 0.00067;\n  this.A[10] = -0.00034;\n\n  this.B_re = [];\n  this.B_im = [];\n  this.B_re[1] = 0.7557853228;\n  this.B_im[1] = 0;\n  this.B_re[2] = 0.249204646;\n  this.B_im[2] = 0.003371507;\n  this.B_re[3] = -0.001541739;\n  this.B_im[3] = 0.041058560;\n  this.B_re[4] = -0.10162907;\n  this.B_im[4] = 0.01727609;\n  this.B_re[5] = -0.26623489;\n  this.B_im[5] = -0.36249218;\n  this.B_re[6] = -0.6870983;\n  this.B_im[6] = -1.1651967;\n\n  this.C_re = [];\n  this.C_im = [];\n  this.C_re[1] = 1.3231270439;\n  this.C_im[1] = 0;\n  this.C_re[2] = -0.577245789;\n  this.C_im[2] = -0.007809598;\n  this.C_re[3] = 0.508307513;\n  this.C_im[3] = -0.112208952;\n  this.C_re[4] = -0.15094762;\n  this.C_im[4] = 0.18200602;\n  this.C_re[5] = 1.01418179;\n  this.C_im[5] = 1.64497696;\n  this.C_re[6] = 1.9660549;\n  this.C_im[6] = 2.5127645;\n\n  this.D = [];\n  this.D[1] = 1.5627014243;\n  this.D[2] = 0.5185406398;\n  this.D[3] = -0.03333098;\n  this.D[4] = -0.1052906;\n  this.D[5] = -0.0368594;\n  this.D[6] = 0.007317;\n  this.D[7] = 0.01220;\n  this.D[8] = 0.00394;\n  this.D[9] = -0.0013;\n}\n\n/**\n    New Zealand Map Grid Forward  - long/lat to x/y\n    long/lat in radians\n  */\nexport function forward(p) {\n  var n;\n  var lon = p.x;\n  var lat = p.y;\n\n  var delta_lat = lat - this.lat0;\n  var delta_lon = lon - this.long0;\n\n  // 1. Calculate d_phi and d_psi    ...                          // and d_lambda\n  // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n  var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n  var d_lambda = delta_lon;\n  var d_phi_n = 1; // d_phi^0\n\n  var d_psi = 0;\n  for (n = 1; n <= 10; n++) {\n    d_phi_n = d_phi_n * d_phi;\n    d_psi = d_psi + this.A[n] * d_phi_n;\n  }\n\n  // 2. Calculate theta\n  var th_re = d_psi;\n  var th_im = d_lambda;\n\n  // 3. Calculate z\n  var th_n_re = 1;\n  var th_n_im = 0; // theta^0\n  var th_n_re1;\n  var th_n_im1;\n\n  var z_re = 0;\n  var z_im = 0;\n  for (n = 1; n <= 6; n++) {\n    th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n    th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n    th_n_re = th_n_re1;\n    th_n_im = th_n_im1;\n    z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n    z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n  }\n\n  // 4. Calculate easting and northing\n  p.x = (z_im * this.a) + this.x0;\n  p.y = (z_re * this.a) + this.y0;\n\n  return p;\n}\n\n/**\n    New Zealand Map Grid Inverse  -  x/y to long/lat\n  */\nexport function inverse(p) {\n  var n;\n  var x = p.x;\n  var y = p.y;\n\n  var delta_x = x - this.x0;\n  var delta_y = y - this.y0;\n\n  // 1. Calculate z\n  var z_re = delta_y / this.a;\n  var z_im = delta_x / this.a;\n\n  // 2a. Calculate theta - first approximation gives km accuracy\n  var z_n_re = 1;\n  var z_n_im = 0; // z^0\n  var z_n_re1;\n  var z_n_im1;\n\n  var th_re = 0;\n  var th_im = 0;\n  for (n = 1; n <= 6; n++) {\n    z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n    z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n    z_n_re = z_n_re1;\n    z_n_im = z_n_im1;\n    th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n    th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n  }\n\n  // 2b. Iterate to refine the accuracy of the calculation\n  //        0 iterations gives km accuracy\n  //        1 iteration gives m accuracy -- good enough for most mapping applications\n  //        2 iterations bives mm accuracy\n  for (var i = 0; i < this.iterations; i++) {\n    var th_n_re = th_re;\n    var th_n_im = th_im;\n    var th_n_re1;\n    var th_n_im1;\n\n    var num_re = z_re;\n    var num_im = z_im;\n    for (n = 2; n <= 6; n++) {\n      th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n      th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n      th_n_re = th_n_re1;\n      th_n_im = th_n_im1;\n      num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n      num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n    }\n\n    th_n_re = 1;\n    th_n_im = 0;\n    var den_re = this.B_re[1];\n    var den_im = this.B_im[1];\n    for (n = 2; n <= 6; n++) {\n      th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n      th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n      th_n_re = th_n_re1;\n      th_n_im = th_n_im1;\n      den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n      den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n    }\n\n    // Complex division\n    var den2 = den_re * den_re + den_im * den_im;\n    th_re = (num_re * den_re + num_im * den_im) / den2;\n    th_im = (num_im * den_re - num_re * den_im) / den2;\n  }\n\n  // 3. Calculate d_phi              ...                                    // and d_lambda\n  var d_psi = th_re;\n  var d_lambda = th_im;\n  var d_psi_n = 1; // d_psi^0\n\n  var d_phi = 0;\n  for (n = 1; n <= 9; n++) {\n    d_psi_n = d_psi_n * d_psi;\n    d_phi = d_phi + this.D[n] * d_psi_n;\n  }\n\n  // 4. Calculate latitude and longitude\n  // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n  var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n  var lon = this.long0 + d_lambda;\n\n  p.x = lon;\n  p.y = lat;\n\n  return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n  reference\n    \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n  */\n\n\n/* Initialize the Miller Cylindrical projection\n  -------------------------------------------*/\nexport function init() {\n  //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n    ------------------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n      -----------------*/\n  var dlon = adjust_lon(lon - this.long0);\n  var x = this.x0 + this.a * dlon;\n  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n    ------------------------------------------------------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n\n  var lon = adjust_lon(this.long0 + p.x / this.a);\n  var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n  /* Place parameters in static storage for common use\n    -------------------------------------------------*/\n\n\n  if (!this.sphere) {\n    this.en = pj_enfn(this.es);\n  }\n  else {\n    this.n = 1;\n    this.m = 0;\n    this.es = 0;\n    this.C_y = Math.sqrt((this.m + 1) / this.n);\n    this.C_x = this.C_y / (this.m + 1);\n  }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n  -----------------------------------------------------*/\nexport function forward(p) {\n  var x, y;\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n    -----------------*/\n  lon = adjust_lon(lon - this.long0);\n\n  if (this.sphere) {\n    if (!this.m) {\n      lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n    }\n    else {\n      var k = this.n * Math.sin(lat);\n      for (var i = MAX_ITER; i; --i) {\n        var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n        lat -= V;\n        if (Math.abs(V) < EPSLN) {\n          break;\n        }\n      }\n    }\n    x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n    y = this.a * this.C_y * lat;\n\n  }\n  else {\n\n    var s = Math.sin(lat);\n    var c = Math.cos(lat);\n    y = this.a * pj_mlfn(lat, s, c, this.en);\n    x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n  }\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var lat, temp, lon, s;\n\n  p.x -= this.x0;\n  lon = p.x / this.a;\n  p.y -= this.y0;\n  lat = p.y / this.a;\n\n  if (this.sphere) {\n    lat /= this.C_y;\n    lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n    if (this.m) {\n      lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n    }\n    else if (this.n !== 1) {\n      lat = asinz(Math.sin(lat) / this.n);\n    }\n    lon = adjust_lon(lon + this.long0);\n    lat = adjust_lat(lat);\n  }\n  else {\n    lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n    s = Math.abs(lat);\n    if (s < HALF_PI) {\n      s = Math.sin(lat);\n      temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n      //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n      lon = adjust_lon(temp);\n    }\n    else if ((s - EPSLN) < HALF_PI) {\n      lon = this.long0;\n    }\n  }\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n    ----------------------------------------------------*/\nexport function forward(p) {\n\n  /* Forward equations\n      -----------------*/\n  var lon = p.x;\n  var lat = p.y;\n\n  var delta_lon = adjust_lon(lon - this.long0);\n  var theta = lat;\n  var con = Math.PI * Math.sin(lat);\n\n  /* Iterate using the Newton-Raphson method to find theta\n      -----------------------------------------------------*/\n  while (true) {\n    var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n    theta += delta_theta;\n    if (Math.abs(delta_theta) < EPSLN) {\n      break;\n    }\n  }\n  theta /= 2;\n\n  /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n       this is done here because of precision problems with \"cos(theta)\"\n       --------------------------------------------------------------------------*/\n  if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n    delta_lon = 0;\n  }\n  var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n  var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var theta;\n  var arg;\n\n  /* Inverse equations\n      -----------------*/\n  p.x -= this.x0;\n  p.y -= this.y0;\n  arg = p.y / (1.4142135623731 * this.a);\n\n  /* Because of division by zero problems, 'arg' can not be 1.  Therefore\n       a number very close to one is used instead.\n       -------------------------------------------------------------------*/\n  if (Math.abs(arg) > 0.999999999999) {\n    arg = 0.999999999999;\n  }\n  theta = Math.asin(arg);\n  var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n  if (lon < (-Math.PI)) {\n    lon = -Math.PI;\n  }\n  if (lon > Math.PI) {\n    lon = Math.PI;\n  }\n  arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n  if (Math.abs(arg) > 1) {\n    arg = 1;\n  }\n  var lat = Math.asin(arg);\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  // Standard Parallels cannot be equal and on opposite sides of the equator\n  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n    return;\n  }\n  this.lat2 = this.lat2 || this.lat1;\n  this.temp = this.b / this.a;\n  this.es = 1 - Math.pow(this.temp, 2);\n  this.e = Math.sqrt(this.es);\n  this.e0 = e0fn(this.es);\n  this.e1 = e1fn(this.es);\n  this.e2 = e2fn(this.es);\n  this.e3 = e3fn(this.es);\n\n  this.sinphi = Math.sin(this.lat1);\n  this.cosphi = Math.cos(this.lat1);\n\n  this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n  this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n  if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n    this.ns = this.sinphi;\n  }\n  else {\n    this.sinphi = Math.sin(this.lat2);\n    this.cosphi = Math.cos(this.lat2);\n    this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n    this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n    this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n  }\n  this.g = this.ml1 + this.ms1 / this.ns;\n  this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n  this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n  -----------------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var rh1;\n\n  /* Forward equations\n      -----------------*/\n  if (this.sphere) {\n    rh1 = this.a * (this.g - lat);\n  }\n  else {\n    var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n    rh1 = this.a * (this.g - ml);\n  }\n  var theta = this.ns * adjust_lon(lon - this.long0);\n  var x = this.x0 + rh1 * Math.sin(theta);\n  var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y = this.rh - p.y + this.y0;\n  var con, rh1, lat, lon;\n  if (this.ns >= 0) {\n    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n    con = 1;\n  }\n  else {\n    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n    con = -1;\n  }\n  var theta = 0;\n  if (rh1 !== 0) {\n    theta = Math.atan2(con * p.x, con * p.y);\n  }\n\n  if (this.sphere) {\n    lon = adjust_lon(this.long0 + theta / this.ns);\n    lat = adjust_lat(this.g - rh1 / this.a);\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  else {\n    var ml = this.g - rh1 / this.a;\n    lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n    lon = adjust_lon(this.long0 + theta / this.ns);\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n  ----------------------------------------*/\nexport function init() {\n  //this.R = 6370997; //Radius of earth\n  this.R = this.a;\n}\n\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  /* Forward equations\n    -----------------*/\n  var dlon = adjust_lon(lon - this.long0);\n  var x, y;\n\n  if (Math.abs(lat) <= EPSLN) {\n    x = this.x0 + this.R * dlon;\n    y = this.y0;\n  }\n  var theta = asinz(2 * Math.abs(lat / Math.PI));\n  if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n    x = this.x0;\n    if (lat >= 0) {\n      y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n    }\n    else {\n      y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n    }\n    //  return(OK);\n  }\n  var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n  var asq = al * al;\n  var sinth = Math.sin(theta);\n  var costh = Math.cos(theta);\n\n  var g = costh / (sinth + costh - 1);\n  var gsq = g * g;\n  var m = g * (2 / sinth - 1);\n  var msq = m * m;\n  var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n  if (dlon < 0) {\n    con = -con;\n  }\n  x = this.x0 + con;\n  //con = Math.abs(con / (Math.PI * this.R));\n  var q = asq + g;\n  con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n  if (lat >= 0) {\n    //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n    y = this.y0 + con;\n  }\n  else {\n    //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n    y = this.y0 - con;\n  }\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n  ---------------------------------------------------------*/\nexport function inverse(p) {\n  var lon, lat;\n  var xx, yy, xys, c1, c2, c3;\n  var a1;\n  var m1;\n  var con;\n  var th1;\n  var d;\n\n  /* inverse equations\n    -----------------*/\n  p.x -= this.x0;\n  p.y -= this.y0;\n  con = Math.PI * this.R;\n  xx = p.x / con;\n  yy = p.y / con;\n  xys = xx * xx + yy * yy;\n  c1 = -Math.abs(yy) * (1 + xys);\n  c2 = c1 - 2 * yy * yy + xx * xx;\n  c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n  d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n  a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n  m1 = 2 * Math.sqrt(-a1 / 3);\n  con = ((3 * d) / a1) / m1;\n  if (Math.abs(con) > 1) {\n    if (con >= 0) {\n      con = 1;\n    }\n    else {\n      con = -1;\n    }\n  }\n  th1 = Math.acos(con) / 3;\n  if (p.y >= 0) {\n    lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n  }\n  else {\n    lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n  }\n\n  if (Math.abs(xx) < EPSLN) {\n    lon = this.long0;\n  }\n  else {\n    lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n  this.sin_p12 = Math.sin(this.lat0);\n  this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var sinphi = Math.sin(p.y);\n  var cosphi = Math.cos(p.y);\n  var dlon = adjust_lon(lon - this.long0);\n  var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n  if (this.sphere) {\n    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n      //North Pole case\n      p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n      p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n      return p;\n    }\n    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n      //South Pole case\n      p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n      p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n      return p;\n    }\n    else {\n      //default case\n      cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n      c = Math.acos(cos_c);\n      kp = c ? c / Math.sin(c) : 1;\n      p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n      p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n      return p;\n    }\n  }\n  else {\n    e0 = e0fn(this.es);\n    e1 = e1fn(this.es);\n    e2 = e2fn(this.es);\n    e3 = e3fn(this.es);\n    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n      //North Pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n      p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n      p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n      return p;\n    }\n    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n      //South Pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n      p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n      p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n      return p;\n    }\n    else {\n      //Default case\n      tanphi = sinphi / cosphi;\n      Nl1 = gN(this.a, this.e, this.sin_p12);\n      Nl = gN(this.a, this.e, sinphi);\n      psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n      Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n      if (Az === 0) {\n        s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n      }\n      else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n        s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n      }\n      else {\n        s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n      }\n      G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n      H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n      GH = G * H;\n      Hs = H * H;\n      s2 = s * s;\n      s3 = s2 * s;\n      s4 = s3 * s;\n      s5 = s4 * s;\n      c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n      p.x = this.x0 + c * Math.sin(Az);\n      p.y = this.y0 + c * Math.cos(Az);\n      return p;\n    }\n  }\n\n\n}\n\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n  if (this.sphere) {\n    rh = Math.sqrt(p.x * p.x + p.y * p.y);\n    if (rh > (2 * HALF_PI * this.a)) {\n      return;\n    }\n    z = rh / this.a;\n\n    sinz = Math.sin(z);\n    cosz = Math.cos(z);\n\n    lon = this.long0;\n    if (Math.abs(rh) <= EPSLN) {\n      lat = this.lat0;\n    }\n    else {\n      lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n      con = Math.abs(this.lat0) - HALF_PI;\n      if (Math.abs(con) <= EPSLN) {\n        if (this.lat0 >= 0) {\n          lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n        }\n        else {\n          lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n        }\n      }\n      else {\n        /*con = cosz - this.sin_p12 * Math.sin(lat);\n        if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n          //no-op, just keep the lon value as is\n        } else {\n          var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n          lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n        }*/\n        lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n      }\n    }\n\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  else {\n    e0 = e0fn(this.es);\n    e1 = e1fn(this.es);\n    e2 = e2fn(this.es);\n    e3 = e3fn(this.es);\n    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n      //North pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      rh = Math.sqrt(p.x * p.x + p.y * p.y);\n      M = Mlp - rh;\n      lat = imlfn(M / this.a, e0, e1, e2, e3);\n      lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n      //South pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      rh = Math.sqrt(p.x * p.x + p.y * p.y);\n      M = rh - Mlp;\n\n      lat = imlfn(M / this.a, e0, e1, e2, e3);\n      lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n    else {\n      //default case\n      rh = Math.sqrt(p.x * p.x + p.y * p.y);\n      Az = Math.atan2(p.x, p.y);\n      N1 = gN(this.a, this.e, this.sin_p12);\n      cosAz = Math.cos(Az);\n      tmp = this.e * this.cos_p12 * cosAz;\n      A = -tmp * tmp / (1 - this.es);\n      B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n      D = rh / N1;\n      Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n      F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n      psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n      lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n      sinpsi = Math.sin(psi);\n      lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n  }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n  //double temp;      /* temporary variable    */\n\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  this.sin_p14 = Math.sin(this.lat0);\n  this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n    ---------------------------------------------------*/\nexport function forward(p) {\n  var sinphi, cosphi; /* sin and cos value        */\n  var dlon; /* delta longitude value      */\n  var coslon; /* cos of longitude        */\n  var ksp; /* scale factor          */\n  var g, x, y;\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n      -----------------*/\n  dlon = adjust_lon(lon - this.long0);\n\n  sinphi = Math.sin(lat);\n  cosphi = Math.cos(lat);\n\n  coslon = Math.cos(dlon);\n  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n  ksp = 1;\n  if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n    x = this.a * ksp * cosphi * Math.sin(dlon);\n    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n  }\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var rh; /* height above ellipsoid      */\n  var z; /* angle          */\n  var sinz, cosz; /* sin of z and cos of z      */\n  var con;\n  var lon, lat;\n  /* Inverse equations\n      -----------------*/\n  p.x -= this.x0;\n  p.y -= this.y0;\n  rh = Math.sqrt(p.x * p.x + p.y * p.y);\n  z = asinz(rh / this.a);\n\n  sinz = Math.sin(z);\n  cosz = Math.cos(z);\n\n  lon = this.long0;\n  if (Math.abs(rh) <= EPSLN) {\n    lat = this.lat0;\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n  con = Math.abs(this.lat0) - HALF_PI;\n  if (Math.abs(con) <= EPSLN) {\n    if (this.lat0 >= 0) {\n      lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n    }\n    else {\n      lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n    }\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n    FRONT: 1,\n    RIGHT: 2,\n    BACK: 3,\n    LEFT: 4,\n    TOP: 5,\n    BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n    AREA_0: 1,\n    AREA_1: 2,\n    AREA_2: 3,\n    AREA_3: 4\n};\n\nexport function init() {\n\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  this.lat0 = this.lat0 || 0;\n  this.long0 = this.long0 || 0;\n  this.lat_ts = this.lat_ts || 0;\n  this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n  /* Determine the cube face from the center of projection. */\n  if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n    this.face = FACE_ENUM.TOP;\n  } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n    this.face = FACE_ENUM.BOTTOM;\n  } else if (Math.abs(this.long0) <= FORTPI) {\n    this.face = FACE_ENUM.FRONT;\n  } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n    this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n  } else {\n    this.face = FACE_ENUM.BACK;\n  }\n\n  /* Fill in useful values for the ellipsoid <-> sphere shift\n   * described in [LK12]. */\n  if (this.es !== 0) {\n    this.one_minus_f = 1 - (this.a - this.b) / this.a;\n    this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n  }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n  var xy = {x: 0, y: 0};\n  var lat, lon;\n  var theta, phi;\n  var t, mu;\n  /* nu; */\n  var area = {value: 0};\n\n  // move lon according to projection's lon\n  p.x -= this.long0;\n\n  /* Convert the geodetic latitude to a geocentric latitude.\n   * This corresponds to the shift from the ellipsoid to the sphere\n   * described in [LK12]. */\n  if (this.es !== 0) {//if (P->es != 0) {\n    lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n  } else {\n    lat = p.y;\n  }\n\n  /* Convert the input lat, lon into theta, phi as used by QSC.\n   * This depends on the cube face and the area on it.\n   * For the top and bottom face, we can compute theta and phi\n   * directly from phi, lam. For the other faces, we must use\n   * unit sphere cartesian coordinates as an intermediate step. */\n  lon = p.x; //lon = lp.lam;\n  if (this.face === FACE_ENUM.TOP) {\n    phi = HALF_PI - lat;\n    if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n      area.value = AREA_ENUM.AREA_0;\n      theta = lon - HALF_PI;\n    } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n      area.value = AREA_ENUM.AREA_1;\n      theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n    } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n      area.value = AREA_ENUM.AREA_2;\n      theta = lon + HALF_PI;\n    } else {\n      area.value = AREA_ENUM.AREA_3;\n      theta = lon;\n    }\n  } else if (this.face === FACE_ENUM.BOTTOM) {\n    phi = HALF_PI + lat;\n    if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n      area.value = AREA_ENUM.AREA_0;\n      theta = -lon + HALF_PI;\n    } else if (lon < FORTPI && lon >= -FORTPI) {\n      area.value = AREA_ENUM.AREA_1;\n      theta = -lon;\n    } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n      area.value = AREA_ENUM.AREA_2;\n      theta = -lon - HALF_PI;\n    } else {\n      area.value = AREA_ENUM.AREA_3;\n      theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n    }\n  } else {\n    var q, r, s;\n    var sinlat, coslat;\n    var sinlon, coslon;\n\n    if (this.face === FACE_ENUM.RIGHT) {\n      lon = qsc_shift_lon_origin(lon, +HALF_PI);\n    } else if (this.face === FACE_ENUM.BACK) {\n      lon = qsc_shift_lon_origin(lon, +SPI);\n    } else if (this.face === FACE_ENUM.LEFT) {\n      lon = qsc_shift_lon_origin(lon, -HALF_PI);\n    }\n    sinlat = Math.sin(lat);\n    coslat = Math.cos(lat);\n    sinlon = Math.sin(lon);\n    coslon = Math.cos(lon);\n    q = coslat * coslon;\n    r = coslat * sinlon;\n    s = sinlat;\n\n    if (this.face === FACE_ENUM.FRONT) {\n      phi = Math.acos(q);\n      theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n    } else if (this.face === FACE_ENUM.RIGHT) {\n      phi = Math.acos(r);\n      theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n    } else if (this.face === FACE_ENUM.BACK) {\n      phi = Math.acos(-q);\n      theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n    } else if (this.face === FACE_ENUM.LEFT) {\n      phi = Math.acos(-r);\n      theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n    } else {\n      /* Impossible */\n      phi = theta = 0;\n      area.value = AREA_ENUM.AREA_0;\n    }\n  }\n\n  /* Compute mu and nu for the area of definition.\n   * For mu, see Eq. (3-21) in [OL76], but note the typos:\n   * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n  mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n  t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n  /* Apply the result to the real area. */\n  if (area.value === AREA_ENUM.AREA_1) {\n    mu += HALF_PI;\n  } else if (area.value === AREA_ENUM.AREA_2) {\n    mu += SPI;\n  } else if (area.value === AREA_ENUM.AREA_3) {\n    mu += 1.5 * SPI;\n  }\n\n  /* Now compute x, y from mu and nu */\n  xy.x = t * Math.cos(mu);\n  xy.y = t * Math.sin(mu);\n  xy.x = xy.x * this.a + this.x0;\n  xy.y = xy.y * this.a + this.y0;\n\n  p.x = xy.x;\n  p.y = xy.y;\n  return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n  var lp = {lam: 0, phi: 0};\n  var mu, nu, cosmu, tannu;\n  var tantheta, theta, cosphi, phi;\n  var t;\n  var area = {value: 0};\n\n  /* de-offset */\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  /* Convert the input x, y to the mu and nu angles as used by QSC.\n   * This depends on the area of the cube face. */\n  nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n  mu = Math.atan2(p.y, p.x);\n  if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n    area.value = AREA_ENUM.AREA_0;\n  } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n    area.value = AREA_ENUM.AREA_1;\n    mu -= HALF_PI;\n  } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n    area.value = AREA_ENUM.AREA_2;\n    mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n  } else {\n    area.value = AREA_ENUM.AREA_3;\n    mu += HALF_PI;\n  }\n\n  /* Compute phi and theta for the area of definition.\n   * The inverse projection is not described in the original paper, but some\n   * good hints can be found here (as of 2011-12-14):\n   * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n   * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n  t = (SPI / 12) * Math.tan(mu);\n  tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n  theta = Math.atan(tantheta);\n  cosmu = Math.cos(mu);\n  tannu = Math.tan(nu);\n  cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n  if (cosphi < -1) {\n    cosphi = -1;\n  } else if (cosphi > +1) {\n    cosphi = +1;\n  }\n\n  /* Apply the result to the real area on the cube face.\n   * For the top and bottom face, we can compute phi and lam directly.\n   * For the other faces, we must use unit sphere cartesian coordinates\n   * as an intermediate step. */\n  if (this.face === FACE_ENUM.TOP) {\n    phi = Math.acos(cosphi);\n    lp.phi = HALF_PI - phi;\n    if (area.value === AREA_ENUM.AREA_0) {\n      lp.lam = theta + HALF_PI;\n    } else if (area.value === AREA_ENUM.AREA_1) {\n      lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n    } else if (area.value === AREA_ENUM.AREA_2) {\n      lp.lam = theta - HALF_PI;\n    } else /* area.value == AREA_ENUM.AREA_3 */ {\n      lp.lam = theta;\n    }\n  } else if (this.face === FACE_ENUM.BOTTOM) {\n    phi = Math.acos(cosphi);\n    lp.phi = phi - HALF_PI;\n    if (area.value === AREA_ENUM.AREA_0) {\n      lp.lam = -theta + HALF_PI;\n    } else if (area.value === AREA_ENUM.AREA_1) {\n      lp.lam = -theta;\n    } else if (area.value === AREA_ENUM.AREA_2) {\n      lp.lam = -theta - HALF_PI;\n    } else /* area.value == AREA_ENUM.AREA_3 */ {\n      lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n    }\n  } else {\n    /* Compute phi and lam via cartesian unit sphere coordinates. */\n    var q, r, s;\n    q = cosphi;\n    t = q * q;\n    if (t >= 1) {\n      s = 0;\n    } else {\n      s = Math.sqrt(1 - t) * Math.sin(theta);\n    }\n    t += s * s;\n    if (t >= 1) {\n      r = 0;\n    } else {\n      r = Math.sqrt(1 - t);\n    }\n    /* Rotate q,r,s into the correct area. */\n    if (area.value === AREA_ENUM.AREA_1) {\n      t = r;\n      r = -s;\n      s = t;\n    } else if (area.value === AREA_ENUM.AREA_2) {\n      r = -r;\n      s = -s;\n    } else if (area.value === AREA_ENUM.AREA_3) {\n      t = r;\n      r = s;\n      s = -t;\n    }\n    /* Rotate q,r,s into the correct cube face. */\n    if (this.face === FACE_ENUM.RIGHT) {\n      t = q;\n      q = -r;\n      r = t;\n    } else if (this.face === FACE_ENUM.BACK) {\n      q = -q;\n      r = -r;\n    } else if (this.face === FACE_ENUM.LEFT) {\n      t = q;\n      q = r;\n      r = -t;\n    }\n    /* Now compute phi and lam from the unit sphere coordinates. */\n    lp.phi = Math.acos(-s) - HALF_PI;\n    lp.lam = Math.atan2(r, q);\n    if (this.face === FACE_ENUM.RIGHT) {\n      lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n    } else if (this.face === FACE_ENUM.BACK) {\n      lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n    } else if (this.face === FACE_ENUM.LEFT) {\n      lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n    }\n  }\n\n  /* Apply the shift from the sphere to the ellipsoid as described\n   * in [LK12]. */\n  if (this.es !== 0) {\n    var invert_sign;\n    var tanphi, xa;\n    invert_sign = (lp.phi < 0 ? 1 : 0);\n    tanphi = Math.tan(lp.phi);\n    xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n    lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n    if (invert_sign) {\n      lp.phi = -lp.phi;\n    }\n  }\n\n  lp.lam += this.long0;\n  p.x = lp.lam;\n  p.y = lp.phi;\n  return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n  var theta;\n  if (phi < EPSLN) {\n    area.value = AREA_ENUM.AREA_0;\n    theta = 0.0;\n  } else {\n    theta = Math.atan2(y, x);\n    if (Math.abs(theta) <= FORTPI) {\n      area.value = AREA_ENUM.AREA_0;\n    } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n      area.value = AREA_ENUM.AREA_1;\n      theta -= HALF_PI;\n    } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n      area.value = AREA_ENUM.AREA_2;\n      theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n    } else {\n      area.value = AREA_ENUM.AREA_3;\n      theta += HALF_PI;\n    }\n  }\n  return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n  var slon = lon + offset;\n  if (slon < -SPI) {\n    slon += TWO_PI;\n  } else if (slon > +SPI) {\n    slon -= TWO_PI;\n  }\n  return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n    [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n    [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n    [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n    [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n    [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n    [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n    [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n    [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n    [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n    [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n    [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n    [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n    [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n    [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n    [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n    [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n    [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n    [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n    [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n    [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n    [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n    [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n    [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n    [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n    [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n    [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n    [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n    [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n    [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n    [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n    [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n    [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n    [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n    [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n    [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n    [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n    [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n    [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n    return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n    return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n    var x = start;\n    for (; iters; --iters) {\n        var upd = f_df(x);\n        x -= upd;\n        if (Math.abs(upd) < max_err) {\n            break;\n        }\n    }\n    return x;\n}\n\nexport function init() {\n    this.x0 = this.x0 || 0;\n    this.y0 = this.y0 || 0;\n    this.long0 = this.long0 || 0;\n    this.es = 0;\n    this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n    var lon = adjust_lon(ll.x - this.long0);\n\n    var dphi = Math.abs(ll.y);\n    var i = Math.floor(dphi * C1);\n    if (i < 0) {\n        i = 0;\n    } else if (i >= NODES) {\n        i = NODES - 1;\n    }\n    dphi = R2D * (dphi - RC1 * i);\n    var xy = {\n        x: poly3_val(COEFS_X[i], dphi) * lon,\n        y: poly3_val(COEFS_Y[i], dphi)\n    };\n    if (ll.y < 0) {\n        xy.y = -xy.y;\n    }\n\n    xy.x = xy.x * this.a * FXC + this.x0;\n    xy.y = xy.y * this.a * FYC + this.y0;\n    return xy;\n}\n\nexport function inverse(xy) {\n    var ll = {\n        x: (xy.x - this.x0) / (this.a * FXC),\n        y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n    };\n\n    if (ll.y >= 1) { // pathologic case\n        ll.x /= COEFS_X[NODES][0];\n        ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n    } else {\n        // find table interval\n        var i = Math.floor(ll.y * NODES);\n        if (i < 0) {\n            i = 0;\n        } else if (i >= NODES) {\n            i = NODES - 1;\n        }\n        for (;;) {\n            if (COEFS_Y[i][0] > ll.y) {\n                --i;\n            } else if (COEFS_Y[i+1][0] <= ll.y) {\n                ++i;\n            } else {\n                break;\n            }\n        }\n        // linear interpolation in 5 degree interval\n        var coefs = COEFS_Y[i];\n        var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n        // find t so that poly3_val(coefs, t) = ll.y\n        t = newton_rapshon(function(x) {\n            return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n        }, t, EPSLN, 100);\n\n        ll.x /= poly3_val(COEFS_X[i], t);\n        ll.y = (5 * i + t) * D2R;\n        if (xy.y < 0) {\n            ll.y = -ll.y;\n        }\n    }\n\n    ll.x = adjust_lon(ll.x + this.long0);\n    return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {\n    geodeticToGeocentric,\n    geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n    this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n    var point = geodeticToGeocentric(p, this.es, this.a);\n    return point;\n}\n\nexport function inverse(p) {\n    var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n    return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n    init: init,\n    forward: forward,\n    inverse: inverse,\n    names: names\n};","\nvar mode = {\n  N_POLE: 0,\n  S_POLE: 1,\n  EQUIT: 2,\n  OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n  h:     { def: 100000, num: true },           // default is Karman line, no default in PROJ.7\n  azi:   { def: 0, num: true, degrees: true }, // default is North\n  tilt:  { def: 0, num: true, degrees: true }, // default is Nadir\n  long0: { def: 0, num: true },                // default is Greenwich, conversion to rad is automatic\n  lat0:  { def: 0, num: true }                 // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n  Object.keys(params).forEach(function (p) {\n    if (typeof this[p] === \"undefined\") {\n      this[p] = params[p].def;\n    } else if (params[p].num && isNaN(this[p])) {\n      throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n    } else if (params[p].num) {\n      this[p] = parseFloat(this[p]);\n    }\n    if (params[p].degrees) {\n      this[p] = this[p] * D2R;\n    }\n  }.bind(this));\n\n  if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n    this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n  } else if (Math.abs(this.lat0) < EPSLN) {\n    this.mode = mode.EQUIT;\n  } else {\n    this.mode = mode.OBLIQ;\n    this.sinph0 = Math.sin(this.lat0);\n    this.cosph0 = Math.cos(this.lat0);\n  }\n\n  this.pn1 = this.h / this.a;  // Normalize relative to the Earth's radius\n\n  if (this.pn1 <= 0 || this.pn1 > 1e10) {\n    throw new Error(\"Invalid height\");\n  }\n  \n  this.p = 1 + this.pn1;\n  this.rp = 1 / this.p;\n  this.h1 = 1 / this.pn1;\n  this.pfact = (this.p + 1) * this.h1;\n  this.es = 0;\n\n  var omega = this.tilt;\n  var gamma = this.azi;\n  this.cg = Math.cos(gamma);\n  this.sg = Math.sin(gamma);\n  this.cw = Math.cos(omega);\n  this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n  p.x -= this.long0;\n  var sinphi = Math.sin(p.y);\n  var cosphi = Math.cos(p.y);\n  var coslam = Math.cos(p.x);\n  var x, y;\n  switch (this.mode) {\n    case mode.OBLIQ:\n      y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n      break;\n    case mode.EQUIT:\n      y = cosphi * coslam;\n      break;\n    case mode.S_POLE:\n      y = -sinphi;\n      break;\n    case mode.N_POLE:\n      y = sinphi;\n      break;\n  }\n  y = this.pn1 / (this.p - y);\n  x = y * cosphi * Math.sin(p.x);\n\n  switch (this.mode) {\n    case mode.OBLIQ:\n      y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n      break;\n    case mode.EQUIT:\n      y *= sinphi;\n      break;\n    case mode.N_POLE:\n      y *= -(cosphi * coslam);\n      break;\n    case mode.S_POLE:\n      y *= cosphi * coslam;\n      break;\n  }\n\n  // Tilt \n  var yt, ba;\n  yt = y * this.cg + x * this.sg;\n  ba = 1 / (yt * this.sw * this.h1 + this.cw);\n  x = (x * this.cg - y * this.sg) * this.cw * ba;\n  y = yt * ba;\n\n  p.x = x * this.a;\n  p.y = y * this.a;\n  return p;\n}\n\nexport function inverse(p) {\n  p.x /= this.a;\n  p.y /= this.a;\n  var r = { x: p.x, y: p.y };\n\n  // Un-Tilt\n  var bm, bq, yt;\n  yt = 1 / (this.pn1 - p.y * this.sw);\n  bm = this.pn1 * p.x * yt;\n  bq = this.pn1 * p.y * this.cw * yt;\n  p.x = bm * this.cg + bq * this.sg;\n  p.y = bq * this.cg - bm * this.sg;\n\n  var rh = hypot(p.x, p.y);\n  if (Math.abs(rh) < EPSLN) {\n    r.x = 0;\n    r.y = p.y;\n  } else {\n    var cosz, sinz;\n    sinz = 1 - rh * rh * this.pfact;\n    sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n    cosz = Math.sqrt(1 - sinz * sinz);\n    switch (this.mode) {\n      case mode.OBLIQ:\n        r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n        p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n        p.x *= sinz * this.cosph0;\n        break;\n      case mode.EQUIT:\n        r.y = Math.asin(p.y * sinz / rh);\n        p.y = cosz * rh;\n        p.x *= sinz;\n        break;\n      case mode.N_POLE:\n        r.y = Math.asin(cosz);\n        p.y = -p.y;\n        break;\n      case mode.S_POLE:\n        r.y = -Math.asin(cosz);\n        break;\n    }\n    r.x = Math.atan2(p.x, p.y);\n  }\n\n  p.x = r.x + this.long0;\n  p.y = r.y;\n  return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import hypot from '../common/hypot';\n\nexport function init() {\n    this.flip_axis = (this.sweep === 'x' ? 1 : 0);\n    this.h = Number(this.h);\n    this.radius_g_1 = this.h / this.a;\n\n    if (this.radius_g_1 <= 0 || this.radius_g_1 > 1e10) {\n        throw new Error();\n    }\n\n    this.radius_g = 1.0 + this.radius_g_1;\n    this.C = this.radius_g * this.radius_g - 1.0;\n\n    if (this.es !== 0.0) {\n        var one_es = 1.0 - this.es;\n        var rone_es = 1 / one_es;\n\n        this.radius_p = Math.sqrt(one_es);\n        this.radius_p2 = one_es;\n        this.radius_p_inv2 = rone_es;\n\n        this.shape = 'ellipse'; // Use as a condition in the forward and inverse functions.\n    } else {\n        this.radius_p = 1.0;\n        this.radius_p2 = 1.0;\n        this.radius_p_inv2 = 1.0;\n\n        this.shape = 'sphere';  // Use as a condition in the forward and inverse functions.\n    }\n\n    if (!this.title) {\n        this.title = \"Geostationary Satellite View\";\n    }\n}\n\nfunction forward(p) {\n    var lon = p.x;\n    var lat = p.y;\n    var tmp, v_x, v_y, v_z;\n    lon = lon - this.long0;\n\n    if (this.shape === 'ellipse') {\n        lat = Math.atan(this.radius_p2 * Math.tan(lat));\n        var r = this.radius_p / hypot(this.radius_p * Math.cos(lat), Math.sin(lat));\n\n        v_x = r * Math.cos(lon) * Math.cos(lat);\n        v_y = r * Math.sin(lon) * Math.cos(lat);\n        v_z = r * Math.sin(lat);\n\n        if (((this.radius_g - v_x) * v_x - v_y * v_y - v_z * v_z * this.radius_p_inv2) < 0.0) {\n            p.x = Number.NaN;\n            p.y = Number.NaN;\n            return p;\n        }\n\n        tmp = this.radius_g - v_x;\n        if (this.flip_axis) {\n            p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n            p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n        } else {\n            p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n            p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n        }\n    } else if (this.shape === 'sphere') {\n        tmp = Math.cos(lat);\n        v_x = Math.cos(lon) * tmp;\n        v_y = Math.sin(lon) * tmp;\n        v_z = Math.sin(lat);\n        tmp = this.radius_g - v_x;\n\n        if (this.flip_axis) {\n            p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n            p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n        } else {\n            p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n            p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n        }\n    }\n    p.x = p.x * this.a;\n    p.y = p.y * this.a;\n    return p;\n}\n\nfunction inverse(p) {\n    var v_x = -1.0;\n    var v_y = 0.0;\n    var v_z = 0.0;\n    var a, b, det, k;\n\n    p.x = p.x / this.a;\n    p.y = p.y / this.a;\n\n    if (this.shape === 'ellipse') {\n        if (this.flip_axis) {\n            v_z = Math.tan(p.y / this.radius_g_1);\n            v_y = Math.tan(p.x / this.radius_g_1) * hypot(1.0, v_z);\n        } else {\n            v_y = Math.tan(p.x / this.radius_g_1);\n            v_z = Math.tan(p.y / this.radius_g_1) * hypot(1.0, v_y);\n        }\n\n        var v_zp = v_z / this.radius_p;\n        a = v_y * v_y + v_zp * v_zp + v_x * v_x;\n        b = 2 * this.radius_g * v_x;\n        det = (b * b) - 4 * a * this.C;\n\n        if (det < 0.0) {\n            p.x = Number.NaN;\n            p.y = Number.NaN;\n            return p;\n        }\n\n        k = (-b - Math.sqrt(det)) / (2.0 * a);\n        v_x = this.radius_g + k * v_x;\n        v_y *= k;\n        v_z *= k;\n\n        p.x = Math.atan2(v_y, v_x);\n        p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n        p.y = Math.atan(this.radius_p_inv2 * Math.tan(p.y));\n    } else if (this.shape === 'sphere') {\n        if (this.flip_axis) {\n            v_z = Math.tan(p.y / this.radius_g_1);\n            v_y = Math.tan(p.x / this.radius_g_1) * Math.sqrt(1.0 + v_z * v_z);\n        } else {\n            v_y = Math.tan(p.x / this.radius_g_1);\n            v_z = Math.tan(p.y / this.radius_g_1) * Math.sqrt(1.0 + v_y * v_y);\n        }\n\n        a = v_y * v_y + v_z * v_z + v_x * v_x;\n        b = 2 * this.radius_g * v_x;\n        det = (b * b) - 4 * a * this.C;\n        if (det < 0.0) {\n            p.x = Number.NaN;\n            p.y = Number.NaN;\n            return p;\n        }\n\n        k = (-b - Math.sqrt(det)) / (2.0 * a);\n        v_x = this.radius_g + k * v_x;\n        v_y *= k;\n        v_z *= k;\n\n        p.x = Math.atan2(v_y, v_x);\n        p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n    }\n    p.x = p.x + this.long0;\n    return p;\n}\n\nexport var names = [\"Geostationary Satellite View\", \"Geostationary_Satellite\", \"geos\"];\nexport default {\n    init: init,\n    forward: forward,\n    inverse: inverse,\n    names: names,\n};\n\n","/**\n * Copyright 2018 Bernie Jenny, Monash University, Melbourne, Australia.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Equal Earth is a projection inspired by the Robinson projection, but unlike\n * the Robinson projection retains the relative size of areas. The projection\n * was designed in 2018 by Bojan Savric, Tom Patterson and Bernhard Jenny.\n *\n * Publication:\n * Bojan Savric, Tom Patterson & Bernhard Jenny (2018). The Equal Earth map\n * projection, International Journal of Geographical Information Science,\n * DOI: 10.1080/13658816.2018.1504949\n *\n * Code released August 2018\n * Ported to JavaScript and adapted for mapshaper-proj by Matthew Bloch August 2018\n * Modified for proj4js by Andreas Hocevar by Andreas Hocevar March 2024\n */\n\nimport adjust_lon from \"../common/adjust_lon\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = Math.sqrt(3) / 2.0;\n\nexport function init() {\n  this.es = 0;\n  this.long0 = this.long0 !== undefined ? this.long0 : 0;\n}\n\nexport function forward(p) {\n  var lam = adjust_lon(p.x - this.long0);\n  var phi = p.y;\n  var paramLat = Math.asin(M * Math.sin(phi)),\n  paramLatSq = paramLat * paramLat,\n  paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n  p.x = lam * Math.cos(paramLat) /\n  (M * (A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq)));\n  p.y = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq));\n\n  p.x = this.a * p.x + this.x0;\n  p.y = this.a * p.y + this.y0;\n  return p;\n}\n\nexport function inverse(p) {\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  var EPS = 1e-9,\n      NITER = 12,\n      paramLat = p.y,\n      paramLatSq, paramLatPow6, fy, fpy, dlat, i;\n\n  for (i = 0; i < NITER; ++i) {\n    paramLatSq = paramLat * paramLat;\n    paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n    fy = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq)) - p.y;\n    fpy = A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq);\n    paramLat -= dlat = fy / fpy;\n    if (Math.abs(dlat) < EPS) {\n        break;\n    }\n  }\n  paramLatSq = paramLat * paramLat;\n  paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n  p.x = M * p.x * (A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq)) /\n          Math.cos(paramLat);\n  p.y = Math.asin(Math.sin(paramLat) / M);\n\n  p.x = adjust_lon(p.x + this.long0);\n  return p;\n}\n\nexport var names = [\"eqearth\", \"Equal Earth\", \"Equal_Earth\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};","import adjust_lat from \"../common/adjust_lat\";\nimport adjust_lon from \"../common/adjust_lon\";\nimport hypot from \"../common/hypot\";\nimport pj_enfn from \"../common/pj_enfn\";\nimport pj_inv_mlfn from \"../common/pj_inv_mlfn\";\nimport pj_mlfn from \"../common/pj_mlfn\";\nimport { HALF_PI } from \"../constants/values\";\n\nvar EPS10 = 1e-10;\n\nexport function init() {\n  var c;\n\n  this.phi1 = this.lat1;\n  if (Math.abs(this.phi1) < EPS10) {\n    throw new Error();\n  }\n  if (this.es) {\n    this.en = pj_enfn(this.es);\n    this.m1 = pj_mlfn(this.phi1, this.am1 = Math.sin(this.phi1),\n      c = Math.cos(this.phi1), this.en);\n    this.am1 = c / (Math.sqrt(1 - this.es * this.am1 * this.am1) * this.am1);\n    this.inverse = e_inv;\n    this.forward = e_fwd;\n  } else {\n    if (Math.abs(this.phi1) + EPS10 >= HALF_PI) {\n      this.cphi1 = 0;\n    }\n    else {\n      this.cphi1 = 1 / Math.tan(this.phi1);\n    }\n    this.inverse = s_inv;\n    this.forward = s_fwd;\n  }\n}\n\nfunction e_fwd(p) {\n  var lam = adjust_lon(p.x - (this.long0 || 0));\n  var phi = p.y;\n  var rh, E, c;\n  rh = this.am1 + this.m1 - pj_mlfn(phi, E = Math.sin(phi), c = Math.cos(phi), this.en);\n  E = c * lam / (rh * Math.sqrt(1 - this.es * E * E));\n  p.x = rh * Math.sin(E);\n  p.y = this.am1 - rh * Math.cos(E);\n\n  p.x = this.a * p.x + (this.x0 || 0);\n  p.y = this.a * p.y + (this.y0 || 0);\n  return p;\n}\n\nfunction e_inv(p) {\n  p.x = (p.x - (this.x0 || 0)) / this.a;\n  p.y = (p.y - (this.y0 || 0)) / this.a;\n\n  var s, rh, lam, phi;\n  rh = hypot(p.x, p.y = this.am1 - p.y);\n  phi = pj_inv_mlfn(this.am1 + this.m1 - rh, this.es, this.en);\n  if ((s = Math.abs(phi)) < HALF_PI) {\n    s = Math.sin(phi);\n    lam = rh * Math.atan2(p.x, p.y) * Math.sqrt(1 - this.es * s * s) / Math.cos(phi);\n  } else if (Math.abs(s - HALF_PI) <= EPS10) {\n    lam = 0;\n  }\n  else {\n    throw new Error();\n  }\n  p.x = adjust_lon(lam + (this.long0 || 0));\n  p.y = adjust_lat(phi);\n  return p;\n}\n\nfunction s_fwd(p) {\n  var lam = adjust_lon(p.x - (this.long0 || 0));\n  var phi = p.y;\n  var E, rh;\n  rh = this.cphi1 + this.phi1 - phi;\n  if (Math.abs(rh) > EPS10) {\n    p.x = rh * Math.sin(E = lam * Math.cos(phi) / rh);\n    p.y = this.cphi1 - rh * Math.cos(E);\n  } else {\n    p.x = p.y = 0;\n  }\n\n  p.x = this.a * p.x + (this.x0 || 0);\n  p.y = this.a * p.y + (this.y0 || 0);\n  return p;\n}\n\nfunction s_inv(p) {\n  p.x = (p.x - (this.x0 || 0)) / this.a;\n  p.y = (p.y - (this.y0 || 0)) / this.a;\n\n  var lam, phi;\n  var rh = hypot(p.x, p.y = this.cphi1 - p.y);\n  phi = this.cphi1 + this.phi1 - rh;\n  if (Math.abs(phi) > HALF_PI) {\n    throw new Error();\n  }\n  if (Math.abs(Math.abs(phi) - HALF_PI) <= EPS10) {\n    lam = 0;\n  } else {\n    lam = rh * Math.atan2(p.x, p.y) / Math.cos(phi);\n  }\n  p.x = adjust_lon(lam + (this.long0 || 0));\n  p.y = adjust_lat(phi);\n  return p;\n}\n\nexport var names = [\"bonne\", \"Bonne (Werner lat_1=90)\"];\nexport default {\n  init: init,\n  names: names\n};","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nimport geos from './lib/projections/geos';\nimport eqearth from './lib/projections/eqearth';\nimport bonne from './lib/projections/bonne';\nexport default function(proj4){\n  proj4.Proj.projections.add(tmerc);\n  proj4.Proj.projections.add(etmerc);\n  proj4.Proj.projections.add(utm);\n  proj4.Proj.projections.add(sterea);\n  proj4.Proj.projections.add(stere);\n  proj4.Proj.projections.add(somerc);\n  proj4.Proj.projections.add(omerc);\n  proj4.Proj.projections.add(lcc);\n  proj4.Proj.projections.add(krovak);\n  proj4.Proj.projections.add(cass);\n  proj4.Proj.projections.add(laea);\n  proj4.Proj.projections.add(aea);\n  proj4.Proj.projections.add(gnom);\n  proj4.Proj.projections.add(cea);\n  proj4.Proj.projections.add(eqc);\n  proj4.Proj.projections.add(poly);\n  proj4.Proj.projections.add(nzmg);\n  proj4.Proj.projections.add(mill);\n  proj4.Proj.projections.add(sinu);\n  proj4.Proj.projections.add(moll);\n  proj4.Proj.projections.add(eqdc);\n  proj4.Proj.projections.add(vandg);\n  proj4.Proj.projections.add(aeqd);\n  proj4.Proj.projections.add(ortho);\n  proj4.Proj.projections.add(qsc);\n  proj4.Proj.projections.add(robin);\n  proj4.Proj.projections.add(geocent);\n  proj4.Proj.projections.add(tpers);\n  proj4.Proj.projections.add(geos);\n  proj4.Proj.projections.add(eqearth);\n  proj4.Proj.projections.add(bonne);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport nadgrid from \"./nadgrid\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.nadgrid = nadgrid;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","/**\n * @module ol/proj/proj4\n */\nimport {\n  addCoordinateTransforms,\n  addEquivalentProjections,\n  addProjection,\n  createSafeCoordinateTransform,\n} from '../proj.js';\nimport Projection from './Projection.js';\nimport {get as getCachedProjection} from './projections.js';\nimport {get as getTransform} from './transforms.js';\n\n/**\n * @type {import(\"proj4\")|null}\n */\nlet registered = null;\n\n/**\n * @return {boolean} Proj4 has been registered.\n */\nexport function isRegistered() {\n  return !!registered;\n}\n\n/**\n * Unsets the shared proj4 previously set with register.\n */\nexport function unregister() {\n  registered = null;\n}\n\n/**\n * Make projections defined in proj4 (with `proj4.defs()`) available in\n * OpenLayers. Requires proj4 >= 2.8.0.\n *\n * This function should be called whenever changes are made to the proj4\n * registry, e.g. after calling `proj4.defs()`. Existing transforms will not be\n * modified by this function.\n *\n * @param {import(\"proj4\")} proj4 Proj4.\n * @api\n */\nexport function register(proj4) {\n  registered = proj4;\n\n  const projCodes = Object.keys(proj4.defs);\n  const len = projCodes.length;\n  let i, j;\n  for (i = 0; i < len; ++i) {\n    const code = projCodes[i];\n    if (!getCachedProjection(code)) {\n      const def = proj4.defs(code);\n      let units = /** @type {import(\"./Units.js\").Units} */ (def.units);\n      if (!units && def.projName === 'longlat') {\n        units = 'degrees';\n      }\n      addProjection(\n        new Projection({\n          code: code,\n          axisOrientation: def.axis,\n          metersPerUnit: def.to_meter,\n          units,\n        }),\n      );\n    }\n  }\n  for (i = 0; i < len; ++i) {\n    const code1 = projCodes[i];\n    const proj1 = getCachedProjection(code1);\n    for (j = 0; j < len; ++j) {\n      const code2 = projCodes[j];\n      const proj2 = getCachedProjection(code2);\n      if (!getTransform(code1, code2)) {\n        if (proj4.defs[code1] === proj4.defs[code2]) {\n          addEquivalentProjections([proj1, proj2]);\n        } else {\n          const transform = proj4(code1, code2);\n          addCoordinateTransforms(\n            proj1,\n            proj2,\n            createSafeCoordinateTransform(proj1, proj2, transform.forward),\n            createSafeCoordinateTransform(proj2, proj1, transform.inverse),\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * @param {number} code The EPSG code.\n * @return {Promise<string>} The proj4 definition.\n */\nlet epsgLookup = async function (code) {\n  const response = await fetch(`https://epsg.io/${code}.proj4`);\n  if (!response.ok) {\n    throw new Error(`Unexpected response from epsg.io: ${response.status}`);\n  }\n  return response.text();\n};\n\n/**\n * Set the lookup function for getting proj4 definitions given an EPSG code.\n * By default, the {@link module:ol/proj/proj4.fromEPSGCode} function uses the\n * epsg.io website for proj4 definitions.  This can be changed by providing a\n * different lookup function.\n *\n * @param {function(number):Promise<string>} func The lookup function.\n * @api\n */\nexport function setEPSGLookup(func) {\n  epsgLookup = func;\n}\n\n/**\n * Get the current EPSG lookup function.\n *\n * @return {function(number):Promise<string>} The EPSG lookup function.\n */\nexport function getEPSGLookup() {\n  return epsgLookup;\n}\n\n/**\n * Get a projection from an EPSG code.  This function fetches the projection\n * definition from the epsg.io website, registers this definition for use with\n * proj4, and returns a configured projection.  You must call import proj4 and\n * call {@link module:ol/proj/proj4.register} before using this function.\n *\n * If the projection definition is already registered with proj4, it will not\n * be fetched again (so it is ok to call this function multiple times with the\n * same code).\n *\n * @param {number|string} code The EPSG code (e.g. 4326 or 'EPSG:4326').\n * @return {Promise<Projection>} The projection.\n * @api\n */\nexport async function fromEPSGCode(code) {\n  if (typeof code === 'string') {\n    code = parseInt(code.split(':').pop(), 10);\n  }\n\n  const proj4 = registered;\n  if (!proj4) {\n    throw new Error('Proj4 must be registered first with register(proj4)');\n  }\n\n  const epsgCode = 'EPSG:' + code;\n  if (proj4.defs(epsgCode)) {\n    return getCachedProjection(epsgCode);\n  }\n\n  proj4.defs(epsgCode, await epsgLookup(code));\n  register(proj4);\n\n  return getCachedProjection(epsgCode);\n}\n\n/**\n * Generate an EPSG lookup function which uses the MapTiler Coordinates API to find projection\n * definitions which do not require proj4 to be configured to handle `+nadgrids` parameters.\n * Call {@link module:ol/proj/proj4.setEPSGLookup} use the function for lookups\n * `setEPSGLookup(epsgLookupMapTiler('{YOUR_MAPTILER_API_KEY_HERE}'))`.\n *\n * @param {string} key MapTiler API key.  Get your own API key at https://www.maptiler.com/cloud/.\n * @return {function(number):Promise<string>} The EPSG lookup function.\n * @api\n */\nexport function epsgLookupMapTiler(key) {\n  return async function (code) {\n    const response = await fetch(\n      `https://api.maptiler.com/coordinates/search/code:${code}.json?transformations=true&exports=true&key=${key}`,\n    );\n    if (!response.ok) {\n      throw new Error(\n        `Unexpected response from maptiler.com: ${response.status}`,\n      );\n    }\n    return response.json().then((json) => {\n      const results = json['results'];\n      if (results?.length > 0) {\n        const result = results.filter(\n          (r) =>\n            r['id']?.['authority'] === 'EPSG' && r['id']?.['code'] === code,\n        )[0];\n        if (result) {\n          const transforms = result['transformations'];\n          if (transforms?.length > 0) {\n            // use default transform if it does not require grids\n            const defaultTransform = result['default_transformation'];\n            if (\n              transforms.filter(\n                (t) =>\n                  t['id']?.['authority'] === defaultTransform?.['authority'] &&\n                  t['id']?.['code'] === defaultTransform?.['code'] &&\n                  t['grids']?.length === 0,\n              ).length > 0\n            ) {\n              return result['exports']?.['proj4'];\n            }\n            // otherwise use most accurate alternative without grids\n            const transform = transforms\n              .filter(\n                (t) =>\n                  t['grids']?.length === 0 &&\n                  t['target_crs']?.['authority'] === 'EPSG' &&\n                  t['target_crs']?.['code'] === 4326 &&\n                  t['deprecated'] === false &&\n                  t['usable'] === true,\n              )\n              .sort((t1, t2) => t1['accuracy'] - t2['accuracy'])[0]?.[\n              'exports'\n            ]?.['proj4'];\n            if (transform) {\n              return transform;\n            }\n          }\n          // fallback to default\n          return result['exports']?.['proj4'];\n        }\n      }\n    });\n  };\n}\n","import proj4 from \"proj4\";\r\nimport * as Proj from \"ol/proj.js\";\r\nimport {register} from \"ol/proj/proj4.js\";\r\nimport defaults from \"./defaults\";\r\n\r\n\r\n/**\r\n * Creates an alias for the srsName.\r\n * This is necessary for WFS from geoserver.org.\r\n * @param {string} epsgCode used epsg code in the mapView\r\n * @returns {void}\r\n */\r\nfunction addAliasForWFSFromGeoserver (epsgCode) {\r\n    const epsgCodeNumber = epsgCode.split(\":\")[1];\r\n\r\n    proj4.defs(\"http://www.opengis.net/gml/srs/epsg.xml#\" + epsgCodeNumber, proj4.defs(epsgCode));\r\n    register(proj4);\r\n}\r\n\r\n/**\r\n * Returns the proj4 projection definition for a registered name.\r\n * @param {string} name - projection name as written in [0] position of namedProjections\r\n * @returns {(object|undefined)} proj4 projection object or undefined\r\n */\r\nfunction getProjection (name) {\r\n    return proj4.defs(name);\r\n}\r\n\r\n/**\r\n * The configured named projections and proj4 have to be registered initially.\r\n * @param {string[]} [namedProjections=[\r\n        [\"EPSG:25832\", \"+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"]\r\n    ]] - projection name, projection definition string\r\n * @returns {undefined}\r\n */\r\nfunction registerProjections (namedProjections = defaults.namedProjections) {\r\n    proj4.defs(namedProjections);\r\n    register(proj4);\r\n    namedProjections.forEach(projection => {\r\n        Proj.addProjection(Proj.get(projection[0]));\r\n        addAliasForWFSFromGeoserver(projection[0]);\r\n        getProjection(projection[0]).masterportal = true;\r\n    });\r\n\r\n}\r\n\r\n/**\r\n * Returns all known projections.\r\n * @returns {object[]} array of projection objects with their name added\r\n */\r\nfunction getProjections () {\r\n    const projections = Object\r\n        .keys(proj4.defs)\r\n        .map(name => Object.assign(proj4.defs(name), {name}));\r\n\r\n    // return no duplicates and only the projections which are registred with masterportal=true\r\n    return projections.filter(function (projection, index, self) {\r\n        return index === self.indexOf(projection) && projection.masterportal === true;\r\n    });\r\n}\r\n\r\n/**\r\n * Returns the currently active projection's name of a map's view.\r\n * @param {ol.Map} map - map to get projection of\r\n * @returns {string} active projection name of map\r\n */\r\nfunction getMapProjection (map) {\r\n    return map.getView().getProjection().getCode();\r\n}\r\n\r\n/**\r\n * Resolves a string to a projection object; everything else is returned as-is.\r\n * If a string can not be resolved, returns undefined.\r\n * @param {(string|object)} projection - projection name or projection\r\n * @returns {(object|undefined)} proj4 projection or undefined or parameter\r\n */\r\nfunction getProj4Projection (projection) {\r\n    return typeof projection === \"string\"\r\n        ? getProjection(projection)\r\n        : projection;\r\n}\r\n\r\n/**\r\n * Transforms a given point from a source to a target projection.\r\n * @param {(string|object)} sourceProjection - projection name or projection of point\r\n * @param {(string|object)} targetProjection - projection name or projection to project point to\r\n * @param {number[]} point - point to project\r\n * @returns {number[]|undefined} transformed point\r\n */\r\nfunction transform (sourceProjection, targetProjection, point) {\r\n    const source = getProj4Projection(sourceProjection),\r\n        target = getProj4Projection(targetProjection);\r\n\r\n    if (source && target && point) {\r\n        return proj4(source, target, point);\r\n    }\r\n\r\n    console.error(`Cancelled coordinate transformation with invalid parameters: ${sourceProjection}; ${targetProjection}; ${point}`);\r\n    return undefined;\r\n}\r\n\r\n/**\r\n * Projects a point to the given map.\r\n * @param {ol.Map} map - map to project to\r\n * @param {(string|object)} sourceProjection - projection name or projection of point\r\n * @param {number[]} point - point to project\r\n * @returns {number[]|undefined} new point or undefined\r\n */\r\nfunction transformToMapProjection (map, sourceProjection, point) {\r\n    return transform(sourceProjection, getMapProjection(map), point);\r\n}\r\n\r\n/**\r\n * Projects a point from the given map.\r\n * @param {ol.Map} map - map to project from, and point must be in map's projection\r\n * @param {(string|object)} targetProjection - projection name or projection to project to\r\n * @param {number[]} point - point to project\r\n * @returns {(number[]|undefined)} new point or undefined\r\n */\r\nfunction transformFromMapProjection (map, targetProjection, point) {\r\n    return transform(getMapProjection(map), targetProjection, point);\r\n}\r\n\r\nexport default {\r\n    transformFromMapProjection,\r\n    transformToMapProjection,\r\n    transform,\r\n    getMapProjection,\r\n    getProjections,\r\n    registerProjections,\r\n    getProjection\r\n};\r\n","import defaults from \"./defaults\";\r\n\r\n/** layerList that contains all known services.\r\n * @type{Array}\r\n * @ignore\r\n */\r\nlet layerList = [];\r\n\r\n/**\r\n * Initializes the layer list with either an object or an URL. May be used again to override the layer list.\r\n * createMap will call this for you, but won't notify you of when it's done. Use this function manually with a\r\n * callback to know when layers can be added programmatically.\r\n * @param {(string|object)} [layerConf=\"https://geoportal-hamburg.de/lgv-config/services-internet.json\"] - either the URL to fetch the services from, or the object containing the services\r\n * @param {function} [callback] - called with services after loaded; called with false and error on error\r\n * @returns {undefined} nothing, add callback to receive layerList\r\n */\r\nfunction initializeLayerList (layerConf = defaults.layerConf, callback) {\r\n    if (Array.isArray(layerConf)) {\r\n        // case: parameter was services.json contents\r\n        layerList = layerConf;\r\n        if (typeof callback === \"function\") {\r\n            callback(layerList);\r\n            return;\r\n        }\r\n        return;\r\n    }\r\n\r\n    // case: parameter is URL\r\n    fetch(layerConf, {method: \"GET\", timeout: 10000})\r\n        .then((response) => {\r\n            response.json()\r\n                .then((json) => {\r\n                    layerList = json;\r\n                    if (typeof callback === \"function\") {\r\n                        return callback(layerList);\r\n                    }\r\n                    return true;\r\n                })\r\n                .catch((error) => {\r\n                    console.error(\"An error occured when parsing the response after loading '\" + layerConf + \"':\", error);\r\n                    return callback(false, error);\r\n                });\r\n        })\r\n        .catch((error) => {\r\n            console.error(\"An error occured when trying to fetch services from '\" + layerConf + \"':\", error);\r\n            callback(false, error);\r\n        });\r\n}\r\n\r\n/**\r\n * Returns the first entry in layerList matching the given searchAttributes.\r\n * @param {object} searchAttributes - key/value-pairs to be searched for, e.g. { typ: \"WMS\" } to get the first WMS\r\n * @returns {?object} first layer matching the searchAttributes or null if none was found\r\n */\r\nfunction getLayerWhere (searchAttributes) {\r\n    const keys = Object.keys(searchAttributes);\r\n\r\n    return layerList.find(entry => keys.every(key => entry[key] === searchAttributes[key])) || null;\r\n}\r\n\r\n/** @returns {object[]} complete layerList as initialized */\r\nfunction getLayerList () {\r\n    return layerList;\r\n}\r\n\r\n/**\r\n * Returns display names map for a layer, or display name for a specific attribute.\r\n * @param {string} layerId - if of layer to fetch display names for\r\n * @param {string} [featureAttribute] - if given, only one entry of map is returned\r\n * @returns {?(object|string)} - map of originalName->displayName or name of featureAttribute if specified; if layer or featureAttribute not found, null\r\n */\r\nfunction getDisplayNamesOfFeatureAttributes (layerId, featureAttribute) {\r\n    const attributes = getLayerWhere({id: layerId});\r\n\r\n    if (attributes && typeof featureAttribute === \"string\") {\r\n        const displayName = attributes.gfiAttributes && attributes.gfiAttributes[featureAttribute];\r\n\r\n        return typeof displayName === \"string\" ? displayName : null;\r\n    }\r\n    else if (attributes) {\r\n        return attributes.gfiAttributes || null;\r\n    }\r\n\r\n    return null;\r\n}\r\n\r\n\r\nexport default {\r\n    getLayerWhere,\r\n    getDisplayNamesOfFeatureAttributes,\r\n    initializeLayerList,\r\n    getLayerList\r\n};\r\n","/**\n * @module ol/DataTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\n\n/**\n * @typedef {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement|ImageBitmap} ImageLike\n */\n\n/**\n * @typedef {Uint8Array|Uint8ClampedArray|Float32Array|DataView} ArrayLike\n */\n\n/**\n * Data that can be used with a DataTile.\n * @typedef {ArrayLike|ImageLike} Data\n */\n\n/**\n * @param {Data} data Tile data.\n * @return {ImageLike|null} The image-like data.\n */\nexport function asImageLike(data) {\n  return data instanceof Image ||\n    data instanceof HTMLCanvasElement ||\n    data instanceof HTMLVideoElement ||\n    data instanceof ImageBitmap\n    ? data\n    : null;\n}\n\n/**\n * @param {Data} data Tile data.\n * @return {ArrayLike|null} The array-like data.\n */\nexport function asArrayLike(data) {\n  return data instanceof Uint8Array ||\n    data instanceof Uint8ClampedArray ||\n    data instanceof Float32Array ||\n    data instanceof DataView\n    ? data\n    : null;\n}\n\n/**\n * This is set as the cancellation reason when a tile is disposed.\n */\nexport const disposedError = new Error('disposed');\n\n/**\n * @type {CanvasRenderingContext2D|null}\n */\nlet sharedContext = null;\n\n/**\n * @param {ImageLike} image The image.\n * @return {Uint8ClampedArray} The data.\n */\nexport function toArray(image) {\n  if (!sharedContext) {\n    sharedContext = createCanvasContext2D(\n      image.width,\n      image.height,\n      undefined,\n      {willReadFrequently: true},\n    );\n  }\n  const canvas = sharedContext.canvas;\n  const width = image.width;\n  if (canvas.width !== width) {\n    canvas.width = width;\n  }\n  const height = image.height;\n  if (canvas.height !== height) {\n    canvas.height = height;\n  }\n  sharedContext.clearRect(0, 0, width, height);\n  sharedContext.drawImage(image, 0, 0);\n  return sharedContext.getImageData(0, 0, width, height).data;\n}\n\n/**\n * @type {import('./size.js').Size}\n */\nconst defaultSize = [256, 256];\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @property {function(): Promise<Data>} loader Data loader.  For loaders that generate images,\n * the promise should not resolve until the image is loaded.\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n * @property {import('./size.js').Size} [size=[256, 256]] Tile size.\n * @property {AbortController} [controller] An abort controller.\n * @api\n */\n\nclass DataTile extends Tile {\n  /**\n   * @param {Options} options Tile options.\n   */\n  constructor(options) {\n    const state = TileState.IDLE;\n\n    super(options.tileCoord, state, {\n      transition: options.transition,\n      interpolate: options.interpolate,\n    });\n\n    /**\n     * @type {function(): Promise<Data>}\n     * @private\n     */\n    this.loader_ = options.loader;\n\n    /**\n     * @type {Data}\n     * @private\n     */\n    this.data_ = null;\n\n    /**\n     * @type {Error}\n     * @private\n     */\n    this.error_ = null;\n\n    /**\n     * @type {import('./size.js').Size|null}\n     * @private\n     */\n    this.size_ = options.size || null;\n\n    /**\n     * @type {AbortController|null}\n     * @private\n     */\n    this.controller_ = options.controller || null;\n  }\n\n  /**\n   * Get the tile size.\n   * @return {import('./size.js').Size} Tile size.\n   */\n  getSize() {\n    if (this.size_) {\n      return this.size_;\n    }\n    const imageData = asImageLike(this.data_);\n    if (imageData) {\n      return [imageData.width, imageData.height];\n    }\n    return defaultSize;\n  }\n\n  /**\n   * Get the data for the tile.\n   * @return {Data} Tile data.\n   * @api\n   */\n  getData() {\n    return this.data_;\n  }\n\n  /**\n   * Get any loading error.\n   * @return {Error} Loading error.\n   * @api\n   */\n  getError() {\n    return this.error_;\n  }\n\n  /**\n   * Load the tile data.\n   * @api\n   * @override\n   */\n  load() {\n    if (this.state !== TileState.IDLE && this.state !== TileState.ERROR) {\n      return;\n    }\n    this.state = TileState.LOADING;\n    this.changed();\n\n    const self = this;\n    this.loader_()\n      .then(function (data) {\n        self.data_ = data;\n        self.state = TileState.LOADED;\n        self.changed();\n      })\n      .catch(function (error) {\n        self.error_ = error;\n        self.state = TileState.ERROR;\n        self.changed();\n      });\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.controller_) {\n      this.controller_.abort(disposedError);\n      this.controller_ = null;\n    }\n    super.disposeInternal();\n  }\n}\n\nexport default DataTile;\n","/**\n * @module ol/reproj\n */\nimport {createCanvasContext2D, releaseCanvas} from './dom.js';\nimport {\n  containsCoordinate,\n  createEmpty,\n  extend,\n  forEachCorner,\n  getCenter,\n  getHeight,\n  getTopLeft,\n  getWidth,\n} from './extent.js';\nimport {solveLinearSystem} from './math.js';\nimport {getPointResolution, transform} from './proj.js';\n\nlet brokenDiagonalRendering_;\n\n/**\n * @type {Array<HTMLCanvasElement>}\n */\nexport const canvasPool = [];\n\n/**\n * This draws a small triangle into a canvas by setting the triangle as the clip region\n * and then drawing a (too large) rectangle\n *\n * @param {CanvasRenderingContext2D} ctx The context in which to draw the triangle\n * @param {number} u1 The x-coordinate of the second point. The first point is 0,0.\n * @param {number} v1 The y-coordinate of the second point.\n * @param {number} u2 The x-coordinate of the third point.\n * @param {number} v2 The y-coordinate of the third point.\n */\nfunction drawTestTriangle(ctx, u1, v1, u2, v2) {\n  ctx.beginPath();\n  ctx.moveTo(0, 0);\n  ctx.lineTo(u1, v1);\n  ctx.lineTo(u2, v2);\n  ctx.closePath();\n  ctx.save();\n  ctx.clip();\n  ctx.fillRect(0, 0, Math.max(u1, u2) + 1, Math.max(v1, v2));\n  ctx.restore();\n}\n\n/**\n * Given the data from getImageData, see if the right values appear at the provided offset.\n * Returns true if either the color or transparency is off\n *\n * @param {Uint8ClampedArray} data The data returned from getImageData\n * @param {number} offset The pixel offset from the start of data.\n * @return {boolean} true if the diagonal rendering is broken\n */\nfunction verifyBrokenDiagonalRendering(data, offset) {\n  // the values ought to be close to the rgba(210, 0, 0, 0.75)\n  return (\n    Math.abs(data[offset * 4] - 210) > 2 ||\n    Math.abs(data[offset * 4 + 3] - 0.75 * 255) > 2\n  );\n}\n\n/**\n * Determines if the current browser configuration can render triangular clip regions correctly.\n * This value is cached so the function is only expensive the first time called.\n * Firefox on Windows (as of now) does not if HWA is enabled. See https://bugzilla.mozilla.org/show_bug.cgi?id=1606976\n * Chrome works, and everything seems to work on OSX and Android. This function caches the\n * result. I suppose that it is conceivably possible that a browser might flip modes while the app is\n * running, but lets hope not.\n *\n * @return {boolean} true if the Diagonal Rendering is broken.\n */\nfunction isBrokenDiagonalRendering() {\n  if (brokenDiagonalRendering_ === undefined) {\n    const ctx = createCanvasContext2D(6, 6, canvasPool);\n    ctx.globalCompositeOperation = 'lighter';\n    ctx.fillStyle = 'rgba(210, 0, 0, 0.75)';\n    drawTestTriangle(ctx, 4, 5, 4, 0);\n    drawTestTriangle(ctx, 4, 5, 0, 5);\n    const data = ctx.getImageData(0, 0, 3, 3).data;\n    brokenDiagonalRendering_ =\n      verifyBrokenDiagonalRendering(data, 0) ||\n      verifyBrokenDiagonalRendering(data, 4) ||\n      verifyBrokenDiagonalRendering(data, 8);\n    releaseCanvas(ctx);\n    canvasPool.push(ctx.canvas);\n  }\n\n  return brokenDiagonalRendering_;\n}\n\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./coordinate.js\").Coordinate} targetCenter Target center.\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceResolution(\n  sourceProj,\n  targetProj,\n  targetCenter,\n  targetResolution,\n) {\n  const sourceCenter = transform(targetCenter, targetProj, sourceProj);\n\n  // calculate the ideal resolution of the source data\n  let sourceResolution = getPointResolution(\n    targetProj,\n    targetResolution,\n    targetCenter,\n  );\n\n  const targetMetersPerUnit = targetProj.getMetersPerUnit();\n  if (targetMetersPerUnit !== undefined) {\n    sourceResolution *= targetMetersPerUnit;\n  }\n  const sourceMetersPerUnit = sourceProj.getMetersPerUnit();\n  if (sourceMetersPerUnit !== undefined) {\n    sourceResolution /= sourceMetersPerUnit;\n  }\n\n  // Based on the projection properties, the point resolution at the specified\n  // coordinates may be slightly different. We need to reverse-compensate this\n  // in order to achieve optimal results.\n\n  const sourceExtent = sourceProj.getExtent();\n  if (!sourceExtent || containsCoordinate(sourceExtent, sourceCenter)) {\n    const compensationFactor =\n      getPointResolution(sourceProj, sourceResolution, sourceCenter) /\n      sourceResolution;\n    if (isFinite(compensationFactor) && compensationFactor > 0) {\n      sourceResolution /= compensationFactor;\n    }\n  }\n\n  return sourceResolution;\n}\n\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceExtentResolution(\n  sourceProj,\n  targetProj,\n  targetExtent,\n  targetResolution,\n) {\n  const targetCenter = getCenter(targetExtent);\n  let sourceResolution = calculateSourceResolution(\n    sourceProj,\n    targetProj,\n    targetCenter,\n    targetResolution,\n  );\n\n  if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n    forEachCorner(targetExtent, function (corner) {\n      sourceResolution = calculateSourceResolution(\n        sourceProj,\n        targetProj,\n        corner,\n        targetResolution,\n      );\n      return isFinite(sourceResolution) && sourceResolution > 0;\n    });\n  }\n\n  return sourceResolution;\n}\n\n/**\n * @typedef {Object} ImageExtent\n * @property {import(\"./extent.js\").Extent} extent Extent.\n * @property {import(\"./extent.js\").Extent} [clipExtent] Clip extent.\n * @property {import('./DataTile.js').ImageLike} image Image.\n */\n\n/**\n * Renders the source data into new canvas based on the triangulation.\n *\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} sourceResolution Source resolution.\n * @param {import(\"./extent.js\").Extent} sourceExtent Extent of the data source.\n * @param {number} targetResolution Target resolution.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent.\n * @param {import(\"./reproj/Triangulation.js\").default} triangulation Calculated triangulation.\n * @param {Array<ImageExtent>} sources Array of sources.\n * @param {number} gutter Gutter of the sources.\n * @param {boolean} [renderEdges] Render reprojection edges.\n * @param {boolean} [interpolate] Use linear interpolation when resampling.\n * @param {boolean} [drawSingle] Draw single source images directly without stitchContext.\n * @param {boolean} [clipExtent] Clip stitchContext to sourceExtent.\n * @return {HTMLCanvasElement} Canvas with reprojected data.\n */\nexport function render(\n  width,\n  height,\n  pixelRatio,\n  sourceResolution,\n  sourceExtent,\n  targetResolution,\n  targetExtent,\n  triangulation,\n  sources,\n  gutter,\n  renderEdges,\n  interpolate,\n  drawSingle,\n  clipExtent,\n) {\n  const context = createCanvasContext2D(\n    Math.round(pixelRatio * width),\n    Math.round(pixelRatio * height),\n    canvasPool,\n  );\n\n  if (!interpolate) {\n    context.imageSmoothingEnabled = false;\n  }\n\n  if (sources.length === 0) {\n    return context.canvas;\n  }\n\n  context.scale(pixelRatio, pixelRatio);\n\n  function pixelRound(value) {\n    return Math.round(value * pixelRatio) / pixelRatio;\n  }\n\n  context.globalCompositeOperation = 'lighter';\n\n  const sourceDataExtent = createEmpty();\n  sources.forEach(function (src, i, arr) {\n    extend(sourceDataExtent, src.extent);\n  });\n\n  let stitchContext;\n  const stitchScale = pixelRatio / sourceResolution;\n  // Round up Float32 scale values to prevent interpolation in Firefox.\n  const inverseScale = (interpolate ? 1 : 1 + Math.pow(2, -24)) / stitchScale;\n\n  if (!drawSingle || sources.length !== 1 || gutter !== 0) {\n    stitchContext = createCanvasContext2D(\n      Math.round(getWidth(sourceDataExtent) * stitchScale),\n      Math.round(getHeight(sourceDataExtent) * stitchScale),\n      canvasPool,\n    );\n\n    if (!interpolate) {\n      stitchContext.imageSmoothingEnabled = false;\n    }\n    if (sourceExtent && clipExtent) {\n      const xPos = (sourceExtent[0] - sourceDataExtent[0]) * stitchScale;\n      const yPos = -(sourceExtent[3] - sourceDataExtent[3]) * stitchScale;\n      const width = getWidth(sourceExtent) * stitchScale;\n      const height = getHeight(sourceExtent) * stitchScale;\n      stitchContext.rect(xPos, yPos, width, height);\n      stitchContext.clip();\n    }\n\n    sources.forEach(function (src, i, arr) {\n      // This test should never fail -- but it does. Need to find a fix the upstream condition\n      if (src.image.width > 0 && src.image.height > 0) {\n        if (src.clipExtent) {\n          stitchContext.save();\n          const xPos = (src.clipExtent[0] - sourceDataExtent[0]) * stitchScale;\n          const yPos = -(src.clipExtent[3] - sourceDataExtent[3]) * stitchScale;\n          const width = getWidth(src.clipExtent) * stitchScale;\n          const height = getHeight(src.clipExtent) * stitchScale;\n          stitchContext.rect(\n            interpolate ? xPos : Math.round(xPos),\n            interpolate ? yPos : Math.round(yPos),\n            interpolate ? width : Math.round(xPos + width) - Math.round(xPos),\n            interpolate ? height : Math.round(yPos + height) - Math.round(yPos),\n          );\n          stitchContext.clip();\n        }\n\n        const xPos = (src.extent[0] - sourceDataExtent[0]) * stitchScale;\n        const yPos = -(src.extent[3] - sourceDataExtent[3]) * stitchScale;\n        const srcWidth = getWidth(src.extent) * stitchScale;\n        const srcHeight = getHeight(src.extent) * stitchScale;\n        stitchContext.drawImage(\n          src.image,\n          gutter,\n          gutter,\n          src.image.width - 2 * gutter,\n          src.image.height - 2 * gutter,\n          interpolate ? xPos : Math.round(xPos),\n          interpolate ? yPos : Math.round(yPos),\n          interpolate\n            ? srcWidth\n            : Math.round(xPos + srcWidth) - Math.round(xPos),\n          interpolate\n            ? srcHeight\n            : Math.round(yPos + srcHeight) - Math.round(yPos),\n        );\n\n        if (src.clipExtent) {\n          stitchContext.restore();\n        }\n      }\n    });\n  }\n  const targetTopLeft = getTopLeft(targetExtent);\n\n  triangulation.getTriangles().forEach(function (triangle, i, arr) {\n    /* Calculate affine transform (src -> dst)\n     * Resulting matrix can be used to transform coordinate\n     * from `sourceProjection` to destination pixels.\n     *\n     * To optimize number of context calls and increase numerical stability,\n     * we also do the following operations:\n     * trans(-topLeftExtentCorner), scale(1 / targetResolution), scale(1, -1)\n     * here before solving the linear system so [ui, vi] are pixel coordinates.\n     *\n     * Src points: xi, yi\n     * Dst points: ui, vi\n     * Affine coefficients: aij\n     *\n     * | x0 y0 1  0  0 0 |   |a00|   |u0|\n     * | x1 y1 1  0  0 0 |   |a01|   |u1|\n     * | x2 y2 1  0  0 0 | x |a02| = |u2|\n     * |  0  0 0 x0 y0 1 |   |a10|   |v0|\n     * |  0  0 0 x1 y1 1 |   |a11|   |v1|\n     * |  0  0 0 x2 y2 1 |   |a12|   |v2|\n     */\n    const source = triangle.source;\n    const target = triangle.target;\n    let x0 = source[0][0],\n      y0 = source[0][1];\n    let x1 = source[1][0],\n      y1 = source[1][1];\n    let x2 = source[2][0],\n      y2 = source[2][1];\n    // Make sure that everything is on pixel boundaries\n    const u0 = pixelRound((target[0][0] - targetTopLeft[0]) / targetResolution);\n    const v0 = pixelRound(\n      -(target[0][1] - targetTopLeft[1]) / targetResolution,\n    );\n    const u1 = pixelRound((target[1][0] - targetTopLeft[0]) / targetResolution);\n    const v1 = pixelRound(\n      -(target[1][1] - targetTopLeft[1]) / targetResolution,\n    );\n    const u2 = pixelRound((target[2][0] - targetTopLeft[0]) / targetResolution);\n    const v2 = pixelRound(\n      -(target[2][1] - targetTopLeft[1]) / targetResolution,\n    );\n\n    // Shift all the source points to improve numerical stability\n    // of all the subsequent calculations. The [x0, y0] is used here.\n    // This is also used to simplify the linear system.\n    const sourceNumericalShiftX = x0;\n    const sourceNumericalShiftY = y0;\n    x0 = 0;\n    y0 = 0;\n    x1 -= sourceNumericalShiftX;\n    y1 -= sourceNumericalShiftY;\n    x2 -= sourceNumericalShiftX;\n    y2 -= sourceNumericalShiftY;\n\n    const augmentedMatrix = [\n      [x1, y1, 0, 0, u1 - u0],\n      [x2, y2, 0, 0, u2 - u0],\n      [0, 0, x1, y1, v1 - v0],\n      [0, 0, x2, y2, v2 - v0],\n    ];\n    const affineCoefs = solveLinearSystem(augmentedMatrix);\n    if (!affineCoefs) {\n      return;\n    }\n\n    context.save();\n    context.beginPath();\n\n    if (isBrokenDiagonalRendering() || !interpolate) {\n      // Make sure that all lines are horizontal or vertical\n      context.moveTo(u1, v1);\n      // This is the diagonal line. Do it in 4 steps\n      const steps = 4;\n      const ud = u0 - u1;\n      const vd = v0 - v1;\n      for (let step = 0; step < steps; step++) {\n        // Go horizontally\n        context.lineTo(\n          u1 + pixelRound(((step + 1) * ud) / steps),\n          v1 + pixelRound((step * vd) / (steps - 1)),\n        );\n        // Go vertically\n        if (step != steps - 1) {\n          context.lineTo(\n            u1 + pixelRound(((step + 1) * ud) / steps),\n            v1 + pixelRound(((step + 1) * vd) / (steps - 1)),\n          );\n        }\n      }\n      // We are almost at u0r, v0r\n      context.lineTo(u2, v2);\n    } else {\n      context.moveTo(u1, v1);\n      context.lineTo(u0, v0);\n      context.lineTo(u2, v2);\n    }\n\n    context.clip();\n\n    context.transform(\n      affineCoefs[0],\n      affineCoefs[2],\n      affineCoefs[1],\n      affineCoefs[3],\n      u0,\n      v0,\n    );\n\n    context.translate(\n      sourceDataExtent[0] - sourceNumericalShiftX,\n      sourceDataExtent[3] - sourceNumericalShiftY,\n    );\n\n    let image;\n    if (stitchContext) {\n      image = stitchContext.canvas;\n      context.scale(inverseScale, -inverseScale);\n    } else {\n      const source = sources[0];\n      const extent = source.extent;\n      image = source.image;\n      context.scale(\n        getWidth(extent) / image.width,\n        -getHeight(extent) / image.height,\n      );\n    }\n\n    context.drawImage(image, 0, 0);\n    context.restore();\n  });\n\n  if (stitchContext) {\n    releaseCanvas(stitchContext);\n    canvasPool.push(stitchContext.canvas);\n  }\n\n  if (renderEdges) {\n    context.save();\n\n    context.globalCompositeOperation = 'source-over';\n    context.strokeStyle = 'black';\n    context.lineWidth = 1;\n\n    triangulation.getTriangles().forEach(function (triangle, i, arr) {\n      const target = triangle.target;\n      const u0 = (target[0][0] - targetTopLeft[0]) / targetResolution;\n      const v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution;\n      const u1 = (target[1][0] - targetTopLeft[0]) / targetResolution;\n      const v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution;\n      const u2 = (target[2][0] - targetTopLeft[0]) / targetResolution;\n      const v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution;\n\n      context.beginPath();\n      context.moveTo(u1, v1);\n      context.lineTo(u0, v0);\n      context.lineTo(u2, v2);\n      context.closePath();\n      context.stroke();\n    });\n\n    context.restore();\n  }\n  return context.canvas;\n}\n","/**\n * @module ol/reproj/Triangulation\n */\nimport {\n  boundingExtent,\n  createEmpty,\n  extendCoordinate,\n  getArea,\n  getBottomLeft,\n  getBottomRight,\n  getTopLeft,\n  getTopRight,\n  getWidth,\n  intersects,\n} from '../extent.js';\nimport {modulo} from '../math.js';\nimport {\n  createTransformFromCoordinateTransform,\n  getTransform,\n  transform,\n} from '../proj.js';\nimport {apply as applyMatrix} from '../transform.js';\n\n/**\n * Single triangle; consists of 3 source points and 3 target points.\n * @typedef {Object} Triangle\n * @property {Array<import(\"../coordinate.js\").Coordinate>} source Source.\n * @property {Array<import(\"../coordinate.js\").Coordinate>} target Target.\n */\n\n/**\n * Maximum number of subdivision steps during raster reprojection triangulation.\n * Prevents high memory usage and large number of proj4 calls (for certain\n * transformations and areas). At most `2*(2^this)` triangles are created for\n * each triangulated extent (tile/image).\n * @type {number}\n */\nconst MAX_SUBDIVISION = 10;\n\n/**\n * Maximum allowed size of triangle relative to world width. When transforming\n * corners of world extent between certain projections, the resulting\n * triangulation seems to have zero error and no subdivision is performed. If\n * the triangle width is more than this (relative to world width; 0-1),\n * subdivison is forced (up to `MAX_SUBDIVISION`). Default is `0.25`.\n * @type {number}\n */\nconst MAX_TRIANGLE_WIDTH = 0.25;\n\n/**\n * @classdesc\n * Class containing triangulation of the given target extent.\n * Used for determining source data and the reprojection itself.\n */\nclass Triangulation {\n  /**\n   * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n   * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n   * @param {import(\"../extent.js\").Extent} targetExtent Target extent to triangulate.\n   * @param {import(\"../extent.js\").Extent} maxSourceExtent Maximal source extent that can be used.\n   * @param {number} errorThreshold Acceptable error (in source units).\n   * @param {?number} destinationResolution The (optional) resolution of the destination.\n   * @param {import(\"../transform.js\").Transform} [sourceMatrix] Source transform matrix.\n   */\n  constructor(\n    sourceProj,\n    targetProj,\n    targetExtent,\n    maxSourceExtent,\n    errorThreshold,\n    destinationResolution,\n    sourceMatrix,\n  ) {\n    /**\n     * @type {import(\"../proj/Projection.js\").default}\n     * @private\n     */\n    this.sourceProj_ = sourceProj;\n\n    /**\n     * @type {import(\"../proj/Projection.js\").default}\n     * @private\n     */\n    this.targetProj_ = targetProj;\n\n    /** @type {!Object<string, import(\"../coordinate.js\").Coordinate>} */\n    let transformInvCache = {};\n    const transformInv = sourceMatrix\n      ? createTransformFromCoordinateTransform((input) =>\n          applyMatrix(\n            sourceMatrix,\n            transform(input, this.targetProj_, this.sourceProj_),\n          ),\n        )\n      : getTransform(this.targetProj_, this.sourceProj_);\n\n    /**\n     * @param {import(\"../coordinate.js\").Coordinate} c A coordinate.\n     * @return {import(\"../coordinate.js\").Coordinate} Transformed coordinate.\n     * @private\n     */\n    this.transformInv_ = function (c) {\n      const key = c[0] + '/' + c[1];\n      if (!transformInvCache[key]) {\n        transformInvCache[key] = transformInv(c);\n      }\n      return transformInvCache[key];\n    };\n\n    /**\n     * @type {import(\"../extent.js\").Extent}\n     * @private\n     */\n    this.maxSourceExtent_ = maxSourceExtent;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.errorThresholdSquared_ = errorThreshold * errorThreshold;\n\n    /**\n     * @type {Array<Triangle>}\n     * @private\n     */\n    this.triangles_ = [];\n\n    /**\n     * Indicates that the triangulation crosses edge of the source projection.\n     * @type {boolean}\n     * @private\n     */\n    this.wrapsXInSource_ = false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.canWrapXInSource_ =\n      this.sourceProj_.canWrapX() &&\n      !!maxSourceExtent &&\n      !!this.sourceProj_.getExtent() &&\n      getWidth(maxSourceExtent) >= getWidth(this.sourceProj_.getExtent());\n\n    /**\n     * @type {?number}\n     * @private\n     */\n    this.sourceWorldWidth_ = this.sourceProj_.getExtent()\n      ? getWidth(this.sourceProj_.getExtent())\n      : null;\n\n    /**\n     * @type {?number}\n     * @private\n     */\n    this.targetWorldWidth_ = this.targetProj_.getExtent()\n      ? getWidth(this.targetProj_.getExtent())\n      : null;\n\n    const destinationTopLeft = getTopLeft(targetExtent);\n    const destinationTopRight = getTopRight(targetExtent);\n    const destinationBottomRight = getBottomRight(targetExtent);\n    const destinationBottomLeft = getBottomLeft(targetExtent);\n    const sourceTopLeft = this.transformInv_(destinationTopLeft);\n    const sourceTopRight = this.transformInv_(destinationTopRight);\n    const sourceBottomRight = this.transformInv_(destinationBottomRight);\n    const sourceBottomLeft = this.transformInv_(destinationBottomLeft);\n\n    /*\n     * The maxSubdivision controls how many splittings of the target area can\n     * be done. The idea here is to do a linear mapping of the target areas\n     * but the actual overall reprojection (can be) extremely non-linear. The\n     * default value of MAX_SUBDIVISION was chosen based on mapping a 256x256\n     * tile size. However this function is also called to remap canvas rendered\n     * layers which can be much larger. This calculation increases the maxSubdivision\n     * value by the right factor so that each 256x256 pixel area has\n     * MAX_SUBDIVISION divisions.\n     */\n    const maxSubdivision =\n      MAX_SUBDIVISION +\n      (destinationResolution\n        ? Math.max(\n            0,\n            Math.ceil(\n              Math.log2(\n                getArea(targetExtent) /\n                  (destinationResolution * destinationResolution * 256 * 256),\n              ),\n            ),\n          )\n        : 0);\n\n    this.addQuad_(\n      destinationTopLeft,\n      destinationTopRight,\n      destinationBottomRight,\n      destinationBottomLeft,\n      sourceTopLeft,\n      sourceTopRight,\n      sourceBottomRight,\n      sourceBottomLeft,\n      maxSubdivision,\n    );\n\n    if (this.wrapsXInSource_) {\n      let leftBound = Infinity;\n      this.triangles_.forEach(function (triangle, i, arr) {\n        leftBound = Math.min(\n          leftBound,\n          triangle.source[0][0],\n          triangle.source[1][0],\n          triangle.source[2][0],\n        );\n      });\n\n      // Shift triangles to be as close to `leftBound` as possible\n      // (if the distance is more than `worldWidth / 2` it can be closer.\n      this.triangles_.forEach((triangle) => {\n        if (\n          Math.max(\n            triangle.source[0][0],\n            triangle.source[1][0],\n            triangle.source[2][0],\n          ) -\n            leftBound >\n          this.sourceWorldWidth_ / 2\n        ) {\n          const newTriangle = [\n            [triangle.source[0][0], triangle.source[0][1]],\n            [triangle.source[1][0], triangle.source[1][1]],\n            [triangle.source[2][0], triangle.source[2][1]],\n          ];\n          if (newTriangle[0][0] - leftBound > this.sourceWorldWidth_ / 2) {\n            newTriangle[0][0] -= this.sourceWorldWidth_;\n          }\n          if (newTriangle[1][0] - leftBound > this.sourceWorldWidth_ / 2) {\n            newTriangle[1][0] -= this.sourceWorldWidth_;\n          }\n          if (newTriangle[2][0] - leftBound > this.sourceWorldWidth_ / 2) {\n            newTriangle[2][0] -= this.sourceWorldWidth_;\n          }\n\n          // Rarely (if the extent contains both the dateline and prime meridian)\n          // the shift can in turn break some triangles.\n          // Detect this here and don't shift in such cases.\n          const minX = Math.min(\n            newTriangle[0][0],\n            newTriangle[1][0],\n            newTriangle[2][0],\n          );\n          const maxX = Math.max(\n            newTriangle[0][0],\n            newTriangle[1][0],\n            newTriangle[2][0],\n          );\n          if (maxX - minX < this.sourceWorldWidth_ / 2) {\n            triangle.source = newTriangle;\n          }\n        }\n      });\n    }\n\n    transformInvCache = {};\n  }\n\n  /**\n   * Adds triangle to the triangulation.\n   * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n   * @private\n   */\n  addTriangle_(a, b, c, aSrc, bSrc, cSrc) {\n    this.triangles_.push({\n      source: [aSrc, bSrc, cSrc],\n      target: [a, b, c],\n    });\n  }\n\n  /**\n   * Adds quad (points in clock-wise order) to the triangulation\n   * (and reprojects the vertices) if valid.\n   * Performs quad subdivision if needed to increase precision.\n   *\n   * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} d The target d coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} dSrc The source d coordinate.\n   * @param {number} maxSubdivision Maximal allowed subdivision of the quad.\n   * @private\n   */\n  addQuad_(a, b, c, d, aSrc, bSrc, cSrc, dSrc, maxSubdivision) {\n    const sourceQuadExtent = boundingExtent([aSrc, bSrc, cSrc, dSrc]);\n    const sourceCoverageX = this.sourceWorldWidth_\n      ? getWidth(sourceQuadExtent) / this.sourceWorldWidth_\n      : null;\n    const sourceWorldWidth = /** @type {number} */ (this.sourceWorldWidth_);\n\n    // when the quad is wrapped in the source projection\n    // it covers most of the projection extent, but not fully\n    const wrapsX =\n      this.sourceProj_.canWrapX() &&\n      sourceCoverageX > 0.5 &&\n      sourceCoverageX < 1;\n\n    let needsSubdivision = false;\n\n    if (maxSubdivision > 0) {\n      if (this.targetProj_.isGlobal() && this.targetWorldWidth_) {\n        const targetQuadExtent = boundingExtent([a, b, c, d]);\n        const targetCoverageX =\n          getWidth(targetQuadExtent) / this.targetWorldWidth_;\n        needsSubdivision =\n          targetCoverageX > MAX_TRIANGLE_WIDTH || needsSubdivision;\n      }\n      if (!wrapsX && this.sourceProj_.isGlobal() && sourceCoverageX) {\n        needsSubdivision =\n          sourceCoverageX > MAX_TRIANGLE_WIDTH || needsSubdivision;\n      }\n    }\n\n    if (!needsSubdivision && this.maxSourceExtent_) {\n      if (\n        isFinite(sourceQuadExtent[0]) &&\n        isFinite(sourceQuadExtent[1]) &&\n        isFinite(sourceQuadExtent[2]) &&\n        isFinite(sourceQuadExtent[3])\n      ) {\n        if (!intersects(sourceQuadExtent, this.maxSourceExtent_)) {\n          // whole quad outside source projection extent -> ignore\n          return;\n        }\n      }\n    }\n\n    let isNotFinite = 0;\n\n    if (!needsSubdivision) {\n      if (\n        !isFinite(aSrc[0]) ||\n        !isFinite(aSrc[1]) ||\n        !isFinite(bSrc[0]) ||\n        !isFinite(bSrc[1]) ||\n        !isFinite(cSrc[0]) ||\n        !isFinite(cSrc[1]) ||\n        !isFinite(dSrc[0]) ||\n        !isFinite(dSrc[1])\n      ) {\n        if (maxSubdivision > 0) {\n          needsSubdivision = true;\n        } else {\n          // It might be the case that only 1 of the points is infinite. In this case\n          // we can draw a single triangle with the other three points\n          isNotFinite =\n            (!isFinite(aSrc[0]) || !isFinite(aSrc[1]) ? 8 : 0) +\n            (!isFinite(bSrc[0]) || !isFinite(bSrc[1]) ? 4 : 0) +\n            (!isFinite(cSrc[0]) || !isFinite(cSrc[1]) ? 2 : 0) +\n            (!isFinite(dSrc[0]) || !isFinite(dSrc[1]) ? 1 : 0);\n          if (\n            isNotFinite != 1 &&\n            isNotFinite != 2 &&\n            isNotFinite != 4 &&\n            isNotFinite != 8\n          ) {\n            return;\n          }\n        }\n      }\n    }\n\n    if (maxSubdivision > 0) {\n      if (!needsSubdivision) {\n        const center = [(a[0] + c[0]) / 2, (a[1] + c[1]) / 2];\n        const centerSrc = this.transformInv_(center);\n\n        let dx;\n        if (wrapsX) {\n          const centerSrcEstimX =\n            (modulo(aSrc[0], sourceWorldWidth) +\n              modulo(cSrc[0], sourceWorldWidth)) /\n            2;\n          dx = centerSrcEstimX - modulo(centerSrc[0], sourceWorldWidth);\n        } else {\n          dx = (aSrc[0] + cSrc[0]) / 2 - centerSrc[0];\n        }\n        const dy = (aSrc[1] + cSrc[1]) / 2 - centerSrc[1];\n        const centerSrcErrorSquared = dx * dx + dy * dy;\n        needsSubdivision = centerSrcErrorSquared > this.errorThresholdSquared_;\n      }\n      if (needsSubdivision) {\n        if (Math.abs(a[0] - c[0]) <= Math.abs(a[1] - c[1])) {\n          // split horizontally (top & bottom)\n          const bc = [(b[0] + c[0]) / 2, (b[1] + c[1]) / 2];\n          const bcSrc = this.transformInv_(bc);\n          const da = [(d[0] + a[0]) / 2, (d[1] + a[1]) / 2];\n          const daSrc = this.transformInv_(da);\n\n          this.addQuad_(\n            a,\n            b,\n            bc,\n            da,\n            aSrc,\n            bSrc,\n            bcSrc,\n            daSrc,\n            maxSubdivision - 1,\n          );\n          this.addQuad_(\n            da,\n            bc,\n            c,\n            d,\n            daSrc,\n            bcSrc,\n            cSrc,\n            dSrc,\n            maxSubdivision - 1,\n          );\n        } else {\n          // split vertically (left & right)\n          const ab = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n          const abSrc = this.transformInv_(ab);\n          const cd = [(c[0] + d[0]) / 2, (c[1] + d[1]) / 2];\n          const cdSrc = this.transformInv_(cd);\n\n          this.addQuad_(\n            a,\n            ab,\n            cd,\n            d,\n            aSrc,\n            abSrc,\n            cdSrc,\n            dSrc,\n            maxSubdivision - 1,\n          );\n          this.addQuad_(\n            ab,\n            b,\n            c,\n            cd,\n            abSrc,\n            bSrc,\n            cSrc,\n            cdSrc,\n            maxSubdivision - 1,\n          );\n        }\n        return;\n      }\n    }\n\n    if (wrapsX) {\n      if (!this.canWrapXInSource_) {\n        return;\n      }\n      this.wrapsXInSource_ = true;\n    }\n\n    // Exactly zero or one of *Src is not finite\n    // The triangles must have the diagonal line as the first side\n    // This is to allow easy code in reproj.s to make it straight for broken\n    // browsers that can't handle diagonal clipping\n    if ((isNotFinite & 0xb) == 0) {\n      this.addTriangle_(a, c, d, aSrc, cSrc, dSrc);\n    }\n    if ((isNotFinite & 0xe) == 0) {\n      this.addTriangle_(a, c, b, aSrc, cSrc, bSrc);\n    }\n    if (isNotFinite) {\n      // Try the other two triangles\n      if ((isNotFinite & 0xd) == 0) {\n        this.addTriangle_(b, d, a, bSrc, dSrc, aSrc);\n      }\n      if ((isNotFinite & 0x7) == 0) {\n        this.addTriangle_(b, d, c, bSrc, dSrc, cSrc);\n      }\n    }\n  }\n\n  /**\n   * Calculates extent of the `source` coordinates from all the triangles.\n   *\n   * @return {import(\"../extent.js\").Extent} Calculated extent.\n   */\n  calculateSourceExtent() {\n    const extent = createEmpty();\n\n    this.triangles_.forEach(function (triangle, i, arr) {\n      const src = triangle.source;\n      extendCoordinate(extent, src[0]);\n      extendCoordinate(extent, src[1]);\n      extendCoordinate(extent, src[2]);\n    });\n\n    return extent;\n  }\n\n  /**\n   * @return {Array<Triangle>} Array of the calculated triangles.\n   */\n  getTriangles() {\n    return this.triangles_;\n  }\n}\n\nexport default Triangulation;\n","/**\n * @module ol/reproj/common\n */\n\n/**\n * Default maximum allowed threshold  (in pixels) for reprojection\n * triangulation.\n * @type {number}\n */\nexport const ERROR_THRESHOLD = 0.5;\n","/**\n * @module ol/reproj/Tile\n */\n\nimport Tile from '../Tile.js';\nimport TileState from '../TileState.js';\nimport {releaseCanvas} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {getArea, getIntersection, getWidth, wrapAndSliceX} from '../extent.js';\nimport {clamp} from '../math.js';\nimport {\n  calculateSourceExtentResolution,\n  canvasPool,\n  render as renderReprojected,\n} from '../reproj.js';\nimport Triangulation from './Triangulation.js';\nimport {ERROR_THRESHOLD} from './common.js';\n\n/**\n * @typedef {function(number, number, number, number) : (import(\"../ImageTile.js\").default)} FunctionType\n */\n\n/**\n * @typedef {Object} TileOffset\n * @property {import(\"../ImageTile.js\").default} tile Tile.\n * @property {number} offset Offset.\n */\n\n/**\n * @classdesc\n * Class encapsulating single reprojected tile.\n * See {@link module:ol/source/TileImage~TileImage}.\n *\n */\nclass ReprojTile extends Tile {\n  /**\n   * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n   * @param {import(\"../tilegrid/TileGrid.js\").default} sourceTileGrid Source tile grid.\n   * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n   * @param {import(\"../tilegrid/TileGrid.js\").default} targetTileGrid Target tile grid.\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Coordinate of the tile.\n   * @param {import(\"../tilecoord.js\").TileCoord} wrappedTileCoord Coordinate of the tile wrapped in X.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {number} gutter Gutter of the source tiles.\n   * @param {FunctionType} getTileFunction\n   *     Function returning source tiles (z, x, y, pixelRatio).\n   * @param {number} [errorThreshold] Acceptable reprojection error (in px).\n   * @param {boolean} [renderEdges] Render reprojection edges.\n   * @param {import(\"../Tile.js\").Options} [options] Tile options.\n   */\n  constructor(\n    sourceProj,\n    sourceTileGrid,\n    targetProj,\n    targetTileGrid,\n    tileCoord,\n    wrappedTileCoord,\n    pixelRatio,\n    gutter,\n    getTileFunction,\n    errorThreshold,\n    renderEdges,\n    options,\n  ) {\n    super(tileCoord, TileState.IDLE, options);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderEdges_ = renderEdges !== undefined ? renderEdges : false;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.gutter_ = gutter;\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement}\n     */\n    this.canvas_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../tilegrid/TileGrid.js\").default}\n     */\n    this.sourceTileGrid_ = sourceTileGrid;\n\n    /**\n     * @private\n     * @type {import(\"../tilegrid/TileGrid.js\").default}\n     */\n    this.targetTileGrid_ = targetTileGrid;\n\n    /**\n     * @private\n     * @type {import(\"../tilecoord.js\").TileCoord}\n     */\n    this.wrappedTileCoord_ = wrappedTileCoord ? wrappedTileCoord : tileCoord;\n\n    /**\n     * @private\n     * @type {!Array<TileOffset>}\n     */\n    this.sourceTiles_ = [];\n\n    /**\n     * @private\n     * @type {?Array<import(\"../events.js\").EventsKey>}\n     */\n    this.sourcesListenerKeys_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.sourceZ_ = 0;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.clipExtent_ = sourceProj.canWrapX()\n      ? sourceProj.getExtent()\n      : undefined;\n\n    const targetExtent = targetTileGrid.getTileCoordExtent(\n      this.wrappedTileCoord_,\n    );\n    const maxTargetExtent = this.targetTileGrid_.getExtent();\n    let maxSourceExtent = this.sourceTileGrid_.getExtent();\n\n    const limitedTargetExtent = maxTargetExtent\n      ? getIntersection(targetExtent, maxTargetExtent)\n      : targetExtent;\n\n    if (getArea(limitedTargetExtent) === 0) {\n      // Tile is completely outside range -> EMPTY\n      // TODO: is it actually correct that the source even creates the tile ?\n      this.state = TileState.EMPTY;\n      return;\n    }\n\n    const sourceProjExtent = sourceProj.getExtent();\n    if (sourceProjExtent) {\n      if (!maxSourceExtent) {\n        maxSourceExtent = sourceProjExtent;\n      } else {\n        maxSourceExtent = getIntersection(maxSourceExtent, sourceProjExtent);\n      }\n    }\n\n    const targetResolution = targetTileGrid.getResolution(\n      this.wrappedTileCoord_[0],\n    );\n\n    const sourceResolution = calculateSourceExtentResolution(\n      sourceProj,\n      targetProj,\n      limitedTargetExtent,\n      targetResolution,\n    );\n\n    if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n      // invalid sourceResolution -> EMPTY\n      // probably edges of the projections when no extent is defined\n      this.state = TileState.EMPTY;\n      return;\n    }\n\n    const errorThresholdInPixels =\n      errorThreshold !== undefined ? errorThreshold : ERROR_THRESHOLD;\n\n    /**\n     * @private\n     * @type {!import(\"./Triangulation.js\").default}\n     */\n    this.triangulation_ = new Triangulation(\n      sourceProj,\n      targetProj,\n      limitedTargetExtent,\n      maxSourceExtent,\n      sourceResolution * errorThresholdInPixels,\n      targetResolution,\n    );\n\n    if (this.triangulation_.getTriangles().length === 0) {\n      // no valid triangles -> EMPTY\n      this.state = TileState.EMPTY;\n      return;\n    }\n\n    this.sourceZ_ = sourceTileGrid.getZForResolution(sourceResolution);\n    let sourceExtent = this.triangulation_.calculateSourceExtent();\n\n    if (maxSourceExtent) {\n      if (sourceProj.canWrapX()) {\n        sourceExtent[1] = clamp(\n          sourceExtent[1],\n          maxSourceExtent[1],\n          maxSourceExtent[3],\n        );\n        sourceExtent[3] = clamp(\n          sourceExtent[3],\n          maxSourceExtent[1],\n          maxSourceExtent[3],\n        );\n      } else {\n        sourceExtent = getIntersection(sourceExtent, maxSourceExtent);\n      }\n    }\n\n    if (!getArea(sourceExtent)) {\n      this.state = TileState.EMPTY;\n    } else {\n      let worldWidth = 0;\n      let worldsAway = 0;\n      if (sourceProj.canWrapX()) {\n        worldWidth = getWidth(sourceProjExtent);\n        worldsAway = Math.floor(\n          (sourceExtent[0] - sourceProjExtent[0]) / worldWidth,\n        );\n      }\n\n      const sourceExtents = wrapAndSliceX(\n        sourceExtent.slice(),\n        sourceProj,\n        true,\n      );\n      sourceExtents.forEach((extent) => {\n        const sourceRange = sourceTileGrid.getTileRangeForExtentAndZ(\n          extent,\n          this.sourceZ_,\n        );\n\n        for (let srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) {\n          for (let srcY = sourceRange.minY; srcY <= sourceRange.maxY; srcY++) {\n            const tile = getTileFunction(this.sourceZ_, srcX, srcY, pixelRatio);\n            if (tile) {\n              const offset = worldsAway * worldWidth;\n              this.sourceTiles_.push({tile, offset});\n            }\n          }\n        }\n        ++worldsAway;\n      });\n\n      if (this.sourceTiles_.length === 0) {\n        this.state = TileState.EMPTY;\n      }\n    }\n  }\n\n  /**\n   * Get the HTML Canvas element for this tile.\n   * @return {HTMLCanvasElement} Canvas.\n   */\n  getImage() {\n    return this.canvas_;\n  }\n\n  /**\n   * @private\n   */\n  reproject_() {\n    const sources = [];\n    this.sourceTiles_.forEach((source) => {\n      const tile = source.tile;\n      if (tile && tile.getState() == TileState.LOADED) {\n        const extent = this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord);\n        extent[0] += source.offset;\n        extent[2] += source.offset;\n        const clipExtent = this.clipExtent_?.slice();\n        if (clipExtent) {\n          clipExtent[0] += source.offset;\n          clipExtent[2] += source.offset;\n        }\n        sources.push({\n          extent: extent,\n          clipExtent: clipExtent,\n          image: tile.getImage(),\n        });\n      }\n    });\n    this.sourceTiles_.length = 0;\n\n    if (sources.length === 0) {\n      this.state = TileState.ERROR;\n    } else {\n      const z = this.wrappedTileCoord_[0];\n      const size = this.targetTileGrid_.getTileSize(z);\n      const width = typeof size === 'number' ? size : size[0];\n      const height = typeof size === 'number' ? size : size[1];\n      const targetResolution = this.targetTileGrid_.getResolution(z);\n      const sourceResolution = this.sourceTileGrid_.getResolution(\n        this.sourceZ_,\n      );\n\n      const targetExtent = this.targetTileGrid_.getTileCoordExtent(\n        this.wrappedTileCoord_,\n      );\n\n      this.canvas_ = renderReprojected(\n        width,\n        height,\n        this.pixelRatio_,\n        sourceResolution,\n        this.sourceTileGrid_.getExtent(),\n        targetResolution,\n        targetExtent,\n        this.triangulation_,\n        sources,\n        this.gutter_,\n        this.renderEdges_,\n        this.interpolate,\n      );\n\n      this.state = TileState.LOADED;\n    }\n    this.changed();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == TileState.IDLE) {\n      this.state = TileState.LOADING;\n      this.changed();\n\n      let leftToLoad = 0;\n\n      this.sourcesListenerKeys_ = [];\n      this.sourceTiles_.forEach(({tile}) => {\n        const state = tile.getState();\n        if (state == TileState.IDLE || state == TileState.LOADING) {\n          leftToLoad++;\n\n          const sourceListenKey = listen(tile, EventType.CHANGE, (e) => {\n            const state = tile.getState();\n            if (\n              state == TileState.LOADED ||\n              state == TileState.ERROR ||\n              state == TileState.EMPTY\n            ) {\n              unlistenByKey(sourceListenKey);\n              leftToLoad--;\n              if (leftToLoad === 0) {\n                this.unlistenSources_();\n                this.reproject_();\n              }\n            }\n          });\n          this.sourcesListenerKeys_.push(sourceListenKey);\n        }\n      });\n\n      if (leftToLoad === 0) {\n        setTimeout(this.reproject_.bind(this), 0);\n      } else {\n        this.sourceTiles_.forEach(function ({tile}, i, arr) {\n          const state = tile.getState();\n          if (state == TileState.IDLE) {\n            tile.load();\n          }\n        });\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  unlistenSources_() {\n    this.sourcesListenerKeys_.forEach(unlistenByKey);\n    this.sourcesListenerKeys_ = null;\n  }\n\n  /**\n   * Remove from the cache due to expiry\n   * @override\n   */\n  release() {\n    if (this.canvas_) {\n      releaseCanvas(this.canvas_.getContext('2d'));\n      canvasPool.push(this.canvas_);\n      this.canvas_ = null;\n    }\n    super.release();\n  }\n}\n\nexport default ReprojTile;\n","/**\n * @module ol/structs/LRUCache\n */\n\nimport Disposable from '../Disposable.js';\nimport {assert} from '../asserts.js';\n\n/**\n * @typedef {Object} Entry\n * @property {string} key_ Key.\n * @property {Entry|null} newer Newer.\n * @property {Entry|null} older Older.\n * @property {*} value_ Value.\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 {\n  /**\n   * @param {number} [highWaterMark] High water mark.\n   */\n  constructor(highWaterMark) {\n    /**\n     * Desired max cache size after expireCache(). If set to 0, no cache entries\n     * will be pruned at all.\n     * @type {number}\n     */\n    this.highWaterMark = highWaterMark !== undefined ? highWaterMark : 2048;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.count_ = 0;\n\n    /**\n     * @private\n     * @type {!Object<string, Entry>}\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  deleteOldest() {\n    const entry = this.pop();\n    if (entry instanceof Disposable) {\n      entry.dispose();\n    }\n  }\n\n  /**\n   * @return {boolean} Can expire cache.\n   */\n  canExpireCache() {\n    return this.highWaterMark > 0 && this.getCount() > this.highWaterMark;\n  }\n\n  /**\n   * Expire the cache. When the cache entry is a {@link module:ol/Disposable~Disposable},\n   * the entry will be disposed.\n   * @param {!Object<string, boolean>} [keep] Keys to keep. To be implemented by subclasses.\n   */\n  expireCache(keep) {\n    while (this.canExpireCache()) {\n      this.deleteOldest();\n    }\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  clear() {\n    while (this.oldest_) {\n      this.deleteOldest();\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   * @param {function(T, string, LRUCache<T>): ?} 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   * @param {string} key Key.\n   * @param {*} [options] Options (reserved for subclasses).\n   * @return {T} Value.\n   */\n  get(key, options) {\n    const entry = this.entries_[key];\n    assert(\n      entry !== undefined,\n      'Tried to get a value for a key that does not exist in the cache',\n    );\n    if (entry === this.newest_) {\n      return entry.value_;\n    }\n    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   * 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(\n      entry !== undefined,\n      'Tried to get a value for a key that does not exist in the cache',\n    );\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   * @return {number} Count.\n   */\n  getCount() {\n    return this.count_;\n  }\n\n  /**\n   * @return {Array<string>} 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   * @return {Array<T>} 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   * @return {T} Last value.\n   */\n  peekLast() {\n    return this.oldest_.value_;\n  }\n\n  /**\n   * @return {string} Last key.\n   */\n  peekLastKey() {\n    return this.oldest_.key_;\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   * Return an entry without updating least recently used time.\n   * @param {string} key Key.\n   * @return {T|undefined} Value.\n   */\n  peek(key) {\n    return this.entries_[key]?.value_;\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   * @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   * @param {string} key Key.\n   * @param {T} value Value.\n   */\n  set(key, value) {\n    assert(\n      !(key in this.entries_),\n      'Tried to set a value for a key that is used already',\n    );\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   * 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\nexport default LRUCache;\n","/**\n * @module ol/tilecoord\n */\n\n/**\n * An array of three numbers representing the location of a tile in a tile\n * grid. The order is `z` (zoom level), `x` (column), and `y` (row).\n * @typedef {Array<number>} TileCoord\n * @api\n */\n\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {TileCoord} [tileCoord] Tile coordinate.\n * @return {TileCoord} Tile coordinate.\n */\nexport function createOrUpdate(z, x, y, tileCoord) {\n  if (tileCoord !== undefined) {\n    tileCoord[0] = z;\n    tileCoord[1] = x;\n    tileCoord[2] = y;\n    return tileCoord;\n  }\n  return [z, x, y];\n}\n\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {string} Key.\n */\nexport function getKeyZXY(z, x, y) {\n  return z + '/' + x + '/' + y;\n}\n\n/**\n * Get the key for a tile coord.\n * @param {TileCoord} tileCoord The tile coord.\n * @return {string} Key.\n */\nexport function getKey(tileCoord) {\n  return getKeyZXY(tileCoord[0], tileCoord[1], tileCoord[2]);\n}\n\n/**\n * Get the tile cache key for a tile key obtained through `tile.getKey()`.\n * @param {string} tileKey The tile key.\n * @return {string} The cache key.\n */\nexport function getCacheKeyForTileKey(tileKey) {\n  const [z, x, y] = tileKey\n    .substring(tileKey.lastIndexOf('/') + 1, tileKey.length)\n    .split(',')\n    .map(Number);\n  return getKeyZXY(z, x, y);\n}\n\n/**\n * Get a tile coord given a key.\n * @param {string} key The tile coord key.\n * @return {TileCoord} The tile coord.\n */\nexport function fromKey(key) {\n  return key.split('/').map(Number);\n}\n\n/**\n * @param {TileCoord} tileCoord Tile coord.\n * @return {number} Hash.\n */\nexport function hash(tileCoord) {\n  return hashZXY(tileCoord[0], tileCoord[1], tileCoord[2]);\n}\n\n/**\n * @param {number} z The tile z coordinate.\n * @param {number} x The tile x coordinate.\n * @param {number} y The tile y coordinate.\n * @return {number} Hash.\n */\nexport function hashZXY(z, x, y) {\n  return (x << z) + y;\n}\n\n/**\n * @param {TileCoord} tileCoord Tile coordinate.\n * @param {!import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {boolean} Tile coordinate is within extent and zoom level range.\n */\nexport function withinExtentAndZ(tileCoord, tileGrid) {\n  const z = tileCoord[0];\n  const x = tileCoord[1];\n  const y = tileCoord[2];\n\n  if (tileGrid.getMinZoom() > z || z > tileGrid.getMaxZoom()) {\n    return false;\n  }\n  const tileRange = tileGrid.getFullTileRange(z);\n  if (!tileRange) {\n    return true;\n  }\n  return tileRange.containsXY(x, y);\n}\n","/**\n * @module ol/renderer/canvas/TileLayer\n */\nimport DataTile, {asImageLike} from '../../DataTile.js';\nimport ImageTile from '../../ImageTile.js';\nimport TileRange from '../../TileRange.js';\nimport TileState from '../../TileState.js';\nimport {ascending} from '../../array.js';\nimport {\n  containsCoordinate,\n  createEmpty,\n  equals,\n  getIntersection,\n  getRotatedViewport,\n  getTopLeft,\n  intersects,\n} from '../../extent.js';\nimport {fromUserExtent} from '../../proj.js';\nimport ReprojTile from '../../reproj/Tile.js';\nimport {toSize} from '../../size.js';\nimport LRUCache from '../../structs/LRUCache.js';\nimport {createOrUpdate as createTileCoord, getKeyZXY} from '../../tilecoord.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n} from '../../transform.js';\nimport {getUid} from '../../util.js';\nimport CanvasLayerRenderer from './Layer.js';\n\n/**\n * @param {string} sourceKey The source key.\n * @param {number} z The tile z level.\n * @param {number} x The tile x level.\n * @param {number} y The tile y level.\n * @return {string} The cache key.\n */\nfunction getCacheKey(sourceKey, z, x, y) {\n  return `${sourceKey},${getKeyZXY(z, x, y)}`;\n}\n\n/**\n * @typedef {Object<number, Set<import(\"../../Tile.js\").default>>} TileLookup\n */\n\n/**\n * Add a tile to the lookup.\n * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n * @param {import(\"../../Tile.js\").default} tile A tile.\n * @param {number} z The zoom level.\n * @return {boolean} The tile was added to the lookup.\n */\nfunction addTileToLookup(tilesByZ, tile, z) {\n  if (!(z in tilesByZ)) {\n    tilesByZ[z] = new Set([tile]);\n    return true;\n  }\n  const set = tilesByZ[z];\n  const existing = set.has(tile);\n  if (!existing) {\n    set.add(tile);\n  }\n  return !existing;\n}\n\n/**\n * Remove a tile from the lookup.\n * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n * @param {import(\"../../Tile.js\").default} tile A tile.\n * @param {number} z The zoom level.\n * @return {boolean} The tile was removed from the lookup.\n */\nfunction removeTileFromLookup(tilesByZ, tile, z) {\n  const set = tilesByZ[z];\n  if (set) {\n    return set.delete(tile);\n  }\n  return false;\n}\n\n/**\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {import(\"../../extent.js\").Extent} extent The frame extent.\n * @return {import(\"../../extent.js\").Extent} Frame extent intersected with layer extents.\n */\nfunction getRenderExtent(frameState, extent) {\n  const layerState = frameState.layerStatesArray[frameState.layerIndex];\n  if (layerState.extent) {\n    extent = getIntersection(\n      extent,\n      fromUserExtent(layerState.extent, frameState.viewState.projection),\n    );\n  }\n  const source = /** @type {import(\"../../source/Tile.js\").default} */ (\n    layerState.layer.getRenderSource()\n  );\n  if (!source.getWrapX()) {\n    const gridExtent = source\n      .getTileGridForProjection(frameState.viewState.projection)\n      .getExtent();\n    if (gridExtent) {\n      extent = getIntersection(extent, gridExtent);\n    }\n  }\n  return extent;\n}\n\n/**\n * @typedef {Object} Options\n * @property {number} [cacheSize=512] The cache size.\n */\n\n/**\n * @classdesc\n * Canvas renderer for tile layers.\n * @api\n * @template {import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default} [LayerType=import(\"../../layer/Tile.js\").default<import(\"../../source/Tile.js\").default>|import(\"../../layer/VectorTile.js\").default]\n * @extends {CanvasLayerRenderer<LayerType>}\n */\nclass CanvasTileLayerRenderer extends CanvasLayerRenderer {\n  /**\n   * @param {LayerType} tileLayer Tile layer.\n   * @param {Options} [options] Options.\n   */\n  constructor(tileLayer, options) {\n    super(tileLayer);\n\n    options = options || {};\n\n    /**\n     * Rendered extent has changed since the previous `renderFrame()` call\n     * @type {boolean}\n     */\n    this.extentChanged = true;\n\n    /**\n     * The last call to `renderFrame` was completed with all tiles loaded\n     * @type {boolean}\n     */\n    this.renderComplete = false;\n\n    /**\n     * @private\n     * @type {?import(\"../../extent.js\").Extent}\n     */\n    this.renderedExtent_ = null;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.renderedPixelRatio;\n\n    /**\n     * @protected\n     * @type {import(\"../../proj/Projection.js\").default|null}\n     */\n    this.renderedProjection = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRevision_;\n\n    /**\n     * @protected\n     * @type {!Array<import(\"../../Tile.js\").default>}\n     */\n    this.renderedTiles = [];\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.renderedSourceKey_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedSourceRevision_;\n\n    /**\n     * @protected\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.tempExtent = createEmpty();\n\n    /**\n     * @private\n     * @type {import(\"../../TileRange.js\").default}\n     */\n    this.tempTileRange_ = new TileRange(0, 0, 0, 0);\n\n    /**\n     * @type {import(\"../../tilecoord.js\").TileCoord}\n     * @private\n     */\n    this.tempTileCoord_ = createTileCoord(0, 0, 0);\n\n    const cacheSize = options.cacheSize !== undefined ? options.cacheSize : 512;\n\n    /**\n     * @type {import(\"../../structs/LRUCache.js\").default<import(\"../../Tile.js\").default>}\n     * @private\n     */\n    this.tileCache_ = new LRUCache(cacheSize);\n\n    this.maxStaleKeys = cacheSize * 0.5;\n  }\n\n  /**\n   * @return {LRUCache} Tile cache.\n   */\n  getTileCache() {\n    return this.tileCache_;\n  }\n\n  /**\n   * Get a tile from the cache or create one if needed.\n   *\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import(\"../../Tile.js\").default|null} Tile (or null if outside source extent).\n   * @protected\n   */\n  getOrCreateTile(z, x, y, frameState) {\n    const tileCache = this.tileCache_;\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getSource();\n    const cacheKey = getCacheKey(tileSource.getKey(), z, x, y);\n\n    /** @type {import(\"../../Tile.js\").default} */\n    let tile;\n\n    if (tileCache.containsKey(cacheKey)) {\n      tile = tileCache.get(cacheKey);\n    } else {\n      tile = tileSource.getTile(\n        z,\n        x,\n        y,\n        frameState.pixelRatio,\n        frameState.viewState.projection,\n      );\n      if (!tile) {\n        return null;\n      }\n      tileCache.set(cacheKey, tile);\n    }\n    return tile;\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import(\"../../Tile.js\").default|null} Tile (or null if outside source extent).\n   * @protected\n   */\n  getTile(z, x, y, frameState) {\n    const tile = this.getOrCreateTile(z, x, y, frameState);\n    if (!tile) {\n      return null;\n    }\n    return tile;\n  }\n\n  /**\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray} Data at the pixel location.\n   * @override\n   */\n  getData(pixel) {\n    const frameState = this.frameState;\n    if (!frameState) {\n      return null;\n    }\n\n    const layer = this.getLayer();\n    const coordinate = applyTransform(\n      frameState.pixelToCoordinateTransform,\n      pixel.slice(),\n    );\n\n    const layerExtent = layer.getExtent();\n    if (layerExtent) {\n      if (!containsCoordinate(layerExtent, coordinate)) {\n        return null;\n      }\n    }\n\n    const viewState = frameState.viewState;\n    const source = layer.getRenderSource();\n    const tileGrid = source.getTileGridForProjection(viewState.projection);\n    const tilePixelRatio = source.getTilePixelRatio(frameState.pixelRatio);\n\n    for (\n      let z = tileGrid.getZForResolution(viewState.resolution);\n      z >= tileGrid.getMinZoom();\n      --z\n    ) {\n      const tileCoord = tileGrid.getTileCoordForCoordAndZ(coordinate, z);\n      const tile = this.getTile(z, tileCoord[1], tileCoord[2], frameState);\n      if (!tile || tile.getState() !== TileState.LOADED) {\n        continue;\n      }\n\n      const tileOrigin = tileGrid.getOrigin(z);\n      const tileSize = toSize(tileGrid.getTileSize(z));\n      const tileResolution = tileGrid.getResolution(z);\n\n      /**\n       * @type {import('../../DataTile.js').ImageLike}\n       */\n      let image;\n      if (tile instanceof ImageTile || tile instanceof ReprojTile) {\n        image = tile.getImage();\n      } else if (tile instanceof DataTile) {\n        image = asImageLike(tile.getData());\n        if (!image) {\n          continue;\n        }\n      } else {\n        continue;\n      }\n\n      const col = Math.floor(\n        tilePixelRatio *\n          ((coordinate[0] - tileOrigin[0]) / tileResolution -\n            tileCoord[1] * tileSize[0]),\n      );\n\n      const row = Math.floor(\n        tilePixelRatio *\n          ((tileOrigin[1] - coordinate[1]) / tileResolution -\n            tileCoord[2] * tileSize[1]),\n      );\n\n      const gutter = Math.round(\n        tilePixelRatio * source.getGutterForProjection(viewState.projection),\n      );\n\n      return this.getImageData(image, col + gutter, row + gutter);\n    }\n\n    return null;\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    if (!this.renderedProjection) {\n      this.renderedProjection = frameState.viewState.projection;\n    } else if (frameState.viewState.projection !== this.renderedProjection) {\n      this.tileCache_.clear();\n      this.renderedProjection = frameState.viewState.projection;\n    }\n\n    const source = this.getLayer().getSource();\n    if (!source) {\n      return false;\n    }\n    const sourceRevision = source.getRevision();\n    if (!this.renderedRevision_) {\n      this.renderedRevision_ = sourceRevision;\n    } else if (this.renderedRevision_ !== sourceRevision) {\n      this.renderedRevision_ = sourceRevision;\n      if (this.renderedSourceKey_ === source.getKey()) {\n        this.tileCache_.clear();\n      }\n    }\n    return true;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../extent.js\").Extent} extent The extent to be rendered.\n   * @param {number} initialZ The zoom level.\n   * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n   * @param {number} preload Number of additional levels to load.\n   */\n  enqueueTiles(frameState, extent, initialZ, tilesByZ, preload) {\n    const viewState = frameState.viewState;\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getRenderSource();\n    const tileGrid = tileSource.getTileGridForProjection(viewState.projection);\n\n    const tileSourceKey = getUid(tileSource);\n    if (!(tileSourceKey in frameState.wantedTiles)) {\n      frameState.wantedTiles[tileSourceKey] = {};\n    }\n\n    const wantedTiles = frameState.wantedTiles[tileSourceKey];\n\n    const map = tileLayer.getMapInternal();\n    const minZ = Math.max(\n      initialZ - preload,\n      tileGrid.getMinZoom(),\n      tileGrid.getZForResolution(\n        Math.min(\n          tileLayer.getMaxResolution(),\n          map\n            ? map\n                .getView()\n                .getResolutionForZoom(Math.max(tileLayer.getMinZoom(), 0))\n            : tileGrid.getResolution(0),\n        ),\n        tileSource.zDirection,\n      ),\n    );\n    const rotation = viewState.rotation;\n    const viewport = rotation\n      ? getRotatedViewport(\n          viewState.center,\n          viewState.resolution,\n          rotation,\n          frameState.size,\n        )\n      : undefined;\n    for (let z = initialZ; z >= minZ; --z) {\n      const tileRange = tileGrid.getTileRangeForExtentAndZ(\n        extent,\n        z,\n        this.tempTileRange_,\n      );\n\n      const tileResolution = tileGrid.getResolution(z);\n\n      for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n        for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n          if (\n            rotation &&\n            !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)\n          ) {\n            continue;\n          }\n          const tile = this.getTile(z, x, y, frameState);\n          if (!tile) {\n            continue;\n          }\n          const added = addTileToLookup(tilesByZ, tile, z);\n          if (!added) {\n            continue;\n          }\n\n          const tileQueueKey = tile.getKey();\n          wantedTiles[tileQueueKey] = true;\n\n          if (tile.getState() === TileState.IDLE) {\n            if (!frameState.tileQueue.isKeyQueued(tileQueueKey)) {\n              const tileCoord = createTileCoord(z, x, y, this.tempTileCoord_);\n              frameState.tileQueue.enqueue([\n                tile,\n                tileSourceKey,\n                tileGrid.getTileCoordCenter(tileCoord),\n                tileResolution,\n              ]);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Look for tiles covering the provided tile coordinate at an alternate\n   * zoom level.  Loaded tiles will be added to the provided tile texture lookup.\n   * @param {import(\"../../tilecoord.js\").TileCoord} tileCoord The target tile coordinate.\n   * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n   * @return {boolean} The tile coordinate is covered by loaded tiles at the alternate zoom level.\n   * @private\n   */\n  findStaleTile_(tileCoord, tilesByZ) {\n    const tileCache = this.tileCache_;\n    const z = tileCoord[0];\n    const x = tileCoord[1];\n    const y = tileCoord[2];\n    const staleKeys = this.getStaleKeys();\n    for (let i = 0; i < staleKeys.length; ++i) {\n      const cacheKey = getCacheKey(staleKeys[i], z, x, y);\n      if (tileCache.containsKey(cacheKey)) {\n        const tile = tileCache.peek(cacheKey);\n        if (tile.getState() === TileState.LOADED) {\n          tile.endTransition(getUid(this));\n          addTileToLookup(tilesByZ, tile, z);\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Look for tiles covering the provided tile coordinate at an alternate\n   * zoom level.  Loaded tiles will be added to the provided tile texture lookup.\n   * @param {import(\"../../tilegrid/TileGrid.js\").default} tileGrid The tile grid.\n   * @param {import(\"../../tilecoord.js\").TileCoord} tileCoord The target tile coordinate.\n   * @param {number} altZ The alternate zoom level.\n   * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n   * @return {boolean} The tile coordinate is covered by loaded tiles at the alternate zoom level.\n   * @private\n   */\n  findAltTiles_(tileGrid, tileCoord, altZ, tilesByZ) {\n    const tileRange = tileGrid.getTileRangeForTileCoordAndZ(\n      tileCoord,\n      altZ,\n      this.tempTileRange_,\n    );\n\n    if (!tileRange) {\n      return false;\n    }\n\n    let covered = true;\n    const tileCache = this.tileCache_;\n    const source = this.getLayer().getRenderSource();\n    const sourceKey = source.getKey();\n    for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n      for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n        const cacheKey = getCacheKey(sourceKey, altZ, x, y);\n        let loaded = false;\n        if (tileCache.containsKey(cacheKey)) {\n          const tile = tileCache.peek(cacheKey);\n          if (tile.getState() === TileState.LOADED) {\n            addTileToLookup(tilesByZ, tile, altZ);\n            loaded = true;\n          }\n        }\n        if (!loaded) {\n          covered = false;\n        }\n      }\n    }\n    return covered;\n  }\n\n  /**\n   * Render the layer.\n   *\n   * The frame rendering logic has three parts:\n   *\n   *  1. Enqueue tiles\n   *  2. Find alt tiles for those that are not yet loaded\n   *  3. Render loaded tiles\n   *\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target that may be used to render content to.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState, target) {\n    let allTilesIdle = true;\n    this.renderComplete = true;\n\n    /**\n     * TODO:\n     *  maybe skip transition when not fully opaque\n     *  decide if this.renderComplete is useful\n     */\n\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const viewState = frameState.viewState;\n    const projection = viewState.projection;\n    const viewResolution = viewState.resolution;\n    const viewCenter = viewState.center;\n    const pixelRatio = frameState.pixelRatio;\n\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getSource();\n    const tileGrid = tileSource.getTileGridForProjection(projection);\n    const z = tileGrid.getZForResolution(viewResolution, tileSource.zDirection);\n    const tileResolution = tileGrid.getResolution(z);\n\n    const sourceKey = tileSource.getKey();\n    if (!this.renderedSourceKey_) {\n      this.renderedSourceKey_ = sourceKey;\n    } else if (this.renderedSourceKey_ !== sourceKey) {\n      this.prependStaleKey(this.renderedSourceKey_);\n      this.renderedSourceKey_ = sourceKey;\n    }\n\n    let frameExtent = frameState.extent;\n    const tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);\n\n    this.prepareContainer(frameState, target);\n\n    // desired dimensions of the canvas in pixels\n    const width = this.context.canvas.width;\n    const height = this.context.canvas.height;\n\n    const layerExtent =\n      layerState.extent && fromUserExtent(layerState.extent, projection);\n    if (layerExtent) {\n      frameExtent = getIntersection(\n        frameExtent,\n        fromUserExtent(layerState.extent, projection),\n      );\n    }\n\n    const dx = (tileResolution * width) / 2 / tilePixelRatio;\n    const dy = (tileResolution * height) / 2 / tilePixelRatio;\n    const canvasExtent = [\n      viewCenter[0] - dx,\n      viewCenter[1] - dy,\n      viewCenter[0] + dx,\n      viewCenter[1] + dy,\n    ];\n\n    /**\n     * @type {TileLookup}\n     */\n    const tilesByZ = {};\n\n    this.renderedTiles.length = 0;\n\n    /**\n     * Part 1: Enqueue tiles\n     */\n\n    const preload = tileLayer.getPreload();\n    if (frameState.nextExtent) {\n      const targetZ = tileGrid.getZForResolution(\n        viewState.nextResolution,\n        tileSource.zDirection,\n      );\n      const nextExtent = getRenderExtent(frameState, frameState.nextExtent);\n      this.enqueueTiles(frameState, nextExtent, targetZ, tilesByZ, preload);\n    }\n\n    const renderExtent = getRenderExtent(frameState, frameExtent);\n    this.enqueueTiles(frameState, renderExtent, z, tilesByZ, 0);\n    if (preload > 0) {\n      setTimeout(() => {\n        this.enqueueTiles(\n          frameState,\n          renderExtent,\n          z - 1,\n          tilesByZ,\n          preload - 1,\n        );\n      }, 0);\n    }\n\n    if (!(z in tilesByZ)) {\n      return this.container;\n    }\n\n    /**\n     * Part 2: Find alt tiles for those that are not yet loaded\n     */\n\n    const uid = getUid(this);\n    const time = frameState.time;\n\n    // look for cached tiles to use if a target tile is not ready\n    for (const tile of tilesByZ[z]) {\n      const tileState = tile.getState();\n      if (tileState === TileState.EMPTY) {\n        continue;\n      }\n      const tileCoord = tile.tileCoord;\n\n      if (tileState === TileState.LOADED) {\n        const alpha = tile.getAlpha(uid, time);\n        if (alpha === 1) {\n          // no need to look for alt tiles\n          tile.endTransition(uid);\n          continue;\n        }\n      }\n      if (tileState !== TileState.IDLE) {\n        allTilesIdle = false;\n      }\n      if (tileState !== TileState.ERROR) {\n        this.renderComplete = false;\n      }\n\n      const hasStaleTile = this.findStaleTile_(tileCoord, tilesByZ);\n      if (hasStaleTile) {\n        // use the stale tile before the new tile's transition has completed\n        removeTileFromLookup(tilesByZ, tile, z);\n        frameState.animate = true;\n        continue;\n      }\n\n      // first look for child tiles (at z + 1)\n      const coveredByChildren = this.findAltTiles_(\n        tileGrid,\n        tileCoord,\n        z + 1,\n        tilesByZ,\n      );\n\n      if (coveredByChildren) {\n        continue;\n      }\n\n      // next look for parent tiles\n      const minZoom = tileGrid.getMinZoom();\n      for (let parentZ = z - 1; parentZ >= minZoom; --parentZ) {\n        const coveredByParent = this.findAltTiles_(\n          tileGrid,\n          tileCoord,\n          parentZ,\n          tilesByZ,\n        );\n\n        if (coveredByParent) {\n          break;\n        }\n      }\n    }\n\n    /**\n     * Part 3: Render loaded tiles\n     */\n\n    const canvasScale =\n      ((tileResolution / viewResolution) * pixelRatio) / tilePixelRatio;\n\n    const context = this.getRenderContext(frameState);\n\n    // set scale transform for calculating tile positions on the canvas\n    composeTransform(\n      this.tempTransform,\n      width / 2,\n      height / 2,\n      canvasScale,\n      canvasScale,\n      0,\n      -width / 2,\n      -height / 2,\n    );\n\n    if (layerState.extent) {\n      this.clipUnrotated(context, frameState, layerExtent);\n    }\n\n    if (!tileSource.getInterpolate()) {\n      context.imageSmoothingEnabled = false;\n    }\n\n    this.preRender(context, frameState);\n\n    /** @type {Array<number>} */\n    const zs = Object.keys(tilesByZ).map(Number);\n    zs.sort(ascending);\n\n    let currentClip;\n    const clips = [];\n    const clipZs = [];\n    for (let i = zs.length - 1; i >= 0; --i) {\n      const currentZ = zs[i];\n      const currentTilePixelSize = tileSource.getTilePixelSize(\n        currentZ,\n        pixelRatio,\n        projection,\n      );\n      const currentResolution = tileGrid.getResolution(currentZ);\n      const currentScale = currentResolution / tileResolution;\n      const dx = currentTilePixelSize[0] * currentScale * canvasScale;\n      const dy = currentTilePixelSize[1] * currentScale * canvasScale;\n      const originTileCoord = tileGrid.getTileCoordForCoordAndZ(\n        getTopLeft(canvasExtent),\n        currentZ,\n      );\n      const originTileExtent = tileGrid.getTileCoordExtent(originTileCoord);\n      const origin = applyTransform(this.tempTransform, [\n        (tilePixelRatio * (originTileExtent[0] - canvasExtent[0])) /\n          tileResolution,\n        (tilePixelRatio * (canvasExtent[3] - originTileExtent[3])) /\n          tileResolution,\n      ]);\n      const tileGutter =\n        tilePixelRatio * tileSource.getGutterForProjection(projection);\n      for (const tile of tilesByZ[currentZ]) {\n        if (tile.getState() !== TileState.LOADED) {\n          continue;\n        }\n        const tileCoord = tile.tileCoord;\n\n        // Calculate integer positions and sizes so that tiles align\n        const xIndex = originTileCoord[1] - tileCoord[1];\n        const nextX = Math.round(origin[0] - (xIndex - 1) * dx);\n        const yIndex = originTileCoord[2] - tileCoord[2];\n        const nextY = Math.round(origin[1] - (yIndex - 1) * dy);\n        const x = Math.round(origin[0] - xIndex * dx);\n        const y = Math.round(origin[1] - yIndex * dy);\n        const w = nextX - x;\n        const h = nextY - y;\n        const transition = zs.length === 1;\n\n        let contextSaved = false;\n\n        // Clip mask for regions in this tile that already filled by a higher z tile\n        currentClip = [x, y, x + w, y, x + w, y + h, x, y + h];\n        for (let i = 0, ii = clips.length; i < ii; ++i) {\n          if (!transition && currentZ < clipZs[i]) {\n            const clip = clips[i];\n            if (\n              intersects(\n                [x, y, x + w, y + h],\n                [clip[0], clip[3], clip[4], clip[7]],\n              )\n            ) {\n              if (!contextSaved) {\n                context.save();\n                contextSaved = true;\n              }\n              context.beginPath();\n              // counter-clockwise (outer ring) for current tile\n              context.moveTo(currentClip[0], currentClip[1]);\n              context.lineTo(currentClip[2], currentClip[3]);\n              context.lineTo(currentClip[4], currentClip[5]);\n              context.lineTo(currentClip[6], currentClip[7]);\n              // clockwise (inner ring) for higher z tile\n              context.moveTo(clip[6], clip[7]);\n              context.lineTo(clip[4], clip[5]);\n              context.lineTo(clip[2], clip[3]);\n              context.lineTo(clip[0], clip[1]);\n              context.clip();\n            }\n          }\n        }\n        clips.push(currentClip);\n        clipZs.push(currentZ);\n\n        this.drawTile(tile, frameState, x, y, w, h, tileGutter, transition);\n        if (contextSaved) {\n          context.restore();\n        }\n        this.renderedTiles.unshift(tile);\n\n        // TODO: decide if this is necessary\n        this.updateUsedTiles(frameState.usedTiles, tileSource, tile);\n      }\n    }\n\n    this.renderedResolution = tileResolution;\n    this.extentChanged =\n      !this.renderedExtent_ || !equals(this.renderedExtent_, canvasExtent);\n    this.renderedExtent_ = canvasExtent;\n    this.renderedPixelRatio = pixelRatio;\n\n    this.postRender(this.context, frameState);\n\n    if (layerState.extent) {\n      context.restore();\n    }\n    context.imageSmoothingEnabled = true;\n\n    if (this.renderComplete) {\n      /**\n       * @param {import(\"../../Map.js\").default} map Map.\n       * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n       */\n      const postRenderFunction = (map, frameState) => {\n        const tileSourceKey = getUid(tileSource);\n        const wantedTiles = frameState.wantedTiles[tileSourceKey];\n        const tilesCount = wantedTiles ? Object.keys(wantedTiles).length : 0;\n        this.updateCacheSize(tilesCount);\n        this.tileCache_.expireCache();\n      };\n\n      frameState.postRenderFunctions.push(postRenderFunction);\n    }\n    if (!this.renderComplete && !allTilesIdle) {\n      frameState.animate = true;\n    }\n\n    return this.container;\n  }\n\n  /**\n   * Increases the cache size if needed\n   * @param {number} tileCount Minimum number of tiles needed.\n   */\n  updateCacheSize(tileCount) {\n    this.tileCache_.highWaterMark = Math.max(\n      this.tileCache_.highWaterMark,\n      tileCount * 2,\n    );\n  }\n\n  /**\n   * @param {import(\"../../Tile.js\").default} tile Tile.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} x Left of the tile.\n   * @param {number} y Top of the tile.\n   * @param {number} w Width of the tile.\n   * @param {number} h Height of the tile.\n   * @param {number} gutter Tile gutter.\n   * @param {boolean} transition Apply an alpha transition.\n   * @protected\n   */\n  drawTile(tile, frameState, x, y, w, h, gutter, transition) {\n    let image;\n    if (tile instanceof DataTile) {\n      image = asImageLike(tile.getData());\n      if (!image) {\n        throw new Error('Rendering array data is not yet supported');\n      }\n    } else {\n      image = this.getTileImage(\n        /** @type {import(\"../../ImageTile.js\").default} */ (tile),\n      );\n    }\n    if (!image) {\n      return;\n    }\n    const context = this.getRenderContext(frameState);\n    const uid = getUid(this);\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const alpha =\n      layerState.opacity *\n      (transition ? tile.getAlpha(uid, frameState.time) : 1);\n    const alphaChanged = alpha !== context.globalAlpha;\n    if (alphaChanged) {\n      context.save();\n      context.globalAlpha = alpha;\n    }\n    context.drawImage(\n      image,\n      gutter,\n      gutter,\n      image.width - 2 * gutter,\n      image.height - 2 * gutter,\n      x,\n      y,\n      w,\n      h,\n    );\n\n    if (alphaChanged) {\n      context.restore();\n    }\n    if (alpha !== layerState.opacity) {\n      frameState.animate = true;\n    } else if (transition) {\n      tile.endTransition(uid);\n    }\n  }\n\n  /**\n   * @return {HTMLCanvasElement} Image\n   */\n  getImage() {\n    const context = this.context;\n    return context ? context.canvas : null;\n  }\n\n  /**\n   * Get the image from a tile.\n   * @param {import(\"../../ImageTile.js\").default} tile Tile.\n   * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n   * @protected\n   */\n  getTileImage(tile) {\n    return tile.getImage();\n  }\n\n  /**\n   * @param {!Object<string, !Object<string, boolean>>} usedTiles Used tiles.\n   * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n   * @param {import('../../Tile.js').default} tile Tile.\n   * @protected\n   */\n  updateUsedTiles(usedTiles, tileSource, tile) {\n    // FIXME should we use tilesToDrawByZ instead?\n    const tileSourceKey = getUid(tileSource);\n    if (!(tileSourceKey in usedTiles)) {\n      usedTiles[tileSourceKey] = {};\n    }\n    usedTiles[tileSourceKey][tile.getKey()] = true;\n  }\n}\n\nexport default CanvasTileLayerRenderer;\n","/**\n * @module ol/layer/TileProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  PRELOAD: 'preload',\n  USE_INTERIM_TILES_ON_ERROR: 'useInterimTilesOnError',\n};\n","/**\n * @module ol/layer/BaseTile\n */\nimport Layer from './Layer.js';\nimport TileProperty from './TileProperty.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../render/EventType\").LayerRenderEventTypes, import(\"../render/Event\").default, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|\n *   import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError'|import(\"../render/EventType\").LayerRenderEventTypes, Return>} BaseTileLayerOnSignature\n */\n\n/**\n * @template {import(\"../source/Tile.js\").default} TileSourceType\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 * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {TileSourceType} [source] Source for this layer.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../Map.js\").default#addLayer map.addLayer()}.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [useInterimTilesOnError=true] Deprecated.  Use interim tiles on error.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n * @property {number} [cacheSize=512] The internal tile cache size.  This needs to be large enough to render\n * two zoom levels worth of tiles.\n */\n\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @template {import(\"../renderer/Layer.js\").default} RendererType\n * @extends {Layer<TileSourceType, RendererType>}\n * @api\n */\nclass BaseTileLayer extends Layer {\n  /**\n   * @param {Options<TileSourceType>} [options] Tile layer options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const baseOptions = Object.assign({}, options);\n\n    const cacheSize = options.cacheSize;\n    delete options.cacheSize;\n\n    delete baseOptions.preload;\n    delete baseOptions.useInterimTilesOnError;\n    super(baseOptions);\n\n    /***\n     * @type {BaseTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {BaseTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {BaseTileLayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {number|undefined}\n     * @private\n     */\n    this.cacheSize_ = cacheSize;\n\n    this.setPreload(options.preload !== undefined ? options.preload : 0);\n    this.setUseInterimTilesOnError(\n      options.useInterimTilesOnError !== undefined\n        ? options.useInterimTilesOnError\n        : true,\n    );\n  }\n\n  /**\n   * @return {number|undefined} The suggested cache size\n   * @protected\n   */\n  getCacheSize() {\n    return this.cacheSize_;\n  }\n\n  /**\n   * Return the level as number to which we will preload tiles up to.\n   * @return {number} The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  getPreload() {\n    return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n  }\n\n  /**\n   * Set the level as number to which we will preload tiles up to.\n   * @param {number} preload The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  setPreload(preload) {\n    this.set(TileProperty.PRELOAD, preload);\n  }\n\n  /**\n   * Deprecated.  Whether we use interim tiles on error.\n   * @return {boolean} Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  getUseInterimTilesOnError() {\n    return /** @type {boolean} */ (\n      this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR)\n    );\n  }\n\n  /**\n   * Deprecated.  Set whether we use interim tiles on error.\n   * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  setUseInterimTilesOnError(useInterimTilesOnError) {\n    this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n  }\n\n  /**\n   * Get data for a pixel location.  The return type depends on the source data.  For image tiles,\n   * a four element RGBA array will be returned.  For data tiles, the array length will match the\n   * number of bands in the dataset.  For requests outside the layer extent, `null` will be returned.\n   * Data for a image tiles can only be retrieved if the source's `crossOrigin` property is set.\n   *\n   * ```js\n   * // display layer data on every pointer move\n   * map.on('pointermove', (event) => {\n   *   console.log(layer.getData(event.pixel));\n   * });\n   * ```\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   * @api\n   * @override\n   */\n  getData(pixel) {\n    return super.getData(pixel);\n  }\n}\n\nexport default BaseTileLayer;\n","/**\n * @module ol/layer/Tile\n */\nimport CanvasTileLayerRenderer from '../renderer/canvas/TileLayer.js';\nimport BaseTileLayer from './BaseTile.js';\n\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} [TileSourceType=import(\"../source/Tile.js\").default]\n * @extends BaseTileLayer<TileSourceType, CanvasTileLayerRenderer>\n * @api\n */\nclass TileLayer extends BaseTileLayer {\n  /**\n   * @param {import(\"./BaseTile.js\").Options<TileSourceType>} [options] Tile layer options.\n   */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasTileLayerRenderer(this, {\n      cacheSize: this.getCacheSize(),\n    });\n  }\n}\n\nexport default TileLayer;\n","/**\n * @module ol/renderer/canvas/ImageLayer\n */\nimport ImageState from '../../ImageState.js';\nimport ViewHint from '../../ViewHint.js';\nimport {\n  containsCoordinate,\n  containsExtent,\n  getHeight,\n  getIntersection,\n  getWidth,\n  intersects as intersectsExtent,\n  isEmpty,\n} from '../../extent.js';\nimport {fromUserExtent} from '../../proj.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n} from '../../transform.js';\nimport CanvasLayerRenderer from './Layer.js';\n\n/**\n * @classdesc\n * Canvas renderer for image layers.\n * @api\n */\nclass CanvasImageLayerRenderer extends CanvasLayerRenderer {\n  /**\n   * @param {import(\"../../layer/Image.js\").default} imageLayer Image layer.\n   */\n  constructor(imageLayer) {\n    super(imageLayer);\n\n    /**\n     * @protected\n     * @type {?import(\"../../Image.js\").default}\n     */\n    this.image = null;\n  }\n\n  /**\n   * @return {import('../../DataTile.js').ImageLike} Image.\n   */\n  getImage() {\n    return !this.image ? null : this.image.getImage();\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const viewResolution = viewState.resolution;\n\n    const imageSource = this.getLayer().getSource();\n\n    const hints = frameState.viewHints;\n\n    let renderedExtent = frameState.extent;\n    if (layerState.extent !== undefined) {\n      renderedExtent = getIntersection(\n        renderedExtent,\n        fromUserExtent(layerState.extent, viewState.projection),\n      );\n    }\n\n    if (\n      !hints[ViewHint.ANIMATING] &&\n      !hints[ViewHint.INTERACTING] &&\n      !isEmpty(renderedExtent)\n    ) {\n      if (imageSource) {\n        const projection = viewState.projection;\n        const image = imageSource.getImage(\n          renderedExtent,\n          viewResolution,\n          pixelRatio,\n          projection,\n        );\n        if (image) {\n          if (this.loadImage(image)) {\n            this.image = image;\n          } else if (image.getState() === ImageState.EMPTY) {\n            this.image = null;\n          }\n        }\n      } else {\n        this.image = null;\n      }\n    }\n\n    return !!this.image;\n  }\n\n  /**\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray} Data at the pixel location.\n   * @override\n   */\n  getData(pixel) {\n    const frameState = this.frameState;\n    if (!frameState) {\n      return null;\n    }\n\n    const layer = this.getLayer();\n    const coordinate = applyTransform(\n      frameState.pixelToCoordinateTransform,\n      pixel.slice(),\n    );\n\n    const layerExtent = layer.getExtent();\n    if (layerExtent) {\n      if (!containsCoordinate(layerExtent, coordinate)) {\n        return null;\n      }\n    }\n\n    const imageExtent = this.image.getExtent();\n    const img = this.image.getImage();\n\n    const imageMapWidth = getWidth(imageExtent);\n    const col = Math.floor(\n      img.width * ((coordinate[0] - imageExtent[0]) / imageMapWidth),\n    );\n    if (col < 0 || col >= img.width) {\n      return null;\n    }\n\n    const imageMapHeight = getHeight(imageExtent);\n    const row = Math.floor(\n      img.height * ((imageExtent[3] - coordinate[1]) / imageMapHeight),\n    );\n    if (row < 0 || row >= img.height) {\n      return null;\n    }\n\n    return this.getImageData(img, col, row);\n  }\n\n  /**\n   * Render the layer.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target that may be used to render content to.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState, target) {\n    const image = this.image;\n    const imageExtent = image.getExtent();\n    const imageResolution = image.getResolution();\n    const [imageResolutionX, imageResolutionY] = Array.isArray(imageResolution)\n      ? imageResolution\n      : [imageResolution, imageResolution];\n    const imagePixelRatio = image.getPixelRatio();\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const viewCenter = viewState.center;\n    const viewResolution = viewState.resolution;\n    const scaleX =\n      (pixelRatio * imageResolutionX) / (viewResolution * imagePixelRatio);\n    const scaleY =\n      (pixelRatio * imageResolutionY) / (viewResolution * imagePixelRatio);\n\n    this.prepareContainer(frameState, target);\n\n    // desired dimensions of the canvas in pixels\n    const width = this.context.canvas.width;\n    const height = this.context.canvas.height;\n\n    const context = this.getRenderContext(frameState);\n\n    // clipped rendering if layer extent is set\n    let clipped = false;\n    let render = true;\n    if (layerState.extent) {\n      const layerExtent = fromUserExtent(\n        layerState.extent,\n        viewState.projection,\n      );\n      render = intersectsExtent(layerExtent, frameState.extent);\n      clipped = render && !containsExtent(layerExtent, frameState.extent);\n      if (clipped) {\n        this.clipUnrotated(context, frameState, layerExtent);\n      }\n    }\n\n    const img = image.getImage();\n\n    const transform = composeTransform(\n      this.tempTransform,\n      width / 2,\n      height / 2,\n      scaleX,\n      scaleY,\n      0,\n      (imagePixelRatio * (imageExtent[0] - viewCenter[0])) / imageResolutionX,\n      (imagePixelRatio * (viewCenter[1] - imageExtent[3])) / imageResolutionY,\n    );\n\n    this.renderedResolution = (imageResolutionY * pixelRatio) / imagePixelRatio;\n\n    const dw = img.width * transform[0];\n    const dh = img.height * transform[3];\n\n    if (!this.getLayer().getSource().getInterpolate()) {\n      context.imageSmoothingEnabled = false;\n    }\n\n    this.preRender(context, frameState);\n    if (render && dw >= 0.5 && dh >= 0.5) {\n      const dx = transform[4];\n      const dy = transform[5];\n      const opacity = layerState.opacity;\n      if (opacity !== 1) {\n        context.save();\n        context.globalAlpha = opacity;\n      }\n      context.drawImage(img, 0, 0, +img.width, +img.height, dx, dy, dw, dh);\n      if (opacity !== 1) {\n        context.restore();\n      }\n    }\n    this.postRender(this.context, frameState);\n\n    if (clipped) {\n      context.restore();\n    }\n    context.imageSmoothingEnabled = true;\n\n    return this.container;\n  }\n}\n\nexport default CanvasImageLayerRenderer;\n","/**\n * @module ol/layer/BaseImage\n */\nimport Layer from './Layer.js';\n\n/**\n * @template {import(\"../source/Image.js\").default} ImageSourceType\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 * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../Map.js\").default#addLayer map.addLayer()}.\n * @property {ImageSourceType} [source] Source for this layer.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Server-rendered images that are available for arbitrary extents and\n * resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Image.js\").default} ImageSourceType\n * @template {import(\"../renderer/Layer.js\").default} RendererType\n * @extends {Layer<ImageSourceType, RendererType>}\n * @api\n */\nclass BaseImageLayer extends Layer {\n  /**\n   * @param {Options<ImageSourceType>} [options] Layer options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n    super(options);\n  }\n}\n\nexport default BaseImageLayer;\n","/**\n * @module ol/layer/Image\n */\nimport CanvasImageLayerRenderer from '../renderer/canvas/ImageLayer.js';\nimport BaseImageLayer from './BaseImage.js';\n\n/**\n * @classdesc\n * Server-rendered images that are available for arbitrary extents and\n * resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Image.js\").default} ImageSourceType\n * @extends {BaseImageLayer<ImageSourceType, CanvasImageLayerRenderer>}\n * @api\n */\nclass ImageLayer extends BaseImageLayer {\n  /**\n   * @param {import(\"./BaseImage.js\").Options<ImageSourceType>} [options] Layer options.\n   */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasImageLayerRenderer(this);\n  }\n\n  /**\n   * Get data for a pixel location.  A four element RGBA array will be returned.  For requests outside the\n   * layer extent, `null` will be returned.  Data for an image can only be retrieved if the\n   * source's `crossOrigin` property is set.\n   *\n   * ```js\n   * // display layer data on every pointer move\n   * map.on('pointermove', (event) => {\n   *   console.log(layer.getData(event.pixel));\n   * });\n   * ```\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   * @api\n   * @override\n   */\n  getData(pixel) {\n    return super.getData(pixel);\n  }\n}\n\nexport default ImageLayer;\n","/**\n * @module ol/uri\n */\n\nimport {modulo} from './math.js';\nimport {hashZXY} from './tilecoord.js';\n\n/**\n * Appends query parameters to a URI.\n *\n * @param {string} uri The original URI, which may already have query data.\n * @param {!Object} params An object where keys are URI-encoded parameter keys,\n *     and the values are arbitrary types or arrays.\n * @return {string} The new URI.\n */\nexport function appendParams(uri, params) {\n  /** @type {Array<string>} */\n  const keyParams = [];\n  // Skip any null or undefined parameter values\n  Object.keys(params).forEach(function (k) {\n    if (params[k] !== null && params[k] !== undefined) {\n      keyParams.push(k + '=' + encodeURIComponent(params[k]));\n    }\n  });\n  const qs = keyParams.join('&');\n  // remove any trailing ? or &\n  uri = uri.replace(/[?&]$/, '');\n  // append ? or & depending on whether uri has existing parameters\n  uri += uri.includes('?') ? '&' : '?';\n  return uri + qs;\n}\n\nconst zRegEx = /\\{z\\}/g;\nconst xRegEx = /\\{x\\}/g;\nconst yRegEx = /\\{y\\}/g;\nconst dashYRegEx = /\\{-y\\}/g;\n\n/**\n * @param {string} template The URL template.  Should have `{x}`, `{y}`, and `{z}` placeholders.  If\n * the template has a `{-y}` placeholder, the `maxY` parameter must be supplied.\n * @param {number} z The tile z coordinate.\n * @param {number} x The tile x coordinate.\n * @param {number} y The tile y coordinate.\n * @param {number} [maxY] The maximum y coordinate at the given z level.\n * @return {string} The URL.\n */\nexport function renderXYZTemplate(template, z, x, y, maxY) {\n  return template\n    .replace(zRegEx, z.toString())\n    .replace(xRegEx, x.toString())\n    .replace(yRegEx, y.toString())\n    .replace(dashYRegEx, function () {\n      if (maxY === undefined) {\n        throw new Error(\n          'If the URL template has a {-y} placeholder, the grid extent must be known',\n        );\n      }\n      return (maxY - y).toString();\n    });\n}\n\n/**\n * @param {Array<string>} urls List of URLs.\n * @param {number} z The tile z coordinate.\n * @param {number} x The tile x coordinate.\n * @param {number} y The tile y coordinate.\n * @return {string} The chosen URL.\n */\nexport function pickUrl(urls, z, x, y) {\n  const hash = hashZXY(z, x, y);\n  const index = modulo(hash, urls.length);\n  return urls[index];\n}\n\n/**\n * @param {string} url URL.\n * @return {Array<string>} Array of urls.\n */\nexport function expandUrl(url) {\n  const urls = [];\n  let match = /\\{([a-z])-([a-z])\\}/.exec(url);\n  if (match) {\n    // char range\n    const startCharCode = match[1].charCodeAt(0);\n    const stopCharCode = match[2].charCodeAt(0);\n    let charCode;\n    for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {\n      urls.push(url.replace(match[0], String.fromCharCode(charCode)));\n    }\n    return urls;\n  }\n  match = /\\{(\\d+)-(\\d+)\\}/.exec(url);\n  if (match) {\n    // number range\n    const stop = parseInt(match[2], 10);\n    for (let i = parseInt(match[1], 10); i <= stop; i++) {\n      urls.push(url.replace(match[0], i.toString()));\n    }\n    return urls;\n  }\n  urls.push(url);\n  return urls;\n}\n","/**\n * @module ol/tilegrid/TileGrid\n */\nimport TileRange, {\n  createOrUpdate as createOrUpdateTileRange,\n} from '../TileRange.js';\nimport {isSorted, linearFindNearest} from '../array.js';\nimport {assert} from '../asserts.js';\nimport {createOrUpdate, getTopLeft} from '../extent.js';\nimport {intersectsLinearRing} from '../geom/flat/intersectsextent.js';\nimport {ceil, clamp, floor} from '../math.js';\nimport {toSize} from '../size.js';\nimport {createOrUpdate as createOrUpdateTileCoord} from '../tilecoord.js';\nimport {DEFAULT_TILE_SIZE} from './common.js';\n\n/**\n * @private\n * @type {import(\"../tilecoord.js\").TileCoord}\n */\nconst tmpTileCoord = [0, 0, 0];\n\n/**\n * Number of decimal digits to consider in integer values when rounding.\n * @type {number}\n */\nconst DECIMALS = 5;\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../extent.js\").Extent} [extent] Extent for the tile grid. No tiles outside this\n * extent will be requested by {@link module:ol/source/Tile~TileSource} sources. When no `origin` or\n * `origins` are configured, the `origin` will be set to the top-left corner of the extent.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {import(\"../coordinate.js\").Coordinate} [origin] The tile grid origin, i.e. where the `x`\n * and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left to right and downwards. If not\n * specified, `extent` or `origins` must be provided.\n * @property {Array<import(\"../coordinate.js\").Coordinate>} [origins] Tile grid origins, i.e. where\n * the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * origin. Tile coordinates increase left to right and downwards. If not specified, `extent` or\n * `origin` must be provided.\n * @property {!Array<number>} resolutions Resolutions. The array index of each resolution needs\n * to match the zoom level. This means that even if a `minZoom` is configured, the resolutions\n * array will have a length of `maxZoom + 1`.\n * @property {Array<import(\"../size.js\").Size>} [sizes] Number of tile rows and columns\n * of the grid for each zoom level. If specified the values\n * define each zoom level's extent together with the `origin` or `origins`.\n * A grid `extent` can be configured in addition, and will further limit the extent\n * for which tile requests are made by sources. If the bottom-left corner of\n * an extent is used as `origin` or `origins`, then the `y` value must be\n * negative because OpenLayers tile coordinates use the top left as the origin.\n * @property {number|import(\"../size.js\").Size} [tileSize] Tile size.\n * Default is `[256, 256]`.\n * @property {Array<number|import(\"../size.js\").Size>} [tileSizes] Tile sizes. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * tile size.\n */\n\n/**\n * @classdesc\n * Base class for setting the grid pattern for sources accessing tiled-image\n * servers.\n * @api\n */\nclass TileGrid {\n  /**\n   * @param {Options} options Tile grid options.\n   */\n  constructor(options) {\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.minZoom = options.minZoom !== undefined ? options.minZoom : 0;\n\n    /**\n     * @private\n     * @type {!Array<number>}\n     */\n    this.resolutions_ = options.resolutions;\n    assert(\n      isSorted(\n        this.resolutions_,\n        /**\n         * @param {number} a First resolution\n         * @param {number} b Second resolution\n         * @return {number} Comparison result\n         */\n        (a, b) => b - a,\n        true,\n      ),\n      '`resolutions` must be sorted in descending order',\n    );\n\n    // check if we've got a consistent zoom factor and origin\n    let zoomFactor;\n    if (!options.origins) {\n      for (let i = 0, ii = this.resolutions_.length - 1; i < ii; ++i) {\n        if (!zoomFactor) {\n          zoomFactor = this.resolutions_[i] / this.resolutions_[i + 1];\n        } else {\n          if (this.resolutions_[i] / this.resolutions_[i + 1] !== zoomFactor) {\n            zoomFactor = undefined;\n            break;\n          }\n        }\n      }\n    }\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.zoomFactor_ = zoomFactor;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.maxZoom = this.resolutions_.length - 1;\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate|null}\n     */\n    this.origin_ = options.origin !== undefined ? options.origin : null;\n\n    /**\n     * @private\n     * @type {Array<import(\"../coordinate.js\").Coordinate>}\n     */\n    this.origins_ = null;\n    if (options.origins !== undefined) {\n      this.origins_ = options.origins;\n      assert(\n        this.origins_.length == this.resolutions_.length,\n        'Number of `origins` and `resolutions` must be equal',\n      );\n    }\n\n    const extent = options.extent;\n\n    if (extent !== undefined && !this.origin_ && !this.origins_) {\n      this.origin_ = getTopLeft(extent);\n    }\n\n    assert(\n      (!this.origin_ && this.origins_) || (this.origin_ && !this.origins_),\n      'Either `origin` or `origins` must be configured, never both',\n    );\n\n    /**\n     * @private\n     * @type {Array<number|import(\"../size.js\").Size>}\n     */\n    this.tileSizes_ = null;\n    if (options.tileSizes !== undefined) {\n      this.tileSizes_ = options.tileSizes;\n      assert(\n        this.tileSizes_.length == this.resolutions_.length,\n        'Number of `tileSizes` and `resolutions` must be equal',\n      );\n    }\n\n    /**\n     * @private\n     * @type {number|import(\"../size.js\").Size}\n     */\n    this.tileSize_ =\n      options.tileSize !== undefined\n        ? options.tileSize\n        : !this.tileSizes_\n          ? DEFAULT_TILE_SIZE\n          : null;\n    assert(\n      (!this.tileSize_ && this.tileSizes_) ||\n        (this.tileSize_ && !this.tileSizes_),\n      'Either `tileSize` or `tileSizes` must be configured, never both',\n    );\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.extent_ = extent !== undefined ? extent : null;\n\n    /**\n     * @private\n     * @type {Array<import(\"../TileRange.js\").default>}\n     */\n    this.fullTileRanges_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.tmpSize_ = [0, 0];\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.tmpExtent_ = [0, 0, 0, 0];\n\n    if (options.sizes !== undefined) {\n      this.fullTileRanges_ = options.sizes.map((size, z) => {\n        const tileRange = new TileRange(\n          Math.min(0, size[0]),\n          Math.max(size[0] - 1, -1),\n          Math.min(0, size[1]),\n          Math.max(size[1] - 1, -1),\n        );\n        if (extent) {\n          const restrictedTileRange = this.getTileRangeForExtentAndZ(extent, z);\n          tileRange.minX = Math.max(restrictedTileRange.minX, tileRange.minX);\n          tileRange.maxX = Math.min(restrictedTileRange.maxX, tileRange.maxX);\n          tileRange.minY = Math.max(restrictedTileRange.minY, tileRange.minY);\n          tileRange.maxY = Math.min(restrictedTileRange.maxY, tileRange.maxY);\n        }\n        return tileRange;\n      });\n    } else if (extent) {\n      this.calculateTileRanges_(extent);\n    }\n  }\n\n  /**\n   * Call a function with each tile coordinate for a given extent and zoom level.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} zoom Integer zoom level.\n   * @param {function(import(\"../tilecoord.js\").TileCoord): void} callback Function called with each tile coordinate.\n   * @api\n   */\n  forEachTileCoord(extent, zoom, callback) {\n    const tileRange = this.getTileRangeForExtentAndZ(extent, zoom);\n    for (let i = tileRange.minX, ii = tileRange.maxX; i <= ii; ++i) {\n      for (let j = tileRange.minY, jj = tileRange.maxY; j <= jj; ++j) {\n        callback([zoom, i, j]);\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {function(number, import(\"../TileRange.js\").default): boolean} callback Callback.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary import(\"../TileRange.js\").default object.\n   * @param {import(\"../extent.js\").Extent} [tempExtent] Temporary import(\"../extent.js\").Extent object.\n   * @return {boolean} Callback succeeded.\n   */\n  forEachTileCoordParentTileRange(\n    tileCoord,\n    callback,\n    tempTileRange,\n    tempExtent,\n  ) {\n    let tileRange, x, y;\n    let tileCoordExtent = null;\n    let z = tileCoord[0] - 1;\n    if (this.zoomFactor_ === 2) {\n      x = tileCoord[1];\n      y = tileCoord[2];\n    } else {\n      tileCoordExtent = this.getTileCoordExtent(tileCoord, tempExtent);\n    }\n    while (z >= this.minZoom) {\n      if (x !== undefined && y !== undefined) {\n        x = Math.floor(x / 2);\n        y = Math.floor(y / 2);\n        tileRange = createOrUpdateTileRange(x, x, y, y, tempTileRange);\n      } else {\n        tileRange = this.getTileRangeForExtentAndZ(\n          tileCoordExtent,\n          z,\n          tempTileRange,\n        );\n      }\n      if (callback(z, tileRange)) {\n        return true;\n      }\n      --z;\n    }\n    return false;\n  }\n\n  /**\n   * Get the extent for this tile grid, if it was configured.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getExtent() {\n    return this.extent_;\n  }\n\n  /**\n   * Get the maximum zoom level for the grid.\n   * @return {number} Max zoom.\n   * @api\n   */\n  getMaxZoom() {\n    return this.maxZoom;\n  }\n\n  /**\n   * Get the minimum zoom level for the grid.\n   * @return {number} Min zoom.\n   * @api\n   */\n  getMinZoom() {\n    return this.minZoom;\n  }\n\n  /**\n   * Get the origin for the grid at the given zoom level.\n   * @param {number} z Integer zoom level.\n   * @return {import(\"../coordinate.js\").Coordinate} Origin.\n   * @api\n   */\n  getOrigin(z) {\n    if (this.origin_) {\n      return this.origin_;\n    }\n    return this.origins_[z];\n  }\n\n  /**\n   * Get the resolution for the given zoom level.\n   * @param {number} z Integer zoom level.\n   * @return {number} Resolution.\n   * @api\n   */\n  getResolution(z) {\n    return this.resolutions_[z];\n  }\n\n  /**\n   * Get the list of resolutions for the tile grid.\n   * @return {Array<number>} Resolutions.\n   * @api\n   */\n  getResolutions() {\n    return this.resolutions_;\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary import(\"../TileRange.js\").default object.\n   * @param {import(\"../extent.js\").Extent} [tempExtent] Temporary import(\"../extent.js\").Extent object.\n   * @return {import(\"../TileRange.js\").default|null} Tile range.\n   */\n  getTileCoordChildTileRange(tileCoord, tempTileRange, tempExtent) {\n    if (tileCoord[0] < this.maxZoom) {\n      if (this.zoomFactor_ === 2) {\n        const minX = tileCoord[1] * 2;\n        const minY = tileCoord[2] * 2;\n        return createOrUpdateTileRange(\n          minX,\n          minX + 1,\n          minY,\n          minY + 1,\n          tempTileRange,\n        );\n      }\n      const tileCoordExtent = this.getTileCoordExtent(\n        tileCoord,\n        tempExtent || this.tmpExtent_,\n      );\n      return this.getTileRangeForExtentAndZ(\n        tileCoordExtent,\n        tileCoord[0] + 1,\n        tempTileRange,\n      );\n    }\n    return null;\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {number} z Integer zoom level.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary import(\"../TileRange.js\").default object.\n   * @return {import(\"../TileRange.js\").default|null} Tile range.\n   */\n  getTileRangeForTileCoordAndZ(tileCoord, z, tempTileRange) {\n    if (z > this.maxZoom || z < this.minZoom) {\n      return null;\n    }\n\n    const tileCoordZ = tileCoord[0];\n    const tileCoordX = tileCoord[1];\n    const tileCoordY = tileCoord[2];\n\n    if (z === tileCoordZ) {\n      return createOrUpdateTileRange(\n        tileCoordX,\n        tileCoordY,\n        tileCoordX,\n        tileCoordY,\n        tempTileRange,\n      );\n    }\n\n    if (this.zoomFactor_) {\n      const factor = Math.pow(this.zoomFactor_, z - tileCoordZ);\n      const minX = Math.floor(tileCoordX * factor);\n      const minY = Math.floor(tileCoordY * factor);\n      if (z < tileCoordZ) {\n        return createOrUpdateTileRange(minX, minX, minY, minY, tempTileRange);\n      }\n\n      const maxX = Math.floor(factor * (tileCoordX + 1)) - 1;\n      const maxY = Math.floor(factor * (tileCoordY + 1)) - 1;\n      return createOrUpdateTileRange(minX, maxX, minY, maxY, tempTileRange);\n    }\n\n    const tileCoordExtent = this.getTileCoordExtent(tileCoord, this.tmpExtent_);\n    return this.getTileRangeForExtentAndZ(tileCoordExtent, z, tempTileRange);\n  }\n\n  /**\n   * Get a tile range for the given extent and integer zoom level.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} z Integer zoom level.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary tile range object.\n   * @return {import(\"../TileRange.js\").default} Tile range.\n   */\n  getTileRangeForExtentAndZ(extent, z, tempTileRange) {\n    this.getTileCoordForXYAndZ_(extent[0], extent[3], z, false, tmpTileCoord);\n    const minX = tmpTileCoord[1];\n    const minY = tmpTileCoord[2];\n    this.getTileCoordForXYAndZ_(extent[2], extent[1], z, true, tmpTileCoord);\n    const maxX = tmpTileCoord[1];\n    const maxY = tmpTileCoord[2];\n    return createOrUpdateTileRange(minX, maxX, minY, maxY, tempTileRange);\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @return {import(\"../coordinate.js\").Coordinate} Tile center.\n   */\n  getTileCoordCenter(tileCoord) {\n    const origin = this.getOrigin(tileCoord[0]);\n    const resolution = this.getResolution(tileCoord[0]);\n    const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n    return [\n      origin[0] + (tileCoord[1] + 0.5) * tileSize[0] * resolution,\n      origin[1] - (tileCoord[2] + 0.5) * tileSize[1] * resolution,\n    ];\n  }\n\n  /**\n   * Get the extent of a tile coordinate.\n   *\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../extent.js\").Extent} [tempExtent] Temporary extent object.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getTileCoordExtent(tileCoord, tempExtent) {\n    const origin = this.getOrigin(tileCoord[0]);\n    const resolution = this.getResolution(tileCoord[0]);\n    const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n    const minX = origin[0] + tileCoord[1] * tileSize[0] * resolution;\n    const minY = origin[1] - (tileCoord[2] + 1) * tileSize[1] * resolution;\n    const maxX = minX + tileSize[0] * resolution;\n    const maxY = minY + tileSize[1] * resolution;\n    return createOrUpdate(minX, minY, maxX, maxY, tempExtent);\n  }\n\n  /**\n   * Get the tile coordinate for the given map coordinate and resolution.  This\n   * method considers that coordinates that intersect tile boundaries should be\n   * assigned the higher tile coordinate.\n   *\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Destination import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @api\n   */\n  getTileCoordForCoordAndResolution(coordinate, resolution, opt_tileCoord) {\n    return this.getTileCoordForXYAndResolution_(\n      coordinate[0],\n      coordinate[1],\n      resolution,\n      false,\n      opt_tileCoord,\n    );\n  }\n\n  /**\n   * Note that this method should not be called for resolutions that correspond\n   * to an integer zoom level.  Instead call the `getTileCoordForXYAndZ_` method.\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {number} resolution Resolution (for a non-integer zoom level).\n   * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n   *     intersections go to the higher tile coordinate, let edge intersections\n   *     go to the lower tile coordinate.\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Temporary import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @private\n   */\n  getTileCoordForXYAndResolution_(\n    x,\n    y,\n    resolution,\n    reverseIntersectionPolicy,\n    opt_tileCoord,\n  ) {\n    const z = this.getZForResolution(resolution);\n    const scale = resolution / this.getResolution(z);\n    const origin = this.getOrigin(z);\n    const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n\n    let tileCoordX = (scale * (x - origin[0])) / resolution / tileSize[0];\n    let tileCoordY = (scale * (origin[1] - y)) / resolution / tileSize[1];\n\n    if (reverseIntersectionPolicy) {\n      tileCoordX = ceil(tileCoordX, DECIMALS) - 1;\n      tileCoordY = ceil(tileCoordY, DECIMALS) - 1;\n    } else {\n      tileCoordX = floor(tileCoordX, DECIMALS);\n      tileCoordY = floor(tileCoordY, DECIMALS);\n    }\n\n    return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n  }\n\n  /**\n   * Although there is repetition between this method and `getTileCoordForXYAndResolution_`,\n   * they should have separate implementations.  This method is for integer zoom\n   * levels.  The other method should only be called for resolutions corresponding\n   * to non-integer zoom levels.\n   * @param {number} x Map x coordinate.\n   * @param {number} y Map y coordinate.\n   * @param {number} z Integer zoom level.\n   * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n   *     intersections go to the higher tile coordinate, let edge intersections\n   *     go to the lower tile coordinate.\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Temporary import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @private\n   */\n  getTileCoordForXYAndZ_(x, y, z, reverseIntersectionPolicy, opt_tileCoord) {\n    const origin = this.getOrigin(z);\n    const resolution = this.getResolution(z);\n    const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n\n    let tileCoordX = (x - origin[0]) / resolution / tileSize[0];\n    let tileCoordY = (origin[1] - y) / resolution / tileSize[1];\n\n    if (reverseIntersectionPolicy) {\n      tileCoordX = ceil(tileCoordX, DECIMALS) - 1;\n      tileCoordY = ceil(tileCoordY, DECIMALS) - 1;\n    } else {\n      tileCoordX = floor(tileCoordX, DECIMALS);\n      tileCoordY = floor(tileCoordY, DECIMALS);\n    }\n\n    return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n  }\n\n  /**\n   * Get a tile coordinate given a map coordinate and zoom level.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} z Integer zoom level, e.g. the result of a `getZForResolution()` method call\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Destination import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @api\n   */\n  getTileCoordForCoordAndZ(coordinate, z, opt_tileCoord) {\n    return this.getTileCoordForXYAndZ_(\n      coordinate[0],\n      coordinate[1],\n      z,\n      false,\n      opt_tileCoord,\n    );\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @return {number} Tile resolution.\n   */\n  getTileCoordResolution(tileCoord) {\n    return this.resolutions_[tileCoord[0]];\n  }\n\n  /**\n   * Get the tile size for a zoom level. The type of the return value matches the\n   * `tileSize` or `tileSizes` that the tile grid was configured with. To always\n   * get an {@link import(\"../size.js\").Size}, run the result through {@link module:ol/size.toSize}.\n   * @param {number} z Z.\n   * @return {number|import(\"../size.js\").Size} Tile size.\n   * @api\n   */\n  getTileSize(z) {\n    if (this.tileSize_) {\n      return this.tileSize_;\n    }\n    return this.tileSizes_[z];\n  }\n\n  /**\n   * @param {number} z Zoom level.\n   * @return {import(\"../TileRange.js\").default|null} Extent tile range for the specified zoom level.\n   */\n  getFullTileRange(z) {\n    if (!this.fullTileRanges_) {\n      return this.extent_\n        ? this.getTileRangeForExtentAndZ(this.extent_, z)\n        : null;\n    }\n    return this.fullTileRanges_[z];\n  }\n\n  /**\n   * @param {number} resolution Resolution.\n   * @param {number|import(\"../array.js\").NearestDirectionFunction} [opt_direction]\n   *     If 0, the nearest resolution will be used.\n   *     If 1, the nearest higher resolution (lower Z) will be used. If -1, the\n   *     nearest lower resolution (higher Z) will be used. Default is 0.\n   *     Use a {@link module:ol/array~NearestDirectionFunction} for more precise control.\n   *\n   * For example to change tile Z at the midpoint of zoom levels\n   * ```js\n   * function(value, high, low) {\n   *   return value - low * Math.sqrt(high / low);\n   * }\n   * ```\n   * @return {number} Z.\n   * @api\n   */\n  getZForResolution(resolution, opt_direction) {\n    const z = linearFindNearest(\n      this.resolutions_,\n      resolution,\n      opt_direction || 0,\n    );\n    return clamp(z, this.minZoom, this.maxZoom);\n  }\n\n  /**\n   * The tile with the provided tile coordinate intersects the given viewport.\n   * @param {import('../tilecoord.js').TileCoord} tileCoord Tile coordinate.\n   * @param {Array<number>} viewport Viewport as returned from {@link module:ol/extent.getRotatedViewport}.\n   * @return {boolean} The tile with the provided tile coordinate intersects the given viewport.\n   */\n  tileCoordIntersectsViewport(tileCoord, viewport) {\n    return intersectsLinearRing(\n      viewport,\n      0,\n      viewport.length,\n      2,\n      this.getTileCoordExtent(tileCoord),\n    );\n  }\n\n  /**\n   * @param {!import(\"../extent.js\").Extent} extent Extent for this tile grid.\n   * @private\n   */\n  calculateTileRanges_(extent) {\n    const length = this.resolutions_.length;\n    const fullTileRanges = new Array(length);\n    for (let z = this.minZoom; z < length; ++z) {\n      fullTileRanges[z] = this.getTileRangeForExtentAndZ(extent, z);\n    }\n    this.fullTileRanges_ = fullTileRanges;\n  }\n}\n\nexport default TileGrid;\n","/**\n * @module ol/tilegrid/WMTS\n */\n\nimport {get as getProjection} from '../proj.js';\nimport TileGrid from './TileGrid.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../extent.js\").Extent} [extent] Extent for the tile grid. No tiles\n * outside this extent will be requested by {@link module:ol/source/Tile~TileSource} sources.\n * When no `origin` or `origins` are configured, the `origin` will be set to the\n * top-left corner of the extent.\n * @property {import(\"../coordinate.js\").Coordinate} [origin] The tile grid origin, i.e.\n * where the `x` and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left\n * to right and downwards. If not specified, `extent` or `origins` must be provided.\n * @property {Array<import(\"../coordinate.js\").Coordinate>} [origins] Tile grid origins,\n * i.e. where the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If\n * given, the array length should match the length of the `resolutions` array, i.e.\n * each resolution can have a different origin. Tile coordinates increase left to\n * right and downwards. If not specified, `extent` or `origin` must be provided.\n * @property {!Array<number>} resolutions Resolutions. The array index of each\n * resolution needs to match the zoom level. This means that even if a `minZoom`\n * is configured, the resolutions array will have a length of `maxZoom + 1`\n * @property {!Array<string>} matrixIds matrix IDs. The length of this array needs\n * to match the length of the `resolutions` array.\n * @property {Array<import(\"../size.js\").Size>} [sizes] Number of tile rows and columns\n * of the grid for each zoom level. The values here are the `TileMatrixWidth` and\n * `TileMatrixHeight` advertised in the GetCapabilities response of the WMTS, and\n * define each zoom level's extent together with the `origin` or `origins`.\n * A grid `extent` can be configured in addition, and will further limit the extent for\n * which tile requests are made by sources. If the bottom-left corner of\n * an extent is used as `origin` or `origins`, then the `y` value must be\n * negative because OpenLayers tile coordinates use the top left as the origin.\n * @property {number|import(\"../size.js\").Size} [tileSize] Tile size.\n * @property {Array<number|import(\"../size.js\").Size>} [tileSizes] Tile sizes. The length of\n * this array needs to match the length of the `resolutions` array.\n */\n\n/**\n * @classdesc\n * Set the grid pattern for sources accessing WMTS tiled-image servers.\n * @api\n */\nclass WMTSTileGrid extends TileGrid {\n  /**\n   * @param {Options} options WMTS options.\n   */\n  constructor(options) {\n    super({\n      extent: options.extent,\n      origin: options.origin,\n      origins: options.origins,\n      resolutions: options.resolutions,\n      tileSize: options.tileSize,\n      tileSizes: options.tileSizes,\n      sizes: options.sizes,\n    });\n\n    /**\n     * @private\n     * @type {!Array<string>}\n     */\n    this.matrixIds_ = options.matrixIds;\n  }\n\n  /**\n   * @param {number} z Z.\n   * @return {string} MatrixId..\n   */\n  getMatrixId(z) {\n    return this.matrixIds_[z];\n  }\n\n  /**\n   * Get the list of matrix identifiers.\n   * @return {Array<string>} MatrixIds.\n   * @api\n   */\n  getMatrixIds() {\n    return this.matrixIds_;\n  }\n}\n\nexport default WMTSTileGrid;\n\n/**\n * Create a tile grid from a WMTS capabilities matrix set and an\n * optional TileMatrixSetLimits.\n * @param {Object} matrixSet An object representing a matrixSet in the\n *     capabilities document.\n * @param {import(\"../extent.js\").Extent} [extent] An optional extent to restrict the tile\n *     ranges the server provides.\n * @param {Array<Object>} [matrixLimits] An optional object representing\n *     the available matrices for tileGrid.\n * @return {WMTSTileGrid} WMTS tileGrid instance.\n * @api\n */\nexport function createFromCapabilitiesMatrixSet(\n  matrixSet,\n  extent,\n  matrixLimits,\n) {\n  /** @type {!Array<number>} */\n  const resolutions = [];\n  /** @type {!Array<string>} */\n  const matrixIds = [];\n  /** @type {!Array<import(\"../coordinate.js\").Coordinate>} */\n  const origins = [];\n  /** @type {!Array<number|import(\"../size.js\").Size>} */\n  const tileSizes = [];\n  /** @type {!Array<import(\"../size.js\").Size>} */\n  const sizes = [];\n\n  matrixLimits = matrixLimits !== undefined ? matrixLimits : [];\n\n  const supportedCRSPropName = 'SupportedCRS';\n  const matrixIdsPropName = 'TileMatrix';\n  const identifierPropName = 'Identifier';\n  const scaleDenominatorPropName = 'ScaleDenominator';\n  const topLeftCornerPropName = 'TopLeftCorner';\n  const tileWidthPropName = 'TileWidth';\n  const tileHeightPropName = 'TileHeight';\n\n  const code = matrixSet[supportedCRSPropName];\n  const projection = getProjection(code);\n  const metersPerUnit = projection.getMetersPerUnit();\n  // swap origin x and y coordinates if axis orientation is lat/long\n  const switchOriginXY = projection.getAxisOrientation().startsWith('ne');\n\n  matrixSet[matrixIdsPropName].sort(function (a, b) {\n    return b[scaleDenominatorPropName] - a[scaleDenominatorPropName];\n  });\n\n  matrixSet[matrixIdsPropName].forEach(function (elt) {\n    let matrixAvailable;\n    // use of matrixLimits to filter TileMatrices from GetCapabilities\n    // TileMatrixSet from unavailable matrix levels.\n    if (matrixLimits.length > 0) {\n      matrixAvailable = matrixLimits.find(function (elt_ml) {\n        if (elt[identifierPropName] == elt_ml[matrixIdsPropName]) {\n          return true;\n        }\n        // Fallback for tileMatrix identifiers that don't get prefixed\n        // by their tileMatrixSet identifiers.\n        if (!elt[identifierPropName].includes(':')) {\n          return (\n            matrixSet[identifierPropName] + ':' + elt[identifierPropName] ===\n            elt_ml[matrixIdsPropName]\n          );\n        }\n        return false;\n      });\n    } else {\n      matrixAvailable = true;\n    }\n\n    if (matrixAvailable) {\n      matrixIds.push(elt[identifierPropName]);\n      const resolution =\n        (elt[scaleDenominatorPropName] * 0.28e-3) / metersPerUnit;\n      const tileWidth = elt[tileWidthPropName];\n      const tileHeight = elt[tileHeightPropName];\n      if (switchOriginXY) {\n        origins.push([\n          elt[topLeftCornerPropName][1],\n          elt[topLeftCornerPropName][0],\n        ]);\n      } else {\n        origins.push(elt[topLeftCornerPropName]);\n      }\n      resolutions.push(resolution);\n      tileSizes.push(\n        tileWidth == tileHeight ? tileWidth : [tileWidth, tileHeight],\n      );\n      sizes.push([elt['MatrixWidth'], elt['MatrixHeight']]);\n    }\n  });\n\n  return new WMTSTileGrid({\n    extent: extent,\n    origins: origins,\n    resolutions: resolutions,\n    matrixIds: matrixIds,\n    tileSizes: tileSizes,\n    sizes: sizes,\n  });\n}\n","/**\n * @module ol/tilegrid\n */\nimport {\n  containsCoordinate,\n  createOrUpdate,\n  getCorner,\n  getHeight,\n  getWidth,\n} from './extent.js';\nimport {METERS_PER_UNIT, get as getProjection} from './proj.js';\nimport {toSize} from './size.js';\nimport TileGrid from './tilegrid/TileGrid.js';\nimport {DEFAULT_MAX_ZOOM, DEFAULT_TILE_SIZE} from './tilegrid/common.js';\n\nexport {TileGrid};\nexport {default as WMTS} from './tilegrid/WMTS.js';\n\n/**\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {!TileGrid} Default tile grid for the\n * passed projection.\n */\nexport function getForProjection(projection) {\n  let tileGrid = projection.getDefaultTileGrid();\n  if (!tileGrid) {\n    tileGrid = createForProjection(projection);\n    projection.setDefaultTileGrid(tileGrid);\n  }\n  return tileGrid;\n}\n\n/**\n * @param {TileGrid} tileGrid Tile grid.\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {import(\"./tilecoord.js\").TileCoord} Tile coordinate.\n */\nexport function wrapX(tileGrid, tileCoord, projection) {\n  const z = tileCoord[0];\n  const center = tileGrid.getTileCoordCenter(tileCoord);\n  const projectionExtent = extentFromProjection(projection);\n  if (!containsCoordinate(projectionExtent, center)) {\n    const worldWidth = getWidth(projectionExtent);\n    const worldsAway = Math.ceil(\n      (projectionExtent[0] - center[0]) / worldWidth,\n    );\n    center[0] += worldWidth * worldsAway;\n    return tileGrid.getTileCoordForCoordAndZ(center, z);\n  }\n  return tileCoord;\n}\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} [maxZoom] Maximum zoom level (default is\n *     DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [tileSize] Tile size (default uses\n *     DEFAULT_TILE_SIZE).\n * @param {import(\"./extent.js\").Corner} [corner] Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForExtent(extent, maxZoom, tileSize, corner) {\n  corner = corner !== undefined ? corner : 'top-left';\n\n  const resolutions = resolutionsFromExtent(extent, maxZoom, tileSize);\n\n  return new TileGrid({\n    extent: extent,\n    origin: getCorner(extent, corner),\n    resolutions: resolutions,\n    tileSize: tileSize,\n  });\n}\n\n/**\n * @typedef {Object} XYZOptions\n * @property {import(\"./extent.js\").Extent} [extent] Extent for the tile grid. The origin for an XYZ tile grid is the\n * top-left corner of the extent. If `maxResolution` is not provided the zero level of the grid is defined by the resolution\n * at which one tile fits in the provided extent. If not provided, the extent of the EPSG:3857 projection is used.\n * @property {number} [maxResolution] Resolution at level zero.\n * @property {number} [maxZoom] Maximum zoom. The default is `42`. This determines the number of levels\n * in the grid set. For example, a `maxZoom` of 21 means there are 22 levels in the grid set.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {number|import(\"./size.js\").Size} [tileSize=[256, 256]] Tile size in pixels.\n */\n\n/**\n * Creates a tile grid with a standard XYZ tiling scheme.\n * @param {XYZOptions} [options] Tile grid options.\n * @return {!TileGrid} Tile grid instance.\n * @api\n */\nexport function createXYZ(options) {\n  const xyzOptions = options || {};\n\n  const extent = xyzOptions.extent || getProjection('EPSG:3857').getExtent();\n\n  const gridOptions = {\n    extent: extent,\n    minZoom: xyzOptions.minZoom,\n    tileSize: xyzOptions.tileSize,\n    resolutions: resolutionsFromExtent(\n      extent,\n      xyzOptions.maxZoom,\n      xyzOptions.tileSize,\n      xyzOptions.maxResolution,\n    ),\n  };\n  return new TileGrid(gridOptions);\n}\n\n/**\n * Create a resolutions array from an extent.  A zoom factor of 2 is assumed.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} [maxZoom] Maximum zoom level (default is\n *     DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [tileSize] Tile size (default uses\n *     DEFAULT_TILE_SIZE).\n * @param {number} [maxResolution] Resolution at level zero.\n * @return {!Array<number>} Resolutions array.\n */\nfunction resolutionsFromExtent(extent, maxZoom, tileSize, maxResolution) {\n  maxZoom = maxZoom !== undefined ? maxZoom : DEFAULT_MAX_ZOOM;\n  tileSize = toSize(tileSize !== undefined ? tileSize : DEFAULT_TILE_SIZE);\n\n  const height = getHeight(extent);\n  const width = getWidth(extent);\n\n  maxResolution =\n    maxResolution > 0\n      ? maxResolution\n      : Math.max(width / tileSize[0], height / tileSize[1]);\n\n  const length = maxZoom + 1;\n  const resolutions = new Array(length);\n  for (let z = 0; z < length; ++z) {\n    resolutions[z] = maxResolution / Math.pow(2, z);\n  }\n  return resolutions;\n}\n\n/**\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @param {number} [maxZoom] Maximum zoom level (default is\n *     DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [tileSize] Tile size (default uses\n *     DEFAULT_TILE_SIZE).\n * @param {import(\"./extent.js\").Corner} [corner] Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForProjection(projection, maxZoom, tileSize, corner) {\n  const extent = extentFromProjection(projection);\n  return createForExtent(extent, maxZoom, tileSize, corner);\n}\n\n/**\n * Generate a tile grid extent from a projection.  If the projection has an\n * extent, it is used.  If not, a global extent is assumed.\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\nexport function extentFromProjection(projection) {\n  projection = getProjection(projection);\n  let extent = projection.getExtent();\n  if (!extent) {\n    const half =\n      (180 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit();\n    extent = createOrUpdate(-half, -half, half, half);\n  }\n  return extent;\n}\n","/**\n * @module ol/tileurlfunction\n */\nimport {modulo} from './math.js';\nimport {hash as tileCoordHash} from './tilecoord.js';\nimport {renderXYZTemplate} from './uri.js';\n\n/**\n * @param {string} template Template.\n * @param {import(\"./tilegrid/TileGrid.js\").default|null} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplate(template, tileGrid) {\n  return (\n    /**\n     * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n     * @param {number} pixelRatio Pixel ratio.\n     * @param {import(\"./proj/Projection.js\").default} projection Projection.\n     * @return {string|undefined} Tile URL.\n     */\n    function (tileCoord, pixelRatio, projection) {\n      if (!tileCoord) {\n        return undefined;\n      }\n      let maxY;\n      const z = tileCoord[0];\n      if (tileGrid) {\n        // The `{-y}` placeholder only works for sources that have a tile grid at construction\n        const range = tileGrid.getFullTileRange(z);\n        if (range) {\n          maxY = range.getHeight() - 1;\n        }\n      }\n      return renderXYZTemplate(template, z, tileCoord[1], tileCoord[2], maxY);\n    }\n  );\n}\n\n/**\n * @param {Array<string>} templates Templates.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplates(templates, tileGrid) {\n  const len = templates.length;\n  const tileUrlFunctions = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    tileUrlFunctions[i] = createFromTemplate(templates[i], tileGrid);\n  }\n  return createFromTileUrlFunctions(tileUrlFunctions);\n}\n\n/**\n * @param {Array<import(\"./Tile.js\").UrlFunction>} tileUrlFunctions Tile URL Functions.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTileUrlFunctions(tileUrlFunctions) {\n  if (tileUrlFunctions.length === 1) {\n    return tileUrlFunctions[0];\n  }\n  return (\n    /**\n     * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n     * @param {number} pixelRatio Pixel ratio.\n     * @param {import(\"./proj/Projection.js\").default} projection Projection.\n     * @return {string|undefined} Tile URL.\n     */\n    function (tileCoord, pixelRatio, projection) {\n      if (!tileCoord) {\n        return undefined;\n      }\n      const h = tileCoordHash(tileCoord);\n      const index = modulo(h, tileUrlFunctions.length);\n      return tileUrlFunctions[index](tileCoord, pixelRatio, projection);\n    }\n  );\n}\n\n/**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\nexport function nullTileUrlFunction(tileCoord, pixelRatio, projection) {\n  return undefined;\n}\n","/**\n * @module ol/source/Tile\n */\nimport Event from '../events/Event.js';\nimport {scale as scaleSize, toSize} from '../size.js';\nimport {withinExtentAndZ} from '../tilecoord.js';\nimport {\n  getForProjection as getTileGridForProjection,\n  wrapX,\n} from '../tilegrid.js';\nimport {abstract, getUid} from '../util.js';\nimport Source from './Source.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./TileEventType\").TileSourceEventTypes, TileSourceEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     import(\"./TileEventType\").TileSourceEventTypes, Return>} TileSourceOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {number} [tilePixelRatio] TilePixelRatio.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {import(\"./Source.js\").State} [state] State.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] TileGrid.\n * @property {boolean} [wrapX=false] WrapX.\n * @property {number} [transition] Transition.\n * @property {string} [key] Key.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0] ZDirection.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\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 sources providing images divided into a tile grid.\n *\n * @template {import(\"../Tile.js\").default} [TileType=import(\"../Tile.js\").default]\n * @abstract\n * @api\n */\nclass TileSource extends Source {\n  /**\n   * @param {Options} options SourceTile source options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      attributionsCollapsible: options.attributionsCollapsible,\n      projection: options.projection,\n      state: options.state,\n      wrapX: options.wrapX,\n      interpolate: options.interpolate,\n    });\n\n    /***\n     * @type {TileSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {TileSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {TileSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.tilePixelRatio_ =\n      options.tilePixelRatio !== undefined ? options.tilePixelRatio : 1;\n\n    /**\n     * @type {import(\"../tilegrid/TileGrid.js\").default|null}\n     * @protected\n     */\n    this.tileGrid = options.tileGrid !== undefined ? options.tileGrid : null;\n\n    const tileSize = [256, 256];\n    if (this.tileGrid) {\n      toSize(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), tileSize);\n    }\n\n    /**\n     * @protected\n     * @type {import(\"../size.js\").Size}\n     */\n    this.tmpSize = [0, 0];\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.key_ = options.key || getUid(this);\n\n    /**\n     * @protected\n     * @type {import(\"../Tile.js\").Options}\n     */\n    this.tileOptions = {\n      transition: options.transition,\n      interpolate: options.interpolate,\n    };\n\n    /**\n     * zDirection hint, read by the renderer. Indicates which resolution should be used\n     * by a renderer if the views 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     * @type {number|import(\"../array.js\").NearestDirectionFunction}\n     */\n    this.zDirection = options.zDirection ? options.zDirection : 0;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {number} Gutter.\n   */\n  getGutterForProjection(projection) {\n    return 0;\n  }\n\n  /**\n   * Return the key to be used for all tiles in the source.\n   * @return {string} The key for all tiles.\n   */\n  getKey() {\n    return this.key_;\n  }\n\n  /**\n   * Set the value to be used as the key for all tiles in the source.\n   * @param {string} key The key for tiles.\n   * @protected\n   */\n  setKey(key) {\n    if (this.key_ !== key) {\n      this.key_ = key;\n      this.changed();\n    }\n  }\n\n  /**\n   * @param {import(\"../proj/Projection\").default} [projection] Projection.\n   * @return {Array<number>|null} Resolutions.\n   * @override\n   */\n  getResolutions(projection) {\n    const tileGrid = projection\n      ? this.getTileGridForProjection(projection)\n      : this.tileGrid;\n    if (!tileGrid) {\n      return null;\n    }\n    return tileGrid.getResolutions();\n  }\n\n  /**\n   * @abstract\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {TileType|null} Tile.\n   */\n  getTile(z, x, y, pixelRatio, projection) {\n    return abstract();\n  }\n\n  /**\n   * Return the tile grid of the tile source.\n   * @return {import(\"../tilegrid/TileGrid.js\").default|null} Tile grid.\n   * @api\n   */\n  getTileGrid() {\n    return this.tileGrid;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n   */\n  getTileGridForProjection(projection) {\n    if (!this.tileGrid) {\n      return getTileGridForProjection(projection);\n    }\n    return this.tileGrid;\n  }\n\n  /**\n   * Get the tile pixel ratio for this source. Subclasses may override this\n   * method, which is meant to return a supported pixel ratio that matches the\n   * provided `pixelRatio` as close as possible.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Tile pixel ratio.\n   */\n  getTilePixelRatio(pixelRatio) {\n    return this.tilePixelRatio_;\n  }\n\n  /**\n   * @param {number} z Z.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../size.js\").Size} Tile size.\n   */\n  getTilePixelSize(z, pixelRatio, projection) {\n    const tileGrid = this.getTileGridForProjection(projection);\n    const tilePixelRatio = this.getTilePixelRatio(pixelRatio);\n    const tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n    if (tilePixelRatio == 1) {\n      return tileSize;\n    }\n    return scaleSize(tileSize, tilePixelRatio, this.tmpSize);\n  }\n\n  /**\n   * Returns a tile coordinate wrapped around the x-axis. When the tile coordinate\n   * is outside the resolution and extent range of the tile grid, `null` will be\n   * returned.\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../proj/Projection.js\").default} [projection] Projection.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate to be passed to the tileUrlFunction or\n   *     null if no tile URL should be created for the passed `tileCoord`.\n   */\n  getTileCoordForTileUrlFunction(tileCoord, projection) {\n    const gridProjection =\n      projection !== undefined ? projection : this.getProjection();\n    const tileGrid =\n      projection !== undefined\n        ? this.getTileGridForProjection(gridProjection)\n        : this.tileGrid || this.getTileGridForProjection(gridProjection);\n    if (this.getWrapX() && gridProjection.isGlobal()) {\n      tileCoord = wrapX(tileGrid, tileCoord, gridProjection);\n    }\n    return withinExtentAndZ(tileCoord, tileGrid) ? tileCoord : null;\n  }\n\n  /**\n   * Remove all cached reprojected tiles from the source. The next render cycle will create new tiles.\n   * @api\n   */\n  clear() {}\n\n  /**\n   * @override\n   */\n  refresh() {\n    this.clear();\n    super.refresh();\n  }\n}\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Tile~TileSource} instances are instances of this\n * type.\n */\nexport class TileSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../Tile.js\").default} tile The tile.\n   */\n  constructor(type, tile) {\n    super(type);\n\n    /**\n     * The tile related to the event.\n     * @type {import(\"../Tile.js\").default}\n     * @api\n     */\n    this.tile = tile;\n  }\n}\n\nexport default TileSource;\n","/**\n * @module ol/source/TileEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered when a tile starts loading.\n   * @event module:ol/source/Tile.TileSourceEvent#tileloadstart\n   * @api\n   */\n  TILELOADSTART: 'tileloadstart',\n\n  /**\n   * Triggered when a tile finishes loading, either when its data is loaded,\n   * or when loading was aborted because the tile is no longer needed.\n   * @event module:ol/source/Tile.TileSourceEvent#tileloadend\n   * @api\n   */\n  TILELOADEND: 'tileloadend',\n\n  /**\n   * Triggered if tile loading results in an error. Note that this is not the\n   * right place to re-fetch tiles. See {@link module:ol/ImageTile~ImageTile#load}\n   * for details.\n   * @event module:ol/source/Tile.TileSourceEvent#tileloaderror\n   * @api\n   */\n  TILELOADERROR: 'tileloaderror',\n};\n\n/**\n * @typedef {'tileloadstart'|'tileloadend'|'tileloaderror'} TileSourceEventTypes\n */\n","/**\n * @module ol/source/UrlTile\n */\nimport TileState from '../TileState.js';\nimport {createFromTemplates} from '../tileurlfunction.js';\nimport {expandUrl} from '../uri.js';\nimport {getUid} from '../util.js';\nimport TileSource, {TileSourceEvent} from './Tile.js';\nimport TileEventType from './TileEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {import(\"./Source.js\").State} [state] State.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] TileGrid.\n * @property {import(\"../Tile.js\").LoadFunction} tileLoadFunction TileLoadFunction.\n * @property {number} [tilePixelRatio] TilePixelRatio.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Deprecated.  Use an ImageTile source and provide a function\n * for the url option instead.\n * @property {string} [url] Url.\n * @property {Array<string>} [urls] Urls.\n * @property {boolean} [wrapX=true] WrapX.\n * @property {number} [transition] Transition.\n * @property {string} [key] Key.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0] ZDirection.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n */\n\n/**\n * @deprecated Use the ol/source/ImageTile.js instead.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n */\nclass UrlTile extends TileSource {\n  /**\n   * @param {Options} options Image tile options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      projection: options.projection,\n      state: options.state,\n      tileGrid: options.tileGrid,\n      tilePixelRatio: options.tilePixelRatio,\n      wrapX: options.wrapX,\n      transition: options.transition,\n      interpolate: options.interpolate,\n      key: options.key,\n      attributionsCollapsible: options.attributionsCollapsible,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.generateTileUrlFunction_ =\n      this.tileUrlFunction === UrlTile.prototype.tileUrlFunction;\n\n    /**\n     * @protected\n     * @type {import(\"../Tile.js\").LoadFunction}\n     */\n    this.tileLoadFunction = options.tileLoadFunction;\n\n    if (options.tileUrlFunction) {\n      this.tileUrlFunction = options.tileUrlFunction;\n    }\n\n    /**\n     * @protected\n     * @type {!Array<string>|null}\n     */\n    this.urls = null;\n\n    if (options.urls) {\n      this.setUrls(options.urls);\n    } else if (options.url) {\n      this.setUrl(options.url);\n    }\n\n    /**\n     * @private\n     * @type {!Object<string, boolean>}\n     */\n    this.tileLoadingKeys_ = {};\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Return the tile load function of the source.\n   * @return {import(\"../Tile.js\").LoadFunction} TileLoadFunction\n   * @api\n   */\n  getTileLoadFunction() {\n    return this.tileLoadFunction;\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Return the tile URL function of the source.\n   * @return {import(\"../Tile.js\").UrlFunction} TileUrlFunction\n   * @api\n   */\n  getTileUrlFunction() {\n    return Object.getPrototypeOf(this).tileUrlFunction === this.tileUrlFunction\n      ? this.tileUrlFunction.bind(this)\n      : this.tileUrlFunction;\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Return the URLs used for this source.\n   * When a tileUrlFunction is used instead of url or urls,\n   * null will be returned.\n   * @return {!Array<string>|null} URLs.\n   * @api\n   */\n  getUrls() {\n    return this.urls;\n  }\n\n  /**\n   * Handle tile change events.\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 uid = getUid(tile);\n    const tileState = tile.getState();\n    let type;\n    if (tileState == TileState.LOADING) {\n      this.tileLoadingKeys_[uid] = true;\n      type = TileEventType.TILELOADSTART;\n    } else if (uid in this.tileLoadingKeys_) {\n      delete this.tileLoadingKeys_[uid];\n      type =\n        tileState == TileState.ERROR\n          ? TileEventType.TILELOADERROR\n          : tileState == TileState.LOADED\n            ? TileEventType.TILELOADEND\n            : undefined;\n    }\n    if (type != undefined) {\n      this.dispatchEvent(new TileSourceEvent(type, tile));\n    }\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Set the tile load function of the source.\n   * @param {import(\"../Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n   * @api\n   */\n  setTileLoadFunction(tileLoadFunction) {\n    this.tileLoadFunction = tileLoadFunction;\n    this.changed();\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Set the tile URL function of the source.\n   * @param {import(\"../Tile.js\").UrlFunction} tileUrlFunction Tile URL function.\n   * @param {string} [key] Optional new tile key for the source.\n   * @api\n   */\n  setTileUrlFunction(tileUrlFunction, key) {\n    this.tileUrlFunction = tileUrlFunction;\n    if (typeof key !== 'undefined') {\n      this.setKey(key);\n    } else {\n      this.changed();\n    }\n  }\n\n  /**\n   * Set the URL to use for requests.\n   * @param {string} url URL.\n   * @api\n   */\n  setUrl(url) {\n    const urls = expandUrl(url);\n    this.urls = urls;\n    this.setUrls(urls);\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Set the URLs to use for requests.\n   * @param {Array<string>} urls URLs.\n   * @api\n   */\n  setUrls(urls) {\n    this.urls = urls;\n    const key = urls.join('\\n');\n    if (this.generateTileUrlFunction_) {\n      this.setTileUrlFunction(createFromTemplates(urls, this.tileGrid), key);\n    } else {\n      this.setKey(key);\n    }\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {string|undefined} Tile URL.\n   */\n  tileUrlFunction(tileCoord, pixelRatio, projection) {\n    return undefined;\n  }\n}\n\nexport default UrlTile;\n","/**\n * @module ol/source/TileImage\n */\nimport ImageTile from '../ImageTile.js';\nimport TileState from '../TileState.js';\nimport EventType from '../events/EventType.js';\nimport {equivalent, get as getProjection} from '../proj.js';\nimport ReprojTile from '../reproj/Tile.js';\nimport {getForProjection as getTileGridForProjection} from '../tilegrid.js';\nimport {getUid} from '../util.js';\nimport UrlTile from './UrlTile.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"./Source.js\").State} [state] Source state.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass] Class used to instantiate image tiles.\n * Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service. For example, if the tile\n * service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Deprecated.  Use an ImageTile source and provide a function\n * for the url option instead.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {Array<string>} [urls] An array of URL templates.\n * @property {boolean} [wrapX] Whether to wrap the world horizontally. The default, is to\n * request out-of-bounds tiles from the server. When set to `false`, only one\n * world will be rendered. When set to `true`, tiles will be requested for one\n * world only, but they will be wrapped horizontally to render multiple worlds.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {string} [key] Optional tile key for proper cache fetching\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @deprecated Use the ol/source/ImageTile.js instead.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n */\nclass TileImage extends UrlTile {\n  /**\n   * @param {!Options} options Image tile options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      projection: options.projection,\n      state: options.state,\n      tileGrid: options.tileGrid,\n      tileLoadFunction: options.tileLoadFunction\n        ? options.tileLoadFunction\n        : defaultTileLoadFunction,\n      tilePixelRatio: options.tilePixelRatio,\n      tileUrlFunction: options.tileUrlFunction,\n      url: options.url,\n      urls: options.urls,\n      wrapX: options.wrapX,\n      transition: options.transition,\n      interpolate:\n        options.interpolate !== undefined ? options.interpolate : true,\n      key: options.key,\n      attributionsCollapsible: options.attributionsCollapsible,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @protected\n     * @type {?string}\n     */\n    this.crossOrigin =\n      options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n    /**\n     * @protected\n     * @type {typeof ImageTile}\n     */\n    this.tileClass =\n      options.tileClass !== undefined ? options.tileClass : ImageTile;\n\n    /**\n     * @protected\n     * @type {!Object<string, import(\"../tilegrid/TileGrid.js\").default>}\n     */\n    this.tileGridForProjection = {};\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.reprojectionErrorThreshold_ = options.reprojectionErrorThreshold;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderReprojectionEdges_ = false;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {number} Gutter.\n   * @override\n   */\n  getGutterForProjection(projection) {\n    if (\n      this.getProjection() &&\n      projection &&\n      !equivalent(this.getProjection(), projection)\n    ) {\n      return 0;\n    }\n    return this.getGutter();\n  }\n\n  /**\n   * @return {number} Gutter.\n   */\n  getGutter() {\n    return 0;\n  }\n\n  /**\n   * Return the key to be used for all tiles in the source.\n   * @return {string} The key for all tiles.\n   * @override\n   */\n  getKey() {\n    let key = super.getKey();\n    if (!this.getInterpolate()) {\n      key += ':disable-interpolation';\n    }\n    return key;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n   * @override\n   */\n  getTileGridForProjection(projection) {\n    const thisProj = this.getProjection();\n    if (this.tileGrid && (!thisProj || equivalent(thisProj, projection))) {\n      return this.tileGrid;\n    }\n    const projKey = getUid(projection);\n    if (!(projKey in this.tileGridForProjection)) {\n      this.tileGridForProjection[projKey] =\n        getTileGridForProjection(projection);\n    }\n    return this.tileGridForProjection[projKey];\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @param {string} key The key set on the tile.\n   * @return {!ImageTile} Tile.\n   * @private\n   */\n  createTile_(z, x, y, pixelRatio, projection, key) {\n    const tileCoord = [z, x, y];\n    const urlTileCoord = this.getTileCoordForTileUrlFunction(\n      tileCoord,\n      projection,\n    );\n    const tileUrl = urlTileCoord\n      ? this.tileUrlFunction(urlTileCoord, pixelRatio, projection)\n      : undefined;\n    const tile = new this.tileClass(\n      tileCoord,\n      tileUrl !== undefined ? TileState.IDLE : TileState.EMPTY,\n      tileUrl !== undefined ? tileUrl : '',\n      this.crossOrigin,\n      this.tileLoadFunction,\n      this.tileOptions,\n    );\n    tile.key = key;\n    tile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));\n    return tile;\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!(ImageTile|ReprojTile)} Tile.\n   * @override\n   */\n  getTile(z, x, y, pixelRatio, projection) {\n    const sourceProjection = this.getProjection();\n    if (\n      !sourceProjection ||\n      !projection ||\n      equivalent(sourceProjection, projection)\n    ) {\n      return this.getTileInternal(\n        z,\n        x,\n        y,\n        pixelRatio,\n        sourceProjection || projection,\n      );\n    }\n    const tileCoord = [z, x, y];\n    const key = this.getKey();\n    const sourceTileGrid = this.getTileGridForProjection(sourceProjection);\n    const targetTileGrid = this.getTileGridForProjection(projection);\n    const wrappedTileCoord = this.getTileCoordForTileUrlFunction(\n      tileCoord,\n      projection,\n    );\n    const tile = new ReprojTile(\n      sourceProjection,\n      sourceTileGrid,\n      projection,\n      targetTileGrid,\n      tileCoord,\n      wrappedTileCoord,\n      this.getTilePixelRatio(pixelRatio),\n      this.getGutter(),\n      (z, x, y, pixelRatio) =>\n        this.getTileInternal(z, x, y, pixelRatio, sourceProjection),\n      this.reprojectionErrorThreshold_,\n      this.renderReprojectionEdges_,\n      this.tileOptions,\n    );\n    tile.key = key;\n    return tile;\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {!import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!ImageTile} Tile.\n   * @protected\n   */\n  getTileInternal(z, x, y, pixelRatio, projection) {\n    const key = this.getKey();\n    return this.createTile_(z, x, y, pixelRatio, projection, key);\n  }\n\n  /**\n   * Sets whether to render reprojection edges or not (usually for debugging).\n   * @param {boolean} render Render the edges.\n   * @api\n   */\n  setRenderReprojectionEdges(render) {\n    if (this.renderReprojectionEdges_ == render) {\n      return;\n    }\n    this.renderReprojectionEdges_ = render;\n    this.changed();\n  }\n\n  /**\n   * Sets the tile grid to use when reprojecting the tiles to the given\n   * projection instead of the default tile grid for the projection.\n   *\n   * This can be useful when the default tile grid cannot be created\n   * (e.g. projection has no extent defined) or\n   * for optimization reasons (custom tile size, resolutions, ...).\n   *\n   * @param {import(\"../proj.js\").ProjectionLike} projection Projection.\n   * @param {import(\"../tilegrid/TileGrid.js\").default} tilegrid Tile grid to use for the projection.\n   * @api\n   */\n  setTileGridForProjection(projection, tilegrid) {\n    const proj = getProjection(projection);\n    if (proj) {\n      const projKey = getUid(proj);\n      if (!(projKey in this.tileGridForProjection)) {\n        this.tileGridForProjection[projKey] = tilegrid;\n      }\n    }\n  }\n}\n\n/**\n * @param {ImageTile} imageTile Image tile.\n * @param {string} src Source.\n */\nfunction defaultTileLoadFunction(imageTile, src) {\n  /** @type {HTMLImageElement|HTMLVideoElement} */ (imageTile.getImage()).src =\n    src;\n}\n\nexport default TileImage;\n","/**\n * @module ol/resolution\n */\n\n/**\n * @typedef {number|Array<number>} ResolutionLike\n */\n\n/**\n * @param {ResolutionLike} resolution Resolution.\n * @return {number} Resolution.\n */\nexport function fromResolutionLike(resolution) {\n  if (Array.isArray(resolution)) {\n    return Math.min(...resolution);\n  }\n  return resolution;\n}\n","/**\n * @module ol/reproj/Image\n */\n\nimport ImageWrapper from '../Image.js';\nimport ImageState from '../ImageState.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {\n  getCenter,\n  getHeight,\n  getIntersection,\n  getWidth,\n  isEmpty,\n} from '../extent.js';\nimport {\n  calculateSourceResolution,\n  render as renderReprojected,\n} from '../reproj.js';\nimport {fromResolutionLike} from '../resolution.js';\nimport Triangulation from './Triangulation.js';\nimport {ERROR_THRESHOLD} from './common.js';\n\n/**\n * @typedef {function(import(\"../extent.js\").Extent, number, number) : import(\"../Image.js\").default} FunctionType\n */\n\n/**\n * @classdesc\n * Class encapsulating single reprojected image.\n * See {@link module:ol/source/Image~ImageSource}.\n */\nclass ReprojImage extends ImageWrapper {\n  /**\n   * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection (of the data).\n   * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n   * @param {import(\"../extent.js\").Extent} targetExtent Target extent.\n   * @param {number} targetResolution Target resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {FunctionType} getImageFunction\n   *     Function returning source images (extent, resolution, pixelRatio).\n   * @param {boolean} interpolate Use linear interpolation when resampling.\n   */\n  constructor(\n    sourceProj,\n    targetProj,\n    targetExtent,\n    targetResolution,\n    pixelRatio,\n    getImageFunction,\n    interpolate,\n  ) {\n    let maxSourceExtent = sourceProj.getExtent();\n    if (maxSourceExtent && sourceProj.canWrapX()) {\n      maxSourceExtent = maxSourceExtent.slice();\n      maxSourceExtent[0] = -Infinity;\n      maxSourceExtent[2] = Infinity;\n    }\n    let maxTargetExtent = targetProj.getExtent();\n    if (maxTargetExtent && targetProj.canWrapX()) {\n      maxTargetExtent = maxTargetExtent.slice();\n      maxTargetExtent[0] = -Infinity;\n      maxTargetExtent[2] = Infinity;\n    }\n\n    const limitedTargetExtent = maxTargetExtent\n      ? getIntersection(targetExtent, maxTargetExtent)\n      : targetExtent;\n\n    const targetCenter = getCenter(limitedTargetExtent);\n    const sourceResolution = calculateSourceResolution(\n      sourceProj,\n      targetProj,\n      targetCenter,\n      targetResolution,\n    );\n\n    const errorThresholdInPixels = ERROR_THRESHOLD;\n\n    const triangulation = new Triangulation(\n      sourceProj,\n      targetProj,\n      limitedTargetExtent,\n      maxSourceExtent,\n      sourceResolution * errorThresholdInPixels,\n      targetResolution,\n    );\n\n    const sourceExtent = triangulation.calculateSourceExtent();\n    const sourceImage = isEmpty(sourceExtent)\n      ? null\n      : getImageFunction(sourceExtent, sourceResolution, pixelRatio);\n    const state = sourceImage ? ImageState.IDLE : ImageState.EMPTY;\n    const sourcePixelRatio = sourceImage ? sourceImage.getPixelRatio() : 1;\n\n    super(targetExtent, targetResolution, sourcePixelRatio, state);\n\n    /**\n     * @private\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.targetProj_ = targetProj;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.maxSourceExtent_ = maxSourceExtent;\n\n    /**\n     * @private\n     * @type {!import(\"./Triangulation.js\").default}\n     */\n    this.triangulation_ = triangulation;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.targetResolution_ = targetResolution;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.targetExtent_ = targetExtent;\n\n    /**\n     * @private\n     * @type {import(\"../Image.js\").default}\n     */\n    this.sourceImage_ = sourceImage;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.sourcePixelRatio_ = sourcePixelRatio;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.interpolate_ = interpolate;\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement}\n     */\n    this.canvas_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../events.js\").EventsKey}\n     */\n    this.sourceListenerKey_ = null;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.state == ImageState.LOADING) {\n      this.unlistenSource_();\n    }\n    super.disposeInternal();\n  }\n\n  /**\n   * @return {HTMLCanvasElement} Image.\n   * @override\n   */\n  getImage() {\n    return this.canvas_;\n  }\n\n  /**\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   */\n  getProjection() {\n    return this.targetProj_;\n  }\n\n  /**\n   * @private\n   */\n  reproject_() {\n    const sourceState = this.sourceImage_.getState();\n    if (sourceState == ImageState.LOADED) {\n      const width = getWidth(this.targetExtent_) / this.targetResolution_;\n      const height = getHeight(this.targetExtent_) / this.targetResolution_;\n      this.canvas_ = renderReprojected(\n        width,\n        height,\n        this.sourcePixelRatio_,\n        fromResolutionLike(this.sourceImage_.getResolution()),\n        this.maxSourceExtent_,\n        this.targetResolution_,\n        this.targetExtent_,\n        this.triangulation_,\n        [\n          {\n            extent: this.sourceImage_.getExtent(),\n            image: this.sourceImage_.getImage(),\n          },\n        ],\n        0,\n        undefined,\n        this.interpolate_,\n        true,\n      );\n    }\n    this.state = sourceState;\n    this.changed();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == ImageState.IDLE) {\n      this.state = ImageState.LOADING;\n      this.changed();\n\n      const sourceState = this.sourceImage_.getState();\n      if (sourceState == ImageState.LOADED || sourceState == ImageState.ERROR) {\n        this.reproject_();\n      } else {\n        this.sourceListenerKey_ = listen(\n          this.sourceImage_,\n          EventType.CHANGE,\n          (e) => {\n            const sourceState = this.sourceImage_.getState();\n            if (\n              sourceState == ImageState.LOADED ||\n              sourceState == ImageState.ERROR\n            ) {\n              this.unlistenSource_();\n              this.reproject_();\n            }\n          },\n        );\n        this.sourceImage_.load();\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  unlistenSource_() {\n    unlistenByKey(\n      /** @type {!import(\"../events.js\").EventsKey} */ (\n        this.sourceListenerKey_\n      ),\n    );\n    this.sourceListenerKey_ = null;\n  }\n}\n\nexport default ReprojImage;\n","/**\n * @module ol/source/common\n */\n\n/**\n * Default WMS version.\n * @type {string}\n */\nexport const DEFAULT_WMS_VERSION = '1.3.0';\n\n/**\n * Number of decimal digits to consider in integer values when rounding.\n * @type {number}\n */\nexport const DECIMALS = 4;\n","/**\n * @module ol/source/Image\n */\nimport ImageWrapper from '../Image.js';\nimport ImageState from '../ImageState.js';\nimport {linearFindNearest} from '../array.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {\n  containsExtent,\n  equals,\n  getCenter,\n  getForViewAndSize,\n  getHeight,\n  getWidth,\n} from '../extent.js';\nimport {ceil} from '../math.js';\nimport {equivalent} from '../proj.js';\nimport ReprojImage from '../reproj/Image.js';\nimport {fromResolutionLike} from '../resolution.js';\nimport Source from './Source.js';\nimport {DECIMALS} from './common.js';\n\n/**\n * @enum {string}\n */\nexport const ImageSourceEventType = {\n  /**\n   * Triggered when an image starts loading.\n   * @event module:ol/source/Image.ImageSourceEvent#imageloadstart\n   * @api\n   */\n  IMAGELOADSTART: 'imageloadstart',\n\n  /**\n   * Triggered when an image finishes loading.\n   * @event module:ol/source/Image.ImageSourceEvent#imageloadend\n   * @api\n   */\n  IMAGELOADEND: 'imageloadend',\n\n  /**\n   * Triggered if image loading results in an error.\n   * @event module:ol/source/Image.ImageSourceEvent#imageloaderror\n   * @api\n   */\n  IMAGELOADERROR: 'imageloaderror',\n};\n\n/**\n * @typedef {'imageloadend'|'imageloaderror'|'imageloadstart'} ImageSourceEventTypes\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Image~ImageSource} instances are instances of this\n * type.\n */\nexport class ImageSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../Image.js\").default} image The image.\n   */\n  constructor(type, image) {\n    super(type);\n\n    /**\n     * The image related to the event.\n     * @type {import(\"../Image.js\").default}\n     * @api\n     */\n    this.image = image;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<ImageSourceEventTypes, ImageSourceEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types\n *     |ImageSourceEventTypes, Return>} ImageSourceOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../Image.js\").Loader} [loader] Loader. Can either be a custom loader, or one of the\n * loaders created with a `createLoader()` function ({@link module:ol/source/wms.createLoader wms},\n * {@link module:ol/source/arcgisRest.createLoader arcgisRest}, {@link module:ol/source/mapguide.createLoader mapguide},\n * {@link module:ol/source/static.createLoader static}).\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {Array<number>} [resolutions] Resolutions.\n * @property {import(\"./Source.js\").State} [state] State.\n */\n\n/**\n * @classdesc\n * Base class for sources providing a single image.\n * @fires module:ol/source/Image.ImageSourceEvent\n * @api\n */\nclass ImageSource extends Source {\n  /**\n   * @param {Options} options Single image source options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      projection: options.projection,\n      state: options.state,\n      interpolate:\n        options.interpolate !== undefined ? options.interpolate : true,\n    });\n\n    /***\n     * @type {ImageSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ImageSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ImageSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @protected\n     * @type {import(\"../Image.js\").Loader}\n     */\n    this.loader = options.loader || null;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.resolutions_ =\n      options.resolutions !== undefined ? options.resolutions : null;\n\n    /**\n     * @private\n     * @type {import(\"../reproj/Image.js\").default}\n     */\n    this.reprojectedImage_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.reprojectedRevision_ = 0;\n\n    /**\n     * @protected\n     * @type {import(\"../Image.js\").default}\n     */\n    this.image = null;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.wantedExtent_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.wantedResolution_;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.static_ = options.loader ? options.loader.length === 0 : false;\n\n    /**\n     * @private\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.wantedProjection_ = null;\n  }\n\n  /**\n   * @return {Array<number>|null} Resolutions.\n   * @override\n   */\n  getResolutions() {\n    return this.resolutions_;\n  }\n\n  /**\n   * @param {Array<number>|null} resolutions Resolutions.\n   */\n  setResolutions(resolutions) {\n    this.resolutions_ = resolutions;\n  }\n\n  /**\n   * @protected\n   * @param {number} resolution Resolution.\n   * @return {number} Resolution.\n   */\n  findNearestResolution(resolution) {\n    const resolutions = this.getResolutions();\n    if (resolutions) {\n      const idx = linearFindNearest(resolutions, resolution, 0);\n      resolution = resolutions[idx];\n    }\n    return resolution;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../Image.js\").default} Single image.\n   */\n  getImage(extent, resolution, pixelRatio, projection) {\n    const sourceProjection = this.getProjection();\n    if (\n      !sourceProjection ||\n      !projection ||\n      equivalent(sourceProjection, projection)\n    ) {\n      if (sourceProjection) {\n        projection = sourceProjection;\n      }\n\n      return this.getImageInternal(extent, resolution, pixelRatio, projection);\n    }\n    if (this.reprojectedImage_) {\n      if (\n        this.reprojectedRevision_ == this.getRevision() &&\n        equivalent(this.reprojectedImage_.getProjection(), projection) &&\n        this.reprojectedImage_.getResolution() == resolution &&\n        equals(this.reprojectedImage_.getExtent(), extent)\n      ) {\n        return this.reprojectedImage_;\n      }\n      this.reprojectedImage_.dispose();\n      this.reprojectedImage_ = null;\n    }\n\n    this.reprojectedImage_ = new ReprojImage(\n      sourceProjection,\n      projection,\n      extent,\n      resolution,\n      pixelRatio,\n      (extent, resolution, pixelRatio) =>\n        this.getImageInternal(extent, resolution, pixelRatio, sourceProjection),\n      this.getInterpolate(),\n    );\n    this.reprojectedRevision_ = this.getRevision();\n\n    return this.reprojectedImage_;\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../Image.js\").default} Single image.\n   * @protected\n   */\n  getImageInternal(extent, resolution, pixelRatio, projection) {\n    if (this.loader) {\n      const requestExtent = getRequestExtent(extent, resolution, pixelRatio, 1);\n      const requestResolution = this.findNearestResolution(resolution);\n      if (\n        this.image &&\n        (this.static_ ||\n          (this.wantedProjection_ === projection &&\n            ((this.wantedExtent_ &&\n              containsExtent(this.wantedExtent_, requestExtent)) ||\n              containsExtent(this.image.getExtent(), requestExtent)) &&\n            ((this.wantedResolution_ &&\n              fromResolutionLike(this.wantedResolution_) ===\n                requestResolution) ||\n              fromResolutionLike(this.image.getResolution()) ===\n                requestResolution)))\n      ) {\n        return this.image;\n      }\n      this.wantedProjection_ = projection;\n      this.wantedExtent_ = requestExtent;\n      this.wantedResolution_ = requestResolution;\n      this.image = new ImageWrapper(\n        requestExtent,\n        requestResolution,\n        pixelRatio,\n        this.loader,\n      );\n      this.image.addEventListener(\n        EventType.CHANGE,\n        this.handleImageChange.bind(this),\n      );\n    }\n    return this.image;\n  }\n\n  /**\n   * Handle image change events.\n   * @param {import(\"../events/Event.js\").default} event Event.\n   * @protected\n   */\n  handleImageChange(event) {\n    const image = /** @type {import(\"../Image.js\").default} */ (event.target);\n    let type;\n    switch (image.getState()) {\n      case ImageState.LOADING:\n        this.loading = true;\n        type = ImageSourceEventType.IMAGELOADSTART;\n        break;\n      case ImageState.LOADED:\n        this.loading = false;\n        type = ImageSourceEventType.IMAGELOADEND;\n        break;\n      case ImageState.ERROR:\n        this.loading = false;\n        type = ImageSourceEventType.IMAGELOADERROR;\n        break;\n      default:\n        return;\n    }\n    if (this.hasListener(type)) {\n      this.dispatchEvent(new ImageSourceEvent(type, image));\n    }\n  }\n}\n\n/**\n * Default image load function for image sources that use import(\"../Image.js\").Image image\n * instances.\n * @param {import(\"../Image.js\").default} image Image.\n * @param {string} src Source.\n */\nexport function defaultImageLoadFunction(image, src) {\n  /** @type {HTMLImageElement|HTMLVideoElement} */ (image.getImage()).src = src;\n}\n\n/**\n * Adjusts the extent so it aligns with pixel boundaries.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} resolution Reolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} ratio Ratio between request size and view size.\n * @return {import(\"../extent.js\").Extent} Request extent.\n */\nexport function getRequestExtent(extent, resolution, pixelRatio, ratio) {\n  const imageResolution = resolution / pixelRatio;\n  const center = getCenter(extent);\n  const viewWidth = ceil(getWidth(extent) / imageResolution, DECIMALS);\n  const viewHeight = ceil(getHeight(extent) / imageResolution, DECIMALS);\n  const marginWidth = ceil(((ratio - 1) * viewWidth) / 2, DECIMALS);\n  const requestWidth = viewWidth + 2 * marginWidth;\n  const marginHeight = ceil(((ratio - 1) * viewHeight) / 2, DECIMALS);\n  const requestHeight = viewHeight + 2 * marginHeight;\n  return getForViewAndSize(center, imageResolution, 0, [\n    requestWidth,\n    requestHeight,\n  ]);\n}\n\nexport default ImageSource;\n","/**\n * @module ol/source/wms\n */\n\nimport {decode} from '../Image.js';\nimport {getForViewAndSize, getHeight, getWidth} from '../extent.js';\nimport {floor, round} from '../math.js';\nimport {get as getProjection} from '../proj.js';\nimport {compareVersions} from '../string.js';\nimport {appendParams} from '../uri.js';\nimport {getRequestExtent} from './Image.js';\nimport {DECIMALS} from './common.js';\n\n/**\n * Default WMS version.\n * @type {string}\n */\nexport const DEFAULT_VERSION = '1.3.0';\n\n/**\n * @const\n * @type {import(\"../size.js\").Size}\n */\nconst GETFEATUREINFO_IMAGE_SIZE = [101, 101];\n\n/**\n * @api\n * @typedef {'carmentaserver' | 'geoserver' | 'mapserver' | 'qgis'} ServerType\n * Set the server type to use implementation-specific parameters beyond the WMS specification.\n *  - `'carmentaserver'`: HiDPI support for [Carmenta Server](https://www.carmenta.com/en/products/carmenta-server)\n *  - `'geoserver'`: HiDPI support for [GeoServer](https://geoserver.org/)\n *  - `'mapserver'`: HiDPI support for [MapServer](https://mapserver.org/)\n *  - `'qgis'`: HiDPI support for [QGIS](https://qgis.org/)\n */\n\n/**\n * @param {string} baseUrl Base URL.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {Object} params WMS params. Will be modified in place.\n * @return {string} Request URL.\n */\nexport function getRequestUrl(baseUrl, extent, size, projection, params) {\n  params['WIDTH'] = size[0];\n  params['HEIGHT'] = size[1];\n\n  const axisOrientation = projection.getAxisOrientation();\n  const v13 = compareVersions(params['VERSION'], '1.3') >= 0;\n  params[v13 ? 'CRS' : 'SRS'] = projection.getCode();\n  const bbox =\n    v13 && axisOrientation.startsWith('ne')\n      ? [extent[1], extent[0], extent[3], extent[2]]\n      : extent;\n  params['BBOX'] = bbox.join(',');\n\n  return appendParams(baseUrl, params);\n}\n\n/**\n * @param {import(\"../extent\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio pixel ratio.\n * @param {import(\"../proj.js\").Projection} projection Projection.\n * @param {string} url WMS service url.\n * @param {Object} params WMS params.\n * @param {import(\"./wms.js\").ServerType} serverType The type of the remote WMS server.\n * @return {string} Image src.\n */\nexport function getImageSrc(\n  extent,\n  resolution,\n  pixelRatio,\n  projection,\n  url,\n  params,\n  serverType,\n) {\n  params = Object.assign({REQUEST: 'GetMap'}, params);\n\n  const imageResolution = resolution / pixelRatio;\n\n  const imageSize = [\n    round(getWidth(extent) / imageResolution, DECIMALS),\n    round(getHeight(extent) / imageResolution, DECIMALS),\n  ];\n\n  if (pixelRatio != 1) {\n    switch (serverType) {\n      case 'geoserver':\n        const dpi = (90 * pixelRatio + 0.5) | 0;\n        if ('FORMAT_OPTIONS' in params) {\n          params['FORMAT_OPTIONS'] += ';dpi:' + dpi;\n        } else {\n          params['FORMAT_OPTIONS'] = 'dpi:' + dpi;\n        }\n        break;\n      case 'mapserver':\n        params['MAP_RESOLUTION'] = 90 * pixelRatio;\n        break;\n      case 'carmentaserver':\n      case 'qgis':\n        params['DPI'] = 90 * pixelRatio;\n        break;\n      default:\n        throw new Error('Unknown `serverType` configured');\n    }\n  }\n\n  const src = getRequestUrl(url, extent, imageSize, projection, params);\n  return src;\n}\n\n/**\n * @param {Object} params WMS params.\n * @param {string} request WMS `REQUEST`.\n * @return {Object} WMS params with required properties set.\n */\nexport function getRequestParams(params, request) {\n  return Object.assign(\n    {\n      'REQUEST': request,\n      'SERVICE': 'WMS',\n      'VERSION': DEFAULT_VERSION,\n      'FORMAT': 'image/png',\n      'STYLES': '',\n      'TRANSPARENT': 'TRUE',\n    },\n    params,\n  );\n}\n\n/**\n * @typedef {Object} LoaderOptions\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting\n * the image from the remote server.\n * @property {Object<string,*>} [params] WMS request parameters.\n * At least a `LAYERS` param is required. `STYLES` is\n * `''` by default. `VERSION` is `1.3.0` by default. `WIDTH`, `HEIGHT` and `BBOX` will be set\n * dynamically. `CRS` (`SRS` for WMS version < 1.3.0) will is derived from the `proection` config.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is 'EPSG:3857'.\n * @property {number} [ratio=1.5] Ratio. `1` means image requests are the size of the map viewport, `2` means\n * twice the width and height of the map viewport, and so on. Must be `1` or higher.\n * @property {import(\"./wms.js\").ServerType} [serverType] The type of\n * the remote WMS server: `mapserver`, `geoserver`, `carmentaserver`, or `qgis`.\n * Only needed if `hidpi` is `true`.\n * @property {string} url WMS service URL.\n * @property {function(HTMLImageElement, string): Promise<import('../DataTile.js').ImageLike>} [load] Function\n * to perform loading of the image. Receives the created `HTMLImageElement` and the desired `src` as argument and\n * returns a promise resolving to the loaded or decoded image. Default is {@link module:ol/Image.decode}.\n */\n\n/**\n * Creates a loader for WMS images.\n * @param {LoaderOptions} options Loader options.\n * @return {import(\"../Image.js\").ImageObjectPromiseLoader} Loader.\n * @api\n */\nexport function createLoader(options) {\n  const hidpi = options.hidpi === undefined ? true : options.hidpi;\n  const projection = getProjection(options.projection || 'EPSG:3857');\n  const ratio = options.ratio || 1.5;\n  const load = options.load || decode;\n  const crossOrigin = options.crossOrigin ?? null;\n\n  return (extent, resolution, pixelRatio) => {\n    extent = getRequestExtent(extent, resolution, pixelRatio, ratio);\n    if (pixelRatio != 1 && (!hidpi || options.serverType === undefined)) {\n      pixelRatio = 1;\n    }\n    const src = getImageSrc(\n      extent,\n      resolution,\n      pixelRatio,\n      projection,\n      options.url,\n      getRequestParams(options.params, 'GetMap'),\n      options.serverType,\n    );\n    const image = new Image();\n    image.crossOrigin = crossOrigin;\n    return load(image, src).then((image) => ({image, extent, pixelRatio}));\n  };\n}\n\n/**\n * Get the GetFeatureInfo URL for the passed coordinate and resolution. Returns `undefined` if the\n * GetFeatureInfo URL cannot be constructed.\n * @param {LoaderOptions} options Options passed the `createWMSLoader()` function. In addition to\n * the params required by the loader, `INFO_FORMAT` should be specified, it defaults to\n * `application/json`. If `QUERY_LAYERS` is not provided, then the layers specified in the `LAYERS`\n * parameter will be used.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} resolution Resolution.\n * @return {string|undefined} GetFeatureInfo URL.\n * @api\n */\nexport function getFeatureInfoUrl(options, coordinate, resolution) {\n  if (options.url === undefined) {\n    return undefined;\n  }\n\n  const projectionObj = getProjection(options.projection || 'EPSG:3857');\n\n  const extent = getForViewAndSize(\n    coordinate,\n    resolution,\n    0,\n    GETFEATUREINFO_IMAGE_SIZE,\n  );\n\n  const baseParams = {\n    'QUERY_LAYERS': options.params['LAYERS'],\n    'INFO_FORMAT': 'application/json',\n  };\n  Object.assign(\n    baseParams,\n    getRequestParams(options.params, 'GetFeatureInfo'),\n    options.params,\n  );\n\n  const x = floor((coordinate[0] - extent[0]) / resolution, DECIMALS);\n  const y = floor((extent[3] - coordinate[1]) / resolution, DECIMALS);\n  const v13 = compareVersions(baseParams['VERSION'], '1.3') >= 0;\n  baseParams[v13 ? 'I' : 'X'] = x;\n  baseParams[v13 ? 'J' : 'Y'] = y;\n\n  return getRequestUrl(\n    options.url,\n    extent,\n    GETFEATUREINFO_IMAGE_SIZE,\n    projectionObj,\n    baseParams,\n  );\n}\n\n/**\n * Get the GetLegendGraphic URL, optionally optimized for the passed resolution and possibly\n * including any passed specific parameters. Returns `undefined` if the GetLegendGraphic URL\n * cannot be constructed.\n *\n * @param {LoaderOptions} options Options passed the `createWMSLoader()` function.\n * @param {number} [resolution] Resolution. If not provided, `SCALE` will not be calculated and\n * included in URL.\n * @return {string|undefined} GetLegendGraphic URL.\n * @api\n */\nexport function getLegendUrl(options, resolution) {\n  if (options.url === undefined) {\n    return undefined;\n  }\n\n  const baseParams = {\n    'SERVICE': 'WMS',\n    'VERSION': DEFAULT_VERSION,\n    'REQUEST': 'GetLegendGraphic',\n    'FORMAT': 'image/png',\n  };\n\n  if (resolution !== undefined) {\n    const mpu =\n      getProjection(options.projection || 'EPSG:3857').getMetersPerUnit() || 1;\n    const pixelSize = 0.00028;\n    baseParams['SCALE'] = (resolution * mpu) / pixelSize;\n  }\n\n  Object.assign(baseParams, options.params);\n\n  if (options.params !== undefined && baseParams['LAYER'] === undefined) {\n    const layers = baseParams['LAYERS'];\n    const isSingleLayer = !Array.isArray(layers) || layers.length !== 1;\n    if (!isSingleLayer) {\n      return undefined;\n    }\n    baseParams['LAYER'] = layers;\n  }\n\n  return appendParams(options.url, baseParams);\n}\n","/**\n * @module ol/source/TileWMS\n */\n\nimport {buffer, createEmpty} from '../extent.js';\nimport {modulo} from '../math.js';\nimport {get as getProjection, transform} from '../proj.js';\nimport {calculateSourceResolution} from '../reproj.js';\nimport {compareVersions} from '../string.js';\nimport {hash as tileCoordHash} from '../tilecoord.js';\nimport {appendParams} from '../uri.js';\nimport TileImage from './TileImage.js';\nimport {DEFAULT_VERSION, getImageSrc, getRequestParams} from './wms.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {Object<string,*>} params WMS request parameters.\n * At least a `LAYERS` param is required. `STYLES` is\n * `''` by default. `VERSION` is `1.3.0` by default. `WIDTH`, `HEIGHT`, `BBOX`\n * and `CRS` (`SRS` for WMS version < 1.3.0) will be set dynamically.\n * @property {number} [gutter=0]\n * The size in pixels of the gutter around image tiles to ignore. By setting\n * this property to a non-zero value, images will be requested that are wider\n * and taller than the tile size by a value of `2 x gutter`.\n * Using a non-zero value allows artifacts of rendering at tile edges to be\n * ignored. If you control the WMS service it is recommended to address\n * \"artifacts at tile edges\" issues by properly configuring the WMS service. For\n * example, MapServer has a `tile_map_edge_buffer` configuration parameter for\n * this. See https://mapserver.org/output/tile_mode.html.\n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting\n * the image from the remote server.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass] Class used to instantiate image tiles.\n * Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid. Base this on the resolutions,\n * tilesize and extent supported by the server.\n * If this is not defined, a default grid will be used: if there is a projection\n * extent, the grid will be based on that; if not, a grid based on a global\n * extent with origin at 0,0 will be used.\n * @property {import(\"./wms.js\").ServerType} [serverType] The type of\n * the remote WMS server: `mapserver`, `geoserver`, `carmentaserver`, or `qgis`.\n * Only needed if `hidpi` is `true`.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {string} [url] WMS service URL.\n * @property {Array<string>} [urls] WMS service urls.\n * Use this instead of `url` when the WMS supports multiple urls for GetMap requests.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * When set to `false`, only one world\n * will be rendered. When `true`, tiles will be requested for one world only,\n * but they will be wrapped horizontally to render multiple worlds.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Layer source for tile data from WMS servers.\n * @api\n */\nclass TileWMS extends TileImage {\n  /**\n   * @param {Options} [options] Tile WMS options.\n   */\n  constructor(options) {\n    options = options ? options : /** @type {Options} */ ({});\n\n    const params = Object.assign({}, options.params);\n\n    super({\n      attributions: options.attributions,\n      attributionsCollapsible: options.attributionsCollapsible,\n      cacheSize: options.cacheSize,\n      crossOrigin: options.crossOrigin,\n      interpolate: options.interpolate,\n      projection: options.projection,\n      reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n      tileClass: options.tileClass,\n      tileGrid: options.tileGrid,\n      tileLoadFunction: options.tileLoadFunction,\n      url: options.url,\n      urls: options.urls,\n      wrapX: options.wrapX !== undefined ? options.wrapX : true,\n      transition: options.transition,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.gutter_ = options.gutter !== undefined ? options.gutter : 0;\n\n    /**\n     * @private\n     * @type {!Object}\n     */\n    this.params_ = params;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.v13_ = true;\n\n    /**\n     * @private\n     * @type {import(\"./wms.js\").ServerType}\n     */\n    this.serverType_ = options.serverType;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.hidpi_ = options.hidpi !== undefined ? options.hidpi : true;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.tmpExtent_ = createEmpty();\n\n    this.updateV13_();\n    this.setKey(this.getKeyForParams_());\n  }\n\n  /**\n   * Return the GetFeatureInfo URL for the passed coordinate, resolution, and\n   * projection. Return `undefined` if the GetFeatureInfo URL cannot be\n   * constructed.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../proj.js\").ProjectionLike} projection Projection.\n   * @param {!Object} params GetFeatureInfo params. `INFO_FORMAT` at least should\n   *     be provided. If `QUERY_LAYERS` is not provided then the layers specified\n   *     in the `LAYERS` parameter will be used. `VERSION` should not be\n   *     specified here.\n   * @return {string|undefined} GetFeatureInfo URL.\n   * @api\n   */\n  getFeatureInfoUrl(coordinate, resolution, projection, params) {\n    const projectionObj = getProjection(projection);\n    const sourceProjectionObj = this.getProjection() || projectionObj;\n\n    let tileGrid = this.getTileGrid();\n    if (!tileGrid) {\n      tileGrid = this.getTileGridForProjection(sourceProjectionObj);\n    }\n\n    const sourceProjCoord = transform(\n      coordinate,\n      projectionObj,\n      sourceProjectionObj,\n    );\n    const sourceResolution = calculateSourceResolution(\n      sourceProjectionObj,\n      projectionObj,\n      coordinate,\n      resolution,\n    );\n\n    const z = tileGrid.getZForResolution(sourceResolution, this.zDirection);\n    const tileResolution = tileGrid.getResolution(z);\n    const tileCoord = tileGrid.getTileCoordForCoordAndZ(sourceProjCoord, z);\n\n    if (tileGrid.getResolutions().length <= tileCoord[0]) {\n      return undefined;\n    }\n\n    let tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_);\n\n    const gutter = this.gutter_;\n    if (gutter !== 0) {\n      tileExtent = buffer(tileExtent, tileResolution * gutter, tileExtent);\n    }\n\n    const baseParams = {\n      'QUERY_LAYERS': this.params_['LAYERS'],\n    };\n    Object.assign(\n      baseParams,\n      getRequestParams(this.params_, 'GetFeatureInfo'),\n      params,\n    );\n\n    const x = Math.floor((sourceProjCoord[0] - tileExtent[0]) / tileResolution);\n    const y = Math.floor((tileExtent[3] - sourceProjCoord[1]) / tileResolution);\n\n    baseParams[this.v13_ ? 'I' : 'X'] = x;\n    baseParams[this.v13_ ? 'J' : 'Y'] = y;\n\n    return this.getRequestUrl_(\n      tileCoord,\n      tileExtent,\n      1,\n      sourceProjectionObj || projectionObj,\n      baseParams,\n    );\n  }\n\n  /**\n   * Return the GetLegendGraphic URL, optionally optimized for the passed\n   * resolution and possibly including any passed specific parameters. Returns\n   * `undefined` if the GetLegendGraphic URL cannot be constructed.\n   *\n   * @param {number} [resolution] Resolution. If set to undefined, `SCALE`\n   *     will not be calculated and included in URL.\n   * @param {Object} [params] GetLegendGraphic params. If `LAYER` is set, the\n   *     request is generated for this wms layer, else it will try to use the\n   *     configured wms layer. Default `FORMAT` is `image/png`.\n   *     `VERSION` should not be specified here.\n   * @return {string|undefined} GetLegendGraphic URL.\n   * @api\n   */\n  getLegendUrl(resolution, params) {\n    if (this.urls[0] === undefined) {\n      return undefined;\n    }\n\n    const baseParams = {\n      'SERVICE': 'WMS',\n      'VERSION': DEFAULT_VERSION,\n      'REQUEST': 'GetLegendGraphic',\n      'FORMAT': 'image/png',\n    };\n\n    if (params === undefined || params['LAYER'] === undefined) {\n      const layers = this.params_.LAYERS;\n      const isSingleLayer = !Array.isArray(layers) || layers.length === 1;\n      if (!isSingleLayer) {\n        return undefined;\n      }\n      baseParams['LAYER'] = layers;\n    }\n\n    if (resolution !== undefined) {\n      const mpu = this.getProjection()\n        ? this.getProjection().getMetersPerUnit()\n        : 1;\n      const pixelSize = 0.00028;\n      baseParams['SCALE'] = (resolution * mpu) / pixelSize;\n    }\n\n    Object.assign(baseParams, params);\n\n    return appendParams(/** @type {string} */ (this.urls[0]), baseParams);\n  }\n\n  /**\n   * @return {number} Gutter.\n   * @override\n   */\n  getGutter() {\n    return this.gutter_;\n  }\n\n  /**\n   * Get the user-provided params, i.e. those passed to the constructor through\n   * the \"params\" option, and possibly updated using the updateParams method.\n   * @return {Object} Params.\n   * @api\n   */\n  getParams() {\n    return this.params_;\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../extent.js\").Extent} tileExtent Tile extent.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @param {Object} params Params.\n   * @return {string|undefined} Request URL.\n   * @private\n   */\n  getRequestUrl_(tileCoord, tileExtent, pixelRatio, projection, params) {\n    const urls = this.urls;\n    if (!urls) {\n      return undefined;\n    }\n    let url;\n    if (urls.length == 1) {\n      url = urls[0];\n    } else {\n      const index = modulo(tileCoordHash(tileCoord), urls.length);\n      url = urls[index];\n    }\n\n    return getImageSrc(\n      tileExtent,\n      (\n        this.tileGrid || this.getTileGridForProjection(projection)\n      ).getResolution(tileCoord[0]),\n      pixelRatio,\n      projection,\n      url,\n      params,\n      this.serverType_,\n    );\n  }\n\n  /**\n   * Get the tile pixel ratio for this source.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Tile pixel ratio.\n   * @override\n   */\n  getTilePixelRatio(pixelRatio) {\n    return !this.hidpi_ || this.serverType_ === undefined ? 1 : pixelRatio;\n  }\n\n  /**\n   * @private\n   * @return {string} The key for the current params.\n   */\n  getKeyForParams_() {\n    let i = 0;\n    const res = [];\n    for (const key in this.params_) {\n      res[i++] = key + '-' + this.params_[key];\n    }\n    return res.join('/');\n  }\n\n  /**\n   * Update the user-provided params.\n   * @param {Object} params Params.\n   * @api\n   */\n  updateParams(params) {\n    Object.assign(this.params_, params);\n    this.updateV13_();\n    this.setKey(this.getKeyForParams_());\n  }\n\n  /**\n   * @private\n   */\n  updateV13_() {\n    const version = this.params_['VERSION'] || DEFAULT_VERSION;\n    this.v13_ = compareVersions(version, '1.3') >= 0;\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord The tile coordinate\n   * @param {number} pixelRatio The pixel ratio\n   * @param {import(\"../proj/Projection.js\").default} projection The projection\n   * @return {string|undefined} The tile URL\n   * @override\n   */\n  tileUrlFunction(tileCoord, pixelRatio, projection) {\n    let tileGrid = this.getTileGrid();\n    if (!tileGrid) {\n      tileGrid = this.getTileGridForProjection(projection);\n    }\n\n    if (tileGrid.getResolutions().length <= tileCoord[0]) {\n      return undefined;\n    }\n\n    if (pixelRatio != 1 && (!this.hidpi_ || this.serverType_ === undefined)) {\n      pixelRatio = 1;\n    }\n\n    const tileResolution = tileGrid.getResolution(tileCoord[0]);\n    let tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_);\n\n    const gutter = this.gutter_;\n    if (gutter !== 0) {\n      tileExtent = buffer(tileExtent, tileResolution * gutter, tileExtent);\n    }\n\n    const baseParams = Object.assign(\n      {},\n      getRequestParams(this.params_, 'GetMap'),\n    );\n\n    return this.getRequestUrl_(\n      tileCoord,\n      tileExtent,\n      pixelRatio,\n      projection,\n      baseParams,\n    );\n  }\n}\n\nexport default TileWMS;\n","/**\n * @module ol/source/ImageWMS\n */\n\nimport {decode} from '../Image.js';\nimport {get as getProjection, transform} from '../proj.js';\nimport {calculateSourceResolution} from '../reproj.js';\nimport ImageSource, {defaultImageLoadFunction} from './Image.js';\nimport {createLoader, getFeatureInfoUrl, getLegendUrl} from './wms.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting\n * the image from the remote server.\n * @property {import(\"./wms.js\").ServerType} [serverType] The type of\n * the remote WMS server: `mapserver`, `geoserver`, `carmentaserver`, or `qgis`.\n * Only needed if `hidpi` is `true`.\n * @property {import(\"../Image.js\").LoadFunction} [imageLoadFunction] Optional function to load an image given a URL.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {Object<string,*>} [params] WMS request parameters.\n * At least a `LAYERS` param is required. `STYLES` is\n * `''` by default. `VERSION` is `1.3.0` by default. `WIDTH`, `HEIGHT`, `BBOX`\n * and `CRS` (`SRS` for WMS version < 1.3.0) will be set dynamically.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [ratio=1.5] Ratio. `1` means image requests are the size of the map viewport, `2` means\n * twice the width and height of the map viewport, and so on. Must be `1` or higher.\n * @property {Array<number>} [resolutions] Resolutions.\n * If specified, requests will be made for these resolutions only.\n * @property {string} [url] WMS service URL.\n */\n\n/**\n * @classdesc\n * Source for WMS servers providing single, untiled images.\n *\n * @fires module:ol/source/Image.ImageSourceEvent\n * @api\n */\nclass ImageWMS extends ImageSource {\n  /**\n   * @param {Options} [options] ImageWMS options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      attributions: options.attributions,\n      interpolate: options.interpolate,\n      projection: options.projection,\n      resolutions: options.resolutions,\n    });\n\n    /**\n     * @private\n     * @type {?string}\n     */\n    this.crossOrigin_ =\n      options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.url_ = options.url;\n\n    /**\n     * @private\n     * @type {import(\"../Image.js\").LoadFunction}\n     */\n    this.imageLoadFunction_ =\n      options.imageLoadFunction !== undefined\n        ? options.imageLoadFunction\n        : defaultImageLoadFunction;\n\n    /**\n     * @private\n     * @type {!Object}\n     */\n    this.params_ = Object.assign({}, options.params);\n\n    /**\n     * @private\n     * @type {import(\"./wms.js\").ServerType}\n     */\n    this.serverType_ = options.serverType;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.hidpi_ = options.hidpi !== undefined ? options.hidpi : true;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRevision_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.ratio_ = options.ratio !== undefined ? options.ratio : 1.5;\n\n    /**\n     * @private\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.loaderProjection_ = null;\n  }\n\n  /**\n   * Return the GetFeatureInfo URL for the passed coordinate, resolution, and\n   * projection. Return `undefined` if the GetFeatureInfo URL cannot be\n   * constructed.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../proj.js\").ProjectionLike} projection Projection.\n   * @param {!Object} params GetFeatureInfo params. `INFO_FORMAT` at least should\n   *     be provided. If `QUERY_LAYERS` is not provided then the layers specified\n   *     in the `LAYERS` parameter will be used. `VERSION` should not be\n   *     specified here.\n   * @return {string|undefined} GetFeatureInfo URL.\n   * @api\n   */\n  getFeatureInfoUrl(coordinate, resolution, projection, params) {\n    const projectionObj = getProjection(projection);\n    const sourceProjectionObj = this.getProjection();\n\n    if (sourceProjectionObj && sourceProjectionObj !== projectionObj) {\n      resolution = calculateSourceResolution(\n        sourceProjectionObj,\n        projectionObj,\n        coordinate,\n        resolution,\n      );\n      coordinate = transform(coordinate, projectionObj, sourceProjectionObj);\n    }\n\n    const options = {\n      url: this.url_,\n      params: {\n        ...this.params_,\n        ...params,\n      },\n      projection: sourceProjectionObj || projectionObj,\n    };\n    return getFeatureInfoUrl(options, coordinate, resolution);\n  }\n\n  /**\n   * Return the GetLegendGraphic URL, optionally optimized for the passed\n   * resolution and possibly including any passed specific parameters. Returns\n   * `undefined` if the GetLegendGraphic URL cannot be constructed.\n   *\n   * @param {number} [resolution] Resolution. If set to undefined, `SCALE`\n   *     will not be calculated and included in URL.\n   * @param {Object} [params] GetLegendGraphic params. If `LAYER` is set, the\n   *     request is generated for this wms layer, else it will try to use the\n   *     configured wms layer. Default `FORMAT` is `image/png`.\n   *     `VERSION` should not be specified here.\n   * @return {string|undefined} GetLegendGraphic URL.\n   * @api\n   */\n  getLegendUrl(resolution, params) {\n    return getLegendUrl(\n      {\n        url: this.url_,\n        params: {\n          ...this.params_,\n          ...params,\n        },\n      },\n      resolution,\n    );\n  }\n\n  /**\n   * Get the user-provided params, i.e. those passed to the constructor through\n   * the \"params\" option, and possibly updated using the updateParams method.\n   * @return {Object} Params.\n   * @api\n   */\n  getParams() {\n    return this.params_;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../Image.js\").default} Single image.\n   * @override\n   */\n  getImageInternal(extent, resolution, pixelRatio, projection) {\n    if (this.url_ === undefined) {\n      return null;\n    }\n    if (!this.loader || this.loaderProjection_ !== projection) {\n      // Lazily create loader to pick up the view projection and to allow `params` updates\n      this.loaderProjection_ = projection;\n      this.loader = createLoader({\n        crossOrigin: this.crossOrigin_,\n        params: this.params_,\n        projection: projection,\n        serverType: this.serverType_,\n        hidpi: this.hidpi_,\n        url: this.url_,\n        ratio: this.ratio_,\n        load: (image, src) => {\n          this.image.setImage(image);\n          this.imageLoadFunction_(this.image, src);\n          return decode(image);\n        },\n      });\n    }\n\n    return super.getImageInternal(extent, resolution, pixelRatio, projection);\n  }\n\n  /**\n   * Return the image load function of the source.\n   * @return {import(\"../Image.js\").LoadFunction} The image load function.\n   * @api\n   */\n  getImageLoadFunction() {\n    return this.imageLoadFunction_;\n  }\n\n  /**\n   * Return the URL used for this WMS source.\n   * @return {string|undefined} URL.\n   * @api\n   */\n  getUrl() {\n    return this.url_;\n  }\n\n  /**\n   * Set the image load function of the source.\n   * @param {import(\"../Image.js\").LoadFunction} imageLoadFunction Image load function.\n   * @api\n   */\n  setImageLoadFunction(imageLoadFunction) {\n    this.imageLoadFunction_ = imageLoadFunction;\n    this.changed();\n  }\n\n  /**\n   * Set the URL to use for requests.\n   * @param {string|undefined} url URL.\n   * @api\n   */\n  setUrl(url) {\n    if (url != this.url_) {\n      this.url_ = url;\n      this.loader = null;\n      this.changed();\n    }\n  }\n\n  /**\n   * Update the user-provided params.\n   * @param {Object} params Params.\n   * @api\n   */\n  updateParams(params) {\n    Object.assign(this.params_, params);\n    this.changed();\n  }\n\n  /**\n   * @override\n   */\n  changed() {\n    this.image = null;\n    super.changed();\n  }\n}\n\nexport default ImageWMS;\n","import TileLayer from \"ol/layer/Tile\";\r\nimport ImageLayer from \"ol/layer/Image\";\r\nimport TileWMS from \"ol/source/TileWMS.js\";\r\nimport TileGrid from \"ol/tilegrid/TileGrid\";\r\nimport ImageWMS from \"ol/source/ImageWMS.js\";\r\nimport {get as getProjection} from \"ol/proj\";\r\n\r\nimport rawLayerList from \"../rawLayerList\";\r\n\r\nconst OLCS_DEFAULT_OLCS_PROJECTION_CRS = \"EPSG:3857\";\r\n\r\n/** @returns {number} random session id in range (0, 9999999) */\r\nexport function generateSessionId () {\r\n    return Math.floor(Math.random() * 9999999);\r\n}\r\n\r\n/**\r\n * Adds optional wms parameters to the given parameters.\r\n * @param {object} params - the mandatory params of wms request url\r\n * @param {object} rawLayer - layer specification as in services.json\r\n * @param {boolean} [rawLayer.STYLES] - styles of the layer, if available\r\n * @param {boolean} [rawLayer.TIME] - time attribute, if available\r\n * @param {boolean} [rawLayer.CRS] - projection code, if available, else projection of map is used\r\n * @returns {object} maps query extended parameter names to values\r\n */\r\nexport function addOptionalParams (params, rawLayer) {\r\n    const extendedParams = {...params},\r\n        rawLayerParams = {},\r\n        optionalParams = [\r\n            \"STYLES\",\r\n            \"TIME\",\r\n            \"CRS\"\r\n        ];\r\n\r\n    Object.keys(rawLayer).forEach(key => {\r\n        rawLayerParams[key.toUpperCase()] = rawLayer[key];\r\n    });\r\n\r\n    optionalParams.forEach(optionalParam => {\r\n        if (rawLayer[optionalParam]) {\r\n            extendedParams[optionalParam] = rawLayer[optionalParam];\r\n        }\r\n    });\r\n\r\n    return extendedParams;\r\n}\r\n\r\n/**\r\n * Creates query parameters for webservice requests from rawLayer.\r\n * @param {object} rawLayer - layer specification as in services.json\r\n * @param {string} [rawLayer.format=\"image/png\"] - format of images requested\r\n * @param {string} rawLayer.layers - comma-separated list of requested layers\r\n * @param {version} rawLayer.version - webservice version as string, e.g. \"1.1.1\"\r\n * @param {boolean} rawLayer.transparent - whether tiles from this service should have transparency where no information is available\r\n * @param {boolean} rawLayer.singleTile - whether only one tile shall be requested that fills the whole view\r\n * @param {boolean} rawLayer.STYLES - styles of the layer, if available\r\n * @param {(string|number)} rawLayer.tilesize - if singleTile is true, this is the requested tilesize\r\n * @param {string} rawLayer.cqlFilter - CQL filter\r\n * @returns {object} maps query parameter names to values\r\n */\r\nexport function makeParams (rawLayer) {\r\n    let params = {};\r\n\r\n    params = Object.assign({\r\n        CACHEID: generateSessionId(),\r\n        FORMAT: rawLayer.format || \"image/png\",\r\n        LAYERS: rawLayer.layers,\r\n        VERSION: rawLayer.version,\r\n        TRANSPARENT: rawLayer.transparent,\r\n        SINGLETILE: rawLayer.singleTile,\r\n        CQL_FILTER: rawLayer.cqlFilter\r\n    }, rawLayer.singleTile ? {} : {WIDTH: rawLayer.tilesize, HEIGHT: rawLayer.tilesize});\r\n\r\n    params = addOptionalParams(params, rawLayer);\r\n\r\n    return params;\r\n}\r\n\r\n/**\r\n * Return a ol tile or image load function for the rawLayer.\r\n * @param {object} rawLayer - layer specification as in services.json\r\n * @returns {function} tile/image load function\r\n */\r\nexport function defaultLoadFunction ({isSecured}) {\r\n    return async (image, src) => {\r\n        const response = await fetch(src, {credentials: isSecured ? \"include\" : \"omit\"}),\r\n            data = await response.blob();\r\n\r\n        image.getImage().src = URL.createObjectURL(data);\r\n    };\r\n}\r\n\r\n/**\r\n * Creates an ol/source element for the rawLayer.\r\n * @param {object} rawLayer - layer specification as in services.json\r\n * @param {string} [rawLayer.url] - WMS service URL\r\n * @param {string} [rawLayer.serverType] - optional servertype definition: \"geoserver\" or \"mapserver\" or \"qgis\"\r\n * @param {string} [rawLayer.gutter] - optional the size in pixels of the gutter around image tiles to ignore\r\n * @param {function} [rawLayer.olAttribution] - optional function that takes a module:ol/Map~FrameState and returns a string or an array of strings representing source attributions\r\n * @param {string|number} [rawLayer.tilesize] - optional needed to create the tileGrid\r\n * @param {string|\"anonymous\"} [rawLayer.crossOrigin] - optional needed for CORS requests of image data, to enable canvas export\r\n * @param {string} [rawLayer.cqlFilter] - optional CQL filter to add to the request\r\n * @param {boolean} [rawLayer.isSecured] - whether the layer is secured by BasicAuth and should include or omit the credentials prompt\r\n * @param {object} options - optional resolutions and origin to create the TileGrid\r\n * @param {Array} [options.resolutions] - optional resolutions to create the TileGrid, must be in descending order\r\n * @param {Array} [options.origin] - optional origin to create the TileGrid\r\n * @param {string} [options.crs] - optional projection code, if not available, projection of map is used\r\n * @returns {(ol.source.TileWMS|ol.source.ImageWMS)} TileWMS or ImageWMS, depending on whether singleTile is true.\r\n */\r\nexport function createLayerSource (rawLayer, options) {\r\n    const params = makeParams(rawLayer),\r\n        projection = rawLayer.crs ? getProjection(rawLayer.crs) : undefined;\r\n    let tileGrid = null;\r\n\r\n    if (rawLayer.singleTile) {\r\n        return new ImageWMS({\r\n            url: rawLayer.url,\r\n            params,\r\n            serverType: rawLayer.serverType,\r\n            projection: projection,\r\n            attributions: rawLayer.olAttribution,\r\n            crossOrigin: rawLayer.crossOrigin,\r\n            imageLoadFunction: defaultLoadFunction(rawLayer)\r\n        });\r\n    }\r\n    if (options && options.resolutions) {\r\n        tileGrid = new TileGrid({\r\n            resolutions: options.resolutions,\r\n            origin: options.origin ? options.origin : undefined,\r\n            tileSize: parseInt(rawLayer.tilesize, 10)\r\n        });\r\n    }\r\n    return new TileWMS({\r\n        url: rawLayer.url,\r\n        params,\r\n        gutter: rawLayer.gutter || 0,\r\n        tileGrid: tileGrid,\r\n        projection: projection,\r\n        attributions: rawLayer.olAttribution,\r\n        crossOrigin: rawLayer.crossOrigin,\r\n        tileLoadFunction: defaultLoadFunction(rawLayer)\r\n    });\r\n}\r\n\r\n/**\r\n * Creates complete ol/Layer from rawLayer containing source and all required children.\r\n * @param {object} rawLayer - layer specification as in services.json\r\n * @param {string} [rawLayer.id] - optional id of the layer, passed to help identification in services.json\r\n * @param {string} [rawLayer.url] - WMS service URL\r\n * @param {string} [rawLayer.minResolution] - optional the minimal resolution\r\n * @param {string} [rawLayer.maxResolution] - optional the maximal resolution\r\n * @param {string} [rawLayer.serverType] - optional servertype definition: \"geoserver\" or \"mapserver\" or \"qgis\"\r\n * @param {string} [rawLayer.gutter] - optional the size in pixels of the gutter around image tiles to ignore\r\n * @param {function} [rawLayer.olAttribution] - optional function that takes a module:ol/Map~FrameState and returns a string or an array of strings representing source attributions\r\n * @param {string|number} [rawLayer.tilesize] - optional needed to create the tileGrid\r\n * @param {string|\"anonymous\"} [rawLayer.crossOrigin] - optional needed for CORS requests of image data, to enable canvas export\r\n * @param {object} layerParams - additional layer params\r\n * @param {object} options - optional resolutions and origin to create the TileGrid\r\n * @param {Array} [options.resolutions] - optional resolutions to create the TileGrid, must be in descending order\r\n * @param {Array} [options.origin] - optional origin to create the TileGrid\r\n * @returns {ol.Layer} Layer that can be added to map.\r\n */\r\nexport function createLayer (rawLayer, layerParams = {}, options) {\r\n    const source = createLayerSource(rawLayer, options),\r\n        Layer = rawLayer.singleTile ? ImageLayer : TileLayer;\r\n\r\n    source.set(\"olcs_projection\", getProjection(OLCS_DEFAULT_OLCS_PROJECTION_CRS));\r\n\r\n    return new Layer(Object.assign({\r\n        source,\r\n        minResolution: typeof rawLayer.minResolution === \"string\" ? parseFloat(rawLayer.minResolution) : rawLayer.minResolution,\r\n        maxResolution: typeof rawLayer.maxResolution === \"string\" ? parseFloat(rawLayer.maxResolution) : rawLayer.maxResolution,\r\n        id: rawLayer.id,\r\n        extent: rawLayer.extent\r\n    }, layerParams));\r\n}\r\n\r\n/**\r\n * Forces an update by giving a layer a new sessionID.\r\n * @param {ol.Layer} layer - the layer that is to be updated\r\n * @returns {number} the new sessionID\r\n */\r\nexport function updateSource (layer) {\r\n    const oldSessionId = layer.getSource().getParams().SESSIONID;\r\n    let newSessionId = oldSessionId;\r\n\r\n    // to avoid rolling the same ID again; never happens except in your presentation\r\n    while (oldSessionId === newSessionId) {\r\n        newSessionId = generateSessionId();\r\n    }\r\n\r\n    layer.getSource().updateParams({SESSIONID: newSessionId});\r\n    return newSessionId;\r\n}\r\n\r\n/**\r\n * Creates the gfiURL from clicked layer, map, and coordinate.\r\n * @param {ol.Layer} layer - what to get the gfiURL for\r\n * @param {ol.Map} map - needed for resolution/projection\r\n * @param {ol.coordinate} coordinate - which point to get the gfiURL for\r\n * @returns {(string|undefined)} the gfiURL, or undefined if it could not be constructed\r\n */\r\nexport function getGfiURL (layer, map, coordinate) {\r\n    const rawLayer = rawLayerList.getLayerWhere({Id: layer.get(\"id\")}),\r\n        resolution = map.getView().getResolution(),\r\n        projection = map.getView().getProjection(),\r\n        params = Object.assign({\r\n            INFO_FORMAT: (rawLayer && rawLayer.infoFormat) || \"text/xml\"\r\n        }, rawLayer && typeof rawLayer.featureCount !== \"undefined\"\r\n            ? {FEATURE_COUNT: rawLayer.featureCount}\r\n            : {});\r\n\r\n    return layer.getSource().getFeatureInfoUrl(coordinate, resolution, projection, params);\r\n}\r\n","/**\n * @module ol/source/WMTS\n */\n\nimport {containsExtent} from '../extent.js';\nimport {equivalent, get as getProjection, transformExtent} from '../proj.js';\nimport {createFromCapabilitiesMatrixSet} from '../tilegrid/WMTS.js';\nimport {createFromTileUrlFunctions} from '../tileurlfunction.js';\nimport {appendParams, expandUrl} from '../uri.js';\nimport TileImage from './TileImage.js';\n\n/**\n * Request encoding. One of 'KVP', 'REST'.\n * @typedef {'KVP' | 'REST'} RequestEncoding\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../tilegrid/WMTS.js\").default} tileGrid Tile grid.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {RequestEncoding} [requestEncoding='KVP'] Request encoding.\n * @property {string} layer Layer name as advertised in the WMTS capabilities.\n * @property {string} style Style name as advertised in the WMTS capabilities.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass]  Class used to instantiate image tiles. Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service.\n * For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {string} [format='image/jpeg'] Image format. Only used when `requestEncoding` is `'KVP'`.\n * @property {string} [version='1.0.0'] WMTS version.\n * @property {string} matrixSet Matrix set.\n * @property {!Object} [dimensions] Additional \"dimensions\" for tile requests.\n * This is an object with properties named like the advertised WMTS dimensions.\n * @property {string} [url]  A URL for the service.\n * For the RESTful request encoding, this is a URL\n * template.  For KVP encoding, it is normal URL. A `{?-?}` template pattern,\n * for example `subdomain{a-f}.domain.com`, may be used instead of defining\n * each one separately in the `urls` option.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {Array<string>} [urls] An array of URLs.\n * Requests will be distributed among the URLs in this array.\n * @property {boolean} [wrapX=false] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Layer source for tile data from WMTS servers.\n * @api\n */\nclass WMTS extends TileImage {\n  /**\n   * @param {Options} options WMTS options.\n   */\n  constructor(options) {\n    // TODO: add support for TileMatrixLimits\n\n    const requestEncoding =\n      options.requestEncoding !== undefined ? options.requestEncoding : 'KVP';\n\n    // FIXME: should we create a default tileGrid?\n    // we could issue a getCapabilities xhr to retrieve missing configuration\n    const tileGrid = options.tileGrid;\n\n    let urls = options.urls;\n    if (urls === undefined && options.url !== undefined) {\n      urls = expandUrl(options.url);\n    }\n\n    super({\n      attributions: options.attributions,\n      attributionsCollapsible: options.attributionsCollapsible,\n      cacheSize: options.cacheSize,\n      crossOrigin: options.crossOrigin,\n      interpolate: options.interpolate,\n      projection: options.projection,\n      reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n      tileClass: options.tileClass,\n      tileGrid: tileGrid,\n      tileLoadFunction: options.tileLoadFunction,\n      tilePixelRatio: options.tilePixelRatio,\n      urls: urls,\n      wrapX: options.wrapX !== undefined ? options.wrapX : false,\n      transition: options.transition,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.version_ = options.version !== undefined ? options.version : '1.0.0';\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.format_ = options.format !== undefined ? options.format : 'image/jpeg';\n\n    /**\n     * @private\n     * @type {!Object}\n     */\n    this.dimensions_ =\n      options.dimensions !== undefined ? options.dimensions : {};\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.layer_ = options.layer;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.matrixSet_ = options.matrixSet;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.style_ = options.style;\n\n    // FIXME: should we guess this requestEncoding from options.url(s)\n    //        structure? that would mean KVP only if a template is not provided.\n\n    /**\n     * @private\n     * @type {RequestEncoding}\n     */\n    this.requestEncoding_ = requestEncoding;\n\n    this.setKey(this.getKeyForDimensions_());\n\n    if (urls && urls.length > 0) {\n      this.tileUrlFunction = createFromTileUrlFunctions(\n        urls.map(this.createFromWMTSTemplate.bind(this)),\n      );\n    }\n  }\n\n  /**\n   * Set the URLs to use for requests.\n   * URLs may contain OGC conform URL Template Variables: {TileMatrix}, {TileRow}, {TileCol}.\n   * @param {Array<string>} urls URLs.\n   * @override\n   */\n  setUrls(urls) {\n    this.urls = urls;\n    const key = urls.join('\\n');\n    this.setTileUrlFunction(\n      createFromTileUrlFunctions(\n        urls.map(this.createFromWMTSTemplate.bind(this)),\n      ),\n      key,\n    );\n  }\n\n  /**\n   * Get the dimensions, i.e. those passed to the constructor through the\n   * \"dimensions\" option, and possibly updated using the updateDimensions\n   * method.\n   * @return {!Object} Dimensions.\n   * @api\n   */\n  getDimensions() {\n    return this.dimensions_;\n  }\n\n  /**\n   * Return the image format of the WMTS source.\n   * @return {string} Format.\n   * @api\n   */\n  getFormat() {\n    return this.format_;\n  }\n\n  /**\n   * Return the layer of the WMTS source.\n   * @return {string} Layer.\n   * @api\n   */\n  getLayer() {\n    return this.layer_;\n  }\n\n  /**\n   * Return the matrix set of the WMTS source.\n   * @return {string} MatrixSet.\n   * @api\n   */\n  getMatrixSet() {\n    return this.matrixSet_;\n  }\n\n  /**\n   * Return the request encoding, either \"KVP\" or \"REST\".\n   * @return {RequestEncoding} Request encoding.\n   * @api\n   */\n  getRequestEncoding() {\n    return this.requestEncoding_;\n  }\n\n  /**\n   * Return the style of the WMTS source.\n   * @return {string} Style.\n   * @api\n   */\n  getStyle() {\n    return this.style_;\n  }\n\n  /**\n   * Return the version of the WMTS source.\n   * @return {string} Version.\n   * @api\n   */\n  getVersion() {\n    return this.version_;\n  }\n\n  /**\n   * @private\n   * @return {string} The key for the current dimensions.\n   */\n  getKeyForDimensions_() {\n    const res = this.urls ? this.urls.slice(0) : [];\n    for (const key in this.dimensions_) {\n      res.push(key + '-' + this.dimensions_[key]);\n    }\n    return res.join('/');\n  }\n\n  /**\n   * Update the dimensions.\n   * @param {Object} dimensions Dimensions.\n   * @api\n   */\n  updateDimensions(dimensions) {\n    Object.assign(this.dimensions_, dimensions);\n    this.setKey(this.getKeyForDimensions_());\n  }\n\n  /**\n   * @param {string} template Template.\n   * @return {import(\"../Tile.js\").UrlFunction} Tile URL function.\n   */\n  createFromWMTSTemplate(template) {\n    const requestEncoding = this.requestEncoding_;\n\n    // context property names are lower case to allow for a case insensitive\n    // replacement as some services use different naming conventions\n    const context = {\n      'layer': this.layer_,\n      'style': this.style_,\n      'tilematrixset': this.matrixSet_,\n    };\n\n    if (requestEncoding == 'KVP') {\n      Object.assign(context, {\n        'Service': 'WMTS',\n        'Request': 'GetTile',\n        'Version': this.version_,\n        'Format': this.format_,\n      });\n    }\n\n    // TODO: we may want to create our own appendParams function so that params\n    // order conforms to wmts spec guidance, and so that we can avoid to escape\n    // special template params\n\n    template =\n      requestEncoding == 'KVP'\n        ? appendParams(template, context)\n        : template.replace(/\\{(\\w+?)\\}/g, function (m, p) {\n            return p.toLowerCase() in context ? context[p.toLowerCase()] : m;\n          });\n\n    const tileGrid = /** @type {import(\"../tilegrid/WMTS.js\").default} */ (\n      this.tileGrid\n    );\n    const dimensions = this.dimensions_;\n\n    return (\n      /**\n       * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n       * @param {number} pixelRatio Pixel ratio.\n       * @param {import(\"../proj/Projection.js\").default} projection Projection.\n       * @return {string|undefined} Tile URL.\n       */\n      function (tileCoord, pixelRatio, projection) {\n        if (!tileCoord) {\n          return undefined;\n        }\n        const localContext = {\n          'TileMatrix': tileGrid.getMatrixId(tileCoord[0]),\n          'TileCol': tileCoord[1],\n          'TileRow': tileCoord[2],\n        };\n        Object.assign(localContext, dimensions);\n        let url = template;\n        if (requestEncoding == 'KVP') {\n          url = appendParams(url, localContext);\n        } else {\n          url = url.replace(/\\{(\\w+?)\\}/g, function (m, p) {\n            return encodeURIComponent(localContext[p]);\n          });\n        }\n        return url;\n      }\n    );\n  }\n}\n\nexport default WMTS;\n\n/**\n * Generate source options from a capabilities object.\n * @param {Object} wmtsCap An object representing the capabilities document.\n * @param {!Object} config Configuration properties for the layer.  Defaults for\n *                  the layer will apply if not provided.\n *\n * Required config properties:\n *  - layer - {string} The layer identifier.\n *\n * Optional config properties:\n *  - matrixSet - {string} The matrix set identifier, required if there is\n *       more than one matrix set in the layer capabilities.\n *  - projection - {string} The desired CRS when no matrixSet is specified.\n *       eg: \"EPSG:3857\". If the desired projection is not available,\n *       an error is thrown.\n *  - requestEncoding - {string} url encoding format for the layer. Default is\n *       the first tile url format found in the GetCapabilities response.\n *  - style - {string} The name of the style\n *  - format - {string} Image format for the layer. Default is the first\n *       format returned in the GetCapabilities response.\n *  - crossOrigin - {string|null|undefined} Cross origin. Default is `undefined`.\n * @return {Options|null} WMTS source options object or `null` if the layer was not found.\n * @api\n */\nexport function optionsFromCapabilities(wmtsCap, config) {\n  const layers = wmtsCap['Contents']['Layer'];\n  const l = layers?.find(function (elt) {\n    return elt['Identifier'] == config['layer'];\n  });\n  if (!l) {\n    return null;\n  }\n  const tileMatrixSets = wmtsCap['Contents']['TileMatrixSet'];\n  let idx;\n  if (l['TileMatrixSetLink'].length > 1) {\n    if ('projection' in config) {\n      idx = l['TileMatrixSetLink'].findIndex(function (elt) {\n        const tileMatrixSet = tileMatrixSets.find(function (el) {\n          return el['Identifier'] == elt['TileMatrixSet'];\n        });\n        const supportedCRS = tileMatrixSet['SupportedCRS'];\n        const proj1 = getProjection(supportedCRS);\n        const proj2 = getProjection(config['projection']);\n        if (proj1 && proj2) {\n          return equivalent(proj1, proj2);\n        }\n        return supportedCRS == config['projection'];\n      });\n    } else {\n      idx = l['TileMatrixSetLink'].findIndex(function (elt) {\n        return elt['TileMatrixSet'] == config['matrixSet'];\n      });\n    }\n  } else {\n    idx = 0;\n  }\n  if (idx < 0) {\n    idx = 0;\n  }\n  const matrixSet =\n    /** @type {string} */\n    (l['TileMatrixSetLink'][idx]['TileMatrixSet']);\n  const matrixLimits =\n    /** @type {Array<Object>} */\n    (l['TileMatrixSetLink'][idx]['TileMatrixSetLimits']);\n\n  let format = /** @type {string} */ (l['Format'][0]);\n  if ('format' in config) {\n    format = config['format'];\n  }\n  idx = l['Style'].findIndex(function (elt) {\n    if ('style' in config) {\n      return elt['Title'] == config['style'];\n    }\n    return elt['isDefault'];\n  });\n  if (idx < 0) {\n    idx = 0;\n  }\n  const style = /** @type {string} */ (l['Style'][idx]['Identifier']);\n\n  const dimensions = {};\n  if ('Dimension' in l) {\n    l['Dimension'].forEach(function (elt, index, array) {\n      const key = elt['Identifier'];\n      let value = elt['Default'];\n      if (value === undefined) {\n        value = elt['Value'][0];\n      }\n      dimensions[key] = value;\n    });\n  }\n\n  const matrixSets = wmtsCap['Contents']['TileMatrixSet'];\n  const matrixSetObj = matrixSets.find(function (elt) {\n    return elt['Identifier'] == matrixSet;\n  });\n\n  let projection;\n  const code = matrixSetObj['SupportedCRS'];\n  if (code) {\n    projection = getProjection(code);\n  }\n  if ('projection' in config) {\n    const projConfig = getProjection(config['projection']);\n    if (projConfig) {\n      if (!projection || equivalent(projConfig, projection)) {\n        projection = projConfig;\n      }\n    }\n  }\n\n  let wrapX = false;\n  const switchXY = projection.getAxisOrientation().startsWith('ne');\n\n  let matrix = matrixSetObj.TileMatrix[0];\n\n  // create default matrixLimit\n  let selectedMatrixLimit = {\n    MinTileCol: 0,\n    MinTileRow: 0,\n    // subtract one to end up at tile top left\n    MaxTileCol: matrix.MatrixWidth - 1,\n    MaxTileRow: matrix.MatrixHeight - 1,\n  };\n\n  //in case of matrix limits, use matrix limits to calculate extent\n  if (matrixLimits) {\n    selectedMatrixLimit = matrixLimits[matrixLimits.length - 1];\n    const m = matrixSetObj.TileMatrix.find(\n      (tileMatrixValue) =>\n        tileMatrixValue.Identifier === selectedMatrixLimit.TileMatrix ||\n        matrixSetObj.Identifier + ':' + tileMatrixValue.Identifier ===\n          selectedMatrixLimit.TileMatrix,\n    );\n    if (m) {\n      matrix = m;\n    }\n  }\n\n  const resolution =\n    (matrix.ScaleDenominator * 0.00028) / projection.getMetersPerUnit(); // WMTS 1.0.0: standardized rendering pixel size\n  const origin = switchXY\n    ? [matrix.TopLeftCorner[1], matrix.TopLeftCorner[0]]\n    : matrix.TopLeftCorner;\n  const tileSpanX = matrix.TileWidth * resolution;\n  const tileSpanY = matrix.TileHeight * resolution;\n  let matrixSetExtent = matrixSetObj['BoundingBox'];\n  if (matrixSetExtent && switchXY) {\n    matrixSetExtent = [\n      matrixSetExtent[1],\n      matrixSetExtent[0],\n      matrixSetExtent[3],\n      matrixSetExtent[2],\n    ];\n  }\n  let extent = [\n    origin[0] + tileSpanX * selectedMatrixLimit.MinTileCol,\n    // add one to get proper bottom/right coordinate\n    origin[1] - tileSpanY * (1 + selectedMatrixLimit.MaxTileRow),\n    origin[0] + tileSpanX * (1 + selectedMatrixLimit.MaxTileCol),\n    origin[1] - tileSpanY * selectedMatrixLimit.MinTileRow,\n  ];\n\n  if (\n    matrixSetExtent !== undefined &&\n    !containsExtent(matrixSetExtent, extent)\n  ) {\n    const wgs84BoundingBox = l['WGS84BoundingBox'];\n    const wgs84ProjectionExtent = getProjection('EPSG:4326').getExtent();\n    extent = matrixSetExtent;\n    if (wgs84BoundingBox) {\n      wrapX =\n        wgs84BoundingBox[0] === wgs84ProjectionExtent[0] &&\n        wgs84BoundingBox[2] === wgs84ProjectionExtent[2];\n    } else {\n      const wgs84MatrixSetExtent = transformExtent(\n        matrixSetExtent,\n        matrixSetObj['SupportedCRS'],\n        'EPSG:4326',\n      );\n      // Ignore slight deviation from the correct x limits\n      wrapX =\n        wgs84MatrixSetExtent[0] - 1e-10 <= wgs84ProjectionExtent[0] &&\n        wgs84MatrixSetExtent[2] + 1e-10 >= wgs84ProjectionExtent[2];\n    }\n  }\n\n  const tileGrid = createFromCapabilitiesMatrixSet(\n    matrixSetObj,\n    extent,\n    matrixLimits,\n  );\n\n  /** @type {!Array<string>} */\n  const urls = [];\n  let requestEncoding = config['requestEncoding'];\n  requestEncoding = requestEncoding !== undefined ? requestEncoding : '';\n\n  if (\n    'OperationsMetadata' in wmtsCap &&\n    'GetTile' in wmtsCap['OperationsMetadata']\n  ) {\n    const gets = wmtsCap['OperationsMetadata']['GetTile']['DCP']['HTTP']['Get'];\n\n    for (let i = 0, ii = gets.length; i < ii; ++i) {\n      if (gets[i]['Constraint']) {\n        const constraint = gets[i]['Constraint'].find(function (element) {\n          return element['name'] == 'GetEncoding';\n        });\n        const encodings = constraint['AllowedValues']['Value'];\n\n        if (requestEncoding === '') {\n          // requestEncoding not provided, use the first encoding from the list\n          requestEncoding = encodings[0];\n        }\n        if (requestEncoding === 'KVP') {\n          if (encodings.includes('KVP')) {\n            urls.push(/** @type {string} */ (gets[i]['href']));\n          }\n        } else {\n          break;\n        }\n      } else if (gets[i]['href']) {\n        requestEncoding = 'KVP';\n        urls.push(/** @type {string} */ (gets[i]['href']));\n      }\n    }\n  }\n  if (urls.length === 0) {\n    requestEncoding = 'REST';\n    l['ResourceURL'].forEach(function (element) {\n      if (element['resourceType'] === 'tile') {\n        format = element['format'];\n        urls.push(/** @type {string} */ (element['template']));\n      }\n    });\n  }\n\n  return {\n    urls: urls,\n    layer: config['layer'],\n    matrixSet: matrixSet,\n    format: format,\n    projection: projection,\n    requestEncoding: requestEncoding,\n    tileGrid: tileGrid,\n    style: style,\n    dimensions: dimensions,\n    wrapX: wrapX,\n    crossOrigin: config['crossOrigin'],\n  };\n}\n","/**\n * @module ol/xml\n */\nimport {extend} from './array.js';\n\n/**\n * When using {@link module:ol/xml.makeChildAppender} or\n * {@link module:ol/xml.makeSimpleNodeFactory}, the top `objectStack` item needs\n * to have this structure.\n * @typedef {Object} NodeStackItem\n * @property {Element} node Node.\n */\n\n/**\n * @typedef {function(Element, Array<*>): void} Parser\n */\n\n/**\n * @typedef {function(Element, *, Array<*>): void} Serializer\n */\n\n/**\n * @type {string}\n */\nexport const XML_SCHEMA_INSTANCE_URI =\n  'http://www.w3.org/2001/XMLSchema-instance';\n\n/**\n * @param {string} namespaceURI Namespace URI.\n * @param {string} qualifiedName Qualified name.\n * @return {Element} Node.\n */\nexport function createElementNS(namespaceURI, qualifiedName) {\n  return getDocument().createElementNS(namespaceURI, qualifiedName);\n}\n\n/**\n * Recursively grab all text content of child nodes into a single string.\n * @param {Node} node Node.\n * @param {boolean} normalizeWhitespace Normalize whitespace: remove all line\n * breaks.\n * @return {string} All text content.\n * @api\n */\nexport function getAllTextContent(node, normalizeWhitespace) {\n  return getAllTextContent_(node, normalizeWhitespace, []).join('');\n}\n\n/**\n * Recursively grab all text content of child nodes into a single string.\n * @param {Node} node Node.\n * @param {boolean} normalizeWhitespace Normalize whitespace: remove all line\n * breaks.\n * @param {Array<string>} accumulator Accumulator.\n * @private\n * @return {Array<string>} Accumulator.\n */\nexport function getAllTextContent_(node, normalizeWhitespace, accumulator) {\n  if (\n    node.nodeType == Node.CDATA_SECTION_NODE ||\n    node.nodeType == Node.TEXT_NODE\n  ) {\n    if (normalizeWhitespace) {\n      accumulator.push(String(node.nodeValue).replace(/(\\r\\n|\\r|\\n)/g, ''));\n    } else {\n      accumulator.push(node.nodeValue);\n    }\n  } else {\n    let n;\n    for (n = node.firstChild; n; n = n.nextSibling) {\n      getAllTextContent_(n, normalizeWhitespace, accumulator);\n    }\n  }\n  return accumulator;\n}\n\n/**\n * @param {Object} object Object.\n * @return {boolean} Is a document.\n */\nexport function isDocument(object) {\n  return 'documentElement' in object;\n}\n\n/**\n * @param {Element} node Node.\n * @param {?string} namespaceURI Namespace URI.\n * @param {string} name Attribute name.\n * @return {string} Value\n */\nexport function getAttributeNS(node, namespaceURI, name) {\n  return node.getAttributeNS(namespaceURI, name) || '';\n}\n\n/**\n * Parse an XML string to an XML Document.\n * @param {string} xml XML.\n * @return {Document} Document.\n * @api\n */\nexport function parse(xml) {\n  return new DOMParser().parseFromString(xml, 'application/xml');\n}\n\n/**\n * Make an array extender function for extending the array at the top of the\n * object stack.\n * @param {function(this: T, Node, Array<*>): (Array<*>|undefined)} valueReader Value reader.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeArrayExtender(valueReader, thisArg) {\n  return (\n    /**\n     * @param {Node} node Node.\n     * @param {Array<*>} objectStack Object stack.\n     * @this {*}\n     */\n    function (node, objectStack) {\n      const value = valueReader.call(thisArg ?? this, node, objectStack);\n      if (value !== undefined) {\n        const array = /** @type {Array<*>} */ (\n          objectStack[objectStack.length - 1]\n        );\n        extend(array, value);\n      }\n    }\n  );\n}\n\n/**\n * Make an array pusher function for pushing to the array at the top of the\n * object stack.\n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeArrayPusher(valueReader, thisArg) {\n  return (\n    /**\n     * @param {Element} node Node.\n     * @param {Array<*>} objectStack Object stack.\n     * @this {*}\n     */\n    function (node, objectStack) {\n      const value = valueReader.call(thisArg ?? this, node, objectStack);\n      if (value !== undefined) {\n        const array = /** @type {Array<*>} */ (\n          objectStack[objectStack.length - 1]\n        );\n        array.push(value);\n      }\n    }\n  );\n}\n\n/**\n * Make an object stack replacer function for replacing the object at the\n * top of the stack.\n * @param {function(this: T, Node, Array<*>): *} valueReader Value reader.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeReplacer(valueReader, thisArg) {\n  return (\n    /**\n     * @param {Node} node Node.\n     * @param {Array<*>} objectStack Object stack.\n     * @this {*}\n     */\n    function (node, objectStack) {\n      const value = valueReader.call(thisArg ?? this, node, objectStack);\n      if (value !== undefined) {\n        objectStack[objectStack.length - 1] = value;\n      }\n    }\n  );\n}\n\n/**\n * Make an object property pusher function for adding a property to the\n * object at the top of the stack.\n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.\n * @param {string} [property] Property.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeObjectPropertyPusher(valueReader, property, thisArg) {\n  return (\n    /**\n     * @param {Element} node Node.\n     * @param {Array<*>} objectStack Object stack.\n     * @this {*}\n     */\n    function (node, objectStack) {\n      const value = valueReader.call(thisArg ?? this, node, objectStack);\n      if (value !== undefined) {\n        const object = /** @type {!Object} */ (\n          objectStack[objectStack.length - 1]\n        );\n        const name = property !== undefined ? property : node.localName;\n        let array;\n        if (name in object) {\n          array = object[name];\n        } else {\n          array = [];\n          object[name] = array;\n        }\n        array.push(value);\n      }\n    }\n  );\n}\n\n/**\n * Make an object property setter function.\n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.\n * @param {string} [property] Property.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeObjectPropertySetter(valueReader, property, thisArg) {\n  return (\n    /**\n     * @param {Element} node Node.\n     * @param {Array<*>} objectStack Object stack.\n     * @this {*}\n     */\n    function (node, objectStack) {\n      const value = valueReader.call(thisArg ?? this, node, objectStack);\n      if (value !== undefined) {\n        const object = /** @type {!Object} */ (\n          objectStack[objectStack.length - 1]\n        );\n        const name = property !== undefined ? property : node.localName;\n        object[name] = value;\n      }\n    }\n  );\n}\n\n/**\n * Create a serializer that appends nodes written by its `nodeWriter` to its\n * designated parent. The parent is the `node` of the\n * {@link module:ol/xml~NodeStackItem} at the top of the `objectStack`.\n * @param {function(this: T, Node, V, Array<*>): void} nodeWriter Node writer.\n * @param {T} [thisArg] The object to use as `this` in `nodeWriter`.\n * @return {Serializer} Serializer.\n * @template T, V\n */\nexport function makeChildAppender(nodeWriter, thisArg) {\n  return (\n    /**\n     * @param {Element} node Node.\n     * @param {*} value Value to be written.\n     * @param {Array<*>} objectStack Object stack.\n     * @this {*}\n     */\n    function (node, value, objectStack) {\n      nodeWriter.call(thisArg ?? this, node, value, objectStack);\n      const parent = /** @type {NodeStackItem} */ (\n        objectStack[objectStack.length - 1]\n      );\n      const parentNode = parent.node;\n      parentNode.appendChild(node);\n    }\n  );\n}\n\n/**\n * Create a serializer that calls the provided `nodeWriter` from\n * {@link module:ol/xml.serialize}. This can be used by the parent writer to have the\n * `nodeWriter` called with an array of values when the `nodeWriter` was\n * designed to serialize a single item. An example would be a LineString\n * geometry writer, which could be reused for writing MultiLineString\n * geometries.\n * @param {function(this: T, Element, V, Array<*>): void} nodeWriter Node writer.\n * @param {T} [thisArg] The object to use as `this` in `nodeWriter`.\n * @return {Serializer} Serializer.\n * @template T, V\n */\nexport function makeArraySerializer(nodeWriter, thisArg) {\n  let serializersNS, nodeFactory;\n  return function (node, value, objectStack) {\n    if (serializersNS === undefined) {\n      serializersNS = {};\n      const serializers = {};\n      serializers[node.localName] = nodeWriter;\n      serializersNS[node.namespaceURI] = serializers;\n      nodeFactory = makeSimpleNodeFactory(node.localName);\n    }\n    serialize(serializersNS, nodeFactory, value, objectStack);\n  };\n}\n\n/**\n * Create a node factory which can use the `keys` passed to\n * {@link module:ol/xml.serialize} or {@link module:ol/xml.pushSerializeAndPop} as node names,\n * or a fixed node name. The namespace of the created nodes can either be fixed,\n * or the parent namespace will be used.\n * @param {string} [fixedNodeName] Fixed node name which will be used for all\n *     created nodes. If not provided, the 3rd argument to the resulting node\n *     factory needs to be provided and will be the nodeName.\n * @param {string} [fixedNamespaceURI] Fixed namespace URI which will be used for\n *     all created nodes. If not provided, the namespace of the parent node will\n *     be used.\n * @return {function(*, Array<*>, string=): (Node|undefined)} Node factory.\n */\nexport function makeSimpleNodeFactory(fixedNodeName, fixedNamespaceURI) {\n  return (\n    /**\n     * @param {*} value Value.\n     * @param {Array<*>} objectStack Object stack.\n     * @param {string} [newNodeName] Node name.\n     * @return {Node} Node.\n     */\n    function (value, objectStack, newNodeName) {\n      const context = /** @type {NodeStackItem} */ (\n        objectStack[objectStack.length - 1]\n      );\n      const node = context.node;\n      let nodeName = fixedNodeName;\n      if (nodeName === undefined) {\n        nodeName = newNodeName;\n      }\n\n      const namespaceURI =\n        fixedNamespaceURI !== undefined ? fixedNamespaceURI : node.namespaceURI;\n      return createElementNS(namespaceURI, /** @type {string} */ (nodeName));\n    }\n  );\n}\n\n/**\n * A node factory that creates a node using the parent's `namespaceURI` and the\n * `nodeName` passed by {@link module:ol/xml.serialize} or\n * {@link module:ol/xml.pushSerializeAndPop} to the node factory.\n * @const\n * @type {function(*, Array<*>, string=): (Node|undefined)}\n */\nexport const OBJECT_PROPERTY_NODE_FACTORY = makeSimpleNodeFactory();\n\n/**\n * Create an array of `values` to be used with {@link module:ol/xml.serialize} or\n * {@link module:ol/xml.pushSerializeAndPop}, where `orderedKeys` has to be provided as\n * `key` argument.\n * @param {Object<string, *>} object Key-value pairs for the sequence. Keys can\n *     be a subset of the `orderedKeys`.\n * @param {Array<string>} orderedKeys Keys in the order of the sequence.\n * @return {Array<*>} Values in the order of the sequence. The resulting array\n *     has the same length as the `orderedKeys` array. Values that are not\n *     present in `object` will be `undefined` in the resulting array.\n */\nexport function makeSequence(object, orderedKeys) {\n  const length = orderedKeys.length;\n  const sequence = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    sequence[i] = object[orderedKeys[i]];\n  }\n  return sequence;\n}\n\n/**\n * Create a namespaced structure, using the same values for each namespace.\n * This can be used as a starting point for versioned parsers, when only a few\n * values are version specific.\n * @param {Array<string>} namespaceURIs Namespace URIs.\n * @param {T} structure Structure.\n * @param {Object<string, T>} [structureNS] Namespaced structure to add to.\n * @return {Object<string, T>} Namespaced structure.\n * @template T\n */\nexport function makeStructureNS(namespaceURIs, structure, structureNS) {\n  structureNS = structureNS !== undefined ? structureNS : {};\n  let i, ii;\n  for (i = 0, ii = namespaceURIs.length; i < ii; ++i) {\n    structureNS[namespaceURIs[i]] = structure;\n  }\n  return structureNS;\n}\n\n/**\n * Parse a node using the parsers and object stack.\n * @param {Object<string, Object<string, Parser>>} parsersNS\n *     Parsers by namespace.\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {*} [thisArg] The object to use as `this`.\n */\nexport function parseNode(parsersNS, node, objectStack, thisArg) {\n  let n;\n  for (n = node.firstElementChild; n; n = n.nextElementSibling) {\n    const parsers = parsersNS[n.namespaceURI];\n    if (parsers !== undefined) {\n      const parser = parsers[n.localName];\n      if (parser !== undefined) {\n        parser.call(thisArg, n, objectStack);\n      }\n    }\n  }\n}\n\n/**\n * Push an object on top of the stack, parse and return the popped object.\n * @param {T} object Object.\n * @param {Object<string, Object<string, Parser>>} parsersNS\n *     Parsers by namespace.\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {*} [thisArg] The object to use as `this`.\n * @return {T} Object.\n * @template T\n */\nexport function pushParseAndPop(object, parsersNS, node, objectStack, thisArg) {\n  objectStack.push(object);\n  parseNode(parsersNS, node, objectStack, thisArg);\n  return /** @type {T} */ (objectStack.pop());\n}\n\n/**\n * Walk through an array of `values` and call a serializer for each value.\n * @param {Object<string, Object<string, Serializer>>} serializersNS\n *     Namespaced serializers.\n * @param {function(this: T, *, Array<*>, (string|undefined)): (Node|undefined)} nodeFactory\n *     Node factory. The `nodeFactory` creates the node whose namespace and name\n *     will be used to choose a node writer from `serializersNS`. This\n *     separation allows us to decide what kind of node to create, depending on\n *     the value we want to serialize. An example for this would be different\n *     geometry writers based on the geometry type.\n * @param {Array<*>} values Values to serialize. An example would be an array\n *     of {@link module:ol/Feature~Feature} instances.\n * @param {Array<*>} objectStack Node stack.\n * @param {Array<string>} [keys] Keys of the `values`. Will be passed to the\n *     `nodeFactory`. This is used for serializing object literals where the\n *     node name relates to the property key. The array length of `keys` has\n *     to match the length of `values`. For serializing a sequence, `keys`\n *     determines the order of the sequence.\n * @param {T} [thisArg] The object to use as `this` for the node factory and\n *     serializers.\n * @template T\n */\nexport function serialize(\n  serializersNS,\n  nodeFactory,\n  values,\n  objectStack,\n  keys,\n  thisArg,\n) {\n  const length = (keys !== undefined ? keys : values).length;\n  let value, node;\n  for (let i = 0; i < length; ++i) {\n    value = values[i];\n    if (value !== undefined) {\n      node = nodeFactory.call(\n        thisArg,\n        value,\n        objectStack,\n        keys !== undefined ? keys[i] : undefined,\n      );\n      if (node !== undefined) {\n        serializersNS[node.namespaceURI][node.localName].call(\n          thisArg,\n          node,\n          value,\n          objectStack,\n        );\n      }\n    }\n  }\n}\n\n/**\n * @param {O} object Object.\n * @param {Object<string, Object<string, Serializer>>} serializersNS\n *     Namespaced serializers.\n * @param {function(this: T, *, Array<*>, (string|undefined)): (Node|undefined)} nodeFactory\n *     Node factory. The `nodeFactory` creates the node whose namespace and name\n *     will be used to choose a node writer from `serializersNS`. This\n *     separation allows us to decide what kind of node to create, depending on\n *     the value we want to serialize. An example for this would be different\n *     geometry writers based on the geometry type.\n * @param {Array<*>} values Values to serialize. An example would be an array\n *     of {@link module:ol/Feature~Feature} instances.\n * @param {Array<*>} objectStack Node stack.\n * @param {Array<string>} [keys] Keys of the `values`. Will be passed to the\n *     `nodeFactory`. This is used for serializing object literals where the\n *     node name relates to the property key. The array length of `keys` has\n *     to match the length of `values`. For serializing a sequence, `keys`\n *     determines the order of the sequence.\n * @param {T} [thisArg] The object to use as `this` for the node factory and\n *     serializers.\n * @return {O|undefined} Object.\n * @template O, T\n */\nexport function pushSerializeAndPop(\n  object,\n  serializersNS,\n  nodeFactory,\n  values,\n  objectStack,\n  keys,\n  thisArg,\n) {\n  objectStack.push(object);\n  serialize(serializersNS, nodeFactory, values, objectStack, keys, thisArg);\n  return /** @type {O|undefined} */ (objectStack.pop());\n}\n\nlet xmlSerializer_ = undefined;\n\n/**\n * Register a XMLSerializer. Can be used  to inject a XMLSerializer\n * where there is no globally available implementation.\n *\n * @param {XMLSerializer} xmlSerializer A XMLSerializer.\n * @api\n */\nexport function registerXMLSerializer(xmlSerializer) {\n  xmlSerializer_ = xmlSerializer;\n}\n\n/**\n * @return {XMLSerializer} The XMLSerializer.\n */\nexport function getXMLSerializer() {\n  if (xmlSerializer_ === undefined && typeof XMLSerializer !== 'undefined') {\n    xmlSerializer_ = new XMLSerializer();\n  }\n  return xmlSerializer_;\n}\n\nlet document_ = undefined;\n\n/**\n * Register a Document to use when creating nodes for XML serializations. Can be used\n * to inject a Document where there is no globally available implementation.\n *\n * @param {Document} document A Document.\n * @api\n */\nexport function registerDocument(document) {\n  document_ = document;\n}\n\n/**\n * Get a document that should be used when creating nodes for XML serializations.\n * @return {Document} The document.\n */\nexport function getDocument() {\n  if (document_ === undefined && typeof document !== 'undefined') {\n    document_ = document.implementation.createDocument('', '', null);\n  }\n  return document_;\n}\n","/**\n * @module ol/format/XML\n */\nimport {abstract} from '../util.js';\nimport {isDocument, parse} from '../xml.js';\n\n/**\n * @classdesc\n * Generic format for reading non-feature XML data\n *\n * @abstract\n */\nclass XML {\n  /**\n   * Read the source document.\n   *\n   * @param {Document|Element|string} source The XML source.\n   * @return {Object|null} An object representing the source.\n   * @api\n   */\n  read(source) {\n    if (!source) {\n      return null;\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readFromDocument(doc);\n    }\n    if (isDocument(source)) {\n      return this.readFromDocument(/** @type {Document} */ (source));\n    }\n    return this.readFromNode(/** @type {Element} */ (source));\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @return {Object|null} Object\n   */\n  readFromDocument(doc) {\n    for (let n = doc.firstChild; n; n = n.nextSibling) {\n      if (n.nodeType == Node.ELEMENT_NODE) {\n        return this.readFromNode(/** @type {Element} */ (n));\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @abstract\n   * @param {Element} node Node.\n   * @return {Object|null} Object\n   */\n  readFromNode(node) {\n    abstract();\n  }\n}\n\nexport default XML;\n","/**\n * @module ol/format/xlink\n */\n\n/**\n * @const\n * @type {string}\n */\nconst NAMESPACE_URI = 'http://www.w3.org/1999/xlink';\n\n/**\n * @param {Element} node Node.\n * @return {string|null} href.\n */\nexport function readHref(node) {\n  return node.getAttributeNS(NAMESPACE_URI, 'href');\n}\n","/**\n * @module ol/format/xsd\n */\nimport {padNumber} from '../string.js';\nimport {getAllTextContent, getDocument} from '../xml.js';\n\n/**\n * @param {Node} node Node.\n * @return {boolean|undefined} Boolean.\n */\nexport function readBoolean(node) {\n  const s = getAllTextContent(node, false);\n  return readBooleanString(s);\n}\n\n/**\n * @param {string} string String.\n * @return {boolean|undefined} Boolean.\n */\nexport function readBooleanString(string) {\n  const m = /^\\s*(true|1)|(false|0)\\s*$/.exec(string);\n  if (m) {\n    return m[1] !== undefined || false;\n  }\n  return undefined;\n}\n\n/**\n * @param {Node} node Node.\n * @return {number|undefined} DateTime in seconds.\n */\nexport function readDateTime(node) {\n  const s = getAllTextContent(node, false);\n  const dateTime = Date.parse(s);\n  return isNaN(dateTime) ? undefined : dateTime / 1000;\n}\n\n/**\n * @param {Node} node Node.\n * @return {number|undefined} Decimal.\n */\nexport function readDecimal(node) {\n  const s = getAllTextContent(node, false);\n  return readDecimalString(s);\n}\n\n/**\n * @param {string} string String.\n * @return {number|undefined} Decimal.\n */\nexport function readDecimalString(string) {\n  // FIXME check spec\n  const m = /^\\s*([+\\-]?\\d*\\.?\\d+(?:e[+\\-]?\\d+)?)\\s*$/i.exec(string);\n  if (m) {\n    return parseFloat(m[1]);\n  }\n  return undefined;\n}\n\n/**\n * @param {Node} node Node.\n * @return {number|undefined} Non negative integer.\n */\nexport function readPositiveInteger(node) {\n  const s = getAllTextContent(node, false);\n  return readNonNegativeIntegerString(s);\n}\n\n/**\n * @param {string} string String.\n * @return {number|undefined} Non negative integer.\n */\nexport function readNonNegativeIntegerString(string) {\n  const m = /^\\s*(\\d+)\\s*$/.exec(string);\n  if (m) {\n    return parseInt(m[1], 10);\n  }\n  return undefined;\n}\n\n/**\n * @param {Node} node Node.\n * @return {string|undefined} String.\n */\nexport function readString(node) {\n  return getAllTextContent(node, false).trim();\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the boolean to.\n * @param {boolean} bool Boolean.\n */\nexport function writeBooleanTextNode(node, bool) {\n  writeStringTextNode(node, bool ? '1' : '0');\n}\n\n/**\n * @param {Node} node Node to append a CDATA Section with the string to.\n * @param {string} string String.\n */\nexport function writeCDATASection(node, string) {\n  node.appendChild(getDocument().createCDATASection(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the dateTime to.\n * @param {number} dateTime DateTime in seconds.\n */\nexport function writeDateTimeTextNode(node, dateTime) {\n  const date = new Date(dateTime * 1000);\n  const string =\n    date.getUTCFullYear() +\n    '-' +\n    padNumber(date.getUTCMonth() + 1, 2) +\n    '-' +\n    padNumber(date.getUTCDate(), 2) +\n    'T' +\n    padNumber(date.getUTCHours(), 2) +\n    ':' +\n    padNumber(date.getUTCMinutes(), 2) +\n    ':' +\n    padNumber(date.getUTCSeconds(), 2) +\n    'Z';\n  node.appendChild(getDocument().createTextNode(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the decimal to.\n * @param {number} decimal Decimal.\n */\nexport function writeDecimalTextNode(node, decimal) {\n  const string = decimal.toPrecision();\n  node.appendChild(getDocument().createTextNode(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the decimal to.\n * @param {number} nonNegativeInteger Non negative integer.\n */\nexport function writeNonNegativeIntegerTextNode(node, nonNegativeInteger) {\n  const string = nonNegativeInteger.toString();\n  node.appendChild(getDocument().createTextNode(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the string to.\n * @param {string} string String.\n */\nexport function writeStringTextNode(node, string) {\n  node.appendChild(getDocument().createTextNode(string));\n}\n","/**\n * @module ol/format/OWS\n */\nimport {\n  makeObjectPropertyPusher,\n  makeObjectPropertySetter,\n  makeStructureNS,\n  pushParseAndPop,\n} from '../xml.js';\nimport XML from './XML.js';\nimport {readHref} from './xlink.js';\nimport {readString} from './xsd.js';\n\n/**\n * @const\n * @type {Array<null|string>}\n */\nconst NAMESPACE_URIS = [null, 'http://www.opengis.net/ows/1.1'];\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'ServiceIdentification': makeObjectPropertySetter(readServiceIdentification),\n  'ServiceProvider': makeObjectPropertySetter(readServiceProvider),\n  'OperationsMetadata': makeObjectPropertySetter(readOperationsMetadata),\n});\n\nclass OWS extends XML {\n  constructor() {\n    super();\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {Object|null} Object\n   * @override\n   */\n  readFromNode(node) {\n    const owsObject = pushParseAndPop({}, PARSERS, node, []);\n    return owsObject ? owsObject : null;\n  }\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst ADDRESS_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'DeliveryPoint': makeObjectPropertySetter(readString),\n  'City': makeObjectPropertySetter(readString),\n  'AdministrativeArea': makeObjectPropertySetter(readString),\n  'PostalCode': makeObjectPropertySetter(readString),\n  'Country': makeObjectPropertySetter(readString),\n  'ElectronicMailAddress': makeObjectPropertySetter(readString),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst ALLOWED_VALUES_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Value': makeObjectPropertyPusher(readValue),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CONSTRAINT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'AllowedValues': makeObjectPropertySetter(readAllowedValues),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CONTACT_INFO_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Phone': makeObjectPropertySetter(readPhone),\n  'Address': makeObjectPropertySetter(readAddress),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst DCP_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'HTTP': makeObjectPropertySetter(readHttp),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst HTTP_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Get': makeObjectPropertyPusher(readGet),\n  'Post': undefined, // TODO\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst OPERATION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'DCP': makeObjectPropertySetter(readDcp),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst OPERATIONS_METADATA_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Operation': readOperation,\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst PHONE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Voice': makeObjectPropertySetter(readString),\n  'Facsimile': makeObjectPropertySetter(readString),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst REQUEST_METHOD_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Constraint': makeObjectPropertyPusher(readConstraint),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst SERVICE_CONTACT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'IndividualName': makeObjectPropertySetter(readString),\n  'PositionName': makeObjectPropertySetter(readString),\n  'ContactInfo': makeObjectPropertySetter(readContactInfo),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst SERVICE_IDENTIFICATION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Abstract': makeObjectPropertySetter(readString),\n  'AccessConstraints': makeObjectPropertySetter(readString),\n  'Fees': makeObjectPropertySetter(readString),\n  'Title': makeObjectPropertySetter(readString),\n  'ServiceTypeVersion': makeObjectPropertySetter(readString),\n  'ServiceType': makeObjectPropertySetter(readString),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst SERVICE_PROVIDER_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'ProviderName': makeObjectPropertySetter(readString),\n  'ProviderSite': makeObjectPropertySetter(readHref),\n  'ServiceContact': makeObjectPropertySetter(readServiceContact),\n});\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The address.\n */\nfunction readAddress(node, objectStack) {\n  return pushParseAndPop({}, ADDRESS_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The values.\n */\nfunction readAllowedValues(node, objectStack) {\n  return pushParseAndPop({}, ALLOWED_VALUES_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The constraint.\n */\nfunction readConstraint(node, objectStack) {\n  const name = node.getAttribute('name');\n  if (!name) {\n    return undefined;\n  }\n  return pushParseAndPop({'name': name}, CONSTRAINT_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The contact info.\n */\nfunction readContactInfo(node, objectStack) {\n  return pushParseAndPop({}, CONTACT_INFO_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The DCP.\n */\nfunction readDcp(node, objectStack) {\n  return pushParseAndPop({}, DCP_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The GET object.\n */\nfunction readGet(node, objectStack) {\n  const href = readHref(node);\n  if (!href) {\n    return undefined;\n  }\n  return pushParseAndPop(\n    {'href': href},\n    REQUEST_METHOD_PARSERS,\n    node,\n    objectStack,\n  );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The HTTP object.\n */\nfunction readHttp(node, objectStack) {\n  return pushParseAndPop({}, HTTP_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The operation.\n */\nfunction readOperation(node, objectStack) {\n  const name = node.getAttribute('name');\n  const value = pushParseAndPop({}, OPERATION_PARSERS, node, objectStack);\n  if (!value) {\n    return undefined;\n  }\n  const object = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  object[name] = value;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The operations metadata.\n */\nfunction readOperationsMetadata(node, objectStack) {\n  return pushParseAndPop({}, OPERATIONS_METADATA_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The phone.\n */\nfunction readPhone(node, objectStack) {\n  return pushParseAndPop({}, PHONE_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The service identification.\n */\nfunction readServiceIdentification(node, objectStack) {\n  return pushParseAndPop({}, SERVICE_IDENTIFICATION_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The service contact.\n */\nfunction readServiceContact(node, objectStack) {\n  return pushParseAndPop({}, SERVICE_CONTACT_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} The service provider.\n */\nfunction readServiceProvider(node, objectStack) {\n  return pushParseAndPop({}, SERVICE_PROVIDER_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {string|undefined} The value.\n */\nfunction readValue(node, objectStack) {\n  return readString(node);\n}\n\nexport default OWS;\n","/**\n * @module ol/format/WMTSCapabilities\n */\nimport {boundingExtent} from '../extent.js';\nimport {\n  makeArrayPusher,\n  makeObjectPropertyPusher,\n  makeObjectPropertySetter,\n  makeStructureNS,\n  pushParseAndPop,\n} from '../xml.js';\nimport OWS from './OWS.js';\nimport XML from './XML.js';\nimport {readHref} from './xlink.js';\nimport {readDecimal, readPositiveInteger, readString} from './xsd.js';\n\n/**\n * @const\n * @type {Array<null|string>}\n */\nconst NAMESPACE_URIS = [null, 'http://www.opengis.net/wmts/1.0'];\n\n/**\n * @const\n * @type {Array<null|string>}\n */\nconst OWS_NAMESPACE_URIS = [null, 'http://www.opengis.net/ows/1.1'];\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Contents': makeObjectPropertySetter(readContents),\n});\n\n/**\n * @classdesc\n * Format for reading WMTS capabilities data.\n *\n * @api\n */\nclass WMTSCapabilities extends XML {\n  constructor() {\n    super();\n\n    /**\n     * @type {OWS}\n     * @private\n     */\n    this.owsParser_ = new OWS();\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {Object|null} Object\n   * @override\n   */\n  readFromNode(node) {\n    let version = node.getAttribute('version');\n    if (version) {\n      version = version.trim();\n    }\n    let WMTSCapabilityObject = this.owsParser_.readFromNode(node);\n    if (!WMTSCapabilityObject) {\n      return null;\n    }\n    WMTSCapabilityObject['version'] = version;\n    WMTSCapabilityObject = pushParseAndPop(\n      WMTSCapabilityObject,\n      PARSERS,\n      node,\n      [],\n    );\n    return WMTSCapabilityObject ? WMTSCapabilityObject : null;\n  }\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CONTENTS_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Layer': makeObjectPropertyPusher(readLayer),\n  'TileMatrixSet': makeObjectPropertyPusher(readTileMatrixSet),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst LAYER_PARSERS = makeStructureNS(\n  NAMESPACE_URIS,\n  {\n    'Style': makeObjectPropertyPusher(readStyle),\n    'Format': makeObjectPropertyPusher(readString),\n    'TileMatrixSetLink': makeObjectPropertyPusher(readTileMatrixSetLink),\n    'Dimension': makeObjectPropertyPusher(readDimensions),\n    'ResourceURL': makeObjectPropertyPusher(readResourceUrl),\n  },\n  makeStructureNS(OWS_NAMESPACE_URIS, {\n    'Title': makeObjectPropertySetter(readString),\n    'Abstract': makeObjectPropertySetter(readString),\n    'WGS84BoundingBox': makeObjectPropertySetter(readBoundingBox),\n    'BoundingBox': makeObjectPropertyPusher(readBoundingBoxWithCrs),\n    'Identifier': makeObjectPropertySetter(readString),\n  }),\n);\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst STYLE_PARSERS = makeStructureNS(\n  NAMESPACE_URIS,\n  {\n    'LegendURL': makeObjectPropertyPusher(readLegendUrl),\n  },\n  makeStructureNS(OWS_NAMESPACE_URIS, {\n    'Title': makeObjectPropertySetter(readString),\n    'Identifier': makeObjectPropertySetter(readString),\n  }),\n);\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst TMS_LINKS_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'TileMatrixSet': makeObjectPropertySetter(readString),\n  'TileMatrixSetLimits': makeObjectPropertySetter(readTileMatrixLimitsList),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst TMS_LIMITS_LIST_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'TileMatrixLimits': makeArrayPusher(readTileMatrixLimits),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst TMS_LIMITS_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'TileMatrix': makeObjectPropertySetter(readString),\n  'MinTileRow': makeObjectPropertySetter(readPositiveInteger),\n  'MaxTileRow': makeObjectPropertySetter(readPositiveInteger),\n  'MinTileCol': makeObjectPropertySetter(readPositiveInteger),\n  'MaxTileCol': makeObjectPropertySetter(readPositiveInteger),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst DIMENSION_PARSERS = makeStructureNS(\n  NAMESPACE_URIS,\n  {\n    'Default': makeObjectPropertySetter(readString),\n    'Value': makeObjectPropertyPusher(readString),\n  },\n  makeStructureNS(OWS_NAMESPACE_URIS, {\n    'Identifier': makeObjectPropertySetter(readString),\n  }),\n);\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst WGS84_BBOX_READERS = makeStructureNS(OWS_NAMESPACE_URIS, {\n  'LowerCorner': makeArrayPusher(readCoordinates),\n  'UpperCorner': makeArrayPusher(readCoordinates),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst TMS_PARSERS = makeStructureNS(\n  NAMESPACE_URIS,\n  {\n    'WellKnownScaleSet': makeObjectPropertySetter(readString),\n    'TileMatrix': makeObjectPropertyPusher(readTileMatrix),\n  },\n  makeStructureNS(OWS_NAMESPACE_URIS, {\n    'SupportedCRS': makeObjectPropertySetter(readString),\n    'Identifier': makeObjectPropertySetter(readString),\n    'BoundingBox': makeObjectPropertySetter(readBoundingBox),\n  }),\n);\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst TM_PARSERS = makeStructureNS(\n  NAMESPACE_URIS,\n  {\n    'TopLeftCorner': makeObjectPropertySetter(readCoordinates),\n    'ScaleDenominator': makeObjectPropertySetter(readDecimal),\n    'TileWidth': makeObjectPropertySetter(readPositiveInteger),\n    'TileHeight': makeObjectPropertySetter(readPositiveInteger),\n    'MatrixWidth': makeObjectPropertySetter(readPositiveInteger),\n    'MatrixHeight': makeObjectPropertySetter(readPositiveInteger),\n  },\n  makeStructureNS(OWS_NAMESPACE_URIS, {\n    'Identifier': makeObjectPropertySetter(readString),\n  }),\n);\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Attribution object.\n */\nfunction readContents(node, objectStack) {\n  return pushParseAndPop({}, CONTENTS_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Layers object.\n */\nfunction readLayer(node, objectStack) {\n  return pushParseAndPop({}, LAYER_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Tile Matrix Set object.\n */\nfunction readTileMatrixSet(node, objectStack) {\n  return pushParseAndPop({}, TMS_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Style object.\n */\nfunction readStyle(node, objectStack) {\n  const style = pushParseAndPop({}, STYLE_PARSERS, node, objectStack);\n  if (!style) {\n    return undefined;\n  }\n  const isDefault = node.getAttribute('isDefault') === 'true';\n  style['isDefault'] = isDefault;\n  return style;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Tile Matrix Set Link object.\n */\nfunction readTileMatrixSetLink(node, objectStack) {\n  return pushParseAndPop({}, TMS_LINKS_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Dimension object.\n */\nfunction readDimensions(node, objectStack) {\n  return pushParseAndPop({}, DIMENSION_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Resource URL object.\n */\nfunction readResourceUrl(node, objectStack) {\n  const format = node.getAttribute('format');\n  const template = node.getAttribute('template');\n  const resourceType = node.getAttribute('resourceType');\n  const resource = {};\n  if (format) {\n    resource['format'] = format;\n  }\n  if (template) {\n    resource['template'] = template;\n  }\n  if (resourceType) {\n    resource['resourceType'] = resourceType;\n  }\n  return resource;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} BBox object.\n */\nfunction readBoundingBox(node, objectStack) {\n  const coordinates = pushParseAndPop(\n    [],\n    WGS84_BBOX_READERS,\n    node,\n    objectStack,\n  );\n  if (coordinates.length != 2) {\n    return undefined;\n  }\n  return boundingExtent(coordinates);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} BBox object.\n */\nfunction readBoundingBoxWithCrs(node, objectStack) {\n  const crs = node.getAttribute('crs');\n  const coordinates = pushParseAndPop(\n    [],\n    WGS84_BBOX_READERS,\n    node,\n    objectStack,\n  );\n  if (coordinates.length != 2) {\n    return undefined;\n  }\n  return {extent: boundingExtent(coordinates), crs: crs};\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Legend object.\n */\nfunction readLegendUrl(node, objectStack) {\n  const legend = {};\n  legend['format'] = node.getAttribute('format');\n  legend['href'] = readHref(node);\n  return legend;\n}\n\n/**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Coordinates object.\n */\nfunction readCoordinates(node, objectStack) {\n  const coordinates = readString(node).split(/\\s+/);\n  if (!coordinates || coordinates.length != 2) {\n    return undefined;\n  }\n  const x = +coordinates[0];\n  const y = +coordinates[1];\n  if (isNaN(x) || isNaN(y)) {\n    return undefined;\n  }\n  return [x, y];\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} TileMatrix object.\n */\nfunction readTileMatrix(node, objectStack) {\n  return pushParseAndPop({}, TM_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} TileMatrixSetLimits Object.\n */\nfunction readTileMatrixLimitsList(node, objectStack) {\n  return pushParseAndPop([], TMS_LIMITS_LIST_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} TileMatrixLimits Array.\n */\nfunction readTileMatrixLimits(node, objectStack) {\n  return pushParseAndPop({}, TMS_LIMITS_PARSERS, node, objectStack);\n}\n\nexport default WMTSCapabilities;\n","import WMTS, {optionsFromCapabilities} from \"ol/source/WMTS\";\r\nimport WMTSTileGrid from \"ol/tilegrid/WMTS\";\r\nimport TileLayer from \"ol/layer/Tile\";\r\nimport {DEVICE_PIXEL_RATIO} from \"ol/has\";\r\nimport {getWidth} from \"ol/extent\";\r\nimport WMTSCapabilities from \"ol/format/WMTSCapabilities\";\r\nimport {get as getProjection} from \"ol/proj\";\r\n\r\n/**\r\n * Shows error message in console for various WMTS errors.\r\n * @param {String} errorMessage error message\r\n * @param {String} layerName layerName\r\n * @returns {void}\r\n */\r\nfunction showErrorMessage (errorMessage, layerName) {\r\n    console.error(\"content: Layer \" + layerName + \": \" + errorMessage);\r\n}\r\n\r\n/**\r\n * Generates resolutions and matrixIds arrays for the WMTS LayerSource.\r\n * @param {Array} resolutions The resolutions array for the LayerSource.\r\n * @param {Array} matrixIds The matrixIds array for the LayerSource.\r\n * @param {Number} length The length of the given arrays.\r\n * @param {Number} size The tileSize depending on the extent.\r\n * @returns {void}\r\n */\r\nfunction generateArrays (resolutions, matrixIds, length, size) {\r\n    for (let i = 0; i < length; ++i) {\r\n        resolutions[i] = size / Math.pow(2, i);\r\n        matrixIds[i] = i;\r\n    }\r\n}\r\n\r\n/**\r\n * Gets the WMTS-GetCapabilities document and parse it\r\n * @param {String} url url for getting capabilities\r\n * @throws {Error} on unexpected return\r\n * @returns {promise} promise resolves to parsed WMTS-GetCapabilities object\r\n */\r\nfunction getWMTSCapabilities (url) {\r\n    return fetch(url)\r\n        .then(response => {\r\n            if (response && response.status === 200) {\r\n                return response.text();\r\n            }\r\n            console.error(response);\r\n            throw new Error(`Failing WMTS request to ${url}. Status: ${response?.status}`);\r\n        })\r\n        .then((text) => new WMTSCapabilities().read(text));\r\n}\r\n\r\n/**\r\n* Creates the LayerSource from definitions in the service.json for this WMTSLayer.\r\n* @param {Object} attrs attributes of the layer\r\n* @param {WMTS} tileLayer layer object\r\n* @returns {void}\r\n*/\r\nfunction createLayerSourceByDefinitions (attrs, tileLayer) {\r\n    const projection = getProjection(attrs.coordinateSystem),\r\n        extent = projection.getExtent(),\r\n        style = attrs.style,\r\n        format = attrs.format,\r\n        wrapX = attrs.wrapX ? attrs.wrapX : false,\r\n        urls = attrs.urls,\r\n        size = extent ? getWidth(extent) / parseInt(attrs.tileSize, 10) : null,\r\n        resLength = parseInt(attrs.resLength, 10),\r\n        resolutions = new Array(resLength),\r\n        matrixIds = new Array(resLength),\r\n        source = new WMTS({\r\n            projection: projection,\r\n            attributions: attrs.olAttribution,\r\n            tileGrid: new WMTSTileGrid({\r\n                origin: attrs.origin,\r\n                resolutions: resolutions,\r\n                matrixIds: matrixIds,\r\n                tileSize: attrs.tileSize\r\n            }),\r\n            tilePixelRatio: DEVICE_PIXEL_RATIO,\r\n            urls: urls,\r\n            matrixSet: attrs.tileMatrixSet,\r\n            matrixSizes: attrs.matrixSizes,\r\n            layer: attrs.layers,\r\n            format: format,\r\n            style: style,\r\n            version: attrs.version,\r\n            transparent: attrs.transparent.toString(),\r\n            wrapX: wrapX,\r\n            requestEncoding: attrs.requestEncoding,\r\n            scales: attrs.scales\r\n        });\r\n\r\n    if (size) {\r\n        generateArrays(resolutions, matrixIds, resLength, size);\r\n    }\r\n    else {\r\n        showErrorMessage(attrs.name, `${projection.getCode()} has been given as projection to wmts.js for layer with id ${attrs.id}, but only \"EPSG:4326\" and \"EPSG:3857\" are supported. Please use the \"capabilitiesUrl\" and \"optionsFromCapabilities\" configuration parameters on this layer.`);\r\n    }\r\n\r\n    source.matrixSizes = attrs.matrixSizes;\r\n    source.scales = attrs.scales;\r\n    tileLayer.setSource(source);\r\n    tileLayer.getSource().refresh();\r\n}\r\n\r\n/**\r\n* Creates the LayerSource for this WMTSLayer from the WMTS capabilities.\r\n* @param {Object} attrs  attributes of the layer\r\n* @param {WMTS} tileLayer layer object\r\n* @returns {void}\r\n*/\r\nfunction createLayerSourceByCapabilities (attrs, tileLayer) {\r\n    const layerIdentifier = attrs.layers,\r\n        url = attrs.capabilitiesUrl,\r\n        matrixSet = attrs.tileMatrixSet,\r\n        format = attrs.format,\r\n        capabilitiesOptions = {\r\n            layer: layerIdentifier,\r\n            format\r\n        };\r\n\r\n    // use the matrixSet (if defined) for optionsFromCapabilities\r\n    // else look for a tilematrixset in epsg:3857\r\n    if (matrixSet && matrixSet.length > 0) {\r\n        capabilitiesOptions.matrixSet = matrixSet;\r\n    }\r\n    else {\r\n        capabilitiesOptions.projection = \"EPSG:3857\";\r\n    }\r\n\r\n    getWMTSCapabilities(url)\r\n        .then((result) => {\r\n            const options = optionsFromCapabilities(result, capabilitiesOptions),\r\n                tileMatrixSet = result.Contents.TileMatrixSet.filter(set => set.Identifier === options.matrixSet)[0],\r\n                matrixSizes = [],\r\n                scales = [];\r\n\r\n            // Add the parameters \"ScaleDenominator\" and \"MatrixHeight\" / \"MatrixWidth\" to the source to be able to print WMTS layers\r\n            tileMatrixSet.TileMatrix.forEach(({MatrixHeight, MatrixWidth, ScaleDenominator}) => {\r\n                matrixSizes.push([MatrixWidth, MatrixHeight]);\r\n                scales.push(ScaleDenominator);\r\n            });\r\n\r\n            if (options !== null) {\r\n                const source = new WMTS(options);\r\n\r\n                source.matrixSizes = matrixSizes;\r\n                source.scales = scales;\r\n                tileLayer.set(\"options\", options);\r\n                tileLayer.setSource(source);\r\n                tileLayer.getSource().refresh();\r\n            }\r\n            else {\r\n                const errorMessage = \"Cannot get options from WMTS-Capabilities\";\r\n\r\n                showErrorMessage(errorMessage, attrs.name || attrs.id);\r\n                throw new Error(errorMessage);\r\n            }\r\n        })\r\n        .catch((error) => {\r\n            if (error === \"Fetch error\") {\r\n                // error message has already been printed earlier\r\n                return;\r\n            }\r\n            showErrorMessage(error, attrs.name || attrs.id);\r\n        });\r\n}\r\n\r\n/**\r\n * Creates the WMTSLayer.\r\n * @param {object} rawLayer - layer specification as in services.json\r\n * @param {object} layerParams - additional layer params\r\n * @returns {void}\r\n */\r\nfunction createLayer (rawLayer, layerParams = {}) {\r\n    const tileLayer = new TileLayer(Object.assign({\r\n        id: rawLayer.id,\r\n        source: new WMTS({}),\r\n        name: rawLayer.name,\r\n        minResolution: typeof rawLayer.minResolution === \"string\" ? parseFloat(rawLayer.minResolution) : rawLayer.minResolution,\r\n        maxResolution: typeof rawLayer.maxResolution === \"string\" ? parseFloat(rawLayer.maxResolution) : rawLayer.maxResolution,\r\n        supported: [\"2D\", \"3D\"],\r\n        showSettings: true,\r\n        extent: null,\r\n        typ: rawLayer.typ,\r\n        legendURL: rawLayer.legendURL,\r\n        infoFormat: rawLayer.infoFormat\r\n    }, layerParams));\r\n\r\n    if (rawLayer.optionsFromCapabilities === undefined || rawLayer.capabilitiesUrl === undefined) {\r\n        createLayerSourceByDefinitions(rawLayer, tileLayer);\r\n    }\r\n    else {\r\n        createLayerSourceByCapabilities(rawLayer, tileLayer);\r\n    }\r\n\r\n    return tileLayer;\r\n}\r\n\r\nexport default {\r\n    createLayer,\r\n    createLayerSourceByCapabilities,\r\n    createLayerSourceByDefinitions,\r\n    getWMTSCapabilities,\r\n    generateArrays,\r\n    showErrorMessage\r\n};\r\n","/**\n * @module ol/format/Feature\n */\nimport Feature from '../Feature.js';\nimport {\n  linearRingsAreOriented,\n  linearRingssAreOriented,\n  orientLinearRings,\n  orientLinearRingsArray,\n} from '../geom/flat/orient.js';\nimport {\n  GeometryCollection,\n  LineString,\n  MultiLineString,\n  MultiPoint,\n  MultiPolygon,\n  Point,\n  Polygon,\n} from '../geom.js';\nimport {\n  equivalent as equivalentProjection,\n  get as getProjection,\n  getTransform,\n  transformExtent,\n} from '../proj.js';\nimport RenderFeature from '../render/Feature.js';\nimport {abstract} from '../util.js';\n\n/**\n * @typedef {Object} ReadOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are reading.\n * If not provided, the projection will be derived from the data (where possible) or\n * the `dataProjection` of the format is assigned (where set). If the projection\n * can not be derived from the data and if no `dataProjection` is set for a format,\n * the features will not be reprojected.\n * @property {import(\"../extent.js\").Extent} [extent] Tile extent in map units of the tile being read.\n * This is only required when reading data with tile pixels as geometry units. When configured,\n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to be\n * provided.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * created by the format reader. If not provided, features will be returned in the\n * `dataProjection`.\n */\n\n/**\n * @typedef {Object} WriteOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are writing.\n * If not provided, the `dataProjection` of the format is assigned (where set).\n * If no `dataProjection` is set for a format, the features will be returned\n * in the `featureProjection`.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * that will be serialized by the format writer. If not provided, geometries are assumed\n * to be in the `dataProjection` if that is set; in other words, they are not transformed.\n * @property {boolean} [rightHanded] When writing geometries, follow the right-hand\n * rule for linear ring orientation.  This means that polygons will have counter-clockwise\n * exterior rings and clockwise interior rings.  By default, coordinates are serialized\n * as they are provided at construction.  If `true`, the right-hand rule will\n * be applied.  If `false`, the left-hand rule will be applied (clockwise for\n * exterior and counter-clockwise for interior rings).  Note that not all\n * formats support this.  The GeoJSON format does use this property when writing\n * geometries.\n * @property {number} [decimals] Maximum number of decimal places for coordinates.\n * Coordinates are stored internally as floats, but floating-point arithmetic can create\n * coordinates with a large number of decimal places, not generally wanted on output.\n * Set a number here to round coordinates. Can also be used to ensure that\n * coordinates read in can be written back out with the same number of decimals.\n * Default is no rounding.\n */\n\n/**\n * @typedef {'arraybuffer' | 'json' | 'text' | 'xml'} Type\n */\n\n/**\n * @typedef {Object} SimpleGeometryObject\n * @property {import('../geom/Geometry.js').Type} type Type.\n * @property {Array<number>} flatCoordinates Flat coordinates.\n * @property {Array<number>|Array<Array<number>>} [ends] Ends or endss.\n * @property {import('../geom/Geometry.js').GeometryLayout} [layout] Layout.\n */\n\n/**\n * @typedef {Array<GeometryObject>} GeometryCollectionObject\n */\n\n/**\n * @typedef {SimpleGeometryObject|GeometryCollectionObject} GeometryObject\n */\n\n/**\n * @typedef {Object} FeatureObject\n * @property {string|number} [id] Id.\n * @property {GeometryObject} [geometry] Geometry.\n * @property {Object<string, *>} [properties] Properties.\n */\n\n/***\n * @template {import('../Feature.js').FeatureLike} T\n * @typedef {T extends RenderFeature ? typeof RenderFeature : typeof Feature} FeatureToFeatureClass\n */\n\n/***\n * @template {import(\"../Feature.js\").FeatureClass} T\n * @typedef {T[keyof T] extends RenderFeature ? RenderFeature : Feature} FeatureClassToFeature\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 feature formats.\n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encode\n * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatial\n * file formats.  See the documentation for each format for more details.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @abstract\n * @api\n */\nclass FeatureFormat {\n  constructor() {\n    /**\n     * @protected\n     * @type {import(\"../proj/Projection.js\").default|undefined}\n     */\n    this.dataProjection = undefined;\n\n    /**\n     * @protected\n     * @type {import(\"../proj/Projection.js\").default|undefined}\n     */\n    this.defaultFeatureProjection = undefined;\n\n    /**\n     * @protected\n     * @type {FeatureToFeatureClass<FeatureType>}\n     */\n    this.featureClass = /** @type {FeatureToFeatureClass<FeatureType>} */ (\n      Feature\n    );\n\n    /**\n     * A list media types supported by the format in descending order of preference.\n     * @type {Array<string>}\n     */\n    this.supportedMediaTypes = null;\n  }\n\n  /**\n   * Adds the data projection to the read options.\n   * @param {Document|Element|Object|string} source Source.\n   * @param {ReadOptions} [options] Options.\n   * @return {ReadOptions|undefined} Options.\n   * @protected\n   */\n  getReadOptions(source, options) {\n    if (options) {\n      let dataProjection = options.dataProjection\n        ? getProjection(options.dataProjection)\n        : this.readProjection(source);\n      if (\n        options.extent &&\n        dataProjection &&\n        dataProjection.getUnits() === 'tile-pixels'\n      ) {\n        dataProjection = getProjection(dataProjection);\n        dataProjection.setWorldExtent(options.extent);\n      }\n      options = {\n        dataProjection: dataProjection,\n        featureProjection: options.featureProjection,\n      };\n    }\n    return this.adaptOptions(options);\n  }\n\n  /**\n   * Sets the `dataProjection` on the options, if no `dataProjection`\n   * is set.\n   * @param {WriteOptions|ReadOptions|undefined} options\n   *     Options.\n   * @protected\n   * @return {WriteOptions|ReadOptions|undefined}\n   *     Updated options.\n   */\n  adaptOptions(options) {\n    return Object.assign(\n      {\n        dataProjection: this.dataProjection,\n        featureProjection: this.defaultFeatureProjection,\n        featureClass: this.featureClass,\n      },\n      options,\n    );\n  }\n\n  /**\n   * @abstract\n   * @return {Type} The format type.\n   */\n  getType() {\n    return abstract();\n  }\n\n  /**\n   * Read a single feature from a source.\n   *\n   * @abstract\n   * @param {Document|Element|Object|string} source Source.\n   * @param {ReadOptions} [options] Read options.\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   */\n  readFeature(source, options) {\n    return abstract();\n  }\n\n  /**\n   * Read all features from a source.\n   *\n   * @abstract\n   * @param {Document|Element|ArrayBuffer|Object|string} source Source.\n   * @param {ReadOptions} [options] Read options.\n   * @return {Array<FeatureType>} Features.\n   */\n  readFeatures(source, options) {\n    return abstract();\n  }\n\n  /**\n   * Read a single geometry from a source.\n   *\n   * @abstract\n   * @param {Document|Element|Object|string} source Source.\n   * @param {ReadOptions} [options] Read options.\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   */\n  readGeometry(source, options) {\n    return abstract();\n  }\n\n  /**\n   * Read the projection from a source.\n   *\n   * @abstract\n   * @param {Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default|undefined} Projection.\n   */\n  readProjection(source) {\n    return abstract();\n  }\n\n  /**\n   * Encode a feature in this format.\n   *\n   * @abstract\n   * @param {Feature} feature Feature.\n   * @param {WriteOptions} [options] Write options.\n   * @return {string|ArrayBuffer} Result.\n   */\n  writeFeature(feature, options) {\n    return abstract();\n  }\n\n  /**\n   * Encode an array of features in this format.\n   *\n   * @abstract\n   * @param {Array<Feature>} features Features.\n   * @param {WriteOptions} [options] Write options.\n   * @return {string|ArrayBuffer} Result.\n   */\n  writeFeatures(features, options) {\n    return abstract();\n  }\n\n  /**\n   * Write a single geometry in this format.\n   *\n   * @abstract\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {WriteOptions} [options] Write options.\n   * @return {string|ArrayBuffer} Result.\n   */\n  writeGeometry(geometry, options) {\n    return abstract();\n  }\n}\n\nexport default FeatureFormat;\n\n/**\n * @template {import(\"../geom/Geometry.js\").default|RenderFeature} T\n * @param {T} geometry Geometry.\n * @param {boolean} write Set to true for writing, false for reading.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {T} Transformed geometry.\n */\nexport function transformGeometryWithOptions(geometry, write, options) {\n  const featureProjection = options\n    ? getProjection(options.featureProjection)\n    : null;\n  const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n  let transformed = geometry;\n  if (\n    featureProjection &&\n    dataProjection &&\n    !equivalentProjection(featureProjection, dataProjection)\n  ) {\n    if (write) {\n      transformed = /** @type {T} */ (geometry.clone());\n    }\n    const fromProjection = write ? featureProjection : dataProjection;\n    const toProjection = write ? dataProjection : featureProjection;\n    if (fromProjection.getUnits() === 'tile-pixels') {\n      transformed.transform(fromProjection, toProjection);\n    } else {\n      transformed.applyTransform(getTransform(fromProjection, toProjection));\n    }\n  }\n  if (\n    write &&\n    options &&\n    /** @type {WriteOptions} */ (options).decimals !== undefined\n  ) {\n    const power = Math.pow(10, /** @type {WriteOptions} */ (options).decimals);\n    // if decimals option on write, round each coordinate appropriately\n    /**\n     * @param {Array<number>} coordinates Coordinates.\n     * @return {Array<number>} Transformed coordinates.\n     */\n    const transform = function (coordinates) {\n      for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n        coordinates[i] = Math.round(coordinates[i] * power) / power;\n      }\n      return coordinates;\n    };\n    if (transformed === geometry) {\n      transformed = /** @type {T} */ (geometry.clone());\n    }\n    transformed.applyTransform(transform);\n  }\n  return transformed;\n}\n\n/**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../extent.js\").Extent} Transformed extent.\n */\nexport function transformExtentWithOptions(extent, options) {\n  const featureProjection = options\n    ? getProjection(options.featureProjection)\n    : null;\n  const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n  if (\n    featureProjection &&\n    dataProjection &&\n    !equivalentProjection(featureProjection, dataProjection)\n  ) {\n    return transformExtent(extent, dataProjection, featureProjection);\n  }\n  return extent;\n}\n\nconst GeometryConstructor = {\n  Point: Point,\n  LineString: LineString,\n  Polygon: Polygon,\n  MultiPoint: MultiPoint,\n  MultiLineString: MultiLineString,\n  MultiPolygon: MultiPolygon,\n};\n\nfunction orientFlatCoordinates(flatCoordinates, ends, stride) {\n  if (Array.isArray(ends[0])) {\n    // MultiPolagon\n    if (!linearRingssAreOriented(flatCoordinates, 0, ends, stride)) {\n      flatCoordinates = flatCoordinates.slice();\n      orientLinearRingsArray(flatCoordinates, 0, ends, stride);\n    }\n    return flatCoordinates;\n  }\n  if (!linearRingsAreOriented(flatCoordinates, 0, ends, stride)) {\n    flatCoordinates = flatCoordinates.slice();\n    orientLinearRings(flatCoordinates, 0, ends, stride);\n  }\n  return flatCoordinates;\n}\n\n/**\n * @param {FeatureObject} object Feature object.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {RenderFeature|Array<RenderFeature>} Render feature.\n */\nexport function createRenderFeature(object, options) {\n  const geometry = object.geometry;\n  if (!geometry) {\n    return [];\n  }\n  if (Array.isArray(geometry)) {\n    return geometry\n      .map((geometry) => createRenderFeature({...object, geometry}))\n      .flat();\n  }\n\n  const geometryType =\n    geometry.type === 'MultiPolygon' ? 'Polygon' : geometry.type;\n  if (geometryType === 'GeometryCollection' || geometryType === 'Circle') {\n    throw new Error('Unsupported geometry type: ' + geometryType);\n  }\n\n  const stride = geometry.layout.length;\n  return transformGeometryWithOptions(\n    new RenderFeature(\n      geometryType,\n      geometryType === 'Polygon'\n        ? orientFlatCoordinates(geometry.flatCoordinates, geometry.ends, stride)\n        : geometry.flatCoordinates,\n      geometry.ends?.flat(),\n      stride,\n      object.properties || {},\n      object.id,\n    ).enableSimplifyTransformed(),\n    false,\n    options,\n  );\n}\n\n/**\n * @param {GeometryObject|null} object Geometry object.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nexport function createGeometry(object, options) {\n  if (!object) {\n    return null;\n  }\n  if (Array.isArray(object)) {\n    const geometries = object.map((geometry) =>\n      createGeometry(geometry, options),\n    );\n    return new GeometryCollection(geometries);\n  }\n  const Geometry = GeometryConstructor[object.type];\n  return transformGeometryWithOptions(\n    new Geometry(object.flatCoordinates, object.layout || 'XY', object.ends),\n    false,\n    options,\n  );\n}\n","/**\n * @module ol/format/JSONFeature\n */\nimport {abstract} from '../util.js';\nimport FeatureFormat from './Feature.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for JSON feature formats.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @extends {FeatureFormat<FeatureType>}\n * @abstract\n */\nclass JSONFeature extends FeatureFormat {\n  constructor() {\n    super();\n  }\n\n  /**\n   * @return {import(\"./Feature.js\").Type} Format.\n   * @override\n   */\n  getType() {\n    return 'json';\n  }\n\n  /**\n   * Read a feature.  Only works for a single feature. Use `readFeatures` to\n   * read a feature collection.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   * @api\n   * @override\n   */\n  readFeature(source, options) {\n    return this.readFeatureFromObject(\n      getObject(source),\n      this.getReadOptions(source, options),\n    );\n  }\n\n  /**\n   * Read all features.  Works with both a single feature and a feature\n   * collection.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   * @override\n   */\n  readFeatures(source, options) {\n    return this.readFeaturesFromObject(\n      getObject(source),\n      this.getReadOptions(source, options),\n    );\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   */\n  readFeatureFromObject(object, options) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {Array<FeatureType>} Features.\n   */\n  readFeaturesFromObject(object, options) {\n    return abstract();\n  }\n\n  /**\n   * Read a geometry.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   * @api\n   * @override\n   */\n  readGeometry(source, options) {\n    return this.readGeometryFromObject(\n      getObject(source),\n      this.getReadOptions(source, options),\n    );\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   */\n  readGeometryFromObject(object, options) {\n    return abstract();\n  }\n\n  /**\n   * Read the projection.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @api\n   * @override\n   */\n  readProjection(source) {\n    return this.readProjectionFromObject(getObject(source));\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @protected\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   */\n  readProjectionFromObject(object) {\n    return abstract();\n  }\n\n  /**\n   * Encode a feature as string.\n   *\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded feature.\n   * @api\n   * @override\n   */\n  writeFeature(feature, options) {\n    return JSON.stringify(this.writeFeatureObject(feature, options));\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {Object} Object.\n   */\n  writeFeatureObject(feature, options) {\n    return abstract();\n  }\n\n  /**\n   * Encode an array of features as string.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded features.\n   * @api\n   * @override\n   */\n  writeFeatures(features, options) {\n    return JSON.stringify(this.writeFeaturesObject(features, options));\n  }\n\n  /**\n   * @abstract\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {Object} Object.\n   */\n  writeFeaturesObject(features, options) {\n    return abstract();\n  }\n\n  /**\n   * Encode a geometry as string.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded geometry.\n   * @api\n   * @override\n   */\n  writeGeometry(geometry, options) {\n    return JSON.stringify(this.writeGeometryObject(geometry, options));\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {Object} Object.\n   */\n  writeGeometryObject(geometry, options) {\n    return abstract();\n  }\n}\n\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {Object} Object.\n */\nfunction getObject(source) {\n  if (typeof source === 'string') {\n    const object = JSON.parse(source);\n    return object ? /** @type {Object} */ (object) : null;\n  }\n  if (source !== null) {\n    return source;\n  }\n  return null;\n}\n\nexport default JSONFeature;\n","/**\n * @module ol/format/GeoJSON\n */\n\nimport Feature from '../Feature.js';\nimport {getLayoutForStride} from '../geom/SimpleGeometry.js';\nimport {\n  deflateCoordinatesArray,\n  deflateMultiCoordinatesArray,\n} from '../geom/flat/deflate.js';\nimport {isEmpty} from '../obj.js';\nimport {get as getProjection} from '../proj.js';\nimport RenderFeature from '../render/Feature.js';\nimport {\n  createGeometry,\n  createRenderFeature,\n  transformGeometryWithOptions,\n} from './Feature.js';\nimport JSONFeature from './JSONFeature.js';\n\n/**\n * @typedef {import(\"geojson\").GeoJSON} GeoJSONObject\n * @typedef {import(\"geojson\").Feature} GeoJSONFeature\n * @typedef {import(\"geojson\").FeatureCollection} GeoJSONFeatureCollection\n * @typedef {import(\"geojson\").Geometry} GeoJSONGeometry\n * @typedef {import(\"geojson\").Point} GeoJSONPoint\n * @typedef {import(\"geojson\").LineString} GeoJSONLineString\n * @typedef {import(\"geojson\").Polygon} GeoJSONPolygon\n * @typedef {import(\"geojson\").MultiPoint} GeoJSONMultiPoint\n * @typedef {import(\"geojson\").MultiLineString} GeoJSONMultiLineString\n * @typedef {import(\"geojson\").MultiPolygon} GeoJSONMultiPolygon\n * @typedef {import(\"geojson\").GeometryCollection} GeoJSONGeometryCollection\n */\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {Object} Options\n *\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection for features read or\n * written by the format.  Options passed to read or write methods will take precedence.\n * @property {string} [geometryName] Geometry name to use when creating features.\n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers include\n * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON reader\n * will look for that field to set the geometry name. If both this field is set to `true`\n * and a `geometryName` is provided, the `geometryName` will take precedence.\n * @property {import('./Feature.js').FeatureToFeatureClass<FeatureType>} [featureClass] Feature class\n * to be used when reading features. The default is {@link module:ol/Feature~Feature}. If performance is\n * the primary concern, and features are not going to be modified or round-tripped through the format,\n * consider using {@link module:ol/render/Feature~RenderFeature}\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GeoJSON format.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @extends {JSONFeature<FeatureType>}\n * @api\n */\nclass GeoJSON extends JSONFeature {\n  /**\n   * @param {Options<FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super();\n\n    /**\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.dataProjection = getProjection(\n      options.dataProjection ? options.dataProjection : 'EPSG:4326',\n    );\n\n    if (options.featureProjection) {\n      /**\n       * @type {import(\"../proj/Projection.js\").default}\n       */\n      this.defaultFeatureProjection = getProjection(options.featureProjection);\n    }\n\n    if (options.featureClass) {\n      this.featureClass = options.featureClass;\n    }\n\n    /**\n     * Name of the geometry attribute for features.\n     * @type {string|undefined}\n     * @private\n     */\n    this.geometryName_ = options.geometryName;\n\n    /**\n     * Look for the `geometry_name` in the feature GeoJSON\n     * @type {boolean|undefined}\n     * @private\n     */\n    this.extractGeometryName_ = options.extractGeometryName;\n\n    this.supportedMediaTypes = [\n      'application/geo+json',\n      'application/vnd.geo+json',\n    ];\n  }\n\n  /**\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   * @override\n   */\n  readFeatureFromObject(object, options) {\n    /**\n     * @type {GeoJSONFeature}\n     */\n    let geoJSONFeature = null;\n    if (object['type'] === 'Feature') {\n      geoJSONFeature = /** @type {GeoJSONFeature} */ (object);\n    } else {\n      geoJSONFeature = {\n        'type': 'Feature',\n        'geometry': /** @type {GeoJSONGeometry} */ (object),\n        'properties': null,\n      };\n    }\n\n    const geometry = readGeometryInternal(geoJSONFeature['geometry'], options);\n    if (this.featureClass === RenderFeature) {\n      return /** @type {FeatureType|Array<FeatureType>} */ (\n        createRenderFeature(\n          {\n            geometry,\n            id: geoJSONFeature['id'],\n            properties: geoJSONFeature['properties'],\n          },\n          options,\n        )\n      );\n    }\n\n    const feature = new Feature();\n    if (this.geometryName_) {\n      feature.setGeometryName(this.geometryName_);\n    } else if (this.extractGeometryName_ && geoJSONFeature['geometry_name']) {\n      feature.setGeometryName(geoJSONFeature['geometry_name']);\n    }\n    feature.setGeometry(createGeometry(geometry, options));\n\n    if ('id' in geoJSONFeature) {\n      feature.setId(geoJSONFeature['id']);\n    }\n\n    if (geoJSONFeature['properties']) {\n      feature.setProperties(geoJSONFeature['properties'], true);\n    }\n    return /** @type {FeatureType|Array<FeatureType>} */ (feature);\n  }\n\n  /**\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {Array<FeatureType>} Features.\n   * @override\n   */\n  readFeaturesFromObject(object, options) {\n    const geoJSONObject = /** @type {GeoJSONObject} */ (object);\n    let features = null;\n    if (geoJSONObject['type'] === 'FeatureCollection') {\n      const geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (\n        object\n      );\n      features = [];\n      const geoJSONFeatures = geoJSONFeatureCollection['features'];\n      for (let i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {\n        const featureObject = this.readFeatureFromObject(\n          geoJSONFeatures[i],\n          options,\n        );\n        if (!featureObject) {\n          continue;\n        }\n        features.push(featureObject);\n      }\n    } else {\n      features = [this.readFeatureFromObject(object, options)];\n    }\n    return /** @type {Array<FeatureType>} */ (features.flat());\n  }\n\n  /**\n   * @param {GeoJSONGeometry} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   * @override\n   */\n  readGeometryFromObject(object, options) {\n    return readGeometry(object, options);\n  }\n\n  /**\n   * @param {Object} object Object.\n   * @protected\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @override\n   */\n  readProjectionFromObject(object) {\n    const crs = object['crs'];\n    let projection;\n    if (crs) {\n      if (crs['type'] == 'name') {\n        projection = getProjection(crs['properties']['name']);\n      } else if (crs['type'] === 'EPSG') {\n        projection = getProjection('EPSG:' + crs['properties']['code']);\n      } else {\n        throw new Error('Unknown SRS type');\n      }\n    } else {\n      projection = this.dataProjection;\n    }\n    return /** @type {import(\"../proj/Projection.js\").default} */ (projection);\n  }\n\n  /**\n   * Encode a feature as a GeoJSON Feature object.\n   *\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {GeoJSONFeature} Object.\n   * @api\n   * @override\n   */\n  writeFeatureObject(feature, options) {\n    options = this.adaptOptions(options);\n\n    /** @type {GeoJSONFeature} */\n    const object = {\n      'type': 'Feature',\n      geometry: null,\n      properties: null,\n    };\n\n    const id = feature.getId();\n    if (id !== undefined) {\n      object.id = id;\n    }\n\n    if (!feature.hasProperties()) {\n      return object;\n    }\n\n    const properties = feature.getProperties();\n    const geometry = feature.getGeometry();\n    if (geometry) {\n      object.geometry = writeGeometry(geometry, options);\n\n      delete properties[feature.getGeometryName()];\n    }\n\n    if (!isEmpty(properties)) {\n      object.properties = properties;\n    }\n\n    return object;\n  }\n\n  /**\n   * Encode an array of features as a GeoJSON object.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {GeoJSONFeatureCollection} GeoJSON Object.\n   * @api\n   * @override\n   */\n  writeFeaturesObject(features, options) {\n    options = this.adaptOptions(options);\n    const objects = [];\n    for (let i = 0, ii = features.length; i < ii; ++i) {\n      objects.push(this.writeFeatureObject(features[i], options));\n    }\n    return {\n      type: 'FeatureCollection',\n      features: objects,\n    };\n  }\n\n  /**\n   * Encode a geometry as a GeoJSON object.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.\n   * @api\n   * @override\n   */\n  writeGeometryObject(geometry, options) {\n    return writeGeometry(geometry, this.adaptOptions(options));\n  }\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"./Feature.js\").GeometryObject} Geometry.\n */\nfunction readGeometryInternal(object, options) {\n  if (!object) {\n    return null;\n  }\n\n  /** @type {import(\"./Feature.js\").GeometryObject} */\n  let geometry;\n  switch (object['type']) {\n    case 'Point': {\n      geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));\n      break;\n    }\n    case 'LineString': {\n      geometry = readLineStringGeometry(\n        /** @type {GeoJSONLineString} */ (object),\n      );\n      break;\n    }\n    case 'Polygon': {\n      geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));\n      break;\n    }\n    case 'MultiPoint': {\n      geometry = readMultiPointGeometry(\n        /** @type {GeoJSONMultiPoint} */ (object),\n      );\n      break;\n    }\n    case 'MultiLineString': {\n      geometry = readMultiLineStringGeometry(\n        /** @type {GeoJSONMultiLineString} */ (object),\n      );\n      break;\n    }\n    case 'MultiPolygon': {\n      geometry = readMultiPolygonGeometry(\n        /** @type {GeoJSONMultiPolygon} */ (object),\n      );\n      break;\n    }\n    case 'GeometryCollection': {\n      geometry = readGeometryCollectionGeometry(\n        /** @type {GeoJSONGeometryCollection} */ (object),\n      );\n      break;\n    }\n    default: {\n      throw new Error('Unsupported GeoJSON type: ' + object['type']);\n    }\n  }\n  return geometry;\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, options) {\n  const geometryObject = readGeometryInternal(object, options);\n  return createGeometry(geometryObject, options);\n}\n\n/**\n * @param {GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"./Feature.js\").GeometryCollectionObject} Geometry collection.\n */\nfunction readGeometryCollectionGeometry(object, options) {\n  const geometries = object['geometries'].map(\n    /**\n     * @param {GeoJSONGeometry} geometry Geometry.\n     * @return {import(\"./Feature.js\").GeometryObject} geometry Geometry.\n     */\n    function (geometry) {\n      return readGeometryInternal(geometry, options);\n    },\n  );\n  return geometries;\n}\n\n/**\n * @param {GeoJSONPoint} object Input object.\n * @return {import(\"./Feature.js\").GeometryObject} Point geometry.\n */\nfunction readPointGeometry(object) {\n  const flatCoordinates = object['coordinates'];\n  return {\n    type: 'Point',\n    flatCoordinates,\n    layout: getLayoutForStride(flatCoordinates.length),\n  };\n}\n\n/**\n * @param {GeoJSONLineString} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} LineString geometry.\n */\nfunction readLineStringGeometry(object) {\n  const coordinates = object['coordinates'];\n  const flatCoordinates = coordinates.flat();\n  return {\n    type: 'LineString',\n    flatCoordinates,\n    ends: [flatCoordinates.length],\n    layout: getLayoutForStride(coordinates[0]?.length || 2),\n  };\n}\n\n/**\n * @param {GeoJSONMultiLineString} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiLineString geometry.\n */\nfunction readMultiLineStringGeometry(object) {\n  const coordinates = object['coordinates'];\n  const stride = coordinates[0]?.[0]?.length || 2;\n  const flatCoordinates = [];\n  const ends = deflateCoordinatesArray(flatCoordinates, 0, coordinates, stride);\n  return {\n    type: 'MultiLineString',\n    flatCoordinates,\n    ends,\n    layout: getLayoutForStride(stride),\n  };\n}\n\n/**\n * @param {GeoJSONMultiPoint} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiPoint geometry.\n */\nfunction readMultiPointGeometry(object) {\n  const coordinates = object['coordinates'];\n  return {\n    type: 'MultiPoint',\n    flatCoordinates: coordinates.flat(),\n    layout: getLayoutForStride(coordinates[0]?.length || 2),\n  };\n}\n\n/**\n * @param {GeoJSONMultiPolygon} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiPolygon geometry.\n */\nfunction readMultiPolygonGeometry(object) {\n  const coordinates = object['coordinates'];\n  const flatCoordinates = [];\n  const stride = coordinates[0]?.[0]?.[0].length || 2;\n  const endss = deflateMultiCoordinatesArray(\n    flatCoordinates,\n    0,\n    coordinates,\n    stride,\n  );\n  return {\n    type: 'MultiPolygon',\n    flatCoordinates,\n    ends: endss,\n    layout: getLayoutForStride(stride),\n  };\n}\n\n/**\n * @param {GeoJSONPolygon} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} Polygon.\n */\nfunction readPolygonGeometry(object) {\n  const coordinates = object['coordinates'];\n  const flatCoordinates = [];\n  const stride = coordinates[0]?.[0]?.length;\n  const ends = deflateCoordinatesArray(flatCoordinates, 0, coordinates, stride);\n  return {\n    type: 'Polygon',\n    flatCoordinates,\n    ends,\n    layout: getLayoutForStride(stride),\n  };\n}\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeGeometry(geometry, options) {\n  geometry = transformGeometryWithOptions(geometry, true, options);\n\n  const type = geometry.getType();\n\n  /** @type {GeoJSONGeometry} */\n  let geoJSON;\n  switch (type) {\n    case 'Point': {\n      geoJSON = writePointGeometry(\n        /** @type {import(\"../geom/Point.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'LineString': {\n      geoJSON = writeLineStringGeometry(\n        /** @type {import(\"../geom/LineString.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'Polygon': {\n      geoJSON = writePolygonGeometry(\n        /** @type {import(\"../geom/Polygon.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'MultiPoint': {\n      geoJSON = writeMultiPointGeometry(\n        /** @type {import(\"../geom/MultiPoint.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'MultiLineString': {\n      geoJSON = writeMultiLineStringGeometry(\n        /** @type {import(\"../geom/MultiLineString.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'MultiPolygon': {\n      geoJSON = writeMultiPolygonGeometry(\n        /** @type {import(\"../geom/MultiPolygon.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'GeometryCollection': {\n      geoJSON = writeGeometryCollectionGeometry(\n        /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n          geometry\n        ),\n        options,\n      );\n      break;\n    }\n    case 'Circle': {\n      geoJSON = {\n        type: 'GeometryCollection',\n        geometries: [],\n      };\n      break;\n    }\n    default: {\n      throw new Error('Unsupported geometry type: ' + type);\n    }\n  }\n  return geoJSON;\n}\n\n/**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.\n */\nfunction writeGeometryCollectionGeometry(geometry, options) {\n  options = Object.assign({}, options);\n  delete options.featureProjection;\n  const geometries = geometry.getGeometriesArray().map(function (geometry) {\n    return writeGeometry(geometry, options);\n  });\n  return {\n    type: 'GeometryCollection',\n    geometries: geometries,\n  };\n}\n\n/**\n * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeLineStringGeometry(geometry, options) {\n  return {\n    type: 'LineString',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiLineStringGeometry(geometry, options) {\n  return {\n    type: 'MultiLineString',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPointGeometry(geometry, options) {\n  return {\n    type: 'MultiPoint',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, options) {\n  let right;\n  if (options) {\n    right = options.rightHanded;\n  }\n  return {\n    type: 'MultiPolygon',\n    coordinates: geometry.getCoordinates(right),\n  };\n}\n\n/**\n * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePointGeometry(geometry, options) {\n  return {\n    type: 'Point',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePolygonGeometry(geometry, options) {\n  let right;\n  if (options) {\n    right = options.rightHanded;\n  }\n  return {\n    type: 'Polygon',\n    coordinates: geometry.getCoordinates(right),\n  };\n}\n\nexport default GeoJSON;\n","/**\n * @module ol/format/XMLFeature\n */\nimport {extend} from '../array.js';\nimport FeatureFormat from '../format/Feature.js';\nimport {abstract} from '../util.js';\nimport {getXMLSerializer, isDocument, parse} from '../xml.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for XML feature formats.\n *\n * @abstract\n */\nclass XMLFeature extends FeatureFormat {\n  constructor() {\n    super();\n\n    /**\n     * @type {XMLSerializer}\n     * @private\n     */\n    this.xmlSerializer_ = getXMLSerializer();\n  }\n\n  /**\n   * @return {import(\"./Feature.js\").Type} Format.\n   * @override\n   */\n  getType() {\n    return 'xml';\n  }\n\n  /**\n   * Read a single feature.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {import(\"../Feature.js\").default} Feature.\n   * @api\n   * @override\n   */\n  readFeature(source, options) {\n    if (!source) {\n      return null;\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readFeatureFromDocument(doc, options);\n    }\n    if (isDocument(source)) {\n      return this.readFeatureFromDocument(\n        /** @type {Document} */ (source),\n        options,\n      );\n    }\n    return this.readFeatureFromNode(/** @type {Element} */ (source), options);\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @return {import(\"../Feature.js\").default} Feature.\n   */\n  readFeatureFromDocument(doc, options) {\n    const features = this.readFeaturesFromDocument(doc, options);\n    if (features.length > 0) {\n      return features[0];\n    }\n    return null;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @return {import(\"../Feature.js\").default} Feature.\n   */\n  readFeatureFromNode(node, options) {\n    return null; // not implemented\n  }\n\n  /**\n   * Read all features from a feature collection.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @return {Array<import(\"../Feature.js\").default>} Features.\n   * @api\n   * @override\n   */\n  readFeatures(source, options) {\n    if (!source) {\n      return [];\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readFeaturesFromDocument(doc, options);\n    }\n    if (isDocument(source)) {\n      return this.readFeaturesFromDocument(\n        /** @type {Document} */ (source),\n        options,\n      );\n    }\n    return this.readFeaturesFromNode(/** @type {Element} */ (source), options);\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @protected\n   * @return {Array<import(\"../Feature.js\").default>} Features.\n   */\n  readFeaturesFromDocument(doc, options) {\n    /** @type {Array<import(\"../Feature.js\").default>} */\n    const features = [];\n    for (let n = doc.firstChild; n; n = n.nextSibling) {\n      if (n.nodeType == Node.ELEMENT_NODE) {\n        extend(\n          features,\n          this.readFeaturesFromNode(/** @type {Element} */ (n), options),\n        );\n      }\n    }\n    return features;\n  }\n\n  /**\n   * @abstract\n   * @param {Element} node Node.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @protected\n   * @return {Array<import(\"../Feature.js\").default>} Features.\n   */\n  readFeaturesFromNode(node, options) {\n    return abstract();\n  }\n\n  /**\n   * Read a single geometry from a source.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   * @override\n   */\n  readGeometry(source, options) {\n    if (!source) {\n      return null;\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readGeometryFromDocument(doc, options);\n    }\n    if (isDocument(source)) {\n      return this.readGeometryFromDocument(\n        /** @type {Document} */ (source),\n        options,\n      );\n    }\n    return this.readGeometryFromNode(/** @type {Element} */ (source), options);\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   */\n  readGeometryFromDocument(doc, options) {\n    return null; // not implemented\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   */\n  readGeometryFromNode(node, options) {\n    return null; // not implemented\n  }\n\n  /**\n   * Read the projection from the source.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @api\n   * @override\n   */\n  readProjection(source) {\n    if (!source) {\n      return null;\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readProjectionFromDocument(doc);\n    }\n    if (isDocument(source)) {\n      return this.readProjectionFromDocument(/** @type {Document} */ (source));\n    }\n    return this.readProjectionFromNode(/** @type {Element} */ (source));\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @protected\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   */\n  readProjectionFromDocument(doc) {\n    return this.dataProjection;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @protected\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   */\n  readProjectionFromNode(node) {\n    return this.dataProjection;\n  }\n\n  /**\n   * Encode a feature as string.\n   *\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded feature.\n   * @override\n   */\n  writeFeature(feature, options) {\n    const node = this.writeFeatureNode(feature, options);\n    return this.xmlSerializer_.serializeToString(node);\n  }\n\n  /**\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n   * @protected\n   * @return {Node} Node.\n   */\n  writeFeatureNode(feature, options) {\n    return null; // not implemented\n  }\n\n  /**\n   * Encode an array of features as string.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Result.\n   * @api\n   * @override\n   */\n  writeFeatures(features, options) {\n    const node = this.writeFeaturesNode(features, options);\n    return this.xmlSerializer_.serializeToString(node);\n  }\n\n  /**\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n   * @return {Node} Node.\n   */\n  writeFeaturesNode(features, options) {\n    return null; // not implemented\n  }\n\n  /**\n   * Encode a geometry as string.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded geometry.\n   * @override\n   */\n  writeGeometry(geometry, options) {\n    const node = this.writeGeometryNode(geometry, options);\n    return this.xmlSerializer_.serializeToString(node);\n  }\n\n  /**\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n   * @return {Node} Node.\n   */\n  writeGeometryNode(geometry, options) {\n    return null; // not implemented\n  }\n}\n\nexport default XMLFeature;\n","/**\n * @module ol/format/GMLBase\n */\n// FIXME Envelopes should not be treated as geometries! readEnvelope_ is part\n// of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expect\n// envelopes/extents, only geometries!\nimport Feature from '../Feature.js';\nimport {extend} from '../array.js';\nimport Geometry from '../geom/Geometry.js';\nimport LineString from '../geom/LineString.js';\nimport LinearRing from '../geom/LinearRing.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n  getAllTextContent,\n  getAttributeNS,\n  makeArrayPusher,\n  makeReplacer,\n  parseNode,\n  pushParseAndPop,\n} from '../xml.js';\nimport {\n  transformExtentWithOptions,\n  transformGeometryWithOptions,\n} from './Feature.js';\nimport XMLFeature from './XMLFeature.js';\n\n/**\n * @const\n * @type {string}\n */\nexport const GMLNS = 'http://www.opengis.net/gml';\n\n/**\n * A regular expression that matches if a string only contains whitespace\n * characters. It will e.g. match `''`, `' '`, `'\\n'` etc.\n *\n * @const\n * @type {RegExp}\n */\nconst ONLY_WHITESPACE_RE = /^\\s*$/;\n\n/**\n * @typedef {Object} Options\n * @property {Object<string, string>|string} [featureNS] Feature\n * namespace. If not defined will be derived from GML. If multiple\n * feature types have been configured which come from different feature\n * namespaces, this will be an object with the keys being the prefixes used\n * in the entries of featureType array. The values of the object will be the\n * feature namespaces themselves. So for instance there might be a featureType\n * item `topp:states` in the `featureType` array and then there will be a key\n * `topp` in the featureNS object with value `http://www.openplans.org/topp`.\n * @property {Array<string>|string} [featureType] Feature type(s) to parse.\n * If multiple feature types need to be configured\n * which come from different feature namespaces, `featureNS` will be an object\n * with the keys being the prefixes used in the entries of featureType array.\n * The values of the object will be the feature namespaces themselves.\n * So for instance there might be a featureType item `topp:states` and then\n * there will be a key named `topp` in the featureNS object with value\n * `http://www.openplans.org/topp`.\n * @property {string} [srsName] srsName to use when writing geometries.\n * @property {boolean} [surface=false] Write gml:Surface instead of gml:Polygon\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [curve=false] Write gml:Curve instead of gml:LineString\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [multiCurve=true] Write gml:MultiCurve instead of gml:MultiLineString.\n * Since the latter is deprecated in GML 3.\n * @property {boolean} [multiSurface=true] Write gml:multiSurface instead of\n * gml:MultiPolygon. Since the latter is deprecated in GML 3.\n * @property {string} [schemaLocation] Optional schemaLocation to use when\n * writing out the GML, this will override the default provided.\n * @property {boolean} [hasZ=false] If coordinates have a Z value.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Feature base format for reading and writing data in the GML format.\n * This class cannot be instantiated, it contains only base content that\n * is shared with versioned format classes GML2 and GML3.\n *\n * @abstract\n * @api\n */\nclass GMLBase extends XMLFeature {\n  /**\n   * @param {Options} [options] Optional configuration object.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @protected\n     * @type {Array<string>|string|undefined}\n     */\n    this.featureType = options.featureType;\n\n    /**\n     * @protected\n     * @type {Object<string, string>|string|undefined}\n     */\n    this.featureNS = options.featureNS;\n\n    /**\n     * @protected\n     * @type {string|undefined}\n     */\n    this.srsName = options.srsName;\n\n    /**\n     * @protected\n     * @type {string}\n     */\n    this.schemaLocation = '';\n\n    /**\n     * @type {Object<string, Object<string, Object>>}\n     */\n    this.FEATURE_COLLECTION_PARSERS = {};\n    this.FEATURE_COLLECTION_PARSERS[this.namespace] = {\n      'featureMember': makeArrayPusher(this.readFeaturesInternal),\n      'featureMembers': makeReplacer(this.readFeaturesInternal),\n    };\n\n    this.supportedMediaTypes = ['application/gml+xml'];\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<Feature> | undefined} Features.\n   */\n  readFeaturesInternal(node, objectStack) {\n    const localName = node.localName;\n    let features = null;\n    if (localName == 'FeatureCollection') {\n      features = pushParseAndPop(\n        [],\n        this.FEATURE_COLLECTION_PARSERS,\n        node,\n        objectStack,\n        this,\n      );\n    } else if (\n      localName == 'featureMembers' ||\n      localName == 'featureMember' ||\n      localName == 'member'\n    ) {\n      const context = objectStack[0];\n      let featureType = context['featureType'];\n      let featureNS = context['featureNS'];\n      const prefix = 'p';\n      const defaultPrefix = 'p0';\n      if (!featureType && node.childNodes) {\n        (featureType = []), (featureNS = {});\n        for (let i = 0, ii = node.childNodes.length; i < ii; ++i) {\n          const child = /** @type {Element} */ (node.childNodes[i]);\n          if (child.nodeType === 1) {\n            const ft = child.nodeName.split(':').pop();\n            if (!featureType.includes(ft)) {\n              let key = '';\n              let count = 0;\n              const uri = child.namespaceURI;\n              for (const candidate in featureNS) {\n                if (featureNS[candidate] === uri) {\n                  key = candidate;\n                  break;\n                }\n                ++count;\n              }\n              if (!key) {\n                key = prefix + count;\n                featureNS[key] = uri;\n              }\n              featureType.push(key + ':' + ft);\n            }\n          }\n        }\n        if (localName != 'featureMember') {\n          // recheck featureType for each featureMember\n          context['featureType'] = featureType;\n          context['featureNS'] = featureNS;\n        }\n      }\n      if (typeof featureNS === 'string') {\n        const ns = featureNS;\n        featureNS = {};\n        featureNS[defaultPrefix] = ns;\n      }\n      /** @type {Object<string, Object<string, import(\"../xml.js\").Parser>>} */\n      const parsersNS = {};\n      const featureTypes = Array.isArray(featureType)\n        ? featureType\n        : [featureType];\n      for (const p in featureNS) {\n        /** @type {Object<string, import(\"../xml.js\").Parser>} */\n        const parsers = {};\n        for (let i = 0, ii = featureTypes.length; i < ii; ++i) {\n          const featurePrefix = featureTypes[i].includes(':')\n            ? featureTypes[i].split(':')[0]\n            : defaultPrefix;\n          if (featurePrefix === p) {\n            parsers[featureTypes[i].split(':').pop()] =\n              localName == 'featureMembers'\n                ? makeArrayPusher(this.readFeatureElement, this)\n                : makeReplacer(this.readFeatureElement, this);\n          }\n        }\n        parsersNS[featureNS[p]] = parsers;\n      }\n      if (localName == 'featureMember' || localName == 'member') {\n        features = pushParseAndPop(undefined, parsersNS, node, objectStack);\n      } else {\n        features = pushParseAndPop([], parsersNS, node, objectStack);\n      }\n    }\n    if (features === null) {\n      features = [];\n    }\n    return features;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent|undefined} Geometry.\n   */\n  readGeometryOrExtent(node, objectStack) {\n    const context = /** @type {Object} */ (objectStack[0]);\n    context['srsName'] = node.firstElementChild.getAttribute('srsName');\n    context['srsDimension'] =\n      node.firstElementChild.getAttribute('srsDimension');\n    return pushParseAndPop(\n      null,\n      this.GEOMETRY_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {import(\"../extent.js\").Extent|undefined} Geometry.\n   */\n  readExtentElement(node, objectStack) {\n    const context = /** @type {Object} */ (objectStack[0]);\n    const extent = /** @type {import(\"../extent.js\").Extent} */ (\n      this.readGeometryOrExtent(node, objectStack)\n    );\n    return extent ? transformExtentWithOptions(extent, context) : undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {import(\"../geom/Geometry.js\").default|undefined} Geometry.\n   */\n  readGeometryElement(node, objectStack) {\n    const context = /** @type {Object} */ (objectStack[0]);\n    const geometry = /** @type {import(\"../geom/Geometry.js\").default} */ (\n      this.readGeometryOrExtent(node, objectStack)\n    );\n    return geometry\n      ? transformGeometryWithOptions(geometry, false, context)\n      : undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {boolean} asFeature whether result should be wrapped as a feature.\n   * @return {Feature|Object} Feature\n   */\n  readFeatureElementInternal(node, objectStack, asFeature) {\n    let geometryName;\n    const values = {};\n    for (let n = node.firstElementChild; n; n = n.nextElementSibling) {\n      let value;\n      const localName = n.localName;\n      // first, check if it is simple attribute\n      if (\n        n.childNodes.length === 0 ||\n        (n.childNodes.length === 1 &&\n          (n.firstChild.nodeType === 3 || n.firstChild.nodeType === 4))\n      ) {\n        value = getAllTextContent(n, false);\n        if (ONLY_WHITESPACE_RE.test(value)) {\n          value = undefined;\n        }\n      } else {\n        if (asFeature) {\n          //if feature, try it as a geometry or extent\n          value =\n            localName === 'boundedBy'\n              ? this.readExtentElement(n, objectStack)\n              : this.readGeometryElement(n, objectStack);\n        }\n        if (!value) {\n          //if not a geometry or not a feature, treat it as a complex attribute\n          value = this.readFeatureElementInternal(n, objectStack, false);\n        } else if (localName !== 'boundedBy') {\n          // boundedBy is an extent and must not be considered as a geometry\n          geometryName = localName;\n        }\n      }\n\n      const len = n.attributes.length;\n      if (len > 0 && !(value instanceof Geometry)) {\n        value = {_content_: value};\n        for (let i = 0; i < len; i++) {\n          const attName = n.attributes[i].name;\n          value[attName] = n.attributes[i].value;\n        }\n      }\n\n      if (values[localName]) {\n        if (!(values[localName] instanceof Array)) {\n          values[localName] = [values[localName]];\n        }\n        values[localName].push(value);\n      } else {\n        values[localName] = value;\n      }\n    }\n    if (!asFeature) {\n      return values;\n    }\n    const feature = new Feature(values);\n    if (geometryName) {\n      feature.setGeometryName(geometryName);\n    }\n    const fid =\n      node.getAttribute('fid') || getAttributeNS(node, this.namespace, 'id');\n    if (fid) {\n      feature.setId(fid);\n    }\n    return feature;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Feature} Feature.\n   */\n  readFeatureElement(node, objectStack) {\n    return this.readFeatureElementInternal(node, objectStack, true);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Point|undefined} Point.\n   */\n  readPoint(node, objectStack) {\n    const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n    if (flatCoordinates) {\n      return new Point(flatCoordinates, 'XYZ');\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {MultiPoint|undefined} MultiPoint.\n   */\n  readMultiPoint(node, objectStack) {\n    /** @type {Array<Array<number>>} */\n    const coordinates = pushParseAndPop(\n      [],\n      this.MULTIPOINT_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (coordinates) {\n      return new MultiPoint(coordinates);\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {MultiLineString|undefined} MultiLineString.\n   */\n  readMultiLineString(node, objectStack) {\n    /** @type {Array<LineString>} */\n    const lineStrings = pushParseAndPop(\n      [],\n      this.MULTILINESTRING_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (lineStrings) {\n      return new MultiLineString(lineStrings);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {MultiPolygon|undefined} MultiPolygon.\n   */\n  readMultiPolygon(node, objectStack) {\n    /** @type {Array<Polygon>} */\n    const polygons = pushParseAndPop(\n      [],\n      this.MULTIPOLYGON_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (polygons) {\n      return new MultiPolygon(polygons);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  pointMemberParser(node, objectStack) {\n    parseNode(this.POINTMEMBER_PARSERS, node, objectStack, this);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  lineStringMemberParser(node, objectStack) {\n    parseNode(this.LINESTRINGMEMBER_PARSERS, node, objectStack, this);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  polygonMemberParser(node, objectStack) {\n    parseNode(this.POLYGONMEMBER_PARSERS, node, objectStack, this);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {LineString|undefined} LineString.\n   */\n  readLineString(node, objectStack) {\n    const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n    if (flatCoordinates) {\n      const lineString = new LineString(flatCoordinates, 'XYZ');\n      return lineString;\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} LinearRing flat coordinates.\n   */\n  readFlatLinearRing(node, objectStack) {\n    const ring = pushParseAndPop(\n      null,\n      this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (ring) {\n      return ring;\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {LinearRing|undefined} LinearRing.\n   */\n  readLinearRing(node, objectStack) {\n    const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n    if (flatCoordinates) {\n      return new LinearRing(flatCoordinates, 'XYZ');\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Polygon|undefined} Polygon.\n   */\n  readPolygon(node, objectStack) {\n    /** @type {Array<Array<number>>} */\n    const flatLinearRings = pushParseAndPop(\n      [null],\n      this.FLAT_LINEAR_RINGS_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatLinearRings && flatLinearRings[0]) {\n      const flatCoordinates = flatLinearRings[0];\n      const ends = [flatCoordinates.length];\n      let i, ii;\n      for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n        extend(flatCoordinates, flatLinearRings[i]);\n        ends.push(flatCoordinates.length);\n      }\n      return new Polygon(flatCoordinates, 'XYZ', ends);\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>} Flat coordinates.\n   */\n  readFlatCoordinatesFromNode(node, objectStack) {\n    return pushParseAndPop(\n      null,\n      this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   * @override\n   */\n  readGeometryFromNode(node, options) {\n    const geometry = this.readGeometryElement(node, [\n      this.getReadOptions(node, options ? options : {}),\n    ]);\n    return geometry ? geometry : null;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @return {Array<import(\"../Feature.js\").default>} Features.\n   * @override\n   */\n  readFeaturesFromNode(node, options) {\n    const internalOptions = {\n      featureType: this.featureType,\n      featureNS: this.featureNS,\n    };\n    if (internalOptions) {\n      Object.assign(internalOptions, this.getReadOptions(node, options));\n    }\n    const features = this.readFeaturesInternal(node, [internalOptions]);\n    return features || [];\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @override\n   */\n  readProjectionFromNode(node) {\n    return getProjection(\n      this.srsName\n        ? this.srsName\n        : node.firstElementChild.getAttribute('srsName'),\n    );\n  }\n}\n\nGMLBase.prototype.namespace = GMLNS;\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n  'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n  'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.GEOMETRY_PARSERS = {\n  'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.MULTIPOINT_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n    'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.MULTILINESTRING_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'lineStringMember': makeArrayPusher(\n      GMLBase.prototype.lineStringMemberParser,\n    ),\n    'lineStringMembers': makeArrayPusher(\n      GMLBase.prototype.lineStringMemberParser,\n    ),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.MULTIPOLYGON_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n    'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.POINTMEMBER_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.LINESTRINGMEMBER_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.POLYGONMEMBER_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.RING_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n  },\n};\n\nexport default GMLBase;\n","/**\n * @module ol/format/GML2\n */\nimport {createOrUpdate} from '../extent.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n  OBJECT_PROPERTY_NODE_FACTORY,\n  createElementNS,\n  getAllTextContent,\n  makeArrayPusher,\n  makeChildAppender,\n  makeReplacer,\n  makeSimpleNodeFactory,\n  pushParseAndPop,\n  pushSerializeAndPop,\n} from '../xml.js';\nimport {\n  transformExtentWithOptions,\n  transformGeometryWithOptions,\n} from './Feature.js';\nimport GMLBase, {GMLNS} from './GMLBase.js';\nimport {writeStringTextNode} from './xsd.js';\n\n/**\n * @const\n * @type {string}\n */\nconst schemaLocation =\n  GMLNS + ' http://schemas.opengis.net/gml/2.1.2/feature.xsd';\n\n/**\n * @const\n * @type {Object<string, string>}\n */\nconst MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n  'MultiLineString': 'lineStringMember',\n  'MultiCurve': 'curveMember',\n  'MultiPolygon': 'polygonMember',\n  'MultiSurface': 'surfaceMember',\n};\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format,\n * version 2.1.2.\n *\n * @api\n */\nclass GML2 extends GMLBase {\n  /**\n   * @param {import(\"./GMLBase.js\").Options} [options] Optional configuration object.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(options);\n\n    this.FEATURE_COLLECTION_PARSERS[GMLNS]['featureMember'] = makeArrayPusher(\n      this.readFeaturesInternal,\n    );\n\n    /**\n     * @type {string}\n     */\n    this.schemaLocation = options.schemaLocation\n      ? options.schemaLocation\n      : schemaLocation;\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} Flat coordinates.\n   */\n  readFlatCoordinates(node, objectStack) {\n    const s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n    const context = /** @type {import(\"../xml.js\").NodeStackItem} */ (\n      objectStack[0]\n    );\n    const containerSrs = context['srsName'];\n    let axisOrientation = 'enu';\n    if (containerSrs) {\n      const proj = getProjection(containerSrs);\n      if (proj) {\n        axisOrientation = proj.getAxisOrientation();\n      }\n    }\n    const coordsGroups = s.trim().split(/\\s+/);\n    const flatCoordinates = [];\n    for (let i = 0, ii = coordsGroups.length; i < ii; i++) {\n      const coords = coordsGroups[i].split(/,+/);\n      const x = parseFloat(coords[0]);\n      const y = parseFloat(coords[1]);\n      const z = coords.length === 3 ? parseFloat(coords[2]) : 0;\n      if (axisOrientation.startsWith('en')) {\n        flatCoordinates.push(x, y, z);\n      } else {\n        flatCoordinates.push(y, x, z);\n      }\n    }\n    return flatCoordinates;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n   */\n  readBox(node, objectStack) {\n    /** @type {Array<number>} */\n    const flatCoordinates = pushParseAndPop(\n      [null],\n      this.BOX_PARSERS_,\n      node,\n      objectStack,\n      this,\n    );\n    return createOrUpdate(\n      flatCoordinates[1][0],\n      flatCoordinates[1][1],\n      flatCoordinates[1][3],\n      flatCoordinates[1][4],\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  innerBoundaryIsParser(node, objectStack) {\n    /** @type {Array<number>|undefined} */\n    const flatLinearRing = pushParseAndPop(\n      undefined,\n      this.RING_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatLinearRing) {\n      const flatLinearRings =\n        /** @type {Array<Array<number>>} */\n        (objectStack[objectStack.length - 1]);\n      flatLinearRings.push(flatLinearRing);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  outerBoundaryIsParser(node, objectStack) {\n    /** @type {Array<number>|undefined} */\n    const flatLinearRing = pushParseAndPop(\n      undefined,\n      this.RING_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatLinearRing) {\n      const flatLinearRings =\n        /** @type {Array<Array<number>>} */\n        (objectStack[objectStack.length - 1]);\n      flatLinearRings[0] = flatLinearRing;\n    }\n  }\n\n  /**\n   * @const\n   * @param {*} value Value.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {string} [nodeName] Node name.\n   * @return {Element|undefined} Node.\n   * @private\n   */\n  GEOMETRY_NODE_FACTORY_(value, objectStack, nodeName) {\n    const context = objectStack[objectStack.length - 1];\n    const multiSurface = context['multiSurface'];\n    const surface = context['surface'];\n    const multiCurve = context['multiCurve'];\n    if (!Array.isArray(value)) {\n      nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (\n        value\n      ).getType();\n      if (nodeName === 'MultiPolygon' && multiSurface === true) {\n        nodeName = 'MultiSurface';\n      } else if (nodeName === 'Polygon' && surface === true) {\n        nodeName = 'Surface';\n      } else if (nodeName === 'MultiLineString' && multiCurve === true) {\n        nodeName = 'MultiCurve';\n      }\n    } else {\n      nodeName = 'Envelope';\n    }\n    return createElementNS('http://www.opengis.net/gml', nodeName);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeFeatureElement(node, feature, objectStack) {\n    const fid = feature.getId();\n    if (fid) {\n      node.setAttribute('fid', /** @type {string} */ (fid));\n    }\n    const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n    const featureNS = context['featureNS'];\n    const geometryName = feature.getGeometryName();\n    if (!context.serializers) {\n      context.serializers = {};\n      context.serializers[featureNS] = {};\n    }\n    const keys = [];\n    const values = [];\n    if (feature.hasProperties()) {\n      const properties = feature.getProperties();\n      for (const key in properties) {\n        const value = properties[key];\n        if (value !== null && value !== undefined) {\n          keys.push(key);\n          values.push(value);\n          if (\n            key == geometryName ||\n            typeof (/** @type {?} */ (value).getSimplifiedGeometry) ===\n              'function'\n          ) {\n            if (!(key in context.serializers[featureNS])) {\n              context.serializers[featureNS][key] = makeChildAppender(\n                this.writeGeometryElement,\n                this,\n              );\n            }\n          } else {\n            if (!(key in context.serializers[featureNS])) {\n              context.serializers[featureNS][key] =\n                makeChildAppender(writeStringTextNode);\n            }\n          }\n        }\n      }\n    }\n    const item = Object.assign({}, context);\n    item.node = node;\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      (item),\n      context.serializers,\n      makeSimpleNodeFactory(undefined, featureNS),\n      values,\n      objectStack,\n      keys,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LineString.js\").default} geometry LineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeCurveOrLineString(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (node.nodeName !== 'LineStringSegment' && srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    if (\n      node.nodeName === 'LineString' ||\n      node.nodeName === 'LineStringSegment'\n    ) {\n      const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n      node.appendChild(coordinates);\n      this.writeCoordinates_(coordinates, geometry, objectStack);\n    } else if (node.nodeName === 'Curve') {\n      const segments = createElementNS(node.namespaceURI, 'segments');\n      node.appendChild(segments);\n      this.writeCurveSegments_(segments, geometry, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeLineStringOrCurveMember(node, line, objectStack) {\n    const child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n    if (child) {\n      node.appendChild(child);\n      this.writeCurveOrLineString(child, line, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/MultiLineString.js\").default} geometry MultiLineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeMultiCurveOrLineString(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    const curve = context['curve'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const lines = geometry.getLineStrings();\n    pushSerializeAndPop(\n      {node: node, hasZ: hasZ, srsName: srsName, curve: curve},\n      this.LINESTRINGORCURVEMEMBER_SERIALIZERS,\n      this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n      lines,\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeGeometryElement(node, geometry, objectStack) {\n    const context = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n      objectStack[objectStack.length - 1]\n    );\n    const item = Object.assign({}, context);\n    item['node'] = node;\n    let value;\n    if (Array.isArray(geometry)) {\n      value = transformExtentWithOptions(\n        /** @type {import(\"../extent.js\").Extent} */ (geometry),\n        context,\n      );\n    } else {\n      value = transformGeometryWithOptions(\n        /** @type {import(\"../geom/Geometry.js\").default} */ (geometry),\n        true,\n        context,\n      );\n    }\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      (item),\n      this.GEOMETRY_SERIALIZERS,\n      this.GEOMETRY_NODE_FACTORY_,\n      [value],\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {string} namespaceURI XML namespace.\n   * @return {Element} coordinates node.\n   * @private\n   */\n  createCoordinatesNode_(namespaceURI) {\n    const coordinates = createElementNS(namespaceURI, 'coordinates');\n    coordinates.setAttribute('decimal', '.');\n    coordinates.setAttribute('cs', ',');\n    coordinates.setAttribute('ts', ' ');\n\n    return coordinates;\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {import(\"../geom/LineString.js\").default|import(\"../geom/LinearRing.js\").default} value Geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writeCoordinates_(node, value, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    // only 2d for simple features profile\n    const points = value.getCoordinates();\n    const len = points.length;\n    const parts = new Array(len);\n    for (let i = 0; i < len; ++i) {\n      const point = points[i];\n      parts[i] = this.getCoords_(point, srsName, hasZ);\n    }\n    writeStringTextNode(node, parts.join(' '));\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writeCurveSegments_(node, line, objectStack) {\n    const child = createElementNS(node.namespaceURI, 'LineStringSegment');\n    node.appendChild(child);\n    this.writeCurveOrLineString(child, line, objectStack);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Polygon.js\").default} geometry Polygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeSurfaceOrPolygon(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    if (node.nodeName !== 'PolygonPatch' && srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n      const rings = geometry.getLinearRings();\n      pushSerializeAndPop(\n        {node: node, hasZ: hasZ, srsName: srsName},\n        this.RING_SERIALIZERS,\n        this.RING_NODE_FACTORY_,\n        rings,\n        objectStack,\n        undefined,\n        this,\n      );\n    } else if (node.nodeName === 'Surface') {\n      const patches = createElementNS(node.namespaceURI, 'patches');\n      node.appendChild(patches);\n      this.writeSurfacePatches_(patches, geometry, objectStack);\n    }\n  }\n\n  /**\n   * @param {*} value Value.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {string} [nodeName] Node name.\n   * @return {Node} Node.\n   * @private\n   */\n  RING_NODE_FACTORY_(value, objectStack, nodeName) {\n    const context = objectStack[objectStack.length - 1];\n    const parentNode = context.node;\n    const exteriorWritten = context['exteriorWritten'];\n    if (exteriorWritten === undefined) {\n      context['exteriorWritten'] = true;\n    }\n    return createElementNS(\n      parentNode.namespaceURI,\n      exteriorWritten !== undefined ? 'innerBoundaryIs' : 'outerBoundaryIs',\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writeSurfacePatches_(node, polygon, objectStack) {\n    const child = createElementNS(node.namespaceURI, 'PolygonPatch');\n    node.appendChild(child);\n    this.writeSurfaceOrPolygon(child, polygon, objectStack);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeRing(node, ring, objectStack) {\n    const linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n    node.appendChild(linearRing);\n    this.writeLinearRing(linearRing, ring, objectStack);\n  }\n\n  /**\n   * @param {Array<number>} point Point geometry.\n   * @param {string} [srsName] Optional srsName\n   * @param {boolean} [hasZ] whether the geometry has a Z coordinate (is 3D) or not.\n   * @return {string} The coords string.\n   * @private\n   */\n  getCoords_(point, srsName, hasZ) {\n    const axisOrientation = srsName\n      ? getProjection(srsName).getAxisOrientation()\n      : 'enu';\n    let coords = axisOrientation.startsWith('en')\n      ? point[0] + ',' + point[1]\n      : point[1] + ',' + point[0];\n    if (hasZ) {\n      // For newly created points, Z can be undefined.\n      const z = point[2] || 0;\n      coords += ',' + z;\n    }\n\n    return coords;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writePoint(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n    node.appendChild(coordinates);\n    const point = geometry.getCoordinates();\n    const coord = this.getCoords_(point, srsName, hasZ);\n    writeStringTextNode(coordinates, coord);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeMultiPoint(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const points = geometry.getPoints();\n    pushSerializeAndPop(\n      {node: node, hasZ: hasZ, srsName: srsName},\n      this.POINTMEMBER_SERIALIZERS,\n      makeSimpleNodeFactory('pointMember'),\n      points,\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Point.js\").default} point Point geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writePointMember(node, point, objectStack) {\n    const child = createElementNS(node.namespaceURI, 'Point');\n    node.appendChild(child);\n    this.writePoint(child, point, objectStack);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeLinearRing(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n    node.appendChild(coordinates);\n    this.writeCoordinates_(coordinates, geometry, objectStack);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeMultiSurfaceOrPolygon(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    const surface = context['surface'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const polygons = geometry.getPolygons();\n    pushSerializeAndPop(\n      {node: node, hasZ: hasZ, srsName: srsName, surface: surface},\n      this.SURFACEORPOLYGONMEMBER_SERIALIZERS,\n      this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n      polygons,\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeSurfaceOrPolygonMember(node, polygon, objectStack) {\n    const child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n    if (child) {\n      node.appendChild(child);\n      this.writeSurfaceOrPolygon(child, polygon, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeEnvelope(node, extent, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const keys = ['lowerCorner', 'upperCorner'];\n    const values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      ({node: node}),\n      this.ENVELOPE_SERIALIZERS,\n      OBJECT_PROPERTY_NODE_FACTORY,\n      values,\n      objectStack,\n      keys,\n      this,\n    );\n  }\n\n  /**\n   * @const\n   * @param {*} value Value.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {string} [nodeName] Node name.\n   * @return {Node|undefined} Node.\n   * @private\n   */\n  MULTIGEOMETRY_MEMBER_NODE_FACTORY_(value, objectStack, nodeName) {\n    const parentNode = objectStack[objectStack.length - 1].node;\n    return createElementNS(\n      'http://www.opengis.net/gml',\n      MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName],\n    );\n  }\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML2.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML2.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'innerBoundaryIs': GML2.prototype.innerBoundaryIsParser,\n    'outerBoundaryIs': GML2.prototype.outerBoundaryIsParser,\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML2.prototype.BOX_PARSERS_ = {\n  'http://www.opengis.net/gml': {\n    'coordinates': makeArrayPusher(GML2.prototype.readFlatCoordinates),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML2.prototype.GEOMETRY_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'Point': makeReplacer(GMLBase.prototype.readPoint),\n    'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n    'LineString': makeReplacer(GMLBase.prototype.readLineString),\n    'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n    'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n    'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n    'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n    'Box': makeReplacer(GML2.prototype.readBox),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML2.prototype.GEOMETRY_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'Curve': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n    'MultiCurve': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString),\n    'Point': makeChildAppender(GML2.prototype.writePoint),\n    'MultiPoint': makeChildAppender(GML2.prototype.writeMultiPoint),\n    'LineString': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n    'MultiLineString': makeChildAppender(\n      GML2.prototype.writeMultiCurveOrLineString,\n    ),\n    'LinearRing': makeChildAppender(GML2.prototype.writeLinearRing),\n    'Polygon': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n    'MultiPolygon': makeChildAppender(\n      GML2.prototype.writeMultiSurfaceOrPolygon,\n    ),\n    'Surface': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n    'MultiSurface': makeChildAppender(\n      GML2.prototype.writeMultiSurfaceOrPolygon,\n    ),\n    'Envelope': makeChildAppender(GML2.prototype.writeEnvelope),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML2.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'lineStringMember': makeChildAppender(\n      GML2.prototype.writeLineStringOrCurveMember,\n    ),\n    'curveMember': makeChildAppender(\n      GML2.prototype.writeLineStringOrCurveMember,\n    ),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML2.prototype.RING_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'outerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n    'innerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML2.prototype.POINTMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'pointMember': makeChildAppender(GML2.prototype.writePointMember),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML2.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'surfaceMember': makeChildAppender(\n      GML2.prototype.writeSurfaceOrPolygonMember,\n    ),\n    'polygonMember': makeChildAppender(\n      GML2.prototype.writeSurfaceOrPolygonMember,\n    ),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML2.prototype.ENVELOPE_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'lowerCorner': makeChildAppender(writeStringTextNode),\n    'upperCorner': makeChildAppender(writeStringTextNode),\n  },\n};\n\nexport default GML2;\n","/**\n * @module ol/format/GML3\n */\nimport {extend} from '../array.js';\nimport {createOrUpdate} from '../extent.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Polygon from '../geom/Polygon.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n  OBJECT_PROPERTY_NODE_FACTORY,\n  XML_SCHEMA_INSTANCE_URI,\n  createElementNS,\n  getAllTextContent,\n  makeArrayExtender,\n  makeArrayPusher,\n  makeChildAppender,\n  makeReplacer,\n  makeSimpleNodeFactory,\n  parseNode,\n  pushParseAndPop,\n  pushSerializeAndPop,\n} from '../xml.js';\nimport {\n  transformExtentWithOptions,\n  transformGeometryWithOptions,\n} from './Feature.js';\nimport GML2 from './GML2.js';\nimport GMLBase, {GMLNS} from './GMLBase.js';\nimport {readNonNegativeIntegerString, writeStringTextNode} from './xsd.js';\n\n/**\n * @const\n * @type {string}\n * @private\n */\nconst schemaLocation =\n  GMLNS +\n  ' http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/' +\n  '1.0.0/gmlsf.xsd';\n\n/**\n * @const\n * @type {Object<string, string>}\n */\nconst MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n  'MultiLineString': 'lineStringMember',\n  'MultiCurve': 'curveMember',\n  'MultiPolygon': 'polygonMember',\n  'MultiSurface': 'surfaceMember',\n};\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format\n * version 3.1.1.\n * Currently only supports GML 3.1.1 Simple Features profile.\n *\n * @api\n */\nclass GML3 extends GMLBase {\n  /**\n   * @param {import(\"./GMLBase.js\").Options} [options] Optional configuration object.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(options);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.surface_ = options.surface !== undefined ? options.surface : false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.curve_ = options.curve !== undefined ? options.curve : false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.multiCurve_ =\n      options.multiCurve !== undefined ? options.multiCurve : true;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.multiSurface_ =\n      options.multiSurface !== undefined ? options.multiSurface : true;\n\n    /**\n     * @type {string}\n     */\n    this.schemaLocation = options.schemaLocation\n      ? options.schemaLocation\n      : schemaLocation;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.hasZ = options.hasZ !== undefined ? options.hasZ : false;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {MultiLineString|undefined} MultiLineString.\n   */\n  readMultiCurve(node, objectStack) {\n    /** @type {Array<LineString>} */\n    const lineStrings = pushParseAndPop(\n      [],\n      this.MULTICURVE_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (lineStrings) {\n      const multiLineString = new MultiLineString(lineStrings);\n      return multiLineString;\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} Polygon.\n   */\n  readFlatCurveRing(node, objectStack) {\n    /** @type {Array<LineString>} */\n    const lineStrings = pushParseAndPop(\n      [],\n      this.MULTICURVE_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    const flatCoordinates = [];\n    for (let i = 0, ii = lineStrings.length; i < ii; ++i) {\n      extend(flatCoordinates, lineStrings[i].getFlatCoordinates());\n    }\n    return flatCoordinates;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {MultiPolygon|undefined} MultiPolygon.\n   */\n  readMultiSurface(node, objectStack) {\n    /** @type {Array<Polygon>} */\n    const polygons = pushParseAndPop(\n      [],\n      this.MULTISURFACE_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (polygons) {\n      return new MultiPolygon(polygons);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  curveMemberParser(node, objectStack) {\n    parseNode(this.CURVEMEMBER_PARSERS, node, objectStack, this);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  surfaceMemberParser(node, objectStack) {\n    parseNode(this.SURFACEMEMBER_PARSERS, node, objectStack, this);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<(Array<number>)>|undefined} flat coordinates.\n   */\n  readPatch(node, objectStack) {\n    return pushParseAndPop(\n      [null],\n      this.PATCHES_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} flat coordinates.\n   */\n  readSegment(node, objectStack) {\n    return pushParseAndPop([], this.SEGMENTS_PARSERS, node, objectStack, this);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<(Array<number>)>|undefined} flat coordinates.\n   */\n  readPolygonPatch(node, objectStack) {\n    return pushParseAndPop(\n      [null],\n      this.FLAT_LINEAR_RINGS_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} flat coordinates.\n   */\n  readLineStringSegment(node, objectStack) {\n    return pushParseAndPop(\n      [null],\n      this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  interiorParser(node, objectStack) {\n    /** @type {Array<number>|undefined} */\n    const flatLinearRing = pushParseAndPop(\n      undefined,\n      this.RING_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatLinearRing) {\n      const flatLinearRings =\n        /** @type {Array<Array<number>>} */\n        (objectStack[objectStack.length - 1]);\n      flatLinearRings.push(flatLinearRing);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   */\n  exteriorParser(node, objectStack) {\n    /** @type {Array<number>|undefined} */\n    const flatLinearRing = pushParseAndPop(\n      undefined,\n      this.RING_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatLinearRing) {\n      const flatLinearRings =\n        /** @type {Array<Array<number>>} */\n        (objectStack[objectStack.length - 1]);\n      flatLinearRings[0] = flatLinearRing;\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Polygon|undefined} Polygon.\n   */\n  readSurface(node, objectStack) {\n    /** @type {Array<Array<number>>} */\n    const flatLinearRings = pushParseAndPop(\n      [null],\n      this.SURFACE_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatLinearRings && flatLinearRings[0]) {\n      const flatCoordinates = flatLinearRings[0];\n      const ends = [flatCoordinates.length];\n      let i, ii;\n      for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n        extend(flatCoordinates, flatLinearRings[i]);\n        ends.push(flatCoordinates.length);\n      }\n      return new Polygon(flatCoordinates, 'XYZ', ends);\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {LineString|undefined} LineString.\n   */\n  readCurve(node, objectStack) {\n    /** @type {Array<number>} */\n    const flatCoordinates = pushParseAndPop(\n      [null],\n      this.CURVE_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    if (flatCoordinates) {\n      const lineString = new LineString(flatCoordinates, 'XYZ');\n      return lineString;\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n   */\n  readEnvelope(node, objectStack) {\n    /** @type {Array<number>} */\n    const flatCoordinates = pushParseAndPop(\n      [null],\n      this.ENVELOPE_PARSERS,\n      node,\n      objectStack,\n      this,\n    );\n    return createOrUpdate(\n      flatCoordinates[1][0],\n      flatCoordinates[1][1],\n      flatCoordinates[2][0],\n      flatCoordinates[2][1],\n    );\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} Flat coordinates.\n   */\n  readFlatPos(node, objectStack) {\n    let s = getAllTextContent(node, false);\n    const re = /^\\s*([+\\-]?\\d*\\.?\\d+(?:[eE][+\\-]?\\d+)?)\\s*/;\n    /** @type {Array<number>} */\n    const flatCoordinates = [];\n    let m;\n    while ((m = re.exec(s))) {\n      flatCoordinates.push(parseFloat(m[1]));\n      s = s.substr(m[0].length);\n    }\n    if (s !== '') {\n      return undefined;\n    }\n    const context = objectStack[0];\n    const containerSrs = context['srsName'];\n    const axisOrientation = containerSrs\n      ? getProjection(containerSrs).getAxisOrientation()\n      : 'enu';\n    if (axisOrientation === 'neu') {\n      for (let i = 0, ii = flatCoordinates.length; i < ii; i += 3) {\n        const y = flatCoordinates[i];\n        const x = flatCoordinates[i + 1];\n        flatCoordinates[i] = x;\n        flatCoordinates[i + 1] = y;\n      }\n    }\n    const len = flatCoordinates.length;\n    if (len == 2) {\n      flatCoordinates.push(0);\n    }\n    if (len === 0) {\n      return undefined;\n    }\n    return flatCoordinates;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Array<*>} objectStack Object stack.\n   * @return {Array<number>|undefined} Flat coordinates.\n   */\n  readFlatPosList(node, objectStack) {\n    const s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n    const context = objectStack[0];\n    const containerSrs = context['srsName'];\n    const contextDimension = context['srsDimension'];\n    const axisOrientation = containerSrs\n      ? getProjection(containerSrs).getAxisOrientation()\n      : 'enu';\n    const coords = s.split(/\\s+/);\n    // The \"dimension\" attribute is from the GML 3.0.1 spec.\n    let dim = 2;\n    if (node.getAttribute('srsDimension')) {\n      dim = readNonNegativeIntegerString(node.getAttribute('srsDimension'));\n    } else if (node.getAttribute('dimension')) {\n      dim = readNonNegativeIntegerString(node.getAttribute('dimension'));\n    } else if (\n      /** @type {Element} */ (node.parentNode).getAttribute('srsDimension')\n    ) {\n      dim = readNonNegativeIntegerString(\n        /** @type {Element} */ (node.parentNode).getAttribute('srsDimension'),\n      );\n    } else if (contextDimension) {\n      dim = readNonNegativeIntegerString(contextDimension);\n    }\n    const asXYZ = axisOrientation.startsWith('en');\n    let x, y, z;\n    const flatCoordinates = [];\n    for (let i = 0, ii = coords.length; i < ii; i += dim) {\n      x = parseFloat(coords[i]);\n      y = parseFloat(coords[i + 1]);\n      z = dim === 3 ? parseFloat(coords[i + 2]) : 0;\n      if (asXYZ) {\n        flatCoordinates.push(x, y, z);\n      } else {\n        flatCoordinates.push(y, x, z);\n      }\n    }\n    return flatCoordinates;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Point.js\").default} value Point geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writePos_(node, value, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsDimension = hasZ ? '3' : '2';\n    node.setAttribute('srsDimension', srsDimension);\n    const srsName = context['srsName'];\n    const axisOrientation = srsName\n      ? getProjection(srsName).getAxisOrientation()\n      : 'enu';\n    const point = value.getCoordinates();\n    // only 2d for simple features profile\n    let coords = axisOrientation.startsWith('en')\n      ? point[0] + ' ' + point[1]\n      : point[1] + ' ' + point[0];\n    if (hasZ) {\n      // For newly created points, Z can be undefined.\n      const z = point[2] || 0;\n      coords += ' ' + z;\n    }\n    writeStringTextNode(node, coords);\n  }\n\n  /**\n   * @param {Array<number>} point Point geometry.\n   * @param {string} [srsName] Optional srsName\n   * @param {boolean} [hasZ] whether the geometry has a Z coordinate (is 3D) or not.\n   * @return {string} The coords string.\n   * @private\n   */\n  getCoords_(point, srsName, hasZ) {\n    const axisOrientation = srsName\n      ? getProjection(srsName).getAxisOrientation()\n      : 'enu';\n    let coords = axisOrientation.startsWith('en')\n      ? point[0] + ' ' + point[1]\n      : point[1] + ' ' + point[0];\n    if (hasZ) {\n      // For newly created points, Z can be undefined.\n      const z = point[2] || 0;\n      coords += ' ' + z;\n    }\n\n    return coords;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {LineString|import(\"../geom/LinearRing.js\").default} value Geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writePosList_(node, value, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsDimension = hasZ ? '3' : '2';\n    node.setAttribute('srsDimension', srsDimension);\n    const srsName = context['srsName'];\n    // only 2d for simple features profile\n    const points = value.getCoordinates();\n    const len = points.length;\n    const parts = new Array(len);\n    let point;\n    for (let i = 0; i < len; ++i) {\n      point = points[i];\n      parts[i] = this.getCoords_(point, srsName, hasZ);\n    }\n    writeStringTextNode(node, parts.join(' '));\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writePoint(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const pos = createElementNS(node.namespaceURI, 'pos');\n    node.appendChild(pos);\n    this.writePos_(pos, geometry, objectStack);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeEnvelope(node, extent, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const keys = ['lowerCorner', 'upperCorner'];\n    const values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      ({node: node}),\n      this.ENVELOPE_SERIALIZERS,\n      OBJECT_PROPERTY_NODE_FACTORY,\n      values,\n      objectStack,\n      keys,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeLinearRing(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const posList = createElementNS(node.namespaceURI, 'posList');\n    node.appendChild(posList);\n    this.writePosList_(posList, geometry, objectStack);\n  }\n\n  /**\n   * @param {*} value Value.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {string} [nodeName] Node name.\n   * @return {Node} Node.\n   * @private\n   */\n  RING_NODE_FACTORY_(value, objectStack, nodeName) {\n    const context = objectStack[objectStack.length - 1];\n    const parentNode = context.node;\n    const exteriorWritten = context['exteriorWritten'];\n    if (exteriorWritten === undefined) {\n      context['exteriorWritten'] = true;\n    }\n    return createElementNS(\n      parentNode.namespaceURI,\n      exteriorWritten !== undefined ? 'interior' : 'exterior',\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Polygon} geometry Polygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeSurfaceOrPolygon(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    if (node.nodeName !== 'PolygonPatch' && srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n      const rings = geometry.getLinearRings();\n      pushSerializeAndPop(\n        {node: node, hasZ: hasZ, srsName: srsName},\n        this.RING_SERIALIZERS,\n        this.RING_NODE_FACTORY_,\n        rings,\n        objectStack,\n        undefined,\n        this,\n      );\n    } else if (node.nodeName === 'Surface') {\n      const patches = createElementNS(node.namespaceURI, 'patches');\n      node.appendChild(patches);\n      this.writeSurfacePatches_(patches, geometry, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {LineString} geometry LineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeCurveOrLineString(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    if (node.nodeName !== 'LineStringSegment' && srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    if (\n      node.nodeName === 'LineString' ||\n      node.nodeName === 'LineStringSegment'\n    ) {\n      const posList = createElementNS(node.namespaceURI, 'posList');\n      node.appendChild(posList);\n      this.writePosList_(posList, geometry, objectStack);\n    } else if (node.nodeName === 'Curve') {\n      const segments = createElementNS(node.namespaceURI, 'segments');\n      node.appendChild(segments);\n      this.writeCurveSegments_(segments, geometry, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {MultiPolygon} geometry MultiPolygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeMultiSurfaceOrPolygon(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    const surface = context['surface'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const polygons = geometry.getPolygons();\n    pushSerializeAndPop(\n      {node: node, hasZ: hasZ, srsName: srsName, surface: surface},\n      this.SURFACEORPOLYGONMEMBER_SERIALIZERS,\n      this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n      polygons,\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeMultiPoint(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const srsName = context['srsName'];\n    const hasZ = context['hasZ'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const points = geometry.getPoints();\n    pushSerializeAndPop(\n      {node: node, hasZ: hasZ, srsName: srsName},\n      this.POINTMEMBER_SERIALIZERS,\n      makeSimpleNodeFactory('pointMember'),\n      points,\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {MultiLineString} geometry MultiLineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeMultiCurveOrLineString(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    const hasZ = context['hasZ'];\n    const srsName = context['srsName'];\n    const curve = context['curve'];\n    if (srsName) {\n      node.setAttribute('srsName', srsName);\n    }\n    const lines = geometry.getLineStrings();\n    pushSerializeAndPop(\n      {node: node, hasZ: hasZ, srsName: srsName, curve: curve},\n      this.LINESTRINGORCURVEMEMBER_SERIALIZERS,\n      this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n      lines,\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeRing(node, ring, objectStack) {\n    const linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n    node.appendChild(linearRing);\n    this.writeLinearRing(linearRing, ring, objectStack);\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {Polygon} polygon Polygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeSurfaceOrPolygonMember(node, polygon, objectStack) {\n    const child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n    if (child) {\n      node.appendChild(child);\n      this.writeSurfaceOrPolygon(child, polygon, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../geom/Point.js\").default} point Point geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writePointMember(node, point, objectStack) {\n    const child = createElementNS(node.namespaceURI, 'Point');\n    node.appendChild(child);\n    this.writePoint(child, point, objectStack);\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {LineString} line LineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeLineStringOrCurveMember(node, line, objectStack) {\n    const child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n    if (child) {\n      node.appendChild(child);\n      this.writeCurveOrLineString(child, line, objectStack);\n    }\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {Polygon} polygon Polygon geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writeSurfacePatches_(node, polygon, objectStack) {\n    const child = createElementNS(node.namespaceURI, 'PolygonPatch');\n    node.appendChild(child);\n    this.writeSurfaceOrPolygon(child, polygon, objectStack);\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {LineString} line LineString geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writeCurveSegments_(node, line, objectStack) {\n    const child = createElementNS(node.namespaceURI, 'LineStringSegment');\n    node.appendChild(child);\n    this.writeCurveOrLineString(child, line, objectStack);\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeGeometryElement(node, geometry, objectStack) {\n    const context = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n      objectStack[objectStack.length - 1]\n    );\n    const item = Object.assign({}, context);\n    item['node'] = node;\n    let value;\n    if (Array.isArray(geometry)) {\n      value = transformExtentWithOptions(\n        /** @type {import(\"../extent.js\").Extent} */ (geometry),\n        context,\n      );\n    } else {\n      value = transformGeometryWithOptions(\n        /** @type {import(\"../geom/Geometry.js\").default} */ (geometry),\n        true,\n        context,\n      );\n    }\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      (item),\n      this.GEOMETRY_SERIALIZERS,\n      this.GEOMETRY_NODE_FACTORY_,\n      [value],\n      objectStack,\n      undefined,\n      this,\n    );\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {Array<*>} objectStack Node stack.\n   */\n  writeFeatureElement(node, feature, objectStack) {\n    const fid = feature.getId();\n    if (fid) {\n      node.setAttribute('fid', /** @type {string} */ (fid));\n    }\n    const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n    const featureNS = context['featureNS'];\n    const geometryName = feature.getGeometryName();\n    if (!context.serializers) {\n      context.serializers = {};\n      context.serializers[featureNS] = {};\n    }\n    const keys = [];\n    const values = [];\n    if (feature.hasProperties()) {\n      const properties = feature.getProperties();\n      for (const key in properties) {\n        const value = properties[key];\n        if (value !== null && value !== undefined) {\n          keys.push(key);\n          values.push(value);\n          if (\n            key == geometryName ||\n            typeof (/** @type {?} */ (value).getSimplifiedGeometry) ===\n              'function'\n          ) {\n            if (!(key in context.serializers[featureNS])) {\n              context.serializers[featureNS][key] = makeChildAppender(\n                this.writeGeometryElement,\n                this,\n              );\n            }\n          } else {\n            if (!(key in context.serializers[featureNS])) {\n              context.serializers[featureNS][key] =\n                makeChildAppender(writeStringTextNode);\n            }\n          }\n        }\n      }\n    }\n    const item = Object.assign({}, context);\n    item.node = node;\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      (item),\n      context.serializers,\n      makeSimpleNodeFactory(undefined, featureNS),\n      values,\n      objectStack,\n      keys,\n    );\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {Array<*>} objectStack Node stack.\n   * @private\n   */\n  writeFeatureMembers_(node, features, objectStack) {\n    const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n    const featureType = context['featureType'];\n    const featureNS = context['featureNS'];\n    /** @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>} */\n    const serializers = {};\n    serializers[featureNS] = {};\n    serializers[featureNS][featureType] = makeChildAppender(\n      this.writeFeatureElement,\n      this,\n    );\n    const item = Object.assign({}, context);\n    item.node = node;\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */\n      (item),\n      serializers,\n      makeSimpleNodeFactory(featureType, featureNS),\n      features,\n      objectStack,\n    );\n  }\n\n  /**\n   * @const\n   * @param {*} value Value.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {string} [nodeName] Node name.\n   * @return {Node|undefined} Node.\n   * @private\n   */\n  MULTIGEOMETRY_MEMBER_NODE_FACTORY_(value, objectStack, nodeName) {\n    const parentNode = objectStack[objectStack.length - 1].node;\n    return createElementNS(\n      this.namespace,\n      MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName],\n    );\n  }\n\n  /**\n   * @const\n   * @param {*} value Value.\n   * @param {Array<*>} objectStack Object stack.\n   * @param {string} [nodeName] Node name.\n   * @return {Element|undefined} Node.\n   * @private\n   */\n  GEOMETRY_NODE_FACTORY_(value, objectStack, nodeName) {\n    const context = objectStack[objectStack.length - 1];\n    const multiSurface = context['multiSurface'];\n    const surface = context['surface'];\n    const curve = context['curve'];\n    const multiCurve = context['multiCurve'];\n    if (!Array.isArray(value)) {\n      nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (\n        value\n      ).getType();\n      if (nodeName === 'MultiPolygon' && multiSurface === true) {\n        nodeName = 'MultiSurface';\n      } else if (nodeName === 'Polygon' && surface === true) {\n        nodeName = 'Surface';\n      } else if (nodeName === 'LineString' && curve === true) {\n        nodeName = 'Curve';\n      } else if (nodeName === 'MultiLineString' && multiCurve === true) {\n        nodeName = 'MultiCurve';\n      }\n    } else {\n      nodeName = 'Envelope';\n    }\n    return createElementNS(this.namespace, nodeName);\n  }\n\n  /**\n   * Encode a geometry in GML 3.1.1 Simple Features.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n   * @return {Node} Node.\n   * @api\n   * @override\n   */\n  writeGeometryNode(geometry, options) {\n    options = this.adaptOptions(options);\n    const geom = createElementNS(this.namespace, 'geom');\n    const context = {\n      node: geom,\n      hasZ: this.hasZ,\n      srsName: this.srsName,\n      curve: this.curve_,\n      surface: this.surface_,\n      multiSurface: this.multiSurface_,\n      multiCurve: this.multiCurve_,\n    };\n    if (options) {\n      Object.assign(context, options);\n    }\n    this.writeGeometryElement(geom, geometry, [context]);\n    return geom;\n  }\n\n  /**\n   * Encode an array of features in the GML 3.1.1 format as an XML node.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n   * @return {Element} Node.\n   * @api\n   * @override\n   */\n  writeFeaturesNode(features, options) {\n    options = this.adaptOptions(options);\n    const node = createElementNS(this.namespace, 'featureMembers');\n    node.setAttributeNS(\n      XML_SCHEMA_INSTANCE_URI,\n      'xsi:schemaLocation',\n      this.schemaLocation,\n    );\n    const context = {\n      srsName: this.srsName,\n      hasZ: this.hasZ,\n      curve: this.curve_,\n      surface: this.surface_,\n      multiSurface: this.multiSurface_,\n      multiCurve: this.multiCurve_,\n      featureNS: this.featureNS,\n      featureType: this.featureType,\n    };\n    if (options) {\n      Object.assign(context, options);\n    }\n    this.writeFeatureMembers_(node, features, [context]);\n    return node;\n  }\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'pos': makeReplacer(GML3.prototype.readFlatPos),\n    'posList': makeReplacer(GML3.prototype.readFlatPosList),\n    'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'interior': GML3.prototype.interiorParser,\n    'exterior': GML3.prototype.exteriorParser,\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.GEOMETRY_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'Point': makeReplacer(GMLBase.prototype.readPoint),\n    'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n    'LineString': makeReplacer(GMLBase.prototype.readLineString),\n    'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n    'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n    'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n    'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n    'Surface': makeReplacer(GML3.prototype.readSurface),\n    'MultiSurface': makeReplacer(GML3.prototype.readMultiSurface),\n    'Curve': makeReplacer(GML3.prototype.readCurve),\n    'MultiCurve': makeReplacer(GML3.prototype.readMultiCurve),\n    'Envelope': makeReplacer(GML3.prototype.readEnvelope),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.MULTICURVE_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'curveMember': makeArrayPusher(GML3.prototype.curveMemberParser),\n    'curveMembers': makeArrayPusher(GML3.prototype.curveMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.MULTISURFACE_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'surfaceMember': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n    'surfaceMembers': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.CURVEMEMBER_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n    'Curve': makeArrayPusher(GML3.prototype.readCurve),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.SURFACEMEMBER_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n    'Surface': makeArrayPusher(GML3.prototype.readSurface),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.SURFACE_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'patches': makeReplacer(GML3.prototype.readPatch),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.CURVE_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'segments': makeReplacer(GML3.prototype.readSegment),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.ENVELOPE_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'lowerCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n    'upperCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.PATCHES_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'PolygonPatch': makeReplacer(GML3.prototype.readPolygonPatch),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML3.prototype.SEGMENTS_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'LineStringSegment': makeArrayExtender(\n      GML3.prototype.readLineStringSegment,\n    ),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGMLBase.prototype.RING_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n    'Ring': makeReplacer(GML3.prototype.readFlatCurveRing),\n  },\n};\n\n/**\n * Encode an array of features in GML 3.1.1 Simple Features.\n *\n * @function\n * @param {Array<import(\"../Feature.js\").default>} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {string} Result.\n * @api\n */\nGML3.prototype.writeFeatures;\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML3.prototype.RING_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'exterior': makeChildAppender(GML3.prototype.writeRing),\n    'interior': makeChildAppender(GML3.prototype.writeRing),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML3.prototype.ENVELOPE_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'lowerCorner': makeChildAppender(writeStringTextNode),\n    'upperCorner': makeChildAppender(writeStringTextNode),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML3.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'surfaceMember': makeChildAppender(\n      GML3.prototype.writeSurfaceOrPolygonMember,\n    ),\n    'polygonMember': makeChildAppender(\n      GML3.prototype.writeSurfaceOrPolygonMember,\n    ),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML3.prototype.POINTMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'pointMember': makeChildAppender(GML3.prototype.writePointMember),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML3.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'lineStringMember': makeChildAppender(\n      GML3.prototype.writeLineStringOrCurveMember,\n    ),\n    'curveMember': makeChildAppender(\n      GML3.prototype.writeLineStringOrCurveMember,\n    ),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML3.prototype.GEOMETRY_SERIALIZERS = {\n  'http://www.opengis.net/gml': {\n    'Curve': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n    'MultiCurve': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString),\n    'Point': makeChildAppender(GML3.prototype.writePoint),\n    'MultiPoint': makeChildAppender(GML3.prototype.writeMultiPoint),\n    'LineString': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n    'MultiLineString': makeChildAppender(\n      GML3.prototype.writeMultiCurveOrLineString,\n    ),\n    'LinearRing': makeChildAppender(GML3.prototype.writeLinearRing),\n    'Polygon': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n    'MultiPolygon': makeChildAppender(\n      GML3.prototype.writeMultiSurfaceOrPolygon,\n    ),\n    'Surface': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n    'MultiSurface': makeChildAppender(\n      GML3.prototype.writeMultiSurfaceOrPolygon,\n    ),\n    'Envelope': makeChildAppender(GML3.prototype.writeEnvelope),\n  },\n};\n\nexport default GML3;\n","/**\n * @module ol/format/GML\n */\nimport GML3 from './GML3.js';\n\n/**\n * Feature format for reading and writing data in the GML format\n * version 3.1.1.\n * Currently only supports GML 3.1.1 Simple Features profile.\n *\n * @class\n * @param {import(\"./GMLBase.js\").Options} [options]\n *     Optional configuration object.\n * @api\n */\nconst GML = GML3;\n\n/**\n * Encode an array of features in GML 3.1.1 Simple Features.\n *\n * @function\n * @param {Array<import(\"../Feature.js\").default>} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {string} Result.\n * @api\n */\nGML.prototype.writeFeatures;\n\n/**\n * Encode an array of features in the GML 3.1.1 format as an XML node.\n *\n * @function\n * @param {Array<import(\"../Feature.js\").default>} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n * @api\n */\nGML.prototype.writeFeaturesNode;\n\nexport default GML;\n","\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nconst TEXT_DECODER_MIN_LENGTH = 12;\nconst utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\n\nconst PBF_VARINT  = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nconst PBF_FIXED64 = 1; // 64-bit: double, fixed64, sfixed64\nconst PBF_BYTES   = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nconst PBF_FIXED32 = 5; // 32-bit: float, fixed32, sfixed32\n\nexport default class Pbf {\n    /**\n     * @param {Uint8Array | ArrayBuffer} [buf]\n     */\n    constructor(buf = new Uint8Array(16)) {\n        this.buf = ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf);\n        this.dataView = new DataView(this.buf.buffer);\n        this.pos = 0;\n        this.type = 0;\n        this.length = this.buf.length;\n    }\n\n    // === READING =================================================================\n\n    /**\n     * @template T\n     * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n     * @param {T} result\n     * @param {number} [end]\n     */\n    readFields(readField, result, end = this.length) {\n        while (this.pos < end) {\n            const val = this.readVarint(),\n                tag = val >> 3,\n                startPos = this.pos;\n\n            this.type = val & 0x7;\n            readField(tag, result, this);\n\n            if (this.pos === startPos) this.skip(val);\n        }\n        return result;\n    }\n\n    /**\n     * @template T\n     * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n     * @param {T} result\n     */\n    readMessage(readField, result) {\n        return this.readFields(readField, result, this.readVarint() + this.pos);\n    }\n\n    readFixed32() {\n        const val = this.dataView.getUint32(this.pos, true);\n        this.pos += 4;\n        return val;\n    }\n\n    readSFixed32() {\n        const val = this.dataView.getInt32(this.pos, true);\n        this.pos += 4;\n        return val;\n    }\n\n    // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n    readFixed64() {\n        const val = this.dataView.getUint32(this.pos, true) + this.dataView.getUint32(this.pos + 4, true) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    }\n\n    readSFixed64() {\n        const val = this.dataView.getUint32(this.pos, true) + this.dataView.getInt32(this.pos + 4, true) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    }\n\n    readFloat() {\n        const val = this.dataView.getFloat32(this.pos, true);\n        this.pos += 4;\n        return val;\n    }\n\n    readDouble() {\n        const val = this.dataView.getFloat64(this.pos, true);\n        this.pos += 8;\n        return val;\n    }\n\n    /**\n     * @param {boolean} [isSigned]\n     */\n    readVarint(isSigned) {\n        const buf = this.buf;\n        let val, b;\n\n        b = buf[this.pos++]; val  =  b & 0x7f;        if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 7;  if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n        b = buf[this.pos];   val |= (b & 0x0f) << 28;\n\n        return readVarintRemainder(val, isSigned, this);\n    }\n\n    readVarint64() { // for compatibility with v2.0.1\n        return this.readVarint(true);\n    }\n\n    readSVarint() {\n        const num = this.readVarint();\n        return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n    }\n\n    readBoolean() {\n        return Boolean(this.readVarint());\n    }\n\n    readString() {\n        const end = this.readVarint() + this.pos;\n        const pos = this.pos;\n        this.pos = end;\n\n        if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n            // longer strings are fast with the built-in browser TextDecoder API\n            return utf8TextDecoder.decode(this.buf.subarray(pos, end));\n        }\n        // short strings are fast with our custom implementation\n        return readUtf8(this.buf, pos, end);\n    }\n\n    readBytes() {\n        const end = this.readVarint() + this.pos,\n            buffer = this.buf.subarray(this.pos, end);\n        this.pos = end;\n        return buffer;\n    }\n\n    // verbose for performance reasons; doesn't affect gzipped size\n\n    /**\n     * @param {number[]} [arr]\n     * @param {boolean} [isSigned]\n     */\n    readPackedVarint(arr = [], isSigned) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readVarint(isSigned));\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedSVarint(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readSVarint());\n        return arr;\n    }\n    /** @param {boolean[]} [arr] */\n    readPackedBoolean(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readBoolean());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedFloat(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readFloat());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedDouble(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readDouble());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedFixed32(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readFixed32());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedSFixed32(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readSFixed32());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedFixed64(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readFixed64());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedSFixed64(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readSFixed64());\n        return arr;\n    }\n    readPackedEnd() {\n        return this.type === PBF_BYTES ? this.readVarint() + this.pos : this.pos + 1;\n    }\n\n    /** @param {number} val */\n    skip(val) {\n        const type = val & 0x7;\n        if (type === PBF_VARINT) while (this.buf[this.pos++] > 0x7f) {}\n        else if (type === PBF_BYTES) this.pos = this.readVarint() + this.pos;\n        else if (type === PBF_FIXED32) this.pos += 4;\n        else if (type === PBF_FIXED64) this.pos += 8;\n        else throw new Error(`Unimplemented type: ${type}`);\n    }\n\n    // === WRITING =================================================================\n\n    /**\n     * @param {number} tag\n     * @param {number} type\n     */\n    writeTag(tag, type) {\n        this.writeVarint((tag << 3) | type);\n    }\n\n    /** @param {number} min */\n    realloc(min) {\n        let length = this.length || 16;\n\n        while (length < this.pos + min) length *= 2;\n\n        if (length !== this.length) {\n            const buf = new Uint8Array(length);\n            buf.set(this.buf);\n            this.buf = buf;\n            this.dataView = new DataView(buf.buffer);\n            this.length = length;\n        }\n    }\n\n    finish() {\n        this.length = this.pos;\n        this.pos = 0;\n        return this.buf.subarray(0, this.length);\n    }\n\n    /** @param {number} val */\n    writeFixed32(val) {\n        this.realloc(4);\n        this.dataView.setInt32(this.pos, val, true);\n        this.pos += 4;\n    }\n\n    /** @param {number} val */\n    writeSFixed32(val) {\n        this.realloc(4);\n        this.dataView.setInt32(this.pos, val, true);\n        this.pos += 4;\n    }\n\n    /** @param {number} val */\n    writeFixed64(val) {\n        this.realloc(8);\n        this.dataView.setInt32(this.pos, val & -1, true);\n        this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n        this.pos += 8;\n    }\n\n    /** @param {number} val */\n    writeSFixed64(val) {\n        this.realloc(8);\n        this.dataView.setInt32(this.pos, val & -1, true);\n        this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n        this.pos += 8;\n    }\n\n    /** @param {number} val */\n    writeVarint(val) {\n        val = +val || 0;\n\n        if (val > 0xfffffff || val < 0) {\n            writeBigVarint(val, this);\n            return;\n        }\n\n        this.realloc(4);\n\n        this.buf[this.pos++] =           val & 0x7f  | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] =   (val >>> 7) & 0x7f;\n    }\n\n    /** @param {number} val */\n    writeSVarint(val) {\n        this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n    }\n\n    /** @param {boolean} val */\n    writeBoolean(val) {\n        this.writeVarint(+val);\n    }\n\n    /** @param {string} str */\n    writeString(str) {\n        str = String(str);\n        this.realloc(str.length * 4);\n\n        this.pos++; // reserve 1 byte for short string length\n\n        const startPos = this.pos;\n        // write the string directly to the buffer and see how much was written\n        this.pos = writeUtf8(this.buf, str, this.pos);\n        const len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    }\n\n    /** @param {number} val */\n    writeFloat(val) {\n        this.realloc(4);\n        this.dataView.setFloat32(this.pos, val, true);\n        this.pos += 4;\n    }\n\n    /** @param {number} val */\n    writeDouble(val) {\n        this.realloc(8);\n        this.dataView.setFloat64(this.pos, val, true);\n        this.pos += 8;\n    }\n\n    /** @param {Uint8Array} buffer */\n    writeBytes(buffer) {\n        const len = buffer.length;\n        this.writeVarint(len);\n        this.realloc(len);\n        for (let i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n    }\n\n    /**\n     * @template T\n     * @param {(obj: T, pbf: Pbf) => void} fn\n     * @param {T} obj\n     */\n    writeRawMessage(fn, obj) {\n        this.pos++; // reserve 1 byte for short message length\n\n        // write the message directly to the buffer and see how much was written\n        const startPos = this.pos;\n        fn(obj, this);\n        const len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    }\n\n    /**\n     * @template T\n     * @param {number} tag\n     * @param {(obj: T, pbf: Pbf) => void} fn\n     * @param {T} obj\n     */\n    writeMessage(tag, fn, obj) {\n        this.writeTag(tag, PBF_BYTES);\n        this.writeRawMessage(fn, obj);\n    }\n\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedVarint(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedVarint, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedSVarint(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedSVarint, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {boolean[]} arr\n     */\n    writePackedBoolean(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedBoolean, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedFloat(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedFloat, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedDouble(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedDouble, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedFixed32(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedFixed32, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedSFixed32(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedFixed64(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedFixed64, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedSFixed64(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr);\n    }\n\n    /**\n     * @param {number} tag\n     * @param {Uint8Array} buffer\n     */\n    writeBytesField(tag, buffer) {\n        this.writeTag(tag, PBF_BYTES);\n        this.writeBytes(buffer);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeFixed32Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED32);\n        this.writeFixed32(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeSFixed32Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED32);\n        this.writeSFixed32(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeFixed64Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED64);\n        this.writeFixed64(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeSFixed64Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED64);\n        this.writeSFixed64(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeVarintField(tag, val) {\n        this.writeTag(tag, PBF_VARINT);\n        this.writeVarint(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeSVarintField(tag, val) {\n        this.writeTag(tag, PBF_VARINT);\n        this.writeSVarint(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {string} str\n     */\n    writeStringField(tag, str) {\n        this.writeTag(tag, PBF_BYTES);\n        this.writeString(str);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeFloatField(tag, val) {\n        this.writeTag(tag, PBF_FIXED32);\n        this.writeFloat(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeDoubleField(tag, val) {\n        this.writeTag(tag, PBF_FIXED64);\n        this.writeDouble(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {boolean} val\n     */\n    writeBooleanField(tag, val) {\n        this.writeVarintField(tag, +val);\n    }\n};\n\n/**\n * @param {number} l\n * @param {boolean | undefined} s\n * @param {Pbf} p\n */\nfunction readVarintRemainder(l, s, p) {\n    const buf = p.buf;\n    let h, b;\n\n    b = buf[p.pos++]; h  = (b & 0x70) >> 4;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 3;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n    throw new Error('Expected varint not more than 10 bytes');\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {boolean} [isSigned]\n */\nfunction toNum(low, high, isSigned) {\n    return isSigned ? high * 0x100000000 + (low >>> 0) : ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\n/**\n * @param {number} val\n * @param {Pbf} pbf\n */\nfunction writeBigVarint(val, pbf) {\n    let low, high;\n\n    if (val >= 0) {\n        low  = (val % 0x100000000) | 0;\n        high = (val / 0x100000000) | 0;\n    } else {\n        low  = ~(-val % 0x100000000);\n        high = ~(-val / 0x100000000);\n\n        if (low ^ 0xffffffff) {\n            low = (low + 1) | 0;\n        } else {\n            low = 0;\n            high = (high + 1) | 0;\n        }\n    }\n\n    if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n        throw new Error('Given varint doesn\\'t fit into 10 bytes');\n    }\n\n    pbf.realloc(10);\n\n    writeBigVarintLow(low, high, pbf);\n    writeBigVarintHigh(high, pbf);\n}\n\n/**\n * @param {number} high\n * @param {number} low\n * @param {Pbf} pbf\n */\nfunction writeBigVarintLow(low, high, pbf) {\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos]   = low & 0x7f;\n}\n\n/**\n * @param {number} high\n * @param {Pbf} pbf\n */\nfunction writeBigVarintHigh(high, pbf) {\n    const lsb = (high & 0x07) << 4;\n\n    pbf.buf[pbf.pos++] |= lsb         | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f;\n}\n\n/**\n * @param {number} startPos\n * @param {number} len\n * @param {Pbf} pbf\n */\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n    const extraLen =\n        len <= 0x3fff ? 1 :\n        len <= 0x1fffff ? 2 :\n        len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n    // if 1 byte isn't enough for encoding message length, shift the data to the right\n    pbf.realloc(extraLen);\n    for (let i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedVarint(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSVarint(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFloat(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedDouble(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]);\n}\n/**\n * @param {boolean[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedBoolean(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed32(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed32(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed64(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed64(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]);\n}\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\n/**\n * @param {Uint8Array} buf\n * @param {number} pos\n * @param {number} end\n */\nfunction readUtf8(buf, pos, end) {\n    let str = '';\n    let i = pos;\n\n    while (i < end) {\n        const b0 = buf[i];\n        let c = null; // codepoint\n        let bytesPerSequence =\n            b0 > 0xEF ? 4 :\n            b0 > 0xDF ? 3 :\n            b0 > 0xBF ? 2 : 1;\n\n        if (i + bytesPerSequence > end) break;\n\n        let b1, b2, b3;\n\n        if (bytesPerSequence === 1) {\n            if (b0 < 0x80) {\n                c = b0;\n            }\n        } else if (bytesPerSequence === 2) {\n            b1 = buf[i + 1];\n            if ((b1 & 0xC0) === 0x80) {\n                c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n                if (c <= 0x7F) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 3) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n                if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 4) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            b3 = buf[i + 3];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n                if (c <= 0xFFFF || c >= 0x110000) {\n                    c = null;\n                }\n            }\n        }\n\n        if (c === null) {\n            c = 0xFFFD;\n            bytesPerSequence = 1;\n\n        } else if (c > 0xFFFF) {\n            c -= 0x10000;\n            str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n            c = 0xDC00 | c & 0x3FF;\n        }\n\n        str += String.fromCharCode(c);\n        i += bytesPerSequence;\n    }\n\n    return str;\n}\n\n/**\n * @param {Uint8Array} buf\n * @param {string} str\n * @param {number} pos\n */\nfunction writeUtf8(buf, str, pos) {\n    for (let i = 0, c, lead; i < str.length; i++) {\n        c = str.charCodeAt(i); // code point\n\n        if (c > 0xD7FF && c < 0xE000) {\n            if (lead) {\n                if (c < 0xDC00) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                    lead = c;\n                    continue;\n                } else {\n                    c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n                    lead = null;\n                }\n            } else {\n                if (c > 0xDBFF || (i + 1 === str.length)) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                } else {\n                    lead = c;\n                }\n                continue;\n            }\n        } else if (lead) {\n            buf[pos++] = 0xEF;\n            buf[pos++] = 0xBF;\n            buf[pos++] = 0xBD;\n            lead = null;\n        }\n\n        if (c < 0x80) {\n            buf[pos++] = c;\n        } else {\n            if (c < 0x800) {\n                buf[pos++] = c >> 0x6 | 0xC0;\n            } else {\n                if (c < 0x10000) {\n                    buf[pos++] = c >> 0xC | 0xE0;\n                } else {\n                    buf[pos++] = c >> 0x12 | 0xF0;\n                    buf[pos++] = c >> 0xC & 0x3F | 0x80;\n                }\n                buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n            }\n            buf[pos++] = c & 0x3F | 0x80;\n        }\n    }\n    return pos;\n}\n","/**\n * @module ol/format/MVT\n */\n//FIXME Implement projection handling\n\nimport PBF from 'pbf';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport {inflateEnds} from '../geom/flat/orient.js';\nimport Projection from '../proj/Projection.js';\nimport {get} from '../proj.js';\nimport RenderFeature from '../render/Feature.js';\nimport FeatureFormat, {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n * @typedef {Object} Options\n * @property {import('./Feature.js').FeatureToFeatureClass<FeatureType>} [featureClass] Class for features returned by\n * {@link module:ol/format/MVT~MVT#readFeatures}. Set to {@link module:ol/Feature~Feature} to get full editing and geometry\n * support at the cost of decreased rendering performance. The default is\n * {@link module:ol/render/Feature~RenderFeature}, which is optimized for rendering and hit detection.\n * @property {string} [geometryName='geometry'] Geometry name to use when creating features.\n * @property {string} [layerName='layer'] Name of the feature attribute that holds the layer name.\n * @property {Array<string>} [layers] Layers to read features from. If not provided, features will be read from all\n * @property {string} [idProperty] Optional property that will be assigned as the feature id and removed from the properties.\n * layers.\n */\n\n/**\n * @classdesc\n * Feature format for reading data in the Mapbox MVT format.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=RenderFeature]\n * @extends {FeatureFormat<FeatureType>}\n * @api\n */\nclass MVT extends FeatureFormat {\n  /**\n   * @param {Options<FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @type {Projection}\n     */\n    this.dataProjection = new Projection({\n      code: '',\n      units: 'tile-pixels',\n    });\n\n    this.featureClass = options.featureClass\n      ? options.featureClass\n      : /** @type {import('./Feature.js').FeatureToFeatureClass<FeatureType>} */ (\n          RenderFeature\n        );\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.geometryName_ = options.geometryName;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.layerName_ = options.layerName ? options.layerName : 'layer';\n\n    /**\n     * @private\n     * @type {Array<string>|null}\n     */\n    this.layers_ = options.layers ? options.layers : null;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.idProperty_ = options.idProperty;\n\n    this.supportedMediaTypes = [\n      'application/vnd.mapbox-vector-tile',\n      'application/x-protobuf',\n    ];\n  }\n\n  /**\n   * Read the raw geometry from the pbf offset stored in a raw feature's geometry\n   * property.\n   * @param {PBF} pbf PBF.\n   * @param {Object} feature Raw feature.\n   * @param {Array<number>} flatCoordinates Array to store flat coordinates in.\n   * @param {Array<number>} ends Array to store ends in.\n   * @private\n   */\n  readRawGeometry_(pbf, feature, flatCoordinates, ends) {\n    pbf.pos = feature.geometry;\n\n    const end = pbf.readVarint() + pbf.pos;\n    let cmd = 1;\n    let length = 0;\n    let x = 0;\n    let y = 0;\n    let coordsLen = 0;\n    let currentEnd = 0;\n\n    while (pbf.pos < end) {\n      if (!length) {\n        const cmdLen = pbf.readVarint();\n        cmd = cmdLen & 0x7;\n        length = cmdLen >> 3;\n      }\n\n      length--;\n\n      if (cmd === 1 || cmd === 2) {\n        x += pbf.readSVarint();\n        y += pbf.readSVarint();\n\n        if (cmd === 1) {\n          // moveTo\n          if (coordsLen > currentEnd) {\n            ends.push(coordsLen);\n            currentEnd = coordsLen;\n          }\n        }\n\n        flatCoordinates.push(x, y);\n        coordsLen += 2;\n      } else if (cmd === 7) {\n        if (coordsLen > currentEnd) {\n          // close polygon\n          flatCoordinates.push(\n            flatCoordinates[currentEnd],\n            flatCoordinates[currentEnd + 1],\n          );\n          coordsLen += 2;\n        }\n      } else {\n        throw new Error('Invalid command found in the PBF');\n      }\n    }\n\n    if (coordsLen > currentEnd) {\n      ends.push(coordsLen);\n      currentEnd = coordsLen;\n    }\n  }\n\n  /**\n   * @private\n   * @param {PBF} pbf PBF\n   * @param {Object} rawFeature Raw Mapbox feature.\n   * @param {import(\"./Feature.js\").ReadOptions} options Read options.\n   * @return {FeatureType|null} Feature.\n   */\n  createFeature_(pbf, rawFeature, options) {\n    const type = rawFeature.type;\n    if (type === 0) {\n      return null;\n    }\n\n    let feature;\n    const values = rawFeature.properties;\n\n    let id;\n    if (!this.idProperty_) {\n      id = rawFeature.id;\n    } else {\n      id = values[this.idProperty_];\n      delete values[this.idProperty_];\n    }\n\n    values[this.layerName_] = rawFeature.layer.name;\n\n    const flatCoordinates = /** @type {Array<number>} */ ([]);\n    const ends = /** @type {Array<number>} */ ([]);\n    this.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);\n\n    const geometryType = getGeometryType(type, ends.length);\n\n    if (this.featureClass === RenderFeature) {\n      feature =\n        new /** @type {import('./Feature.js').FeatureToFeatureClass<RenderFeature>} */ (\n          this.featureClass\n        )(geometryType, flatCoordinates, ends, 2, values, id);\n      feature.transform(options.dataProjection);\n    } else {\n      let geom;\n      if (geometryType == 'Polygon') {\n        const endss = inflateEnds(flatCoordinates, ends);\n        geom =\n          endss.length > 1\n            ? new MultiPolygon(flatCoordinates, 'XY', endss)\n            : new Polygon(flatCoordinates, 'XY', ends);\n      } else {\n        geom =\n          geometryType === 'Point'\n            ? new Point(flatCoordinates, 'XY')\n            : geometryType === 'LineString'\n              ? new LineString(flatCoordinates, 'XY')\n              : geometryType === 'MultiPoint'\n                ? new MultiPoint(flatCoordinates, 'XY')\n                : geometryType === 'MultiLineString'\n                  ? new MultiLineString(flatCoordinates, 'XY', ends)\n                  : null;\n      }\n      const ctor = /** @type {typeof import(\"../Feature.js\").default} */ (\n        this.featureClass\n      );\n      feature = new ctor();\n      if (this.geometryName_) {\n        feature.setGeometryName(this.geometryName_);\n      }\n      const geometry = transformGeometryWithOptions(geom, false, options);\n      feature.setGeometry(geometry);\n      if (id !== undefined) {\n        feature.setId(id);\n      }\n      feature.setProperties(values, true);\n    }\n\n    return /** @type {FeatureType} */ (feature);\n  }\n\n  /**\n   * @return {import(\"./Feature.js\").Type} Format.\n   * @override\n   */\n  getType() {\n    return 'arraybuffer';\n  }\n\n  /**\n   * Read all features.\n   *\n   * @param {ArrayBuffer} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   * @override\n   */\n  readFeatures(source, options) {\n    const layers = this.layers_;\n    options = this.adaptOptions(options);\n    const dataProjection = get(options.dataProjection);\n    dataProjection.setWorldExtent(options.extent);\n    options.dataProjection = dataProjection;\n\n    const pbf = new PBF(/** @type {ArrayBuffer} */ (source));\n    const pbfLayers = pbf.readFields(layersPBFReader, {});\n    const features = [];\n    for (const name in pbfLayers) {\n      if (layers && !layers.includes(name)) {\n        continue;\n      }\n      const pbfLayer = pbfLayers[name];\n\n      const extent = pbfLayer ? [0, 0, pbfLayer.extent, pbfLayer.extent] : null;\n      dataProjection.setExtent(extent);\n\n      for (let i = 0, ii = pbfLayer.length; i < ii; ++i) {\n        const rawFeature = readRawFeature(pbf, pbfLayer, i);\n        const feature = this.createFeature_(pbf, rawFeature, options);\n        if (feature !== null) {\n          features.push(feature);\n        }\n      }\n    }\n\n    return /** @type {Array<FeatureType>} */ (features);\n  }\n\n  /**\n   * Read the projection from the source.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @api\n   * @override\n   */\n  readProjection(source) {\n    return this.dataProjection;\n  }\n\n  /**\n   * Sets the layers that features will be read from.\n   * @param {Array<string>} layers Layers.\n   * @api\n   */\n  setLayers(layers) {\n    this.layers_ = layers;\n  }\n}\n\n/**\n * Reader callback for parsing layers.\n * @param {number} tag The tag.\n * @param {Object} layers The layers object.\n * @param {PBF} pbf The PBF.\n */\nfunction layersPBFReader(tag, layers, pbf) {\n  if (tag === 3) {\n    const layer = {\n      keys: [],\n      values: [],\n      features: [],\n    };\n    const end = pbf.readVarint() + pbf.pos;\n    pbf.readFields(layerPBFReader, layer, end);\n    layer.length = layer.features.length;\n    if (layer.length) {\n      layers[layer.name] = layer;\n    }\n  }\n}\n\n/**\n * Reader callback for parsing layer.\n * @param {number} tag The tag.\n * @param {Object} layer The layer object.\n * @param {PBF} pbf The PBF.\n */\nfunction layerPBFReader(tag, layer, pbf) {\n  if (tag === 15) {\n    layer.version = pbf.readVarint();\n  } else if (tag === 1) {\n    layer.name = pbf.readString();\n  } else if (tag === 5) {\n    layer.extent = pbf.readVarint();\n  } else if (tag === 2) {\n    layer.features.push(pbf.pos);\n  } else if (tag === 3) {\n    layer.keys.push(pbf.readString());\n  } else if (tag === 4) {\n    let value = null;\n    const end = pbf.readVarint() + pbf.pos;\n    while (pbf.pos < end) {\n      tag = pbf.readVarint() >> 3;\n      value =\n        tag === 1\n          ? pbf.readString()\n          : tag === 2\n            ? pbf.readFloat()\n            : tag === 3\n              ? pbf.readDouble()\n              : tag === 4\n                ? pbf.readVarint64()\n                : tag === 5\n                  ? pbf.readVarint()\n                  : tag === 6\n                    ? pbf.readSVarint()\n                    : tag === 7\n                      ? pbf.readBoolean()\n                      : null;\n    }\n    layer.values.push(value);\n  }\n}\n\n/**\n * Reader callback for parsing feature.\n * @param {number} tag The tag.\n * @param {Object} feature The feature object.\n * @param {PBF} pbf The PBF.\n */\nfunction featurePBFReader(tag, feature, pbf) {\n  if (tag == 1) {\n    feature.id = pbf.readVarint();\n  } else if (tag == 2) {\n    const end = pbf.readVarint() + pbf.pos;\n    while (pbf.pos < end) {\n      const key = feature.layer.keys[pbf.readVarint()];\n      const value = feature.layer.values[pbf.readVarint()];\n      feature.properties[key] = value;\n    }\n  } else if (tag == 3) {\n    feature.type = pbf.readVarint();\n  } else if (tag == 4) {\n    feature.geometry = pbf.pos;\n  }\n}\n\n/**\n * Read a raw feature from the pbf offset stored at index `i` in the raw layer.\n * @param {PBF} pbf PBF.\n * @param {Object} layer Raw layer.\n * @param {number} i Index of the feature in the raw layer's `features` array.\n * @return {Object} Raw feature.\n */\nfunction readRawFeature(pbf, layer, i) {\n  pbf.pos = layer.features[i];\n  const end = pbf.readVarint() + pbf.pos;\n\n  const feature = {\n    layer: layer,\n    type: 0,\n    properties: {},\n  };\n  pbf.readFields(featurePBFReader, feature, end);\n  return feature;\n}\n\n/**\n * @param {number} type The raw feature's geometry type\n * @param {number} numEnds Number of ends of the flat coordinates of the\n * geometry.\n * @return {import(\"../render/Feature.js\").Type} The geometry type.\n */\nfunction getGeometryType(type, numEnds) {\n  /** @type {import(\"../render/Feature.js\").Type} */\n  let geometryType;\n  if (type === 1) {\n    geometryType = numEnds === 1 ? 'Point' : 'MultiPoint';\n  } else if (type === 2) {\n    geometryType = numEnds === 1 ? 'LineString' : 'MultiLineString';\n  } else if (type === 3) {\n    geometryType = 'Polygon';\n    // MultiPolygon not relevant for rendering - winding order determines\n    // outer rings of polygons.\n  }\n  return geometryType;\n}\n\nexport default MVT;\n","/**\n * @module ol/format/GML32\n */\nimport {writeStringTextNode} from '../format/xsd.js';\nimport {\n  makeArrayExtender,\n  makeArrayPusher,\n  makeChildAppender,\n  makeReplacer,\n} from '../xml.js';\nimport GML2 from './GML2.js';\nimport GML3 from './GML3.js';\nimport GMLBase from './GMLBase.js';\n\n/**\n * @classdesc Feature format for reading and writing data in the GML format\n *            version 3.2.1.\n * @api\n */\nclass GML32 extends GML3 {\n  /**\n   * @param {import(\"./GMLBase.js\").Options} [options] Optional configuration object.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(options);\n\n    /**\n     * @type {string}\n     */\n    this.schemaLocation = options.schemaLocation\n      ? options.schemaLocation\n      : this.namespace + ' http://schemas.opengis.net/gml/3.2.1/gml.xsd';\n  }\n\n  /**\n   * @param {Node} node Node.\n   * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n   * @param {Array<*>} objectStack Node stack.\n   * @override\n   */\n  writeGeometryElement(node, geometry, objectStack) {\n    const context = objectStack[objectStack.length - 1];\n    objectStack[objectStack.length - 1] = Object.assign(\n      {multiCurve: true, multiSurface: true},\n      context,\n    );\n    super.writeGeometryElement(node, geometry, objectStack);\n  }\n}\n\nGML32.prototype.namespace = 'http://www.opengis.net/gml/3.2';\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'pos': makeReplacer(GML3.prototype.readFlatPos),\n    'posList': makeReplacer(GML3.prototype.readFlatPosList),\n    'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'interior': GML3.prototype.interiorParser,\n    'exterior': GML3.prototype.exteriorParser,\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.GEOMETRY_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'Point': makeReplacer(GMLBase.prototype.readPoint),\n    'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n    'LineString': makeReplacer(GMLBase.prototype.readLineString),\n    'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n    'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n    'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n    'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n    'Surface': makeReplacer(GML32.prototype.readSurface),\n    'MultiSurface': makeReplacer(GML3.prototype.readMultiSurface),\n    'Curve': makeReplacer(GML32.prototype.readCurve),\n    'MultiCurve': makeReplacer(GML3.prototype.readMultiCurve),\n    'Envelope': makeReplacer(GML32.prototype.readEnvelope),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.MULTICURVE_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'curveMember': makeArrayPusher(GML3.prototype.curveMemberParser),\n    'curveMembers': makeArrayPusher(GML3.prototype.curveMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.MULTISURFACE_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'surfaceMember': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n    'surfaceMembers': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.CURVEMEMBER_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n    'Curve': makeArrayPusher(GML3.prototype.readCurve),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.SURFACEMEMBER_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n    'Surface': makeArrayPusher(GML3.prototype.readSurface),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.SURFACE_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'patches': makeReplacer(GML3.prototype.readPatch),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.CURVE_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'segments': makeReplacer(GML3.prototype.readSegment),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.ENVELOPE_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'lowerCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n    'upperCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.PATCHES_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'PolygonPatch': makeReplacer(GML3.prototype.readPolygonPatch),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.SEGMENTS_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'LineStringSegment': makeArrayExtender(\n      GML3.prototype.readLineStringSegment,\n    ),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.MULTIPOINT_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n    'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.MULTILINESTRING_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'lineStringMember': makeArrayPusher(\n      GMLBase.prototype.lineStringMemberParser,\n    ),\n    'lineStringMembers': makeArrayPusher(\n      GMLBase.prototype.lineStringMemberParser,\n    ),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.MULTIPOLYGON_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n    'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.POINTMEMBER_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.LINESTRINGMEMBER_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.POLYGONMEMBER_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nGML32.prototype.RING_PARSERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n    'Ring': makeReplacer(GML32.prototype.readFlatCurveRing),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML32.prototype.RING_SERIALIZERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'exterior': makeChildAppender(GML3.prototype.writeRing),\n    'interior': makeChildAppender(GML3.prototype.writeRing),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML32.prototype.ENVELOPE_SERIALIZERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'lowerCorner': makeChildAppender(writeStringTextNode),\n    'upperCorner': makeChildAppender(writeStringTextNode),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML32.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'surfaceMember': makeChildAppender(\n      GML3.prototype.writeSurfaceOrPolygonMember,\n    ),\n    'polygonMember': makeChildAppender(\n      GML3.prototype.writeSurfaceOrPolygonMember,\n    ),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML32.prototype.POINTMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'pointMember': makeChildAppender(GML3.prototype.writePointMember),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML32.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'lineStringMember': makeChildAppender(\n      GML3.prototype.writeLineStringOrCurveMember,\n    ),\n    'curveMember': makeChildAppender(\n      GML3.prototype.writeLineStringOrCurveMember,\n    ),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nGML32.prototype.GEOMETRY_SERIALIZERS = {\n  'http://www.opengis.net/gml/3.2': {\n    'Curve': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n    'MultiCurve': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString),\n    'Point': makeChildAppender(GML32.prototype.writePoint),\n    'MultiPoint': makeChildAppender(GML3.prototype.writeMultiPoint),\n    'LineString': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n    'MultiLineString': makeChildAppender(\n      GML3.prototype.writeMultiCurveOrLineString,\n    ),\n    'LinearRing': makeChildAppender(GML3.prototype.writeLinearRing),\n    'Polygon': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n    'MultiPolygon': makeChildAppender(\n      GML3.prototype.writeMultiSurfaceOrPolygon,\n    ),\n    'Surface': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n    'MultiSurface': makeChildAppender(\n      GML3.prototype.writeMultiSurfaceOrPolygon,\n    ),\n    'Envelope': makeChildAppender(GML3.prototype.writeEnvelope),\n  },\n};\n\nexport default GML32;\n","/**\n * @module ol/format/filter/Filter\n */\n\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Base class for WFS GetFeature filters.\n *\n * @abstract\n */\nclass Filter {\n  /**\n   * @param {!string} tagName The XML tag name for this filter.\n   */\n  constructor(tagName) {\n    /**\n     * @private\n     * @type {!string}\n     */\n    this.tagName_ = tagName;\n  }\n\n  /**\n   * The XML tag name for a filter.\n   * @return {!string} Name.\n   */\n  getTagName() {\n    return this.tagName_;\n  }\n}\n\nexport default Filter;\n","/**\n * @module ol/format/filter/LogicalNary\n */\nimport {assert} from '../../asserts.js';\nimport Filter from './Filter.js';\n\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Base class for WFS GetFeature n-ary logical filters.\n *\n * @abstract\n */\nclass LogicalNary extends Filter {\n  /**\n   * @param {!string} tagName The XML tag name for this filter.\n   * @param {Array<import(\"./Filter.js\").default>} conditions Conditions.\n   */\n  constructor(tagName, conditions) {\n    super(tagName);\n\n    /**\n     * @type {Array<import(\"./Filter.js\").default>}\n     */\n    this.conditions = conditions;\n    assert(this.conditions.length >= 2, 'At least 2 conditions are required');\n  }\n}\n\nexport default LogicalNary;\n","/**\n * @module ol/format/filter/And\n */\nimport LogicalNary from './LogicalNary.js';\n\n/**\n * @classdesc\n * Represents a logical `<And>` operator between two or more filter conditions.\n *\n * @abstract\n */\nclass And extends LogicalNary {\n  /**\n   * @param {...import(\"./Filter.js\").default} conditions Conditions.\n   */\n  constructor(conditions) {\n    super('And', Array.prototype.slice.call(arguments));\n  }\n}\n\nexport default And;\n","/**\n * @module ol/format/filter/Bbox\n */\nimport Filter from './Filter.js';\n\n/**\n * @classdesc\n * Represents a `<BBOX>` operator to test whether a geometry-valued property\n * intersects a fixed bounding box\n *\n * @api\n */\nclass Bbox extends Filter {\n  /**\n   * @param {!string} geometryName Geometry name to use.\n   * @param {!import(\"../../extent.js\").Extent} extent Extent.\n   * @param {string} [srsName] SRS name. No srsName attribute will be set\n   * on geometries when this is not provided.\n   */\n  constructor(geometryName, extent, srsName) {\n    super('BBOX');\n\n    /**\n     * @type {!string}\n     */\n    this.geometryName = geometryName;\n\n    /**\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.extent = extent;\n    if (extent.length !== 4) {\n      throw new Error(\n        'Expected an extent with four values ([minX, minY, maxX, maxY])',\n      );\n    }\n\n    /**\n     * @type {string|undefined}\n     */\n    this.srsName = srsName;\n  }\n}\n\nexport default Bbox;\n","/**\n * @module ol/format/filter\n */\nimport And from './filter/And.js';\nimport Bbox from './filter/Bbox.js';\nimport Contains from './filter/Contains.js';\nimport DWithin from './filter/DWithin.js';\nimport Disjoint from './filter/Disjoint.js';\nimport During from './filter/During.js';\nimport EqualTo from './filter/EqualTo.js';\nimport GreaterThan from './filter/GreaterThan.js';\nimport GreaterThanOrEqualTo from './filter/GreaterThanOrEqualTo.js';\nimport Intersects from './filter/Intersects.js';\nimport IsBetween from './filter/IsBetween.js';\nimport IsLike from './filter/IsLike.js';\nimport IsNull from './filter/IsNull.js';\nimport LessThan from './filter/LessThan.js';\nimport LessThanOrEqualTo from './filter/LessThanOrEqualTo.js';\nimport Not from './filter/Not.js';\nimport NotEqualTo from './filter/NotEqualTo.js';\nimport Or from './filter/Or.js';\nimport ResourceId from './filter/ResourceId.js';\nimport Within from './filter/Within.js';\n\n/**\n * Create a logical `<And>` operator between two or more filter conditions.\n *\n * @param {...import(\"./filter/Filter.js\").default} conditions Filter conditions.\n * @return {!And} `<And>` operator.\n * @api\n */\nexport function and(conditions) {\n  const params = [null].concat(Array.prototype.slice.call(arguments));\n  return new (Function.prototype.bind.apply(And, params))();\n}\n\n/**\n * Create a logical `<Or>` operator between two or more filter conditions.\n *\n * @param {...import(\"./filter/Filter.js\").default} conditions Filter conditions.\n * @return {!Or} `<Or>` operator.\n * @api\n */\nexport function or(conditions) {\n  const params = [null].concat(Array.prototype.slice.call(arguments));\n  return new (Function.prototype.bind.apply(Or, params))();\n}\n\n/**\n * Represents a logical `<Not>` operator for a filter condition.\n *\n * @param {!import(\"./filter/Filter.js\").default} condition Filter condition.\n * @return {!Not} `<Not>` operator.\n * @api\n */\nexport function not(condition) {\n  return new Not(condition);\n}\n\n/**\n * Create a `<BBOX>` operator to test whether a geometry-valued property\n * intersects a fixed bounding box\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../extent.js\").Extent} extent Extent.\n * @param {string} [srsName] SRS name. No srsName attribute will be\n *    set on geometries when this is not provided.\n * @return {!Bbox} `<BBOX>` operator.\n * @api\n */\nexport function bbox(geometryName, extent, srsName) {\n  return new Bbox(geometryName, extent, srsName);\n}\n\n/**\n * Create a `<Contains>` operator to test whether a geometry-valued property\n * contains a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string} [srsName] SRS name. No srsName attribute will be\n *    set on geometries when this is not provided.\n * @return {!Contains} `<Contains>` operator.\n * @api\n */\nexport function contains(geometryName, geometry, srsName) {\n  return new Contains(geometryName, geometry, srsName);\n}\n\n/**\n * Create a `<Intersects>` operator to test whether a geometry-valued property\n * intersects a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string} [srsName] SRS name. No srsName attribute will be\n *    set on geometries when this is not provided.\n * @return {!Intersects} `<Intersects>` operator.\n * @api\n */\nexport function intersects(geometryName, geometry, srsName) {\n  return new Intersects(geometryName, geometry, srsName);\n}\n\n/**\n * Create a `<Disjoint>` operator to test whether a geometry-valued property\n * is disjoint to a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string} [srsName] SRS name. No srsName attribute will be\n *    set on geometries when this is not provided.\n * @return {!Disjoint} `<Disjoint>` operator.\n * @api\n */\nexport function disjoint(geometryName, geometry, srsName) {\n  return new Disjoint(geometryName, geometry, srsName);\n}\n\n/**\n * Create a `<Within>` operator to test whether a geometry-valued property\n * is within a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string} [srsName] SRS name. No srsName attribute will be\n *    set on geometries when this is not provided.\n * @return {!Within} `<Within>` operator.\n * @api\n */\nexport function within(geometryName, geometry, srsName) {\n  return new Within(geometryName, geometry, srsName);\n}\n\n/**\n * Create a `<DWithin>` operator to test whether a geometry-valued property\n * is within a distance to a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {!number} distance Distance.\n * @param {!string} unit Unit.\n * @param {string} [srsName] SRS name. No srsName attribute will be\n *    set on geometries when this is not provided.\n * @return {!DWithin} `<DWithin>` operator.\n * @api\n */\nexport function dwithin(geometryName, geometry, distance, unit, srsName) {\n  return new DWithin(geometryName, geometry, distance, unit, srsName);\n}\n\n/**\n * Creates a `<PropertyIsEqualTo>` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean} [matchCase] Case-sensitive?\n * @return {!EqualTo} `<PropertyIsEqualTo>` operator.\n * @api\n */\nexport function equalTo(propertyName, expression, matchCase) {\n  return new EqualTo(propertyName, expression, matchCase);\n}\n\n/**\n * Creates a `<PropertyIsNotEqualTo>` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean} [matchCase] Case-sensitive?\n * @return {!NotEqualTo} `<PropertyIsNotEqualTo>` operator.\n * @api\n */\nexport function notEqualTo(propertyName, expression, matchCase) {\n  return new NotEqualTo(propertyName, expression, matchCase);\n}\n\n/**\n * Creates a `<PropertyIsLessThan>` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @return {!LessThan} `<PropertyIsLessThan>` operator.\n * @api\n */\nexport function lessThan(propertyName, expression) {\n  return new LessThan(propertyName, expression);\n}\n\n/**\n * Creates a `<PropertyIsLessThanOrEqualTo>` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @return {!LessThanOrEqualTo} `<PropertyIsLessThanOrEqualTo>` operator.\n * @api\n */\nexport function lessThanOrEqualTo(propertyName, expression) {\n  return new LessThanOrEqualTo(propertyName, expression);\n}\n\n/**\n * Creates a `<PropertyIsGreaterThan>` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @return {!GreaterThan} `<PropertyIsGreaterThan>` operator.\n * @api\n */\nexport function greaterThan(propertyName, expression) {\n  return new GreaterThan(propertyName, expression);\n}\n\n/**\n * Creates a `<PropertyIsGreaterThanOrEqualTo>` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @return {!GreaterThanOrEqualTo} `<PropertyIsGreaterThanOrEqualTo>` operator.\n * @api\n */\nexport function greaterThanOrEqualTo(propertyName, expression) {\n  return new GreaterThanOrEqualTo(propertyName, expression);\n}\n\n/**\n * Creates a `<PropertyIsNull>` comparison operator to test whether a property value\n * is null.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @return {!IsNull} `<PropertyIsNull>` operator.\n * @api\n */\nexport function isNull(propertyName) {\n  return new IsNull(propertyName);\n}\n\n/**\n * Creates a `<PropertyIsBetween>` comparison operator to test whether an expression\n * value lies within a range given by a lower and upper bound (inclusive).\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} lowerBoundary The lower bound of the range.\n * @param {!number} upperBoundary The upper bound of the range.\n * @return {!IsBetween} `<PropertyIsBetween>` operator.\n * @api\n */\nexport function between(propertyName, lowerBoundary, upperBoundary) {\n  return new IsBetween(propertyName, lowerBoundary, upperBoundary);\n}\n\n/**\n * Represents a `<PropertyIsLike>` comparison operator that matches a string property\n * value against a text pattern.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!string} pattern Text pattern.\n * @param {string} [wildCard] Pattern character which matches any sequence of\n *    zero or more string characters. Default is '*'.\n * @param {string} [singleChar] pattern character which matches any single\n *    string character. Default is '.'.\n * @param {string} [escapeChar] Escape character which can be used to escape\n *    the pattern characters. Default is '!'.\n * @param {boolean} [matchCase] Case-sensitive?\n * @return {!IsLike} `<PropertyIsLike>` operator.\n * @api\n */\nexport function like(\n  propertyName,\n  pattern,\n  wildCard,\n  singleChar,\n  escapeChar,\n  matchCase,\n) {\n  return new IsLike(\n    propertyName,\n    pattern,\n    wildCard,\n    singleChar,\n    escapeChar,\n    matchCase,\n  );\n}\n\n/**\n * Create a `<During>` temporal operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!string} begin The begin date in ISO-8601 format.\n * @param {!string} end The end date in ISO-8601 format.\n * @return {!During} `<During>` operator.\n * @api\n */\nexport function during(propertyName, begin, end) {\n  return new During(propertyName, begin, end);\n}\n\nexport function resourceId(rid) {\n  return new ResourceId(rid);\n}\n","/**\n * @module ol/format/WFS\n */\nimport {assert} from '../asserts.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n  XML_SCHEMA_INSTANCE_URI,\n  createElementNS,\n  isDocument,\n  makeArrayPusher,\n  makeChildAppender,\n  makeObjectPropertySetter,\n  makeSimpleNodeFactory,\n  parse,\n  parseNode,\n  pushParseAndPop,\n  pushSerializeAndPop,\n} from '../xml.js';\nimport GML2 from './GML2.js';\nimport GML3 from './GML3.js';\nimport GML32 from './GML32.js';\nimport GMLBase, {GMLNS} from './GMLBase.js';\nimport XMLFeature from './XMLFeature.js';\nimport {and as andFilterFn, bbox as bboxFilterFn} from './filter.js';\nimport {\n  readNonNegativeIntegerString,\n  readPositiveInteger,\n  writeStringTextNode,\n} from './xsd.js';\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nconst FEATURE_COLLECTION_PARSERS = {\n  'http://www.opengis.net/gml': {\n    'boundedBy': makeObjectPropertySetter(\n      GMLBase.prototype.readExtentElement,\n      'bounds',\n    ),\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'member': makeArrayPusher(GMLBase.prototype.readFeaturesInternal),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nconst TRANSACTION_SUMMARY_PARSERS = {\n  'http://www.opengis.net/wfs': {\n    'totalInserted': makeObjectPropertySetter(readPositiveInteger),\n    'totalUpdated': makeObjectPropertySetter(readPositiveInteger),\n    'totalDeleted': makeObjectPropertySetter(readPositiveInteger),\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'totalInserted': makeObjectPropertySetter(readPositiveInteger),\n    'totalUpdated': makeObjectPropertySetter(readPositiveInteger),\n    'totalDeleted': makeObjectPropertySetter(readPositiveInteger),\n  },\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nconst TRANSACTION_RESPONSE_PARSERS = {\n  'http://www.opengis.net/wfs': {\n    'TransactionSummary': makeObjectPropertySetter(\n      readTransactionSummary,\n      'transactionSummary',\n    ),\n    'InsertResults': makeObjectPropertySetter(readInsertResults, 'insertIds'),\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'TransactionSummary': makeObjectPropertySetter(\n      readTransactionSummary,\n      'transactionSummary',\n    ),\n    'InsertResults': makeObjectPropertySetter(readInsertResults, 'insertIds'),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nconst QUERY_SERIALIZERS = {\n  'http://www.opengis.net/wfs': {\n    'PropertyName': makeChildAppender(writeStringTextNode),\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'PropertyName': makeChildAppender(writeStringTextNode),\n  },\n};\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nconst TRANSACTION_SERIALIZERS = {\n  'http://www.opengis.net/wfs': {\n    'Insert': makeChildAppender(writeFeature),\n    'Update': makeChildAppender(writeUpdate),\n    'Delete': makeChildAppender(writeDelete),\n    'Property': makeChildAppender(writeProperty),\n    'Native': makeChildAppender(writeNative),\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'Insert': makeChildAppender(writeFeature),\n    'Update': makeChildAppender(writeUpdate),\n    'Delete': makeChildAppender(writeDelete),\n    'Property': makeChildAppender(writeProperty),\n    'Native': makeChildAppender(writeNative),\n  },\n};\n\n/**\n * @typedef {Object} Options\n * @property {Object<string, string>|string} [featureNS] The namespace URI used for features.\n * @property {Array<string>|string} [featureType] The feature type to parse. Only used for read operations.\n * @property {GMLBase} [gmlFormat] The GML format to use to parse the response.\n * Default is `ol/format/GML2` for WFS 1.0.0, `ol/format/GML3` for WFS 1.1.0 and `ol/format/GML32` for WFS 2.0.0.\n * @property {string} [schemaLocation] Optional schemaLocation to use for serialization, this will override the default.\n * @property {string} [version='1.1.0'] WFS version to use. Can be either `1.0.0`, `1.1.0` or `2.0.0`.\n */\n\n/**\n * @typedef {Object} WriteGetFeatureOptions\n * @property {string} featureNS The namespace URI used for features.\n * @property {string} featurePrefix The prefix for the feature namespace.\n * @property {Array<string|FeatureType>} featureTypes The feature type names or FeatureType objects to\n * define a unique bbox filter per feature type name (in this case, options `bbox` and `geometryName` are\n * ignored.).\n * @property {string} [srsName] SRS name. No srsName attribute will be set on\n * geometries when this is not provided.\n * @property {string} [handle] Handle.\n * @property {string} [outputFormat] Output format.\n * @property {number} [maxFeatures] Maximum number of features to fetch.\n * @property {string} [geometryName] Geometry name to use in a BBOX filter.\n * @property {Array<string>} [propertyNames] Optional list of property names to serialize.\n * @property {string} [viewParams] viewParams GeoServer vendor parameter.\n * @property {number} [startIndex] Start index to use for WFS paging. This is a\n * WFS 2.0 feature backported to WFS 1.1.0 by some Web Feature Services.\n * @property {number} [count] Number of features to retrieve when paging. This is a\n * WFS 2.0 feature backported to WFS 1.1.0 by some Web Feature Services. Please note that some\n * Web Feature Services have repurposed `maxfeatures` instead.\n * @property {import(\"../extent.js\").Extent} [bbox] Extent to use for the BBOX filter. The `geometryName`\n * option must be set.\n * @property {import(\"./filter/Filter.js\").default} [filter] Filter condition. See\n * {@link module:ol/format/filter} for more information.\n * @property {string} [resultType] Indicates what response should be returned,\n * e.g. `hits` only includes the `numberOfFeatures` attribute in the response and no features.\n */\n\n/**\n * @typedef {Object} FeatureType\n * @property {!string} name The feature type name.\n * @property {!import(\"../extent.js\").Extent} bbox Extent to use for the BBOX filter.\n * @property {!string} geometryName Geometry name to use in the BBOX filter.\n */\n\n/**\n * @typedef {Object} WriteTransactionOptions\n * @property {string} featureNS The namespace URI used for features.\n * @property {string} featurePrefix The prefix for the feature namespace.\n * @property {string} featureType The feature type name.\n * @property {string} [srsName] SRS name. No srsName attribute will be set on\n * geometries when this is not provided.\n * @property {string} [handle] Handle.\n * @property {boolean} [hasZ] Must be set to true if the transaction is for\n * a 3D layer. This will allow the Z coordinate to be included in the transaction.\n * @property {Array<Object>} nativeElements Native elements. Currently not supported.\n * @property {import(\"./GMLBase.js\").Options} [gmlOptions] GML options for the WFS transaction writer.\n * @property {string} [version='1.1.0'] WFS version to use for the transaction. Can be either `1.0.0`, `1.1.0` or `2.0.0`.\n */\n\n/**\n * Number of features; bounds/extent.\n * @typedef {Object} FeatureCollectionMetadata\n * @property {number} numberOfFeatures NumberOfFeatures.\n * @property {import(\"../extent.js\").Extent} bounds Bounds.\n */\n\n/**\n * @typedef {Object} TransactionSummary\n * @property {number} totalDeleted TotalDeleted.\n * @property {number} totalInserted TotalInserted.\n * @property {number} totalUpdated TotalUpdated.\n */\n\n/**\n * Total deleted; total inserted; total updated; array of insert ids.\n * @typedef {Object} TransactionResponse\n * @property {TransactionSummary} transactionSummary Transaction summary.\n * @property {Array<string>} insertIds InsertIds.\n */\n\n/**\n * @type {string}\n */\nconst FEATURE_PREFIX = 'feature';\n\n/**\n * @type {string}\n */\nconst XMLNS = 'http://www.w3.org/2000/xmlns/';\n\n/**\n * @type {Object<string, string>}\n */\nconst OGCNS = {\n  '2.0.0': 'http://www.opengis.net/ogc/1.1',\n  '1.1.0': 'http://www.opengis.net/ogc',\n  '1.0.0': 'http://www.opengis.net/ogc',\n};\n\n/**\n * @type {Object<string, string>}\n */\nconst WFSNS = {\n  '2.0.0': 'http://www.opengis.net/wfs/2.0',\n  '1.1.0': 'http://www.opengis.net/wfs',\n  '1.0.0': 'http://www.opengis.net/wfs',\n};\n\n/**\n * @type {Object<string, string>}\n */\nconst FESNS = {\n  '2.0.0': 'http://www.opengis.net/fes/2.0',\n  '1.1.0': 'http://www.opengis.net/fes',\n  '1.0.0': 'http://www.opengis.net/fes',\n};\n\n/**\n * @type {Object<string, string>}\n */\nconst SCHEMA_LOCATIONS = {\n  '2.0.0':\n    'http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd',\n  '1.1.0':\n    'http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd',\n  '1.0.0':\n    'http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd',\n};\n\n/**\n * @type {Object<string, object>}\n */\nconst GML_FORMATS = {\n  '2.0.0': GML32,\n  '1.1.0': GML3,\n  '1.0.0': GML2,\n};\n\n/**\n * @const\n * @type {string}\n */\nconst DEFAULT_VERSION = '1.1.0';\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the WFS format.\n * By default, supports WFS version 1.1.0. You can pass a GML format\n * as option to override the default.\n * Also see {@link module:ol/format/GMLBase~GMLBase} which is used by this format.\n *\n * @api\n */\nclass WFS extends XMLFeature {\n  /**\n   * @param {Options} [options] Optional configuration object.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.version_ = options.version ? options.version : DEFAULT_VERSION;\n\n    /**\n     * @private\n     * @type {Array<string>|string|undefined}\n     */\n    this.featureType_ = options.featureType;\n\n    /**\n     * @private\n     * @type {Object<string, string>|string|undefined}\n     */\n    this.featureNS_ = options.featureNS;\n\n    /**\n     * @private\n     * @type {GMLBase}\n     */\n    this.gmlFormat_ = options.gmlFormat\n      ? options.gmlFormat\n      : new GML_FORMATS[this.version_]();\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.schemaLocation_ = options.schemaLocation\n      ? options.schemaLocation\n      : SCHEMA_LOCATIONS[this.version_];\n  }\n\n  /**\n   * @return {Array<string>|string|undefined} featureType\n   */\n  getFeatureType() {\n    return this.featureType_;\n  }\n\n  /**\n   * @param {Array<string>|string|undefined} featureType Feature type(s) to parse.\n   */\n  setFeatureType(featureType) {\n    this.featureType_ = featureType;\n  }\n\n  /**\n   * @protected\n   * @param {Element} node Node.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n   * @return {Array<import(\"../Feature.js\").default>} Features.\n   * @override\n   */\n  readFeaturesFromNode(node, options) {\n    /** @type {import(\"../xml.js\").NodeStackItem} */\n    const context = {\n      node,\n    };\n    Object.assign(context, {\n      'featureType': this.featureType_,\n      'featureNS': this.featureNS_,\n    });\n\n    Object.assign(context, this.getReadOptions(node, options ? options : {}));\n    const objectStack = [context];\n    let featuresNS;\n    if (this.version_ === '2.0.0') {\n      featuresNS = FEATURE_COLLECTION_PARSERS;\n    } else {\n      featuresNS = this.gmlFormat_.FEATURE_COLLECTION_PARSERS;\n    }\n    let features = pushParseAndPop(\n      [],\n      featuresNS,\n      node,\n      objectStack,\n      this.gmlFormat_,\n    );\n    if (!features) {\n      features = [];\n    }\n    return features;\n  }\n\n  /**\n   * Read transaction response of the source.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @return {TransactionResponse|undefined} Transaction response.\n   * @api\n   */\n  readTransactionResponse(source) {\n    if (!source) {\n      return undefined;\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readTransactionResponseFromDocument(doc);\n    }\n    if (isDocument(source)) {\n      return this.readTransactionResponseFromDocument(\n        /** @type {Document} */ (source),\n      );\n    }\n    return this.readTransactionResponseFromNode(\n      /** @type {Element} */ (source),\n    );\n  }\n\n  /**\n   * Read feature collection metadata of the source.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @return {FeatureCollectionMetadata|undefined}\n   *     FeatureCollection metadata.\n   * @api\n   */\n  readFeatureCollectionMetadata(source) {\n    if (!source) {\n      return undefined;\n    }\n    if (typeof source === 'string') {\n      const doc = parse(source);\n      return this.readFeatureCollectionMetadataFromDocument(doc);\n    }\n    if (isDocument(source)) {\n      return this.readFeatureCollectionMetadataFromDocument(\n        /** @type {Document} */ (source),\n      );\n    }\n    return this.readFeatureCollectionMetadataFromNode(\n      /** @type {Element} */ (source),\n    );\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @return {FeatureCollectionMetadata|undefined}\n   *     FeatureCollection metadata.\n   */\n  readFeatureCollectionMetadataFromDocument(doc) {\n    for (let n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {\n      if (n.nodeType == Node.ELEMENT_NODE) {\n        return this.readFeatureCollectionMetadataFromNode(\n          /** @type {Element} */ (n),\n        );\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {FeatureCollectionMetadata|undefined}\n   *     FeatureCollection metadata.\n   */\n  readFeatureCollectionMetadataFromNode(node) {\n    const result = {};\n    const value = readNonNegativeIntegerString(\n      node.getAttribute('numberOfFeatures'),\n    );\n    result['numberOfFeatures'] = value;\n    return pushParseAndPop(\n      /** @type {FeatureCollectionMetadata} */ (result),\n      FEATURE_COLLECTION_PARSERS,\n      node,\n      [],\n      this.gmlFormat_,\n    );\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @return {TransactionResponse|undefined} Transaction response.\n   */\n  readTransactionResponseFromDocument(doc) {\n    for (let n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {\n      if (n.nodeType == Node.ELEMENT_NODE) {\n        return this.readTransactionResponseFromNode(/** @type {Element} */ (n));\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {TransactionResponse|undefined} Transaction response.\n   */\n  readTransactionResponseFromNode(node) {\n    return pushParseAndPop(\n      /** @type {TransactionResponse} */ ({}),\n      TRANSACTION_RESPONSE_PARSERS,\n      node,\n      [],\n    );\n  }\n\n  /**\n   * Encode format as WFS `GetFeature` and return the Node.\n   *\n   * @param {WriteGetFeatureOptions} options Options.\n   * @return {Node} Result.\n   * @api\n   */\n  writeGetFeature(options) {\n    const node = createElementNS(WFSNS[this.version_], 'GetFeature');\n    node.setAttribute('service', 'WFS');\n    node.setAttribute('version', this.version_);\n    if (options.handle) {\n      node.setAttribute('handle', options.handle);\n    }\n    if (options.outputFormat) {\n      node.setAttribute('outputFormat', options.outputFormat);\n    }\n    if (options.maxFeatures !== undefined) {\n      node.setAttribute('maxFeatures', String(options.maxFeatures));\n    }\n    if (options.resultType) {\n      node.setAttribute('resultType', options.resultType);\n    }\n    if (options.startIndex !== undefined) {\n      node.setAttribute('startIndex', String(options.startIndex));\n    }\n    if (options.count !== undefined) {\n      node.setAttribute('count', String(options.count));\n    }\n    if (options.viewParams !== undefined) {\n      node.setAttribute('viewParams', options.viewParams);\n    }\n    node.setAttributeNS(\n      XML_SCHEMA_INSTANCE_URI,\n      'xsi:schemaLocation',\n      this.schemaLocation_,\n    );\n    /** @type {import(\"../xml.js\").NodeStackItem} */\n    const context = {\n      node,\n    };\n    Object.assign(context, {\n      'version': this.version_,\n      'srsName': options.srsName,\n      'featureNS': options.featureNS ? options.featureNS : this.featureNS_,\n      'featurePrefix': options.featurePrefix,\n      'propertyNames': options.propertyNames ? options.propertyNames : [],\n    });\n    assert(\n      Array.isArray(options.featureTypes),\n      '`options.featureTypes` must be an Array',\n    );\n    if (typeof options.featureTypes[0] === 'string') {\n      let filter = options.filter;\n      if (options.bbox) {\n        assert(\n          options.geometryName,\n          '`options.geometryName` must also be provided when `options.bbox` is set',\n        );\n        filter = this.combineBboxAndFilter(\n          options.geometryName,\n          options.bbox,\n          options.srsName,\n          filter,\n        );\n      }\n      Object.assign(context, {\n        'geometryName': options.geometryName,\n        'filter': filter,\n      });\n      writeGetFeature(\n        node,\n        /** @type {!Array<string>} */ (options.featureTypes),\n        [context],\n      );\n    } else {\n      // Write one query node per element in featuresType.\n      options.featureTypes.forEach((/** @type {FeatureType} */ featureType) => {\n        const completeFilter = this.combineBboxAndFilter(\n          featureType.geometryName,\n          featureType.bbox,\n          options.srsName,\n          options.filter,\n        );\n        Object.assign(context, {\n          'geometryName': featureType.geometryName,\n          'filter': completeFilter,\n        });\n        writeGetFeature(node, [featureType.name], [context]);\n      });\n    }\n    return node;\n  }\n\n  /**\n   * Create a bbox filter and combine it with another optional filter.\n   *\n   * @param {!string} geometryName Geometry name to use.\n   * @param {!import(\"../extent.js\").Extent} extent Extent.\n   * @param {string} [srsName] SRS name. No srsName attribute will be\n   *    set on geometries when this is not provided.\n   * @param {import(\"./filter/Filter.js\").default} [filter] Filter condition.\n   * @return {import(\"./filter/Filter.js\").default} The filter.\n   */\n  combineBboxAndFilter(geometryName, extent, srsName, filter) {\n    const bboxFilter = bboxFilterFn(geometryName, extent, srsName);\n    if (filter) {\n      // if bbox and filter are both set, combine the two into a single filter\n      return andFilterFn(filter, bboxFilter);\n    }\n    return bboxFilter;\n  }\n\n  /**\n   * Encode format as WFS `Transaction` and return the Node.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} inserts The features to insert.\n   * @param {Array<import(\"../Feature.js\").default>} updates The features to update.\n   * @param {Array<import(\"../Feature.js\").default>} deletes The features to delete.\n   * @param {WriteTransactionOptions} options Write options.\n   * @return {Node} Result.\n   * @api\n   */\n  writeTransaction(inserts, updates, deletes, options) {\n    const objectStack = [];\n    const version = options.version ? options.version : this.version_;\n    const node = createElementNS(WFSNS[version], 'Transaction');\n\n    node.setAttribute('service', 'WFS');\n    node.setAttribute('version', version);\n    let baseObj;\n    /** @type {import(\"../xml.js\").NodeStackItem} */\n    if (options) {\n      baseObj = options.gmlOptions ? options.gmlOptions : {};\n      if (options.handle) {\n        node.setAttribute('handle', options.handle);\n      }\n    }\n    node.setAttributeNS(\n      XML_SCHEMA_INSTANCE_URI,\n      'xsi:schemaLocation',\n      SCHEMA_LOCATIONS[version],\n    );\n\n    const request = createTransactionRequest(node, baseObj, version, options);\n    if (inserts) {\n      serializeTransactionRequest('Insert', inserts, objectStack, request);\n    }\n    if (updates) {\n      serializeTransactionRequest('Update', updates, objectStack, request);\n    }\n    if (deletes) {\n      serializeTransactionRequest('Delete', deletes, objectStack, request);\n    }\n    if (options.nativeElements) {\n      serializeTransactionRequest(\n        'Native',\n        options.nativeElements,\n        objectStack,\n        request,\n      );\n    }\n    return node;\n  }\n\n  /**\n   * @param {Document} doc Document.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @override\n   */\n  readProjectionFromDocument(doc) {\n    for (let n = doc.firstChild; n; n = n.nextSibling) {\n      if (n.nodeType == Node.ELEMENT_NODE) {\n        return this.readProjectionFromNode(/** @type {Element} */ (n));\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @override\n   */\n  readProjectionFromNode(node) {\n    if (node.firstElementChild && node.firstElementChild.firstElementChild) {\n      node = node.firstElementChild.firstElementChild;\n      for (let n = node.firstElementChild; n; n = n.nextElementSibling) {\n        if (\n          !(\n            n.childNodes.length === 0 ||\n            (n.childNodes.length === 1 && n.firstChild.nodeType === 3)\n          )\n        ) {\n          const objectStack = [{}];\n          this.gmlFormat_.readGeometryElement(n, objectStack);\n          return getProjection(objectStack.pop().srsName);\n        }\n      }\n    }\n\n    return null;\n  }\n}\n\n/**\n * @param {Element} node Node.\n * @param {*} baseObj Base object.\n * @param {string} version Version.\n * @param {WriteTransactionOptions} options Options.\n * @return {Object} Request object.\n */\nfunction createTransactionRequest(node, baseObj, version, options) {\n  const featurePrefix = options.featurePrefix\n    ? options.featurePrefix\n    : FEATURE_PREFIX;\n  let gmlVersion;\n  if (version === '1.0.0') {\n    gmlVersion = 2;\n  } else if (version === '1.1.0') {\n    gmlVersion = 3;\n  } else if (version === '2.0.0') {\n    gmlVersion = 3.2;\n  }\n  const obj = Object.assign(\n    {node},\n    {\n      version,\n      'featureNS': options.featureNS,\n      'featureType': options.featureType,\n      'featurePrefix': featurePrefix,\n      'gmlVersion': gmlVersion,\n      'hasZ': options.hasZ,\n      'srsName': options.srsName,\n    },\n    baseObj,\n  );\n  return obj;\n}\n\n/**\n * @param {string} type Request type.\n * @param {Array<import(\"../Feature.js\").default>} features Features.\n * @param {Array<*>} objectStack Object stack.\n * @param {Element} request Transaction Request.\n */\nfunction serializeTransactionRequest(type, features, objectStack, request) {\n  pushSerializeAndPop(\n    request,\n    TRANSACTION_SERIALIZERS,\n    makeSimpleNodeFactory(type),\n    features,\n    objectStack,\n  );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Transaction Summary.\n */\nfunction readTransactionSummary(node, objectStack) {\n  return pushParseAndPop({}, TRANSACTION_SUMMARY_PARSERS, node, objectStack);\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nconst OGC_FID_PARSERS = {\n  'http://www.opengis.net/ogc': {\n    'FeatureId': makeArrayPusher(function (node, objectStack) {\n      return node.getAttribute('fid');\n    }),\n  },\n  'http://www.opengis.net/ogc/1.1': {\n    'FeatureId': makeArrayPusher(function (node, objectStack) {\n      return node.getAttribute('fid');\n    }),\n  },\n};\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction fidParser(node, objectStack) {\n  parseNode(OGC_FID_PARSERS, node, objectStack);\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\nconst INSERT_RESULTS_PARSERS = {\n  'http://www.opengis.net/wfs': {\n    'Feature': fidParser,\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'Feature': fidParser,\n  },\n};\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<string>|undefined} Insert results.\n */\nfunction readInsertResults(node, objectStack) {\n  return pushParseAndPop([], INSERT_RESULTS_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeFeature(node, feature, objectStack) {\n  const context = objectStack[objectStack.length - 1];\n  const featureType = context['featureType'];\n  const featureNS = context['featureNS'];\n  const gmlVersion = context['gmlVersion'];\n  const child = createElementNS(featureNS, featureType);\n  node.appendChild(child);\n  if (gmlVersion === 2) {\n    GML2.prototype.writeFeatureElement(child, feature, objectStack);\n  } else if (gmlVersion === 3) {\n    GML3.prototype.writeFeatureElement(child, feature, objectStack);\n  } else {\n    GML32.prototype.writeFeatureElement(child, feature, objectStack);\n  }\n}\n\n/**\n * @param {Node} node Node.\n * @param {number|string} fid Feature identifier.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeOgcFidFilter(node, fid, objectStack) {\n  const context = objectStack[objectStack.length - 1];\n  const version = context['version'];\n  const ns = OGCNS[version];\n  const filter = createElementNS(ns, 'Filter');\n  const child = createElementNS(ns, 'FeatureId');\n  filter.appendChild(child);\n  child.setAttribute('fid', /** @type {string} */ (fid));\n  node.appendChild(filter);\n}\n\n/**\n * @param {string|undefined} featurePrefix The prefix of the feature.\n * @param {string} featureType The type of the feature.\n * @return {string} The value of the typeName property.\n */\nfunction getTypeName(featurePrefix, featureType) {\n  featurePrefix = featurePrefix ? featurePrefix : FEATURE_PREFIX;\n  const prefix = featurePrefix + ':';\n  // The featureType already contains the prefix.\n  if (featureType.startsWith(prefix)) {\n    return featureType;\n  }\n  return prefix + featureType;\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeDelete(node, feature, objectStack) {\n  const context = objectStack[objectStack.length - 1];\n  assert(feature.getId() !== undefined, 'Features must have an id set');\n  const featureType = context['featureType'];\n  const featurePrefix = context['featurePrefix'];\n  const featureNS = context['featureNS'];\n  const typeName = getTypeName(featurePrefix, featureType);\n  node.setAttribute('typeName', typeName);\n  node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);\n  const fid = feature.getId();\n  if (fid !== undefined) {\n    writeOgcFidFilter(node, fid, objectStack);\n  }\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeUpdate(node, feature, objectStack) {\n  const context = objectStack[objectStack.length - 1];\n  assert(feature.getId() !== undefined, 'Features must have an id set');\n  const version = context['version'];\n  const featureType = context['featureType'];\n  const featurePrefix = context['featurePrefix'];\n  const featureNS = context['featureNS'];\n  const typeName = getTypeName(featurePrefix, featureType);\n  const geometryName = feature.getGeometryName();\n  node.setAttribute('typeName', typeName);\n  node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);\n  const fid = feature.getId();\n  if (fid !== undefined) {\n    const keys = feature.getKeys();\n    const values = [];\n    for (let i = 0, ii = keys.length; i < ii; i++) {\n      const value = feature.get(keys[i]);\n      if (value !== undefined) {\n        let name = keys[i];\n        if (\n          value &&\n          typeof (/** @type {?} */ (value).getSimplifiedGeometry) === 'function'\n        ) {\n          name = geometryName;\n        }\n        values.push({name: name, value: value});\n      }\n    }\n    pushSerializeAndPop(\n      /** @type {import(\"../xml.js\").NodeStackItem} */ ({\n        version,\n        'gmlVersion': context['gmlVersion'],\n        node,\n        'hasZ': context['hasZ'],\n        'srsName': context['srsName'],\n      }),\n      TRANSACTION_SERIALIZERS,\n      makeSimpleNodeFactory('Property'),\n      values,\n      objectStack,\n    );\n    writeOgcFidFilter(node, fid, objectStack);\n  }\n}\n\n/**\n * @param {Node} node Node.\n * @param {Object} pair Property name and value.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeProperty(node, pair, objectStack) {\n  const context = objectStack[objectStack.length - 1];\n  const version = context['version'];\n  const ns = WFSNS[version];\n  const tagName = version === '2.0.0' ? 'ValueReference' : 'Name';\n  const name = createElementNS(ns, tagName);\n  const gmlVersion = context['gmlVersion'];\n  node.appendChild(name);\n  writeStringTextNode(name, pair.name);\n  if (pair.value !== undefined && pair.value !== null) {\n    const value = createElementNS(ns, 'Value');\n    node.appendChild(value);\n    if (\n      pair.value &&\n      typeof (/** @type {?} */ (pair.value).getSimplifiedGeometry) ===\n        'function'\n    ) {\n      if (gmlVersion === 2) {\n        GML2.prototype.writeGeometryElement(value, pair.value, objectStack);\n      } else if (gmlVersion === 3) {\n        GML3.prototype.writeGeometryElement(value, pair.value, objectStack);\n      } else {\n        GML32.prototype.writeGeometryElement(value, pair.value, objectStack);\n      }\n    } else {\n      writeStringTextNode(value, pair.value);\n    }\n  }\n}\n\n/**\n * @param {Element} node Node.\n * @param {{vendorId: string, safeToIgnore: boolean, value: string}} nativeElement The native element.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeNative(node, nativeElement, objectStack) {\n  if (nativeElement.vendorId) {\n    node.setAttribute('vendorId', nativeElement.vendorId);\n  }\n  if (nativeElement.safeToIgnore !== undefined) {\n    node.setAttribute('safeToIgnore', String(nativeElement.safeToIgnore));\n  }\n  if (nativeElement.value !== undefined) {\n    writeStringTextNode(node, nativeElement.value);\n  }\n}\n\n/**\n * @type {Object<string, Object<string, import(\"../xml.js\").Serializer>>}\n */\nconst GETFEATURE_SERIALIZERS = {\n  'http://www.opengis.net/wfs': {\n    'Query': makeChildAppender(writeQuery),\n  },\n  'http://www.opengis.net/wfs/2.0': {\n    'Query': makeChildAppender(writeQuery),\n  },\n  'http://www.opengis.net/ogc': {\n    'During': makeChildAppender(writeDuringFilter),\n    'And': makeChildAppender(writeLogicalFilter),\n    'Or': makeChildAppender(writeLogicalFilter),\n    'Not': makeChildAppender(writeNotFilter),\n    'BBOX': makeChildAppender(writeBboxFilter),\n    'Contains': makeChildAppender(writeSpatialFilter),\n    'Intersects': makeChildAppender(writeSpatialFilter),\n    'Within': makeChildAppender(writeSpatialFilter),\n    'DWithin': makeChildAppender(writeDWithinFilter),\n    'PropertyIsEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsNotEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsLessThan': makeChildAppender(writeComparisonFilter),\n    'PropertyIsLessThanOrEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsGreaterThan': makeChildAppender(writeComparisonFilter),\n    'PropertyIsGreaterThanOrEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsNull': makeChildAppender(writeIsNullFilter),\n    'PropertyIsBetween': makeChildAppender(writeIsBetweenFilter),\n    'PropertyIsLike': makeChildAppender(writeIsLikeFilter),\n  },\n  'http://www.opengis.net/fes/2.0': {\n    'During': makeChildAppender(writeDuringFilter),\n    'And': makeChildAppender(writeLogicalFilter),\n    'Or': makeChildAppender(writeLogicalFilter),\n    'Not': makeChildAppender(writeNotFilter),\n    'BBOX': makeChildAppender(writeBboxFilter),\n    'Contains': makeChildAppender(writeSpatialFilter),\n    'Disjoint': makeChildAppender(writeSpatialFilter),\n    'Intersects': makeChildAppender(writeSpatialFilter),\n    'ResourceId': makeChildAppender(writeResourceIdFilter),\n    'Within': makeChildAppender(writeSpatialFilter),\n    'DWithin': makeChildAppender(writeDWithinFilter),\n    'PropertyIsEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsNotEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsLessThan': makeChildAppender(writeComparisonFilter),\n    'PropertyIsLessThanOrEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsGreaterThan': makeChildAppender(writeComparisonFilter),\n    'PropertyIsGreaterThanOrEqualTo': makeChildAppender(writeComparisonFilter),\n    'PropertyIsNull': makeChildAppender(writeIsNullFilter),\n    'PropertyIsBetween': makeChildAppender(writeIsBetweenFilter),\n    'PropertyIsLike': makeChildAppender(writeIsLikeFilter),\n  },\n};\n\n/**\n * @param {Element} node Node.\n * @param {string} featureType Feature type.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeQuery(node, featureType, objectStack) {\n  const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const version = context['version'];\n  const featurePrefix = context['featurePrefix'];\n  const featureNS = context['featureNS'];\n  const propertyNames = context['propertyNames'];\n  const srsName = context['srsName'];\n  let typeName;\n  // If feature prefix is not defined, we must not use the default prefix.\n  if (featurePrefix) {\n    typeName = getTypeName(featurePrefix, featureType);\n  } else {\n    typeName = featureType;\n  }\n  let typeNameAttr;\n  if (version === '2.0.0') {\n    typeNameAttr = 'typeNames';\n  } else {\n    typeNameAttr = 'typeName';\n  }\n  node.setAttribute(typeNameAttr, typeName);\n  if (srsName) {\n    node.setAttribute('srsName', srsName);\n  }\n  if (featureNS) {\n    node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);\n  }\n  const item = /** @type {import(\"../xml.js\").NodeStackItem} */ (\n    Object.assign({}, context)\n  );\n  item.node = node;\n  pushSerializeAndPop(\n    item,\n    QUERY_SERIALIZERS,\n    makeSimpleNodeFactory('PropertyName'),\n    propertyNames,\n    objectStack,\n  );\n  const filter = context['filter'];\n  if (filter) {\n    const child = createElementNS(getFilterNS(version), 'Filter');\n    node.appendChild(child);\n    writeFilterCondition(child, filter, objectStack);\n  }\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/Filter.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeFilterCondition(node, filter, objectStack) {\n  const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  /** @type {import(\"../xml.js\").NodeStackItem} */\n  const item = {node};\n  Object.assign(item, {context});\n  pushSerializeAndPop(\n    item,\n    GETFEATURE_SERIALIZERS,\n    makeSimpleNodeFactory(filter.getTagName()),\n    [filter],\n    objectStack,\n  );\n}\n\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Bbox.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeBboxFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  parent['srsName'] = filter.srsName;\n  const format = GML_FORMATS[version];\n\n  writePropertyName(version, node, filter.geometryName);\n  format.prototype.writeGeometryElement(node, filter.extent, objectStack);\n}\n\n/**\n * @param {Element} node Element.\n * @param {import(\"./filter/ResourceId.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeResourceIdFilter(node, filter, objectStack) {\n  node.setAttribute('rid', /** @type {string} */ (filter.rid));\n}\n\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Spatial.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeSpatialFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  parent['srsName'] = filter.srsName;\n  const format = GML_FORMATS[version];\n\n  writePropertyName(version, node, filter.geometryName);\n  format.prototype.writeGeometryElement(node, filter.geometry, objectStack);\n}\n\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/DWithin.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeDWithinFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  writeSpatialFilter(node, filter, objectStack);\n  const distance = createElementNS(getFilterNS(version), 'Distance');\n  writeStringTextNode(distance, filter.distance.toString());\n  if (version === '2.0.0') {\n    distance.setAttribute('uom', filter.unit);\n  } else {\n    distance.setAttribute('units', filter.unit);\n  }\n  node.appendChild(distance);\n}\n\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/During.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeDuringFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n\n  writeExpression(FESNS[version], 'ValueReference', node, filter.propertyName);\n  const timePeriod = createElementNS(GMLNS, 'TimePeriod');\n\n  node.appendChild(timePeriod);\n\n  const begin = createElementNS(GMLNS, 'begin');\n  timePeriod.appendChild(begin);\n  writeTimeInstant(begin, filter.begin);\n\n  const end = createElementNS(GMLNS, 'end');\n  timePeriod.appendChild(end);\n  writeTimeInstant(end, filter.end);\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/LogicalNary.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeLogicalFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  /** @type {import(\"../xml.js\").NodeStackItem} */\n  const item = {node};\n  Object.assign(item, {context});\n  const conditions = filter.conditions;\n  for (let i = 0, ii = conditions.length; i < ii; ++i) {\n    const condition = conditions[i];\n    pushSerializeAndPop(\n      item,\n      GETFEATURE_SERIALIZERS,\n      makeSimpleNodeFactory(condition.getTagName()),\n      [condition],\n      objectStack,\n    );\n  }\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/Not.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeNotFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  /** @type {import(\"../xml.js\").NodeStackItem} */\n  const item = {node};\n  Object.assign(item, {context});\n  const condition = filter.condition;\n  pushSerializeAndPop(\n    item,\n    GETFEATURE_SERIALIZERS,\n    makeSimpleNodeFactory(condition.getTagName()),\n    [condition],\n    objectStack,\n  );\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/ComparisonBinary.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeComparisonFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  if (filter.matchCase !== undefined) {\n    node.setAttribute('matchCase', filter.matchCase.toString());\n  }\n  writePropertyName(version, node, filter.propertyName);\n  writeLiteral(version, node, '' + filter.expression);\n}\n\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/IsNull.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIsNullFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  writePropertyName(version, node, filter.propertyName);\n}\n\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/IsBetween.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIsBetweenFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  const ns = getFilterNS(version);\n\n  writePropertyName(version, node, filter.propertyName);\n\n  const lowerBoundary = createElementNS(ns, 'LowerBoundary');\n  node.appendChild(lowerBoundary);\n  writeLiteral(version, lowerBoundary, '' + filter.lowerBoundary);\n\n  const upperBoundary = createElementNS(ns, 'UpperBoundary');\n  node.appendChild(upperBoundary);\n  writeLiteral(version, upperBoundary, '' + filter.upperBoundary);\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/IsLike.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIsLikeFilter(node, filter, objectStack) {\n  const parent = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const context = parent['context'];\n  const version = context['version'];\n  node.setAttribute('wildCard', filter.wildCard);\n  node.setAttribute('singleChar', filter.singleChar);\n  node.setAttribute('escapeChar', filter.escapeChar);\n  if (filter.matchCase !== undefined) {\n    node.setAttribute('matchCase', filter.matchCase.toString());\n  }\n  writePropertyName(version, node, filter.propertyName);\n  writeLiteral(version, node, '' + filter.pattern);\n}\n\n/**\n * @param {string} ns Namespace.\n * @param {string} tagName Tag name.\n * @param {Node} node Node.\n * @param {string} value Value.\n */\nfunction writeExpression(ns, tagName, node, value) {\n  const property = createElementNS(ns, tagName);\n  writeStringTextNode(property, value);\n  node.appendChild(property);\n}\n\n/**\n * @param {string} version Version.\n * @param {Node} node Node.\n * @param {string} value PropertyName value.\n */\nfunction writeLiteral(version, node, value) {\n  writeExpression(getFilterNS(version), 'Literal', node, value);\n}\n\n/**\n * @param {string} version Version.\n * @param {Node} node Node.\n * @param {string} value PropertyName value.\n */\nfunction writePropertyName(version, node, value) {\n  if (version === '2.0.0') {\n    writeExpression(FESNS[version], 'ValueReference', node, value);\n  } else {\n    writeExpression(OGCNS[version], 'PropertyName', node, value);\n  }\n}\n\n/**\n * @param {Node} node Node.\n * @param {string} time PropertyName value.\n */\nfunction writeTimeInstant(node, time) {\n  const timeInstant = createElementNS(GMLNS, 'TimeInstant');\n  node.appendChild(timeInstant);\n\n  const timePosition = createElementNS(GMLNS, 'timePosition');\n  timeInstant.appendChild(timePosition);\n  writeStringTextNode(timePosition, time);\n}\n\n/**\n * Encode filter as WFS `Filter` and return the Node.\n *\n * @param {import(\"./filter/Filter.js\").default} filter Filter.\n * @param {string} version WFS version. If not provided defaults to '1.1.0'\n * @return {Node} Result.\n * @api\n */\nexport function writeFilter(filter, version) {\n  version = version || '1.1.0';\n  const child = createElementNS(getFilterNS(version), 'Filter');\n  const context = {\n    node: child,\n  };\n  Object.assign(context, {\n    'version': version,\n    'filter': filter,\n  });\n  writeFilterCondition(child, filter, [context]);\n  return child;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<string>} featureTypes Feature types.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeGetFeature(node, featureTypes, objectStack) {\n  const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n  const item = /** @type {import(\"../xml.js\").NodeStackItem} */ (\n    Object.assign({}, context)\n  );\n  item.node = node;\n  pushSerializeAndPop(\n    item,\n    GETFEATURE_SERIALIZERS,\n    makeSimpleNodeFactory('Query'),\n    featureTypes,\n    objectStack,\n  );\n}\n\nfunction getFilterNS(version) {\n  let ns;\n  if (version === '2.0.0') {\n    ns = FESNS[version];\n  } else {\n    ns = OGCNS[version];\n  }\n  return ns;\n}\n\nexport default WFS;\n","/**\n * @module ol/format/WMSCapabilities\n */\nimport {compareVersions} from '../string.js';\nimport {\n  makeArrayPusher,\n  makeObjectPropertyPusher,\n  makeObjectPropertySetter,\n  makeStructureNS,\n  pushParseAndPop,\n} from '../xml.js';\nimport XML from './XML.js';\nimport {readHref} from './xlink.js';\nimport {\n  readBooleanString,\n  readDecimal,\n  readDecimalString,\n  readNonNegativeIntegerString,\n  readPositiveInteger,\n  readString,\n} from './xsd.js';\n\n/**\n * @const\n * @type {Array<null|string>}\n */\nconst NAMESPACE_URIS = [null, 'http://www.opengis.net/wms'];\n\nfunction isV13(objectStack) {\n  return compareVersions(objectStack[0].version, '1.3') >= 0;\n}\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Service': makeObjectPropertySetter(readService),\n  'Capability': makeObjectPropertySetter(readCapability),\n});\n\nconst COMMON_CAPABILITY_PARSERS = {\n  'Request': makeObjectPropertySetter(readRequest),\n  'Exception': makeObjectPropertySetter(readException),\n  'Layer': makeObjectPropertySetter(readCapabilityLayer),\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CAPABILITY_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  ...COMMON_CAPABILITY_PARSERS,\n  'UserDefinedSymbolization': makeObjectPropertySetter(\n    readUserDefinedSymbolization,\n  ),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CAPABILITY_PARSERS_V13 = makeStructureNS(\n  NAMESPACE_URIS,\n  COMMON_CAPABILITY_PARSERS,\n);\n\n/**\n * @typedef {Object} RootObject\n * @property {string} version Version\n * @property {boolean} v13 Whether version is 1.3 or higher\n */\n\n/**\n * @classdesc\n * Format for reading WMS capabilities data\n *\n * @api\n */\nclass WMSCapabilities extends XML {\n  constructor() {\n    super();\n\n    /**\n     * @type {string|undefined}\n     */\n    this.version = undefined;\n  }\n\n  /**\n   * @param {Element} node Node.\n   * @return {Object|null} Object\n   * @override\n   */\n  readFromNode(node) {\n    this.version = node.getAttribute('version').trim();\n    const wmsCapabilityObject = pushParseAndPop(\n      {\n        'version': this.version,\n      },\n      PARSERS,\n      node,\n      [],\n    );\n    return wmsCapabilityObject ? wmsCapabilityObject : null;\n  }\n}\n\nconst COMMON_SERVICE_PARSERS = {\n  'Name': makeObjectPropertySetter(readString),\n  'Title': makeObjectPropertySetter(readString),\n  'Abstract': makeObjectPropertySetter(readString),\n  'KeywordList': makeObjectPropertySetter(readKeywordList),\n  'OnlineResource': makeObjectPropertySetter(readHref),\n  'ContactInformation': makeObjectPropertySetter(readContactInformation),\n  'Fees': makeObjectPropertySetter(readString),\n  'AccessConstraints': makeObjectPropertySetter(readString),\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst SERVICE_PARSERS = makeStructureNS(NAMESPACE_URIS, COMMON_SERVICE_PARSERS);\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst SERVICE_PARSERS_V13 = makeStructureNS(NAMESPACE_URIS, {\n  ...COMMON_SERVICE_PARSERS,\n  'LayerLimit': makeObjectPropertySetter(readPositiveInteger),\n  'MaxWidth': makeObjectPropertySetter(readPositiveInteger),\n  'MaxHeight': makeObjectPropertySetter(readPositiveInteger),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CONTACT_INFORMATION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'ContactPersonPrimary': makeObjectPropertySetter(readContactPersonPrimary),\n  'ContactPosition': makeObjectPropertySetter(readString),\n  'ContactAddress': makeObjectPropertySetter(readContactAddress),\n  'ContactVoiceTelephone': makeObjectPropertySetter(readString),\n  'ContactFacsimileTelephone': makeObjectPropertySetter(readString),\n  'ContactElectronicMailAddress': makeObjectPropertySetter(readString),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CONTACT_PERSON_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'ContactPerson': makeObjectPropertySetter(readString),\n  'ContactOrganization': makeObjectPropertySetter(readString),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst CONTACT_ADDRESS_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'AddressType': makeObjectPropertySetter(readString),\n  'Address': makeObjectPropertySetter(readString),\n  'City': makeObjectPropertySetter(readString),\n  'StateOrProvince': makeObjectPropertySetter(readString),\n  'PostCode': makeObjectPropertySetter(readString),\n  'Country': makeObjectPropertySetter(readString),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst EXCEPTION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Format': makeArrayPusher(readString),\n});\n\nconst COMMON_LAYER_PARSERS = {\n  'Name': makeObjectPropertySetter(readString),\n  'Title': makeObjectPropertySetter(readString),\n  'Abstract': makeObjectPropertySetter(readString),\n  'KeywordList': makeObjectPropertySetter(readKeywordList),\n  'BoundingBox': makeObjectPropertyPusher(readBoundingBox),\n  'Dimension': makeObjectPropertyPusher(readDimension),\n  'Attribution': makeObjectPropertySetter(readAttribution),\n  'AuthorityURL': makeObjectPropertyPusher(readAuthorityURL),\n  'Identifier': makeObjectPropertyPusher(readString),\n  'MetadataURL': makeObjectPropertyPusher(readMetadataURL),\n  'DataURL': makeObjectPropertyPusher(readFormatOnlineresource),\n  'FeatureListURL': makeObjectPropertyPusher(readFormatOnlineresource),\n  'Style': makeObjectPropertyPusher(readStyle),\n  'Layer': makeObjectPropertyPusher(readLayer),\n};\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst LAYER_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  ...COMMON_LAYER_PARSERS,\n  'SRS': makeObjectPropertyPusher(readString),\n  'Extent': makeObjectPropertySetter(readExtent),\n  'ScaleHint': makeObjectPropertyPusher(readScaleHint),\n  'LatLonBoundingBox': makeObjectPropertySetter((node, objectStack) =>\n    readBoundingBox(node, objectStack, false),\n  ),\n  'Layer': makeObjectPropertyPusher(readLayer),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst LAYER_PARSERS_V13 = makeStructureNS(NAMESPACE_URIS, {\n  ...COMMON_LAYER_PARSERS,\n  'CRS': makeObjectPropertyPusher(readString),\n  'EX_GeographicBoundingBox': makeObjectPropertySetter(\n    readEXGeographicBoundingBox,\n  ),\n  'MinScaleDenominator': makeObjectPropertySetter(readDecimal),\n  'MaxScaleDenominator': makeObjectPropertySetter(readDecimal),\n  'Layer': makeObjectPropertyPusher(readLayer),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst ATTRIBUTION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Title': makeObjectPropertySetter(readString),\n  'OnlineResource': makeObjectPropertySetter(readHref),\n  'LogoURL': makeObjectPropertySetter(readSizedFormatOnlineresource),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'westBoundLongitude': makeObjectPropertySetter(readDecimal),\n  'eastBoundLongitude': makeObjectPropertySetter(readDecimal),\n  'southBoundLatitude': makeObjectPropertySetter(readDecimal),\n  'northBoundLatitude': makeObjectPropertySetter(readDecimal),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst REQUEST_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'GetCapabilities': makeObjectPropertySetter(readOperationType),\n  'GetMap': makeObjectPropertySetter(readOperationType),\n  'GetFeatureInfo': makeObjectPropertySetter(readOperationType),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst OPERATIONTYPE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Format': makeObjectPropertyPusher(readString),\n  'DCPType': makeObjectPropertyPusher(readDCPType),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst DCPTYPE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'HTTP': makeObjectPropertySetter(readHTTP),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst HTTP_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Get': makeObjectPropertySetter(readFormatOnlineresource),\n  'Post': makeObjectPropertySetter(readFormatOnlineresource),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Name': makeObjectPropertySetter(readString),\n  'Title': makeObjectPropertySetter(readString),\n  'Abstract': makeObjectPropertySetter(readString),\n  'LegendURL': makeObjectPropertyPusher(readSizedFormatOnlineresource),\n  'StyleSheetURL': makeObjectPropertySetter(readFormatOnlineresource),\n  'StyleURL': makeObjectPropertySetter(readFormatOnlineresource),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst FORMAT_ONLINERESOURCE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Format': makeObjectPropertySetter(readString),\n  'OnlineResource': makeObjectPropertySetter(readHref),\n});\n\n/**\n * @const\n * @type {Object<string, Object<string, import(\"../xml.js\").Parser>>}\n */\n// @ts-ignore\nconst KEYWORDLIST_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n  'Keyword': makeArrayPusher(readString),\n});\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Attribution object.\n */\nfunction readAttribution(node, objectStack) {\n  return pushParseAndPop({}, ATTRIBUTION_PARSERS, node, objectStack);\n}\n\nfunction readUserDefinedSymbolization(node, objectStack) {\n  return {\n    'SupportSLD': !!readBooleanString(\n      node.getAttribute('UserDefinedSymbolization'),\n    ),\n    'UserLayer': !!readBooleanString(node.getAttribute('UserLayer')),\n    'UserStyle': !!readBooleanString(node.getAttribute('UserStyle')),\n    'RemoteWFS': !!readBooleanString(node.getAttribute('RemoteWFS')),\n  };\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {boolean} withCrs Whether to include the CRS attribute.\n * @return {Object} Bounding box object.\n */\nfunction readBoundingBox(node, objectStack, withCrs = true) {\n  const extent = [\n    readDecimalString(node.getAttribute('minx')),\n    readDecimalString(node.getAttribute('miny')),\n    readDecimalString(node.getAttribute('maxx')),\n    readDecimalString(node.getAttribute('maxy')),\n  ];\n\n  const resolutions = [\n    readDecimalString(node.getAttribute('resx')),\n    readDecimalString(node.getAttribute('resy')),\n  ];\n\n  const result = {\n    extent,\n    res: resolutions,\n  };\n  if (!withCrs) {\n    return result;\n  }\n\n  /** @type {RootObject} */\n  if (isV13(objectStack)) {\n    result.crs = node.getAttribute('CRS');\n  } else {\n    result.srs = node.getAttribute('SRS');\n  }\n\n  return result;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Bounding box object.\n */\nfunction readEXGeographicBoundingBox(node, objectStack) {\n  const geographicBoundingBox = pushParseAndPop(\n    {},\n    EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS,\n    node,\n    objectStack,\n  );\n  if (!geographicBoundingBox) {\n    return undefined;\n  }\n  const westBoundLongitude =\n    /** @type {number|undefined} */\n    (geographicBoundingBox['westBoundLongitude']);\n  const southBoundLatitude =\n    /** @type {number|undefined} */\n    (geographicBoundingBox['southBoundLatitude']);\n  const eastBoundLongitude =\n    /** @type {number|undefined} */\n    (geographicBoundingBox['eastBoundLongitude']);\n  const northBoundLatitude =\n    /** @type {number|undefined} */\n    (geographicBoundingBox['northBoundLatitude']);\n  if (\n    westBoundLongitude === undefined ||\n    southBoundLatitude === undefined ||\n    eastBoundLongitude === undefined ||\n    northBoundLatitude === undefined\n  ) {\n    return undefined;\n  }\n  return [\n    westBoundLongitude,\n    southBoundLatitude,\n    eastBoundLongitude,\n    northBoundLatitude,\n  ];\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Capability object.\n */\nfunction readCapability(node, objectStack) {\n  return pushParseAndPop(\n    {},\n    isV13(objectStack) ? CAPABILITY_PARSERS_V13 : CAPABILITY_PARSERS,\n    node,\n    objectStack,\n  );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Service object.\n */\nfunction readService(node, objectStack) {\n  return pushParseAndPop(\n    {},\n    isV13(objectStack) ? SERVICE_PARSERS_V13 : SERVICE_PARSERS,\n    node,\n    objectStack,\n  );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Contact information object.\n */\nfunction readContactInformation(node, objectStack) {\n  return pushParseAndPop({}, CONTACT_INFORMATION_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Contact person object.\n */\nfunction readContactPersonPrimary(node, objectStack) {\n  return pushParseAndPop({}, CONTACT_PERSON_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Contact address object.\n */\nfunction readContactAddress(node, objectStack) {\n  return pushParseAndPop({}, CONTACT_ADDRESS_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<string>|undefined} Format array.\n */\nfunction readException(node, objectStack) {\n  return pushParseAndPop([], EXCEPTION_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Layer object.\n */\nfunction readCapabilityLayer(node, objectStack) {\n  const layerObject = pushParseAndPop(\n    {},\n    isV13(objectStack) ? LAYER_PARSERS_V13 : LAYER_PARSERS,\n    node,\n    objectStack,\n  );\n\n  if (layerObject['Layer'] === undefined) {\n    return Object.assign(layerObject, readLayer(node, objectStack));\n  }\n\n  return layerObject;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Layer object.\n */\nfunction readLayer(node, objectStack) {\n  const v13 = isV13(objectStack);\n\n  const parentLayerObject = /**  @type {!Object<string,*>} */ (\n    objectStack[objectStack.length - 1]\n  );\n\n  const layerObject = pushParseAndPop(\n    {},\n    v13 ? LAYER_PARSERS_V13 : LAYER_PARSERS,\n    node,\n    objectStack,\n  );\n\n  if (!layerObject) {\n    return undefined;\n  }\n  let queryable = readBooleanString(node.getAttribute('queryable'));\n  if (queryable === undefined) {\n    queryable = parentLayerObject['queryable'];\n  }\n  layerObject['queryable'] = queryable !== undefined ? queryable : false;\n\n  let cascaded = readNonNegativeIntegerString(node.getAttribute('cascaded'));\n  if (cascaded === undefined) {\n    cascaded = parentLayerObject['cascaded'];\n  }\n  layerObject['cascaded'] = cascaded;\n\n  let opaque = readBooleanString(node.getAttribute('opaque'));\n  if (opaque === undefined) {\n    opaque = parentLayerObject['opaque'];\n  }\n  layerObject['opaque'] = opaque !== undefined ? opaque : false;\n\n  let noSubsets = readBooleanString(node.getAttribute('noSubsets'));\n  if (noSubsets === undefined) {\n    noSubsets = parentLayerObject['noSubsets'];\n  }\n  layerObject['noSubsets'] = noSubsets !== undefined ? noSubsets : false;\n\n  let fixedWidth = readDecimalString(node.getAttribute('fixedWidth'));\n  if (!fixedWidth) {\n    fixedWidth = parentLayerObject['fixedWidth'];\n  }\n  layerObject['fixedWidth'] = fixedWidth;\n\n  let fixedHeight = readDecimalString(node.getAttribute('fixedHeight'));\n  if (!fixedHeight) {\n    fixedHeight = parentLayerObject['fixedHeight'];\n  }\n  layerObject['fixedHeight'] = fixedHeight;\n\n  // See 7.2.4.8\n  const addKeys = ['Style', 'AuthorityURL'];\n  if (v13) {\n    addKeys.push('CRS');\n  } else {\n    addKeys.push('SRS', 'Dimension');\n  }\n  addKeys.forEach(function (key) {\n    if (key in parentLayerObject) {\n      const childValue = layerObject[key] || [];\n      layerObject[key] = childValue.concat(parentLayerObject[key]);\n    }\n  });\n\n  const replaceKeys = ['BoundingBox', 'Attribution'];\n  if (v13) {\n    replaceKeys.push(\n      'Dimension',\n      'EX_GeographicBoundingBox',\n      'MinScaleDenominator',\n      'MaxScaleDenominator',\n    );\n  } else {\n    replaceKeys.push('LatLonBoundingBox', 'ScaleHint', 'Extent');\n  }\n  replaceKeys.forEach(function (key) {\n    if (!(key in layerObject)) {\n      const parentValue = parentLayerObject[key];\n      layerObject[key] = parentValue;\n    }\n  });\n\n  return layerObject;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object} Dimension object.\n */\nfunction readDimension(node, objectStack) {\n  const dimensionObject = {\n    'name': node.getAttribute('name'),\n    'units': node.getAttribute('units'),\n    'unitSymbol': node.getAttribute('unitSymbol'),\n  };\n\n  if (isV13(objectStack)) {\n    Object.assign(dimensionObject, {\n      'default': node.getAttribute('default'),\n      'multipleValues': readBooleanString(node.getAttribute('multipleValues')),\n      'nearestValue': readBooleanString(node.getAttribute('nearestValue')),\n      'current': readBooleanString(node.getAttribute('current')),\n      'values': readString(node),\n    });\n  }\n  return dimensionObject;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object} Extent object.\n */\nfunction readExtent(node, objectStack) {\n  return {\n    'name': node.getAttribute('name'),\n    'default': node.getAttribute('default'),\n    'nearestValue': readBooleanString(node.getAttribute('nearestValue')),\n  };\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object} ScaleHint object.\n */\nfunction readScaleHint(node, objectStack) {\n  return {\n    'min': readDecimalString(node.getAttribute('min')),\n    'max': readDecimalString(node.getAttribute('max')),\n  };\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Online resource object.\n */\nfunction readFormatOnlineresource(node, objectStack) {\n  return pushParseAndPop({}, FORMAT_ONLINERESOURCE_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Request object.\n */\nfunction readRequest(node, objectStack) {\n  return pushParseAndPop({}, REQUEST_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} DCP type object.\n */\nfunction readDCPType(node, objectStack) {\n  return pushParseAndPop({}, DCPTYPE_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} HTTP object.\n */\nfunction readHTTP(node, objectStack) {\n  return pushParseAndPop({}, HTTP_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Operation type object.\n */\nfunction readOperationType(node, objectStack) {\n  return pushParseAndPop({}, OPERATIONTYPE_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Online resource object.\n */\nfunction readSizedFormatOnlineresource(node, objectStack) {\n  const formatOnlineresource = readFormatOnlineresource(node, objectStack);\n  if (formatOnlineresource) {\n    const size = [\n      readNonNegativeIntegerString(node.getAttribute('width')),\n      readNonNegativeIntegerString(node.getAttribute('height')),\n    ];\n    formatOnlineresource['size'] = size;\n    return formatOnlineresource;\n  }\n  return undefined;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Authority URL object.\n */\nfunction readAuthorityURL(node, objectStack) {\n  const authorityObject = readFormatOnlineresource(node, objectStack);\n  if (authorityObject) {\n    authorityObject['name'] = node.getAttribute('name');\n    return authorityObject;\n  }\n  return undefined;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Metadata URL object.\n */\nfunction readMetadataURL(node, objectStack) {\n  const metadataObject = readFormatOnlineresource(node, objectStack);\n  if (metadataObject) {\n    metadataObject['type'] = node.getAttribute('type');\n    return metadataObject;\n  }\n  return undefined;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Style object.\n */\nfunction readStyle(node, objectStack) {\n  return pushParseAndPop({}, STYLE_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<string>|undefined} Keyword list.\n */\nfunction readKeywordList(node, objectStack) {\n  return pushParseAndPop([], KEYWORDLIST_PARSERS, node, objectStack);\n}\n\nexport default WMSCapabilities;\n","/**\n * @module ol/render/webgl/MixedGeometryBatch\n */\nimport {inflateEnds} from '../../geom/flat/orient.js';\nimport RenderFeature from '../../render/Feature.js';\nimport {getUid} from '../../util.js';\n\n/**\n * @typedef {import(\"../../Feature.js\").default} Feature\n */\n/**\n * @typedef {import(\"../../geom/Geometry.js\").Type} GeometryType\n */\n\n/**\n * @typedef {Object} GeometryBatchItem Object that holds a reference to a feature as well as the raw coordinates of its various geometries\n * @property {Feature|RenderFeature} feature Feature\n * @property {Array<Array<number>>} flatCoordss Array of flat coordinates arrays, one for each geometry related to the feature\n * @property {number} [verticesCount] Only defined for linestring and polygon batches\n * @property {number} [ringsCount] Only defined for polygon batches\n * @property {Array<Array<number>>} [ringsVerticesCounts] Array of vertices counts in each ring for each geometry; only defined for polygons batches\n * @property {number} [ref] The reference in the global batch (used for hit detection)\n */\n\n/**\n * @typedef {PointGeometryBatch|LineStringGeometryBatch|PolygonGeometryBatch} GeometryBatch\n */\n\n/**\n * @typedef {Object} PolygonGeometryBatch A geometry batch specific to polygons\n * @property {Object<string, GeometryBatchItem>} entries Dictionary of all entries in the batch with associated computed values.\n * One entry corresponds to one feature. Key is feature uid.\n * @property {number} geometriesCount Amount of geometries in the batch.\n * @property {number} verticesCount Amount of vertices from geometries in the batch.\n * @property {number} ringsCount How many outer and inner rings in this batch.\n */\n\n/**\n * @typedef {Object} LineStringGeometryBatch A geometry batch specific to lines\n * @property {Object<string, GeometryBatchItem>} entries Dictionary of all entries in the batch with associated computed values.\n * One entry corresponds to one feature. Key is feature uid.\n * @property {number} geometriesCount Amount of geometries in the batch.\n * @property {number} verticesCount Amount of vertices from geometries in the batch.\n */\n\n/**\n * @typedef {Object} PointGeometryBatch A geometry batch specific to points\n * @property {Object<string, GeometryBatchItem>} entries Dictionary of all entries in the batch with associated computed values.\n * One entry corresponds to one feature. Key is feature uid.\n * @property {number} geometriesCount Amount of geometries in the batch.\n */\n\n/**\n * @classdesc This class is used to group several geometries of various types together for faster rendering.\n * Three inner batches are maintained for polygons, lines and points. Each time a feature is added, changed or removed\n * from the batch, these inner batches are modified accordingly in order to keep them up-to-date.\n *\n * A feature can be present in several inner batches, for example a polygon geometry will be present in the polygon batch\n * and its linear rings will be present in the line batch. Multi geometries are also broken down into individual geometries\n * and added to the corresponding batches in a recursive manner.\n *\n * Corresponding {@link module:ol/render/webgl/BatchRenderer} instances are then used to generate the render instructions\n * and WebGL buffers (vertices and indices) for each inner batches; render instructions are stored on the inner batches,\n * alongside the transform used to convert world coords to screen coords at the time these instructions were generated.\n * The resulting WebGL buffers are stored on the batches as well.\n *\n * An important aspect of geometry batches is that there is no guarantee that render instructions and WebGL buffers\n * are synchronized, i.e. render instructions can describe a new state while WebGL buffers might not have been written yet.\n * This is why two world-to-screen transforms are stored on each batch: one for the render instructions and one for\n * the WebGL buffers.\n */\nclass MixedGeometryBatch {\n  constructor() {\n    /**\n     * @private\n     */\n    this.globalCounter_ = 0;\n\n    /**\n     * Refs are used as keys for hit detection.\n     * @type {Map<number, Feature|RenderFeature>}\n     * @private\n     */\n    this.refToFeature_ = new Map();\n\n    /**\n     * Features are split in \"entries\", which are individual geometries. We use the following map to share a single ref for all those entries.\n     * @type {Map<string, number>}\n     * @private\n     */\n    this.uidToRef_ = new Map();\n\n    /**\n     * The precision in WebGL shaders is limited.\n     * To keep the refs as small as possible we maintain an array of freed up references.\n     * @type {Array<number>}\n     * @private\n     */\n    this.freeGlobalRef_ = [];\n\n    /**\n     * @type {PolygonGeometryBatch}\n     */\n    this.polygonBatch = {\n      entries: {},\n      geometriesCount: 0,\n      verticesCount: 0,\n      ringsCount: 0,\n    };\n\n    /**\n     * @type {PointGeometryBatch}\n     */\n    this.pointBatch = {\n      entries: {},\n      geometriesCount: 0,\n    };\n\n    /**\n     * @type {LineStringGeometryBatch}\n     */\n    this.lineStringBatch = {\n      entries: {},\n      geometriesCount: 0,\n      verticesCount: 0,\n    };\n  }\n\n  /**\n   * @param {Array<Feature|RenderFeature>} features Array of features to add to the batch\n   * @param {import(\"../../proj.js\").TransformFunction} [projectionTransform] Projection transform.\n   */\n  addFeatures(features, projectionTransform) {\n    for (let i = 0; i < features.length; i++) {\n      this.addFeature(features[i], projectionTransform);\n    }\n  }\n\n  /**\n   * @param {Feature|RenderFeature} feature Feature to add to the batch\n   * @param {import(\"../../proj.js\").TransformFunction} [projectionTransform] Projection transform.\n   */\n  addFeature(feature, projectionTransform) {\n    let geometry = feature.getGeometry();\n    if (!geometry) {\n      return;\n    }\n    if (projectionTransform) {\n      geometry = geometry.clone();\n      geometry.applyTransform(projectionTransform);\n    }\n    this.addGeometry_(geometry, feature);\n  }\n\n  /**\n   * @param {Feature|RenderFeature} feature Feature\n   * @return {GeometryBatchItem|void} the cleared entry\n   * @private\n   */\n  clearFeatureEntryInPointBatch_(feature) {\n    const featureUid = getUid(feature);\n    const entry = this.pointBatch.entries[featureUid];\n    if (!entry) {\n      return;\n    }\n    this.pointBatch.geometriesCount -= entry.flatCoordss.length;\n    delete this.pointBatch.entries[featureUid];\n    return entry;\n  }\n\n  /**\n   * @param {Feature|RenderFeature} feature Feature\n   * @return {GeometryBatchItem|void} the cleared entry\n   * @private\n   */\n  clearFeatureEntryInLineStringBatch_(feature) {\n    const featureUid = getUid(feature);\n    const entry = this.lineStringBatch.entries[featureUid];\n    if (!entry) {\n      return;\n    }\n    this.lineStringBatch.verticesCount -= entry.verticesCount;\n    this.lineStringBatch.geometriesCount -= entry.flatCoordss.length;\n    delete this.lineStringBatch.entries[featureUid];\n    return entry;\n  }\n\n  /**\n   * @param {Feature|RenderFeature} feature Feature\n   * @return {GeometryBatchItem|void} the cleared entry\n   * @private\n   */\n  clearFeatureEntryInPolygonBatch_(feature) {\n    const featureUid = getUid(feature);\n    const entry = this.polygonBatch.entries[featureUid];\n    if (!entry) {\n      return;\n    }\n    this.polygonBatch.verticesCount -= entry.verticesCount;\n    this.polygonBatch.ringsCount -= entry.ringsCount;\n    this.polygonBatch.geometriesCount -= entry.flatCoordss.length;\n    delete this.polygonBatch.entries[featureUid];\n    return entry;\n  }\n\n  /**\n   * @param {import(\"../../geom.js\").Geometry|RenderFeature} geometry Geometry\n   * @param {Feature|RenderFeature} feature Feature\n   * @private\n   */\n  addGeometry_(geometry, feature) {\n    const type = geometry.getType();\n    switch (type) {\n      case 'GeometryCollection': {\n        const geometries =\n          /** @type {import(\"../../geom.js\").GeometryCollection} */ (\n            geometry\n          ).getGeometriesArray();\n        for (const geometry of geometries) {\n          this.addGeometry_(geometry, feature);\n        }\n        break;\n      }\n      case 'MultiPolygon': {\n        const multiPolygonGeom =\n          /** @type {import(\"../../geom.js\").MultiPolygon} */ (geometry);\n        this.addCoordinates_(\n          type,\n          multiPolygonGeom.getFlatCoordinates(),\n          multiPolygonGeom.getEndss(),\n          feature,\n          getUid(feature),\n          multiPolygonGeom.getStride(),\n        );\n        break;\n      }\n      case 'MultiLineString': {\n        const multiLineGeom =\n          /** @type {import(\"../../geom.js\").MultiLineString|RenderFeature} */ (\n            geometry\n          );\n        this.addCoordinates_(\n          type,\n          multiLineGeom.getFlatCoordinates(),\n          multiLineGeom.getEnds(),\n          feature,\n          getUid(feature),\n          multiLineGeom.getStride(),\n        );\n        break;\n      }\n      case 'MultiPoint': {\n        const multiPointGeom =\n          /** @type {import(\"../../geom.js\").MultiPoint|RenderFeature} */ (\n            geometry\n          );\n        this.addCoordinates_(\n          type,\n          multiPointGeom.getFlatCoordinates(),\n          null,\n          feature,\n          getUid(feature),\n          multiPointGeom.getStride(),\n        );\n        break;\n      }\n      case 'Polygon': {\n        const polygonGeom =\n          /** @type {import(\"../../geom.js\").Polygon|RenderFeature} */ (\n            geometry\n          );\n        this.addCoordinates_(\n          type,\n          polygonGeom.getFlatCoordinates(),\n          polygonGeom.getEnds(),\n          feature,\n          getUid(feature),\n          polygonGeom.getStride(),\n        );\n        break;\n      }\n      case 'Point': {\n        const pointGeom = /** @type {import(\"../../geom.js\").Point} */ (\n          geometry\n        );\n        this.addCoordinates_(\n          type,\n          pointGeom.getFlatCoordinates(),\n          null,\n          feature,\n          getUid(feature),\n          pointGeom.getStride(),\n        );\n        break;\n      }\n      case 'LineString':\n      case 'LinearRing': {\n        const lineGeom = /** @type {import(\"../../geom.js\").LineString} */ (\n          geometry\n        );\n\n        const stride = lineGeom.getStride();\n\n        this.addCoordinates_(\n          type,\n          lineGeom.getFlatCoordinates(),\n          null,\n          feature,\n          getUid(feature),\n          stride,\n          lineGeom.getLayout?.(),\n        );\n        break;\n      }\n      default:\n      // pass\n    }\n  }\n\n  /**\n   * @param {GeometryType} type Geometry type\n   * @param {Array<number>} flatCoords Flat coordinates\n   * @param {Array<number> | Array<Array<number>> | null} ends Coordinate ends\n   * @param {Feature|RenderFeature} feature Feature\n   * @param {string} featureUid Feature uid\n   * @param {number} stride Stride\n   * @param {import('../../geom/Geometry.js').GeometryLayout} [layout] Layout\n   * @private\n   */\n  addCoordinates_(type, flatCoords, ends, feature, featureUid, stride, layout) {\n    /** @type {number} */\n    let verticesCount;\n    switch (type) {\n      case 'MultiPolygon': {\n        const multiPolygonEndss = /** @type {Array<Array<number>>} */ (ends);\n        for (let i = 0, ii = multiPolygonEndss.length; i < ii; i++) {\n          let polygonEnds = multiPolygonEndss[i];\n          const prevPolygonEnds = i > 0 ? multiPolygonEndss[i - 1] : null;\n          const startIndex = prevPolygonEnds\n            ? prevPolygonEnds[prevPolygonEnds.length - 1]\n            : 0;\n          const endIndex = polygonEnds[polygonEnds.length - 1];\n          polygonEnds =\n            startIndex > 0\n              ? polygonEnds.map((end) => end - startIndex)\n              : polygonEnds;\n          this.addCoordinates_(\n            'Polygon',\n            flatCoords.slice(startIndex, endIndex),\n            polygonEnds,\n            feature,\n            featureUid,\n            stride,\n            layout,\n          );\n        }\n        break;\n      }\n      case 'MultiLineString': {\n        const multiLineEnds = /** @type {Array<number>} */ (ends);\n        for (let i = 0, ii = multiLineEnds.length; i < ii; i++) {\n          const startIndex = i > 0 ? multiLineEnds[i - 1] : 0;\n          this.addCoordinates_(\n            'LineString',\n            flatCoords.slice(startIndex, multiLineEnds[i]),\n            null,\n            feature,\n            featureUid,\n            stride,\n            layout,\n          );\n        }\n        break;\n      }\n      case 'MultiPoint':\n        for (let i = 0, ii = flatCoords.length; i < ii; i += stride) {\n          this.addCoordinates_(\n            'Point',\n            flatCoords.slice(i, i + 2),\n            null,\n            feature,\n            featureUid,\n            null,\n            null,\n          );\n        }\n        break;\n      case 'Polygon': {\n        const polygonEnds = /** @type {Array<number>} */ (ends);\n        if (feature instanceof RenderFeature) {\n          const multiPolygonEnds = inflateEnds(flatCoords, polygonEnds);\n          if (multiPolygonEnds.length > 1) {\n            this.addCoordinates_(\n              'MultiPolygon',\n              flatCoords,\n              multiPolygonEnds,\n              feature,\n              featureUid,\n              stride,\n              layout,\n            );\n            return;\n          }\n        }\n        if (!this.polygonBatch.entries[featureUid]) {\n          this.polygonBatch.entries[featureUid] = this.addRefToEntry_(\n            featureUid,\n            {\n              feature: feature,\n              flatCoordss: [],\n              verticesCount: 0,\n              ringsCount: 0,\n              ringsVerticesCounts: [],\n            },\n          );\n        }\n        verticesCount = flatCoords.length / stride;\n        const ringsCount = ends.length;\n        const ringsVerticesCount = ends.map((end, ind, arr) =>\n          ind > 0 ? (end - arr[ind - 1]) / stride : end / stride,\n        );\n        this.polygonBatch.verticesCount += verticesCount;\n        this.polygonBatch.ringsCount += ringsCount;\n        this.polygonBatch.geometriesCount++;\n        this.polygonBatch.entries[featureUid].flatCoordss.push(\n          getFlatCoordinatesXY(flatCoords, stride),\n        );\n        this.polygonBatch.entries[featureUid].ringsVerticesCounts.push(\n          ringsVerticesCount,\n        );\n        this.polygonBatch.entries[featureUid].verticesCount += verticesCount;\n        this.polygonBatch.entries[featureUid].ringsCount += ringsCount;\n        for (let i = 0, ii = polygonEnds.length; i < ii; i++) {\n          const startIndex = i > 0 ? polygonEnds[i - 1] : 0;\n          this.addCoordinates_(\n            'LinearRing',\n            flatCoords.slice(startIndex, polygonEnds[i]),\n            null,\n            feature,\n            featureUid,\n            stride,\n            layout,\n          );\n        }\n        break;\n      }\n      case 'Point':\n        if (!this.pointBatch.entries[featureUid]) {\n          this.pointBatch.entries[featureUid] = this.addRefToEntry_(\n            featureUid,\n            {\n              feature: feature,\n              flatCoordss: [],\n            },\n          );\n        }\n        this.pointBatch.geometriesCount++;\n        this.pointBatch.entries[featureUid].flatCoordss.push(flatCoords);\n        break;\n      case 'LineString':\n      case 'LinearRing':\n        if (!this.lineStringBatch.entries[featureUid]) {\n          this.lineStringBatch.entries[featureUid] = this.addRefToEntry_(\n            featureUid,\n            {\n              feature: feature,\n              flatCoordss: [],\n              verticesCount: 0,\n            },\n          );\n        }\n        verticesCount = flatCoords.length / stride;\n        this.lineStringBatch.verticesCount += verticesCount;\n        this.lineStringBatch.geometriesCount++;\n        this.lineStringBatch.entries[featureUid].flatCoordss.push(\n          getFlatCoordinatesXYM(flatCoords, stride, layout),\n        );\n        this.lineStringBatch.entries[featureUid].verticesCount += verticesCount;\n        break;\n      default:\n      // pass\n    }\n  }\n\n  /**\n   * @param {string} featureUid Feature uid\n   * @param {GeometryBatchItem} entry The entry to add\n   * @return {GeometryBatchItem} the added entry\n   * @private\n   */\n  addRefToEntry_(featureUid, entry) {\n    const currentRef = this.uidToRef_.get(featureUid);\n\n    // the ref starts at 1 to distinguish from white color (no feature)\n    const ref =\n      currentRef || this.freeGlobalRef_.pop() || ++this.globalCounter_;\n    entry.ref = ref;\n    if (!currentRef) {\n      this.refToFeature_.set(ref, entry.feature);\n      this.uidToRef_.set(featureUid, ref);\n    }\n    return entry;\n  }\n\n  /**\n   * Return a ref to the pool of available refs.\n   * @param {number} ref the ref to return\n   * @param {string} featureUid the feature uid\n   * @private\n   */\n  returnRef_(ref, featureUid) {\n    if (!ref) {\n      throw new Error('This feature has no ref: ' + featureUid);\n    }\n    this.refToFeature_.delete(ref);\n    this.uidToRef_.delete(featureUid);\n    this.freeGlobalRef_.push(ref);\n  }\n\n  /**\n   * @param {Feature|RenderFeature} feature Feature\n   */\n  changeFeature(feature) {\n    this.removeFeature(feature);\n    const geometry = feature.getGeometry();\n    if (!geometry) {\n      return;\n    }\n    this.addGeometry_(geometry, feature);\n  }\n\n  /**\n   * @param {Feature|RenderFeature} feature Feature\n   */\n  removeFeature(feature) {\n    let entry = this.clearFeatureEntryInPointBatch_(feature);\n    entry = this.clearFeatureEntryInPolygonBatch_(feature) || entry;\n    entry = this.clearFeatureEntryInLineStringBatch_(feature) || entry;\n    if (entry) {\n      this.returnRef_(entry.ref, getUid(entry.feature));\n    }\n  }\n\n  clear() {\n    this.polygonBatch.entries = {};\n    this.polygonBatch.geometriesCount = 0;\n    this.polygonBatch.verticesCount = 0;\n    this.polygonBatch.ringsCount = 0;\n    this.lineStringBatch.entries = {};\n    this.lineStringBatch.geometriesCount = 0;\n    this.lineStringBatch.verticesCount = 0;\n    this.pointBatch.entries = {};\n    this.pointBatch.geometriesCount = 0;\n    this.globalCounter_ = 0;\n    this.freeGlobalRef_ = [];\n    this.refToFeature_.clear();\n    this.uidToRef_.clear();\n  }\n\n  /**\n   * Resolve the feature associated to a ref.\n   * @param {number} ref Hit detected ref\n   * @return {Feature|RenderFeature} feature\n   */\n  getFeatureFromRef(ref) {\n    return this.refToFeature_.get(ref);\n  }\n\n  isEmpty() {\n    return this.globalCounter_ === 0;\n  }\n\n  /**\n   * Will return a new instance of this class that only contains the features\n   * for which the provided callback returned true\n   * @param {function((Feature|RenderFeature)): boolean} featureFilter Feature filter callback\n   * @return {MixedGeometryBatch} Filtered geometry batch\n   */\n  filter(featureFilter) {\n    const filtered = new MixedGeometryBatch();\n    for (const feature of this.refToFeature_.values()) {\n      if (featureFilter(feature)) {\n        filtered.addFeature(feature);\n      }\n    }\n    return filtered;\n  }\n}\n\n/**\n * @param {Array<number>} flatCoords Flat coords\n * @param {number} stride Stride\n * @return {Array<number>} Flat coords with only XY components\n */\nfunction getFlatCoordinatesXY(flatCoords, stride) {\n  if (stride === 2) {\n    return flatCoords;\n  }\n  return flatCoords.filter((v, i) => i % stride < 2);\n}\n\n/**\n * @param {Array<number>} flatCoords Flat coords\n * @param {number} stride Stride\n * @param {string} layout Layout\n * @return {Array<number>} Flat coords with only XY components\n */\nfunction getFlatCoordinatesXYM(flatCoords, stride, layout) {\n  if (stride === 3 && layout === 'XYM') {\n    return flatCoords;\n  }\n  // this is XYZM layout\n  if (stride === 4) {\n    return flatCoords.filter((v, i) => i % stride !== 2);\n  }\n  // this is XYZ layout\n  if (stride === 3) {\n    return flatCoords.map((v, i) => (i % stride !== 2 ? v : 0));\n  }\n  // this is XY layout\n  return new Array(flatCoords.length * 1.5)\n    .fill(0)\n    .map((v, i) => (i % 3 === 2 ? 0 : flatCoords[Math.round(i / 1.5)]));\n}\n\nexport default MixedGeometryBatch;\n","/**\n * @module ol/webgl\n */\n\nimport {SAFARI_BUG_237906} from './has.js';\n\n/**\n * Constants taken from goog.webgl\n */\n\n/**\n * Used by {@link module:ol/webgl/Helper~WebGLHelper} for buffers containing vertices data, such as\n * position, color, texture coordinate, etc. These vertices are then referenced by an index buffer\n * to be drawn on screen (see {@link module:ol/webgl.ELEMENT_ARRAY_BUFFER}).\n * @const\n * @type {number}\n * @api\n */\nexport const ARRAY_BUFFER = 0x8892;\n\n/**\n * Used by {@link module:ol/webgl/Helper~WebGLHelper} for buffers containing indices data.\n * Index buffers are essentially lists of references to vertices defined in a vertex buffer\n * (see {@link module:ol/webgl.ARRAY_BUFFER}), and define the primitives (triangles) to be drawn.\n * @const\n * @type {number}\n * @api\n */\nexport const ELEMENT_ARRAY_BUFFER = 0x8893;\n\n/**\n * Used by {link module:ol/webgl/Buffer~WebGLArrayBuffer}.\n * @const\n * @type {number}\n * @api\n */\nexport const STREAM_DRAW = 0x88e0;\n\n/**\n * Used by {link module:ol/webgl/Buffer~WebGLArrayBuffer}.\n * @const\n * @type {number}\n * @api\n */\nexport const STATIC_DRAW = 0x88e4;\n\n/**\n * Used by {link module:ol/webgl/Buffer~WebGLArrayBuffer}.\n * @const\n * @type {number}\n * @api\n */\nexport const DYNAMIC_DRAW = 0x88e8;\n\n/**\n * @const\n * @type {number}\n */\nexport const UNSIGNED_BYTE = 0x1401;\n\n/**\n * @const\n * @type {number}\n */\nexport const UNSIGNED_SHORT = 0x1403;\n\n/**\n * @const\n * @type {number}\n */\nexport const UNSIGNED_INT = 0x1405;\n\n/**\n * @const\n * @type {number}\n */\nexport const FLOAT = 0x1406;\n\n/**\n  end of goog.webgl constants\n */\n\n/**\n * @const\n * @type {Array<string>}\n */\nconst CONTEXT_IDS = ['experimental-webgl', 'webgl', 'webkit-3d', 'moz-webgl'];\n\n/**\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Object} [attributes] Attributes.\n * @return {WebGLRenderingContext|null} WebGL rendering context.\n */\nexport function getContext(canvas, attributes) {\n  attributes = Object.assign(\n    {\n      preserveDrawingBuffer: true,\n      antialias: SAFARI_BUG_237906 ? false : true, // https://bugs.webkit.org/show_bug.cgi?id=237906\n    },\n    attributes,\n  );\n  const ii = CONTEXT_IDS.length;\n  for (let i = 0; i < ii; ++i) {\n    try {\n      const context = canvas.getContext(CONTEXT_IDS[i], attributes);\n      if (context) {\n        return /** @type {!WebGLRenderingContext} */ (context);\n      }\n    } catch {\n      // pass\n    }\n  }\n  return null;\n}\n\n/**\n * @type {Array<string>|null}\n */\nlet supportedExtensions = null;\n\n/**\n * @return {Array<string>|null} List of supported WebGL extensions.\n */\nexport function getSupportedExtensions() {\n  if (!supportedExtensions) {\n    const canvas = document.createElement('canvas');\n    const gl = getContext(canvas);\n    if (gl) {\n      supportedExtensions = gl.getSupportedExtensions();\n    }\n  }\n  return supportedExtensions;\n}\n","/**\n * @module ol/webgl/Buffer\n */\nimport {assert} from '../asserts.js';\nimport {\n  ARRAY_BUFFER,\n  DYNAMIC_DRAW,\n  ELEMENT_ARRAY_BUFFER,\n  STATIC_DRAW,\n  STREAM_DRAW,\n} from '../webgl.js';\n\n/**\n * Used to describe the intended usage for the data: `STATIC_DRAW`, `STREAM_DRAW`\n * or `DYNAMIC_DRAW`.\n * @enum {number}\n */\nexport const BufferUsage = {\n  STATIC_DRAW: STATIC_DRAW,\n  STREAM_DRAW: STREAM_DRAW,\n  DYNAMIC_DRAW: DYNAMIC_DRAW,\n};\n\n/**\n * @classdesc\n * Object used to store an array of data as well as usage information for that data.\n * Stores typed arrays internally, either Float32Array or Uint16/32Array depending on\n * the buffer type (ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER) and available extensions.\n *\n * To populate the array, you can either use:\n * A size using `#ofSize(buffer)`\n * An `ArrayBuffer` object using `#fromArrayBuffer(buffer)`\n * A plain array using `#fromArray(array)`\n *\n * Note:\n * See the documentation of [WebGLRenderingContext.bufferData](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData)\n * for more info on buffer usage.\n */\nclass WebGLArrayBuffer {\n  /**\n   * @param {number} type Buffer type, either ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER.\n   * @param {number} [usage] Intended usage, either `STATIC_DRAW`, `STREAM_DRAW` or `DYNAMIC_DRAW`.\n   * Default is `STATIC_DRAW`.\n   */\n  constructor(type, usage) {\n    /**\n     * @private\n     * @type {Float32Array|Uint32Array|null}\n     */\n    this.array_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.type_ = type;\n\n    assert(\n      type === ARRAY_BUFFER || type === ELEMENT_ARRAY_BUFFER,\n      'A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`',\n    );\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.usage_ = usage !== undefined ? usage : BufferUsage.STATIC_DRAW;\n  }\n\n  /**\n   * Populates the buffer with an array of the given size (all values will be zeroes).\n   * @param {number} size Array size\n   * @return {WebGLArrayBuffer} This\n   */\n  ofSize(size) {\n    this.array_ = new (getArrayClassForType(this.type_))(size);\n    return this;\n  }\n\n  /**\n   * Populates the buffer with an array of the given size.\n   * @param {Array<number>} array Numerical array\n   * @return {WebGLArrayBuffer} This\n   */\n  fromArray(array) {\n    this.array_ = getArrayClassForType(this.type_).from(array);\n    return this;\n  }\n\n  /**\n   * Populates the buffer with a raw binary array buffer.\n   * @param {ArrayBuffer} buffer Raw binary buffer to populate the array with. Note that this buffer must have been\n   * initialized for the same typed array class.\n   * @return {WebGLArrayBuffer} This\n   */\n  fromArrayBuffer(buffer) {\n    this.array_ = new (getArrayClassForType(this.type_))(buffer);\n    return this;\n  }\n\n  /**\n   * @return {number} Buffer type.\n   */\n  getType() {\n    return this.type_;\n  }\n\n  /**\n   * Will return null if the buffer was not initialized\n   * @return {Float32Array|Uint32Array|null} Array.\n   */\n  getArray() {\n    return this.array_;\n  }\n\n  /**\n   * @param {Float32Array|Uint32Array} array Array.\n   */\n  setArray(array) {\n    const ArrayType = getArrayClassForType(this.type_);\n    if (!(array instanceof ArrayType)) {\n      throw new Error(`Expected ${ArrayType}`);\n    }\n    this.array_ = array;\n  }\n\n  /**\n   * @return {number} Usage.\n   */\n  getUsage() {\n    return this.usage_;\n  }\n\n  /**\n   * Will return 0 if the buffer is not initialized\n   * @return {number} Array size\n   */\n  getSize() {\n    return this.array_ ? this.array_.length : 0;\n  }\n}\n\n/**\n * Returns a typed array constructor based on the given buffer type\n * @param {number} type Buffer type, either ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER.\n * @return {Float32ArrayConstructor|Uint32ArrayConstructor} The typed array class to use for this buffer.\n */\nexport function getArrayClassForType(type) {\n  switch (type) {\n    case ARRAY_BUFFER:\n      return Float32Array;\n    case ELEMENT_ARRAY_BUFFER:\n      return Uint32Array;\n    default:\n      return Float32Array;\n  }\n}\n\nexport default WebGLArrayBuffer;\n","/**\n * @module ol/vec/mat4\n */\n\n/** @typedef {Array<number>} Mat4 */\n\n/**\n * @return {Mat4} \"4x4 matrix representing a 3D identity transform.\"\n */\nexport function create() {\n  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n/**\n * @param {Mat4} mat4 Flattened 4x4 matrix receiving the result.\n * @param {import(\"../transform.js\").Transform} transform Transformation matrix.\n * @return {Mat4} \"2D transformation matrix as flattened 4x4 matrix.\"\n */\nexport function fromTransform(mat4, transform) {\n  mat4[0] = transform[0];\n  mat4[1] = transform[1];\n  mat4[4] = transform[2];\n  mat4[5] = transform[3];\n  mat4[12] = transform[4];\n  mat4[13] = transform[5];\n  return mat4;\n}\n\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @param {Mat4} [out] mat4 frustum matrix will be written into\n * @return {Mat4} out\n */\nexport function orthographic(left, right, bottom, top, near, far, out) {\n  out = out ?? create();\n  const lr = 1 / (left - right),\n    bt = 1 / (bottom - top),\n    nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 2 * nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = (far + near) * nf;\n  out[15] = 1;\n  return out;\n}\n\n/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {Mat4} m The matrix to scale.\n * @param {number} x How much to scale in the x direction.\n * @param {number} y How much to scale in the y direction.\n * @param {number} z How much to scale in the z direction.\n * @param {Mat4} [out] The matrix to write to.\n * @return {Mat4} out\n */\nexport function scale(m, x, y, z, out) {\n  out = out ?? create();\n  out[0] = m[0] * x;\n  out[1] = m[1] * x;\n  out[2] = m[2] * x;\n  out[3] = m[3] * x;\n  out[4] = m[4] * y;\n  out[5] = m[5] * y;\n  out[6] = m[6] * y;\n  out[7] = m[7] * y;\n  out[8] = m[8] * z;\n  out[9] = m[9] * z;\n  out[10] = m[10] * z;\n  out[11] = m[11] * z;\n  out[12] = m[12];\n  out[13] = m[13];\n  out[14] = m[14];\n  out[15] = m[15];\n  return out;\n}\n\n/**\n * Translate a matrix.\n *\n * @param {Mat4} m the matrix to translate\n * @param {number} x How much to translate in the x direction.\n * @param {number} y How much to translate in the y direction.\n * @param {number} z How much to translate in the z direction.\n * @param {Mat4} [out] the receiving matrix\n * @return {Mat4} out\n */\nexport function translate(m, x, y, z, out) {\n  out = out ?? create();\n  let a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23;\n\n  if (m === out) {\n    out[12] = m[0] * x + m[4] * y + m[8] * z + m[12];\n    out[13] = m[1] * x + m[5] * y + m[9] * z + m[13];\n    out[14] = m[2] * x + m[6] * y + m[10] * z + m[14];\n    out[15] = m[3] * x + m[7] * y + m[11] * z + m[15];\n  } else {\n    a00 = m[0];\n    a01 = m[1];\n    a02 = m[2];\n    a03 = m[3];\n    a10 = m[4];\n    a11 = m[5];\n    a12 = m[6];\n    a13 = m[7];\n    a20 = m[8];\n    a21 = m[9];\n    a22 = m[10];\n    a23 = m[11];\n\n    out[0] = a00;\n    out[1] = a01;\n    out[2] = a02;\n    out[3] = a03;\n    out[4] = a10;\n    out[5] = a11;\n    out[6] = a12;\n    out[7] = a13;\n    out[8] = a20;\n    out[9] = a21;\n    out[10] = a22;\n    out[11] = a23;\n\n    out[12] = a00 * x + a10 * y + a20 * z + m[12];\n    out[13] = a01 * x + a11 * y + a21 * z + m[13];\n    out[14] = a02 * x + a12 * y + a22 * z + m[14];\n    out[15] = a03 * x + a13 * y + a23 * z + m[15];\n  }\n\n  return out;\n}\n\n/**\n * @param {number} x x translation.\n * @param {number} y y translation.\n * @param {number} z z translation.\n * @param {Mat4} [out] optional matrix to store result\n * @return {Mat4} out\n */\nexport function translation(x, y, z, out) {\n  out = out ?? create();\n\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = x;\n  out[13] = y;\n  out[14] = z;\n  out[15] = 1;\n\n  return out;\n}\n","/**\n * @module ol/webgl/ContextEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  LOST: 'webglcontextlost',\n  RESTORED: 'webglcontextrestored',\n};\n","/**\n * @module ol/webgl/PostProcessingPass\n */\n\nimport {getUid} from '../util.js';\n\nconst DEFAULT_VERTEX_SHADER = `\n  precision mediump float;\n\n  attribute vec2 a_position;\n  varying vec2 v_texCoord;\n  varying vec2 v_screenCoord;\n\n  uniform vec2 u_screenSize;\n\n  void main() {\n    v_texCoord = a_position * 0.5 + 0.5;\n    v_screenCoord = v_texCoord * u_screenSize;\n    gl_Position = vec4(a_position, 0.0, 1.0);\n  }\n`;\n\nconst DEFAULT_FRAGMENT_SHADER = `\n  precision mediump float;\n\n  uniform sampler2D u_image;\n  uniform float u_opacity;\n\n  varying vec2 v_texCoord;\n\n  void main() {\n    gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n  }\n`;\n\n/**\n * @typedef {Object} Options\n * @property {WebGLRenderingContext} webGlContext WebGL context; mandatory.\n * @property {number} [scaleRatio] Scale ratio; if < 1, the post process will render to a texture smaller than\n * the main canvas that will then be sampled up (useful for saving resource on blur steps).\n * @property {string} [vertexShader] Vertex shader source\n * @property {string} [fragmentShader] Fragment shader source\n * @property {Object<string,import(\"./Helper\").UniformValue>} [uniforms] Uniform definitions for the post process step\n */\n\n/**\n * @typedef {Object} UniformInternalDescription\n * @property {import(\"./Helper\").UniformValue} value Value\n * @property {WebGLUniformLocation} location Location\n * @property {WebGLTexture} [texture] Texture\n * @private\n */\n\n/**\n * @classdesc\n * This class is used to define Post Processing passes with custom shaders and uniforms.\n * This is used internally by {@link module:ol/webgl/Helper~WebGLHelper}.\n *\n * Please note that the final output on the DOM canvas is expected to have premultiplied alpha, which means that\n * a pixel which is 100% red with an opacity of 50% must have a color of (r=0.5, g=0, b=0, a=0.5).\n * Failing to provide pixel colors with premultiplied alpha will result in render anomalies.\n *\n * The default post-processing pass does *not* multiply color values with alpha value, it expects color values to be\n * premultiplied.\n *\n * Default shaders are shown hereafter:\n *\n * Vertex shader:\n *\n *   ```\n *   precision mediump float;\n *\n *   attribute vec2 a_position;\n *   varying vec2 v_texCoord;\n *   varying vec2 v_screenCoord;\n *\n *   uniform vec2 u_screenSize;\n *\n *   void main() {\n *     v_texCoord = a_position * 0.5 + 0.5;\n *     v_screenCoord = v_texCoord * u_screenSize;\n *     gl_Position = vec4(a_position, 0.0, 1.0);\n *   }\n *   ```\n *\n * Fragment shader:\n *\n *   ```\n *   precision mediump float;\n *\n *   uniform sampler2D u_image;\n *   uniform float u_opacity;\n *\n *   varying vec2 v_texCoord;\n *\n *   void main() {\n *     gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n *   }\n *   ```\n */\nclass WebGLPostProcessingPass {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    /**\n     * @private\n     */\n    this.gl_ = options.webGlContext;\n    const gl = this.gl_;\n\n    /**\n     * @private\n     */\n    this.scaleRatio_ = options.scaleRatio || 1;\n\n    /**\n     * @type {WebGLTexture}\n     * @private\n     */\n    this.renderTargetTexture_ = gl.createTexture();\n\n    /**\n     * @type {import('../size.js').Size|null}\n     * @private\n     */\n    this.renderTargetTextureSize_ = null;\n\n    /**\n     * @private\n     */\n    this.frameBuffer_ = gl.createFramebuffer();\n    /**\n     * @private\n     */\n    this.depthBuffer_ = gl.createRenderbuffer();\n\n    // compile the program for the frame buffer\n    // TODO: make compilation errors show up\n    const vertexShader = gl.createShader(gl.VERTEX_SHADER);\n    gl.shaderSource(\n      vertexShader,\n      options.vertexShader || DEFAULT_VERTEX_SHADER,\n    );\n    gl.compileShader(vertexShader);\n    const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n    gl.shaderSource(\n      fragmentShader,\n      options.fragmentShader || DEFAULT_FRAGMENT_SHADER,\n    );\n    gl.compileShader(fragmentShader);\n    /**\n     * @private\n     */\n    this.renderTargetProgram_ = gl.createProgram();\n    gl.attachShader(this.renderTargetProgram_, vertexShader);\n    gl.attachShader(this.renderTargetProgram_, fragmentShader);\n    gl.linkProgram(this.renderTargetProgram_);\n\n    // bind the vertices buffer for the frame buffer\n    /**\n     * @private\n     */\n    this.renderTargetVerticesBuffer_ = gl.createBuffer();\n    const verticesArray = [-1, -1, 1, -1, -1, 1, 1, -1, 1, 1, -1, 1];\n    gl.bindBuffer(gl.ARRAY_BUFFER, this.renderTargetVerticesBuffer_);\n    gl.bufferData(\n      gl.ARRAY_BUFFER,\n      new Float32Array(verticesArray),\n      gl.STATIC_DRAW,\n    );\n\n    /**\n     * @private\n     */\n    this.renderTargetAttribLocation_ = gl.getAttribLocation(\n      this.renderTargetProgram_,\n      'a_position',\n    );\n    /**\n     * @private\n     */\n    this.renderTargetUniformLocation_ = gl.getUniformLocation(\n      this.renderTargetProgram_,\n      'u_screenSize',\n    );\n    /**\n     * @private\n     */\n    this.renderTargetOpacityLocation_ = gl.getUniformLocation(\n      this.renderTargetProgram_,\n      'u_opacity',\n    );\n    /**\n     * @private\n     */\n    this.renderTargetTextureLocation_ = gl.getUniformLocation(\n      this.renderTargetProgram_,\n      'u_image',\n    );\n\n    /**\n     * Holds info about custom uniforms used in the post processing pass\n     * @type {Array<UniformInternalDescription>}\n     * @private\n     */\n    this.uniforms_ = [];\n    options.uniforms &&\n      Object.keys(options.uniforms).forEach((name) => {\n        this.uniforms_.push({\n          value: options.uniforms[name],\n          location: gl.getUniformLocation(this.renderTargetProgram_, name),\n        });\n      });\n  }\n\n  getRenderTargetTexture() {\n    return this.renderTargetTexture_;\n  }\n\n  /**\n   * Get the WebGL rendering context\n   * @return {WebGLRenderingContext} The rendering context.\n   */\n  getGL() {\n    return this.gl_;\n  }\n\n  /**\n   * Initialize the render target texture of the post process, make sure it is at the\n   * right size and bind it as a render target for the next draw calls.\n   * The last step to be initialized will be the one where the primitives are rendered.\n   * @param {import(\"../Map.js\").FrameState} frameState current frame state\n   */\n  init(frameState) {\n    const gl = this.getGL();\n    const textureSize = [\n      gl.drawingBufferWidth * this.scaleRatio_,\n      gl.drawingBufferHeight * this.scaleRatio_,\n    ];\n\n    // rendering goes to my buffer\n    gl.bindFramebuffer(gl.FRAMEBUFFER, this.getFrameBuffer());\n    gl.bindRenderbuffer(gl.RENDERBUFFER, this.getDepthBuffer());\n    gl.viewport(0, 0, textureSize[0], textureSize[1]);\n\n    // if size has changed: adjust canvas & render target texture\n    if (\n      !this.renderTargetTextureSize_ ||\n      this.renderTargetTextureSize_[0] !== textureSize[0] ||\n      this.renderTargetTextureSize_[1] !== textureSize[1]\n    ) {\n      this.renderTargetTextureSize_ = textureSize;\n\n      // create a new texture\n      const level = 0;\n      const internalFormat = gl.RGBA;\n      const border = 0;\n      const format = gl.RGBA;\n      const type = gl.UNSIGNED_BYTE;\n      const data = null;\n      gl.bindTexture(gl.TEXTURE_2D, this.renderTargetTexture_);\n      gl.texImage2D(\n        gl.TEXTURE_2D,\n        level,\n        internalFormat,\n        textureSize[0],\n        textureSize[1],\n        border,\n        format,\n        type,\n        data,\n      );\n\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n      // bind the texture to the framebuffer\n      gl.framebufferTexture2D(\n        gl.FRAMEBUFFER,\n        gl.COLOR_ATTACHMENT0,\n        gl.TEXTURE_2D,\n        this.renderTargetTexture_,\n        0,\n      );\n\n      gl.renderbufferStorage(\n        gl.RENDERBUFFER,\n        gl.DEPTH_COMPONENT16,\n        textureSize[0],\n        textureSize[1],\n      );\n      gl.framebufferRenderbuffer(\n        gl.FRAMEBUFFER,\n        gl.DEPTH_ATTACHMENT,\n        gl.RENDERBUFFER,\n        this.depthBuffer_,\n      );\n    }\n  }\n\n  /**\n   * Render to the next postprocessing pass (or to the canvas if final pass).\n   * @param {import(\"../Map.js\").FrameState} frameState current frame state\n   * @param {WebGLPostProcessingPass} [nextPass] Next pass, optional\n   * @param {function(WebGLRenderingContext, import(\"../Map.js\").FrameState):void} [preCompose] Called before composing.\n   * @param {function(WebGLRenderingContext, import(\"../Map.js\").FrameState):void} [postCompose] Called before composing.\n   */\n  apply(frameState, nextPass, preCompose, postCompose) {\n    const gl = this.getGL();\n    const size = frameState.size;\n\n    gl.bindFramebuffer(\n      gl.FRAMEBUFFER,\n      nextPass ? nextPass.getFrameBuffer() : null,\n    );\n    gl.activeTexture(gl.TEXTURE0);\n    gl.bindTexture(gl.TEXTURE_2D, this.renderTargetTexture_);\n\n    if (!nextPass) {\n      // clear the canvas if we are the first to render to it\n      // and preserveDrawingBuffer is true\n      const canvasId = getUid(gl.canvas);\n      if (!frameState.renderTargets[canvasId]) {\n        const attributes = gl.getContextAttributes();\n        if (attributes && attributes.preserveDrawingBuffer) {\n          gl.clearColor(0.0, 0.0, 0.0, 0.0);\n          gl.clearDepth(1.0);\n          gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n        }\n\n        frameState.renderTargets[canvasId] = true;\n      }\n    }\n\n    gl.disable(gl.DEPTH_TEST);\n    gl.enable(gl.BLEND);\n    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n    gl.bindBuffer(gl.ARRAY_BUFFER, this.renderTargetVerticesBuffer_);\n\n    gl.useProgram(this.renderTargetProgram_);\n    gl.enableVertexAttribArray(this.renderTargetAttribLocation_);\n    gl.vertexAttribPointer(\n      this.renderTargetAttribLocation_,\n      2,\n      gl.FLOAT,\n      false,\n      0,\n      0,\n    );\n    gl.uniform2f(this.renderTargetUniformLocation_, size[0], size[1]);\n    gl.uniform1i(this.renderTargetTextureLocation_, 0);\n\n    const opacity = frameState.layerStatesArray[frameState.layerIndex].opacity;\n    gl.uniform1f(this.renderTargetOpacityLocation_, opacity);\n\n    this.applyUniforms(frameState);\n\n    if (preCompose) {\n      preCompose(gl, frameState);\n    }\n    gl.drawArrays(gl.TRIANGLES, 0, 6);\n    if (postCompose) {\n      postCompose(gl, frameState);\n    }\n  }\n\n  /**\n   * @return {WebGLFramebuffer} Frame buffer\n   */\n  getFrameBuffer() {\n    return this.frameBuffer_;\n  }\n\n  /**\n   * @return {WebGLRenderbuffer} Depth buffer\n   */\n  getDepthBuffer() {\n    return this.depthBuffer_;\n  }\n\n  /**\n   * Sets the custom uniforms based on what was given in the constructor.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @private\n   */\n  applyUniforms(frameState) {\n    const gl = this.getGL();\n\n    let value;\n    let textureSlot = 1;\n    this.uniforms_.forEach(function (uniform) {\n      value =\n        typeof uniform.value === 'function'\n          ? uniform.value(frameState)\n          : uniform.value;\n\n      // apply value based on type\n      if (value instanceof HTMLCanvasElement || value instanceof ImageData) {\n        // create a texture & put data\n        if (!uniform.texture) {\n          uniform.texture = gl.createTexture();\n        }\n        gl.activeTexture(gl[`TEXTURE${textureSlot}`]);\n        gl.bindTexture(gl.TEXTURE_2D, uniform.texture);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n        if (value instanceof ImageData) {\n          gl.texImage2D(\n            gl.TEXTURE_2D,\n            0,\n            gl.RGBA,\n            gl.RGBA,\n            value.width,\n            value.height,\n            0,\n            gl.UNSIGNED_BYTE,\n            new Uint8Array(value.data),\n          );\n        } else {\n          gl.texImage2D(\n            gl.TEXTURE_2D,\n            0,\n            gl.RGBA,\n            gl.RGBA,\n            gl.UNSIGNED_BYTE,\n            value,\n          );\n        }\n\n        // fill texture slots\n        gl.uniform1i(uniform.location, textureSlot++);\n      } else if (Array.isArray(value)) {\n        switch (value.length) {\n          case 2:\n            gl.uniform2f(uniform.location, value[0], value[1]);\n            return;\n          case 3:\n            gl.uniform3f(uniform.location, value[0], value[1], value[2]);\n            return;\n          case 4:\n            gl.uniform4f(\n              uniform.location,\n              value[0],\n              value[1],\n              value[2],\n              value[3],\n            );\n            return;\n          default:\n            return;\n        }\n      } else if (typeof value === 'number') {\n        gl.uniform1f(uniform.location, value);\n      }\n    });\n  }\n}\n\nexport default WebGLPostProcessingPass;\n","/**\n * @module ol/webgl/Helper\n */\nimport Disposable from '../Disposable.js';\nimport {clear} from '../obj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../transform.js';\nimport {getUid} from '../util.js';\nimport {create, fromTransform} from '../vec/mat4.js';\nimport ContextEventType from '../webgl/ContextEventType.js';\nimport {\n  FLOAT,\n  UNSIGNED_BYTE,\n  UNSIGNED_INT,\n  UNSIGNED_SHORT,\n  getContext,\n} from '../webgl.js';\nimport WebGLPostProcessingPass from './PostProcessingPass.js';\n\n/**\n * @typedef {Object} BufferCacheEntry\n * @property {import(\"./Buffer.js\").default} buffer Buffer.\n * @property {WebGLBuffer} webGlBuffer WebGlBuffer.\n */\n\n/**\n * Shader types, either `FRAGMENT_SHADER` or `VERTEX_SHADER`.\n * @enum {number}\n */\nexport const ShaderType = {\n  FRAGMENT_SHADER: 0x8b30,\n  VERTEX_SHADER: 0x8b31,\n};\n\n/**\n * Names of uniforms made available to all shaders.\n * Please note: changing these *will* break custom shaders!\n * @enum {string}\n */\nexport const DefaultUniform = {\n  PROJECTION_MATRIX: 'u_projectionMatrix',\n  SCREEN_TO_WORLD_MATRIX: 'u_screenToWorldMatrix',\n  TIME: 'u_time',\n  ZOOM: 'u_zoom',\n  RESOLUTION: 'u_resolution',\n  ROTATION: 'u_rotation',\n  VIEWPORT_SIZE_PX: 'u_viewportSizePx',\n  PIXEL_RATIO: 'u_pixelRatio',\n  HIT_DETECTION: 'u_hitDetection',\n};\n\n/**\n * Attribute types, either `UNSIGNED_BYTE`, `UNSIGNED_SHORT`, `UNSIGNED_INT` or `FLOAT`\n * Note: an attribute stored in a `Float32Array` should be of type `FLOAT`.\n * @enum {number}\n */\nexport const AttributeType = {\n  UNSIGNED_BYTE: UNSIGNED_BYTE,\n  UNSIGNED_SHORT: UNSIGNED_SHORT,\n  UNSIGNED_INT: UNSIGNED_INT,\n  FLOAT: FLOAT,\n};\n\n/**\n * Description of an attribute in a buffer\n * @typedef {Object} AttributeDescription\n * @property {string} name Attribute name to use in shaders\n * @property {number} size Number of components per attributes\n * @property {AttributeType} [type] Attribute type, i.e. number of bytes used to store the value. This is\n * determined by the class of typed array which the buffer uses (eg. `Float32Array` for a `FLOAT` attribute).\n * Default is `FLOAT`.\n */\n\n/**\n * @typedef {number|Array<number>|HTMLCanvasElement|HTMLImageElement|ImageData|WebGLTexture|import(\"../transform\").Transform} UniformLiteralValue\n */\n\n/**\n * Uniform value can be a number, array of numbers (2 to 4), canvas element or a callback returning\n * one of the previous types.\n * @typedef {UniformLiteralValue|function(import(\"../Map.js\").FrameState):UniformLiteralValue} UniformValue\n */\n\n/**\n * @typedef {Object} PostProcessesOptions\n * @property {number} [scaleRatio] Scale ratio; if < 1, the post process will render to a texture smaller than\n * the main canvas which will then be sampled up (useful for saving resource on blur steps).\n * @property {string} [vertexShader] Vertex shader source\n * @property {string} [fragmentShader] Fragment shader source\n * @property {Object<string,UniformValue>} [uniforms] Uniform definitions for the post process step\n */\n\n/**\n * @typedef {Object} Options\n * @property {Object<string,UniformValue>} [uniforms] Uniform definitions; property names must match the uniform\n * names in the provided or default shaders.\n * @property {Array<PostProcessesOptions>} [postProcesses] Post-processes definitions\n * @property {string} [canvasCacheKey] The cache key for the canvas.\n */\n\n/**\n * @typedef {Object} UniformInternalDescription\n * @property {string} name Name\n * @property {UniformValue} [value] Value\n * @property {UniformValue} [prevValue] The previous value.\n * @property {WebGLTexture} [texture] Texture\n * @private\n */\n\n/**\n * @typedef {Object} CanvasCacheItem\n * @property {WebGLRenderingContext} context The context of this canvas.\n * @property {number} users The count of users of this canvas.\n */\n\n/**\n * @type {Object<string,CanvasCacheItem>}\n */\nconst canvasCache = {};\n\n/**\n * @param {string} key The cache key for the canvas.\n * @return {string} The shared cache key.\n */\nfunction getSharedCanvasCacheKey(key) {\n  return 'shared/' + key;\n}\n\nlet uniqueCanvasCacheKeyCount = 0;\n\n/**\n * @return {string} The unique cache key.\n */\nfunction getUniqueCanvasCacheKey() {\n  const key = 'unique/' + uniqueCanvasCacheKeyCount;\n  uniqueCanvasCacheKeyCount += 1;\n  return key;\n}\n\n/**\n * @param {string} key The cache key for the canvas.\n * @return {WebGLRenderingContext} The canvas.\n */\nfunction getOrCreateContext(key) {\n  let cacheItem = canvasCache[key];\n  if (!cacheItem) {\n    const canvas = document.createElement('canvas');\n    canvas.width = 1;\n    canvas.height = 1;\n    canvas.style.position = 'absolute';\n    canvas.style.left = '0';\n    const context = getContext(canvas);\n    cacheItem = {users: 0, context};\n    canvasCache[key] = cacheItem;\n  }\n\n  cacheItem.users += 1;\n  return cacheItem.context;\n}\n\n/**\n * @param {string} key The cache key for the canvas.\n */\nfunction releaseCanvas(key) {\n  const cacheItem = canvasCache[key];\n  if (!cacheItem) {\n    return;\n  }\n\n  cacheItem.users -= 1;\n  if (cacheItem.users > 0) {\n    return;\n  }\n\n  const gl = cacheItem.context;\n  const extension = gl.getExtension('WEBGL_lose_context');\n  if (extension) {\n    extension.loseContext();\n  }\n  const canvas = gl.canvas;\n  canvas.width = 1;\n  canvas.height = 1;\n\n  delete canvasCache[key];\n}\n\n/**\n * @classdesc\n * This class is intended to provide low-level functions related to WebGL rendering, so that accessing\n * directly the WebGL API should not be required anymore.\n *\n * Several operations are handled by the `WebGLHelper` class:\n *\n * ### Define custom shaders and uniforms\n *\n *   Shaders* are low-level programs executed on the GPU and written in GLSL. There are two types of shaders:\n *\n *   Vertex shaders are used to manipulate the position and attribute of *vertices* of rendered primitives (ie. corners of a square).\n *   Outputs are:\n *\n *   `gl_Position`: position of the vertex in screen space\n *\n *   Varyings usually prefixed with `v_` are passed on to the fragment shader\n *\n *   Fragment shaders are used to control the actual color of the pixels drawn on screen. Their only output is `gl_FragColor`.\n *\n *   Both shaders can take *uniforms* or *attributes* as input. Attributes are explained later. Uniforms are common, read-only values that\n *   can be changed at every frame and can be of type float, arrays of float or images.\n *\n *   Shaders must be compiled and assembled into a program like so:\n *   ```js\n *   // here we simply create two shaders and assemble them in a program which is then used\n *   // for subsequent rendering calls; note how a frameState is required to set up a program,\n *   // as several default uniforms are computed from it (projection matrix, zoom level, etc.)\n *   const vertexShader = new WebGLVertex(VERTEX_SHADER);\n *   const fragmentShader = new WebGLFragment(FRAGMENT_SHADER);\n *   const program = this.context.getProgram(fragmentShader, vertexShader);\n *   helper.useProgram(this.program, frameState);\n *   ```\n *\n *   Uniforms are defined using the `uniforms` option and can either be explicit values or callbacks taking the frame state as argument.\n *   You can also change their value along the way like so:\n *   ```js\n *   helper.setUniformFloatValue('u_value', valueAsNumber);\n *   ```\n *\n * ### Defining post processing passes\n *\n *   Post processing* describes the act of rendering primitives to a texture, and then rendering this texture to the final canvas\n *   while applying special effects in screen space.\n *   Typical uses are: blurring, color manipulation, depth of field, filtering...\n *\n *   The `WebGLHelper` class offers the possibility to define post processes at creation time using the `postProcesses` option.\n *   A post process step accepts the following options:\n *\n *   `fragmentShader` and `vertexShader`: text literals in GLSL language that will be compiled and used in the post processing step.\n *   `uniforms`: uniforms can be defined for the post processing steps just like for the main render.\n *   `scaleRatio`: allows using an intermediate texture smaller or higher than the final canvas in the post processing step.\n *     This is typically used in blur steps to reduce the performance overhead by using an already downsampled texture as input.\n *\n *   The {@link module:ol/webgl/PostProcessingPass~WebGLPostProcessingPass} class is used internally, refer to its documentation for more info.\n *\n * ### Binding WebGL buffers and flushing data into them\n *\n *   Data that must be passed to the GPU has to be transferred using {@link module:ol/webgl/Buffer~WebGLArrayBuffer} objects.\n *   A buffer has to be created only once, but must be bound every time the buffer content will be used for rendering.\n *   This is done using {@link bindBuffer}.\n *   When the buffer's array content has changed, the new data has to be flushed to the GPU memory; this is done using\n *   {@link flushBufferData}. Note: this operation is expensive and should be done as infrequently as possible.\n *\n *   When binding an array buffer, a `target` parameter must be given: it should be either {@link module:ol/webgl.ARRAY_BUFFER}\n *   (if the buffer contains vertices data) or {@link module:ol/webgl.ELEMENT_ARRAY_BUFFER} (if the buffer contains indices data).\n *\n *   Examples below:\n *   ```js\n *   // at initialization phase\n *   const verticesBuffer = new WebGLArrayBuffer([], DYNAMIC_DRAW);\n *   const indicesBuffer = new WebGLArrayBuffer([], DYNAMIC_DRAW);\n *\n *   // when array values have changed\n *   helper.flushBufferData(ARRAY_BUFFER, this.verticesBuffer);\n *   helper.flushBufferData(ELEMENT_ARRAY_BUFFER, this.indicesBuffer);\n *\n *   // at rendering phase\n *   helper.bindBuffer(ARRAY_BUFFER, this.verticesBuffer);\n *   helper.bindBuffer(ELEMENT_ARRAY_BUFFER, this.indicesBuffer);\n *   ```\n *\n * ### Specifying attributes\n *\n *   The GPU only receives the data as arrays of numbers. These numbers must be handled differently depending on what it describes (position, texture coordinate...).\n *   Attributes are used to specify these uses. Specify the attribute names with\n *   {@link module:ol/webgl/Helper~WebGLHelper#enableAttributes} (see code snippet below).\n *\n *   Please note that you will have to specify the type and offset of the attributes in the data array. You can refer to the documentation of [WebGLRenderingContext.vertexAttribPointer](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer) for more explanation.\n *   ```js\n *   // here we indicate that the data array has the following structure:\n *   // [posX, posY, offsetX, offsetY, texCoordU, texCoordV, posX, posY, ...]\n *   helper.enableAttributes([\n *     {\n *        name: 'a_position',\n *        size: 2\n *     },\n *     {\n *       name: 'a_offset',\n *       size: 2\n *     },\n *     {\n *       name: 'a_texCoord',\n *       size: 2\n *     }\n *   ])\n *   ```\n *\n * ### Rendering primitives\n *\n *   Once all the steps above have been achieved, rendering primitives to the screen is done using {@link prepareDraw}, {@link drawElements} and {@link finalizeDraw}.\n *   ```js\n *   // frame preparation step\n *   helper.prepareDraw(frameState);\n *\n *   // call this for every data array that has to be rendered on screen\n *   helper.drawElements(0, this.indicesBuffer.getArray().length);\n *\n *   // finalize the rendering by applying post processes\n *   helper.finalizeDraw(frameState);\n *   ```\n *\n * For an example usage of this class, refer to {@link module:ol/renderer/webgl/PointsLayer~WebGLPointsLayerRenderer}.\n */\nclass WebGLHelper extends Disposable {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n    options = options || {};\n\n    /** @private */\n    this.boundHandleWebGLContextLost_ = this.handleWebGLContextLost.bind(this);\n\n    /** @private */\n    this.boundHandleWebGLContextRestored_ =\n      this.handleWebGLContextRestored.bind(this);\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.canvasCacheKey_ = options.canvasCacheKey\n      ? getSharedCanvasCacheKey(options.canvasCacheKey)\n      : getUniqueCanvasCacheKey();\n\n    /**\n     * @private\n     * @type {WebGLRenderingContext}\n     */\n    this.gl_ = getOrCreateContext(this.canvasCacheKey_);\n\n    /**\n     * @private\n     * @type {!Object<string, BufferCacheEntry>}\n     */\n    this.bufferCache_ = {};\n\n    /**\n     * @private\n     * @type {Object<string, Object>}\n     */\n    this.extensionCache_ = {};\n\n    /**\n     * @private\n     * @type {WebGLProgram}\n     */\n    this.currentProgram_ = null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.needsToBeRecreated_ = false;\n\n    const canvas = this.gl_.canvas;\n\n    canvas.addEventListener(\n      ContextEventType.LOST,\n      this.boundHandleWebGLContextLost_,\n    );\n    canvas.addEventListener(\n      ContextEventType.RESTORED,\n      this.boundHandleWebGLContextRestored_,\n    );\n\n    /**\n     * @private\n     * @type {import(\"../transform.js\").Transform}\n     */\n    this.offsetRotateMatrix_ = createTransform();\n\n    /**\n     * @private\n     * @type {import(\"../transform.js\").Transform}\n     */\n    this.offsetScaleMatrix_ = createTransform();\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.tmpMat4_ = create();\n\n    /**\n     * @private\n     * @type {Object<string, Object<string, WebGLUniformLocation>>}\n     */\n    this.uniformLocationsByProgram_ = {};\n\n    /**\n     * @private\n     * @type {Object<string, Object<string, number>>}\n     */\n    this.attribLocationsByProgram_ = {};\n\n    /**\n     * Holds info about custom uniforms used in the post processing pass.\n     * If the uniform is a texture, the WebGL Texture object will be stored here.\n     * @type {Array<UniformInternalDescription>}\n     * @private\n     */\n    this.uniforms_ = [];\n    if (options.uniforms) {\n      this.setUniforms(options.uniforms);\n    }\n\n    /**\n     * An array of PostProcessingPass objects is kept in this variable, built from the steps provided in the\n     * options. If no post process was given, a default one is used (so as not to have to make an exception to\n     * the frame buffer logic).\n     * @type {Array<WebGLPostProcessingPass>}\n     * @private\n     */\n    this.postProcessPasses_ = options.postProcesses\n      ? options.postProcesses.map(\n          (options) =>\n            new WebGLPostProcessingPass({\n              webGlContext: this.gl_,\n              scaleRatio: options.scaleRatio,\n              vertexShader: options.vertexShader,\n              fragmentShader: options.fragmentShader,\n              uniforms: options.uniforms,\n            }),\n        )\n      : [new WebGLPostProcessingPass({webGlContext: this.gl_})];\n\n    /**\n     * @type {string|null}\n     * @private\n     */\n    this.shaderCompileErrors_ = null;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.startTime_ = Date.now();\n  }\n\n  /**\n   * @param {Object<string, UniformValue>} uniforms Uniform definitions.\n   */\n  setUniforms(uniforms) {\n    this.uniforms_ = [];\n    this.addUniforms(uniforms);\n  }\n\n  /**\n   * @param {Object<string, UniformValue>} uniforms Uniform definitions.\n   */\n  addUniforms(uniforms) {\n    for (const name in uniforms) {\n      this.uniforms_.push({\n        name: name,\n        value: uniforms[name],\n      });\n    }\n  }\n\n  /**\n   * @param {string} canvasCacheKey The canvas cache key.\n   * @return {boolean} The provided key matches the one this helper was constructed with.\n   */\n  canvasCacheKeyMatches(canvasCacheKey) {\n    return this.canvasCacheKey_ === getSharedCanvasCacheKey(canvasCacheKey);\n  }\n\n  /**\n   * Get a WebGL extension.  If the extension is not supported, null is returned.\n   * Extensions are cached after they are enabled for the first time.\n   * @param {string} name The extension name.\n   * @return {Object|null} The extension or null if not supported.\n   */\n  getExtension(name) {\n    if (name in this.extensionCache_) {\n      return this.extensionCache_[name];\n    }\n    const extension = this.gl_.getExtension(name);\n    this.extensionCache_[name] = extension;\n    return extension;\n  }\n\n  /**\n   * Just bind the buffer if it's in the cache. Otherwise create\n   * the WebGL buffer, bind it, populate it, and add an entry to\n   * the cache.\n   * @param {import(\"./Buffer\").default} buffer Buffer.\n   */\n  bindBuffer(buffer) {\n    const gl = this.gl_;\n    const bufferKey = getUid(buffer);\n    let bufferCache = this.bufferCache_[bufferKey];\n    if (!bufferCache) {\n      const webGlBuffer = gl.createBuffer();\n      bufferCache = {\n        buffer: buffer,\n        webGlBuffer: webGlBuffer,\n      };\n      this.bufferCache_[bufferKey] = bufferCache;\n    }\n    gl.bindBuffer(buffer.getType(), bufferCache.webGlBuffer);\n  }\n\n  /**\n   * Update the data contained in the buffer array; this is required for the\n   * new data to be rendered\n   * @param {import(\"./Buffer\").default} buffer Buffer.\n   */\n  flushBufferData(buffer) {\n    const gl = this.gl_;\n    this.bindBuffer(buffer);\n    gl.bufferData(buffer.getType(), buffer.getArray(), buffer.getUsage());\n  }\n\n  /**\n   * @param {import(\"./Buffer.js\").default} buf Buffer.\n   */\n  deleteBuffer(buf) {\n    const bufferKey = getUid(buf);\n    // Note: gl.deleteBuffer is not called here since we let WebGL garbage collect it automatically\n    delete this.bufferCache_[bufferKey];\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    const canvas = this.gl_.canvas;\n    canvas.removeEventListener(\n      ContextEventType.LOST,\n      this.boundHandleWebGLContextLost_,\n    );\n    canvas.removeEventListener(\n      ContextEventType.RESTORED,\n      this.boundHandleWebGLContextRestored_,\n    );\n\n    releaseCanvas(this.canvasCacheKey_);\n\n    delete this.gl_;\n  }\n\n  /**\n   * Clear the buffer & set the viewport to draw.\n   * Post process passes will be initialized here, the first one being bound as a render target for\n   * subsequent draw calls.\n   * @param {import(\"../Map.js\").FrameState} frameState current frame state\n   * @param {boolean} [disableAlphaBlend] If true, no alpha blending will happen.\n   * @param {boolean} [enableDepth] If true, enables depth testing.\n   */\n  prepareDraw(frameState, disableAlphaBlend, enableDepth) {\n    const gl = this.gl_;\n    const canvas = this.getCanvas();\n    const size = frameState.size;\n    const pixelRatio = frameState.pixelRatio;\n\n    if (\n      canvas.width !== size[0] * pixelRatio ||\n      canvas.height !== size[1] * pixelRatio\n    ) {\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\n    // loop backwards in post processes list\n    for (let i = this.postProcessPasses_.length - 1; i >= 0; i--) {\n      this.postProcessPasses_[i].init(frameState);\n    }\n\n    gl.bindTexture(gl.TEXTURE_2D, null);\n\n    gl.clearColor(0.0, 0.0, 0.0, 0.0);\n    gl.depthRange(0.0, 1.0);\n    gl.clearDepth(1.0);\n    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n    gl.enable(gl.BLEND);\n    gl.blendFunc(gl.ONE, disableAlphaBlend ? gl.ZERO : gl.ONE_MINUS_SRC_ALPHA);\n    if (enableDepth) {\n      gl.enable(gl.DEPTH_TEST);\n      gl.depthFunc(gl.LEQUAL);\n    } else {\n      gl.disable(gl.DEPTH_TEST);\n    }\n  }\n\n  /**\n   * @param {WebGLFramebuffer|null} frameBuffer The frame buffer.\n   * @param {WebGLTexture} [texture] The texture.\n   */\n  bindFrameBuffer(frameBuffer, texture) {\n    const gl = this.getGL();\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n    if (texture) {\n      gl.framebufferTexture2D(\n        gl.FRAMEBUFFER,\n        gl.COLOR_ATTACHMENT0,\n        gl.TEXTURE_2D,\n        texture,\n        0,\n      );\n    }\n  }\n\n  /**\n   * Bind the frame buffer from the initial render.\n   */\n  bindInitialFrameBuffer() {\n    const gl = this.getGL();\n    const frameBuffer = this.postProcessPasses_[0].getFrameBuffer();\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n    const texture = this.postProcessPasses_[0].getRenderTargetTexture();\n    gl.framebufferTexture2D(\n      gl.FRAMEBUFFER,\n      gl.COLOR_ATTACHMENT0,\n      gl.TEXTURE_2D,\n      texture,\n      0,\n    );\n  }\n\n  /**\n   * Prepare a program to use a texture.\n   * @param {WebGLTexture} texture The texture.\n   * @param {number} slot The texture slot.\n   * @param {string} uniformName The corresponding uniform name.\n   */\n  bindTexture(texture, slot, uniformName) {\n    const gl = this.gl_;\n    gl.activeTexture(gl.TEXTURE0 + slot);\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.uniform1i(this.getUniformLocation(uniformName), slot);\n  }\n\n  /**\n   * Set up an attribute array buffer for use in the vertex shader.\n   * @param {import(\"./Buffer\").default} buffer The buffer.\n   * @param {string} attributeName The attribute name.\n   * @param {number} size The number of components per attribute vertex.\n   */\n  bindAttribute(buffer, attributeName, size) {\n    const gl = this.getGL();\n    this.bindBuffer(buffer);\n    const index = this.getAttributeLocation(attributeName);\n    gl.enableVertexAttribArray(index);\n    gl.vertexAttribPointer(index, size, gl.FLOAT, false, 0, 0);\n  }\n\n  /**\n   * Clear the render target & bind it for future draw operations.\n   * This is similar to `prepareDraw`, only post processes will not be applied.\n   * Note: the whole viewport will be drawn to the render target, regardless of its size.\n   * @param {import(\"../Map.js\").FrameState} frameState current frame state\n   * @param {import(\"./RenderTarget.js\").default} renderTarget Render target to draw to\n   * @param {boolean} [disableAlphaBlend] If true, no alpha blending will happen.\n   * @param {boolean} [enableDepth] If true, enables depth testing.\n   */\n  prepareDrawToRenderTarget(\n    frameState,\n    renderTarget,\n    disableAlphaBlend,\n    enableDepth,\n  ) {\n    const gl = this.gl_;\n    const size = renderTarget.getSize();\n\n    gl.bindFramebuffer(gl.FRAMEBUFFER, renderTarget.getFramebuffer());\n    gl.bindRenderbuffer(gl.RENDERBUFFER, renderTarget.getDepthbuffer());\n    gl.viewport(0, 0, size[0], size[1]);\n    gl.bindTexture(gl.TEXTURE_2D, renderTarget.getTexture());\n    gl.clearColor(0.0, 0.0, 0.0, 0.0);\n    gl.depthRange(0.0, 1.0);\n    gl.clearDepth(1.0);\n    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n    gl.enable(gl.BLEND);\n    gl.blendFunc(gl.ONE, disableAlphaBlend ? gl.ZERO : gl.ONE_MINUS_SRC_ALPHA);\n    if (enableDepth) {\n      gl.enable(gl.DEPTH_TEST);\n      gl.depthFunc(gl.LEQUAL);\n    } else {\n      gl.disable(gl.DEPTH_TEST);\n    }\n  }\n\n  /**\n   * Execute a draw call based on the currently bound program, texture, buffers, attributes.\n   * @param {number} start Start index.\n   * @param {number} end End index.\n   */\n  drawElements(start, end) {\n    const gl = this.gl_;\n    this.getExtension('OES_element_index_uint');\n\n    const elementType = gl.UNSIGNED_INT;\n    const elementSize = 4;\n\n    const numItems = end - start;\n    const offsetInBytes = start * elementSize;\n    gl.drawElements(gl.TRIANGLES, numItems, elementType, offsetInBytes);\n  }\n\n  /**\n   * Apply the successive post process passes which will eventually render to the actual canvas.\n   * @param {import(\"../Map.js\").FrameState} frameState current frame state\n   * @param {function(WebGLRenderingContext, import(\"../Map.js\").FrameState):void} [preCompose] Called before composing.\n   * @param {function(WebGLRenderingContext, import(\"../Map.js\").FrameState):void} [postCompose] Called before composing.\n   */\n  finalizeDraw(frameState, preCompose, postCompose) {\n    // apply post processes using the next one as target\n    for (let i = 0, ii = this.postProcessPasses_.length; i < ii; i++) {\n      if (i === ii - 1) {\n        this.postProcessPasses_[i].apply(\n          frameState,\n          null,\n          preCompose,\n          postCompose,\n        );\n      } else {\n        this.postProcessPasses_[i].apply(\n          frameState,\n          this.postProcessPasses_[i + 1],\n        );\n      }\n    }\n  }\n\n  /**\n   * @return {HTMLCanvasElement} Canvas.\n   */\n  getCanvas() {\n    return /** @type {HTMLCanvasElement} */ (this.gl_.canvas);\n  }\n\n  /**\n   * Get the WebGL rendering context\n   * @return {WebGLRenderingContext} The rendering context.\n   */\n  getGL() {\n    return this.gl_;\n  }\n\n  /**\n   * Sets the default matrix uniforms for a given frame state. This is called internally in `prepareDraw`.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  applyFrameState(frameState) {\n    const size = frameState.size;\n    const rotation = frameState.viewState.rotation;\n    const pixelRatio = frameState.pixelRatio;\n\n    this.setUniformFloatValue(\n      DefaultUniform.TIME,\n      (Date.now() - this.startTime_) * 0.001,\n    );\n    this.setUniformFloatValue(DefaultUniform.ZOOM, frameState.viewState.zoom);\n    this.setUniformFloatValue(\n      DefaultUniform.RESOLUTION,\n      frameState.viewState.resolution,\n    );\n    this.setUniformFloatValue(DefaultUniform.PIXEL_RATIO, pixelRatio);\n    this.setUniformFloatVec2(DefaultUniform.VIEWPORT_SIZE_PX, [\n      size[0],\n      size[1],\n    ]);\n    this.setUniformFloatValue(DefaultUniform.ROTATION, rotation);\n  }\n\n  /**\n   * Sets the `u_hitDetection` uniform.\n   * @param {boolean} enabled Whether to enable the hit detection code path\n   */\n  applyHitDetectionUniform(enabled) {\n    const loc = this.getUniformLocation(DefaultUniform.HIT_DETECTION);\n    this.getGL().uniform1i(loc, enabled ? 1 : 0);\n\n    // hit detection uses a fixed pixel ratio\n    if (enabled) {\n      this.setUniformFloatValue(DefaultUniform.PIXEL_RATIO, 0.5);\n    }\n  }\n\n  /**\n   * Sets the custom uniforms based on what was given in the constructor. This is called internally in `prepareDraw`.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  applyUniforms(frameState) {\n    const gl = this.gl_;\n\n    let value;\n    let textureSlot = 0;\n    this.uniforms_.forEach((uniform) => {\n      value =\n        typeof uniform.value === 'function'\n          ? uniform.value(frameState)\n          : uniform.value;\n\n      // apply value based on type\n      if (\n        value instanceof HTMLCanvasElement ||\n        value instanceof HTMLImageElement ||\n        value instanceof ImageData ||\n        value instanceof WebGLTexture\n      ) {\n        // create a texture & put data\n        if (value instanceof WebGLTexture && !uniform.texture) {\n          uniform.prevValue = undefined;\n          uniform.texture = value;\n        } else if (!uniform.texture) {\n          uniform.prevValue = undefined;\n          uniform.texture = gl.createTexture();\n        }\n        this.bindTexture(uniform.texture, textureSlot, uniform.name);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n        const imageReady =\n          !(value instanceof HTMLImageElement) ||\n          /** @type {HTMLImageElement} */ (value).complete;\n        if (\n          !(value instanceof WebGLTexture) &&\n          imageReady &&\n          uniform.prevValue !== value\n        ) {\n          uniform.prevValue = value;\n          gl.texImage2D(\n            gl.TEXTURE_2D,\n            0,\n            gl.RGBA,\n            gl.RGBA,\n            gl.UNSIGNED_BYTE,\n            value,\n          );\n        }\n        textureSlot++;\n      } else if (Array.isArray(value) && value.length === 6) {\n        this.setUniformMatrixValue(\n          uniform.name,\n          fromTransform(this.tmpMat4_, value),\n        );\n      } else if (Array.isArray(value) && value.length <= 4) {\n        switch (value.length) {\n          case 2:\n            gl.uniform2f(\n              this.getUniformLocation(uniform.name),\n              value[0],\n              value[1],\n            );\n            return;\n          case 3:\n            gl.uniform3f(\n              this.getUniformLocation(uniform.name),\n              value[0],\n              value[1],\n              value[2],\n            );\n            return;\n          case 4:\n            gl.uniform4f(\n              this.getUniformLocation(uniform.name),\n              value[0],\n              value[1],\n              value[2],\n              value[3],\n            );\n            return;\n          default:\n            return;\n        }\n      } else if (typeof value === 'number') {\n        gl.uniform1f(this.getUniformLocation(uniform.name), value);\n      }\n    });\n  }\n\n  /**\n   * Set up a program for use. The program will be set as the current one. Then, the uniforms used\n   * in the program will be set based on the current frame state and the helper configuration.\n   * @param {WebGLProgram} program Program.\n   * @param {import(\"../Map.js\").FrameState} [frameState] Frame state.\n   */\n  useProgram(program, frameState) {\n    const gl = this.gl_;\n    gl.useProgram(program);\n    this.currentProgram_ = program;\n    if (frameState) {\n      this.applyFrameState(frameState);\n      this.applyUniforms(frameState);\n    }\n  }\n\n  /**\n   * Will attempt to compile a vertex or fragment shader based on source\n   * On error, the shader will be returned but\n   * `gl.getShaderParameter(shader, gl.COMPILE_STATUS)` will return `true`\n   * Use `gl.getShaderInfoLog(shader)` to have details\n   * @param {string} source Shader source\n   * @param {ShaderType} type VERTEX_SHADER or FRAGMENT_SHADER\n   * @return {WebGLShader} Shader object\n   */\n  compileShader(source, type) {\n    const gl = this.gl_;\n    const shader = gl.createShader(type);\n    gl.shaderSource(shader, source);\n    gl.compileShader(shader);\n    return shader;\n  }\n\n  /**\n   * Create a program for a vertex and fragment shader.  Throws if shader compilation fails.\n   * @param {string} fragmentShaderSource Fragment shader source.\n   * @param {string} vertexShaderSource Vertex shader source.\n   * @return {WebGLProgram} Program\n   */\n  getProgram(fragmentShaderSource, vertexShaderSource) {\n    const gl = this.gl_;\n\n    const fragmentShader = this.compileShader(\n      fragmentShaderSource,\n      gl.FRAGMENT_SHADER,\n    );\n\n    const vertexShader = this.compileShader(\n      vertexShaderSource,\n      gl.VERTEX_SHADER,\n    );\n\n    const program = gl.createProgram();\n    gl.attachShader(program, fragmentShader);\n    gl.attachShader(program, vertexShader);\n    gl.linkProgram(program);\n\n    if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n      const message = `Fragment shader compilation failed: ${gl.getShaderInfoLog(\n        fragmentShader,\n      )}`;\n      throw new Error(message);\n    }\n    gl.deleteShader(fragmentShader);\n\n    if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n      const message = `Vertex shader compilation failed: ${gl.getShaderInfoLog(\n        vertexShader,\n      )}`;\n      throw new Error(message);\n    }\n    gl.deleteShader(vertexShader);\n\n    if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n      const message = `GL program linking failed: ${gl.getProgramInfoLog(\n        program,\n      )}`;\n      throw new Error(message);\n    }\n\n    return program;\n  }\n\n  /**\n   * Will get the location from the shader or the cache\n   * @param {string} name Uniform name\n   * @return {WebGLUniformLocation} uniformLocation\n   */\n  getUniformLocation(name) {\n    const programUid = getUid(this.currentProgram_);\n    if (this.uniformLocationsByProgram_[programUid] === undefined) {\n      this.uniformLocationsByProgram_[programUid] = {};\n    }\n    if (this.uniformLocationsByProgram_[programUid][name] === undefined) {\n      this.uniformLocationsByProgram_[programUid][name] =\n        this.gl_.getUniformLocation(this.currentProgram_, name);\n    }\n    return this.uniformLocationsByProgram_[programUid][name];\n  }\n\n  /**\n   * Will get the location from the shader or the cache\n   * @param {string} name Attribute name\n   * @return {number} attribLocation\n   */\n  getAttributeLocation(name) {\n    const programUid = getUid(this.currentProgram_);\n    if (this.attribLocationsByProgram_[programUid] === undefined) {\n      this.attribLocationsByProgram_[programUid] = {};\n    }\n    if (this.attribLocationsByProgram_[programUid][name] === undefined) {\n      this.attribLocationsByProgram_[programUid][name] =\n        this.gl_.getAttribLocation(this.currentProgram_, name);\n    }\n    return this.attribLocationsByProgram_[programUid][name];\n  }\n\n  /**\n   * Sets the given transform to apply the rotation/translation/scaling of the given frame state.\n   * The resulting transform can be used to convert world space coordinates to view coordinates in the [-1, 1] range.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../transform\").Transform} transform Transform to update.\n   * @return {import(\"../transform\").Transform} The updated transform object.\n   */\n  makeProjectionTransform(frameState, transform) {\n    const size = frameState.size;\n    const rotation = frameState.viewState.rotation;\n    const resolution = frameState.viewState.resolution;\n    const center = frameState.viewState.center;\n    composeTransform(\n      transform,\n      0,\n      0,\n      2 / (resolution * size[0]),\n      2 / (resolution * size[1]),\n      -rotation,\n      -center[0],\n      -center[1],\n    );\n    return transform;\n  }\n\n  /**\n   * Give a value for a standard float uniform\n   * @param {string} uniform Uniform name\n   * @param {number} value Value\n   */\n  setUniformFloatValue(uniform, value) {\n    this.gl_.uniform1f(this.getUniformLocation(uniform), value);\n  }\n\n  /**\n   * Give a value for a vec2 uniform\n   * @param {string} uniform Uniform name\n   * @param {Array<number>} value Array of length 4.\n   */\n  setUniformFloatVec2(uniform, value) {\n    this.gl_.uniform2fv(this.getUniformLocation(uniform), value);\n  }\n\n  /**\n   * Give a value for a vec4 uniform\n   * @param {string} uniform Uniform name\n   * @param {Array<number>} value Array of length 4.\n   */\n  setUniformFloatVec4(uniform, value) {\n    this.gl_.uniform4fv(this.getUniformLocation(uniform), value);\n  }\n\n  /**\n   * Give a value for a standard matrix4 uniform\n   * @param {string} uniform Uniform name\n   * @param {Array<number>} value Matrix value\n   */\n  setUniformMatrixValue(uniform, value) {\n    this.gl_.uniformMatrix4fv(this.getUniformLocation(uniform), false, value);\n  }\n\n  /**\n   * Will set the currently bound buffer to an attribute of the shader program. Used by `#enableAttributes`\n   * internally.\n   * @param {string} attribName Attribute name\n   * @param {number} size Number of components per attributes\n   * @param {number} type UNSIGNED_INT, UNSIGNED_BYTE, UNSIGNED_SHORT or FLOAT\n   * @param {number} stride Stride in bytes (0 means attribs are packed)\n   * @param {number} offset Offset in bytes\n   * @private\n   */\n  enableAttributeArray_(attribName, size, type, stride, offset) {\n    const location = this.getAttributeLocation(attribName);\n    // the attribute has not been found in the shaders or is not used; do not enable it\n    if (location < 0) {\n      return;\n    }\n    this.gl_.enableVertexAttribArray(location);\n    this.gl_.vertexAttribPointer(location, size, type, false, stride, offset);\n  }\n\n  /**\n   * Will enable the following attributes to be read from the currently bound buffer,\n   * i.e. tell the GPU where to read the different attributes in the buffer. An error in the\n   * size/type/order of attributes will most likely break the rendering and throw a WebGL exception.\n   * @param {Array<AttributeDescription>} attributes Ordered list of attributes to read from the buffer\n   */\n  enableAttributes(attributes) {\n    const stride = computeAttributesStride(attributes);\n    let offset = 0;\n    for (let i = 0; i < attributes.length; i++) {\n      const attr = attributes[i];\n      this.enableAttributeArray_(\n        attr.name,\n        attr.size,\n        attr.type || FLOAT,\n        stride,\n        offset,\n      );\n      offset += attr.size * getByteSizeFromType(attr.type);\n    }\n  }\n\n  /**\n   * WebGL context was lost\n   * @param {WebGLContextEvent} event The context loss event.\n   * @private\n   */\n  handleWebGLContextLost(event) {\n    clear(this.bufferCache_);\n    this.currentProgram_ = null;\n\n    event.preventDefault();\n  }\n\n  /**\n   * WebGL context was restored\n   * @private\n   */\n  handleWebGLContextRestored() {\n    this.needsToBeRecreated_ = true;\n  }\n\n  /**\n   * Returns whether this helper needs to be recreated, as the context was lost and then restored.\n   * @return {boolean} Whether this helper needs to be recreated.\n   */\n  needsToBeRecreated() {\n    return this.needsToBeRecreated_;\n  }\n\n  /**\n   * Will create or reuse a given webgl texture and apply the given size. If no image data\n   * specified, the texture will be empty, otherwise image data will be used and the `size`\n   * parameter will be ignored.  If a Uint8Array is provided for data, a size must also be provided.\n   * Note: wrap parameters are set to clamp to edge, min filter is set to linear.\n   * @param {Array<number>} size Expected size of the texture\n   * @param {ImageData|HTMLImageElement|HTMLCanvasElement|Uint8Array|null} data Image data/object to bind to the texture\n   * @param {WebGLTexture} [texture] Existing texture to reuse\n   * @param {boolean} [nearest] Use gl.NEAREST for min/mag filter.\n   * @return {WebGLTexture} The generated texture\n   */\n  createTexture(size, data, texture, nearest) {\n    const gl = this.gl_;\n    texture = texture || gl.createTexture();\n    const filter = nearest ? gl.NEAREST : gl.LINEAR;\n\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n    const level = 0;\n    const internalFormat = gl.RGBA;\n    const border = 0;\n    const format = gl.RGBA;\n    const type = gl.UNSIGNED_BYTE;\n\n    if (data instanceof Uint8Array) {\n      gl.texImage2D(\n        gl.TEXTURE_2D,\n        level,\n        internalFormat,\n        size[0],\n        size[1],\n        border,\n        format,\n        type,\n        data,\n      );\n    } else if (data) {\n      gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, format, type, data);\n    } else {\n      gl.texImage2D(\n        gl.TEXTURE_2D,\n        level,\n        internalFormat,\n        size[0],\n        size[1],\n        border,\n        format,\n        type,\n        null,\n      );\n    }\n    return texture;\n  }\n}\n\n/**\n * Compute a stride in bytes based on a list of attributes\n * @param {Array<AttributeDescription>} attributes Ordered list of attributes\n * @return {number} Stride, ie amount of values for each vertex in the vertex buffer\n */\nexport function computeAttributesStride(attributes) {\n  let stride = 0;\n  for (let i = 0; i < attributes.length; i++) {\n    const attr = attributes[i];\n    stride += attr.size * getByteSizeFromType(attr.type);\n  }\n  return stride;\n}\n\n/**\n * Computes the size in byte of an attribute type.\n * @param {AttributeType} type Attribute type\n * @return {number} The size in bytes\n */\nfunction getByteSizeFromType(type) {\n  switch (type) {\n    case AttributeType.UNSIGNED_BYTE:\n      return Uint8Array.BYTES_PER_ELEMENT;\n    case AttributeType.UNSIGNED_SHORT:\n      return Uint16Array.BYTES_PER_ELEMENT;\n    case AttributeType.UNSIGNED_INT:\n      return Uint32Array.BYTES_PER_ELEMENT;\n    case AttributeType.FLOAT:\n    default:\n      return Float32Array.BYTES_PER_ELEMENT;\n  }\n}\n\nexport default WebGLHelper;\n","/**\n * @module ol/webgl/BaseTileRepresentation\n */\n\nimport ImageTile from '../ImageTile.js';\nimport TileState from '../TileState.js';\nimport EventType from '../events/EventType.js';\nimport EventTarget from '../events/Target.js';\nimport {abstract} from '../util.js';\n\n/**\n * @typedef {import(\"../Tile.js\").default} BaseTileType\n */\n\n/**\n * @template {BaseTileType} TileType\n * @typedef {Object} TileRepresentationOptions\n * @property {TileType} tile The tile.\n * @property {import(\"../tilegrid/TileGrid.js\").default} grid Tile grid.\n * @property {import(\"../webgl/Helper.js\").default} helper WebGL helper.\n * @property {number} [gutter=0] The size in pixels of the gutter around image tiles to ignore.\n */\n\n/**\n * @classdesc\n * Base class for representing a tile in a webgl context\n * @template {import(\"../Tile.js\").default} TileType\n * @abstract\n */\nclass BaseTileRepresentation extends EventTarget {\n  /**\n   * @param {TileRepresentationOptions<TileType>} options The tile representation options.\n   */\n  constructor(options) {\n    super();\n\n    /**\n     * @type {TileType}\n     */\n    this.tile;\n\n    /**\n     * @private\n     */\n    this.handleTileChange_ = this.handleTileChange_.bind(this);\n\n    /**\n     * @type {number}\n     * @protected\n     */\n    this.gutter = options.gutter || 0;\n\n    /**\n     * @type {import(\"../webgl/Helper.js\").default}\n     * @protected\n     */\n    this.helper = options.helper;\n\n    this.loaded = false;\n    this.ready = false;\n  }\n\n  /**\n   * @param {TileType} tile Tile.\n   */\n  setTile(tile) {\n    if (tile !== this.tile) {\n      if (this.tile) {\n        this.tile.removeEventListener(EventType.CHANGE, this.handleTileChange_);\n      }\n      this.tile = tile;\n      this.loaded = tile.getState() === TileState.LOADED;\n      if (this.loaded) {\n        this.uploadTile();\n      } else {\n        if (tile instanceof ImageTile) {\n          const image = tile.getImage();\n          if (image instanceof Image && !image.crossOrigin) {\n            image.crossOrigin = 'anonymous';\n          }\n        }\n        tile.addEventListener(EventType.CHANGE, this.handleTileChange_);\n      }\n    }\n  }\n\n  /**\n   * @abstract\n   * @protected\n   */\n  uploadTile() {\n    abstract();\n  }\n\n  setReady() {\n    this.ready = true;\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  handleTileChange_() {\n    if (this.tile.getState() === TileState.LOADED) {\n      this.loaded = true;\n      this.uploadTile();\n    }\n  }\n\n  /**\n   * @param {import(\"./Helper.js\").default} helper The WebGL helper.\n   */\n  setHelper(helper) {\n    this.helper = helper;\n    if (this.helper && this.loaded) {\n      this.uploadTile();\n    }\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    this.setHelper(null);\n    this.tile.removeEventListener(EventType.CHANGE, this.handleTileChange_);\n  }\n}\n\nexport default BaseTileRepresentation;\n","/**\n * @module ol/renderer/webgl/Layer\n */\nimport LayerProperty from '../../layer/Property.js';\nimport RenderEvent from '../../render/Event.js';\nimport RenderEventType from '../../render/EventType.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../../transform.js';\nimport WebGLHelper from '../../webgl/Helper.js';\nimport LayerRenderer from '../Layer.js';\n\n/**\n * @typedef {Object} PostProcessesOptions\n * @property {number} [scaleRatio] Scale ratio; if < 1, the post process will render to a texture smaller than\n * the main canvas that will then be sampled up (useful for saving resource on blur steps).\n * @property {string} [vertexShader] Vertex shader source\n * @property {string} [fragmentShader] Fragment shader source\n * @property {Object<string,import(\"../../webgl/Helper\").UniformValue>} [uniforms] Uniform definitions for the post process step\n */\n\n/**\n * @typedef {Object} Options\n * @property {Object<string,import(\"../../webgl/Helper\").UniformValue>} [uniforms] Uniform definitions for the post process steps\n * @property {Array<PostProcessesOptions>} [postProcesses] Post-processes definitions\n */\n\n/**\n * @classdesc\n * Base WebGL renderer class.\n * Holds all logic related to data manipulation & some common rendering logic\n * @template {import(\"../../layer/Layer.js\").default} LayerType\n * @extends {LayerRenderer<LayerType>}\n */\nclass WebGLLayerRenderer extends LayerRenderer {\n  /**\n   * @param {LayerType} layer Layer.\n   * @param {Options} [options] Options.\n   */\n  constructor(layer, options) {\n    super(layer);\n\n    options = options || {};\n\n    /**\n     * The transform for viewport CSS pixels to rendered pixels.  This transform is only\n     * set before dispatching rendering events.\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.inversePixelTransform_ = createTransform();\n\n    /**\n     * @private\n     */\n    this.postProcesses_ = options.postProcesses;\n\n    /**\n     * @private\n     */\n    this.uniforms_ = options.uniforms;\n\n    /**\n     * @type {WebGLHelper}\n     * @protected\n     */\n    this.helper;\n\n    this.onMapChanged_ = () => {\n      this.clearCache();\n      this.removeHelper();\n    };\n\n    layer.addChangeListener(LayerProperty.MAP, this.onMapChanged_);\n\n    this.dispatchPreComposeEvent = this.dispatchPreComposeEvent.bind(this);\n    this.dispatchPostComposeEvent = this.dispatchPostComposeEvent.bind(this);\n  }\n\n  /**\n   * @param {WebGLRenderingContext} context The WebGL rendering context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  dispatchPreComposeEvent(context, frameState) {\n    const layer = this.getLayer();\n    if (layer.hasListener(RenderEventType.PRECOMPOSE)) {\n      const event = new RenderEvent(\n        RenderEventType.PRECOMPOSE,\n        undefined,\n        frameState,\n        context,\n      );\n      layer.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * @param {WebGLRenderingContext} context The WebGL rendering context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  dispatchPostComposeEvent(context, frameState) {\n    const layer = this.getLayer();\n    if (layer.hasListener(RenderEventType.POSTCOMPOSE)) {\n      const event = new RenderEvent(\n        RenderEventType.POSTCOMPOSE,\n        undefined,\n        frameState,\n        context,\n      );\n      layer.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * Reset options (only handles uniforms).\n   * @param {Options} options Options.\n   */\n  reset(options) {\n    this.uniforms_ = options.uniforms;\n    if (this.helper) {\n      this.helper.setUniforms(this.uniforms_);\n    }\n  }\n\n  /**\n   * @protected\n   */\n  removeHelper() {\n    if (this.helper) {\n      this.helper.dispose();\n      delete this.helper;\n    }\n  }\n\n  /**\n   * Determine whether renderFrame should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    if (this.getLayer().getRenderSource()) {\n      let incrementGroup = true;\n      let groupNumber = -1;\n      let className;\n      for (let i = 0, ii = frameState.layerStatesArray.length; i < ii; i++) {\n        const layer = frameState.layerStatesArray[i].layer;\n        const renderer = layer.getRenderer();\n        if (!(renderer instanceof WebGLLayerRenderer)) {\n          incrementGroup = true;\n          continue;\n        }\n        const layerClassName = layer.getClassName();\n        if (incrementGroup || layerClassName !== className) {\n          groupNumber += 1;\n          incrementGroup = false;\n        }\n        className = layerClassName;\n        if (renderer === this) {\n          break;\n        }\n      }\n\n      const canvasCacheKey =\n        'map/' + frameState.mapId + '/group/' + groupNumber;\n\n      if (\n        !this.helper ||\n        !this.helper.canvasCacheKeyMatches(canvasCacheKey) ||\n        this.helper.needsToBeRecreated()\n      ) {\n        this.removeHelper();\n\n        this.helper = new WebGLHelper({\n          postProcesses: this.postProcesses_,\n          uniforms: this.uniforms_,\n          canvasCacheKey: canvasCacheKey,\n        });\n\n        if (className) {\n          this.helper.getCanvas().className = className;\n        }\n\n        this.afterHelperCreated();\n      }\n    }\n\n    return this.prepareFrameInternal(frameState);\n  }\n\n  /**\n   * @protected\n   */\n  afterHelperCreated() {}\n\n  /**\n   * Determine whether renderFrame should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @protected\n   */\n  prepareFrameInternal(frameState) {\n    return true;\n  }\n\n  /**\n   * @protected\n   */\n  clearCache() {}\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.clearCache();\n    this.removeHelper();\n    this.getLayer()?.removeChangeListener(\n      LayerProperty.MAP,\n      this.onMapChanged_,\n    );\n    super.disposeInternal();\n  }\n\n  /**\n   * @param {import(\"../../render/EventType.js\").default} type Event type.\n   * @param {WebGLRenderingContext} context The rendering context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @private\n   */\n  dispatchRenderEvent_(type, context, frameState) {\n    const layer = this.getLayer();\n    if (layer.hasListener(type)) {\n      composeTransform(\n        this.inversePixelTransform_,\n        0,\n        0,\n        frameState.pixelRatio,\n        -frameState.pixelRatio,\n        0,\n        0,\n        -frameState.size[1],\n      );\n\n      const event = new RenderEvent(\n        type,\n        this.inversePixelTransform_,\n        frameState,\n        context,\n      );\n      layer.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * @param {WebGLRenderingContext} context The rendering context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  preRender(context, frameState) {\n    this.dispatchRenderEvent_(RenderEventType.PRERENDER, context, frameState);\n  }\n\n  /**\n   * @param {WebGLRenderingContext} context The rendering context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  postRender(context, frameState) {\n    this.dispatchRenderEvent_(RenderEventType.POSTRENDER, context, frameState);\n  }\n}\n\nexport default WebGLLayerRenderer;\n","/**\n * @module ol/renderer/webgl/TileLayerBase\n */\nimport TileRange from '../../TileRange.js';\nimport TileState from '../../TileState.js';\nimport {descending} from '../../array.js';\nimport {getIntersection, getRotatedViewport, isEmpty} from '../../extent.js';\nimport {fromUserExtent} from '../../proj.js';\nimport {toSize} from '../../size.js';\nimport LRUCache from '../../structs/LRUCache.js';\nimport {\n  createOrUpdate as createTileCoord,\n  getKey as getTileCoordKey,\n} from '../../tilecoord.js';\nimport {\n  create as createTransform,\n  reset as resetTransform,\n  rotate as rotateTransform,\n  scale as scaleTransform,\n  translate as translateTransform,\n} from '../../transform.js';\nimport {abstract, getUid} from '../../util.js';\nimport {create as createMat4} from '../../vec/mat4.js';\nimport WebGLLayerRenderer from './Layer.js';\n\nexport const Uniforms = {\n  TILE_TRANSFORM: 'u_tileTransform',\n  TRANSITION_ALPHA: 'u_transitionAlpha',\n  DEPTH: 'u_depth',\n  RENDER_EXTENT: 'u_renderExtent', // intersection of layer, source, and view extent\n  PATTERN_ORIGIN: 'u_patternOrigin',\n  RESOLUTION: 'u_resolution',\n  ZOOM: 'u_zoom',\n  GLOBAL_ALPHA: 'u_globalAlpha',\n  PROJECTION_MATRIX: 'u_projectionMatrix',\n  SCREEN_TO_WORLD_MATRIX: 'u_screenToWorldMatrix',\n};\n\n/**\n * Transform a zoom level into a depth value; zoom level zero has a depth value of 0.5, and increasing values\n * have a depth trending towards 0\n * @param {number} z A zoom level.\n * @return {number} A depth value.\n */\nfunction depthForZ(z) {\n  return 1 / (z + 2);\n}\n\n/**\n * @typedef {import(\"../../webgl/BaseTileRepresentation.js\").default<import(\"../../Tile.js\").default>} AbstractTileRepresentation\n */\n/**\n * @typedef {Object} TileRepresentationLookup\n * @property {Set<string>} tileIds The set of tile ids in the lookup.\n * @property {Object<number, Set<AbstractTileRepresentation>>} representationsByZ Tile representations by zoom level.\n */\n\n/**\n * @return {TileRepresentationLookup} A new tile representation lookup.\n */\nexport function newTileRepresentationLookup() {\n  return {tileIds: new Set(), representationsByZ: {}};\n}\n\n/**\n * Check if a tile is already in the tile representation lookup.\n * @param {TileRepresentationLookup} tileRepresentationLookup Lookup of tile representations by zoom level.\n * @param {import(\"../../Tile.js\").default} tile A tile.\n * @return {boolean} The tile is already in the lookup.\n */\nfunction lookupHasTile(tileRepresentationLookup, tile) {\n  return tileRepresentationLookup.tileIds.has(getUid(tile));\n}\n\n/**\n * Add a tile representation to the lookup.\n * @param {TileRepresentationLookup} tileRepresentationLookup Lookup of tile representations by zoom level.\n * @param {AbstractTileRepresentation} tileRepresentation A tile representation.\n * @param {number} z The zoom level.\n */\nfunction addTileRepresentationToLookup(\n  tileRepresentationLookup,\n  tileRepresentation,\n  z,\n) {\n  const representationsByZ = tileRepresentationLookup.representationsByZ;\n  if (!(z in representationsByZ)) {\n    representationsByZ[z] = new Set();\n  }\n  representationsByZ[z].add(tileRepresentation);\n  tileRepresentationLookup.tileIds.add(getUid(tileRepresentation.tile));\n}\n\n/**\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {import(\"../../extent.js\").Extent} extent The frame extent.\n * @return {import(\"../../extent.js\").Extent} Frame extent intersected with layer extents.\n */\nfunction getRenderExtent(frameState, extent) {\n  const layerState = frameState.layerStatesArray[frameState.layerIndex];\n  if (layerState.extent) {\n    extent = getIntersection(\n      extent,\n      fromUserExtent(layerState.extent, frameState.viewState.projection),\n    );\n  }\n  const source = /** @type {import(\"../../source/Tile.js\").default} */ (\n    layerState.layer.getRenderSource()\n  );\n  if (!source.getWrapX()) {\n    const gridExtent = source\n      .getTileGridForProjection(frameState.viewState.projection)\n      .getExtent();\n    if (gridExtent) {\n      extent = getIntersection(extent, gridExtent);\n    }\n  }\n  return extent;\n}\n\n/**\n * @param {import(\"../../source/Tile.js\").default} source The source.\n * @param {import('../../tilecoord.js').TileCoord} tileCoord The tile coordinate.\n * @return {string} The cache key.\n */\nexport function getCacheKey(source, tileCoord) {\n  return `${source.getKey()},${source.getRevision()},${getTileCoordKey(tileCoord)}`;\n}\n\n/**\n * @typedef {Object} Options\n * @property {Object<string, import(\"../../webgl/Helper\").UniformValue>} [uniforms] Additional uniforms\n * made available to shaders.\n * @property {number} [cacheSize=512] The tile representation cache size.\n * @property {Array<import('./Layer.js').PostProcessesOptions>} [postProcesses] Post-processes definitions.\n */\n\n/**\n * @typedef {import(\"../../layer/BaseTile.js\").default} BaseLayerType\n */\n\n/**\n * @classdesc\n * Base WebGL renderer for tile layers.\n * @template {BaseLayerType} LayerType\n * @template {import(\"../../Tile.js\").default} TileType\n * @template {import(\"../../webgl/BaseTileRepresentation.js\").default<TileType>} TileRepresentation\n * @extends {WebGLLayerRenderer<LayerType>}\n */\nclass WebGLBaseTileLayerRenderer extends WebGLLayerRenderer {\n  /**\n   * @param {LayerType} tileLayer Tile layer.\n   * @param {Options} options Options.\n   */\n  constructor(tileLayer, options) {\n    super(tileLayer, {\n      uniforms: options.uniforms,\n      postProcesses: options.postProcesses,\n    });\n\n    /**\n     * The last call to `renderFrame` was completed with all tiles loaded\n     * @type {boolean}\n     */\n    this.renderComplete = false;\n\n    /**\n     * This transform converts representation coordinates to screen coordinates.\n     * @type {import(\"../../transform.js\").Transform}\n     * @private\n     */\n    this.tileTransform_ = createTransform();\n\n    /**\n     * @type {Array<number>}\n     * @protected\n     */\n    this.tempMat4 = createMat4();\n\n    /**\n     * @type {import(\"../../TileRange.js\").default}\n     * @private\n     */\n    this.tempTileRange_ = new TileRange(0, 0, 0, 0);\n\n    /**\n     * @type {import(\"../../tilecoord.js\").TileCoord}\n     * @private\n     */\n    this.tempTileCoord_ = createTileCoord(0, 0, 0);\n\n    /**\n     * @type {import(\"../../size.js\").Size}\n     * @private\n     */\n    this.tempSize_ = [0, 0];\n\n    const cacheSize = options.cacheSize !== undefined ? options.cacheSize : 512;\n    /**\n     * @type {import(\"../../structs/LRUCache.js\").default<TileRepresentation>}\n     * @protected\n     */\n    this.tileRepresentationCache = new LRUCache(cacheSize);\n\n    /**\n     * @protected\n     * @type {import(\"../../Map.js\").FrameState|null}\n     */\n    this.frameState = null;\n\n    /**\n     * @private\n     * @type {import(\"../../proj/Projection.js\").default}\n     */\n    this.renderedProjection_ = undefined;\n  }\n\n  /**\n   * @param {Options} options Options.\n   * @override\n   */\n  reset(options) {\n    super.reset({\n      uniforms: options.uniforms,\n    });\n  }\n\n  /**\n   * Determine whether renderFrame should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrameInternal(frameState) {\n    if (!this.renderedProjection_) {\n      this.renderedProjection_ = frameState.viewState.projection;\n    } else if (frameState.viewState.projection !== this.renderedProjection_) {\n      this.clearCache();\n      this.renderedProjection_ = frameState.viewState.projection;\n    }\n\n    const layer = this.getLayer();\n    const source = layer.getRenderSource();\n    if (!source) {\n      return false;\n    }\n\n    if (isEmpty(getRenderExtent(frameState, frameState.extent))) {\n      return false;\n    }\n    return source.getState() === 'ready';\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../../webgl/BaseTileRepresentation.js\").TileRepresentationOptions<TileType>} options tile representation options\n   * @return {TileRepresentation} A new tile representation\n   * @protected\n   */\n  createTileRepresentation(options) {\n    return abstract();\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../extent.js\").Extent} extent The extent to be rendered.\n   * @param {number} initialZ The zoom level.\n   * @param {TileRepresentationLookup} tileRepresentationLookup The zoom level.\n   * @param {number} preload Number of additional levels to load.\n   */\n  enqueueTiles(\n    frameState,\n    extent,\n    initialZ,\n    tileRepresentationLookup,\n    preload,\n  ) {\n    const viewState = frameState.viewState;\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getRenderSource();\n    const tileGrid = tileSource.getTileGridForProjection(viewState.projection);\n    const gutter = tileSource.getGutterForProjection(viewState.projection);\n\n    const tileSourceKey = getUid(tileSource);\n    if (!(tileSourceKey in frameState.wantedTiles)) {\n      frameState.wantedTiles[tileSourceKey] = {};\n    }\n\n    const wantedTiles = frameState.wantedTiles[tileSourceKey];\n    const tileRepresentationCache = this.tileRepresentationCache;\n\n    const map = tileLayer.getMapInternal();\n    const minZ = Math.max(\n      initialZ - preload,\n      tileGrid.getMinZoom(),\n      tileGrid.getZForResolution(\n        Math.min(\n          tileLayer.getMaxResolution(),\n          map\n            ? map\n                .getView()\n                .getResolutionForZoom(Math.max(tileLayer.getMinZoom(), 0))\n            : tileGrid.getResolution(0),\n        ),\n        tileSource.zDirection,\n      ),\n    );\n    const rotation = viewState.rotation;\n    const viewport = rotation\n      ? getRotatedViewport(\n          viewState.center,\n          viewState.resolution,\n          rotation,\n          frameState.size,\n        )\n      : undefined;\n    for (let z = initialZ; z >= minZ; --z) {\n      const tileRange = tileGrid.getTileRangeForExtentAndZ(\n        extent,\n        z,\n        this.tempTileRange_,\n      );\n\n      const tileResolution = tileGrid.getResolution(z);\n\n      for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n        for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n          if (\n            rotation &&\n            !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)\n          ) {\n            continue;\n          }\n          const tileCoord = createTileCoord(z, x, y, this.tempTileCoord_);\n          const cacheKey = getCacheKey(tileSource, tileCoord);\n\n          /** @type {TileRepresentation} */\n          let tileRepresentation;\n\n          /** @type {TileType} */\n          let tile;\n\n          if (tileRepresentationCache.containsKey(cacheKey)) {\n            tileRepresentation = tileRepresentationCache.get(cacheKey);\n            tile = tileRepresentation.tile;\n          }\n          if (\n            !tileRepresentation ||\n            tileRepresentation.tile.key !== tileSource.getKey()\n          ) {\n            tile = tileSource.getTile(\n              z,\n              x,\n              y,\n              frameState.pixelRatio,\n              viewState.projection,\n            );\n            if (!tile) {\n              continue;\n            }\n          }\n\n          if (lookupHasTile(tileRepresentationLookup, tile)) {\n            continue;\n          }\n\n          if (!tileRepresentation) {\n            tileRepresentation = this.createTileRepresentation({\n              tile: tile,\n              grid: tileGrid,\n              helper: this.helper,\n              gutter: gutter,\n            });\n            tileRepresentationCache.set(cacheKey, tileRepresentation);\n          } else {\n            tileRepresentation.setTile(tile);\n          }\n\n          addTileRepresentationToLookup(\n            tileRepresentationLookup,\n            tileRepresentation,\n            z,\n          );\n\n          const tileQueueKey = tile.getKey();\n          wantedTiles[tileQueueKey] = true;\n\n          if (tile.getState() === TileState.IDLE) {\n            if (!frameState.tileQueue.isKeyQueued(tileQueueKey)) {\n              frameState.tileQueue.enqueue([\n                tile,\n                tileSourceKey,\n                tileGrid.getTileCoordCenter(tileCoord),\n                tileResolution,\n              ]);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {boolean} tilesWithAlpha True if at least one of the rendered tiles has alpha\n   * @protected\n   */\n  beforeTilesRender(frameState, tilesWithAlpha) {\n    this.helper.prepareDraw(this.frameState, !tilesWithAlpha, true);\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} If returns false, tile mask rendering will be skipped\n   * @protected\n   */\n  beforeTilesMaskRender(frameState) {\n    return false;\n  }\n\n  /**\n   * @param {TileRepresentation} tileRepresentation Tile representation\n   * @param {import(\"../../transform.js\").Transform} tileTransform Tile transform\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state\n   * @param {import(\"../../extent.js\").Extent} renderExtent Render extent\n   * @param {number} tileResolution Tile resolution\n   * @param {import(\"../../size.js\").Size} tileSize Tile size\n   * @param {import(\"../../coordinate.js\").Coordinate} tileOrigin Tile origin\n   * @param {import(\"../../extent.js\").Extent} tileExtent tile Extent\n   * @param {number} depth Depth\n   * @param {number} gutter Gutter\n   * @param {number} alpha Alpha\n   * @protected\n   */\n  renderTile(\n    tileRepresentation,\n    tileTransform,\n    frameState,\n    renderExtent,\n    tileResolution,\n    tileSize,\n    tileOrigin,\n    tileExtent,\n    depth,\n    gutter,\n    alpha,\n  ) {}\n\n  /**\n   * @param {TileRepresentation} tileRepresentation Tile representation\n   * @param {number} tileZ Tile Z\n   * @param {import(\"../../extent.js\").Extent} extent Render extent\n   * @param {number} depth Depth\n   * @protected\n   */\n  renderTileMask(tileRepresentation, tileZ, extent, depth) {}\n\n  drawTile_(\n    frameState,\n    tileRepresentation,\n    tileZ,\n    gutter,\n    extent,\n    alphaLookup,\n    tileGrid,\n  ) {\n    if (!tileRepresentation.ready) {\n      return;\n    }\n    const tile = tileRepresentation.tile;\n    const tileCoord = tile.tileCoord;\n    const tileCoordKey = getTileCoordKey(tileCoord);\n    const alpha = tileCoordKey in alphaLookup ? alphaLookup[tileCoordKey] : 1;\n\n    const tileResolution = tileGrid.getResolution(tileZ);\n    const tileSize = toSize(tileGrid.getTileSize(tileZ), this.tempSize_);\n    const tileOrigin = tileGrid.getOrigin(tileZ);\n    const tileExtent = tileGrid.getTileCoordExtent(tileCoord);\n    // tiles with alpha are rendered last to allow blending\n    const depth = alpha < 1 ? -1 : depthForZ(tileZ);\n    if (alpha < 1) {\n      frameState.animate = true;\n    }\n\n    const viewState = frameState.viewState;\n    const centerX = viewState.center[0];\n    const centerY = viewState.center[1];\n\n    const tileWidthWithGutter = tileSize[0] + 2 * gutter;\n    const tileHeightWithGutter = tileSize[1] + 2 * gutter;\n\n    const aspectRatio = tileWidthWithGutter / tileHeightWithGutter;\n\n    const centerI = (centerX - tileOrigin[0]) / (tileSize[0] * tileResolution);\n    const centerJ = (tileOrigin[1] - centerY) / (tileSize[1] * tileResolution);\n\n    const tileScale = viewState.resolution / tileResolution;\n\n    const tileCenterI = tileCoord[1];\n    const tileCenterJ = tileCoord[2];\n\n    resetTransform(this.tileTransform_);\n    scaleTransform(\n      this.tileTransform_,\n      2 / ((frameState.size[0] * tileScale) / tileWidthWithGutter),\n      -2 / ((frameState.size[1] * tileScale) / tileWidthWithGutter),\n    );\n    rotateTransform(this.tileTransform_, viewState.rotation);\n    scaleTransform(this.tileTransform_, 1, 1 / aspectRatio);\n    translateTransform(\n      this.tileTransform_,\n      (tileSize[0] * (tileCenterI - centerI) - gutter) / tileWidthWithGutter,\n      (tileSize[1] * (tileCenterJ - centerJ) - gutter) / tileHeightWithGutter,\n    );\n\n    this.renderTile(\n      /** @type {TileRepresentation} */ (tileRepresentation),\n      this.tileTransform_,\n      frameState,\n      extent,\n      tileResolution,\n      tileSize,\n      tileOrigin,\n      tileExtent,\n      depth,\n      gutter,\n      alpha,\n    );\n  }\n\n  /**\n   * Render the layer.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState) {\n    this.frameState = frameState;\n    this.renderComplete = true;\n    const gl = this.helper.getGL();\n    this.preRender(gl, frameState);\n\n    const viewState = frameState.viewState;\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getRenderSource();\n    const tileGrid = tileSource.getTileGridForProjection(viewState.projection);\n    const gutter = tileSource.getGutterForProjection(viewState.projection);\n    const extent = getRenderExtent(frameState, frameState.extent);\n    const z = tileGrid.getZForResolution(\n      viewState.resolution,\n      tileSource.zDirection,\n    );\n\n    /**\n     * @type {TileRepresentationLookup}\n     */\n    const tileRepresentationLookup = newTileRepresentationLookup();\n\n    const preload = tileLayer.getPreload();\n    if (frameState.nextExtent) {\n      const targetZ = tileGrid.getZForResolution(\n        viewState.nextResolution,\n        tileSource.zDirection,\n      );\n      const nextExtent = getRenderExtent(frameState, frameState.nextExtent);\n      this.enqueueTiles(\n        frameState,\n        nextExtent,\n        targetZ,\n        tileRepresentationLookup,\n        preload,\n      );\n    }\n\n    this.enqueueTiles(frameState, extent, z, tileRepresentationLookup, 0);\n    if (preload > 0) {\n      setTimeout(() => {\n        this.enqueueTiles(\n          frameState,\n          extent,\n          z - 1,\n          tileRepresentationLookup,\n          preload - 1,\n        );\n      }, 0);\n    }\n\n    /**\n     * A lookup of alpha values for tiles at the target rendering resolution\n     * for tiles that are in transition.  If a tile coord key is absent from\n     * this lookup, the tile should be rendered at alpha 1.\n     * @type {Object<string, number>}\n     */\n    const alphaLookup = {};\n\n    let blend = false;\n    const representationsByZ = tileRepresentationLookup.representationsByZ;\n\n    // look for cached tiles to use if a target tile is not ready\n    if (z in representationsByZ) {\n      const uid = getUid(this);\n      const time = frameState.time;\n      for (const tileRepresentation of representationsByZ[z]) {\n        const tile = tileRepresentation.tile;\n        if (tile.getState() === TileState.EMPTY) {\n          continue;\n        }\n        const tileCoord = tile.tileCoord;\n\n        if (tileRepresentation.ready) {\n          const alpha = tile.getAlpha(uid, time);\n          if (alpha === 1) {\n            // no need to look for alt tiles\n            tile.endTransition(uid);\n            continue;\n          }\n          blend = true;\n          const tileCoordKey = getTileCoordKey(tileCoord);\n          alphaLookup[tileCoordKey] = alpha;\n        }\n        this.renderComplete = false;\n\n        // first look for child tiles (at z + 1)\n        const coveredByChildren = this.findAltTiles_(\n          tileGrid,\n          tileCoord,\n          z + 1,\n          tileRepresentationLookup,\n        );\n\n        if (coveredByChildren) {\n          continue;\n        }\n\n        // next look for parent tiles\n        const minZoom = tileGrid.getMinZoom();\n        for (let parentZ = z - 1; parentZ >= minZoom; --parentZ) {\n          const coveredByParent = this.findAltTiles_(\n            tileGrid,\n            tileCoord,\n            parentZ,\n            tileRepresentationLookup,\n          );\n\n          if (coveredByParent) {\n            break;\n          }\n        }\n      }\n    }\n\n    const zs = Object.keys(representationsByZ).map(Number).sort(descending);\n\n    const renderTileMask = this.beforeTilesMaskRender(frameState);\n\n    if (renderTileMask) {\n      for (let j = 0, jj = zs.length; j < jj; ++j) {\n        const tileZ = zs[j];\n        for (const tileRepresentation of representationsByZ[tileZ]) {\n          const tileCoord = tileRepresentation.tile.tileCoord;\n          const tileCoordKey = getTileCoordKey(tileCoord);\n          // do not render the tile mask if alpha < 1\n          if (tileCoordKey in alphaLookup) {\n            continue;\n          }\n          const tileExtent = tileGrid.getTileCoordExtent(tileCoord);\n          this.renderTileMask(\n            /** @type {TileRepresentation} */ (tileRepresentation),\n            tileZ,\n            tileExtent,\n            depthForZ(tileZ),\n          );\n        }\n      }\n    }\n\n    this.beforeTilesRender(frameState, blend);\n\n    for (let j = 0, jj = zs.length; j < jj; ++j) {\n      const tileZ = zs[j];\n      for (const tileRepresentation of representationsByZ[tileZ]) {\n        const tileCoord = tileRepresentation.tile.tileCoord;\n        const tileCoordKey = getTileCoordKey(tileCoord);\n        if (tileCoordKey in alphaLookup) {\n          continue;\n        }\n\n        this.drawTile_(\n          frameState,\n          tileRepresentation,\n          tileZ,\n          gutter,\n          extent,\n          alphaLookup,\n          tileGrid,\n        );\n      }\n    }\n\n    if (z in representationsByZ) {\n      for (const tileRepresentation of representationsByZ[z]) {\n        const tileCoord = tileRepresentation.tile.tileCoord;\n        const tileCoordKey = getTileCoordKey(tileCoord);\n        if (tileCoordKey in alphaLookup) {\n          this.drawTile_(\n            frameState,\n            tileRepresentation,\n            z,\n            gutter,\n            extent,\n            alphaLookup,\n            tileGrid,\n          );\n        }\n      }\n    }\n\n    this.beforeFinalize(frameState);\n    this.helper.finalizeDraw(\n      frameState,\n      this.dispatchPreComposeEvent,\n      this.dispatchPostComposeEvent,\n    );\n\n    const canvas = this.helper.getCanvas();\n\n    const tileRepresentationCache = this.tileRepresentationCache;\n    while (tileRepresentationCache.canExpireCache()) {\n      const tileRepresentation = tileRepresentationCache.pop();\n      tileRepresentation.dispose();\n    }\n\n    this.postRender(gl, frameState);\n    return canvas;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  beforeFinalize(frameState) {\n    return;\n  }\n\n  /**\n   * Look for tiles covering the provided tile coordinate at an alternate\n   * zoom level.  Loaded tiles will be added to the provided tile representation lookup.\n   * @param {import(\"../../tilegrid/TileGrid.js\").default} tileGrid The tile grid.\n   * @param {import(\"../../tilecoord.js\").TileCoord} tileCoord The target tile coordinate.\n   * @param {number} altZ The alternate zoom level.\n   * @param {TileRepresentationLookup} tileRepresentationLookup Lookup of\n   * tile representations by zoom level.\n   * @return {boolean} The tile coordinate is covered by loaded tiles at the alternate zoom level.\n   * @private\n   */\n  findAltTiles_(tileGrid, tileCoord, altZ, tileRepresentationLookup) {\n    const tileRange = tileGrid.getTileRangeForTileCoordAndZ(\n      tileCoord,\n      altZ,\n      this.tempTileRange_,\n    );\n\n    if (!tileRange) {\n      return false;\n    }\n\n    let covered = true;\n    const tileRepresentationCache = this.tileRepresentationCache;\n    const source = this.getLayer().getRenderSource();\n    for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n      for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n        const cacheKey = getCacheKey(source, [altZ, x, y]);\n        let loaded = false;\n        if (tileRepresentationCache.containsKey(cacheKey)) {\n          const tileRepresentation = tileRepresentationCache.get(cacheKey);\n          if (\n            tileRepresentation.ready &&\n            !lookupHasTile(tileRepresentationLookup, tileRepresentation.tile)\n          ) {\n            addTileRepresentationToLookup(\n              tileRepresentationLookup,\n              tileRepresentation,\n              altZ,\n            );\n            loaded = true;\n          }\n        }\n        if (!loaded) {\n          covered = false;\n        }\n      }\n    }\n    return covered;\n  }\n\n  /**\n   * @override\n   */\n  clearCache() {\n    super.clearCache();\n\n    const tileRepresentationCache = this.tileRepresentationCache;\n    tileRepresentationCache.forEach((tileRepresentation) =>\n      tileRepresentation.dispose(),\n    );\n    tileRepresentationCache.clear();\n  }\n\n  /**\n   * @override\n   */\n  afterHelperCreated() {\n    super.afterHelperCreated();\n\n    this.tileRepresentationCache.forEach((tileRepresentation) =>\n      tileRepresentation.setHelper(this.helper),\n    );\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    super.disposeInternal();\n    delete this.frameState;\n  }\n}\n\nexport default WebGLBaseTileLayerRenderer;\n","/**\n * @module ol/renderer/webgl/TileLayer\n */\nimport TileState from '../../TileState.js';\nimport {\n  boundingExtent,\n  containsCoordinate,\n  getIntersection,\n} from '../../extent.js';\nimport {fromUserExtent} from '../../proj.js';\nimport {toSize} from '../../size.js';\nimport {apply as applyTransform} from '../../transform.js';\nimport {fromTransform as mat4FromTransform} from '../../vec/mat4.js';\nimport WebGLArrayBuffer from '../../webgl/Buffer.js';\nimport {AttributeType} from '../../webgl/Helper.js';\nimport TileTexture from '../../webgl/TileTexture.js';\nimport {ELEMENT_ARRAY_BUFFER, STATIC_DRAW} from '../../webgl.js';\nimport WebGLBaseTileLayerRenderer, {\n  Uniforms as BaseUniforms,\n  getCacheKey,\n} from './TileLayerBase.js';\n\nexport const Uniforms = {\n  ...BaseUniforms,\n  TILE_TEXTURE_ARRAY: 'u_tileTextures',\n  TEXTURE_PIXEL_WIDTH: 'u_texturePixelWidth',\n  TEXTURE_PIXEL_HEIGHT: 'u_texturePixelHeight',\n  TEXTURE_RESOLUTION: 'u_textureResolution', // map units per texture pixel\n  TEXTURE_ORIGIN_X: 'u_textureOriginX', // map x coordinate of left edge of texture\n  TEXTURE_ORIGIN_Y: 'u_textureOriginY', // map y coordinate of top edge of texture\n};\n\nexport const Attributes = {\n  TEXTURE_COORD: 'a_textureCoord',\n};\n\n/**\n * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}\n */\nconst attributeDescriptions = [\n  {\n    name: Attributes.TEXTURE_COORD,\n    size: 2,\n    type: AttributeType.FLOAT,\n  },\n];\n\n/**\n * @typedef {Object} Options\n * @property {string} vertexShader Vertex shader source.\n * @property {string} fragmentShader Fragment shader source.\n * @property {Object<string, import(\"../../webgl/Helper\").UniformValue>} [uniforms] Additional uniforms\n * made available to shaders.\n * @property {Array<import(\"../../webgl/PaletteTexture.js\").default>} [paletteTextures] Palette textures.\n * @property {number} [cacheSize=512] The texture cache size.\n * @property {Array<import('./Layer.js').PostProcessesOptions>} [postProcesses] Post-processes definitions.\n */\n\n/**\n * @typedef {import(\"../../webgl/TileTexture.js\").TileType} TileTextureType\n */\n\n/**\n * @typedef {import(\"../../webgl/TileTexture.js\").default} TileTextureRepresentation\n */\n\n/**\n * @classdesc\n * WebGL renderer for tile layers.\n * @template {import(\"../../layer/WebGLTile.js\").default|import(\"../../layer/Flow.js\").default} LayerType\n * @extends {WebGLBaseTileLayerRenderer<LayerType, TileTextureType, TileTextureRepresentation>}\n * @api\n */\nclass WebGLTileLayerRenderer extends WebGLBaseTileLayerRenderer {\n  /**\n   * @param {LayerType} tileLayer Tile layer.\n   * @param {Options} options Options.\n   */\n  constructor(tileLayer, options) {\n    super(tileLayer, options);\n\n    /**\n     * @type {WebGLProgram}\n     * @private\n     */\n    this.program_;\n\n    /**\n     * @private\n     */\n    this.vertexShader_ = options.vertexShader;\n\n    /**\n     * @private\n     */\n    this.fragmentShader_ = options.fragmentShader;\n\n    /**\n     * Tiles are rendered as a quad with the following structure:\n     *\n     *  [P3]---------[P2]\n     *   |`           |\n     *   |  `     B   |\n     *   |    `       |\n     *   |      `     |\n     *   |   A    `   |\n     *   |          ` |\n     *  [P0]---------[P1]\n     *\n     * Triangle A: P0, P1, P3\n     * Triangle B: P1, P2, P3\n     *\n     * @private\n     */\n    this.indices_ = new WebGLArrayBuffer(ELEMENT_ARRAY_BUFFER, STATIC_DRAW);\n    this.indices_.fromArray([0, 1, 3, 1, 2, 3]);\n\n    /**\n     * @type {Array<import(\"../../webgl/PaletteTexture.js\").default>}\n     * @private\n     */\n    this.paletteTextures_ = options.paletteTextures || [];\n  }\n\n  /**\n   * @param {Options} options Options.\n   * @override\n   */\n  reset(options) {\n    super.reset(options);\n    if (this.helper) {\n      const gl = this.helper.getGL();\n      for (const paletteTexture of this.paletteTextures_) {\n        paletteTexture.delete(gl);\n      }\n    }\n\n    this.vertexShader_ = options.vertexShader;\n    this.fragmentShader_ = options.fragmentShader;\n    this.paletteTextures_ = options.paletteTextures || [];\n\n    if (this.helper) {\n      this.program_ = this.helper.getProgram(\n        this.fragmentShader_,\n        this.vertexShader_,\n      );\n      const gl = this.helper.getGL();\n      for (const paletteTexture of this.paletteTextures_) {\n        // upload the texture data\n        paletteTexture.getTexture(gl);\n      }\n    }\n  }\n\n  /**\n   * @override\n   */\n  afterHelperCreated() {\n    super.afterHelperCreated();\n\n    const gl = this.helper.getGL();\n    for (const paletteTexture of this.paletteTextures_) {\n      // upload the texture data\n      paletteTexture.getTexture(gl);\n    }\n\n    this.program_ = this.helper.getProgram(\n      this.fragmentShader_,\n      this.vertexShader_,\n    );\n    this.helper.flushBufferData(this.indices_);\n  }\n\n  /**\n   * @override\n   */\n  removeHelper() {\n    if (this.helper) {\n      const gl = this.helper.getGL();\n      for (const paletteTexture of this.paletteTextures_) {\n        paletteTexture.delete(gl);\n      }\n    }\n\n    super.removeHelper();\n  }\n\n  /**\n   * @override\n   */\n  createTileRepresentation(options) {\n    return new TileTexture(options);\n  }\n\n  /**\n   * @override\n   */\n  beforeTilesRender(frameState, tilesWithAlpha) {\n    super.beforeTilesRender(frameState, tilesWithAlpha);\n    this.helper.useProgram(this.program_, frameState);\n  }\n\n  /**\n   * @override\n   */\n  renderTile(\n    tileTexture,\n    tileTransform,\n    frameState,\n    renderExtent,\n    tileResolution,\n    tileSize,\n    tileOrigin,\n    tileExtent,\n    depth,\n    gutter,\n    alpha,\n  ) {\n    const gl = this.helper.getGL();\n    this.helper.bindBuffer(tileTexture.coords);\n    this.helper.bindBuffer(this.indices_);\n    this.helper.enableAttributes(attributeDescriptions);\n\n    let textureSlot = 0;\n    while (textureSlot < tileTexture.textures.length) {\n      const uniformName = `${Uniforms.TILE_TEXTURE_ARRAY}[${textureSlot}]`;\n      this.helper.bindTexture(\n        tileTexture.textures[textureSlot],\n        textureSlot,\n        uniformName,\n      );\n      ++textureSlot;\n    }\n\n    for (\n      let paletteIndex = 0;\n      paletteIndex < this.paletteTextures_.length;\n      ++paletteIndex\n    ) {\n      const paletteTexture = this.paletteTextures_[paletteIndex];\n      const texture = paletteTexture.getTexture(gl);\n      this.helper.bindTexture(texture, textureSlot, paletteTexture.name);\n      ++textureSlot;\n    }\n\n    const viewState = frameState.viewState;\n\n    const tileWidthWithGutter = tileSize[0] + 2 * gutter;\n    const tileHeightWithGutter = tileSize[1] + 2 * gutter;\n\n    const tile = tileTexture.tile;\n    const tileCoord = tile.tileCoord;\n\n    const tileCenterI = tileCoord[1];\n    const tileCenterJ = tileCoord[2];\n\n    this.helper.setUniformMatrixValue(\n      Uniforms.TILE_TRANSFORM,\n      mat4FromTransform(this.tempMat4, tileTransform),\n    );\n\n    this.helper.setUniformFloatValue(Uniforms.TRANSITION_ALPHA, alpha);\n    this.helper.setUniformFloatValue(Uniforms.DEPTH, depth);\n\n    let gutterExtent = renderExtent;\n    if (gutter > 0) {\n      gutterExtent = tileExtent;\n      getIntersection(gutterExtent, renderExtent, gutterExtent);\n    }\n    this.helper.setUniformFloatVec4(Uniforms.RENDER_EXTENT, gutterExtent);\n\n    this.helper.setUniformFloatValue(Uniforms.RESOLUTION, viewState.resolution);\n    this.helper.setUniformFloatValue(Uniforms.ZOOM, viewState.zoom);\n\n    this.helper.setUniformFloatValue(\n      Uniforms.TEXTURE_PIXEL_WIDTH,\n      tileWidthWithGutter,\n    );\n    this.helper.setUniformFloatValue(\n      Uniforms.TEXTURE_PIXEL_HEIGHT,\n      tileHeightWithGutter,\n    );\n    this.helper.setUniformFloatValue(\n      Uniforms.TEXTURE_RESOLUTION,\n      tileResolution,\n    );\n    this.helper.setUniformFloatValue(\n      Uniforms.TEXTURE_ORIGIN_X,\n      tileOrigin[0] +\n        tileCenterI * tileSize[0] * tileResolution -\n        gutter * tileResolution,\n    );\n    this.helper.setUniformFloatValue(\n      Uniforms.TEXTURE_ORIGIN_Y,\n      tileOrigin[1] -\n        tileCenterJ * tileSize[1] * tileResolution +\n        gutter * tileResolution,\n    );\n\n    this.helper.drawElements(0, this.indices_.getSize());\n  }\n\n  /**\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView} Data at the pixel location.\n   * @override\n   */\n  getData(pixel) {\n    const gl = this.helper.getGL();\n    if (!gl) {\n      return null;\n    }\n\n    const frameState = this.frameState;\n    if (!frameState) {\n      return null;\n    }\n\n    const layer = this.getLayer();\n    const coordinate = applyTransform(\n      frameState.pixelToCoordinateTransform,\n      pixel.slice(),\n    );\n\n    const viewState = frameState.viewState;\n    const layerExtent = layer.getExtent();\n    if (layerExtent) {\n      if (\n        !containsCoordinate(\n          fromUserExtent(layerExtent, viewState.projection),\n          coordinate,\n        )\n      ) {\n        return null;\n      }\n    }\n\n    // determine last source suitable for rendering at coordinate\n    const sources = layer.getSources(\n      boundingExtent([coordinate]),\n      viewState.resolution,\n    );\n    let i, source, tileGrid;\n    for (i = sources.length - 1; i >= 0; --i) {\n      source = sources[i];\n      if (source.getState() === 'ready') {\n        tileGrid = source.getTileGridForProjection(viewState.projection);\n        if (source.getWrapX()) {\n          break;\n        }\n        const gridExtent = tileGrid.getExtent();\n        if (!gridExtent || containsCoordinate(gridExtent, coordinate)) {\n          break;\n        }\n      }\n    }\n    if (i < 0) {\n      return null;\n    }\n\n    const tileTextureCache = this.tileRepresentationCache;\n    for (\n      let z = tileGrid.getZForResolution(viewState.resolution);\n      z >= tileGrid.getMinZoom();\n      --z\n    ) {\n      const tileCoord = tileGrid.getTileCoordForCoordAndZ(coordinate, z);\n      const cacheKey = getCacheKey(source, tileCoord);\n      if (!tileTextureCache.containsKey(cacheKey)) {\n        continue;\n      }\n      const tileTexture = tileTextureCache.get(cacheKey);\n      const tile = tileTexture.tile;\n      if (tile.getState() === TileState.EMPTY) {\n        return null;\n      }\n      if (!tileTexture.loaded) {\n        continue;\n      }\n      const tileOrigin = tileGrid.getOrigin(z);\n      const tileSize = toSize(tileGrid.getTileSize(z));\n      const tileResolution = tileGrid.getResolution(z);\n\n      const col =\n        (coordinate[0] - tileOrigin[0]) / tileResolution -\n        tileCoord[1] * tileSize[0];\n\n      const row =\n        (tileOrigin[1] - coordinate[1]) / tileResolution -\n        tileCoord[2] * tileSize[1];\n\n      return tileTexture.getPixelData(col, row);\n    }\n    return null;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    const helper = this.helper;\n    if (helper) {\n      const gl = helper.getGL();\n      for (const paletteTexture of this.paletteTextures_) {\n        paletteTexture.delete(gl);\n      }\n      this.paletteTextures_.length = 0;\n\n      gl.deleteProgram(this.program_);\n      delete this.program_;\n      helper.deleteBuffer(this.indices_);\n    }\n    super.disposeInternal();\n    delete this.indices_;\n  }\n}\n\nexport default WebGLTileLayerRenderer;\n","/**\n * @module ol/webgl/PaletteTexture\n */\n\nclass PaletteTexture {\n  /**\n   * @param {string} name The name of the texture.\n   * @param {Uint8Array} data The texture data.\n   */\n  constructor(name, data) {\n    this.name = name;\n    this.data = data;\n\n    /**\n     * @type {WebGLTexture|null}\n     * @private\n     */\n    this.texture_ = null;\n  }\n\n  /**\n   * @param {WebGLRenderingContext} gl Rendering context.\n   * @return {WebGLTexture} The texture.\n   */\n  getTexture(gl) {\n    if (!this.texture_) {\n      const texture = gl.createTexture();\n      gl.bindTexture(gl.TEXTURE_2D, texture);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n      gl.texImage2D(\n        gl.TEXTURE_2D,\n        0,\n        gl.RGBA,\n        this.data.length / 4,\n        1,\n        0,\n        gl.RGBA,\n        gl.UNSIGNED_BYTE,\n        this.data,\n      );\n      this.texture_ = texture;\n    }\n    return this.texture_;\n  }\n\n  /**\n   * @param {WebGLRenderingContext} gl Rendering context.\n   */\n  delete(gl) {\n    if (this.texture_) {\n      gl.deleteTexture(this.texture_);\n    }\n    this.texture_ = null;\n  }\n}\n\nexport default PaletteTexture;\n","/**\n * @module ol/expr/gpu\n */\nimport {asArray} from '../color.js';\nimport {Uniforms} from '../renderer/webgl/TileLayer.js';\nimport {toSize} from '../size.js';\nimport PaletteTexture from '../webgl/PaletteTexture.js';\nimport {\n  BooleanType,\n  CallExpression,\n  ColorType,\n  NumberArrayType,\n  NumberType,\n  Ops,\n  SizeType,\n  StringType,\n  parse,\n  typeName,\n} from './expression.js';\n\n/**\n * @param {string} operator Operator\n * @param {CompilationContext} context Compilation context\n * @return {string} A function name based on the operator, unique in the given context\n */\nfunction computeOperatorFunctionName(operator, context) {\n  return `operator_${operator}_${Object.keys(context.functions).length}`;\n}\n\n/**\n * Will return the number as a float with a dot separator, which is required by GLSL.\n * @param {number} v Numerical value.\n * @return {string} The value as string.\n */\nexport function numberToGlsl(v) {\n  const s = v.toString();\n  return s.includes('.') ? s : s + '.0';\n}\n\n/**\n * Will return the number array as a float with a dot separator, concatenated with ', '.\n * @param {Array<number>} array Numerical values array.\n * @return {string} The array as a vector, e. g.: `vec3(1.0, 2.0, 3.0)`.\n */\nexport function arrayToGlsl(array) {\n  if (array.length < 2 || array.length > 4) {\n    throw new Error(\n      '`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.',\n    );\n  }\n  return `vec${array.length}(${array.map(numberToGlsl).join(', ')})`;\n}\n\n/**\n * Will normalize and converts to string a `vec4` color array compatible with GLSL.\n * @param {string|import(\"../color.js\").Color} color Color either in string format or [r, g, b, a] array format,\n * with RGB components in the 0..255 range and the alpha component in the 0..1 range.\n * Note that the final array will always have 4 components.\n * @return {string} The color expressed in the `vec4(1.0, 1.0, 1.0, 1.0)` form.\n */\nexport function colorToGlsl(color) {\n  const array = asArray(color);\n  const alpha = array.length > 3 ? array[3] : 1;\n  return arrayToGlsl([array[0] / 255, array[1] / 255, array[2] / 255, alpha]);\n}\n\n/**\n * Normalizes and converts a number or array toa `vec2` array compatible with GLSL.\n * @param {number|import('../size.js').Size} size Size.\n * @return {string} The color expressed in the `vec4(1.0, 1.0, 1.0, 1.0)` form.\n */\nexport function sizeToGlsl(size) {\n  const array = toSize(size);\n  return arrayToGlsl(array);\n}\n\n/** @type {Object<string, number>} */\nconst stringToFloatMap = {};\nlet stringToFloatCounter = 0;\n\n/**\n * Returns a stable equivalent number for the string literal.\n * @param {string} string String literal value\n * @return {number} Number equivalent\n */\nexport function getStringNumberEquivalent(string) {\n  if (!(string in stringToFloatMap)) {\n    stringToFloatMap[string] = stringToFloatCounter++;\n  }\n  return stringToFloatMap[string];\n}\n\n/**\n * Returns a stable equivalent number for the string literal, for use in shaders. This number is then\n * converted to be a GLSL-compatible string.\n * Note: with a float precision of `mediump`, the amount of unique strings supported is 16,777,216\n * @param {string} string String literal value\n * @return {string} GLSL-compatible string containing a number\n */\nexport function stringToGlsl(string) {\n  return numberToGlsl(getStringNumberEquivalent(string));\n}\n\n/**\n * Get the uniform name given a variable name.\n * @param {string} variableName The variable name.\n * @return {string} The uniform name.\n */\nexport function uniformNameForVariable(variableName) {\n  return 'u_var_' + variableName;\n}\n\n/**\n * @typedef {import('./expression.js').ParsingContext} ParsingContext\n */\n/**\n *\n * @typedef {import(\"./expression.js\").Expression} Expression\n */\n/**\n *\n * @typedef {import(\"./expression.js\").LiteralExpression} LiteralExpression\n */\n\n/**\n * @typedef {Object} CompilationContextProperty\n * @property {string} name Name\n * @property {number} type Resolved property type\n */\n\n/**\n * @typedef {Object} CompilationContextVariable\n * @property {string} name Name\n * @property {number} type Resolved variable type\n */\n\n/**\n * @typedef {Object} CompilationContext\n * @property {boolean} [inFragmentShader] If false, means the expression output should be made for a vertex shader\n * @property {Object<string, CompilationContextProperty>} properties The values for properties used in 'get' expressions.\n * @property {Object<string, CompilationContextVariable>} variables The values for variables used in 'var' expressions.\n * @property {Object<string, string>} functions Lookup of functions used by the style.\n * @property {number} [bandCount] Number of bands per pixel.\n * @property {Array<PaletteTexture>} [paletteTextures] List of palettes used by the style.\n * @property {boolean} featureId Whether the feature ID is used in the expression\n * @property {boolean} geometryType Whether the geometry type is used in the expression\n */\n\n/**\n * @return {CompilationContext} A new compilation context.\n */\nexport function newCompilationContext() {\n  return {\n    inFragmentShader: false,\n    variables: {},\n    properties: {},\n    functions: {},\n    bandCount: 0,\n    featureId: false,\n    geometryType: false,\n  };\n}\n\nconst GET_BAND_VALUE_FUNC = 'getBandValue';\n\nexport const PALETTE_TEXTURE_ARRAY = 'u_paletteTextures';\n\nexport const FEATURE_ID_PROPERTY_NAME = 'featureId';\nexport const GEOMETRY_TYPE_PROPERTY_NAME = 'geometryType';\n\n/**\n * @typedef {string} CompiledExpression\n */\n\n/**\n * @typedef {function(CompilationContext, CallExpression, number): string} Compiler\n * Third argument is the expected value types\n */\n\n/**\n * @param {import('./expression.js').EncodedExpression} encoded The encoded expression.\n * @param {number} type The expected type.\n * @param {import('./expression.js').ParsingContext} parsingContext The parsing context.\n * @param {CompilationContext} compilationContext An existing compilation context\n * @return {CompiledExpression} The compiled expression.\n */\nexport function buildExpression(\n  encoded,\n  type,\n  parsingContext,\n  compilationContext,\n) {\n  const expression = parse(encoded, type, parsingContext);\n  return compile(expression, type, compilationContext);\n}\n\n/**\n * @param {function(Array<CompiledExpression>, CompilationContext): string} output Function that takes in parsed arguments and returns a string\n * @return {function(CompilationContext, import(\"./expression.js\").CallExpression, number): string} Compiler for the call expression\n */\nfunction createCompiler(output) {\n  return (context, expression, type) => {\n    const length = expression.args.length;\n    const args = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      args[i] = compile(expression.args[i], type, context);\n    }\n    return output(args, context);\n  };\n}\n\n/**\n * @type {Object<string, Compiler>}\n */\nconst compilers = {\n  [Ops.Get]: (context, expression) => {\n    const firstArg = /** @type {LiteralExpression} */ (expression.args[0]);\n    const propName = /** @type {string} */ (firstArg.value);\n    const isExisting = propName in context.properties;\n    if (!isExisting) {\n      context.properties[propName] = {\n        name: propName,\n        type: expression.type,\n      };\n    }\n    const prefix = context.inFragmentShader ? 'v_prop_' : 'a_prop_';\n    return prefix + propName;\n  },\n  [Ops.Id]: (context) => {\n    context.featureId = true;\n    const prefix = context.inFragmentShader ? 'v_' : 'a_';\n    return prefix + FEATURE_ID_PROPERTY_NAME;\n  },\n  [Ops.GeometryType]: (context) => {\n    context.geometryType = true;\n    const prefix = context.inFragmentShader ? 'v_' : 'a_';\n    return prefix + GEOMETRY_TYPE_PROPERTY_NAME;\n  },\n  [Ops.LineMetric]: () => 'currentLineMetric', // this variable is assumed to always be present in shaders, default is 0.\n  [Ops.Var]: (context, expression) => {\n    const firstArg = /** @type {LiteralExpression} */ (expression.args[0]);\n    const varName = /** @type {string} */ (firstArg.value);\n    const isExisting = varName in context.variables;\n    if (!isExisting) {\n      context.variables[varName] = {\n        name: varName,\n        type: expression.type,\n      };\n    }\n    return uniformNameForVariable(varName);\n  },\n  [Ops.Resolution]: () => 'u_resolution',\n  [Ops.Zoom]: () => 'u_zoom',\n  [Ops.Time]: () => 'u_time',\n  [Ops.Any]: createCompiler((compiledArgs) => `(${compiledArgs.join(` || `)})`),\n  [Ops.All]: createCompiler((compiledArgs) => `(${compiledArgs.join(` && `)})`),\n  [Ops.Not]: createCompiler(([value]) => `(!${value})`),\n  [Ops.Equal]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} == ${secondValue})`,\n  ),\n  [Ops.NotEqual]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} != ${secondValue})`,\n  ),\n  [Ops.GreaterThan]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} > ${secondValue})`,\n  ),\n  [Ops.GreaterThanOrEqualTo]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} >= ${secondValue})`,\n  ),\n  [Ops.LessThan]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} < ${secondValue})`,\n  ),\n  [Ops.LessThanOrEqualTo]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} <= ${secondValue})`,\n  ),\n  [Ops.Multiply]: createCompiler(\n    (compiledArgs) => `(${compiledArgs.join(' * ')})`,\n  ),\n  [Ops.Divide]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} / ${secondValue})`,\n  ),\n  [Ops.Add]: createCompiler((compiledArgs) => `(${compiledArgs.join(' + ')})`),\n  [Ops.Subtract]: createCompiler(\n    ([firstValue, secondValue]) => `(${firstValue} - ${secondValue})`,\n  ),\n  [Ops.Clamp]: createCompiler(\n    ([value, min, max]) => `clamp(${value}, ${min}, ${max})`,\n  ),\n  [Ops.Mod]: createCompiler(([value, modulo]) => `mod(${value}, ${modulo})`),\n  [Ops.Pow]: createCompiler(([value, power]) => `pow(${value}, ${power})`),\n  [Ops.Abs]: createCompiler(([value]) => `abs(${value})`),\n  [Ops.Floor]: createCompiler(([value]) => `floor(${value})`),\n  [Ops.Ceil]: createCompiler(([value]) => `ceil(${value})`),\n  [Ops.Round]: createCompiler(([value]) => `floor(${value} + 0.5)`),\n  [Ops.Sin]: createCompiler(([value]) => `sin(${value})`),\n  [Ops.Cos]: createCompiler(([value]) => `cos(${value})`),\n  [Ops.Atan]: createCompiler(([firstValue, secondValue]) => {\n    return secondValue !== undefined\n      ? `atan(${firstValue}, ${secondValue})`\n      : `atan(${firstValue})`;\n  }),\n  [Ops.Sqrt]: createCompiler(([value]) => `sqrt(${value})`),\n  [Ops.Match]: createCompiler((compiledArgs) => {\n    const input = compiledArgs[0];\n    const fallback = compiledArgs[compiledArgs.length - 1];\n    let result = null;\n    for (let i = compiledArgs.length - 3; i >= 1; i -= 2) {\n      const match = compiledArgs[i];\n      const output = compiledArgs[i + 1];\n      result = `(${input} == ${match} ? ${output} : ${result || fallback})`;\n    }\n    return result;\n  }),\n  [Ops.Between]: createCompiler(\n    ([value, min, max]) => `(${value} >= ${min} && ${value} <= ${max})`,\n  ),\n  [Ops.Interpolate]: createCompiler(([exponent, input, ...compiledArgs]) => {\n    let result = '';\n    for (let i = 0; i < compiledArgs.length - 2; i += 2) {\n      const stop1 = compiledArgs[i];\n      const output1 = result || compiledArgs[i + 1];\n      const stop2 = compiledArgs[i + 2];\n      const output2 = compiledArgs[i + 3];\n      let ratio;\n      if (exponent === numberToGlsl(1)) {\n        ratio = `(${input} - ${stop1}) / (${stop2} - ${stop1})`;\n      } else {\n        ratio = `(pow(${exponent}, (${input} - ${stop1})) - 1.0) / (pow(${exponent}, (${stop2} - ${stop1})) - 1.0)`;\n      }\n      result = `mix(${output1}, ${output2}, clamp(${ratio}, 0.0, 1.0))`;\n    }\n    return result;\n  }),\n  [Ops.Case]: createCompiler((compiledArgs) => {\n    const fallback = compiledArgs[compiledArgs.length - 1];\n    let result = null;\n    for (let i = compiledArgs.length - 3; i >= 0; i -= 2) {\n      const condition = compiledArgs[i];\n      const output = compiledArgs[i + 1];\n      result = `(${condition} ? ${output} : ${result || fallback})`;\n    }\n    return result;\n  }),\n  [Ops.In]: createCompiler(([needle, ...haystack], context) => {\n    const funcName = computeOperatorFunctionName('in', context);\n    const tests = [];\n    for (let i = 0; i < haystack.length; i += 1) {\n      tests.push(`  if (inputValue == ${haystack[i]}) { return true; }`);\n    }\n    context.functions[funcName] = `bool ${funcName}(float inputValue) {\n${tests.join('\\n')}\n  return false;\n}`;\n    return `${funcName}(${needle})`;\n  }),\n  [Ops.Array]: createCompiler(\n    (args) => `vec${args.length}(${args.join(', ')})`,\n  ),\n  [Ops.Color]: createCompiler((compiledArgs) => {\n    if (compiledArgs.length === 1) {\n      //grayscale\n      return `vec4(vec3(${compiledArgs[0]} / 255.0), 1.0)`;\n    }\n    if (compiledArgs.length === 2) {\n      //grayscale with alpha\n      return `vec4(vec3(${compiledArgs[0]} / 255.0), ${compiledArgs[1]})`;\n    }\n    const rgb = compiledArgs.slice(0, 3).map((color) => `${color} / 255.0`);\n    if (compiledArgs.length === 3) {\n      return `vec4(${rgb.join(', ')}, 1.0)`;\n    }\n    const alpha = compiledArgs[3];\n    return `vec4(${rgb.join(', ')}, ${alpha})`;\n  }),\n  [Ops.Band]: createCompiler(([band, xOffset, yOffset], context) => {\n    if (!(GET_BAND_VALUE_FUNC in context.functions)) {\n      let ifBlocks = '';\n      const bandCount = context.bandCount || 1;\n      for (let i = 0; i < bandCount; i++) {\n        const colorIndex = Math.floor(i / 4);\n        let bandIndex = i % 4;\n        if (i === bandCount - 1 && bandIndex === 1) {\n          // LUMINANCE_ALPHA - band 1 assigned to rgb and band 2 assigned to alpha\n          bandIndex = 3;\n        }\n        const textureName = `${Uniforms.TILE_TEXTURE_ARRAY}[${colorIndex}]`;\n        ifBlocks += `  if (band == ${i + 1}.0) {\n    return texture2D(${textureName}, v_textureCoord + vec2(dx, dy))[${bandIndex}];\n  }\n`;\n      }\n\n      context.functions[GET_BAND_VALUE_FUNC] =\n        `float getBandValue(float band, float xOffset, float yOffset) {\n  float dx = xOffset / ${Uniforms.TEXTURE_PIXEL_WIDTH};\n  float dy = yOffset / ${Uniforms.TEXTURE_PIXEL_HEIGHT};\n${ifBlocks}\n}`;\n    }\n\n    return `${GET_BAND_VALUE_FUNC}(${band}, ${xOffset ?? '0.0'}, ${\n      yOffset ?? '0.0'\n    })`;\n  }),\n  [Ops.Palette]: (context, expression) => {\n    const [index, ...colors] = expression.args;\n    const numColors = colors.length;\n    const palette = new Uint8Array(numColors * 4);\n    for (let i = 0; i < colors.length; i++) {\n      const parsedValue = /** @type {string | Array<number>} */ (\n        /** @type {LiteralExpression} */ (colors[i]).value\n      );\n      const color = asArray(parsedValue);\n      const offset = i * 4;\n      palette[offset] = color[0];\n      palette[offset + 1] = color[1];\n      palette[offset + 2] = color[2];\n      palette[offset + 3] = color[3] * 255;\n    }\n    if (!context.paletteTextures) {\n      context.paletteTextures = [];\n    }\n    const paletteName = `${PALETTE_TEXTURE_ARRAY}[${context.paletteTextures.length}]`;\n    const paletteTexture = new PaletteTexture(paletteName, palette);\n    context.paletteTextures.push(paletteTexture);\n    const compiledIndex = compile(index, NumberType, context);\n    return `texture2D(${paletteName}, vec2((${compiledIndex} + 0.5) / ${numColors}.0, 0.5))`;\n  },\n  // TODO: unimplemented\n  // Ops.Number\n  // Ops.String\n  // Ops.Coalesce\n  // Ops.Concat\n  // Ops.ToString\n};\n\n/**\n * @param {Expression} expression The expression.\n * @param {number} returnType The expected return type.\n * @param {CompilationContext} context The compilation context.\n * @return {CompiledExpression} The compiled expression\n */\nfunction compile(expression, returnType, context) {\n  // operator\n  if (expression instanceof CallExpression) {\n    const compiler = compilers[expression.operator];\n    if (compiler === undefined) {\n      throw new Error(\n        `No compiler defined for this operator: ${JSON.stringify(\n          expression.operator,\n        )}`,\n      );\n    }\n    return compiler(context, expression, returnType);\n  }\n\n  if ((expression.type & NumberType) > 0) {\n    return numberToGlsl(/** @type {number} */ (expression.value));\n  }\n\n  if ((expression.type & BooleanType) > 0) {\n    return expression.value.toString();\n  }\n\n  if ((expression.type & StringType) > 0) {\n    return stringToGlsl(expression.value.toString());\n  }\n\n  if ((expression.type & ColorType) > 0) {\n    return colorToGlsl(\n      /** @type {Array<number> | string} */ (expression.value),\n    );\n  }\n\n  if ((expression.type & NumberArrayType) > 0) {\n    return arrayToGlsl(/** @type {Array<number>} */ (expression.value));\n  }\n\n  if ((expression.type & SizeType) > 0) {\n    return sizeToGlsl(\n      /** @type {number|import('../size.js').Size} */ (expression.value),\n    );\n  }\n\n  throw new Error(\n    `Unexpected expression ${expression.value} (expected type ${typeName(\n      returnType,\n    )})`,\n  );\n}\n","/**\n * @module ol/render/webgl/utils\n */\nimport earcut from 'earcut';\nimport {clamp} from '../../math.js';\nimport {apply as applyTransform} from '../../transform.js';\n\nexport const LINESTRING_ANGLE_COSINE_CUTOFF = 0.985;\n\n/** @type {Array<number>} */\nconst tmpArray_ = [];\n\n/**\n * An object holding positions both in an index and a vertex buffer.\n * @typedef {Object} BufferPositions\n * @property {number} vertexPosition Position in the vertex buffer\n * @property {number} indexPosition Position in the index buffer\n */\nconst bufferPositions_ = {vertexPosition: 0, indexPosition: 0};\n\n/**\n * @param {Float32Array} buffer Buffer\n * @param {number} pos Position\n * @param {number} x X\n * @param {number} y Y\n * @param {number} index Index\n */\nfunction writePointVertex(buffer, pos, x, y, index) {\n  buffer[pos + 0] = x;\n  buffer[pos + 1] = y;\n  buffer[pos + 2] = index;\n}\n\n/**\n * Pushes a quad (two triangles) based on a point geometry\n * @param {Float32Array} instructions Array of render instructions for points.\n * @param {number} elementIndex Index from which render instructions will be read.\n * @param {Float32Array} vertexBuffer Buffer in the form of a typed array.\n * @param {Uint32Array} indexBuffer Buffer in the form of a typed array.\n * @param {number} customAttributesSize Amount of custom attributes for each element.\n * @param {BufferPositions} [bufferPositions] Buffer write positions; if not specified, positions will be set at 0.\n * @return {BufferPositions} New buffer positions where to write next\n * @property {number} vertexPosition New position in the vertex buffer where future writes should start.\n * @property {number} indexPosition New position in the index buffer where future writes should start.\n * @private\n */\nexport function writePointFeatureToBuffers(\n  instructions,\n  elementIndex,\n  vertexBuffer,\n  indexBuffer,\n  customAttributesSize,\n  bufferPositions,\n) {\n  // This is for x, y and index\n  const baseVertexAttrsCount = 3;\n  const baseInstructionsCount = 2;\n  const stride = baseVertexAttrsCount + customAttributesSize;\n\n  const x = instructions[elementIndex + 0];\n  const y = instructions[elementIndex + 1];\n\n  // read custom numerical attributes on the feature\n  const customAttrs = tmpArray_;\n  customAttrs.length = customAttributesSize;\n  for (let i = 0; i < customAttrs.length; i++) {\n    customAttrs[i] = instructions[elementIndex + baseInstructionsCount + i];\n  }\n\n  let vPos = bufferPositions ? bufferPositions.vertexPosition : 0;\n  let iPos = bufferPositions ? bufferPositions.indexPosition : 0;\n  const baseIndex = vPos / stride;\n\n  // push vertices for each of the four quad corners (first standard then custom attributes)\n  writePointVertex(vertexBuffer, vPos, x, y, 0);\n  customAttrs.length &&\n    vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);\n  vPos += stride;\n\n  writePointVertex(vertexBuffer, vPos, x, y, 1);\n  customAttrs.length &&\n    vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);\n  vPos += stride;\n\n  writePointVertex(vertexBuffer, vPos, x, y, 2);\n  customAttrs.length &&\n    vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);\n  vPos += stride;\n\n  writePointVertex(vertexBuffer, vPos, x, y, 3);\n  customAttrs.length &&\n    vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);\n  vPos += stride;\n\n  indexBuffer[iPos++] = baseIndex;\n  indexBuffer[iPos++] = baseIndex + 1;\n  indexBuffer[iPos++] = baseIndex + 3;\n  indexBuffer[iPos++] = baseIndex + 1;\n  indexBuffer[iPos++] = baseIndex + 2;\n  indexBuffer[iPos++] = baseIndex + 3;\n\n  bufferPositions_.vertexPosition = vPos;\n  bufferPositions_.indexPosition = iPos;\n\n  return bufferPositions_;\n}\n\n/**\n * Pushes a single quad to form a line segment; also includes a computation for the join angles with previous and next\n * segment, in order to be able to offset the vertices correctly in the shader.\n * Join angles are between 0 and 2PI.\n * This also computes the length of the current segment and the sum of the join angle tangents in order\n * to store this information on each subsequent segment along the line. This is necessary to correctly render dashes\n * and symbols along the line.\n *\n *   pB (before)                          pA (after)\n *    X             negative             X\n *     \\             offset             /\n *      \\                              /\n *       \\   join              join   /\n *        \\ angle 0          angle 1 /\n *         \\←---                ←---/      positive\n *          \\   ←--          ←--   /        offset\n *           \\     ↑       ↓      /\n *            X────┴───────┴─────X\n *            p0                  p1\n *\n * @param {Float32Array} instructions Array of render instructions for lines.s\n * @param {number} segmentStartIndex Index of the segment start point from which render instructions will be read.\n * @param {number} segmentEndIndex Index of the segment end point from which render instructions will be read.\n * @param {number|null} beforeSegmentIndex Index of the point right before the segment (null if none, e.g this is a line start)\n * @param {number|null} afterSegmentIndex Index of the point right after the segment (null if none, e.g this is a line end)\n * @param {Array<number>} vertexArray Array containing vertices.\n * @param {Array<number>} indexArray Array containing indices.\n * @param {Array<number>} customAttributes Array of custom attributes value\n * @param {import('../../transform.js').Transform} toWorldTransform Transform matrix used to obtain world coordinates from instructions\n * @param {number} currentLength Cumulated length of segments processed so far\n * @param {number} currentAngleTangentSum Cumulated tangents of the join angles processed so far\n * @return {{length: number, angle: number}} Cumulated length with the newly processed segment (in world units), new sum of the join angle tangents\n * @private\n */\nexport function writeLineSegmentToBuffers(\n  instructions,\n  segmentStartIndex,\n  segmentEndIndex,\n  beforeSegmentIndex,\n  afterSegmentIndex,\n  vertexArray,\n  indexArray,\n  customAttributes,\n  toWorldTransform,\n  currentLength,\n  currentAngleTangentSum,\n) {\n  // compute the stride to determine how many vertices were already pushed\n  const baseVertexAttrsCount = 10; // base attributes: x0, y0, m0, x1, y1, m1, angle0, angle1, distance, params\n  const stride = baseVertexAttrsCount + customAttributes.length;\n  const baseIndex = vertexArray.length / stride;\n\n  // The segment is composed of two positions called P0[x0, y0] and P1[x1, y1]\n  // Depending on whether there are points before and after the segment, its final shape\n  // will be different\n  const p0 = [\n    instructions[segmentStartIndex + 0],\n    instructions[segmentStartIndex + 1],\n  ];\n  const p1 = [instructions[segmentEndIndex], instructions[segmentEndIndex + 1]];\n\n  const m0 = instructions[segmentStartIndex + 2];\n  const m1 = instructions[segmentEndIndex + 2];\n\n  // to compute join angles we need to reproject coordinates back in world units\n  const p0world = applyTransform(toWorldTransform, [...p0]);\n  const p1world = applyTransform(toWorldTransform, [...p1]);\n\n  /**\n   * Compute the angle between p0pA and p0pB\n   * @param {import(\"../../coordinate.js\").Coordinate} p0 Point 0\n   * @param {import(\"../../coordinate.js\").Coordinate} pA Point A\n   * @param {import(\"../../coordinate.js\").Coordinate} pB Point B\n   * @return {number} a value in [0, 2PI]\n   */\n  function angleBetween(p0, pA, pB) {\n    const lenA = Math.sqrt(\n      (pA[0] - p0[0]) * (pA[0] - p0[0]) + (pA[1] - p0[1]) * (pA[1] - p0[1]),\n    );\n    const tangentA = [(pA[0] - p0[0]) / lenA, (pA[1] - p0[1]) / lenA];\n    const orthoA = [-tangentA[1], tangentA[0]];\n    const lenB = Math.sqrt(\n      (pB[0] - p0[0]) * (pB[0] - p0[0]) + (pB[1] - p0[1]) * (pB[1] - p0[1]),\n    );\n    const tangentB = [(pB[0] - p0[0]) / lenB, (pB[1] - p0[1]) / lenB];\n\n    // this angle can be clockwise or anticlockwise; hence the computation afterwards\n    const angle =\n      lenA === 0 || lenB === 0\n        ? 0\n        : Math.acos(\n            clamp(tangentB[0] * tangentA[0] + tangentB[1] * tangentA[1], -1, 1),\n          );\n    const isClockwise = tangentB[0] * orthoA[0] + tangentB[1] * orthoA[1] > 0;\n    return !isClockwise ? Math.PI * 2 - angle : angle;\n  }\n\n  // a negative angle indicates a line cap\n  let angle0 = -1;\n  let angle1 = -1;\n  let newAngleTangentSum = currentAngleTangentSum;\n\n  const joinBefore = beforeSegmentIndex !== null;\n  const joinAfter = afterSegmentIndex !== null;\n\n  // add vertices and adapt offsets for P0 in case of join\n  if (joinBefore) {\n    // B for before\n    const pB = [\n      instructions[beforeSegmentIndex],\n      instructions[beforeSegmentIndex + 1],\n    ];\n    const pBworld = applyTransform(toWorldTransform, [...pB]);\n    angle0 = angleBetween(p0world, p1world, pBworld);\n\n    // only add to the sum if the angle isn't too close to 0 or 2PI\n    if (Math.cos(angle0) <= LINESTRING_ANGLE_COSINE_CUTOFF) {\n      newAngleTangentSum += Math.tan((angle0 - Math.PI) / 2);\n    }\n  }\n  // adapt offsets for P1 in case of join; add to angle sum\n  if (joinAfter) {\n    // A for after\n    const pA = [\n      instructions[afterSegmentIndex],\n      instructions[afterSegmentIndex + 1],\n    ];\n    const pAworld = applyTransform(toWorldTransform, [...pA]);\n    angle1 = angleBetween(p1world, p0world, pAworld);\n\n    // only add to the sum if the angle isn't too close to 0 or 2PI\n    if (Math.cos(angle1) <= LINESTRING_ANGLE_COSINE_CUTOFF) {\n      newAngleTangentSum += Math.tan((Math.PI - angle1) / 2);\n    }\n  }\n\n  /**\n   * @param {number} vertexIndex From 0 to 3, indicating position in the quad\n   * @param {number} angleSum Sum of the join angles encountered so far (used to compute distance offset\n   * @return {number} A float value containing both information\n   */\n  function computeParameters(vertexIndex, angleSum) {\n    if (angleSum === 0) {\n      return vertexIndex * 10000;\n    }\n    return Math.sign(angleSum) * (vertexIndex * 10000 + Math.abs(angleSum));\n  }\n\n  // add main segment triangles\n  vertexArray.push(\n    p0[0],\n    p0[1],\n    m0,\n    p1[0],\n    p1[1],\n    m1,\n    angle0,\n    angle1,\n    currentLength,\n    computeParameters(0, currentAngleTangentSum),\n  );\n  vertexArray.push(...customAttributes);\n\n  vertexArray.push(\n    p0[0],\n    p0[1],\n    m0,\n    p1[0],\n    p1[1],\n    m1,\n    angle0,\n    angle1,\n    currentLength,\n    computeParameters(1, currentAngleTangentSum),\n  );\n  vertexArray.push(...customAttributes);\n\n  vertexArray.push(\n    p0[0],\n    p0[1],\n    m0,\n    p1[0],\n    p1[1],\n    m1,\n    angle0,\n    angle1,\n    currentLength,\n    computeParameters(2, currentAngleTangentSum),\n  );\n  vertexArray.push(...customAttributes);\n\n  vertexArray.push(\n    p0[0],\n    p0[1],\n    m0,\n    p1[0],\n    p1[1],\n    m1,\n    angle0,\n    angle1,\n    currentLength,\n    computeParameters(3, currentAngleTangentSum),\n  );\n  vertexArray.push(...customAttributes);\n\n  indexArray.push(\n    baseIndex,\n    baseIndex + 1,\n    baseIndex + 2,\n    baseIndex + 1,\n    baseIndex + 3,\n    baseIndex + 2,\n  );\n\n  return {\n    length:\n      currentLength +\n      Math.sqrt(\n        (p1world[0] - p0world[0]) * (p1world[0] - p0world[0]) +\n          (p1world[1] - p0world[1]) * (p1world[1] - p0world[1]),\n      ),\n    angle: newAngleTangentSum,\n  };\n}\n\n/**\n * Pushes several triangles to form a polygon, including holes\n * @param {Float32Array} instructions Array of render instructions for lines.\n * @param {number} polygonStartIndex Index of the polygon start point from which render instructions will be read.\n * @param {Array<number>} vertexArray Array containing vertices.\n * @param {Array<number>} indexArray Array containing indices.\n * @param {number} customAttributesSize Amount of custom attributes for each element.\n * @return {number} Next polygon instructions index\n * @private\n */\nexport function writePolygonTrianglesToBuffers(\n  instructions,\n  polygonStartIndex,\n  vertexArray,\n  indexArray,\n  customAttributesSize,\n) {\n  const instructionsPerVertex = 2; // x, y\n  const attributesPerVertex = 2 + customAttributesSize;\n  let instructionsIndex = polygonStartIndex;\n  const customAttributes = instructions.slice(\n    instructionsIndex,\n    instructionsIndex + customAttributesSize,\n  );\n  instructionsIndex += customAttributesSize;\n  const ringsCount = instructions[instructionsIndex++];\n  let verticesCount = 0;\n  const holes = new Array(ringsCount - 1);\n  for (let i = 0; i < ringsCount; i++) {\n    verticesCount += instructions[instructionsIndex++];\n    if (i < ringsCount - 1) {\n      holes[i] = verticesCount;\n    }\n  }\n  const flatCoords = instructions.slice(\n    instructionsIndex,\n    instructionsIndex + verticesCount * instructionsPerVertex,\n  );\n\n  // pushing to vertices and indices!! this is where the magic happens\n  const result = earcut(flatCoords, holes, instructionsPerVertex);\n  for (let i = 0; i < result.length; i++) {\n    indexArray.push(result[i] + vertexArray.length / attributesPerVertex);\n  }\n  for (let i = 0; i < flatCoords.length; i += 2) {\n    vertexArray.push(flatCoords[i], flatCoords[i + 1], ...customAttributes);\n  }\n\n  return instructionsIndex + verticesCount * instructionsPerVertex;\n}\n\n/**\n * Returns a texture of 1x1 pixel, white\n * @private\n * @return {ImageData} Image data.\n */\nexport function getBlankImageData() {\n  const canvas = document.createElement('canvas');\n  const image = canvas.getContext('2d').createImageData(1, 1);\n  image.data[0] = 255;\n  image.data[1] = 255;\n  image.data[2] = 255;\n  image.data[3] = 255;\n  return image;\n}\n\n/**\n * Generates a color array based on a numerical id\n * Note: the range for each component is 0 to 1 with 256 steps\n * @param {number} id Id\n * @param {Array<number>} [array] Reusable array\n * @return {Array<number>} Color array containing the encoded id\n */\nexport function colorEncodeId(id, array) {\n  array = array || [];\n  const radix = 256;\n  const divide = radix - 1;\n  array[0] = Math.floor(id / radix / radix / radix) / divide;\n  array[1] = (Math.floor(id / radix / radix) % radix) / divide;\n  array[2] = (Math.floor(id / radix) % radix) / divide;\n  array[3] = (id % radix) / divide;\n  return array;\n}\n\n/**\n * Reads an id from a color-encoded array\n * Note: the expected range for each component is 0 to 1 with 256 steps.\n * @param {Array<number>} color Color array containing the encoded id\n * @return {number} Decoded id\n */\nexport function colorDecodeId(color) {\n  let id = 0;\n  const radix = 256;\n  const mult = radix - 1;\n  id += Math.round(color[0] * radix * radix * radix * mult);\n  id += Math.round(color[1] * radix * radix * mult);\n  id += Math.round(color[2] * radix * mult);\n  id += Math.round(color[3] * mult);\n  return id;\n}\n\n/**\n * @typedef {import('./VectorStyleRenderer.js').AsShaders} StyleAsShaders\n */\n/**\n * @typedef {import('./VectorStyleRenderer.js').AsRule} StyleAsRule\n */\n\n/**\n * Takes in either a Flat Style or an array of shaders (used as input for the webgl vector layer classes)\n * and breaks it down into separate styles to be used by the VectorStyleRenderer class.\n * @param {import('../../style/flat.js').FlatStyleLike | Array<StyleAsShaders> | StyleAsShaders} style Flat style or shaders\n * @return {Array<StyleAsShaders | StyleAsRule>} Separate styles as shaders or rules with a single flat style and a filter\n */\nexport function breakDownFlatStyle(style) {\n  // possible cases:\n  // - single shader\n  // - multiple shaders\n  // - single style\n  // - multiple styles\n  // - multiple rules\n  const asArray = Array.isArray(style) ? style : [style];\n\n  // if array of rules: break rules into separate styles, compute \"else\" filters\n  if ('style' in asArray[0]) {\n    /** @type {Array<StyleAsRule>} */\n    const styles = [];\n    const rules = /** @type {Array<import('../../style/flat.js').Rule>} */ (\n      asArray\n    );\n    const previousFilters = [];\n    for (const rule of rules) {\n      const ruleStyles = Array.isArray(rule.style) ? rule.style : [rule.style];\n      /** @type {import(\"../../expr/expression.js\").EncodedExpression} */\n      let currentFilter = rule.filter;\n      if (rule.else && previousFilters.length) {\n        currentFilter = [\n          'all',\n          ...previousFilters.map((filter) => ['!', filter]),\n        ];\n        if (rule.filter) {\n          currentFilter.push(rule.filter);\n        }\n        if (currentFilter.length < 3) {\n          currentFilter = currentFilter[1];\n        }\n      }\n      if (rule.filter) {\n        previousFilters.push(rule.filter);\n      }\n      /** @type {Array<StyleAsRule>} */\n      const stylesWithFilters = ruleStyles.map((style) => ({\n        style,\n        ...(currentFilter && {filter: currentFilter}),\n      }));\n      styles.push(...stylesWithFilters);\n    }\n    return styles;\n  }\n\n  // if array of shaders: return as is\n  if ('builder' in asArray[0]) {\n    return /** @type {Array<StyleAsShaders>} */ (asArray);\n  }\n\n  return asArray.map(\n    (style) =>\n      /** @type {StyleAsRule} */ ({\n        style,\n      }),\n  );\n}\n","/**\n * @module ol/style/flat\n */\n\n/**\n * @api\n * @fileoverview Vector layers can be styled with an object literal containing properties for\n * stroke, fill, image, and text styles.  The types below can be composed into a single object.\n * For example, a style with both stroke and fill properties could look like this:\n *\n *     const style = {\n *       'stroke-color': 'yellow',\n *       'stroke-width': 1.5,\n *       'fill-color': 'orange',\n *     };\n *\n * See details about the available properties depending on what type of symbolizer should be applied:\n *  {@link module:ol/style/flat~FlatStroke Stroke} - properties for applying a stroke to lines and polygons\n *  {@link module:ol/style/flat~FlatFill Fill} - properties for filling polygons\n *  {@link module:ol/style/flat~FlatText Text} - properties for labeling points, lines, and polygons\n *  {@link module:ol/style/flat~FlatIcon Icon} - properties for rendering points with an icon\n *  {@link module:ol/style/flat~FlatCircle Circle} - properties for rendering points with a circle\n *  {@link module:ol/style/flat~FlatShape Shape} - properties for rendering points with a regular shape\n *\n * To conditionally apply styles based on a filter, a list of {@link module:ol/style/flat~Rule rules} can be used.\n * For example, to style points with a big orange circle if the population is greater than 1 million and\n * a smaller blue circle otherwise:\n *\n *     const rules = [\n *       {\n *         filter: ['>', ['get', 'population'], 1_000_000],\n *         style: {\n *           'circle-radius': 10,\n *           'circle-fill-color': 'red',\n *         }\n *       },\n *       {\n *         else: true,\n *         style: {\n *           'circle-radius': 5,\n *           'circle-fill-color': 'blue',\n *         },\n *       },\n *     ];\n */\n\n/**\n * A literal boolean (e.g. `true`) or an expression that evaluates to a boolean (e.g. `['>', ['get', 'population'], 1_000_000]`).\n *\n * @typedef {boolean|Array} BooleanExpression\n */\n\n/**\n * A literal string (e.g. `'hello'`) or an expression that evaluates to a string (e.g. `['get', 'greeting']`).\n *\n * @typedef {string|Array} StringExpression\n */\n\n/**\n * A literal number (e.g. `42`) or an expression that evaluates to a number (e.g. `['+', 40, 2]`).\n *\n * @typedef {number|Array} NumberExpression\n */\n\n/**\n * A CSS named color (e.g. `'blue'`), an array of 3 RGB values (e.g. `[0, 255, 0]`), an array of 4 RGBA values\n * (e.g. `[0, 255, 0, 0.5]`), or an expression that evaluates to one of these color types (e.g. `['get', 'color']`).\n *\n * @typedef {import(\"../color.js\").Color|string|Array} ColorExpression\n */\n\n/**\n * An array of numbers (e.g. `[1, 2, 3]`) or an expression that evaluates to the same (e.g. `['get', 'values']`).\n *\n * @typedef {Array<number>|Array} NumberArrayExpression\n */\n\n/**\n * An array of two numbers (e.g. `[10, 20]`) or an expression that evaluates to the same (e.g. `['get', 'size']`).\n *\n * @typedef {number|Array<number>|Array} SizeExpression\n */\n\n/**\n * For static styling, the [layer.setStyle()]{@link module:ol/layer/Vector~VectorLayer#setStyle} method\n * can be called with an object literal that has fill, stroke, text, icon, regular shape, and/or circle properties.\n * @api\n *\n * @typedef {FlatFill & FlatStroke & FlatText & FlatIcon & FlatShape & FlatCircle} FlatStyle\n */\n\n/**\n * A flat style literal or an array of the same.\n *\n * @typedef {FlatStyle|Array<FlatStyle>|Array<Rule>} FlatStyleLike\n */\n\n/**\n * Fill style properties applied to polygon features.\n *\n * @typedef {Object} FlatFill\n * @property {ColorExpression} [fill-color] The fill color. `'none'` means no fill and no hit detection (applies to Canvas only).\n * @property {StringExpression} [fill-pattern-src] Fill pattern image source URI. If `fill-color` is defined as well,\n * it will be used to tint this image. (Expressions only in Canvas)\n * @property {SizeExpression} [fill-pattern-size] Fill pattern image size in pixels.\n * Can be used together with `fill-pattern-offset` to define the sub-rectangle to use\n * from a fill pattern image sprite sheet.\n * @property {SizeExpression} [fill-pattern-offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original fill pattern image.\n * @property {import(\"./Icon.js\").IconOrigin} [fill-pattern-offset-origin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`. (WebGL only)\n */\n\n/**\n * Stroke style properties applied to line strings and polygon boundaries. To apply a stroke, at least one of\n * `stroke-color` or `stroke-width` must be provided.\n *\n * @typedef {Object} FlatStroke\n * @property {ColorExpression} [stroke-color] The stroke color.\n * @property {NumberExpression} [stroke-width] Stroke pixel width.\n * @property {StringExpression} [stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {StringExpression} [stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {NumberArrayExpression} [stroke-line-dash] Line dash pattern.\n * @property {NumberExpression} [stroke-line-dash-offset=0] Line dash offset.\n * @property {NumberExpression} [stroke-miter-limit=10] Miter limit.\n * @property {NumberExpression} [stroke-offset] Stroke offset in pixel. A positive value offsets the line to the right,\n * relative to the direction of the line. (WebGL only)\n * @property {string} [stroke-pattern-src] Stroke pattern image source URI. If `stroke-color` is defined as well,\n * it will be used to tint this image. (WebGL only)\n * @property {SizeExpression} [stroke-pattern-offset=[0, 0]] Offset, which, together with the size and the offset origin,\n * define the sub-rectangle to use from the original fill pattern image. (WebGL only)\n * @property {import(\"./Icon.js\").IconOrigin} [stroke-pattern-offset-origin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`. (WebGL only)\n * @property {SizeExpression} [stroke-pattern-size] Stroke pattern image size in pixel. Can be used together with `stroke-pattern-offset` to define the\n * sub-rectangle to use from the origin (sprite) fill pattern image. (WebGL only)\n * @property {NumberExpression} [stroke-pattern-spacing] Spacing between each pattern occurrence in pixels; 0 if undefined.\n * @property {NumberExpression} [z-index] The zIndex of the style.\n */\n\n/**\n * Label style properties applied to all features. At a minimum, a `text-value` must be provided.\n * Note: text style is currently not supported in WebGL layers\n *\n * @typedef {Object} FlatText\n * @property {StringExpression} [text-value] Text content (with `\\n` for line breaks).\n * @property {StringExpression} [text-font='10px sans-serif'] Font style as [CSS `font`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font) value.\n * @property {NumberExpression} [text-max-angle=Math.PI/4] When `text-placement` is set to `'line'`, allow a maximum angle between adjacent characters.\n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).\n * @property {NumberExpression} [text-offset-x=0] Horizontal text offset in pixels. A positive will shift the text right.\n * @property {NumberExpression} [text-offset-y=0] Vertical text offset in pixels. A positive will shift the text down.\n * @property {BooleanExpression} [text-overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceed\n * the width of the polygon at the label position or the length of the path that it follows.\n * @property {StringExpression} [text-placement='point'] Text placement.\n * @property {NumberExpression} [text-repeat] Repeat interval in pixels. When set, the text will be repeated at this interval. Only available when\n * `text-placement` is set to `'line'`. Overrides `text-align`.\n * @property {SizeExpression} [text-scale] Scale.\n * @property {BooleanExpression} [text-rotate-with-view=false] Whether to rotate the text with the view.\n * @property {NumberExpression} [text-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {StringExpression} [text-align] Text alignment. Possible values: `'left'`, `'right'`, `'center'`, `'end'` or `'start'`.\n * Default is `'center'` for `'text-placement': 'point'`. For `'text-placement': 'line'`, the default is to let the renderer choose a\n * placement where `text-max-angle` is not exceeded.\n * @property {StringExpression} [text-justify] Text justification within the text box.\n * If not set, text is justified towards the `textAlign` anchor.\n * Otherwise, use options `'left'`, `'center'`, or `'right'` to justify the text within the text box.\n * **Note:** `text-justify` is ignored for immediate rendering and also for `'text-placement': 'line'`.\n * @property {StringExpression} [text-baseline='middle'] Text base line. Possible values: `'bottom'`, `'top'`, `'middle'`, `'alphabetic'`,\n * `'hanging'`, `'ideographic'`.\n * @property {NumberArrayExpression} [text-padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order of\n * values in the array is `[top, right, bottom, left]`.\n * @property {ColorExpression} [text-fill-color] The fill color. `'none'` means no fill and no hit detection.\n * @property {ColorExpression} [text-background-fill-color] The fill color. `'none'` means no fill and no hit detection.\n * @property {ColorExpression} [text-stroke-color] The stroke color.\n * @property {StringExpression} [text-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {StringExpression} [text-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {NumberArrayExpression} [text-stroke-line-dash] Line dash pattern.\n * @property {NumberExpression} [text-stroke-line-dash-offset=0] Line dash offset.\n * @property {NumberExpression} [text-stroke-miter-limit=10] Miter limit.\n * @property {NumberExpression} [text-stroke-width] Stroke pixel width.\n * @property {ColorExpression} [text-background-stroke-color] The stroke color.\n * @property {StringExpression} [text-background-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {StringExpression} [text-background-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {NumberArrayExpression} [text-background-stroke-line-dash] Line dash pattern.\n * @property {NumberExpression} [text-background-stroke-line-dash-offset=0] Line dash offset.\n * @property {NumberExpression} [text-background-stroke-miter-limit=10] Miter limit.\n * @property {NumberExpression} [text-background-stroke-width] Stroke pixel width.\n * @property {import(\"./Style.js\").DeclutterMode} [text-declutter-mode] Declutter mode\n * @property {NumberExpression} [z-index] The zIndex of the style.\n */\n\n/**\n * Icon style properties applied to point features. `icon-src` must be provided to render\n * points with an icon.\n *\n * @typedef {Object} FlatIcon\n * @property {string} [icon-src] Image source URI.\n * @property {NumberArrayExpression} [icon-anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./Icon.js\").IconOrigin} [icon-anchor-origin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./Icon.js\").IconAnchorUnits} [icon-anchor-x-units='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./Icon.js\").IconAnchorUnits} [icon-anchor-y-units='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {ColorExpression} [icon-color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [icon-cross-origin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `icon-cross-origin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {SizeExpression} [icon-offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {NumberArrayExpression} [icon-displacement=[0,0]] Displacement of the icon.\n * @property {import(\"./Icon.js\").IconOrigin} [icon-offset-origin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {NumberExpression} [icon-opacity=1] Opacity of the icon.\n * @property {SizeExpression} [icon-scale=1] Scale.\n * @property {NumberExpression} [icon-width] Width of the icon. If not specified, the actual image width will be used. Cannot be combined\n * with `scale`. (Expressions only in WebGL)\n * @property {NumberExpression} [icon-height] Height of the icon. If not specified, the actual image height will be used. Cannot be combined\n * with `scale`. (Expressions only in WebGL)\n * @property {NumberExpression} [icon-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {BooleanExpression} [icon-rotate-with-view=false] Whether to rotate the icon with the view. (Expressions only supported in Canvas)\n * @property {SizeExpression} [icon-size] Icon size in pixel. Can be used together with `icon-offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image. (Expressions only in WebGL)\n * @property {import(\"./Style.js\").DeclutterMode} [icon-declutter-mode] Declutter mode (Canvas only)\n * @property {NumberExpression} [z-index] The zIndex of the style. (Canvas only)\n */\n\n/**\n * Regular shape style properties for rendering point features. At least `shape-points` must be provided.\n *\n * @typedef {Object} FlatShape\n * @property {NumberExpression} [shape-points] Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides. (Expressions only in WebGL)\n * @property {ColorExpression} [shape-fill-color] The fill color. `'none'` means no fill and no hit detection.\n * @property {ColorExpression} [shape-stroke-color] The stroke color.\n * @property {NumberExpression} [shape-stroke-width] Stroke pixel width.\n * @property {StringExpression} [shape-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`. (Canvas only)\n * @property {StringExpression} [shape-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`. (Canvas only)\n * @property {NumberArrayExpression} [shape-stroke-line-dash] Line dash pattern. (Canvas only)\n * @property {NumberExpression} [shape-stroke-line-dash-offset=0] Line dash offset. (Canvas only)\n * @property {NumberExpression} [shape-stroke-miter-limit=10] Miter limit. (Canvas only)\n * @property {NumberExpression} [shape-radius] Radius of a regular polygon. (Expressions only in WebGL)\n * @property {NumberExpression} [shape-radius2] Second radius to make a star instead of a regular polygon. (Expressions only in WebGL)\n * @property {NumberExpression} [shape-angle=0] Shape's angle in radians. A value of 0 will have one of the shape's point facing up. (Expressions only in WebGL)\n * @property {NumberArrayExpression} [shape-displacement=[0,0]] Displacement of the shape\n * @property {NumberExpression} [shape-opacity] Shape opacity. (WebGL only)\n * @property {NumberExpression} [shape-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {BooleanExpression} [shape-rotate-with-view=false] Whether to rotate the shape with the view. (Expression only supported in Canvas)\n * @property {SizeExpression} [shape-scale=1] Scale. Unless two-dimensional scaling is required a better\n * result may be obtained with appropriate settings for `shape-radius` and `shape-radius2`.\n * @property {import(\"./Style.js\").DeclutterMode} [shape-declutter-mode] Declutter mode. (Canvas only)\n * @property {NumberExpression} [z-index] The zIndex of the style. (Canvas only)\n */\n\n/**\n * Circle style properties for rendering point features. At least `circle-radius` must be provided.\n *\n * @typedef {Object} FlatCircle\n * @property {NumberExpression} [circle-radius] Circle radius.\n * @property {ColorExpression} [circle-fill-color] The fill color. `'none'` means no fill and no hit detection.\n * @property {ColorExpression} [circle-stroke-color] The stroke color.\n * @property {NumberExpression} [circle-stroke-width] Stroke pixel width.\n * @property {StringExpression} [circle-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`. (Canvas only)\n * @property {StringExpression} [circle-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`. (Canvas only)\n * @property {NumberArrayExpression} [circle-stroke-line-dash] Line dash pattern. (Canvas only)\n * @property {NumberExpression} [circle-stroke-line-dash-offset=0] Line dash offset. (Canvas only)\n * @property {NumberExpression} [circle-stroke-miter-limit=10] Miter limit. (Canvas only)\n * @property {NumberArrayExpression} [circle-displacement=[0,0]] displacement\n * @property {SizeExpression} [circle-scale=1] Scale. A two-dimensional scale will produce an ellipse.\n * Unless two-dimensional scaling is required a better result may be obtained with an appropriate setting for `circle-radius`.\n * @property {NumberExpression} [circle-opacity] Circle opacity. (WebGL only)\n * @property {NumberExpression} [circle-rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two-dimensional scale).\n * @property {BooleanExpression} [circle-rotate-with-view=false] Whether to rotate the shape with the view (Expression only supported in Canvas)\n * (meaningful only when used in conjunction with a two-dimensional scale).\n * @property {import(\"./Style.js\").DeclutterMode} [circle-declutter-mode] Declutter mode (Canvas only)\n * @property {NumberExpression} [z-index] The zIndex of the style. (Canvas only)\n */\n\n/**\n * These default style properties are applied when no other style is given.\n *\n * @typedef {Object} DefaultStyle\n * @property {string} fill-color `'rgba(255,255,255,0.4)'`\n * @property {string} stroke-color `'#3399CC'`\n * @property {number} stroke-width `1.25`\n * @property {number} circle-radius `5`\n * @property {string} circle-fill-color `'rgba(255,255,255,0.4)'`\n * @property {number} circle-stroke-width `1.25`\n * @property {string} circle-stroke-color `'#3399CC'`\n */\n\n/**\n * @return {DefaultStyle} The default flat style.\n */\nexport function createDefaultStyle() {\n  return {\n    'fill-color': 'rgba(255,255,255,0.4)',\n    'stroke-color': '#3399CC',\n    'stroke-width': 1.25,\n    'circle-radius': 5,\n    'circle-fill-color': 'rgba(255,255,255,0.4)',\n    'circle-stroke-width': 1.25,\n    'circle-stroke-color': '#3399CC',\n  };\n}\n\n/**\n * A rule is used to conditionally apply a style. If the rule's filter evaluates to true,\n * the style will be applied.\n *\n * @typedef {Object} Rule\n * @property {FlatStyle|Array<FlatStyle>} style The style to be applied if the filter matches.\n * @property {import(\"../expr/expression.js\").EncodedExpression} [filter] The filter used\n * to determine if a style applies. If no filter is included, the rule always applies\n * (unless it is an else rule).\n * @property {boolean} [else] If true, the rule applies only if no other previous rule applies.\n * If the else rule also has a filter, the rule will not apply if the filter does not match.\n */\n\n/**\n * Style variables are provided as an object. The variables can be read in a {@link import(\"../expr/expression.js\").ExpressionValue style expression}\n * using the `['var', 'varName']` operator.\n * Each variable must hold a literal value (not an expression).\n * @typedef {Object<string, number|Array<number>|string|boolean>} StyleVariables\n */\n","/**\n * Class for generating shaders from literal style objects\n * @module ol/webgl/ShaderBuilder\n */\nimport {colorToGlsl, numberToGlsl, stringToGlsl} from '../expr/gpu.js';\nimport {LINESTRING_ANGLE_COSINE_CUTOFF} from '../render/webgl/utils.js';\nimport {createDefaultStyle} from '../style/flat.js';\n\nexport const COMMON_HEADER = `#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_screenToWorldMatrix;\nuniform vec2 u_viewportSizePx;\nuniform float u_pixelRatio;\nuniform float u_globalAlpha;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\nuniform float u_rotation;\nuniform vec4 u_renderExtent;\nuniform vec2 u_patternOrigin;\nuniform float u_depth;\nuniform mediump int u_hitDetection;\n\nconst float PI = 3.141592653589793238;\nconst float TWO_PI = 2.0 * PI;\nfloat currentLineMetric = 0.; // an actual value will be used in the stroke shaders\n`;\n\nconst DEFAULT_STYLE = createDefaultStyle();\n\n/**\n * @typedef {Object} VaryingDescription\n * @property {string} name Varying name, as will be declared in the header.\n * @property {string} type Varying type, either `float`, `vec2`, `vec4`...\n * @property {string} expression Expression which will be assigned to the varying in the vertex shader, and\n * passed on to the fragment shader.\n */\n\n/**\n * @classdesc\n * This class implements a classic builder pattern for generating many different types of shaders.\n * Methods can be chained, e. g.:\n *\n * ```js\n * const shader = new ShaderBuilder()\n *   .addVarying('v_width', 'float', 'a_width')\n *   .addUniform('u_time')\n *   .setColorExpression('...')\n *   .setSymbolSizeExpression('...')\n *   .getSymbolFragmentShader();\n * ```\n *\n * A note on [alpha premultiplication](https://en.wikipedia.org/wiki/Alpha_compositing#Straight_versus_premultiplied):\n * The ShaderBuilder class expects all colors to **not having been alpha-premultiplied!** This is because alpha\n * premultiplication is done at the end of each fragment shader.\n */\nexport class ShaderBuilder {\n  constructor() {\n    /**\n     * Uniforms; these will be declared in the header (should include the type).\n     * @type {Array<string>}\n     * @private\n     */\n    this.uniforms_ = [];\n\n    /**\n     * Attributes; these will be declared in the header (should include the type).\n     * @type {Array<string>}\n     * @private\n     */\n    this.attributes_ = [];\n\n    /**\n     * Varyings with a name, a type and an expression.\n     * @type {Array<VaryingDescription>}\n     * @private\n     */\n    this.varyings_ = [];\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hasSymbol_ = false;\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.symbolSizeExpression_ = `vec2(${numberToGlsl(\n      DEFAULT_STYLE['circle-radius'],\n    )} + ${numberToGlsl(DEFAULT_STYLE['circle-stroke-width'] * 0.5)})`;\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.symbolRotationExpression_ = '0.0';\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.symbolOffsetExpression_ = 'vec2(0.0)';\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.symbolColorExpression_ = colorToGlsl(\n      /** @type {string} */ (DEFAULT_STYLE['circle-fill-color']),\n    );\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.texCoordExpression_ = 'vec4(0.0, 0.0, 1.0, 1.0)';\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.discardExpression_ = 'false';\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.symbolRotateWithView_ = false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hasStroke_ = false;\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.strokeWidthExpression_ = numberToGlsl(DEFAULT_STYLE['stroke-width']);\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.strokeColorExpression_ = colorToGlsl(\n      /** @type {string} */ (DEFAULT_STYLE['stroke-color']),\n    );\n\n    /**\n     * @private\n     */\n    this.strokeOffsetExpression_ = '0.';\n\n    /**\n     * @private\n     */\n    this.strokeCapExpression_ = stringToGlsl('round');\n\n    /**\n     * @private\n     */\n    this.strokeJoinExpression_ = stringToGlsl('round');\n\n    /**\n     * @private\n     */\n    this.strokeMiterLimitExpression_ = '10.';\n\n    /**\n     * @private\n     */\n    this.strokeDistanceFieldExpression_ = '-1000.';\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hasFill_ = false;\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.fillColorExpression_ = colorToGlsl(\n      /** @type {string} */ (DEFAULT_STYLE['fill-color']),\n    );\n\n    /**\n     * @type {Array<string>}\n     * @private\n     */\n    this.vertexShaderFunctions_ = [];\n\n    /**\n     * @type {Array<string>}\n     * @private\n     */\n    this.fragmentShaderFunctions_ = [];\n  }\n\n  /**\n   * Adds a uniform accessible in both fragment and vertex shaders.\n   * The given name should include a type, such as `sampler2D u_texture`.\n   * @param {string} name Uniform name\n   * @return {ShaderBuilder} the builder object\n   */\n  addUniform(name) {\n    this.uniforms_.push(name);\n    return this;\n  }\n\n  /**\n   * Adds an attribute accessible in the vertex shader, read from the geometry buffer.\n   * The given name should include a type, such as `vec2 a_position`.\n   * @param {string} name Attribute name\n   * @return {ShaderBuilder} the builder object\n   */\n  addAttribute(name) {\n    this.attributes_.push(name);\n    return this;\n  }\n\n  /**\n   * Adds a varying defined in the vertex shader and accessible from the fragment shader.\n   * The type and expression of the varying have to be specified separately.\n   * @param {string} name Varying name\n   * @param {'float'|'vec2'|'vec3'|'vec4'} type Type\n   * @param {string} expression Expression used to assign a value to the varying.\n   * @return {ShaderBuilder} the builder object\n   */\n  addVarying(name, type, expression) {\n    this.varyings_.push({\n      name: name,\n      type: type,\n      expression: expression,\n    });\n    return this;\n  }\n\n  /**\n   * Sets an expression to compute the size of the shape.\n   * This expression can use all the uniforms and attributes available\n   * in the vertex shader, and should evaluate to a `vec2` value.\n   * @param {string} expression Size expression\n   * @return {ShaderBuilder} the builder object\n   */\n  setSymbolSizeExpression(expression) {\n    this.hasSymbol_ = true;\n    this.symbolSizeExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @return {string} The current symbol size expression\n   */\n  getSymbolSizeExpression() {\n    return this.symbolSizeExpression_;\n  }\n\n  /**\n   * Sets an expression to compute the rotation of the shape.\n   * This expression can use all the uniforms and attributes available\n   * in the vertex shader, and should evaluate to a `float` value in radians.\n   * @param {string} expression Size expression\n   * @return {ShaderBuilder} the builder object\n   */\n  setSymbolRotationExpression(expression) {\n    this.symbolRotationExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * Sets an expression to compute the offset of the symbol from the point center.\n   * This expression can use all the uniforms and attributes available\n   * in the vertex shader, and should evaluate to a `vec2` value.\n   * @param {string} expression Offset expression\n   * @return {ShaderBuilder} the builder object\n   */\n  setSymbolOffsetExpression(expression) {\n    this.symbolOffsetExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @return {string} The current symbol offset expression\n   */\n  getSymbolOffsetExpression() {\n    return this.symbolOffsetExpression_;\n  }\n\n  /**\n   * Sets an expression to compute the color of the shape.\n   * This expression can use all the uniforms, varyings and attributes available\n   * in the fragment shader, and should evaluate to a `vec4` value.\n   * @param {string} expression Color expression\n   * @return {ShaderBuilder} the builder object\n   */\n  setSymbolColorExpression(expression) {\n    this.hasSymbol_ = true;\n    this.symbolColorExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @return {string} The current symbol color expression\n   */\n  getSymbolColorExpression() {\n    return this.symbolColorExpression_;\n  }\n\n  /**\n   * Sets an expression to compute the texture coordinates of the vertices.\n   * This expression can use all the uniforms and attributes available\n   * in the vertex shader, and should evaluate to a `vec4` value.\n   * @param {string} expression Texture coordinate expression\n   * @return {ShaderBuilder} the builder object\n   */\n  setTextureCoordinateExpression(expression) {\n    this.texCoordExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * Sets an expression to determine whether a fragment (pixel) should be discarded,\n   * i.e. not drawn at all.\n   * This expression can use all the uniforms, varyings and attributes available\n   * in the fragment shader, and should evaluate to a `bool` value (it will be\n   * used in an `if` statement)\n   * @param {string} expression Fragment discard expression\n   * @return {ShaderBuilder} the builder object\n   */\n  setFragmentDiscardExpression(expression) {\n    this.discardExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @return {string} The current fragment discard expression\n   */\n  getFragmentDiscardExpression() {\n    return this.discardExpression_;\n  }\n\n  /**\n   * Sets whether the symbols should rotate with the view or stay aligned with the map.\n   * Note: will only be used for point geometry shaders.\n   * @param {boolean} rotateWithView Rotate with view\n   * @return {ShaderBuilder} the builder object\n   */\n  setSymbolRotateWithView(rotateWithView) {\n    this.symbolRotateWithView_ = rotateWithView;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Stroke width expression, returning value in pixels\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeWidthExpression(expression) {\n    this.hasStroke_ = true;\n    this.strokeWidthExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Stroke color expression, evaluate to `vec4`: can rely on currentLengthPx and currentRadiusPx\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeColorExpression(expression) {\n    this.hasStroke_ = true;\n    this.strokeColorExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @return {string} The current stroke color expression\n   */\n  getStrokeColorExpression() {\n    return this.strokeColorExpression_;\n  }\n\n  /**\n   * @param {string} expression Stroke color expression, evaluate to `float`\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeOffsetExpression(expression) {\n    this.strokeOffsetExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Stroke line cap expression, evaluate to `float`\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeCapExpression(expression) {\n    this.strokeCapExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Stroke line join expression, evaluate to `float`\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeJoinExpression(expression) {\n    this.strokeJoinExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Stroke miter limit expression, evaluate to `float`\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeMiterLimitExpression(expression) {\n    this.strokeMiterLimitExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Stroke distance field expression, evaluate to `float`\n   * This can override the default distance field; can rely on currentLengthPx and currentRadiusPx\n   * @return {ShaderBuilder} the builder object\n   */\n  setStrokeDistanceFieldExpression(expression) {\n    this.strokeDistanceFieldExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @param {string} expression Fill color expression, evaluate to `vec4`\n   * @return {ShaderBuilder} the builder object\n   */\n  setFillColorExpression(expression) {\n    this.hasFill_ = true;\n    this.fillColorExpression_ = expression;\n    return this;\n  }\n\n  /**\n   * @return {string} The current fill color expression\n   */\n  getFillColorExpression() {\n    return this.fillColorExpression_;\n  }\n\n  addVertexShaderFunction(code) {\n    if (this.vertexShaderFunctions_.includes(code)) {\n      return;\n    }\n    this.vertexShaderFunctions_.push(code);\n  }\n  addFragmentShaderFunction(code) {\n    if (this.fragmentShaderFunctions_.includes(code)) {\n      return;\n    }\n    this.fragmentShaderFunctions_.push(code);\n  }\n\n  /**\n   * Generates a symbol vertex shader from the builder parameters\n   * @return {string|null} The full shader as a string; null if no size or color specified\n   */\n  getSymbolVertexShader() {\n    if (!this.hasSymbol_) {\n      return null;\n    }\n\n    return `${COMMON_HEADER}\n${this.uniforms_\n  .map(function (uniform) {\n    return 'uniform ' + uniform + ';';\n  })\n  .join('\\n')}\nattribute vec2 a_position;\nattribute float a_index;\nattribute vec4 a_hitColor;\n${this.attributes_\n  .map(function (attribute) {\n    return 'attribute ' + attribute + ';';\n  })\n  .join('\\n')}\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\nvarying vec4 v_hitColor;\nvarying vec2 v_centerPx;\nvarying float v_angle;\nvarying vec2 v_quadSizePx;\n${this.varyings_\n  .map(function (varying) {\n    return 'varying ' + varying.type + ' ' + varying.name + ';';\n  })\n  .join('\\n')}\n${this.vertexShaderFunctions_.join('\\n')}\nvec2 pxToScreen(vec2 coordPx) {\n  vec2 scaled = coordPx / u_viewportSizePx / 0.5;\n  return scaled;\n}\n\nvec2 screenToPx(vec2 coordScreen) {\n  return (coordScreen * 0.5 + 0.5) * u_viewportSizePx;\n}\n\nvoid main(void) {\n  v_quadSizePx = ${this.symbolSizeExpression_};\n  vec2 halfSizePx = v_quadSizePx * 0.5;\n  vec2 centerOffsetPx = ${this.symbolOffsetExpression_};\n  vec2 offsetPx = centerOffsetPx;\n  if (a_index == 0.0) {\n    offsetPx -= halfSizePx;\n  } else if (a_index == 1.0) {\n    offsetPx += halfSizePx * vec2(1., -1.);\n  } else if (a_index == 2.0) {\n    offsetPx += halfSizePx;\n  } else {\n    offsetPx += halfSizePx * vec2(-1., 1.);\n  }\n  float angle = ${this.symbolRotationExpression_};\n  ${this.symbolRotateWithView_ ? 'angle += u_rotation;' : ''}\n  float c = cos(-angle);\n  float s = sin(-angle);\n  offsetPx = vec2(c * offsetPx.x - s * offsetPx.y, s * offsetPx.x + c * offsetPx.y);\n  vec4 center = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n  gl_Position = center + vec4(pxToScreen(offsetPx), u_depth, 0.);\n  vec4 texCoord = ${this.texCoordExpression_};\n  float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n  float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n  v_texCoord = vec2(u, v);\n  v_hitColor = a_hitColor;\n  v_angle = angle;\n  c = cos(-v_angle);\n  s = sin(-v_angle);\n  centerOffsetPx = vec2(c * centerOffsetPx.x - s * centerOffsetPx.y, s * centerOffsetPx.x + c * centerOffsetPx.y); \n  v_centerPx = screenToPx(center.xy) + centerOffsetPx;\n${this.varyings_\n  .map(function (varying) {\n    return '  ' + varying.name + ' = ' + varying.expression + ';';\n  })\n  .join('\\n')}\n}`;\n  }\n\n  /**\n   * Generates a symbol fragment shader from the builder parameters\n   * @return {string|null} The full shader as a string; null if no size or color specified\n   */\n  getSymbolFragmentShader() {\n    if (!this.hasSymbol_) {\n      return null;\n    }\n\n    return `${COMMON_HEADER}\n${this.uniforms_\n  .map(function (uniform) {\n    return 'uniform ' + uniform + ';';\n  })\n  .join('\\n')}\nvarying vec2 v_texCoord;\nvarying vec4 v_hitColor;\nvarying vec2 v_centerPx;\nvarying float v_angle;\nvarying vec2 v_quadSizePx;\n${this.varyings_\n  .map(function (varying) {\n    return 'varying ' + varying.type + ' ' + varying.name + ';';\n  })\n  .join('\\n')}\n${this.fragmentShaderFunctions_.join('\\n')}\n\nvoid main(void) {\n  if (${this.discardExpression_}) { discard; }\n  vec2 coordsPx = gl_FragCoord.xy / u_pixelRatio - v_centerPx; // relative to center\n  float c = cos(v_angle);\n  float s = sin(v_angle);\n  coordsPx = vec2(c * coordsPx.x - s * coordsPx.y, s * coordsPx.x + c * coordsPx.y);\n  gl_FragColor = ${this.symbolColorExpression_};\n  gl_FragColor.rgb *= gl_FragColor.a;\n  if (u_hitDetection > 0) {\n    if (gl_FragColor.a < 0.05) { discard; };\n    gl_FragColor = v_hitColor;\n  }\n}`;\n  }\n\n  /**\n   * Generates a stroke vertex shader from the builder parameters\n   * @return {string|null} The full shader as a string; null if no size or color specified\n   */\n  getStrokeVertexShader() {\n    if (!this.hasStroke_) {\n      return null;\n    }\n\n    return `${COMMON_HEADER}\n${this.uniforms_\n  .map(function (uniform) {\n    return 'uniform ' + uniform + ';';\n  })\n  .join('\\n')}\nattribute vec2 a_segmentStart;\nattribute vec2 a_segmentEnd;\nattribute float a_measureStart;\nattribute float a_measureEnd;\nattribute float a_parameters;\nattribute float a_distance;\nattribute vec2 a_joinAngles;\nattribute vec4 a_hitColor;\n${this.attributes_\n  .map(function (attribute) {\n    return 'attribute ' + attribute + ';';\n  })\n  .join('\\n')}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_hitColor;\nvarying float v_distanceOffsetPx;\nvarying float v_measureStart;\nvarying float v_measureEnd;\n${this.varyings_\n  .map(function (varying) {\n    return 'varying ' + varying.type + ' ' + varying.name + ';';\n  })\n  .join('\\n')}\n${this.vertexShaderFunctions_.join('\\n')}\nvec2 worldToPx(vec2 worldPos) {\n  vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n  return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvec4 pxToScreen(vec2 pxPos) {\n  vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n  return vec4(screenPos, u_depth, 1.0);\n}\n\nbool isCap(float joinAngle) {\n  return joinAngle < -0.1;\n}\n\nvec2 getJoinOffsetDirection(vec2 normalPx, float joinAngle) {\n  float halfAngle = joinAngle / 2.0;\n  float c = cos(halfAngle);\n  float s = sin(halfAngle);\n  vec2 angleBisectorNormal = vec2(s * normalPx.x + c * normalPx.y, -c * normalPx.x + s * normalPx.y);\n  float length = 1.0 / s;\n  return angleBisectorNormal * length;\n}\n\nvec2 getOffsetPoint(vec2 point, vec2 normal, float joinAngle, float offsetPx) {\n  // if on a cap or the join angle is too high, offset the line along the segment normal\n  if (cos(joinAngle) > 0.998 || isCap(joinAngle)) {\n    return point - normal * offsetPx;\n  }\n  // offset is applied along the inverted normal (positive offset goes \"right\" relative to line direction)\n  return point - getJoinOffsetDirection(normal, joinAngle) * offsetPx;\n}\n\nvoid main(void) {\n  v_angleStart = a_joinAngles.x;\n  v_angleEnd = a_joinAngles.y;\n  float vertexNumber = floor(abs(a_parameters) / 10000. + 0.5);\n  currentLineMetric = vertexNumber < 1.5 ? a_measureStart : a_measureEnd;\n  // we're reading the fractional part while keeping the sign (so -4.12 gives -0.12, 3.45 gives 0.45)\n  float angleTangentSum = fract(abs(a_parameters) / 10000.) * 10000. * sign(a_parameters);\n\n  float lineWidth = ${this.strokeWidthExpression_};\n  float lineOffsetPx = ${this.strokeOffsetExpression_};\n\n  // compute segment start/end in px with offset\n  vec2 segmentStartPx = worldToPx(a_segmentStart);\n  vec2 segmentEndPx = worldToPx(a_segmentEnd);\n  vec2 tangentPx = normalize(segmentEndPx - segmentStartPx);\n  vec2 normalPx = vec2(-tangentPx.y, tangentPx.x);\n  segmentStartPx = getOffsetPoint(segmentStartPx, normalPx, v_angleStart, lineOffsetPx),\n  segmentEndPx = getOffsetPoint(segmentEndPx, normalPx, v_angleEnd, lineOffsetPx);\n  \n  // compute current vertex position\n  float normalDir = vertexNumber < 0.5 || (vertexNumber > 1.5 && vertexNumber < 2.5) ? 1.0 : -1.0;\n  float tangentDir = vertexNumber < 1.5 ? 1.0 : -1.0;\n  float angle = vertexNumber < 1.5 ? v_angleStart : v_angleEnd;\n  vec2 joinDirection;\n  vec2 positionPx = vertexNumber < 1.5 ? segmentStartPx : segmentEndPx;\n  // if angle is too high, do not make a proper join\n  if (cos(angle) > ${LINESTRING_ANGLE_COSINE_CUTOFF} || isCap(angle)) {\n    joinDirection = normalPx * normalDir - tangentPx * tangentDir;\n  } else {\n    joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle);\n  }\n  positionPx = positionPx + joinDirection * (lineWidth * 0.5 + 1.); // adding 1 pixel for antialiasing\n  gl_Position = pxToScreen(positionPx);\n\n  v_segmentStart = segmentStartPx;\n  v_segmentEnd = segmentEndPx;\n  v_width = lineWidth;\n  v_hitColor = a_hitColor;\n  v_distanceOffsetPx = a_distance / u_resolution - (lineOffsetPx * angleTangentSum);\n  v_measureStart = a_measureStart;\n  v_measureEnd = a_measureEnd;\n${this.varyings_\n  .map(function (varying) {\n    return '  ' + varying.name + ' = ' + varying.expression + ';';\n  })\n  .join('\\n')}\n}`;\n  }\n\n  /**\n   * Generates a stroke fragment shader from the builder parameters\n   *\n   * @return {string|null} The full shader as a string; null if no size or color specified\n   */\n  getStrokeFragmentShader() {\n    if (!this.hasStroke_) {\n      return null;\n    }\n\n    return `${COMMON_HEADER}\n${this.uniforms_\n  .map(function (uniform) {\n    return 'uniform ' + uniform + ';';\n  })\n  .join('\\n')}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_hitColor;\nvarying float v_distanceOffsetPx;\nvarying float v_measureStart;\nvarying float v_measureEnd;\n${this.varyings_\n  .map(function (varying) {\n    return 'varying ' + varying.type + ' ' + varying.name + ';';\n  })\n  .join('\\n')}\n${this.fragmentShaderFunctions_.join('\\n')}\n\nvec2 pxToWorld(vec2 pxPos) {\n  vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n  return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nbool isCap(float joinAngle) {\n  return joinAngle < -0.1;\n}\n\nfloat segmentDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  vec2 tangent = normalize(end - start);\n  vec2 normal = vec2(-tangent.y, tangent.x);\n  vec2 startToPoint = point - start;\n  return abs(dot(startToPoint, normal)) - width * 0.5;\n}\n\nfloat buttCapDistanceField(vec2 point, vec2 start, vec2 end) {\n  vec2 startToPoint = point - start;\n  vec2 tangent = normalize(end - start);\n  return dot(startToPoint, -tangent);\n}\n\nfloat squareCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  return buttCapDistanceField(point, start, end) - width * 0.5;\n}\n\nfloat roundCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  float onSegment = max(0., 1000. * dot(point - start, end - start)); // this is very high when inside the segment\n  return length(point - start) - width * 0.5 - onSegment;\n}\n\nfloat roundJoinDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  return roundCapDistanceField(point, start, end, width);\n}\n\nfloat bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n  vec2 startToPoint = point - start;\n  vec2 tangent = normalize(end - start);\n  float c = cos(joinAngle * 0.5);\n  float s = sin(joinAngle * 0.5);\n  float direction = -sign(sin(joinAngle));\n  vec2 bisector = vec2(c * tangent.x - s * tangent.y, s * tangent.x + c * tangent.y);\n  float radius = width * 0.5 * s;\n  return dot(startToPoint, bisector * direction) - radius;\n}\n\nfloat miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n  if (cos(joinAngle) > ${LINESTRING_ANGLE_COSINE_CUTOFF}) { // avoid risking a division by zero\n    return bevelJoinField(point, start, end, width, joinAngle);\n  }\n  float miterLength = 1. / sin(joinAngle * 0.5);\n  float miterLimit = ${this.strokeMiterLimitExpression_};\n  if (miterLength > miterLimit) {\n    return bevelJoinField(point, start, end, width, joinAngle);\n  }\n  return -1000.;\n}\n\nfloat capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) {\n   if (capType == ${stringToGlsl('butt')}) {\n    return buttCapDistanceField(point, start, end);\n  } else if (capType == ${stringToGlsl('square')}) {\n    return squareCapDistanceField(point, start, end, width);\n  }\n  return roundCapDistanceField(point, start, end, width);\n}\n\nfloat joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) {\n  if (joinType == ${stringToGlsl('bevel')}) {\n    return bevelJoinField(point, start, end, width, joinAngle);\n  } else if (joinType == ${stringToGlsl('miter')}) {\n    return miterJoinDistanceField(point, start, end, width, joinAngle);\n  }\n  return roundJoinDistanceField(point, start, end, width);\n}\n\nfloat computeSegmentPointDistance(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float capType, float joinType) {\n  if (isCap(joinAngle)) {\n    return capDistanceField(point, start, end, width, capType);\n  }\n  return joinDistanceField(point, start, end, width, joinAngle, joinType);\n}\n\nvoid main(void) {\n  vec2 currentPoint = gl_FragCoord.xy / u_pixelRatio;\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  vec2 worldPos = pxToWorld(currentPoint);\n  if (\n    abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n      worldPos[0] < u_renderExtent[0] ||\n      worldPos[1] < u_renderExtent[1] ||\n      worldPos[0] > u_renderExtent[2] ||\n      worldPos[1] > u_renderExtent[3]\n    )\n  ) {\n    discard;\n  }\n  #endif\n\n  float segmentLength = length(v_segmentEnd - v_segmentStart);\n  vec2 segmentTangent = (v_segmentEnd - v_segmentStart) / segmentLength;\n  vec2 segmentNormal = vec2(-segmentTangent.y, segmentTangent.x);\n  vec2 startToPoint = currentPoint - v_segmentStart;\n  float lengthToPoint = max(0., min(dot(segmentTangent, startToPoint), segmentLength));\n  float currentLengthPx = lengthToPoint + v_distanceOffsetPx; \n  float currentRadiusPx = abs(dot(segmentNormal, startToPoint));\n  float currentRadiusRatio = dot(segmentNormal, startToPoint) * 2. / v_width;\n  currentLineMetric = mix(v_measureStart, v_measureEnd, lengthToPoint / segmentLength);\n\n  if (${this.discardExpression_}) { discard; }\n\n  vec4 color = ${this.strokeColorExpression_};\n  float capType = ${this.strokeCapExpression_};\n  float joinType = ${this.strokeJoinExpression_};\n  float segmentStartDistance = computeSegmentPointDistance(currentPoint, v_segmentStart, v_segmentEnd, v_width, v_angleStart, capType, joinType);\n  float segmentEndDistance = computeSegmentPointDistance(currentPoint, v_segmentEnd, v_segmentStart, v_width, v_angleEnd, capType, joinType);\n  float distance = max(\n    segmentDistanceField(currentPoint, v_segmentStart, v_segmentEnd, v_width),\n    max(segmentStartDistance, segmentEndDistance)\n  );\n  distance = max(distance, ${this.strokeDistanceFieldExpression_});\n  color.a *= smoothstep(0.5, -0.5, distance);\n  gl_FragColor = color;\n  gl_FragColor.a *= u_globalAlpha;\n  gl_FragColor.rgb *= gl_FragColor.a;\n  if (u_hitDetection > 0) {\n    if (gl_FragColor.a < 0.1) { discard; };\n    gl_FragColor = v_hitColor;\n  }\n}`;\n  }\n\n  /**\n   * Generates a fill vertex shader from the builder parameters\n   *\n   * @return {string|null} The full shader as a string; null if no color specified\n   */\n  getFillVertexShader() {\n    if (!this.hasFill_) {\n      return null;\n    }\n\n    return `${COMMON_HEADER}\n${this.uniforms_\n  .map(function (uniform) {\n    return 'uniform ' + uniform + ';';\n  })\n  .join('\\n')}\nattribute vec2 a_position;\nattribute vec4 a_hitColor;\n${this.attributes_\n  .map(function (attribute) {\n    return 'attribute ' + attribute + ';';\n  })\n  .join('\\n')}\nvarying vec4 v_hitColor;\n${this.varyings_\n  .map(function (varying) {\n    return 'varying ' + varying.type + ' ' + varying.name + ';';\n  })\n  .join('\\n')}\n${this.vertexShaderFunctions_.join('\\n')}\nvoid main(void) {\n  gl_Position = u_projectionMatrix * vec4(a_position, u_depth, 1.0);\n  v_hitColor = a_hitColor;\n${this.varyings_\n  .map(function (varying) {\n    return '  ' + varying.name + ' = ' + varying.expression + ';';\n  })\n  .join('\\n')}\n}`;\n  }\n\n  /**\n   * Generates a fill fragment shader from the builder parameters\n   * @return {string|null} The full shader as a string; null if no color specified\n   */\n  getFillFragmentShader() {\n    if (!this.hasFill_) {\n      return null;\n    }\n\n    return `${COMMON_HEADER}\n${this.uniforms_\n  .map(function (uniform) {\n    return 'uniform ' + uniform + ';';\n  })\n  .join('\\n')}\nvarying vec4 v_hitColor;\n${this.varyings_\n  .map(function (varying) {\n    return 'varying ' + varying.type + ' ' + varying.name + ';';\n  })\n  .join('\\n')}\n${this.fragmentShaderFunctions_.join('\\n')}\nvec2 pxToWorld(vec2 pxPos) {\n  vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n  return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nvec2 worldToPx(vec2 worldPos) {\n  vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n  return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvoid main(void) {\n  vec2 pxPos = gl_FragCoord.xy / u_pixelRatio;\n  vec2 pxOrigin = worldToPx(u_patternOrigin);\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  vec2 worldPos = pxToWorld(pxPos);\n  if (\n    abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n      worldPos[0] < u_renderExtent[0] ||\n      worldPos[1] < u_renderExtent[1] ||\n      worldPos[0] > u_renderExtent[2] ||\n      worldPos[1] > u_renderExtent[3]\n    )\n  ) {\n    discard;\n  }\n  #endif\n  if (${this.discardExpression_}) { discard; }\n  gl_FragColor = ${this.fillColorExpression_};\n  gl_FragColor.a *= u_globalAlpha;\n  gl_FragColor.rgb *= gl_FragColor.a;\n  if (u_hitDetection > 0) {\n    if (gl_FragColor.a < 0.1) { discard; };\n    gl_FragColor = v_hitColor;\n  }\n}`;\n  }\n}\n","/**\n * Utilities for parsing literal style objects\n * @module ol/webgl/styleparser\n */\nimport {assert} from '../asserts.js';\nimport {asArray} from '../color.js';\nimport {\n  BooleanType,\n  ColorType,\n  NumberArrayType,\n  NumberType,\n  SizeType,\n  StringType,\n  computeGeometryType,\n  newParsingContext,\n} from '../expr/expression.js';\nimport {\n  FEATURE_ID_PROPERTY_NAME,\n  GEOMETRY_TYPE_PROPERTY_NAME,\n  buildExpression,\n  getStringNumberEquivalent,\n  newCompilationContext,\n  stringToGlsl,\n  uniformNameForVariable,\n} from '../expr/gpu.js';\nimport {ShaderBuilder} from './ShaderBuilder.js';\n\n/**\n * Recursively parses a style expression and outputs a GLSL-compatible string. Takes in a compilation context that\n * will be read and modified during the parsing operation.\n * @param {import(\"../expr/gpu.js\").CompilationContext} compilationContext Compilation context\n * @param {import(\"../expr/expression.js\").EncodedExpression} value Value\n * @param {number} [expectedType] Expected final type (can be several types combined)\n * @return {string} GLSL-compatible output\n */\nexport function expressionToGlsl(compilationContext, value, expectedType) {\n  const parsingContext = newParsingContext();\n  return buildExpression(\n    value,\n    expectedType,\n    parsingContext,\n    compilationContext,\n  );\n}\n\n/**\n * Packs all components of a color into a two-floats array\n * @param {import(\"../color.js\").Color|string} color Color as array of numbers or string\n * @return {Array<number>} Vec2 array containing the color in compressed form\n */\nexport function packColor(color) {\n  const array = asArray(color);\n  const r = array[0] * 256;\n  const g = array[1];\n  const b = array[2] * 256;\n  const a = Math.round(array[3] * 255);\n  return [r + g, b + a];\n}\n\nconst UNPACK_COLOR_FN = `vec4 unpackColor(vec2 packedColor) {\n  return vec4(\n    fract(floor(packedColor[0] / 256.0) / 256.0),\n    fract(packedColor[0] / 256.0),\n    fract(floor(packedColor[1] / 256.0) / 256.0),\n    fract(packedColor[1] / 256.0)\n  );\n}`;\n\n/**\n * @param {number} type Value type\n * @return {1|2|3|4} The amount of components for this value\n */\nfunction getGlslSizeFromType(type) {\n  if (type === ColorType || type === SizeType) {\n    return 2;\n  }\n  if (type === NumberArrayType) {\n    return 4;\n  }\n  return 1;\n}\n\n/**\n * @param {number} type Value type\n * @return {'float'|'vec2'|'vec3'|'vec4'} The corresponding GLSL type for this value\n */\nfunction getGlslTypeFromType(type) {\n  const size = getGlslSizeFromType(type);\n  if (size > 1) {\n    return /** @type {'vec2'|'vec3'|'vec4'} */ (`vec${size}`);\n  }\n  return 'float';\n}\n\n/**\n * see https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript\n * @param {Object|string} input The hash input, either an object or string\n * @return {string} Hash (if the object cannot be serialized, it is based on `getUid`)\n */\nexport function computeHash(input) {\n  const hash = JSON.stringify(input)\n    .split('')\n    .reduce((prev, curr) => (prev << 5) - prev + curr.charCodeAt(0), 0);\n  return (hash >>> 0).toString();\n}\n\n/**\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader builder\n * @param {import(\"../expr/gpu.js\").CompilationContext} vertContext Vertex shader compilation context\n * @param {'shape-'|'circle-'|'icon-'} prefix Properties prefix\n */\nfunction parseCommonSymbolProperties(style, builder, vertContext, prefix) {\n  if (`${prefix}radius` in style && prefix !== 'icon-') {\n    let radius = expressionToGlsl(\n      vertContext,\n      style[`${prefix}radius`],\n      NumberType,\n    );\n    if (`${prefix}radius2` in style) {\n      const radius2 = expressionToGlsl(\n        vertContext,\n        style[`${prefix}radius2`],\n        NumberType,\n      );\n      radius = `max(${radius}, ${radius2})`;\n    }\n    if (`${prefix}stroke-width` in style) {\n      radius = `(${radius} + ${expressionToGlsl(\n        vertContext,\n        style[`${prefix}stroke-width`],\n        NumberType,\n      )} * 0.5)`;\n    }\n    builder.setSymbolSizeExpression(`vec2(${radius} * 2. + 0.5)`); // adding some padding for antialiasing\n  }\n  if (`${prefix}scale` in style) {\n    const scale = expressionToGlsl(\n      vertContext,\n      style[`${prefix}scale`],\n      SizeType,\n    );\n    builder.setSymbolSizeExpression(\n      `${builder.getSymbolSizeExpression()} * ${scale}`,\n    );\n  }\n  if (`${prefix}displacement` in style) {\n    builder.setSymbolOffsetExpression(\n      expressionToGlsl(\n        vertContext,\n        style[`${prefix}displacement`],\n        NumberArrayType,\n      ),\n    );\n  }\n  if (`${prefix}rotation` in style) {\n    builder.setSymbolRotationExpression(\n      expressionToGlsl(vertContext, style[`${prefix}rotation`], NumberType),\n    );\n  }\n  if (`${prefix}rotate-with-view` in style) {\n    builder.setSymbolRotateWithView(!!style[`${prefix}rotate-with-view`]);\n  }\n}\n\n/**\n * @param {string} distanceField The distance field expression\n * @param {string|null} fillColor The fill color expression; null if no fill\n * @param {string|null} strokeColor The stroke color expression; null if no stroke\n * @param {string|null} strokeWidth The stroke width expression; null if no stroke\n * @param {string|null} opacity The opacity expression; null if no stroke\n * @return {string} The final color expression, based on the distance field and given params\n */\nfunction getColorFromDistanceField(\n  distanceField,\n  fillColor,\n  strokeColor,\n  strokeWidth,\n  opacity,\n) {\n  let color = 'vec4(0.)';\n  if (fillColor !== null) {\n    color = fillColor;\n  }\n  if (strokeColor !== null && strokeWidth !== null) {\n    const strokeFillRatio = `smoothstep(-${strokeWidth} + 0.63, -${strokeWidth} - 0.58, ${distanceField})`;\n    color = `mix(${strokeColor}, ${color}, ${strokeFillRatio})`;\n  }\n  const shapeOpacity = `(1.0 - smoothstep(-0.63, 0.58, ${distanceField}))`;\n  let result = `${color} * vec4(1.0, 1.0, 1.0, ${shapeOpacity})`;\n  if (opacity !== null) {\n    result = `${result} * vec4(1.0, 1.0, 1.0, ${opacity})`;\n  }\n  return result;\n}\n\n/**\n * This will parse an image property provided by `<prefix>-src`\n * The image size expression in GLSL will be returned\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader builder\n * @param {Object<string,import(\"../webgl/Helper\").UniformValue>} uniforms Uniforms\n * @param {'icon-'|'fill-pattern-'|'stroke-pattern-'} prefix Property prefix\n * @param {string} textureId A identifier that will be used in the generated uniforms: `sample2d u_texture<id>` and `vec2 u_texture<id>_size`\n * @return {string} The image size expression\n */\nfunction parseImageProperties(style, builder, uniforms, prefix, textureId) {\n  const image = new Image();\n  image.crossOrigin =\n    style[`${prefix}cross-origin`] === undefined\n      ? 'anonymous'\n      : style[`${prefix}cross-origin`];\n  assert(\n    typeof style[`${prefix}src`] === 'string',\n    `WebGL layers do not support expressions for the ${prefix}src style property`,\n  );\n  image.src = /** @type {string} */ (style[`${prefix}src`]);\n\n  // the size is provided asynchronously using a uniform\n  uniforms[`u_texture${textureId}_size`] = () => {\n    return image.complete ? [image.width, image.height] : [0, 0];\n  };\n  builder.addUniform(`vec2 u_texture${textureId}_size`);\n  const size = `u_texture${textureId}_size`;\n\n  uniforms[`u_texture${textureId}`] = image;\n  builder.addUniform(`sampler2D u_texture${textureId}`);\n  return size;\n}\n\n/**\n * This will parse an image's offset properties provided by `<prefix>-offset`, `<prefix>-offset-origin` and `<prefix>-size`\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {'icon-'|'fill-pattern-'|'stroke-pattern-'} prefix Property prefix\n * @param {import(\"../expr/gpu.js\").CompilationContext} context Shader compilation context (vertex or fragment)\n * @param {string} imageSize Pixel size of the full image as a GLSL expression\n * @param {string} sampleSize Pixel size of the sample in the image as a GLSL expression\n * @return {string} The offset expression\n */\nfunction parseImageOffsetProperties(\n  style,\n  prefix,\n  context,\n  imageSize,\n  sampleSize,\n) {\n  let offsetExpression = expressionToGlsl(\n    context,\n    style[`${prefix}offset`],\n    NumberArrayType,\n  );\n  if (`${prefix}offset-origin` in style) {\n    switch (style[`${prefix}offset-origin`]) {\n      case 'top-right':\n        offsetExpression = `vec2(${imageSize}.x, 0.) + ${sampleSize} * vec2(-1., 0.) + ${offsetExpression} * vec2(-1., 1.)`;\n        break;\n      case 'bottom-left':\n        offsetExpression = `vec2(0., ${imageSize}.y) + ${sampleSize} * vec2(0., -1.) + ${offsetExpression} * vec2(1., -1.)`;\n        break;\n      case 'bottom-right':\n        offsetExpression = `${imageSize} - ${sampleSize} - ${offsetExpression}`;\n        break;\n      default: // pass\n    }\n  }\n  return offsetExpression;\n}\n\n/**\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader builder\n * @param {Object<string,import(\"../webgl/Helper\").UniformValue>} uniforms Uniforms\n * @param {import(\"../expr/gpu.js\").CompilationContext} vertContext Vertex shader compilation context\n * @param {import(\"../expr/gpu.js\").CompilationContext} fragContext Fragment shader compilation context\n */\nfunction parseCircleProperties(\n  style,\n  builder,\n  uniforms,\n  vertContext,\n  fragContext,\n) {\n  // this function takes in screen coordinates in pixels and returns the signed distance field\n  // (0 on the boundary, negative inside the circle, positive outside, values in pixels)\n  fragContext.functions['circleDistanceField'] =\n    `float circleDistanceField(vec2 point, float radius) {\n  return length(point) - radius;\n}`;\n\n  parseCommonSymbolProperties(style, builder, vertContext, 'circle-');\n\n  // OPACITY\n  let opacity = null;\n  if ('circle-opacity' in style) {\n    opacity = expressionToGlsl(\n      fragContext,\n      style['circle-opacity'],\n      NumberType,\n    );\n  }\n\n  // SCALE\n  let currentPoint = 'coordsPx';\n  if ('circle-scale' in style) {\n    const scale = expressionToGlsl(\n      fragContext,\n      style['circle-scale'],\n      SizeType,\n    );\n    currentPoint = `coordsPx / ${scale}`;\n  }\n\n  // FILL COLOR\n  let fillColor = null;\n  if ('circle-fill-color' in style) {\n    fillColor = expressionToGlsl(\n      fragContext,\n      style['circle-fill-color'],\n      ColorType,\n    );\n  }\n\n  // STROKE COLOR\n  let strokeColor = null;\n  if ('circle-stroke-color' in style) {\n    strokeColor = expressionToGlsl(\n      fragContext,\n      style['circle-stroke-color'],\n      ColorType,\n    );\n  }\n\n  // RADIUS\n  let radius = expressionToGlsl(\n    fragContext,\n    style['circle-radius'],\n    NumberType,\n  );\n\n  // STROKE WIDTH\n  let strokeWidth = null;\n  if ('circle-stroke-width' in style) {\n    strokeWidth = expressionToGlsl(\n      fragContext,\n      style['circle-stroke-width'],\n      NumberType,\n    );\n    radius = `(${radius} + ${strokeWidth} * 0.5)`;\n  }\n\n  // FINAL COLOR\n  const distanceField = `circleDistanceField(${currentPoint}, ${radius})`;\n  const colorExpression = getColorFromDistanceField(\n    distanceField,\n    fillColor,\n    strokeColor,\n    strokeWidth,\n    opacity,\n  );\n  builder.setSymbolColorExpression(colorExpression);\n}\n\n/**\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader builder\n * @param {Object<string,import(\"../webgl/Helper\").UniformValue>} uniforms Uniforms\n * @param {import(\"../expr/gpu.js\").CompilationContext} vertContext Vertex shader compilation context\n * @param {import(\"../expr/gpu.js\").CompilationContext} fragContext Fragment shader compilation context\n */\nfunction parseShapeProperties(\n  style,\n  builder,\n  uniforms,\n  vertContext,\n  fragContext,\n) {\n  fragContext.functions['round'] = `float round(float v) {\n  return sign(v) * floor(abs(v) + 0.5);\n}`;\n\n  // these functions take in screen coordinates in pixels and returns the signed distance field\n  // (0 on the boundary, negative inside the polygon, positive outside, values in pixels)\n  // inspired by https://github.com/zranger1/PixelblazePatterns/blob/master/Toolkit/sdf2d.md#n-sided-regular-polygon\n  fragContext.functions['starDistanceField'] =\n    `float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n  float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n  float c = cos(startAngle);\n  float s = sin(startAngle);\n  vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n  float alpha = TWO_PI / numPoints; // the angle of one sector\n  float beta = atan(pointRotated.y, pointRotated.x);\n  float gamma = round(beta / alpha) * alpha; // angle in sector\n  c = cos(-gamma);\n  s = sin(-gamma);\n  vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n  vec2 tipToPoint = inSector + vec2(-radius, 0.);\n  vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n  return dot(normalize(edgeNormal), tipToPoint);\n}`;\n  fragContext.functions['regularDistanceField'] =\n    `float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n  float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n  float c = cos(startAngle);\n  float s = sin(startAngle);\n  vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n  float alpha = TWO_PI / numPoints; // the angle of one sector\n  float radiusIn = radius * cos(PI / numPoints);\n  float beta = atan(pointRotated.y, pointRotated.x);\n  float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n  c = cos(-gamma);\n  s = sin(-gamma);\n  vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n  return inSector.x - radiusIn;\n}`;\n\n  parseCommonSymbolProperties(style, builder, vertContext, 'shape-');\n\n  // OPACITY\n  let opacity = null;\n  if ('shape-opacity' in style) {\n    opacity = expressionToGlsl(fragContext, style['shape-opacity'], NumberType);\n  }\n\n  // SCALE\n  let currentPoint = 'coordsPx';\n  if ('shape-scale' in style) {\n    const scale = expressionToGlsl(fragContext, style['shape-scale'], SizeType);\n    currentPoint = `coordsPx / ${scale}`;\n  }\n\n  // FILL COLOR\n  let fillColor = null;\n  if ('shape-fill-color' in style) {\n    fillColor = expressionToGlsl(\n      fragContext,\n      style['shape-fill-color'],\n      ColorType,\n    );\n  }\n\n  // STROKE COLOR\n  let strokeColor = null;\n  if ('shape-stroke-color' in style) {\n    strokeColor = expressionToGlsl(\n      fragContext,\n      style['shape-stroke-color'],\n      ColorType,\n    );\n  }\n\n  // STROKE WIDTH\n  let strokeWidth = null;\n  if ('shape-stroke-width' in style) {\n    strokeWidth = expressionToGlsl(\n      fragContext,\n      style['shape-stroke-width'],\n      NumberType,\n    );\n  }\n\n  // SHAPE TYPE\n  const numPoints = expressionToGlsl(\n    fragContext,\n    style['shape-points'],\n    NumberType,\n  );\n  let angle = '0.';\n  if ('shape-angle' in style) {\n    angle = expressionToGlsl(fragContext, style['shape-angle'], NumberType);\n  }\n  let shapeField;\n  let radius = expressionToGlsl(fragContext, style['shape-radius'], NumberType);\n  if (strokeWidth !== null) {\n    radius = `${radius} + ${strokeWidth} * 0.5`;\n  }\n  if ('shape-radius2' in style) {\n    let radius2 = expressionToGlsl(\n      fragContext,\n      style['shape-radius2'],\n      NumberType,\n    );\n    if (strokeWidth !== null) {\n      radius2 = `${radius2} + ${strokeWidth} * 0.5`;\n    }\n    shapeField = `starDistanceField(${currentPoint}, ${numPoints}, ${radius}, ${radius2}, ${angle})`;\n  } else {\n    shapeField = `regularDistanceField(${currentPoint}, ${numPoints}, ${radius}, ${angle})`;\n  }\n\n  // FINAL COLOR\n  const colorExpression = getColorFromDistanceField(\n    shapeField,\n    fillColor,\n    strokeColor,\n    strokeWidth,\n    opacity,\n  );\n  builder.setSymbolColorExpression(colorExpression);\n}\n\n/**\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader builder\n * @param {Object<string,import(\"../webgl/Helper\").UniformValue>} uniforms Uniforms\n * @param {import(\"../expr/gpu.js\").CompilationContext} vertContext Vertex shader compilation context\n * @param {import(\"../expr/gpu.js\").CompilationContext} fragContext Fragment shader compilation context\n */\nfunction parseIconProperties(\n  style,\n  builder,\n  uniforms,\n  vertContext,\n  fragContext,\n) {\n  // COLOR\n  let color = 'vec4(1.0)';\n  if ('icon-color' in style) {\n    color = expressionToGlsl(fragContext, style['icon-color'], ColorType);\n  }\n\n  // OPACITY\n  if ('icon-opacity' in style) {\n    color = `${color} * vec4(1.0, 1.0, 1.0, ${expressionToGlsl(\n      fragContext,\n      style['icon-opacity'],\n      NumberType,\n    )})`;\n  }\n\n  // IMAGE & SIZE\n  const textureId = computeHash(style['icon-src']);\n  const sizeExpression = parseImageProperties(\n    style,\n    builder,\n    uniforms,\n    'icon-',\n    textureId,\n  );\n  builder\n    .setSymbolColorExpression(\n      `${color} * texture2D(u_texture${textureId}, v_texCoord)`,\n    )\n    .setSymbolSizeExpression(sizeExpression);\n\n  // override size if width/height were specified\n  if ('icon-width' in style && 'icon-height' in style) {\n    builder.setSymbolSizeExpression(\n      `vec2(${expressionToGlsl(\n        vertContext,\n        style['icon-width'],\n        NumberType,\n      )}, ${expressionToGlsl(vertContext, style['icon-height'], NumberType)})`,\n    );\n  }\n\n  // tex coord\n  if ('icon-offset' in style && 'icon-size' in style) {\n    const sampleSize = expressionToGlsl(\n      vertContext,\n      style['icon-size'],\n      NumberArrayType,\n    );\n    const fullsize = builder.getSymbolSizeExpression();\n    builder.setSymbolSizeExpression(sampleSize);\n    const offset = parseImageOffsetProperties(\n      style,\n      'icon-',\n      vertContext,\n      'v_quadSizePx',\n      sampleSize,\n    );\n    builder.setTextureCoordinateExpression(\n      `(vec4((${offset}).xyxy) + vec4(0., 0., ${sampleSize})) / (${fullsize}).xyxy`,\n    );\n  }\n\n  parseCommonSymbolProperties(style, builder, vertContext, 'icon-');\n\n  if ('icon-anchor' in style) {\n    const anchor = expressionToGlsl(\n      vertContext,\n      style['icon-anchor'],\n      NumberArrayType,\n    );\n    let scale = `1.0`;\n    if (`icon-scale` in style) {\n      scale = expressionToGlsl(vertContext, style[`icon-scale`], SizeType);\n    }\n    let shiftPx;\n    if (\n      style['icon-anchor-x-units'] === 'pixels' &&\n      style['icon-anchor-y-units'] === 'pixels'\n    ) {\n      shiftPx = `${anchor} * ${scale}`;\n    } else if (style['icon-anchor-x-units'] === 'pixels') {\n      shiftPx = `${anchor} * vec2(vec2(${scale}).x, v_quadSizePx.y)`;\n    } else if (style['icon-anchor-y-units'] === 'pixels') {\n      shiftPx = `${anchor} * vec2(v_quadSizePx.x, vec2(${scale}).x)`;\n    } else {\n      shiftPx = `${anchor} * v_quadSizePx`;\n    }\n    // default origin is top-left\n    let offsetPx = `v_quadSizePx * vec2(0.5, -0.5) + ${shiftPx} * vec2(-1., 1.)`;\n    if ('icon-anchor-origin' in style) {\n      switch (style['icon-anchor-origin']) {\n        case 'top-right':\n          offsetPx = `v_quadSizePx * -0.5 + ${shiftPx}`;\n          break;\n        case 'bottom-left':\n          offsetPx = `v_quadSizePx * 0.5 - ${shiftPx}`;\n          break;\n        case 'bottom-right':\n          offsetPx = `v_quadSizePx * vec2(-0.5, 0.5) + ${shiftPx} * vec2(1., -1.)`;\n          break;\n        default: // pass\n      }\n    }\n    builder.setSymbolOffsetExpression(\n      `${builder.getSymbolOffsetExpression()} + ${offsetPx}`,\n    );\n  }\n}\n\n/**\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader Builder\n * @param {Object<string,import(\"../webgl/Helper\").UniformValue>} uniforms Uniforms\n * @param {import(\"../expr/gpu.js\").CompilationContext} vertContext Vertex shader compilation context\n * @param {import(\"../expr/gpu.js\").CompilationContext} fragContext Fragment shader compilation context\n */\nfunction parseStrokeProperties(\n  style,\n  builder,\n  uniforms,\n  vertContext,\n  fragContext,\n) {\n  if ('stroke-color' in style) {\n    builder.setStrokeColorExpression(\n      expressionToGlsl(fragContext, style['stroke-color'], ColorType),\n    );\n  }\n  if ('stroke-pattern-src' in style) {\n    const textureId = computeHash(style['stroke-pattern-src']);\n    const sizeExpression = parseImageProperties(\n      style,\n      builder,\n      uniforms,\n      'stroke-pattern-',\n      textureId,\n    );\n    let sampleSizeExpression = sizeExpression;\n    let offsetExpression = 'vec2(0.)';\n    if ('stroke-pattern-offset' in style && 'stroke-pattern-size' in style) {\n      sampleSizeExpression = expressionToGlsl(\n        fragContext,\n        style[`stroke-pattern-size`],\n        NumberArrayType,\n      );\n      offsetExpression = parseImageOffsetProperties(\n        style,\n        'stroke-pattern-',\n        fragContext,\n        sizeExpression,\n        sampleSizeExpression,\n      );\n    }\n    let spacingExpression = '0.';\n    if ('stroke-pattern-spacing' in style) {\n      spacingExpression = expressionToGlsl(\n        fragContext,\n        style['stroke-pattern-spacing'],\n        NumberType,\n      );\n    }\n    fragContext.functions['sampleStrokePattern'] =\n      `vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n  float currentLengthScaled = currentLengthPx * sampleSize.y / lineWidth;\n  float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n  float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n  // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n  uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n  float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n  vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n  return texture2D(texture, texCoord);\n}`;\n    const textureName = `u_texture${textureId}`;\n    let tintExpression = '1.';\n    if ('stroke-color' in style) {\n      tintExpression = builder.getStrokeColorExpression();\n    }\n    builder.setStrokeColorExpression(\n      `${tintExpression} * sampleStrokePattern(${textureName}, ${sizeExpression}, ${offsetExpression}, ${sampleSizeExpression}, ${spacingExpression}, currentLengthPx, currentRadiusRatio, v_width)`,\n    );\n  }\n\n  if ('stroke-width' in style) {\n    builder.setStrokeWidthExpression(\n      expressionToGlsl(vertContext, style['stroke-width'], NumberType),\n    );\n  }\n\n  if ('stroke-offset' in style) {\n    builder.setStrokeOffsetExpression(\n      expressionToGlsl(vertContext, style['stroke-offset'], NumberType),\n    );\n  }\n\n  if ('stroke-line-cap' in style) {\n    builder.setStrokeCapExpression(\n      expressionToGlsl(vertContext, style['stroke-line-cap'], StringType),\n    );\n  }\n\n  if ('stroke-line-join' in style) {\n    builder.setStrokeJoinExpression(\n      expressionToGlsl(vertContext, style['stroke-line-join'], StringType),\n    );\n  }\n\n  if ('stroke-miter-limit' in style) {\n    builder.setStrokeMiterLimitExpression(\n      expressionToGlsl(vertContext, style['stroke-miter-limit'], NumberType),\n    );\n  }\n\n  if ('stroke-line-dash' in style) {\n    fragContext.functions['getSingleDashDistance'] =\n      `float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType) {\n  float localDistance = mod(distance, dashLengthTotal);\n  float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5;\n  distanceSegment = min(distanceSegment, dashLengthTotal - localDistance);\n  if (capType == ${stringToGlsl('square')}) {\n    distanceSegment -= v_width * 0.5;\n  } else if (capType == ${stringToGlsl('round')}) {\n    distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - v_width * 0.5);\n  }\n  return distanceSegment;\n}`;\n\n    let dashPattern = style['stroke-line-dash'].map((v) =>\n      expressionToGlsl(fragContext, v, NumberType),\n    );\n    // if pattern has odd length, concatenate it with itself to be even\n    if (dashPattern.length % 2 === 1) {\n      dashPattern = [...dashPattern, ...dashPattern];\n    }\n\n    let offsetExpression = '0.';\n    if ('stroke-line-dash-offset' in style) {\n      offsetExpression = expressionToGlsl(\n        vertContext,\n        style['stroke-line-dash-offset'],\n        NumberType,\n      );\n    }\n\n    // define a function for this dash specifically\n    const uniqueDashKey = computeHash(style['stroke-line-dash']);\n    const dashFunctionName = `dashDistanceField_${uniqueDashKey}`;\n\n    const dashLengthsDef = dashPattern.map(\n      (v, i) => `float dashLength${i} = ${v};`,\n    );\n    const totalLengthDef = dashPattern\n      .map((v, i) => `dashLength${i}`)\n      .join(' + ');\n    let currentDashOffset = '0.';\n    let distanceExpression = `getSingleDashDistance(distance, radius, ${currentDashOffset}, dashLength0, totalDashLength, capType)`;\n    for (let i = 2; i < dashPattern.length; i += 2) {\n      currentDashOffset = `${currentDashOffset} + dashLength${\n        i - 2\n      } + dashLength${i - 1}`;\n      distanceExpression = `min(${distanceExpression}, getSingleDashDistance(distance, radius, ${currentDashOffset}, dashLength${i}, totalDashLength, capType))`;\n    }\n\n    fragContext.functions[dashFunctionName] =\n      `float ${dashFunctionName}(float distance, float radius, float capType) {\n  ${dashLengthsDef.join('\\n  ')}\n  float totalDashLength = ${totalLengthDef};\n  return ${distanceExpression};\n}`;\n    builder.setStrokeDistanceFieldExpression(\n      `${dashFunctionName}(currentLengthPx + ${offsetExpression}, currentRadiusPx, capType)`,\n    );\n  }\n}\n\n/**\n * @param {import(\"../style/flat.js\").FlatStyle} style Style\n * @param {ShaderBuilder} builder Shader Builder\n * @param {Object<string,import(\"../webgl/Helper\").UniformValue>} uniforms Uniforms\n * @param {import(\"../expr/gpu.js\").CompilationContext} vertContext Vertex shader compilation context\n * @param {import(\"../expr/gpu.js\").CompilationContext} fragContext Fragment shader compilation context\n */\nfunction parseFillProperties(\n  style,\n  builder,\n  uniforms,\n  vertContext,\n  fragContext,\n) {\n  if ('fill-color' in style) {\n    builder.setFillColorExpression(\n      expressionToGlsl(fragContext, style['fill-color'], ColorType),\n    );\n  }\n  if ('fill-pattern-src' in style) {\n    const textureId = computeHash(style['fill-pattern-src']);\n    const sizeExpression = parseImageProperties(\n      style,\n      builder,\n      uniforms,\n      'fill-pattern-',\n      textureId,\n    );\n    let sampleSizeExpression = sizeExpression;\n    let offsetExpression = 'vec2(0.)';\n    if ('fill-pattern-offset' in style && 'fill-pattern-size' in style) {\n      sampleSizeExpression = expressionToGlsl(\n        fragContext,\n        style[`fill-pattern-size`],\n        NumberArrayType,\n      );\n      offsetExpression = parseImageOffsetProperties(\n        style,\n        'fill-pattern-',\n        fragContext,\n        sizeExpression,\n        sampleSizeExpression,\n      );\n    }\n    fragContext.functions['sampleFillPattern'] =\n      `vec4 sampleFillPattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, vec2 pxOrigin, vec2 pxPosition) {\n  float scaleRatio = pow(2., mod(u_zoom + 0.5, 1.) - 0.5);\n  vec2 pxRelativePos = pxPosition - pxOrigin;\n  // rotate the relative position from origin by the current view rotation\n  pxRelativePos = vec2(pxRelativePos.x * cos(u_rotation) - pxRelativePos.y * sin(u_rotation), pxRelativePos.x * sin(u_rotation) + pxRelativePos.y * cos(u_rotation));\n  // sample position is computed according to the sample offset & size\n  vec2 samplePos = mod(pxRelativePos / scaleRatio, sampleSize);\n  // also make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n  samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));\n  samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright\n  return texture2D(texture, (samplePos + textureOffset) / textureSize);\n}`;\n    const textureName = `u_texture${textureId}`;\n    let tintExpression = '1.';\n    if ('fill-color' in style) {\n      tintExpression = builder.getFillColorExpression();\n    }\n    builder.setFillColorExpression(\n      `${tintExpression} * sampleFillPattern(${textureName}, ${sizeExpression}, ${offsetExpression}, ${sampleSizeExpression}, pxOrigin, pxPos)`,\n    );\n  }\n}\n\n/**\n * @typedef {Object} StyleParseResult\n * @property {ShaderBuilder} builder Shader builder pre-configured according to a given style\n * @property {import(\"../render/webgl/VectorStyleRenderer.js\").UniformDefinitions} uniforms Uniform definitions\n * @property {import(\"../render/webgl/VectorStyleRenderer.js\").AttributeDefinitions} attributes Attribute definitions\n */\n\n/**\n * Parses a {@link import(\"../style/flat.js\").FlatStyle} object and returns a {@link ShaderBuilder}\n * object that has been configured according to the given style, as well as `attributes` and `uniforms`\n * arrays to be fed to the `WebGLPointsRenderer` class.\n *\n * Also returns `uniforms` and `attributes` properties as expected by the\n * {@link module:ol/renderer/webgl/PointsLayer~WebGLPointsLayerRenderer}.\n *\n * @param {import(\"../style/flat.js\").FlatStyle} style Flat style.\n * @param {import('../style/flat.js').StyleVariables} [variables] Style variables.\n * @param {import(\"../expr/expression.js\").EncodedExpression} [filter] Filter (if any)\n * @return {StyleParseResult} Result containing shader params, attributes and uniforms.\n */\nexport function parseLiteralStyle(style, variables, filter) {\n  const vertContext = newCompilationContext();\n\n  /**\n   * @type {import(\"../expr/gpu.js\").CompilationContext}\n   */\n  const fragContext = {\n    ...newCompilationContext(),\n    inFragmentShader: true,\n    variables: vertContext.variables,\n  };\n\n  const builder = new ShaderBuilder();\n\n  /** @type {Object<string,import(\"../webgl/Helper\").UniformValue>} */\n  const uniforms = {};\n\n  if ('icon-src' in style) {\n    parseIconProperties(style, builder, uniforms, vertContext, fragContext);\n  } else if ('shape-points' in style) {\n    parseShapeProperties(style, builder, uniforms, vertContext, fragContext);\n  } else if ('circle-radius' in style) {\n    parseCircleProperties(style, builder, uniforms, vertContext, fragContext);\n  }\n  parseStrokeProperties(style, builder, uniforms, vertContext, fragContext);\n  parseFillProperties(style, builder, uniforms, vertContext, fragContext);\n\n  // note that the style filter may have already been applied earlier when building the rendering instructions\n  // this is still needed in case a filter cannot be evaluated statically beforehand (e.g. depending on time)\n  if (filter) {\n    const parsedFilter = expressionToGlsl(fragContext, filter, BooleanType);\n    builder.setFragmentDiscardExpression(`!${parsedFilter}`);\n  }\n\n  // define one uniform per variable\n  for (const varName in fragContext.variables) {\n    const variable = fragContext.variables[varName];\n    const uniformName = uniformNameForVariable(variable.name);\n    let glslType = getGlslTypeFromType(variable.type);\n    if (variable.type === ColorType) {\n      // we're not packing colors when they're passed as uniforms\n      glslType = 'vec4';\n    }\n    builder.addUniform(`${glslType} ${uniformName}`);\n\n    uniforms[uniformName] = () => {\n      const value = variables[variable.name];\n      if (typeof value === 'number') {\n        return value;\n      }\n      if (typeof value === 'boolean') {\n        return value ? 1 : 0;\n      }\n      if (variable.type === ColorType) {\n        return asArray(value || '#eee');\n      }\n      if (typeof value === 'string') {\n        return getStringNumberEquivalent(value);\n      }\n      return value;\n    };\n  }\n\n  // for each feature attribute used in the fragment shader, define a varying that will be used to pass data\n  // from the vertex to the fragment shader, as well as an attribute in the vertex shader (if not already present)\n  for (const propName in fragContext.properties) {\n    const property = fragContext.properties[propName];\n    if (!vertContext.properties[propName]) {\n      vertContext.properties[propName] = property;\n    }\n    let type = getGlslTypeFromType(property.type);\n    let expression = `a_prop_${property.name}`;\n    if (property.type === ColorType) {\n      type = 'vec4';\n      expression = `unpackColor(${expression})`;\n      builder.addVertexShaderFunction(UNPACK_COLOR_FN);\n    }\n    builder.addVarying(`v_prop_${property.name}`, type, expression);\n  }\n\n  // for each feature attribute used in the vertex shader, define an attribute in the vertex shader.\n  for (const propName in vertContext.properties) {\n    const property = vertContext.properties[propName];\n    builder.addAttribute(\n      `${getGlslTypeFromType(property.type)} a_prop_${property.name}`,\n    );\n  }\n\n  // add functions that were collected in the compilation contexts\n  for (const functionName in vertContext.functions) {\n    builder.addVertexShaderFunction(vertContext.functions[functionName]);\n  }\n  for (const functionName in fragContext.functions) {\n    builder.addFragmentShaderFunction(fragContext.functions[functionName]);\n  }\n\n  /**\n   * @type {import('../render/webgl/VectorStyleRenderer.js').AttributeDefinitions}\n   */\n  const attributes = {};\n\n  // Define attributes with their callback for each property used in the vertex shader\n  for (const propName in vertContext.properties) {\n    const property = vertContext.properties[propName];\n    const callback = (feature) => {\n      const value = feature.get(property.name);\n      if (property.type === ColorType) {\n        return packColor([...asArray(value || '#eee')]);\n      }\n      if (typeof value === 'string') {\n        return getStringNumberEquivalent(value);\n      }\n      if (typeof value === 'boolean') {\n        return value ? 1 : 0;\n      }\n      return value;\n    };\n\n    attributes[`prop_${property.name}`] = {\n      size: getGlslSizeFromType(property.type),\n      callback,\n    };\n  }\n\n  // Define attributes for special inputs\n  function defineSpecialInput(contextPropName, glslPropName, type, callback) {\n    const inVertContext = vertContext[contextPropName];\n    const inFragContext = fragContext[contextPropName];\n    if (!inVertContext && !inFragContext) {\n      return;\n    }\n    const glslType = getGlslTypeFromType(type);\n    const attrSize = getGlslSizeFromType(type);\n    builder.addAttribute(`${glslType} a_${glslPropName}`);\n    if (inFragContext) {\n      builder.addVarying(`v_${glslPropName}`, glslType, `a_${glslPropName}`);\n    }\n    attributes[glslPropName] = {\n      size: attrSize,\n      callback,\n    };\n  }\n  defineSpecialInput(\n    'geometryType',\n    GEOMETRY_TYPE_PROPERTY_NAME,\n    StringType,\n    (feature) =>\n      getStringNumberEquivalent(computeGeometryType(feature.getGeometry())),\n  );\n  defineSpecialInput(\n    'featureId',\n    FEATURE_ID_PROPERTY_NAME,\n    StringType | NumberType,\n    (feature) => {\n      const id = feature.getId() ?? null;\n      return typeof id === 'string' ? getStringNumberEquivalent(id) : id;\n    },\n  );\n\n  return {builder, attributes, uniforms};\n}\n","\n        export function create() {\n          const source = \"const t=\\\"GENERATE_POLYGON_BUFFERS\\\",e=\\\"GENERATE_POINT_BUFFERS\\\",n=\\\"GENERATE_LINE_STRING_BUFFERS\\\";function r(t,e,n=2){const r=e&&e.length,o=r?e[0]*n:t.length;let u=x(t,0,o,n,!0);const f=[];if(!u||u.next===u.prev)return f;let s,l,h;if(r&&(u=function(t,e,n,r){const o=[];for(let n=0,i=e.length;n<i;n++){const u=x(t,e[n]*r,n<i-1?e[n+1]*r:t.length,r,!1);u===u.next&&(u.steiner=!0),o.push(p(u))}o.sort(c);for(let t=0;t<o.length;t++)n=a(o[t],n);return n}(t,e,u,n)),t.length>80*n){s=1/0,l=1/0;let e=-1/0,r=-1/0;for(let x=n;x<o;x+=n){const n=t[x],o=t[x+1];n<s&&(s=n),o<l&&(l=o),n>e&&(e=n),o>r&&(r=o)}h=Math.max(e-s,r-l),h=0!==h?32767/h:0}return i(u,f,n,s,l,h,0),f}function x(t,e,n,r,x){let o;if(x===function(t,e,n,r){let x=0;for(let o=e,i=n-r;o<n;o+=r)x+=(t[i]-t[o])*(t[o+1]+t[i+1]),i=o;return x}(t,e,n,r)>0)for(let x=e;x<n;x+=r)o=I(x/r|0,t[x],t[x+1],o);else for(let x=n-r;x>=e;x-=r)o=I(x/r|0,t[x],t[x+1],o);return o&&m(o,o.next)&&(z(o),o=o.next),o}function o(t,e){if(!t)return t;e||(e=t);let n,r=t;do{if(n=!1,r.steiner||!m(r,r.next)&&0!==M(r.prev,r,r.next))r=r.next;else{if(z(r),r=e=r.prev,r===r.next)break;n=!0}}while(n||r!==e);return e}function i(t,e,n,r,x,c,a){if(!t)return;!a&&c&&function(t,e,n,r){let x=t;do{0===x.z&&(x.z=y(x.x,x.y,e,n,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==t);x.prevZ.nextZ=null,x.prevZ=null,function(t){let e,n=1;do{let r,x=t;t=null;let o=null;for(e=0;x;){e++;let i=x,u=0;for(let t=0;t<n&&(u++,i=i.nextZ,i);t++);let f=n;for(;u>0||f>0&&i;)0!==u&&(0===f||!i||x.z<=i.z)?(r=x,x=x.nextZ,u--):(r=i,i=i.nextZ,f--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;x=i}o.nextZ=null,n*=2}while(e>1)}(x)}(t,r,x,c);let h=t;for(;t.prev!==t.next;){const y=t.prev,p=t.next;if(c?f(t,r,x,c):u(t))e.push(y.i,t.i,p.i),z(t),t=p.next,h=p.next;else if((t=p)===h){a?1===a?i(t=s(o(t),e),e,n,r,x,c,2):2===a&&l(t,e,n,r,x,c):i(o(t),e,n,r,x,c,1);break}}}function u(t){const e=t.prev,n=t,r=t.next;if(M(e,n,r)>=0)return!1;const x=e.x,o=n.x,i=r.x,u=e.y,f=n.y,s=r.y,l=Math.min(x,o,i),c=Math.min(u,f,s),a=Math.max(x,o,i),h=Math.max(u,f,s);let y=r.next;for(;y!==e;){if(y.x>=l&&y.x<=a&&y.y>=c&&y.y<=h&&g(x,u,o,f,i,s,y.x,y.y)&&M(y.prev,y,y.next)>=0)return!1;y=y.next}return!0}function f(t,e,n,r){const x=t.prev,o=t,i=t.next;if(M(x,o,i)>=0)return!1;const u=x.x,f=o.x,s=i.x,l=x.y,c=o.y,a=i.y,h=Math.min(u,f,s),p=Math.min(l,c,a),v=Math.max(u,f,s),b=Math.max(l,c,a),m=y(h,p,e,n,r),Z=y(v,b,e,n,r);let d=t.prevZ,w=t.nextZ;for(;d&&d.z>=m&&w&&w.z<=Z;){if(d.x>=h&&d.x<=v&&d.y>=p&&d.y<=b&&d!==x&&d!==i&&g(u,l,f,c,s,a,d.x,d.y)&&M(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,w.x>=h&&w.x<=v&&w.y>=p&&w.y<=b&&w!==x&&w!==i&&g(u,l,f,c,s,a,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;w=w.nextZ}for(;d&&d.z>=m;){if(d.x>=h&&d.x<=v&&d.y>=p&&d.y<=b&&d!==x&&d!==i&&g(u,l,f,c,s,a,d.x,d.y)&&M(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;w&&w.z<=Z;){if(w.x>=h&&w.x<=v&&w.y>=p&&w.y<=b&&w!==x&&w!==i&&g(u,l,f,c,s,a,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function s(t,e){let n=t;do{const r=n.prev,x=n.next.next;!m(r,x)&&Z(r,n,n.next,x)&&A(r,x)&&A(x,r)&&(e.push(r.i,n.i,x.i),z(n),z(n.next),n=t=x),n=n.next}while(n!==t);return o(n)}function l(t,e,n,r,x,u){let f=t;do{let t=f.next.next;for(;t!==f.prev;){if(f.i!==t.i&&b(f,t)){let s=E(f,t);return f=o(f,f.next),s=o(s,s.next),i(f,e,n,r,x,u,0),void i(s,e,n,r,x,u,0)}t=t.next}f=f.next}while(f!==t)}function c(t,e){let n=t.x-e.x;if(0===n&&(n=t.y-e.y,0===n)){n=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)}return n}function a(t,e){const n=function(t,e){let n=e;const r=t.x,x=t.y;let o,i=-1/0;if(m(t,n))return n;do{if(m(t,n.next))return n.next;if(x<=n.y&&x>=n.next.y&&n.next.y!==n.y){const t=n.x+(x-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>i&&(i=t,o=n.x<n.next.x?n:n.next,t===r))return o}n=n.next}while(n!==e);if(!o)return null;const u=o,f=o.x,s=o.y;let l=1/0;n=o;do{if(r>=n.x&&n.x>=f&&r!==n.x&&v(x<s?r:i,x,f,s,x<s?i:r,x,n.x,n.y)){const e=Math.abs(x-n.y)/(r-n.x);A(n,t)&&(e<l||e===l&&(n.x>o.x||n.x===o.x&&h(o,n)))&&(o=n,l=e)}n=n.next}while(n!==u);return o}(t,e);if(!n)return e;const r=E(n,t);return o(r,r.next),o(n,n.next)}function h(t,e){return M(t.prev,t,e.prev)<0&&M(e.next,t,t.next)<0}function y(t,e,n,r,x){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*x|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*x|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function p(t){let e=t,n=t;do{(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next}while(e!==t);return n}function v(t,e,n,r,x,o,i,u){return(x-i)*(e-u)>=(t-i)*(o-u)&&(t-i)*(r-u)>=(n-i)*(e-u)&&(n-i)*(o-u)>=(x-i)*(r-u)}function g(t,e,n,r,x,o,i,u){return!(t===i&&e===u)&&v(t,e,n,r,x,o,i,u)}function b(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&Z(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(A(t,e)&&A(e,t)&&function(t,e){let n=t,r=!1;const x=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&x<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==t);return r}(t,e)&&(M(t.prev,t,e.prev)||M(t,e.prev,e))||m(t,e)&&M(t.prev,t,t.next)>0&&M(e.prev,e,e.next)>0)}function M(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function m(t,e){return t.x===e.x&&t.y===e.y}function Z(t,e,n,r){const x=w(M(t,e,n)),o=w(M(t,e,r)),i=w(M(n,r,t)),u=w(M(n,r,e));return x!==o&&i!==u||(!(0!==x||!d(t,n,e))||(!(0!==o||!d(t,r,e))||(!(0!==i||!d(n,t,r))||!(0!==u||!d(n,e,r)))))}function d(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function w(t){return t>0?1:t<0?-1:0}function A(t,e){return M(t.prev,t,t.next)<0?M(t,e,t.next)>=0&&M(t,t.prev,e)>=0:M(t,e,t.prev)<0||M(t,t.next,e)<0}function E(t,e){const n=F(t.i,t.x,t.y),r=F(e.i,e.x,e.y),x=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=x,x.prev=n,r.next=n,n.prev=r,o.next=r,r.prev=o,r}function I(t,e,n,r){const x=F(t,e,n);return r?(x.next=r.next,x.prev=r,r.next.prev=x,r.next=x):(x.prev=x,x.next=x),x}function z(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function F(t,e,n){return{i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function P(t,e){const n=e[0],r=e[1];return e[0]=t[0]*n+t[2]*r+t[4],e[1]=t[1]*n+t[3]*r+t[5],e}function B(t,e){const n=(r=e)[0]*r[3]-r[1]*r[2];var r;!function(t,e){if(!t)throw new Error(e)}(0!==n,\\\"Transformation matrix cannot be inverted\\\");const x=e[0],o=e[1],i=e[2],u=e[3],f=e[4],s=e[5];return t[0]=u/n,t[1]=-o/n,t[2]=-i/n,t[3]=x/n,t[4]=(i*s-u*f)/n,t[5]=-(x*s-o*f)/n,t}new Array(6);const N=[],R={vertexPosition:0,indexPosition:0};function S(t,e,n,r,x){t[e+0]=n,t[e+1]=r,t[e+2]=x}function T(t,e,n,r,x,o){const i=3+x,u=t[e+0],f=t[e+1],s=N;s.length=x;for(let n=0;n<s.length;n++)s[n]=t[e+2+n];let l=o?o.vertexPosition:0,c=o?o.indexPosition:0;const a=l/i;return S(n,l,u,f,0),s.length&&n.set(s,l+3),l+=i,S(n,l,u,f,1),s.length&&n.set(s,l+3),l+=i,S(n,l,u,f,2),s.length&&n.set(s,l+3),l+=i,S(n,l,u,f,3),s.length&&n.set(s,l+3),l+=i,r[c++]=a,r[c++]=a+1,r[c++]=a+3,r[c++]=a+1,r[c++]=a+2,r[c++]=a+3,R.vertexPosition=l,R.indexPosition=c,R}function _(t,e,n,r,x,o,i,u,f,s,l){const c=10+u.length,a=o.length/c,h=[t[e+0],t[e+1]],y=[t[n],t[n+1]],p=t[e+2],v=t[n+2],g=P(f,[...h]),b=P(f,[...y]);function M(t,e,n){const r=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),x=[(e[0]-t[0])/r,(e[1]-t[1])/r],o=[-x[1],x[0]],i=Math.sqrt((n[0]-t[0])*(n[0]-t[0])+(n[1]-t[1])*(n[1]-t[1])),u=[(n[0]-t[0])/i,(n[1]-t[1])/i],f=0===r||0===i?0:Math.acos((s=u[0]*x[0]+u[1]*x[1],l=-1,c=1,Math.min(Math.max(s,l),c)));var s,l,c;return u[0]*o[0]+u[1]*o[1]>0?f:2*Math.PI-f}let m=-1,Z=-1,d=l;const w=null!==x;if(null!==r){m=M(g,b,P(f,[...[t[r],t[r+1]]])),Math.cos(m)<=.985&&(d+=Math.tan((m-Math.PI)/2))}if(w){Z=M(b,g,P(f,[...[t[x],t[x+1]]])),Math.cos(Z)<=.985&&(d+=Math.tan((Math.PI-Z)/2))}function A(t,e){return 0===e?1e4*t:Math.sign(e)*(1e4*t+Math.abs(e))}return o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(0,l)),o.push(...u),o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(1,l)),o.push(...u),o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(2,l)),o.push(...u),o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(3,l)),o.push(...u),i.push(a,a+1,a+2,a+1,a+3,a+2),{length:s+Math.sqrt((b[0]-g[0])*(b[0]-g[0])+(b[1]-g[1])*(b[1]-g[1])),angle:d}}function O(t,e,n,x,o){const i=2+o;let u=e;const f=t.slice(u,u+o);u+=o;const s=t[u++];let l=0;const c=new Array(s-1);for(let e=0;e<s;e++)l+=t[u++],e<s-1&&(c[e]=l);const a=t.slice(u,u+2*l),h=r(a,c,2);for(let t=0;t<h.length;t++)x.push(h[t]+n.length/i);for(let t=0;t<a.length;t+=2)n.push(a[t],a[t+1],...f);return u+2*l}const U=self;U.onmessage=r=>{const x=r.data;switch(x.type){case e:{const t=3,e=2,n=x.customAttributesSize,r=e+n,o=new Float32Array(x.renderInstructions),i=o.length/r,u=4*i*(n+t),f=new Uint32Array(6*i),s=new Float32Array(u);let l;for(let t=0;t<o.length;t+=r)l=T(o,t,s,f,n,l);const c=Object.assign({vertexBuffer:s.buffer,indexBuffer:f.buffer,renderInstructions:o.buffer},x);U.postMessage(c,[s.buffer,f.buffer,o.buffer]);break}case n:{const t=[],e=[],n=x.customAttributesSize,r=3,o=new Float32Array(x.renderInstructions);let i=0;const u=[1,0,0,1,0,0];let f,s;for(B(u,x.renderInstructionsTransform);i<o.length;){s=Array.from(o.slice(i,i+n)),i+=n,f=o[i++];const x=i,l=i+(f-1)*r,c=o[x]===o[l]&&o[x+1]===o[l+1];let a=0,h=0;for(let n=0;n<f-1;n++){let y=null;n>0?y=i+(n-1)*r:c&&(y=l-r);let p=null;n<f-2?p=i+(n+2)*r:c&&(p=x+r);const v=_(o,i+n*r,i+(n+1)*r,y,p,t,e,s,u,a,h);a=v.length,h=v.angle}i+=f*r}const l=Uint32Array.from(e),c=Float32Array.from(t),a=Object.assign({vertexBuffer:c.buffer,indexBuffer:l.buffer,renderInstructions:o.buffer},x);U.postMessage(a,[c.buffer,l.buffer,o.buffer]);break}case t:{const t=[],e=[],n=x.customAttributesSize,r=new Float32Array(x.renderInstructions);let o=0;for(;o<r.length;)o=O(r,o,t,e,n);const i=Uint32Array.from(e),u=Float32Array.from(t),f=Object.assign({vertexBuffer:u.buffer,indexBuffer:i.buffer,renderInstructions:r.buffer},x);U.postMessage(f,[u.buffer,i.buffer,r.buffer]);break}}};\";\n          return new Worker(typeof Blob === 'undefined'\n            ? 'data:application/javascript;base64,' + Buffer.from(source, 'binary').toString('base64')\n            : URL.createObjectURL(new Blob([source], {type: 'application/javascript'})));\n        }\n      \n","/**\n * @module ol/render/webgl/constants\n */\n\n/**\n * @enum {string}\n */\nexport const WebGLWorkerMessageType = {\n  GENERATE_POLYGON_BUFFERS: 'GENERATE_POLYGON_BUFFERS',\n  GENERATE_POINT_BUFFERS: 'GENERATE_POINT_BUFFERS',\n  GENERATE_LINE_STRING_BUFFERS: 'GENERATE_LINE_STRING_BUFFERS',\n};\n\n/**\n * @typedef {Object} WebGLWorkerGenerateBuffersMessage\n * This message will trigger the generation of a vertex and an index buffer based on the given render instructions.\n * When the buffers are generated, the worked will send a message of the same type to the main thread, with\n * the generated buffers in it.\n * Note that any addition properties present in the message *will* be sent back to the main thread.\n * @property {number} id Message id; will be used both in request and response as a means of identification\n * @property {WebGLWorkerMessageType} type Message type\n * @property {ArrayBuffer} renderInstructions render instructions raw binary buffer.\n * @property {number} [customAttributesSize] Amount of hit detection + custom attributes count in the render instructions.\n * @property {ArrayBuffer} [vertexBuffer] Vertices array raw binary buffer (sent by the worker).\n * @property {ArrayBuffer} [indexBuffer] Indices array raw binary buffer (sent by the worker).\n * @property {import(\"../../transform\").Transform} [renderInstructionsTransform] Transformation matrix used to project the instructions coordinates\n */\n","/**\n * @module ol/render/webgl/renderinstructions\n */\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {apply as applyTransform} from '../../transform.js';\n\n/**\n * @param {Float32Array} renderInstructions Render instructions\n * @param {import('./VectorStyleRenderer.js').AttributeDefinitions} customAttributes Custom attributes\n * @param {import(\"./MixedGeometryBatch.js\").GeometryBatchItem} batchEntry Batch item\n * @param {number} currentIndex Current index\n * @return {number} The amount of values pushed\n */\nfunction pushCustomAttributesInRenderInstructions(\n  renderInstructions,\n  customAttributes,\n  batchEntry,\n  currentIndex,\n) {\n  let shift = 0;\n  for (const key in customAttributes) {\n    const attr = customAttributes[key];\n    const value = attr.callback.call(batchEntry, batchEntry.feature);\n    renderInstructions[currentIndex + shift++] = value?.[0] ?? value;\n    if (!attr.size || attr.size === 1) {\n      continue;\n    }\n    renderInstructions[currentIndex + shift++] = value[1];\n    if (attr.size < 3) {\n      continue;\n    }\n    renderInstructions[currentIndex + shift++] = value[2];\n    if (attr.size < 4) {\n      continue;\n    }\n    renderInstructions[currentIndex + shift++] = value[3];\n  }\n  return shift;\n}\n\n/**\n * @param {import('./VectorStyleRenderer.js').AttributeDefinitions} customAttributes Custom attributes\n * @return {number} Cumulated size of all attributes\n */\nexport function getCustomAttributesSize(customAttributes) {\n  return Object.keys(customAttributes).reduce(\n    (prev, curr) => prev + (customAttributes[curr].size || 1),\n    0,\n  );\n}\n\n/**\n * Render instructions for lines are structured like so:\n * [ x0, y0, customAttr0, ... , xN, yN, customAttrN ]\n * @param {import(\"./MixedGeometryBatch.js\").PointGeometryBatch} batch Point geometry batch\n * @param {Float32Array} renderInstructions Render instructions\n * @param {import('./VectorStyleRenderer.js').AttributeDefinitions} customAttributes Custom attributes\n * @param {import(\"../../transform.js\").Transform} transform Transform to apply to coordinates\n * @return {Float32Array} Generated render instructions\n */\nexport function generatePointRenderInstructions(\n  batch,\n  renderInstructions,\n  customAttributes,\n  transform,\n) {\n  // here we anticipate the amount of render instructions for points:\n  // 2 instructions per vertex for position (x and y)\n  // + 1 instruction per vertex per custom attributes\n  const totalInstructionsCount =\n    (2 + getCustomAttributesSize(customAttributes)) * batch.geometriesCount;\n  if (\n    !renderInstructions ||\n    renderInstructions.length !== totalInstructionsCount\n  ) {\n    renderInstructions = new Float32Array(totalInstructionsCount);\n  }\n\n  // loop on features to fill the render instructions\n  const tmpCoords = [];\n  let renderIndex = 0;\n  for (const featureUid in batch.entries) {\n    const batchEntry = batch.entries[featureUid];\n    for (let i = 0, ii = batchEntry.flatCoordss.length; i < ii; i++) {\n      tmpCoords[0] = batchEntry.flatCoordss[i][0];\n      tmpCoords[1] = batchEntry.flatCoordss[i][1];\n      applyTransform(transform, tmpCoords);\n\n      renderInstructions[renderIndex++] = tmpCoords[0];\n      renderInstructions[renderIndex++] = tmpCoords[1];\n      renderIndex += pushCustomAttributesInRenderInstructions(\n        renderInstructions,\n        customAttributes,\n        batchEntry,\n        renderIndex,\n      );\n    }\n  }\n  return renderInstructions;\n}\n\n/**\n * Render instructions for lines are structured like so:\n * [ customAttr0, ... , customAttrN, numberOfVertices0, x0, y0, ... , xN, yN, numberOfVertices1, ... ]\n * @param {import(\"./MixedGeometryBatch.js\").LineStringGeometryBatch} batch Line String geometry batch\n * @param {Float32Array} renderInstructions Render instructions\n * @param {import('./VectorStyleRenderer.js').AttributeDefinitions} customAttributes Custom attributes\n * @param {import(\"../../transform.js\").Transform} transform Transform to apply to coordinates\n * @return {Float32Array} Generated render instructions\n */\nexport function generateLineStringRenderInstructions(\n  batch,\n  renderInstructions,\n  customAttributes,\n  transform,\n) {\n  // here we anticipate the amount of render instructions for lines:\n  // 3 instructions per vertex for position (x, y and m)\n  // + 1 instruction per line per custom attributes\n  // + 1 instruction per line (for vertices count)\n  const totalInstructionsCount =\n    3 * batch.verticesCount +\n    (1 + getCustomAttributesSize(customAttributes)) * batch.geometriesCount;\n  if (\n    !renderInstructions ||\n    renderInstructions.length !== totalInstructionsCount\n  ) {\n    renderInstructions = new Float32Array(totalInstructionsCount);\n  }\n\n  // loop on features to fill the render instructions\n  const flatCoords = [];\n  let renderIndex = 0;\n  for (const featureUid in batch.entries) {\n    const batchEntry = batch.entries[featureUid];\n    for (let i = 0, ii = batchEntry.flatCoordss.length; i < ii; i++) {\n      flatCoords.length = batchEntry.flatCoordss[i].length;\n      transform2D(\n        batchEntry.flatCoordss[i],\n        0,\n        flatCoords.length,\n        3,\n        transform,\n        flatCoords,\n        3,\n      );\n      renderIndex += pushCustomAttributesInRenderInstructions(\n        renderInstructions,\n        customAttributes,\n        batchEntry,\n        renderIndex,\n      );\n\n      // vertices count\n      renderInstructions[renderIndex++] = flatCoords.length / 3;\n\n      // looping on points for positions\n      for (let j = 0, jj = flatCoords.length; j < jj; j += 3) {\n        renderInstructions[renderIndex++] = flatCoords[j];\n        renderInstructions[renderIndex++] = flatCoords[j + 1];\n        renderInstructions[renderIndex++] = flatCoords[j + 2];\n      }\n    }\n  }\n  return renderInstructions;\n}\n\n/**\n * Render instructions for polygons are structured like so:\n * [ customAttr0, ..., customAttrN, numberOfRings, numberOfVerticesInRing0, ..., numberOfVerticesInRingN, x0, y0, ..., xN, yN, numberOfRings,... ]\n * @param {import(\"./MixedGeometryBatch.js\").PolygonGeometryBatch} batch Polygon geometry batch\n * @param {Float32Array} renderInstructions Render instructions\n * @param {import('./VectorStyleRenderer.js').AttributeDefinitions} customAttributes Custom attributes\n * @param {import(\"../../transform.js\").Transform} transform Transform to apply to coordinates\n * @return {Float32Array} Generated render instructions\n */\nexport function generatePolygonRenderInstructions(\n  batch,\n  renderInstructions,\n  customAttributes,\n  transform,\n) {\n  // here we anticipate the amount of render instructions for polygons:\n  // 2 instructions per vertex for position (x and y)\n  // + 1 instruction per polygon per custom attributes\n  // + 1 instruction per polygon (for vertices count in polygon)\n  // + 1 instruction per ring (for vertices count in ring)\n  const totalInstructionsCount =\n    2 * batch.verticesCount +\n    (1 + getCustomAttributesSize(customAttributes)) * batch.geometriesCount +\n    batch.ringsCount;\n  if (\n    !renderInstructions ||\n    renderInstructions.length !== totalInstructionsCount\n  ) {\n    renderInstructions = new Float32Array(totalInstructionsCount);\n  }\n\n  // loop on features to fill the render instructions\n  const flatCoords = [];\n  let renderIndex = 0;\n  for (const featureUid in batch.entries) {\n    const batchEntry = batch.entries[featureUid];\n    for (let i = 0, ii = batchEntry.flatCoordss.length; i < ii; i++) {\n      flatCoords.length = batchEntry.flatCoordss[i].length;\n      transform2D(\n        batchEntry.flatCoordss[i],\n        0,\n        flatCoords.length,\n        2,\n        transform,\n        flatCoords,\n      );\n      renderIndex += pushCustomAttributesInRenderInstructions(\n        renderInstructions,\n        customAttributes,\n        batchEntry,\n        renderIndex,\n      );\n\n      // ring count\n      renderInstructions[renderIndex++] =\n        batchEntry.ringsVerticesCounts[i].length;\n\n      // vertices count in each ring\n      for (\n        let j = 0, jj = batchEntry.ringsVerticesCounts[i].length;\n        j < jj;\n        j++\n      ) {\n        renderInstructions[renderIndex++] =\n          batchEntry.ringsVerticesCounts[i][j];\n      }\n\n      // looping on points for positions\n      for (let j = 0, jj = flatCoords.length; j < jj; j += 2) {\n        renderInstructions[renderIndex++] = flatCoords[j];\n        renderInstructions[renderIndex++] = flatCoords[j + 1];\n      }\n    }\n  }\n  return renderInstructions;\n}\n","/**\n * @module ol/render/webgl/VectorStyleRenderer\n */\nimport {buildExpression, newEvaluationContext} from '../../expr/cpu.js';\nimport {\n  BooleanType,\n  computeGeometryType,\n  newParsingContext,\n} from '../../expr/expression.js';\nimport {\n  create as createTransform,\n  makeInverse as makeInverseTransform,\n} from '../../transform.js';\nimport WebGLArrayBuffer from '../../webgl/Buffer.js';\nimport {AttributeType} from '../../webgl/Helper.js';\nimport {parseLiteralStyle} from '../../webgl/styleparser.js';\nimport {ARRAY_BUFFER, DYNAMIC_DRAW, ELEMENT_ARRAY_BUFFER} from '../../webgl.js';\nimport {create as createWebGLWorker} from '../../worker/webgl.js';\nimport {WebGLWorkerMessageType} from './constants.js';\nimport {\n  generateLineStringRenderInstructions,\n  generatePointRenderInstructions,\n  generatePolygonRenderInstructions,\n  getCustomAttributesSize,\n} from './renderinstructions.js';\nimport {colorEncodeId} from './utils.js';\n\nconst tmpColor = [];\n/** @type {Worker|undefined} */\nlet WEBGL_WORKER;\nfunction getWebGLWorker() {\n  if (!WEBGL_WORKER) {\n    WEBGL_WORKER = createWebGLWorker();\n  }\n  return WEBGL_WORKER;\n}\nlet workerMessageCounter = 0;\n\n/**\n * Names of attributes made available to the vertex shader.\n * Please note: changing these *will* break custom shaders!\n * @enum {string}\n */\nexport const Attributes = {\n  POSITION: 'a_position',\n  INDEX: 'a_index',\n  SEGMENT_START: 'a_segmentStart',\n  SEGMENT_END: 'a_segmentEnd',\n  MEASURE_START: 'a_measureStart',\n  MEASURE_END: 'a_measureEnd',\n  PARAMETERS: 'a_parameters',\n  JOIN_ANGLES: 'a_joinAngles',\n  DISTANCE: 'a_distance',\n};\n\n/**\n * @typedef {Object} AttributeDefinition A description of a custom attribute to be passed on to the GPU, with a value different\n * for each feature.\n * @property {number} [size] Amount of numerical values composing the attribute, either 1, 2, 3 or 4; in case size is > 1, the return value\n * of the callback should be an array; if unspecified, assumed to be a single float value\n * @property {function(this:import(\"./MixedGeometryBatch.js\").GeometryBatchItem, import(\"../../Feature\").FeatureLike):number|Array<number>} callback This callback computes the numerical value of the\n * attribute for a given feature.\n */\n\n/**\n * @typedef {Object<string, AttributeDefinition>} AttributeDefinitions\n * @typedef {Object<string, import(\"../../webgl/Helper\").UniformValue>} UniformDefinitions\n */\n\n/**\n * @typedef {Object} WebGLBuffers\n * @property {Array<WebGLArrayBuffer>} polygonBuffers Array containing indices and vertices buffers for polygons\n * @property {Array<WebGLArrayBuffer>} lineStringBuffers Array containing indices and vertices buffers for line strings\n * @property {Array<WebGLArrayBuffer>} pointBuffers Array containing indices and vertices buffers for points\n * @property {import(\"../../transform.js\").Transform} invertVerticesTransform Inverse of the transform applied when generating buffers\n */\n\n/**\n * @typedef {Object} RenderInstructions\n * @property {Float32Array|null} polygonInstructions Polygon instructions; null if nothing to render\n * @property {Float32Array|null} lineStringInstructions LineString instructions; null if nothing to render\n * @property {Float32Array|null} pointInstructions Point instructions; null if nothing to render\n */\n\n/**\n * @typedef {Object} ShaderProgram An object containing both shaders (vertex and fragment)\n * @property {string} vertex Vertex shader source\n * @property {string} fragment Fragment shader source\n */\n\n/**\n * @typedef {Object} AsShaders\n * @property {import(\"../../webgl/ShaderBuilder.js\").ShaderBuilder} builder Shader builder with the appropriate presets.\n * @property {AttributeDefinitions} [attributes] Custom attributes made available in the vertex shaders.\n * Default shaders rely on the attributes in {@link Attributes}.\n * @property {UniformDefinitions} [uniforms] Additional uniforms usable in shaders.\n */\n\n/**\n * @typedef {Object} AsRule\n * @property {import('../../style/flat.js').FlatStyle} style Style\n * @property {import(\"../../expr/expression.js\").EncodedExpression} [filter] Filter\n */\n\n/**\n * @typedef {AsRule|AsShaders} VectorStyle\n */\n\n/**\n * @classdesc This class is responsible for:\n * 1. generate WebGL buffers according to a provided style, using a MixedGeometryBatch as input\n * 2. rendering geometries contained in said buffers\n *\n * A layer renderer will typically maintain several of these in order to have several styles rendered separately.\n *\n * A VectorStyleRenderer instance can be created either from a literal style or from shaders using either\n * `VectorStyleRenderer.fromStyle` or `VectorStyleRenderer.fromShaders`. The shaders should not be provided explicitly\n * but instead as a preconfigured ShaderBuilder instance.\n *\n * The `generateBuffers` method returns a promise resolving to WebGL buffers that are intended to be rendered by the\n * same renderer.\n */\nclass VectorStyleRenderer {\n  /**\n   * @param {VectorStyle} styleOrShaders Literal style or custom shaders\n   * @param {import('../../style/flat.js').StyleVariables} variables Style variables\n   * @param {import('../../webgl/Helper.js').default} helper Helper\n   * @param {boolean} [enableHitDetection] Whether to enable the hit detection (needs compatible shader)\n   * @param {import(\"../../expr/expression.js\").ExpressionValue} [filter] Optional filter expression\n   */\n  constructor(styleOrShaders, variables, helper, enableHitDetection, filter) {\n    /**\n     * @private\n     * @type {import('../../webgl/Helper.js').default}\n     */\n    this.helper_;\n\n    /**\n     * @private\n     */\n    this.hitDetectionEnabled_ = !!enableHitDetection;\n\n    let asShaders = /** @type {AsShaders} */ (styleOrShaders);\n    const isShaders = 'builder' in styleOrShaders;\n    if (!isShaders) {\n      const asRule = /** @type {AsRule} */ (styleOrShaders);\n      const parseResult = parseLiteralStyle(\n        asRule.style,\n        variables,\n        asRule.filter,\n      );\n      asShaders = {\n        builder: parseResult.builder,\n        attributes: parseResult.attributes,\n        uniforms: parseResult.uniforms,\n      };\n    }\n\n    /**\n     * @private\n     * @type {WebGLProgram}\n     */\n    this.fillProgram_;\n\n    /**\n     * @private\n     * @type {WebGLProgram}\n     */\n    this.strokeProgram_;\n\n    /**\n     * @private\n     * @type {WebGLProgram}\n     */\n    this.symbolProgram_;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hasFill_ = !!asShaders.builder.getFillVertexShader();\n    if (this.hasFill_) {\n      /**\n       * @private\n       */\n      this.fillVertexShader_ = asShaders.builder.getFillVertexShader();\n      /**\n       * @private\n       */\n      this.fillFragmentShader_ = asShaders.builder.getFillFragmentShader();\n    }\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hasStroke_ = !!asShaders.builder.getStrokeVertexShader();\n    if (this.hasStroke_) {\n      /**\n       * @private\n       */\n      this.strokeVertexShader_ = asShaders.builder.getStrokeVertexShader();\n      /**\n       * @private\n       */\n      this.strokeFragmentShader_ = asShaders.builder.getStrokeFragmentShader();\n    }\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hasSymbol_ = !!asShaders.builder.getSymbolVertexShader();\n    if (this.hasSymbol_) {\n      /**\n       * @private\n       */\n      this.symbolVertexShader_ = asShaders.builder.getSymbolVertexShader();\n      /**\n       * @private\n       */\n      this.symbolFragmentShader_ = asShaders.builder.getSymbolFragmentShader();\n    }\n\n    /**\n     * @type {function(import('../../Feature.js').FeatureLike): boolean}\n     * @private\n     */\n    this.featureFilter_ = null;\n    if (filter) {\n      this.featureFilter_ = this.computeFeatureFilter(filter);\n    }\n\n    const hitDetectionAttributes = this.hitDetectionEnabled_\n      ? {\n          hitColor: {\n            callback() {\n              return colorEncodeId(this.ref, tmpColor);\n            },\n            size: 4,\n          },\n        }\n      : {};\n\n    /**\n     * @private\n     */\n    this.customAttributes_ = Object.assign(\n      {},\n      hitDetectionAttributes,\n      asShaders.attributes,\n    );\n    /**\n     * @private\n     */\n    this.uniforms_ = asShaders.uniforms;\n\n    const customAttributesDesc = Object.entries(this.customAttributes_).map(\n      ([name, value]) => ({\n        name: `a_${name}`,\n        size: value.size || 1,\n        type: AttributeType.FLOAT,\n      }),\n    );\n    /**\n     * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}\n     * @private\n     */\n    this.polygonAttributesDesc_ = [\n      {\n        name: Attributes.POSITION,\n        size: 2,\n        type: AttributeType.FLOAT,\n      },\n      ...customAttributesDesc,\n    ];\n    /**\n     * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}\n     * @private\n     */\n    this.lineStringAttributesDesc_ = [\n      {\n        name: Attributes.SEGMENT_START,\n        size: 2,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.MEASURE_START,\n        size: 1,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.SEGMENT_END,\n        size: 2,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.MEASURE_END,\n        size: 1,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.JOIN_ANGLES,\n        size: 2,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.DISTANCE,\n        size: 1,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.PARAMETERS,\n        size: 1,\n        type: AttributeType.FLOAT,\n      },\n      ...customAttributesDesc,\n    ];\n    /**\n     * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}\n     * @private\n     */\n    this.pointAttributesDesc_ = [\n      {\n        name: Attributes.POSITION,\n        size: 2,\n        type: AttributeType.FLOAT,\n      },\n      {\n        name: Attributes.INDEX,\n        size: 1,\n        type: AttributeType.FLOAT,\n      },\n      ...customAttributesDesc,\n    ];\n\n    this.setHelper(helper);\n  }\n\n  /**\n   * Will apply the style filter when generating geometry batches (if it can be evaluated outside a map context)\n   * @param {import(\"../../expr/expression.js\").ExpressionValue} filter Style filter\n   * @return {function(import('../../Feature.js').FeatureLike): boolean} Feature filter\n   * @private\n   */\n  computeFeatureFilter(filter) {\n    const parsingContext = newParsingContext();\n    /**\n     * @type {import('../../expr/cpu.js').ExpressionEvaluator}\n     */\n    let compiled;\n    try {\n      compiled = buildExpression(filter, BooleanType, parsingContext);\n    } catch {\n      // filter expression failed to compile for CPU: ignore it\n      return null;\n    }\n\n    // do not apply the filter if it depends on map state (e.g. zoom level) or any variable\n    if (parsingContext.mapState || parsingContext.variables.size > 0) {\n      return null;\n    }\n\n    const evalContext = newEvaluationContext();\n    return (feature) => {\n      evalContext.properties = feature.getPropertiesInternal();\n      if (parsingContext.featureId) {\n        const id = feature.getId();\n        if (id !== undefined) {\n          evalContext.featureId = id;\n        } else {\n          evalContext.featureId = null;\n        }\n      }\n      evalContext.geometryType = computeGeometryType(feature.getGeometry());\n      return /** @type {boolean} */ (compiled(evalContext));\n    };\n  }\n\n  /**\n   * @param {import('./MixedGeometryBatch.js').default} geometryBatch Geometry batch\n   * @param {import(\"../../transform.js\").Transform} transform Transform to apply to coordinates\n   * @return {Promise<WebGLBuffers|null>} A promise resolving to WebGL buffers; returns null if buffers are empty\n   */\n  async generateBuffers(geometryBatch, transform) {\n    let filteredBatch = geometryBatch;\n    if (this.featureFilter_) {\n      filteredBatch = filteredBatch.filter(this.featureFilter_);\n      if (filteredBatch.isEmpty()) {\n        return null;\n      }\n    }\n    const renderInstructions = this.generateRenderInstructions_(\n      filteredBatch,\n      transform,\n    );\n    const [polygonBuffers, lineStringBuffers, pointBuffers] = await Promise.all(\n      [\n        this.generateBuffersForType_(\n          renderInstructions.polygonInstructions,\n          'Polygon',\n          transform,\n        ),\n        this.generateBuffersForType_(\n          renderInstructions.lineStringInstructions,\n          'LineString',\n          transform,\n        ),\n        this.generateBuffersForType_(\n          renderInstructions.pointInstructions,\n          'Point',\n          transform,\n        ),\n      ],\n    );\n    // also return the inverse of the transform that was applied when generating buffers\n    const invertVerticesTransform = makeInverseTransform(\n      createTransform(),\n      transform,\n    );\n    return {\n      polygonBuffers: polygonBuffers,\n      lineStringBuffers: lineStringBuffers,\n      pointBuffers: pointBuffers,\n      invertVerticesTransform: invertVerticesTransform,\n    };\n  }\n\n  /**\n   * @param {import('./MixedGeometryBatch.js').default} geometryBatch Geometry batch\n   * @param {import(\"../../transform.js\").Transform} transform Transform to apply to coordinates\n   * @return {RenderInstructions} Render instructions\n   * @private\n   */\n  generateRenderInstructions_(geometryBatch, transform) {\n    const polygonInstructions = this.hasFill_\n      ? generatePolygonRenderInstructions(\n          geometryBatch.polygonBatch,\n          new Float32Array(0),\n          this.customAttributes_,\n          transform,\n        )\n      : null;\n    const lineStringInstructions = this.hasStroke_\n      ? generateLineStringRenderInstructions(\n          geometryBatch.lineStringBatch,\n          new Float32Array(0),\n          this.customAttributes_,\n          transform,\n        )\n      : null;\n    const pointInstructions = this.hasSymbol_\n      ? generatePointRenderInstructions(\n          geometryBatch.pointBatch,\n          new Float32Array(0),\n          this.customAttributes_,\n          transform,\n        )\n      : null;\n\n    return {\n      polygonInstructions,\n      lineStringInstructions,\n      pointInstructions,\n    };\n  }\n\n  /**\n   * @param {Float32Array|null} renderInstructions Render instructions\n   * @param {import(\"../../geom/Geometry.js\").Type} geometryType Geometry type\n   * @param {import(\"../../transform.js\").Transform} transform Transform to apply to coordinates\n   * @return {Promise<Array<WebGLArrayBuffer>>|null} Indices buffer and vertices buffer; null if nothing to render\n   * @private\n   */\n  generateBuffersForType_(renderInstructions, geometryType, transform) {\n    if (renderInstructions === null) {\n      return null;\n    }\n\n    const messageId = workerMessageCounter++;\n    let messageType;\n    switch (geometryType) {\n      case 'Polygon':\n        messageType = WebGLWorkerMessageType.GENERATE_POLYGON_BUFFERS;\n        break;\n      case 'LineString':\n        messageType = WebGLWorkerMessageType.GENERATE_LINE_STRING_BUFFERS;\n        break;\n      case 'Point':\n        messageType = WebGLWorkerMessageType.GENERATE_POINT_BUFFERS;\n        break;\n      default:\n      // pass\n    }\n\n    /** @type {import('./constants.js').WebGLWorkerGenerateBuffersMessage} */\n    const message = {\n      id: messageId,\n      type: messageType,\n      renderInstructions: renderInstructions.buffer,\n      renderInstructionsTransform: transform,\n      customAttributesSize: getCustomAttributesSize(this.customAttributes_),\n    };\n    const WEBGL_WORKER = getWebGLWorker();\n    WEBGL_WORKER.postMessage(message, [renderInstructions.buffer]);\n\n    // leave ownership of render instructions\n    renderInstructions = null;\n\n    return new Promise((resolve) => {\n      /**\n       * @param {*} event Event.\n       */\n      const handleMessage = (event) => {\n        const received = event.data;\n\n        // this is not the response to our request: skip\n        if (received.id !== messageId) {\n          return;\n        }\n\n        // we've received our response: stop listening\n        WEBGL_WORKER.removeEventListener('message', handleMessage);\n\n        // the helper has disposed in the meantime; the promise will not be resolved\n        if (!this.helper_.getGL()) {\n          return;\n        }\n\n        // copy & flush received buffers to GPU\n        const verticesBuffer = new WebGLArrayBuffer(\n          ARRAY_BUFFER,\n          DYNAMIC_DRAW,\n        ).fromArrayBuffer(received.vertexBuffer);\n        const indicesBuffer = new WebGLArrayBuffer(\n          ELEMENT_ARRAY_BUFFER,\n          DYNAMIC_DRAW,\n        ).fromArrayBuffer(received.indexBuffer);\n        this.helper_.flushBufferData(verticesBuffer);\n        this.helper_.flushBufferData(indicesBuffer);\n\n        resolve([indicesBuffer, verticesBuffer]);\n      };\n\n      WEBGL_WORKER.addEventListener('message', handleMessage);\n    });\n  }\n\n  /**\n   * Render the geometries in the given buffers.\n   * @param {WebGLBuffers} buffers WebGL Buffers to draw\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state\n   * @param {function(): void} preRenderCallback This callback will be called right before drawing, and can be used to set uniforms\n   */\n  render(buffers, frameState, preRenderCallback) {\n    this.hasFill_ &&\n      this.renderInternal_(\n        buffers.polygonBuffers[0],\n        buffers.polygonBuffers[1],\n        this.fillProgram_,\n        this.polygonAttributesDesc_,\n        frameState,\n        preRenderCallback,\n      );\n    this.hasStroke_ &&\n      this.renderInternal_(\n        buffers.lineStringBuffers[0],\n        buffers.lineStringBuffers[1],\n        this.strokeProgram_,\n        this.lineStringAttributesDesc_,\n        frameState,\n        preRenderCallback,\n      );\n    this.hasSymbol_ &&\n      this.renderInternal_(\n        buffers.pointBuffers[0],\n        buffers.pointBuffers[1],\n        this.symbolProgram_,\n        this.pointAttributesDesc_,\n        frameState,\n        preRenderCallback,\n      );\n  }\n\n  /**\n   * @param {WebGLArrayBuffer} indicesBuffer Indices buffer\n   * @param {WebGLArrayBuffer} verticesBuffer Vertices buffer\n   * @param {WebGLProgram} program Program\n   * @param {Array<import('../../webgl/Helper.js').AttributeDescription>} attributes Attribute descriptions\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {function(): void} preRenderCallback This callback will be called right before drawing, and can be used to set uniforms\n   * @private\n   */\n  renderInternal_(\n    indicesBuffer,\n    verticesBuffer,\n    program,\n    attributes,\n    frameState,\n    preRenderCallback,\n  ) {\n    const renderCount = indicesBuffer.getSize();\n    if (renderCount === 0) {\n      return;\n    }\n    this.helper_.useProgram(program, frameState);\n    this.helper_.bindBuffer(verticesBuffer);\n    this.helper_.bindBuffer(indicesBuffer);\n    this.helper_.enableAttributes(attributes);\n    preRenderCallback();\n    this.helper_.drawElements(0, renderCount);\n  }\n\n  /**\n   * @param {import('../../webgl/Helper.js').default} helper Helper\n   * @param {WebGLBuffers} buffers WebGL Buffers to reload if any\n   */\n  setHelper(helper, buffers = null) {\n    this.helper_ = helper;\n\n    if (this.hasFill_) {\n      this.fillProgram_ = this.helper_.getProgram(\n        this.fillFragmentShader_,\n        this.fillVertexShader_,\n      );\n    }\n    if (this.hasStroke_) {\n      this.strokeProgram_ = this.helper_.getProgram(\n        this.strokeFragmentShader_,\n        this.strokeVertexShader_,\n      );\n    }\n    if (this.hasSymbol_) {\n      this.symbolProgram_ = this.helper_.getProgram(\n        this.symbolFragmentShader_,\n        this.symbolVertexShader_,\n      );\n    }\n    this.helper_.addUniforms(this.uniforms_);\n\n    if (buffers) {\n      if (buffers.polygonBuffers) {\n        this.helper_.flushBufferData(buffers.polygonBuffers[0]);\n        this.helper_.flushBufferData(buffers.polygonBuffers[1]);\n      }\n      if (buffers.lineStringBuffers) {\n        this.helper_.flushBufferData(buffers.lineStringBuffers[0]);\n        this.helper_.flushBufferData(buffers.lineStringBuffers[1]);\n      }\n      if (buffers.pointBuffers) {\n        this.helper_.flushBufferData(buffers.pointBuffers[0]);\n        this.helper_.flushBufferData(buffers.pointBuffers[1]);\n      }\n    }\n  }\n}\n\nexport default VectorStyleRenderer;\n","/**\n * A wrapper class to simplify rendering to a texture instead of the final canvas\n * @module ol/webgl/RenderTarget\n */\nimport {equals} from '../array.js';\n\n// for pixel color reading\nconst tmpArray4 = new Uint8Array(4);\n\n/**\n * @classdesc\n * This class is a wrapper around the association of both a `WebGLTexture` and a `WebGLFramebuffer` instances,\n * simplifying initialization and binding for rendering.\n */\nclass WebGLRenderTarget {\n  /**\n   * @param {import(\"./Helper.js\").default} helper WebGL helper; mandatory.\n   * @param {Array<number>} [size] Expected size of the render target texture; note: this can be changed later on.\n   */\n  constructor(helper, size) {\n    /**\n     * @private\n     * @type {import(\"./Helper.js\").default}\n     */\n    this.helper_ = helper;\n    const gl = helper.getGL();\n\n    /**\n     * @private\n     * @type {WebGLTexture}\n     */\n    this.texture_ = gl.createTexture();\n\n    /**\n     * @private\n     * @type {WebGLFramebuffer}\n     */\n    this.framebuffer_ = gl.createFramebuffer();\n\n    /**\n     * @private\n     * @type {WebGLRenderbuffer}\n     */\n    this.depthbuffer_ = gl.createRenderbuffer();\n\n    /**\n     * @type {Array<number>}\n     * @private\n     */\n    this.size_ = size || [1, 1];\n\n    /**\n     * @type {Uint8Array}\n     * @private\n     */\n    this.data_ = new Uint8Array(0);\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.dataCacheDirty_ = true;\n\n    this.updateSize_();\n  }\n\n  /**\n   * Changes the size of the render target texture. Note: will do nothing if the size\n   * is already the same.\n   * @param {Array<number>} size Expected size of the render target texture\n   */\n  setSize(size) {\n    if (equals(size, this.size_)) {\n      return;\n    }\n    this.size_[0] = size[0];\n    this.size_[1] = size[1];\n    this.updateSize_();\n  }\n\n  /**\n   * Returns the size of the render target texture\n   * @return {Array<number>} Size of the render target texture\n   */\n  getSize() {\n    return this.size_;\n  }\n\n  /**\n   * This will cause following calls to `#readAll` or `#readPixel` to download the content of the\n   * render target into memory, which is an expensive operation.\n   * This content will be kept in cache but should be cleared after each new render.\n   */\n  clearCachedData() {\n    this.dataCacheDirty_ = true;\n  }\n\n  /**\n   * Returns the full content of the frame buffer as a series of r, g, b, a components\n   * in the 0-255 range (unsigned byte).\n   * @return {Uint8Array} Integer array of color values\n   */\n  readAll() {\n    if (this.dataCacheDirty_) {\n      const size = this.size_;\n      const gl = this.helper_.getGL();\n\n      gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer_);\n      gl.readPixels(\n        0,\n        0,\n        size[0],\n        size[1],\n        gl.RGBA,\n        gl.UNSIGNED_BYTE,\n        this.data_,\n      );\n      this.dataCacheDirty_ = false;\n    }\n    return this.data_;\n  }\n\n  /**\n   * Reads one pixel of the frame buffer as an array of r, g, b, a components\n   * in the 0-255 range (unsigned byte).\n   * If x and/or y are outside of existing data, an array filled with 0 is returned.\n   * @param {number} x Pixel coordinate\n   * @param {number} y Pixel coordinate\n   * @return {Uint8Array} Integer array with one color value (4 components)\n   */\n  readPixel(x, y) {\n    if (x < 0 || y < 0 || x > this.size_[0] || y >= this.size_[1]) {\n      tmpArray4[0] = 0;\n      tmpArray4[1] = 0;\n      tmpArray4[2] = 0;\n      tmpArray4[3] = 0;\n      return tmpArray4;\n    }\n\n    this.readAll();\n    const index =\n      Math.floor(x) + (this.size_[1] - Math.floor(y) - 1) * this.size_[0];\n    tmpArray4[0] = this.data_[index * 4];\n    tmpArray4[1] = this.data_[index * 4 + 1];\n    tmpArray4[2] = this.data_[index * 4 + 2];\n    tmpArray4[3] = this.data_[index * 4 + 3];\n    return tmpArray4;\n  }\n\n  /**\n   * @return {WebGLTexture} Texture to render to\n   */\n  getTexture() {\n    return this.texture_;\n  }\n\n  /**\n   * @return {WebGLFramebuffer} Frame buffer of the render target\n   */\n  getFramebuffer() {\n    return this.framebuffer_;\n  }\n\n  /**\n   * @return {WebGLRenderbuffer} Depth buffer of the render target\n   */\n  getDepthbuffer() {\n    return this.depthbuffer_;\n  }\n\n  /**\n   * @private\n   */\n  updateSize_() {\n    const size = this.size_;\n    const gl = this.helper_.getGL();\n\n    this.texture_ = this.helper_.createTexture(size, null, this.texture_);\n\n    gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer_);\n    gl.viewport(0, 0, size[0], size[1]);\n    gl.framebufferTexture2D(\n      gl.FRAMEBUFFER,\n      gl.COLOR_ATTACHMENT0,\n      gl.TEXTURE_2D,\n      this.texture_,\n      0,\n    );\n\n    gl.bindRenderbuffer(gl.RENDERBUFFER, this.depthbuffer_);\n    gl.renderbufferStorage(\n      gl.RENDERBUFFER,\n      gl.DEPTH_COMPONENT16,\n      size[0],\n      size[1],\n    );\n    gl.framebufferRenderbuffer(\n      gl.FRAMEBUFFER,\n      gl.DEPTH_ATTACHMENT,\n      gl.RENDERBUFFER,\n      this.depthbuffer_,\n    );\n\n    this.data_ = new Uint8Array(size[0] * size[1] * 4);\n  }\n}\n\nexport default WebGLRenderTarget;\n","import {getWidth} from '../../extent.js';\n\n/**\n * Compute world params\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {any} layer The layer\n * @return {Array<number>} The world start, end and width.\n */\nexport function getWorldParameters(frameState, layer) {\n  const projection = frameState.viewState.projection;\n\n  const vectorSource = layer.getSource();\n  const multiWorld = vectorSource.getWrapX() && projection.canWrapX();\n  const projectionExtent = projection.getExtent();\n\n  const extent = frameState.extent;\n  const worldWidth = multiWorld ? getWidth(projectionExtent) : null;\n  const endWorld = multiWorld\n    ? Math.ceil((extent[2] - projectionExtent[2]) / worldWidth) + 1\n    : 1;\n\n  const startWorld = multiWorld\n    ? Math.floor((extent[0] - projectionExtent[0]) / worldWidth)\n    : 0;\n\n  return [startWorld, endWorld, worldWidth];\n}\n","/**\n * @module ol/renderer/webgl/VectorLayer\n */\nimport ViewHint from '../../ViewHint.js';\nimport {assert} from '../../asserts.js';\nimport {listen, unlistenByKey} from '../../events.js';\nimport {buffer, createEmpty, equals} from '../../extent.js';\nimport BaseVector from '../../layer/BaseVector.js';\nimport {\n  getTransformFromProjections,\n  getUserProjection,\n  toUserExtent,\n  toUserResolution,\n} from '../../proj.js';\nimport MixedGeometryBatch from '../../render/webgl/MixedGeometryBatch.js';\nimport VectorStyleRenderer from '../../render/webgl/VectorStyleRenderer.js';\nimport {breakDownFlatStyle, colorDecodeId} from '../../render/webgl/utils.js';\nimport VectorEventType from '../../source/VectorEventType.js';\nimport {\n  apply as applyTransform,\n  create as createTransform,\n  makeInverse as makeInverseTransform,\n  multiply as multiplyTransform,\n  setFromArray as setFromTransform,\n  translate as translateTransform,\n} from '../../transform.js';\nimport {\n  create as createMat4,\n  fromTransform as mat4FromTransform,\n} from '../../vec/mat4.js';\nimport {DefaultUniform} from '../../webgl/Helper.js';\nimport WebGLRenderTarget from '../../webgl/RenderTarget.js';\nimport WebGLLayerRenderer from './Layer.js';\nimport {getWorldParameters} from './worldUtil.js';\n\nexport const Uniforms = {\n  ...DefaultUniform,\n  RENDER_EXTENT: 'u_renderExtent', // intersection of layer, source, and view extent\n  PATTERN_ORIGIN: 'u_patternOrigin',\n  GLOBAL_ALPHA: 'u_globalAlpha',\n};\n\n/**\n * @typedef {import('../../render/webgl/VectorStyleRenderer.js').AsShaders} StyleAsShaders\n */\n/**\n * @typedef {import('../../render/webgl/VectorStyleRenderer.js').AsRule} StyleAsRule\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the canvas element.\n * @property {import('../../style/flat.js').FlatStyleLike | Array<StyleAsShaders> | StyleAsShaders} style Flat vector style; also accepts shaders\n * @property {Object<string, number|Array<number>|string|boolean>} variables Style variables\n * @property {boolean} [disableHitDetection=false] Setting this to true will provide a slight performance boost, but will\n * prevent all hit detection on the layer.\n * @property {Array<import(\"./Layer\").PostProcessesOptions>} [postProcesses] Post-processes definitions\n */\n\n/**\n * @classdesc\n * Experimental WebGL vector renderer. Supports polygons, lines and points:\n *  Polygons are broken down into triangles\n *  Lines are rendered as strips of quads\n *  Points are rendered as quads\n *\n * You need to provide vertex and fragment shaders as well as custom attributes for each type of geometry. All shaders\n * can access the uniforms in the {@link module:ol/webgl/Helper~DefaultUniform} enum.\n * The vertex shaders can access the following attributes depending on the geometry type:\n *  For polygons: {@link module:ol/render/webgl/PolygonBatchRenderer~Attributes}\n *  For line strings: {@link module:ol/render/webgl/LineStringBatchRenderer~Attributes}\n *  For points: {@link module:ol/render/webgl/PointBatchRenderer~Attributes}\n *\n * Please note that the fragment shaders output should have premultiplied alpha, otherwise visual anomalies may occur.\n *\n * Note: this uses {@link module:ol/webgl/Helper~WebGLHelper} internally.\n */\nclass WebGLVectorLayerRenderer extends WebGLLayerRenderer {\n  /**\n   * @param {import(\"../../layer/Layer.js\").default} layer Layer.\n   * @param {Options} options Options.\n   */\n  constructor(layer, options) {\n    const uniforms = {\n      [Uniforms.RENDER_EXTENT]: [0, 0, 0, 0],\n      [Uniforms.PATTERN_ORIGIN]: [0, 0],\n      [Uniforms.GLOBAL_ALPHA]: 1,\n    };\n\n    super(layer, {\n      uniforms: uniforms,\n      postProcesses: options.postProcesses,\n    });\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hitDetectionEnabled_ = !options.disableHitDetection;\n\n    /**\n     * @type {WebGLRenderTarget}\n     * @private\n     */\n    this.hitRenderTarget_;\n\n    /**\n     * @private\n     */\n    this.sourceRevision_ = -1;\n\n    /**\n     * @private\n     */\n    this.previousExtent_ = createEmpty();\n\n    /**\n     * This transform is updated on every frame and is the composition of:\n     * - invert of the world->screen transform that was used when rebuilding buffers (see `this.renderTransform_`)\n     * - current world->screen transform\n     * @type {import(\"../../transform.js\").Transform}\n     * @private\n     */\n    this.currentTransform_ = createTransform();\n\n    /**\n     * @private\n     */\n    this.tmpCoords_ = [0, 0];\n    /**\n     * @private\n     */\n    this.tmpTransform_ = createTransform();\n    /**\n     * @private\n     */\n    this.tmpMat4_ = createMat4();\n\n    /**\n     * @type {import(\"../../transform.js\").Transform}\n     * @private\n     */\n    this.currentFrameStateTransform_ = createTransform();\n\n    /**\n     * @type {import('../../style/flat.js').StyleVariables}\n     * @private\n     */\n    this.styleVariables_ = {};\n\n    /**\n     * @type {Array<StyleAsRule | StyleAsShaders>}\n     * @private\n     */\n    this.styles_ = [];\n\n    /**\n     * @type {Array<VectorStyleRenderer>}\n     * @private\n     */\n    this.styleRenderers_ = [];\n\n    /**\n     * @type {Array<import('../../render/webgl/VectorStyleRenderer.js').WebGLBuffers>}\n     * @private\n     */\n    this.buffers_ = [];\n\n    this.applyOptions_(options);\n\n    /**\n     * @private\n     */\n    this.batch_ = new MixedGeometryBatch();\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.initialFeaturesAdded_ = false;\n\n    /**\n     * @private\n     * @type {Array<import(\"../../events.js\").EventsKey|null>}\n     */\n    this.sourceListenKeys_ = null;\n  }\n\n  /**\n   * @private\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   */\n  addInitialFeatures_(frameState) {\n    const source = this.getLayer().getSource();\n    const userProjection = getUserProjection();\n    let projectionTransform;\n    if (userProjection) {\n      projectionTransform = getTransformFromProjections(\n        userProjection,\n        frameState.viewState.projection,\n      );\n    }\n    this.batch_.addFeatures(source.getFeatures(), projectionTransform);\n    this.sourceListenKeys_ = [\n      listen(\n        source,\n        VectorEventType.ADDFEATURE,\n        this.handleSourceFeatureAdded_.bind(this, projectionTransform),\n      ),\n      listen(\n        source,\n        VectorEventType.CHANGEFEATURE,\n        this.handleSourceFeatureChanged_,\n        this,\n      ),\n      listen(\n        source,\n        VectorEventType.REMOVEFEATURE,\n        this.handleSourceFeatureDelete_,\n        this,\n      ),\n      listen(\n        source,\n        VectorEventType.CLEAR,\n        this.handleSourceFeatureClear_,\n        this,\n      ),\n    ];\n  }\n\n  /**\n   * @param {Options} options Options.\n   * @private\n   */\n  applyOptions_(options) {\n    this.styleVariables_ = options.variables;\n    this.styles_ = breakDownFlatStyle(options.style);\n  }\n\n  /**\n   * @private\n   */\n  createRenderers_() {\n    this.buffers_ = [];\n    this.styleRenderers_ = this.styles_.map(\n      (style) =>\n        new VectorStyleRenderer(\n          style,\n          this.styleVariables_,\n          this.helper,\n          this.hitDetectionEnabled_,\n          'filter' in style ? style.filter : null,\n        ),\n    );\n  }\n\n  /**\n   * @override\n   */\n  reset(options) {\n    this.applyOptions_(options);\n    if (this.helper) {\n      this.createRenderers_();\n    }\n    super.reset(options);\n  }\n\n  /**\n   * @override\n   */\n  afterHelperCreated() {\n    if (this.styleRenderers_.length) {\n      // To reuse buffers\n      this.styleRenderers_.forEach((renderer, i) =>\n        renderer.setHelper(this.helper, this.buffers_[i]),\n      );\n    } else {\n      this.createRenderers_();\n    }\n\n    if (this.hitDetectionEnabled_) {\n      this.hitRenderTarget_ = new WebGLRenderTarget(this.helper);\n    }\n  }\n\n  /**\n   * @param {import(\"../../proj.js\").TransformFunction} projectionTransform Transform function.\n   * @param {import(\"../../source/Vector.js\").VectorSourceEvent} event Event.\n   * @private\n   */\n  handleSourceFeatureAdded_(projectionTransform, event) {\n    const feature = event.feature;\n    this.batch_.addFeature(feature, projectionTransform);\n  }\n\n  /**\n   * @param {import(\"../../source/Vector.js\").VectorSourceEvent} event Event.\n   * @private\n   */\n  handleSourceFeatureChanged_(event) {\n    const feature = event.feature;\n    this.batch_.changeFeature(feature);\n  }\n\n  /**\n   * @param {import(\"../../source/Vector.js\").VectorSourceEvent} event Event.\n   * @private\n   */\n  handleSourceFeatureDelete_(event) {\n    const feature = event.feature;\n    this.batch_.removeFeature(feature);\n  }\n\n  /**\n   * @private\n   */\n  handleSourceFeatureClear_() {\n    this.batch_.clear();\n  }\n\n  /**\n   * @param {import(\"../../transform.js\").Transform} batchInvertTransform Inverse of the transformation in which geometries are expressed\n   * @private\n   */\n  applyUniforms_(batchInvertTransform) {\n    // world to screen matrix\n    setFromTransform(this.tmpTransform_, this.currentFrameStateTransform_);\n    multiplyTransform(this.tmpTransform_, batchInvertTransform);\n    this.helper.setUniformMatrixValue(\n      Uniforms.PROJECTION_MATRIX,\n      mat4FromTransform(this.tmpMat4_, this.tmpTransform_),\n    );\n\n    // screen to world matrix\n    makeInverseTransform(this.tmpTransform_, this.tmpTransform_);\n    this.helper.setUniformMatrixValue(\n      Uniforms.SCREEN_TO_WORLD_MATRIX,\n      mat4FromTransform(this.tmpMat4_, this.tmpTransform_),\n    );\n\n    // pattern origin should always be [0, 0] in world coordinates\n    this.tmpCoords_[0] = 0;\n    this.tmpCoords_[1] = 0;\n    makeInverseTransform(this.tmpTransform_, batchInvertTransform);\n    applyTransform(this.tmpTransform_, this.tmpCoords_);\n    this.helper.setUniformFloatVec2(Uniforms.PATTERN_ORIGIN, this.tmpCoords_);\n  }\n\n  /**\n   * Render the layer.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState) {\n    const gl = this.helper.getGL();\n    this.preRender(gl, frameState);\n\n    const [startWorld, endWorld, worldWidth] = getWorldParameters(\n      frameState,\n      this.getLayer(),\n    );\n\n    // draw the normal canvas\n    this.helper.prepareDraw(frameState);\n    this.renderWorlds(frameState, false, startWorld, endWorld, worldWidth);\n    this.helper.finalizeDraw(\n      frameState,\n      this.dispatchPreComposeEvent,\n      this.dispatchPostComposeEvent,\n    );\n\n    const canvas = this.helper.getCanvas();\n\n    if (this.hitDetectionEnabled_) {\n      this.renderWorlds(frameState, true, startWorld, endWorld, worldWidth);\n      this.hitRenderTarget_.clearCachedData();\n    }\n\n    this.postRender(gl, frameState);\n\n    return canvas;\n  }\n\n  /**\n   * Determine whether renderFrame should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrameInternal(frameState) {\n    if (!this.initialFeaturesAdded_) {\n      this.addInitialFeatures_(frameState);\n      this.initialFeaturesAdded_ = true;\n    }\n\n    const layer = this.getLayer();\n    const vectorSource = layer.getSource();\n    const viewState = frameState.viewState;\n    const viewNotMoving =\n      !frameState.viewHints[ViewHint.ANIMATING] &&\n      !frameState.viewHints[ViewHint.INTERACTING];\n    const extentChanged = !equals(this.previousExtent_, frameState.extent);\n    const sourceChanged = this.sourceRevision_ < vectorSource.getRevision();\n\n    if (sourceChanged) {\n      this.sourceRevision_ = vectorSource.getRevision();\n    }\n\n    if (viewNotMoving && (extentChanged || sourceChanged)) {\n      const projection = viewState.projection;\n      const resolution = viewState.resolution;\n\n      const renderBuffer =\n        layer instanceof BaseVector ? layer.getRenderBuffer() : 0;\n      const extent = buffer(frameState.extent, renderBuffer * resolution);\n\n      const userProjection = getUserProjection();\n      if (userProjection) {\n        vectorSource.loadFeatures(\n          toUserExtent(extent, userProjection),\n          toUserResolution(resolution, projection),\n          userProjection,\n        );\n      } else {\n        vectorSource.loadFeatures(extent, resolution, projection);\n      }\n\n      this.ready = false;\n\n      const transform = this.helper.makeProjectionTransform(\n        frameState,\n        createTransform(),\n      );\n\n      const generatePromises = this.styleRenderers_.map((renderer, i) =>\n        renderer.generateBuffers(this.batch_, transform).then((buffers) => {\n          if (this.buffers_[i]) {\n            this.disposeBuffers(this.buffers_[i]);\n          }\n          this.buffers_[i] = buffers;\n        }),\n      );\n      Promise.all(generatePromises).then(() => {\n        this.ready = true;\n        this.getLayer().changed();\n      });\n\n      this.previousExtent_ = frameState.extent.slice();\n    }\n\n    return true;\n  }\n\n  /**\n   * Render the world, either to the main framebuffer or to the hit framebuffer\n   * @param {import(\"../../Map.js\").FrameState} frameState current frame state\n   * @param {boolean} forHitDetection whether the rendering is for hit detection\n   * @param {number} startWorld the world to render in the first iteration\n   * @param {number} endWorld the last world to render\n   * @param {number} worldWidth the width of the worlds being rendered\n   */\n  renderWorlds(frameState, forHitDetection, startWorld, endWorld, worldWidth) {\n    let world = startWorld;\n\n    if (forHitDetection) {\n      this.hitRenderTarget_.setSize([\n        Math.floor(frameState.size[0] / 2),\n        Math.floor(frameState.size[1] / 2),\n      ]);\n      this.helper.prepareDrawToRenderTarget(\n        frameState,\n        this.hitRenderTarget_,\n        true,\n      );\n    }\n\n    do {\n      this.helper.makeProjectionTransform(\n        frameState,\n        this.currentFrameStateTransform_,\n      );\n      translateTransform(\n        this.currentFrameStateTransform_,\n        world * worldWidth,\n        0,\n      );\n      for (let i = 0, ii = this.styleRenderers_.length; i < ii; i++) {\n        const renderer = this.styleRenderers_[i];\n        const buffers = this.buffers_[i];\n        if (!buffers) {\n          continue;\n        }\n        renderer.render(buffers, frameState, () => {\n          this.applyUniforms_(buffers.invertVerticesTransform);\n          this.helper.applyHitDetectionUniform(forHitDetection);\n        });\n      }\n    } while (++world < endWorld);\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"../vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"../Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   * @override\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    assert(\n      this.hitDetectionEnabled_,\n      '`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option.',\n    );\n    if (!this.styleRenderers_.length || !this.hitDetectionEnabled_) {\n      return undefined;\n    }\n\n    const pixel = applyTransform(\n      frameState.coordinateToPixelTransform,\n      coordinate.slice(),\n    );\n\n    const data = this.hitRenderTarget_.readPixel(pixel[0] / 2, pixel[1] / 2);\n    const color = [data[0] / 255, data[1] / 255, data[2] / 255, data[3] / 255];\n    const ref = colorDecodeId(color);\n    const feature = this.batch_.getFeatureFromRef(ref);\n    if (feature) {\n      return callback(feature, this.getLayer(), null);\n    }\n    return undefined;\n  }\n\n  /**\n   * Will release a set of Webgl buffers\n   * @param {import('../../render/webgl/VectorStyleRenderer.js').WebGLBuffers} buffers Buffers\n   */\n  disposeBuffers(buffers) {\n    /**\n     * @param {Array<import('../../webgl/Buffer.js').default>} typeBuffers Buffers\n     */\n    const disposeBuffersOfType = (typeBuffers) => {\n      for (const buffer of typeBuffers) {\n        if (buffer) {\n          this.helper.deleteBuffer(buffer);\n        }\n      }\n    };\n    if (buffers.pointBuffers) {\n      disposeBuffersOfType(buffers.pointBuffers);\n    }\n    if (buffers.lineStringBuffers) {\n      disposeBuffersOfType(buffers.lineStringBuffers);\n    }\n    if (buffers.polygonBuffers) {\n      disposeBuffersOfType(buffers.polygonBuffers);\n    }\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.buffers_.forEach((buffers) => {\n      if (buffers) {\n        this.disposeBuffers(buffers);\n      }\n    });\n    if (this.sourceListenKeys_) {\n      this.sourceListenKeys_.forEach(function (key) {\n        unlistenByKey(key);\n      });\n      this.sourceListenKeys_ = null;\n    }\n    super.disposeInternal();\n  }\n}\n\nexport default WebGLVectorLayerRenderer;\n","/**\n * @module ol/layer/WebGLVector\n */\nimport WebGLVectorLayerRenderer from '../renderer/webgl/VectorLayer.js';\nimport Layer from './Layer.js';\n\n/***\n * @template T\n * @typedef {T extends import(\"../source/Vector.js\").default<infer U extends import(\"../Feature.js\").FeatureLike> ? U : never} ExtractedFeatureType\n */\n\n/**\n * @template {import(\"../source/Vector.js\").default<FeatureType>} [VectorSourceType=import(\"../source/Vector.js\").default<*>]\n * @template {import('../Feature.js').FeatureLike} [FeatureType=ExtractedFeatureType<VectorSourceType>]\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 * FIXME: not supported yet\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 {VectorSourceType} [source] Source.\n * @property {import('../style/flat.js').FlatStyleLike} style Layer style.\n * @property {import('../style/flat.js').StyleVariables} [variables] Style variables. Each variable must hold a literal value (not\n * an expression). These variables can be used as {@link import(\"../expr/expression.js\").ExpressionValue expressions} in the styles properties\n * using the `['var', 'varName']` operator.\n * To update style variables, use the {@link import(\"./WebGLVector.js\").default#updateStyleVariables} method.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * FIXME: not supported yet\n * @property {boolean} [disableHitDetection=false] Setting this to true will provide a slight performance boost, but will\n * prevent all hit detection on the layer.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Layer optimized for rendering large vector datasets.\n *\n * **Important: a `WebGLVector` layer must be manually disposed when removed, otherwise the underlying WebGL context\n * will not be garbage collected.**\n *\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default<FeatureType>} [VectorSourceType=import(\"../source/Vector.js\").default<*>]\n * @template {import('../Feature.js').FeatureLike} [FeatureType=ExtractedFeatureType<VectorSourceType>]\n * @extends {Layer<VectorSourceType, WebGLVectorLayerRenderer>}\n */\nclass WebGLVectorLayer extends Layer {\n  /**\n   * @param {Options<VectorSourceType, FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    const baseOptions = Object.assign({}, options);\n\n    super(baseOptions);\n\n    /**\n     * @type {import('../style/flat.js').StyleVariables}\n     * @private\n     */\n    this.styleVariables_ = options.variables || {};\n\n    /**\n     * @private\n     */\n    this.style_ = options.style;\n\n    /**\n     * @private\n     */\n    this.hitDetectionDisabled_ = !!options.disableHitDetection;\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new WebGLVectorLayerRenderer(this, {\n      style: this.style_,\n      variables: this.styleVariables_,\n      disableHitDetection: this.hitDetectionDisabled_,\n    });\n  }\n\n  /**\n   * Update any variables used by the layer style and trigger a re-render.\n   * @param {import('../style/flat.js').StyleVariables} variables Variables to update.\n   */\n  updateStyleVariables(variables) {\n    Object.assign(this.styleVariables_, variables);\n    this.changed();\n  }\n\n  /**\n   * Set the layer style.\n   * @param {import('../style/flat.js').FlatStyleLike} style Layer style.\n   */\n  setStyle(style) {\n    this.style = style;\n    this.clearRenderer();\n    this.changed();\n  }\n}\n\nexport default WebGLVectorLayer;\n","/**\n * @module ol/webgl/TileGeometry\n */\n\nimport MixedGeometryBatch from '../render/webgl/MixedGeometryBatch.js';\nimport {\n  create as createTransform,\n  translate as translateTransform,\n} from '../transform.js';\nimport {ARRAY_BUFFER, STATIC_DRAW} from '../webgl.js';\nimport BaseTileRepresentation from './BaseTileRepresentation.js';\nimport WebGLArrayBuffer from './Buffer.js';\n\n/**\n * @typedef {import(\"../VectorRenderTile\").default} TileType\n */\n\n/**\n * @extends {BaseTileRepresentation<TileType>}\n */\nclass TileGeometry extends BaseTileRepresentation {\n  /**\n   * @param {import(\"./BaseTileRepresentation.js\").TileRepresentationOptions<TileType>} options The tile texture options.\n   * @param {Array<import(\"../render/webgl/VectorStyleRenderer.js\").default>} styleRenderers Array of vector style renderers\n   */\n  constructor(options, styleRenderers) {\n    super(options);\n\n    /**\n     * @private\n     */\n    this.batch_ = new MixedGeometryBatch();\n\n    /**\n     * @private\n     */\n    this.styleRenderers_ = styleRenderers;\n\n    /**\n     * @type {Array<import(\"../render/webgl/VectorStyleRenderer.js\").WebGLBuffers>}\n     */\n    this.buffers = [];\n\n    /**\n     * Each geometry tile also has a mask which consisted of a quad (two triangles); this mask is intended to\n     * be rendered to an offscreen buffer, and be used to correctly mask tiles according to their zoom level\n     * during rendering\n     */\n    this.maskVertices = new WebGLArrayBuffer(ARRAY_BUFFER, STATIC_DRAW);\n\n    this.setTile(options.tile);\n  }\n\n  /**\n   * @private\n   */\n  generateMaskBuffer_() {\n    const extent = this.tile.getSourceTiles()[0].extent;\n    this.maskVertices.fromArray([\n      extent[0],\n      extent[1],\n      extent[2],\n      extent[1],\n      extent[2],\n      extent[3],\n      extent[0],\n      extent[3],\n    ]);\n    this.helper.flushBufferData(this.maskVertices);\n  }\n\n  /**\n   * @override\n   */\n  uploadTile() {\n    this.generateMaskBuffer_();\n\n    this.batch_.clear();\n    const sourceTiles = this.tile.getSourceTiles();\n    const features = sourceTiles.reduce(\n      (accumulator, sourceTile) => accumulator.concat(sourceTile.getFeatures()),\n      [],\n    );\n    this.batch_.addFeatures(features);\n\n    const tileOriginX = sourceTiles[0].extent[0];\n    const tileOriginY = sourceTiles[0].extent[1];\n    const transform = translateTransform(\n      createTransform(),\n      -tileOriginX,\n      -tileOriginY,\n    );\n\n    const generatePromises = this.styleRenderers_.map((renderer, i) =>\n      renderer.generateBuffers(this.batch_, transform).then((buffers) => {\n        this.buffers[i] = buffers;\n      }),\n    );\n    Promise.all(generatePromises).then(() => {\n      this.setReady();\n    });\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    this.buffers.forEach((buffers) => {\n      this.disposeBuffers(buffers);\n    });\n    super.disposeInternal();\n  }\n\n  /**\n   * Will release a set of Webgl buffers\n   * @param {import('../render/webgl/VectorStyleRenderer.js').WebGLBuffers} buffers Buffers\n   */\n  disposeBuffers(buffers) {\n    /**\n     * @param {Array<WebGLArrayBuffer>} typeBuffers Buffers\n     */\n    const disposeBuffersOfType = (typeBuffers) => {\n      for (const buffer of typeBuffers) {\n        if (buffer) {\n          this.helper.deleteBuffer(buffer);\n        }\n      }\n    };\n    if (buffers.pointBuffers) {\n      disposeBuffersOfType(buffers.pointBuffers);\n    }\n    if (buffers.lineStringBuffers) {\n      disposeBuffersOfType(buffers.lineStringBuffers);\n    }\n    if (buffers.polygonBuffers) {\n      disposeBuffersOfType(buffers.polygonBuffers);\n    }\n  }\n}\n\nexport default TileGeometry;\n","/**\n * @module ol/renderer/webgl/VectorTileLayer\n */\nimport EventType from '../../events/EventType.js';\nimport {getIntersection} from '../../extent.js';\nimport VectorStyleRenderer from '../../render/webgl/VectorStyleRenderer.js';\nimport {breakDownFlatStyle} from '../../render/webgl/utils.js';\nimport {\n  create as createTransform,\n  makeInverse as makeInverseTransform,\n  multiply as multiplyTransform,\n  setFromArray as setFromTransform,\n} from '../../transform.js';\nimport {\n  create as createMat4,\n  fromTransform as mat4FromTransform,\n} from '../../vec/mat4.js';\nimport WebGLArrayBuffer from '../../webgl/Buffer.js';\nimport {AttributeType} from '../../webgl/Helper.js';\nimport WebGLRenderTarget from '../../webgl/RenderTarget.js';\nimport {ShaderBuilder} from '../../webgl/ShaderBuilder.js';\nimport TileGeometry from '../../webgl/TileGeometry.js';\nimport {parseLiteralStyle} from '../../webgl/styleparser.js';\nimport {ELEMENT_ARRAY_BUFFER, STATIC_DRAW} from '../../webgl.js';\nimport WebGLBaseTileLayerRenderer, {\n  Uniforms as BaseUniforms,\n} from './TileLayerBase.js';\n\nexport const Uniforms = {\n  ...BaseUniforms,\n  TILE_MASK_TEXTURE: 'u_depthMask',\n  TILE_ZOOM_LEVEL: 'u_tileZoomLevel',\n};\n\nexport const Attributes = {\n  POSITION: 'a_position',\n};\n\n/**\n * @typedef {import('../../render/webgl/VectorStyleRenderer.js').AsShaders} StyleAsShaders\n */\n/**\n * @typedef {import('../../render/webgl/VectorStyleRenderer.js').AsRule} StyleAsRule\n */\n\n/**\n * @typedef {Object} Options\n * @property {import('../../style/flat.js').FlatStyleLike | Array<StyleAsShaders> | StyleAsShaders} style Flat vector style; also accepts shaders\n * @property {import('../../style/flat.js').StyleVariables} [variables] Style variables. Each variable must hold a literal value (not\n * an expression). These variables can be used as {@link import(\"../../expr/expression.js\").ExpressionValue expressions} in the styles properties\n * using the `['var', 'varName']` operator.\n * @property {boolean} [disableHitDetection=false] Setting this to true will provide a slight performance boost, but will\n * prevent all hit detection on the layer.\n * @property {number} [cacheSize=512] The vector tile cache size.\n */\n\n/**\n * @typedef {import(\"../../layer/BaseTile.js\").default} LayerType\n */\n\n/**\n * @classdesc\n * WebGL renderer for vector tile layers. Experimental.\n * @extends {WebGLBaseTileLayerRenderer<LayerType>}\n */\nclass WebGLVectorTileLayerRenderer extends WebGLBaseTileLayerRenderer {\n  /**\n   * @param {LayerType} tileLayer Tile layer.\n   * @param {Options} options Options.\n   */\n  constructor(tileLayer, options) {\n    super(tileLayer, {\n      cacheSize: options.cacheSize,\n      uniforms: {\n        [Uniforms.PATTERN_ORIGIN]: [0, 0],\n        [Uniforms.TILE_MASK_TEXTURE]: () => this.tileMaskTarget_.getTexture(),\n      },\n    });\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.hitDetectionEnabled_ = !options.disableHitDetection;\n\n    /**\n     * @type {Array<StyleAsRule | StyleAsShaders>}\n     * @private\n     */\n    this.styles_ = [];\n\n    /**\n     * @type {import('../../style/flat.js').StyleVariables}\n     * @private\n     */\n    this.styleVariables_ = options.variables || {};\n\n    /**\n     * @type {Array<VectorStyleRenderer>}\n     * @private\n     */\n    this.styleRenderers_ = [];\n\n    /**\n     * This transform is updated on every frame and is the composition of:\n     * - invert of the world->screen transform that was used when rebuilding buffers (see `this.renderTransform_`)\n     * - current world->screen transform\n     * @type {import(\"../../transform.js\").Transform}\n     * @private\n     */\n    this.currentFrameStateTransform_ = createTransform();\n\n    /**\n     * @private\n     */\n    this.tmpTransform_ = createTransform();\n    /**\n     * @private\n     */\n    this.tmpMat4_ = createMat4();\n\n    /**\n     * @type {WebGLRenderTarget}\n     * @private\n     */\n    this.tileMaskTarget_ = null;\n\n    /**\n     * @private\n     */\n    this.tileMaskIndices_ = new WebGLArrayBuffer(\n      ELEMENT_ARRAY_BUFFER,\n      STATIC_DRAW,\n    );\n    this.tileMaskIndices_.fromArray([0, 1, 3, 1, 2, 3]);\n\n    /**\n     * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}\n     * @private\n     */\n    this.tileMaskAttributes_ = [\n      {\n        name: Attributes.POSITION,\n        size: 2,\n        type: AttributeType.FLOAT,\n      },\n    ];\n\n    /**\n     * @type {WebGLProgram}\n     * @private\n     */\n    this.tileMaskProgram_;\n\n    this.applyOptions_(options);\n  }\n\n  /**\n   * @param {Options} options Options.\n   * @override\n   */\n  reset(options) {\n    super.reset(options);\n\n    this.applyOptions_(options);\n    if (this.helper) {\n      this.createRenderers_();\n      this.initTileMask_();\n    }\n  }\n\n  /**\n   * @param {Options} options Options.\n   * @private\n   */\n  applyOptions_(options) {\n    this.styles_ = breakDownFlatStyle(options.style);\n  }\n\n  /**\n   * @private\n   */\n  createRenderers_() {\n    function addBuilderParams(builder) {\n      const exisitingDiscard = builder.getFragmentDiscardExpression();\n      const discardFromMask = `texture2D(${Uniforms.TILE_MASK_TEXTURE}, gl_FragCoord.xy / u_pixelRatio / u_viewportSizePx).r * 50. > ${Uniforms.TILE_ZOOM_LEVEL} + 0.5`;\n      builder.setFragmentDiscardExpression(\n        exisitingDiscard !== 'false'\n          ? `(${exisitingDiscard}) || (${discardFromMask})`\n          : discardFromMask,\n      );\n      builder.addUniform(`sampler2D ${Uniforms.TILE_MASK_TEXTURE}`);\n      builder.addUniform(`float ${Uniforms.TILE_ZOOM_LEVEL}`);\n    }\n\n    this.styleRenderers_ = this.styles_.map((style) => {\n      const isShaders = 'builder' in style;\n      /** @type {StyleAsShaders} */\n      let shaders;\n      if (!isShaders) {\n        const parseResult = parseLiteralStyle(\n          style.style,\n          this.styleVariables_,\n          style.filter,\n        );\n        addBuilderParams(parseResult.builder);\n        shaders = {\n          builder: parseResult.builder,\n          attributes: parseResult.attributes,\n          uniforms: parseResult.uniforms,\n        };\n      } else {\n        addBuilderParams(style.builder);\n        shaders = style;\n      }\n      return new VectorStyleRenderer(\n        shaders,\n        this.styleVariables_,\n        this.helper,\n        this.hitDetectionEnabled_,\n        'filter' in style ? style.filter : null,\n      );\n    });\n  }\n\n  /**\n   * @private\n   */\n  initTileMask_() {\n    this.tileMaskTarget_ = new WebGLRenderTarget(this.helper);\n    const builder = new ShaderBuilder()\n      .setFillColorExpression(\n        `vec4(${Uniforms.TILE_ZOOM_LEVEL} / 50., 0., 0., 1.)`,\n      )\n      .addUniform(`float ${Uniforms.TILE_ZOOM_LEVEL}`);\n    this.tileMaskProgram_ = this.helper.getProgram(\n      builder.getFillFragmentShader(),\n      builder.getFillVertexShader(),\n    );\n    this.helper.flushBufferData(this.tileMaskIndices_);\n  }\n\n  /**\n   * @override\n   */\n  afterHelperCreated() {\n    this.createRenderers_();\n    this.initTileMask_();\n  }\n\n  /**\n   * @override\n   */\n  createTileRepresentation(options) {\n    const tileRep = new TileGeometry(options, this.styleRenderers_);\n    // redraw the layer when the tile is ready\n    const listener = () => {\n      if (tileRep.ready) {\n        this.getLayer().changed();\n        tileRep.removeEventListener(EventType.CHANGE, listener);\n      }\n    };\n    tileRep.addEventListener(EventType.CHANGE, listener);\n    return tileRep;\n  }\n\n  /**\n   * @override\n   */\n  beforeTilesRender(frameState, tilesWithAlpha) {\n    super.beforeTilesRender(frameState, true); // always consider that tiles need alpha blending\n    this.helper.makeProjectionTransform(\n      frameState,\n      this.currentFrameStateTransform_,\n    );\n  }\n\n  /**\n   * @override\n   */\n  beforeTilesMaskRender(frameState) {\n    this.helper.makeProjectionTransform(\n      frameState,\n      this.currentFrameStateTransform_,\n    );\n    const pixelRatio = frameState.pixelRatio;\n    const size = frameState.size;\n    this.tileMaskTarget_.setSize([size[0] * pixelRatio, size[1] * pixelRatio]);\n    this.helper.prepareDrawToRenderTarget(\n      frameState,\n      this.tileMaskTarget_,\n      true,\n      true,\n    );\n    this.helper.useProgram(this.tileMaskProgram_, frameState);\n    setFromTransform(this.tmpTransform_, this.currentFrameStateTransform_);\n    this.helper.setUniformMatrixValue(\n      Uniforms.PROJECTION_MATRIX,\n      mat4FromTransform(this.tmpMat4_, this.tmpTransform_),\n    );\n    makeInverseTransform(this.tmpTransform_, this.currentFrameStateTransform_);\n    this.helper.setUniformMatrixValue(\n      Uniforms.SCREEN_TO_WORLD_MATRIX,\n      mat4FromTransform(this.tmpMat4_, this.tmpTransform_),\n    );\n    return true;\n  }\n\n  /**\n   * @override\n   */\n  renderTileMask(tileRepresentation, tileZ, extent, depth) {\n    if (!tileRepresentation.ready) {\n      return;\n    }\n    this.helper.setUniformFloatValue(Uniforms.DEPTH, depth);\n    this.helper.setUniformFloatValue(Uniforms.TILE_ZOOM_LEVEL, tileZ);\n    this.helper.setUniformFloatVec4(Uniforms.RENDER_EXTENT, extent);\n    this.helper.setUniformFloatValue(Uniforms.GLOBAL_ALPHA, 1);\n    this.helper.bindBuffer(\n      /** @type {TileGeometry} */ (tileRepresentation).maskVertices,\n    );\n    this.helper.bindBuffer(this.tileMaskIndices_);\n    this.helper.enableAttributes(this.tileMaskAttributes_);\n    const renderCount = this.tileMaskIndices_.getSize();\n    this.helper.drawElements(0, renderCount);\n  }\n\n  /**\n   * @param {number} alpha Alpha value of the tile\n   * @param {import(\"../../extent.js\").Extent} renderExtent Which extent to restrict drawing to\n   * @param {import(\"../../transform.js\").Transform} batchInvertTransform Inverse of the transformation in which tile geometries are expressed\n   * @param {number} tileZ Tile zoom level\n   * @param {number} depth Depth of the tile\n   * @private\n   */\n  applyUniforms_(alpha, renderExtent, batchInvertTransform, tileZ, depth) {\n    // world to screen matrix\n    setFromTransform(this.tmpTransform_, this.currentFrameStateTransform_);\n    multiplyTransform(this.tmpTransform_, batchInvertTransform);\n    this.helper.setUniformMatrixValue(\n      Uniforms.PROJECTION_MATRIX,\n      mat4FromTransform(this.tmpMat4_, this.tmpTransform_),\n    );\n\n    // screen to world matrix\n    makeInverseTransform(this.tmpTransform_, this.currentFrameStateTransform_);\n    this.helper.setUniformMatrixValue(\n      Uniforms.SCREEN_TO_WORLD_MATRIX,\n      mat4FromTransform(this.tmpMat4_, this.tmpTransform_),\n    );\n\n    this.helper.setUniformFloatValue(Uniforms.GLOBAL_ALPHA, alpha);\n    this.helper.setUniformFloatValue(Uniforms.DEPTH, depth);\n    this.helper.setUniformFloatValue(Uniforms.TILE_ZOOM_LEVEL, tileZ);\n    this.helper.setUniformFloatVec4(Uniforms.RENDER_EXTENT, renderExtent);\n  }\n\n  /**\n   * @override\n   */\n  renderTile(\n    tileRepresentation,\n    tileTransform,\n    frameState,\n    renderExtent,\n    tileResolution,\n    tileSize,\n    tileOrigin,\n    tileExtent,\n    depth,\n    gutter,\n    alpha,\n  ) {\n    const gutterExtent = getIntersection(tileExtent, renderExtent, tileExtent);\n    const tileZ = tileRepresentation.tile.getTileCoord()[0];\n    for (let i = 0, ii = this.styleRenderers_.length; i < ii; i++) {\n      const renderer = this.styleRenderers_[i];\n      const buffers = tileRepresentation.buffers[i];\n      if (!buffers) {\n        continue;\n      }\n      renderer.render(buffers, frameState, () => {\n        this.applyUniforms_(\n          alpha,\n          gutterExtent,\n          buffers.invertVerticesTransform,\n          tileZ,\n          depth,\n        );\n      });\n    }\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeclutter(frameState) {}\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    super.disposeInternal();\n  }\n}\n\nexport default WebGLVectorTileLayerRenderer;\n","/**\n * @module ol/renderer/canvas/VectorTileLayer\n */\nimport TileState from '../../TileState.js';\nimport ViewHint from '../../ViewHint.js';\nimport {ascending} from '../../array.js';\nimport {wrapX} from '../../coordinate.js';\nimport {\n  boundingExtent,\n  buffer,\n  containsExtent,\n  equals,\n  getIntersection,\n  getTopLeft,\n  intersects,\n} from '../../extent.js';\nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';\nimport CanvasExecutorGroup, {\n  DECLUTTER,\n} from '../../render/canvas/ExecutorGroup.js';\nimport ZIndexContext from '../../render/canvas/ZIndexContext.js';\nimport {\n  HIT_DETECT_RESOLUTION,\n  createHitDetectionImageData,\n  hitDetect,\n} from '../../render/canvas/hitdetect.js';\nimport {toSize} from '../../size.js';\nimport {\n  apply as applyTransform,\n  create as createTransform,\n  multiply,\n  reset as resetTransform,\n  scale,\n  scale as scaleTransform,\n  translate as translateTransform,\n} from '../../transform.js';\nimport {getUid} from '../../util.js';\nimport {\n  getSquaredTolerance as getSquaredRenderTolerance,\n  renderFeature,\n} from '../vector.js';\nimport CanvasTileLayerRenderer from './TileLayer.js';\n\n/**\n * @type {!Object<string, Array<import(\"../../render/canvas.js\").BuilderType>>}\n */\nconst IMAGE_REPLAYS = {\n  'image': ['Polygon', 'Circle', 'LineString', 'Image', 'Text'],\n  'hybrid': ['Polygon', 'LineString'],\n  'vector': [],\n};\n\n/**\n * @type {!Object<string, Array<import(\"../../render/canvas.js\").BuilderType>>}\n */\nconst VECTOR_REPLAYS = {\n  'hybrid': ['Image', 'Text', 'Default'],\n  'vector': ['Polygon', 'Circle', 'LineString', 'Image', 'Text', 'Default'],\n};\n\n/**\n * @classdesc\n * Canvas renderer for vector tile layers.\n * @api\n * @extends {CanvasTileLayerRenderer<import(\"../../layer/VectorTile.js\").default<import('../../source/VectorTile.js').default<import('../../Feature.js').FeatureLike>>>}\n */\nclass CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {\n  /**\n   * @param {import(\"../../layer/VectorTile.js\").default} layer VectorTile layer.\n   * @param {import(\"./TileLayer.js\").Options} options Options.\n   */\n  constructor(layer, options) {\n    super(layer, options);\n\n    /** @private */\n    this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this);\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedLayerRevision_;\n\n    /**\n     * @private\n     * @type {import(\"../../transform\").Transform}\n     */\n    this.renderedPixelToCoordinateTransform_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRotation_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedOpacity_ = 1;\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.tmpTransform_ = createTransform();\n\n    /**\n     * @private\n     * @type {Array<ZIndexContext>}\n     */\n    this.tileClipContexts_ = null;\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} x Left of the tile.\n   * @param {number} y Top of the tile.\n   * @param {number} w Width of the tile.\n   * @param {number} h Height of the tile.\n   * @param {number} gutter Tile gutter.\n   * @param {boolean} transition Apply an alpha transition.\n   * @override\n   */\n  drawTile(tile, frameState, x, y, w, h, gutter, transition) {\n    this.updateExecutorGroup_(\n      tile,\n      frameState.pixelRatio,\n      frameState.viewState.projection,\n    );\n    if (this.tileImageNeedsRender_(tile)) {\n      this.renderTileImage_(tile, frameState);\n    }\n    super.drawTile(tile, frameState, x, y, w, h, gutter, transition);\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import(\"../../Tile.js\").default|null} Tile (or null if outside source extent).\n   * @override\n   */\n  getTile(z, x, y, frameState) {\n    const tile = /** @type {import(\"../../VectorRenderTile.js\").default} */ (\n      this.getOrCreateTile(z, x, y, frameState)\n    );\n    if (!tile) {\n      return null;\n    }\n\n    const viewState = frameState.viewState;\n    const resolution = viewState.resolution;\n    const viewHints = frameState.viewHints;\n    const hifi = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n    if (hifi || !tile.wantedResolution) {\n      tile.wantedResolution = resolution;\n    }\n    return tile;\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    const layerRevision = this.getLayer().getRevision();\n    if (this.renderedLayerRevision_ !== layerRevision) {\n      this.renderedLayerRevision_ = layerRevision;\n      this.renderedTiles.length = 0;\n    }\n    return super.prepareFrame(frameState);\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n   * @private\n   */\n  updateExecutorGroup_(tile, pixelRatio, projection) {\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    const revision = layer.getRevision();\n    const renderOrder = layer.getRenderOrder() || null;\n\n    const resolution = tile.wantedResolution;\n    const builderState = tile.getReplayState(layer);\n    if (\n      !builderState.dirty &&\n      builderState.renderedResolution === resolution &&\n      builderState.renderedRevision == revision &&\n      builderState.renderedRenderOrder == renderOrder\n    ) {\n      return;\n    }\n\n    const source = layer.getSource();\n    const declutter = !!layer.getDeclutter();\n    const sourceTileGrid = source.getTileGrid();\n    const tileGrid = source.getTileGridForProjection(projection);\n    const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n\n    const sourceTiles = source.getSourceTiles(pixelRatio, projection, tile);\n    const layerUid = getUid(layer);\n    delete tile.hitDetectionImageData[layerUid];\n    tile.executorGroups[layerUid] = [];\n    builderState.dirty = false;\n    for (let t = 0, tt = sourceTiles.length; t < tt; ++t) {\n      const sourceTile = sourceTiles[t];\n      if (sourceTile.getState() != TileState.LOADED) {\n        continue;\n      }\n      const sourceTileCoord = sourceTile.tileCoord;\n      const sourceTileExtent =\n        sourceTileGrid.getTileCoordExtent(sourceTileCoord);\n      const sharedExtent = getIntersection(tileExtent, sourceTileExtent);\n      const builderExtent = buffer(\n        sharedExtent,\n        layer.getRenderBuffer() * resolution,\n        this.tempExtent,\n      );\n      const bufferedExtent = equals(sourceTileExtent, sharedExtent)\n        ? null\n        : builderExtent;\n      const builderGroup = new CanvasBuilderGroup(\n        0,\n        sharedExtent,\n        resolution,\n        pixelRatio,\n      );\n      const squaredTolerance = getSquaredRenderTolerance(\n        resolution,\n        pixelRatio,\n      );\n\n      /**\n       * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n       * @param {number} [index] Render order index.\n       * @this {CanvasVectorTileLayerRenderer}\n       */\n      const render = function (feature, index) {\n        let styles;\n        const styleFunction =\n          feature.getStyleFunction() || layer.getStyleFunction();\n        if (styleFunction) {\n          styles = styleFunction(feature, resolution);\n        }\n        if (styles) {\n          const dirty = this.renderFeature(\n            feature,\n            squaredTolerance,\n            styles,\n            builderGroup,\n            declutter,\n            index,\n          );\n          builderState.dirty = builderState.dirty || dirty;\n        }\n      };\n\n      const features = sourceTile.getFeatures();\n      if (renderOrder && renderOrder !== builderState.renderedRenderOrder) {\n        features.sort(renderOrder);\n      }\n      for (let i = 0, ii = features.length; i < ii; ++i) {\n        const feature = features[i];\n        if (\n          !bufferedExtent ||\n          intersects(bufferedExtent, feature.getGeometry().getExtent())\n        ) {\n          render.call(this, feature, i);\n        }\n      }\n      const executorGroupInstructions = builderGroup.finish();\n      // no need to clip when the render tile is covered by a single source tile\n      const replayExtent =\n        layer.getRenderMode() !== 'vector' &&\n        declutter &&\n        sourceTiles.length === 1\n          ? null\n          : sharedExtent;\n      const renderingReplayGroup = new CanvasExecutorGroup(\n        replayExtent,\n        resolution,\n        pixelRatio,\n        source.getOverlaps(),\n        executorGroupInstructions,\n        layer.getRenderBuffer(),\n        true,\n      );\n      tile.executorGroups[layerUid].push(renderingReplayGroup);\n    }\n    builderState.renderedRevision = revision;\n    builderState.renderedRenderOrder = renderOrder;\n    builderState.renderedResolution = resolution;\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"../vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"../Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   * @override\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    const resolution = frameState.viewState.resolution;\n    const rotation = frameState.viewState.rotation;\n    hitTolerance = hitTolerance == undefined ? 0 : hitTolerance;\n    const layer = this.getLayer();\n    const source = layer.getSource();\n    const tileGrid = source.getTileGridForProjection(\n      frameState.viewState.projection,\n    );\n\n    const hitExtent = boundingExtent([coordinate]);\n    buffer(hitExtent, resolution * hitTolerance, hitExtent);\n\n    /** @type {!Object<string, import(\"../Map.js\").HitMatch<T>|true>} */\n    const features = {};\n\n    /**\n     * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n     * @param {number} distanceSq The squared distance to the click position.\n     * @return {T|undefined} Callback result.\n     */\n    const featureCallback = function (feature, geometry, distanceSq) {\n      let key = feature.getId();\n      if (key === undefined) {\n        key = getUid(feature);\n      }\n      const match = features[key];\n      if (!match) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          return callback(feature, layer, geometry);\n        }\n        matches.push(\n          (features[key] = {\n            feature: feature,\n            layer: layer,\n            geometry: geometry,\n            distanceSq: distanceSq,\n            callback: callback,\n          }),\n        );\n      } else if (match !== true && distanceSq < match.distanceSq) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          matches.splice(matches.lastIndexOf(match), 1);\n          return callback(feature, layer, geometry);\n        }\n        match.geometry = geometry;\n        match.distanceSq = distanceSq;\n      }\n      return undefined;\n    };\n\n    const renderedTiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    const layerUid = getUid(layer);\n    const declutter = layer.getDeclutter();\n    const declutteredFeatures = declutter\n      ? frameState.declutter?.[declutter]?.all().map((item) => item.value)\n      : null;\n    let found;\n    foundFeature: for (let i = 0, ii = renderedTiles.length; i < ii; ++i) {\n      const tile = renderedTiles[i];\n      const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n      if (!intersects(tileExtent, hitExtent)) {\n        continue;\n      }\n\n      const executorGroups = tile.executorGroups[layerUid];\n      for (let t = 0, tt = executorGroups.length; t < tt; ++t) {\n        found = executorGroups[t].forEachFeatureAtCoordinate(\n          coordinate,\n          resolution,\n          rotation,\n          hitTolerance,\n          featureCallback,\n          declutteredFeatures,\n        );\n        if (found) {\n          break foundFeature;\n        }\n      }\n    }\n    return found;\n  }\n\n  /**\n   * Asynchronous layer level hit detection.\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../../Feature.js\").FeatureLike>>} Promise that resolves with an array of features.\n   * @override\n   */\n  getFeatures(pixel) {\n    if (this.renderedTiles.length === 0) {\n      return Promise.resolve([]);\n    }\n    return new Promise((resolve, reject) => {\n      const layer = this.getLayer();\n      const source = layer.getSource();\n      const projection = this.renderedProjection;\n      const projectionExtent = projection.getExtent();\n      const resolution = this.renderedResolution;\n      const tileGrid = source.getTileGridForProjection(projection);\n      const coordinate = applyTransform(\n        this.renderedPixelToCoordinateTransform_,\n        pixel.slice(),\n      );\n      const tileCoordString = tileGrid\n        .getTileCoordForCoordAndResolution(coordinate, resolution)\n        .toString();\n      const tile =\n        /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n          this.renderedTiles\n        ).find(\n          (tile) =>\n            tile.tileCoord.toString() === tileCoordString &&\n            tile.getState() === TileState.LOADED,\n        );\n      if (!tile || tile.loadingSourceTiles > 0) {\n        resolve([]);\n        return;\n      }\n      if (\n        source.getWrapX() &&\n        projection.canWrapX() &&\n        !containsExtent(\n          projectionExtent,\n          tileGrid.getTileCoordExtent(tile.tileCoord),\n        )\n      ) {\n        wrapX(coordinate, projection);\n      }\n      const layerUid = getUid(layer);\n      const extent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n      const corner = getTopLeft(extent);\n      const tilePixel = [\n        (coordinate[0] - corner[0]) / resolution,\n        (corner[1] - coordinate[1]) / resolution,\n      ];\n      const features = tile\n        .getSourceTiles()\n        .reduce(\n          (accumulator, sourceTile) =>\n            accumulator.concat(sourceTile.getFeatures()),\n          /** @type {Array<import(\"../../Feature.js\").FeatureLike>} */ ([]),\n        );\n      let hitDetectionImageData = tile.hitDetectionImageData[layerUid];\n      if (!hitDetectionImageData) {\n        const tileSize = toSize(\n          tileGrid.getTileSize(\n            tileGrid.getZForResolution(resolution, source.zDirection),\n          ),\n        );\n        const rotation = this.renderedRotation_;\n        const transforms = [\n          this.getRenderTransform(\n            tileGrid.getTileCoordCenter(tile.wrappedTileCoord),\n            resolution,\n            0,\n            HIT_DETECT_RESOLUTION,\n            tileSize[0] * HIT_DETECT_RESOLUTION,\n            tileSize[1] * HIT_DETECT_RESOLUTION,\n            0,\n          ),\n        ];\n        hitDetectionImageData = createHitDetectionImageData(\n          tileSize,\n          transforms,\n          features,\n          layer.getStyleFunction(),\n          tileGrid.getTileCoordExtent(tile.wrappedTileCoord),\n          tile.getReplayState(layer).renderedResolution,\n          rotation,\n        );\n        tile.hitDetectionImageData[layerUid] = hitDetectionImageData;\n      }\n      resolve(hitDetect(tilePixel, features, hitDetectionImageData));\n    });\n  }\n\n  /**\n   * @param {import(\"../../extent.js\").Extent} extent Extent.\n   * @return {Array<import('../../Feature.js').FeatureLike>} Features.\n   */\n  getFeaturesInExtent(extent) {\n    /** @type {Array<import('../../Feature.js').FeatureLike>} */\n    const features = [];\n    const tileCache = this.getTileCache();\n    if (tileCache.getCount() === 0) {\n      return features;\n    }\n    const source = this.getLayer().getSource();\n    const tileGrid = source.getTileGridForProjection(\n      this.frameState.viewState.projection,\n    );\n    const z = tileGrid.getZForResolution(this.renderedResolution);\n    /** @type {Object<string, true>} */\n    const visitedSourceTiles = {};\n    tileCache.forEach((tile) => {\n      if (tile.tileCoord[0] !== z || tile.getState() !== TileState.LOADED) {\n        return;\n      }\n      const sourceTiles = tile.getSourceTiles();\n      for (let i = 0, ii = sourceTiles.length; i < ii; ++i) {\n        const sourceTile = sourceTiles[i];\n        const key = sourceTile.getKey();\n        if (key in visitedSourceTiles) {\n          continue;\n        }\n        visitedSourceTiles[key] = true;\n        const tileCoord = sourceTile.tileCoord;\n        if (intersects(extent, tileGrid.getTileCoordExtent(tileCoord))) {\n          const tileFeatures = sourceTile.getFeatures();\n          if (tileFeatures) {\n            for (let j = 0, jj = tileFeatures.length; j < jj; ++j) {\n              const candidate = tileFeatures[j];\n              const geometry = candidate.getGeometry();\n              if (intersects(extent, geometry.getExtent())) {\n                features.push(candidate);\n              }\n            }\n          }\n        }\n      }\n    });\n    return features;\n  }\n\n  /**\n   * Perform action necessary to get the layer rendered after new fonts have loaded\n   * @override\n   */\n  handleFontsChanged() {\n    const layer = this.getLayer();\n    if (layer.getVisible() && this.renderedLayerRevision_ !== undefined) {\n      layer.changed();\n    }\n  }\n\n  /**\n   * Handle changes in image style state.\n   * @param {import(\"../../events/Event.js\").default} event Image style change event.\n   * @private\n   */\n  handleStyleImageChange_(event) {\n    this.renderIfReadyAndVisible();\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../layer/Layer.js\").State} layerState Layer state.\n   */\n  renderDeclutter(frameState, layerState) {\n    const context = this.context;\n    const alpha = context.globalAlpha;\n    context.globalAlpha = layerState.opacity;\n    const viewHints = frameState.viewHints;\n    const hifi = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n    const scaledCanvasSize = [\n      this.context.canvas.width,\n      this.context.canvas.height,\n    ];\n    const declutter = this.getLayer().getDeclutter();\n    const declutterTree = declutter\n      ? frameState.declutter?.[declutter]\n      : undefined;\n    const layerUid = getUid(this.getLayer());\n    const tiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    for (let i = 0, ii = tiles.length; i < ii; ++i) {\n      const tile = tiles[i];\n      const executorGroups = tile.executorGroups[layerUid];\n      if (executorGroups) {\n        for (let j = executorGroups.length - 1; j >= 0; --j) {\n          executorGroups[j].execute(\n            this.context,\n            scaledCanvasSize,\n            this.getTileRenderTransform(tile, frameState),\n            frameState.viewState.rotation,\n            hifi,\n            DECLUTTER,\n            declutterTree,\n          );\n        }\n      }\n    }\n    context.globalAlpha = alpha;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderDeferredInternal(frameState) {\n    const tiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    const layerUid = getUid(this.getLayer());\n    const executorGroups = tiles.reduce((acc, tile, index) => {\n      tile.executorGroups[layerUid].forEach((executorGroup) =>\n        acc.push({\n          executorGroup,\n          index,\n        }),\n      );\n      return acc;\n    }, /** @type {Array<{executorGroup: CanvasExecutorGroup, index: number}>} */ ([]));\n\n    const executorGroupZIndexContexts = executorGroups.map(({executorGroup}) =>\n      executorGroup.getDeferredZIndexContexts(),\n    );\n    /** @type {Object<number, true>} */\n    const usedZIndices = {};\n    for (let i = 0, ii = executorGroups.length; i < ii; ++i) {\n      const executorGroupZindexContext =\n        executorGroups[i].executorGroup.getDeferredZIndexContexts();\n      for (const key in executorGroupZindexContext) {\n        usedZIndices[key] = true;\n      }\n    }\n    const zIndexKeys = Object.keys(usedZIndices).map(Number).sort(ascending);\n    zIndexKeys.forEach((zIndex) => {\n      executorGroupZIndexContexts.forEach((zIndexContexts, i) => {\n        if (!zIndexContexts[zIndex]) {\n          return;\n        }\n        zIndexContexts[zIndex].forEach((zIndexContext) => {\n          const {executorGroup, index} = executorGroups[i];\n          const context = executorGroup.getRenderedContext();\n          const alpha = context.globalAlpha;\n          context.globalAlpha = this.renderedOpacity_;\n          const tileClipContext = this.tileClipContexts_[index];\n          if (tileClipContext) {\n            tileClipContext.draw(context);\n          }\n          zIndexContext.draw(context);\n          if (tileClipContext) {\n            context.restore();\n          }\n          context.globalAlpha = alpha;\n          zIndexContext.clear();\n        });\n        zIndexContexts[zIndex].length = 0;\n      });\n    });\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile The tile\n   * @param {import('../../Map.js').FrameState} frameState Current frame state\n   * @return {import('../../transform.js').Transform} Transform to use to render this tile\n   */\n  getTileRenderTransform(tile, frameState) {\n    const pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const center = viewState.center;\n    const resolution = viewState.resolution;\n    const rotation = viewState.rotation;\n    const size = frameState.size;\n    const width = Math.round(size[0] * pixelRatio);\n    const height = Math.round(size[1] * pixelRatio);\n\n    const source = this.getLayer().getSource();\n    const tileGrid = source.getTileGridForProjection(\n      frameState.viewState.projection,\n    );\n    const tileCoord = tile.tileCoord;\n    const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n    const worldOffset =\n      tileGrid.getTileCoordExtent(tileCoord, this.tempExtent)[0] -\n      tileExtent[0];\n    const transform = multiply(\n      scale(this.inversePixelTransform.slice(), 1 / pixelRatio, 1 / pixelRatio),\n      this.getRenderTransform(\n        center,\n        resolution,\n        rotation,\n        pixelRatio,\n        width,\n        height,\n        worldOffset,\n      ),\n    );\n    return transform;\n  }\n\n  /**\n   * Render the vectors for this layer.\n   * @param {CanvasRenderingContext2D} context Target context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  postRender(context, frameState) {\n    const viewHints = frameState.viewHints;\n    const hifi = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n\n    this.renderedPixelToCoordinateTransform_ =\n      frameState.pixelToCoordinateTransform.slice();\n    this.renderedRotation_ = frameState.viewState.rotation;\n    this.renderedOpacity_ =\n      frameState.layerStatesArray[frameState.layerIndex].opacity;\n\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    const renderMode = layer.getRenderMode();\n    const alpha = context.globalAlpha;\n    context.globalAlpha = this.renderedOpacity_;\n    const declutter = layer.getDeclutter();\n    const replayTypes = declutter\n      ? VECTOR_REPLAYS[renderMode].filter((type) => !DECLUTTER.includes(type))\n      : VECTOR_REPLAYS[renderMode];\n    const viewState = frameState.viewState;\n    const rotation = viewState.rotation;\n    const tileSource = layer.getSource();\n    const tileGrid = tileSource.getTileGridForProjection(viewState.projection);\n    const z = tileGrid.getZForResolution(\n      viewState.resolution,\n      tileSource.zDirection,\n    );\n\n    const tiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    const clips = [];\n    const clipZs = [];\n    const tileClipContexts = [];\n    const layerUid = getUid(layer);\n    let ready = true;\n    for (let i = tiles.length - 1; i >= 0; --i) {\n      const tile = tiles[i];\n      ready = ready && !tile.getReplayState(layer).dirty;\n      const executorGroups = tile.executorGroups[layerUid].filter((group) =>\n        group.hasExecutors(replayTypes),\n      );\n      if (executorGroups.length === 0) {\n        continue;\n      }\n      const transform = this.getTileRenderTransform(tile, frameState);\n      const currentZ = tile.tileCoord[0];\n      let contextSaved = false;\n      // Clip mask for regions in this tile that already filled by a higher z tile\n      const currentClip = executorGroups[0].getClipCoords(transform);\n      let clipContext = context;\n      let tileClipContext;\n      if (currentClip) {\n        tileClipContext = new ZIndexContext();\n        clipContext = tileClipContext.getContext();\n        for (let j = 0, jj = clips.length; j < jj; ++j) {\n          if (z !== currentZ && currentZ < clipZs[j]) {\n            const clip = clips[j];\n            if (\n              intersects(\n                [\n                  currentClip[0],\n                  currentClip[3],\n                  currentClip[4],\n                  currentClip[7],\n                ],\n                [clip[0], clip[3], clip[4], clip[7]],\n              )\n            ) {\n              if (!contextSaved) {\n                clipContext.save();\n                contextSaved = true;\n              }\n              clipContext.beginPath();\n              // counter-clockwise (outer ring) for current tile\n              clipContext.moveTo(currentClip[0], currentClip[1]);\n              clipContext.lineTo(currentClip[2], currentClip[3]);\n              clipContext.lineTo(currentClip[4], currentClip[5]);\n              clipContext.lineTo(currentClip[6], currentClip[7]);\n              // clockwise (inner ring) for higher z tile\n              clipContext.moveTo(clip[6], clip[7]);\n              clipContext.lineTo(clip[4], clip[5]);\n              clipContext.lineTo(clip[2], clip[3]);\n              clipContext.lineTo(clip[0], clip[1]);\n              clipContext.clip();\n            }\n          }\n        }\n        clips.push(currentClip);\n        clipZs.push(currentZ);\n      }\n      for (let t = 0, tt = executorGroups.length; t < tt; ++t) {\n        const executorGroup = executorGroups[t];\n        executorGroup.execute(\n          context,\n          [context.canvas.width, context.canvas.height],\n          transform,\n          rotation,\n          hifi,\n          replayTypes,\n          frameState.declutter?.[declutter],\n        );\n      }\n      if (contextSaved) {\n        if (clipContext === context) {\n          clipContext.restore();\n        } else {\n          tileClipContexts[i] = tileClipContext;\n        }\n      }\n    }\n    context.globalAlpha = alpha;\n    this.ready = ready;\n    this.tileClipContexts_ = tileClipContexts;\n    if (!frameState.declutter) {\n      this.renderDeferredInternal(frameState);\n    }\n\n    super.postRender(context, frameState);\n  }\n\n  /**\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @param {import(\"../../style/Style.js\").default|Array<import(\"../../style/Style.js\").default>} styles The style or array of styles.\n   * @param {import(\"../../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n   * @param {boolean} [declutter] Enable decluttering.\n   * @param {number} [index] Render order index.\n   * @return {boolean} `true` if an image is loading.\n   */\n  renderFeature(\n    feature,\n    squaredTolerance,\n    styles,\n    builderGroup,\n    declutter,\n    index,\n  ) {\n    if (!styles) {\n      return false;\n    }\n    let loading = false;\n    if (Array.isArray(styles)) {\n      for (let i = 0, ii = styles.length; i < ii; ++i) {\n        loading =\n          renderFeature(\n            builderGroup,\n            feature,\n            styles[i],\n            squaredTolerance,\n            this.boundHandleStyleImageChange_,\n            undefined,\n            declutter,\n            index,\n          ) || loading;\n      }\n    } else {\n      loading = renderFeature(\n        builderGroup,\n        feature,\n        styles,\n        squaredTolerance,\n        this.boundHandleStyleImageChange_,\n        undefined,\n        declutter,\n        index,\n      );\n    }\n    return loading;\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @return {boolean} A new tile image was rendered.\n   * @private\n   */\n  tileImageNeedsRender_(tile) {\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    if (layer.getRenderMode() === 'vector') {\n      return false;\n    }\n    const replayState = tile.getReplayState(layer);\n    const revision = layer.getRevision();\n    const resolution = tile.wantedResolution;\n    return (\n      replayState.renderedTileResolution !== resolution ||\n      replayState.renderedTileRevision !== revision\n    );\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @param {import(\"../../Map\").FrameState} frameState Frame state.\n   * @private\n   */\n  renderTileImage_(tile, frameState) {\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    const replayState = tile.getReplayState(layer);\n    const revision = layer.getRevision();\n    const executorGroups = tile.executorGroups[getUid(layer)];\n    replayState.renderedTileRevision = revision;\n\n    const tileCoord = tile.wrappedTileCoord;\n    const z = tileCoord[0];\n    const source = layer.getSource();\n    let pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const projection = viewState.projection;\n    const tileGrid = source.getTileGridForProjection(projection);\n    const tileResolution = tileGrid.getResolution(tile.tileCoord[0]);\n    const renderPixelRatio =\n      (frameState.pixelRatio / tile.wantedResolution) * tileResolution;\n    const resolution = tileGrid.getResolution(z);\n    const context = tile.getContext();\n\n    // Increase tile size when overzooming for low pixel ratio, to avoid blurry tiles\n    pixelRatio = Math.round(\n      Math.max(pixelRatio, renderPixelRatio / pixelRatio),\n    );\n    const size = source.getTilePixelSize(z, pixelRatio, projection);\n    context.canvas.width = size[0];\n    context.canvas.height = size[1];\n    const renderScale = pixelRatio / renderPixelRatio;\n    if (renderScale !== 1) {\n      const canvasTransform = resetTransform(this.tmpTransform_);\n      scaleTransform(canvasTransform, renderScale, renderScale);\n      context.setTransform.apply(context, canvasTransform);\n    }\n    const tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tempExtent);\n    const pixelScale = renderPixelRatio / resolution;\n    const transform = resetTransform(this.tmpTransform_);\n    scaleTransform(transform, pixelScale, -pixelScale);\n    translateTransform(transform, -tileExtent[0], -tileExtent[3]);\n    for (let i = 0, ii = executorGroups.length; i < ii; ++i) {\n      const executorGroup = executorGroups[i];\n      executorGroup.execute(\n        context,\n        [\n          context.canvas.width * renderScale,\n          context.canvas.height * renderScale,\n        ],\n        transform,\n        0,\n        true,\n        IMAGE_REPLAYS[layer.getRenderMode()],\n        null,\n      );\n    }\n    replayState.renderedTileResolution = tile.wantedResolution;\n  }\n}\n\nexport default CanvasVectorTileLayerRenderer;\n","/**\n * @module ol/layer/VectorTile\n */\nimport {assert} from '../asserts.js';\nimport CanvasVectorTileLayerRenderer from '../renderer/canvas/VectorTileLayer.js';\nimport BaseVectorLayer from './BaseVector.js';\nimport TileProperty from './TileProperty.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../render/EventType\").LayerRenderEventTypes, import(\"../render/Event\").default, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|\n *     import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError'|import(\"../render/EventType\").LayerRenderEventTypes, Return>} VectorTileLayerOnSignature\n */\n\n/**\n * @typedef {'hybrid' | 'vector'} VectorTileRenderType\n */\n\n/***\n * @template T\n * @typedef {T extends import(\"../source/VectorTile.js\").default<infer U extends import(\"../Feature.js\").FeatureLike> ? U : never} ExtractedFeatureType\n */\n\n/**\n * @template {import(\"../source/VectorTile.js\").default<FeatureType>} [VectorTileSourceType=import(\"../source/VectorTile.js\").default<*>]\n * @template {import(\"../Feature\").FeatureLike} [FeatureType=ExtractedFeatureType<VectorTileSourceType>]\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 * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the tile extent used by the\n * renderer when getting features from the vector tile for the rendering or hit-detection.\n * Recommended value: Vector tiles are usually generated with a buffer, so this value should match\n * the largest possible buffer of the used tiles. It should be at least the size of the largest\n * point symbol or line width.\n * @property {VectorTileRenderType} [renderMode='hybrid'] Render mode for vector tiles:\n *  `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom\n *    animations. Point symbols and texts are accurately rendered as vectors and can stay upright on\n *    rotated views, but get lifted above all polygon and line elements.\n *  `'vector'`: Everything is rendered as vectors and the original render order is maintained. Use\n *    this mode for improved performance and visual epxerience on vector tile layers with not too many\n *    rendered features (e.g. for highlighting a subset of features of another layer with the same\n *    source).\n * @property {VectorTileSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean|string|number} [declutter=false] Declutter images and text. Any truthy value will enable\n * decluttering. Within a layer, a feature rendered before another has higher priority. All layers with the\n * same `declutter` value will be decluttered together. The priority is determined by the drawing order of the\n * layers with the same `declutter` value. Higher in the layer stack means higher priority. To declutter distinct\n * layers or groups of layers separately, use different truthy values for `declutter`.\n * @property {import(\"../style/Style.js\").StyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no\n * background will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will be\n * recreated during animations. This means that no vectors will be shown clipped, but the setting\n * will have a performance impact for large amounts of vector data. When set to `false`, batches\n * will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will be\n * recreated during interactions. See also `updateWhileAnimating`.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {boolean} [useInterimTilesOnError=true] Deprecated.  Use interim tiles on error.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n * @property {number} [cacheSize=0] The internal tile cache size.  If too small, this will auto-grow to hold\n * two zoom levels worth of tiles.\n */\n\n/**\n * @classdesc\n * Layer for vector tile data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/VectorTile.js\").default<FeatureType>} [VectorTileSourceType=import(\"../source/VectorTile.js\").default<*>]\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=ExtractedFeatureType<VectorTileSourceType>]\n * @extends {BaseVectorLayer<FeatureType, VectorTileSourceType, CanvasVectorTileLayerRenderer>}\n * @api\n */\nclass VectorTileLayer extends BaseVectorLayer {\n  /**\n   * @param {Options<VectorTileSourceType, FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const baseOptions = Object.assign({}, options);\n    delete baseOptions.preload;\n    const cacheSize = options.cacheSize === undefined ? 0 : options.cacheSize;\n    delete options.cacheSize;\n    delete baseOptions.useInterimTilesOnError;\n\n    super(baseOptions);\n\n    /***\n     * @type {VectorTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {VectorTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {VectorTileLayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {number|undefined}\n     * @private\n     */\n    this.cacheSize_ = cacheSize;\n\n    const renderMode = options.renderMode || 'hybrid';\n    assert(\n      renderMode == 'hybrid' || renderMode == 'vector',\n      \"`renderMode` must be `'hybrid'` or `'vector'`\",\n    );\n\n    /**\n     * @private\n     * @type {VectorTileRenderType}\n     */\n    this.renderMode_ = renderMode;\n\n    this.setPreload(options.preload ? options.preload : 0);\n    this.setUseInterimTilesOnError(\n      options.useInterimTilesOnError !== undefined\n        ? options.useInterimTilesOnError\n        : true,\n    );\n\n    /**\n     * @return {import(\"./Base.js\").BackgroundColor} Background color.\n     * @function\n     * @api\n     */\n    this.getBackground;\n\n    /**\n     * @param {import(\"./Base.js\").BackgroundColor} background Background color.\n     * @function\n     * @api\n     */\n    this.setBackground;\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasVectorTileLayerRenderer(this, {\n      cacheSize: this.cacheSize_,\n    });\n  }\n\n  /**\n   * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n   * that resolves with an array of features. The array will either contain the topmost feature\n   * when a hit was detected, or it will be empty.\n   *\n   * The hit detection algorithm used for this method is optimized for performance, but is less\n   * accurate than the one used in [map.getFeaturesAtPixel()]{@link import(\"../Map.js\").default#getFeaturesAtPixel}.\n   * Text is not considered, and icons are only represented by their bounding box instead of the exact\n   * image.\n   *\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with an array of features.\n   * @api\n   * @override\n   */\n  getFeatures(pixel) {\n    return super.getFeatures(pixel);\n  }\n\n  /**\n   * Get features whose bounding box intersects the provided extent. Only features for cached\n   * tiles for the last rendered zoom level are available in the source. So this method is only\n   * suitable for requesting tiles for extents that are currently rendered.\n   *\n   * Features are returned in random tile order and as they are included in the tiles. This means\n   * they can be clipped, duplicated across tiles, and simplified to the render resolution.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeaturesInExtent(extent) {\n    return /** @type {Array<FeatureType>} */ (\n      /** @type {*} */ (this.getRenderer().getFeaturesInExtent(extent))\n    );\n  }\n\n  /**\n   * @return {VectorTileRenderType} The render mode.\n   */\n  getRenderMode() {\n    return this.renderMode_;\n  }\n\n  /**\n   * Return the level as number to which we will preload tiles up to.\n   * @return {number} The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  getPreload() {\n    return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n  }\n\n  /**\n   * Deprecated.  Whether we use interim tiles on error.\n   * @return {boolean} Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  getUseInterimTilesOnError() {\n    return /** @type {boolean} */ (\n      this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR)\n    );\n  }\n\n  /**\n   * Set the level as number to which we will preload tiles up to.\n   * @param {number} preload The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  setPreload(preload) {\n    this.set(TileProperty.PRELOAD, preload);\n  }\n\n  /**\n   * Deprecated.  Set whether we use interim tiles on error.\n   * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  setUseInterimTilesOnError(useInterimTilesOnError) {\n    this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n  }\n}\n\nexport default VectorTileLayer;\n","const defaultColors = {\r\n        background: [255, 255, 255, 0],\r\n        fill: [10, 200, 100, 0.5],\r\n        stroke: [0, 0, 0, 1],\r\n        textFill: [255, 255, 255, 1],\r\n        textStroke: [0, 0, 0, 0]\r\n    },\r\n    defaultStyle = {\r\n        point: {\r\n            feature: null,\r\n            isClustered: false,\r\n            type: \"circle\",\r\n            imagePath: \"\",\r\n            // für type icon\r\n            imageName: \"blank.png\",\r\n            imageWidth: 1,\r\n            imageHeight: 1,\r\n            imageScale: 1,\r\n            imageOffsetX: 0.5,\r\n            imageOffsetY: 0.5,\r\n            imageOffsetXUnit: \"fraction\",\r\n            imageOffsetYUnit: \"fraction\",\r\n            // for type circle\r\n            circleRadius: 10,\r\n            circleFillColor: defaultColors.fill,\r\n            circleStrokeColor: defaultColors.stroke,\r\n            circleStrokeWidth: 2,\r\n            clusterType: \"circle\",\r\n            // for type circle\r\n            clusterCircleRadius: 15,\r\n            clusterCircleFillColor: defaultColors.fill,\r\n            clusterCircleStrokeColor: defaultColors.stroke,\r\n            clusterCircleStrokeWidth: 2,\r\n            // for type icon\r\n            clusterImageName: \"blank.png\",\r\n            clusterImageWidth: 1,\r\n            clusterImageHeight: 1,\r\n            clusterImageScale: 1,\r\n            clusterImageOffsetX: 0.5,\r\n            clusterImageOffsetY: 0.5,\r\n            // Für scalingShape CIRCLESEGMENTS\r\n            circleSegmentsRadius: 10,\r\n            circleSegmentsStrokeWidth: 4,\r\n            circleSegmentsBackgroundColor: defaultColors.background,\r\n            scalingValueDefaultColor: defaultColors.stroke,\r\n            circleSegmentsGap: 10,\r\n            // Für scalingShape CIRCLE_BAR\r\n            circleBarScalingFactor: 1,\r\n            circleBarRadius: 6,\r\n            circleBarLineStroke: 5,\r\n            circleBarCircleFillColor: defaultColors.fill,\r\n            circleBarCircleStrokeColor: defaultColors.stroke,\r\n            circleBarCircleStrokeWidth: 1,\r\n            circleBarLineStrokeColor: defaultColors.stroke,\r\n            scalingAttribute: \"\",\r\n            rotation: 0,\r\n            // for type regularShape\r\n            rsRadius: 10,\r\n            rsRadius2: undefined,\r\n            rsPoints: 3,\r\n            rsFillColor: [0, 153, 255, 1],\r\n            rsStrokeColor: [0, 0, 0, 1],\r\n            rsStrokeWidth: 5,\r\n            rsAngle: 0,\r\n            rsScale: undefined\r\n        },\r\n        line: {\r\n            lineStrokeColor: defaultColors.stroke,\r\n            lineStrokeWidth: 5,\r\n            lineStrokeCap: \"round\",\r\n            lineStrokeJoin: \"round\",\r\n            lineStrokeDash: undefined,\r\n            lineStrokeDashOffset: 0,\r\n            lineStrokeMiterLimit: 10\r\n        },\r\n        polygon: {\r\n            // for stroke\r\n            polygonStrokeColor: defaultColors.stroke,\r\n            polygonStrokeWidth: 1,\r\n            polygonStrokeCap: \"round\",\r\n            polygonStrokeJoin: \"round\",\r\n            polygonStrokeDash: undefined,\r\n            polygonStrokeDashOffset: 0,\r\n            polygonStrokeMiterLimit: 10,\r\n            // for fill\r\n            polygonFillColor: defaultColors.fill,\r\n            polygonFillHatch: undefined\r\n        },\r\n        text: {\r\n            textAlign: \"center\",\r\n            textFont: \"Comic Sans MS\",\r\n            textScale: 2,\r\n            textOffsetX: 10,\r\n            textOffsetY: -8,\r\n            textFillColor: defaultColors.textFill,\r\n            textStrokeColor: defaultColors.textStroke,\r\n            textStrokeWidth: 3,\r\n            labelField: \"\",\r\n            textSuffix: \"\",\r\n            rotation: 0,\r\n            clusterTextType: \"counter\",\r\n            clusterText: \"\",\r\n            clusterTextAlign: \"center\",\r\n            clusterTextFont: \"Comic Sans MS\",\r\n            clusterTextScale: 2,\r\n            clusterTextOffsetX: 0,\r\n            clusterTextOffsetY: 2,\r\n            clusterTextFillColor: defaultColors.textFill,\r\n            clusterTextStrokeColor: defaultColors.textStroke,\r\n            clusterTextStrokeWidth: 0\r\n        },\r\n        defaultMapMarkerPoint: {\r\n            styleId: \"defaultMapMarkerPoint\",\r\n            rules: [{\r\n                style:\r\n                {\r\n                    type: \"icon\",\r\n                    imageName: `<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='#E10019' class='bi bi-geo-alt-fill' viewBox='0 0 16 16'>\r\n                    <path d='M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10zm0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z'/>\r\n                    </svg>`,\r\n                    imagePath: \"\",\r\n                    imageScale: 2,\r\n                    imageOffsetY: 16,\r\n                    imageOffsetYUnit: \"pixels\"\r\n                }\r\n            }]\r\n        },\r\n        defaultMapMarkerPolygon: {\r\n            styleId: \"defaultMapMarkerPolygon\",\r\n            rules: [{\r\n                style:\r\n                {\r\n                    polygonStrokeColor: [8, 119, 95, 1],\r\n                    polygonStrokeWidth: 4,\r\n                    polygonFillColor: [8, 119, 95, 0.3],\r\n                    polygonStrokeDash: [8]\r\n                }\r\n            }]\r\n        },\r\n        defaultAdditionalMapMarkerPolygon: {\r\n            styleId: \"defaultAdditionalMapMarkerPolygon\",\r\n            rules: [{\r\n                style: {\r\n                    polygonStrokeColor: [255, 255, 0, 1],\r\n                    polygonStrokeWidth: 4,\r\n                    polygonFillColor: [255, 255, 0, 0.3],\r\n                    polygonStrokeDash: [8]\r\n                }\r\n            }]\r\n        },\r\n        defaultHighlightFeaturesPoint: {\r\n            styleId: \"defaultHighlightFeaturesPoint\",\r\n            rules: [{\r\n                style:\r\n                {\r\n                    type: \"circle\",\r\n                    circleFillColor: [255, 255, 0, 0.9],\r\n                    circleRadius: 8\r\n                }\r\n            }]\r\n        },\r\n        defaultHighlightFeaturesPolygon: {\r\n            styleId: \"defaultHighlightFeaturesPolygon\",\r\n            rules: [{\r\n                style:\r\n                {\r\n                    polygonStrokeColor: [8, 119, 95, 1],\r\n                    polygonStrokeWidth: 4,\r\n                    polygonFillColor: [8, 119, 95, 0.3],\r\n                    polygonStrokeDash: [8]\r\n                }\r\n            }]\r\n        },\r\n        defaultHighlightFeaturesLine: {\r\n            styleId: \"defaultHighlightFeaturesLine\",\r\n            rules: [{\r\n                style:\r\n            {\r\n                polygonStrokeColor: [8, 119, 95, 1],\r\n                polygonStrokeWidth: 4,\r\n                polygonFillColor: [8, 119, 95, 0.3],\r\n                polygonStrokeDash: [8]\r\n            }\r\n            }]\r\n        }\r\n    };\r\n\r\nexport default defaultStyle;\r\n","import defaultStyle from \"./styles/defaultStyles\";\r\n\r\n/**\r\n* styleList that stores all the vector styles contained in style.json.\r\n* Only the styles of the configured layers are kept.\r\n* If a tool has an attribute \"styleId\", then also this style is kept.\r\n* The styleId can be a string or an array of strings or an array of objects that need to have the attribute \"id\".\r\n* example \"myStyleId\", [\"myStyleId2\", \"myStyleId3\"], [{\"id\": \"myStyleId4\", \"name\": \"I am not relevant for the style\"}]\r\n * @type{Array}\r\n * @ignore\r\n */\r\nlet styleList,\r\n    configuredLayers,\r\n    configuredTools,\r\n    mapMarkerPointStyleId,\r\n    mapMarkerPolygonStyleId,\r\n    additionalPolygonStyleId,\r\n    highlightFeaturesPointStyleId,\r\n    highlightFeaturesPolygonStyleId,\r\n    highlightFeaturesLineStyleId,\r\n    styleConf,\r\n    featureViaUrlLayers,\r\n    zoomToFeatureId;\r\n\r\n/**\r\n * Gathers the styleIds of the layers.\r\n * @returns {Sting[]} - StyleIds from layers.\r\n */\r\nfunction getStyleIdsFromLayers () {\r\n    const styleIds = [];\r\n\r\n    if (configuredLayers) {\r\n        configuredLayers.forEach(layer => {\r\n            if (layer.typ === \"WFS\" || layer.typ === \"GeoJSON\" || layer.typ === \"SensorThings\" || layer.typ === \"TileSet3D\" || layer.typ === \"OAF\") {\r\n                if (layer?.styleId) {\r\n                    styleIds.push(layer.styleId);\r\n                }\r\n            }\r\n            else if (layer.typ === \"GROUP\") {\r\n                layer.children.forEach(child => {\r\n                    if (child?.styleId) {\r\n                        styleIds.push(child.styleId);\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\r\n    return styleIds;\r\n}\r\n\r\n/**\r\n * Gathers the styleIds of the configured tools.\r\n * @returns {String[]} - StyleIds of Tools\r\n */\r\nfunction getStyleIdsFromTools () {\r\n    const styleIds = [];\r\n\r\n    if (configuredTools) {\r\n        configuredTools.forEach(tool => {\r\n            if (tool?.styleId) {\r\n                if (Array.isArray(tool.styleId)) {\r\n                    tool.styleId.forEach(styleIdInArray => {\r\n                        if (styleIdInArray instanceof Object) {\r\n                            styleIds.push(styleIdInArray.id);\r\n                        }\r\n                        else {\r\n                            styleIds.push(styleIdInArray);\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    styleIds.push(tool.styleId);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return styleIds;\r\n}\r\n\r\n/**\r\n * gets style id from MapMarker\r\n * @returns {String} - Style id of mapMarker.\r\n */\r\nfunction getStyleIdForMapMarkerPoint () {\r\n    let styleId;\r\n\r\n    if (mapMarkerPointStyleId) {\r\n        styleId = mapMarkerPointStyleId;\r\n    }\r\n    else {\r\n        styleId = \"defaultMapMarkerPoint\";\r\n    }\r\n    return styleId;\r\n}\r\n\r\n/**\r\n * gets style id from HighlightFeatures\r\n * @returns {String} - Style id of highlightFeatures.\r\n */\r\nfunction getStyleIdForHighlightFeaturesPoint () {\r\n    let styleId;\r\n\r\n    if (highlightFeaturesPointStyleId) {\r\n        styleId = highlightFeaturesPointStyleId;\r\n    }\r\n    else {\r\n        styleId = \"defaultHighlightFeaturesPoint\";\r\n    }\r\n    return styleId;\r\n}\r\n\r\n/**\r\n * gets style id from HighlightFeatures\r\n * @returns {String} - Style id of highlightFeatures.\r\n */\r\nfunction getStyleIdForHighlightFeaturesLine () {\r\n    let styleId;\r\n\r\n    if (highlightFeaturesLineStyleId) {\r\n        styleId = highlightFeaturesLineStyleId;\r\n    }\r\n    else {\r\n        styleId = \"defaultHighlightFeaturesLine\";\r\n    }\r\n    return styleId;\r\n}\r\n\r\n/**\r\n * gets style id from MapMarker\r\n * @returns {String} - Style id of mapMarker.\r\n */\r\nfunction getStyleIdForMapMarkerPolygon () {\r\n    let styleId;\r\n\r\n    if (mapMarkerPolygonStyleId) {\r\n        styleId = mapMarkerPolygonStyleId;\r\n    }\r\n    else {\r\n        styleId = \"defaultMapMarkerPolygon\";\r\n    }\r\n    return styleId;\r\n}\r\n\r\n/**\r\n * Gets the style id for an additional MapMarker.\r\n * If the additionalPolygonStyleId exists, return it; otherwise, returns the default styleId.\r\n * @returns {String} - The styleId of the additional MapMarker\r\n */\r\nfunction getStyleIdForAdditionalMapMarkerPolygon () {\r\n    let styleId;\r\n\r\n    if (additionalPolygonStyleId) {\r\n        styleId = additionalPolygonStyleId;\r\n    }\r\n    else {\r\n        styleId = \"defaultAdditionalMapMarkerPolygon\";\r\n    }\r\n    return styleId;\r\n}\r\n\r\n/**\r\n * gets style id from HighlightFeatures\r\n * @returns {String} - Style id of highlightFeatures.\r\n */\r\nfunction getStyleIdForHighlightFeaturesPolygon () {\r\n    let styleId;\r\n\r\n    if (highlightFeaturesPolygonStyleId) {\r\n        styleId = highlightFeaturesPolygonStyleId;\r\n    }\r\n    else {\r\n        styleId = \"defaultHighlightFeaturesPolygon\";\r\n    }\r\n    return styleId;\r\n}\r\n\r\n/**\r\n * Checks whether the module featureViaURL is activated and retrieves the styleIds.\r\n * @returns {String[]} Array of styleIds for the layers for the features given via the URL.\r\n */\r\nfunction getFeatureViaURLStyles () {\r\n    const styleIds = [];\r\n\r\n    if (featureViaUrlLayers !== undefined) {\r\n        featureViaUrlLayers.forEach(layer => {\r\n            styleIds.push(layer.styleId);\r\n        });\r\n    }\r\n    return styleIds;\r\n}\r\n\r\n/**\r\n * overwrite parse function so that only the style objects are saved\r\n * whose layers are configured in the config.json\r\n * After that these objects are automatically added to the collection\r\n * @param  {object[]} data parsed style.json\r\n * @return {object[]} filtered style.json objects\r\n */\r\nfunction parseStyles (data) {\r\n    const dataWithDefaultValue = [...data];\r\n    let styleIds = [],\r\n        filteredData = [];\r\n\r\n    dataWithDefaultValue.push({styleId: \"default\", rules: [{style: {}}]},\r\n        defaultStyle.defaultMapMarkerPoint,\r\n        defaultStyle.defaultMapMarkerPolygon,\r\n        defaultStyle.defaultAdditionalMapMarkerPolygon,\r\n        defaultStyle.defaultHighlightFeaturesPoint,\r\n        defaultStyle.defaultHighlightFeaturesPolygon,\r\n        defaultStyle.defaultHighlightFeaturesLine);\r\n\r\n    styleIds.push(getStyleIdsFromLayers(),\r\n        getStyleIdForMapMarkerPoint(),\r\n        getStyleIdForMapMarkerPolygon(),\r\n        getStyleIdForAdditionalMapMarkerPolygon(),\r\n        getStyleIdForHighlightFeaturesPoint(),\r\n        getStyleIdForHighlightFeaturesPolygon(),\r\n        getStyleIdForHighlightFeaturesLine(),\r\n        getStyleIdsFromTools(),\r\n        getFeatureViaURLStyles(),\r\n        zoomToFeatureId);\r\n\r\n    styleIds = styleIds.reduce((acc, val) => acc.concat(val), []).filter(item => item);\r\n    filteredData = dataWithDefaultValue.filter(styleObject => styleIds.includes(styleObject.styleId));\r\n\r\n    return filteredData;\r\n}\r\n\r\n/**\r\n * Initializes the style list with fetching the services.json.\r\n * [styleConf=\"https://geoportal-hamburg.de/lgv-config/style_v3.json\"] - the URL to fetch the services from.\r\n * @param {object} [styleGetters] - object with the needed getters from vue store\r\n * @param {object} [Config] - the Config.js object\r\n * @param {array} [layers] - an array with the configured layers\r\n * @param {array} [tools] - an array with the configured tools\r\n * @param {function} [callback] - called with services after loaded; called with false and error on error\r\n * @returns {array} the list of styles\r\n */\r\nasync function initializeStyleList (styleGetters, Config, layers, tools, callback) {\r\n    configuredLayers = layers;\r\n    configuredTools = tools;\r\n\r\n    mapMarkerPointStyleId = styleGetters.mapMarkerPointStyleId;\r\n    mapMarkerPolygonStyleId = styleGetters.mapMarkerPolygonStyleId;\r\n    additionalPolygonStyleId = styleGetters.additionalPolygonStyleId;\r\n    highlightFeaturesPointStyleId = styleGetters.highlightFeaturesPointStyleId;\r\n    highlightFeaturesPolygonStyleId = styleGetters.highlightFeaturesPolygonStyleId;\r\n    highlightFeaturesLineStyleId = styleGetters.highlightFeaturesLineStyleId;\r\n    zoomToFeatureId = styleGetters.zoomToFeatureId;\r\n\r\n    styleConf = Config.styleConf;\r\n    featureViaUrlLayers = Config.featureViaURL?.layers;\r\n\r\n    await fetch(styleConf)\r\n        .then(response => response.json())\r\n        .then(data => {\r\n            styleList = parseStyles(data);\r\n        })\r\n        .catch(error => {\r\n            console.error(error);\r\n            callback(false, true);\r\n        });\r\n    return styleList;\r\n}\r\n\r\n/**\r\n * adds a style to the style list\r\n * @param {Array} jsonStyles Array of styles\r\n * @returns  {void}\r\n */\r\nfunction addToStyleList (jsonStyles) {\r\n    jsonStyles.forEach(style => {\r\n        styleList.push(style);\r\n    });\r\n}\r\n\r\n/**\r\n * Returns style object by styleId or by layerId\r\n * @param {string} layerId layerId\r\n * @returns {object} style object\r\n */\r\nfunction returnStyleObject (layerId) {\r\n    return styleList?.find(styleObject => styleObject.styleId === layerId);\r\n}\r\n\r\nexport default {\r\n    initializeStyleList,\r\n    addToStyleList,\r\n    returnStyleObject\r\n};\r\n","/**\r\n * gets the parts of the given path splitted by \".\", ignoring escaped \".\"\r\n * @param {String} path the path to split\r\n * @param {String} [delimitor=\".\"] the delimitor to use\r\n * @returns {String[]} the resulting parts of the path\r\n */\r\nfunction getPathPartsFromPath (path, delimitor = \".\") {\r\n    const len = path.length,\r\n        result = [];\r\n    let letter = \"\",\r\n        word = \"\";\r\n\r\n    for (let i = 0; i < len; i++) {\r\n        letter = path[i];\r\n\r\n        if (letter === \"\\\\\") {\r\n            i++;\r\n            letter = path[i];\r\n        }\r\n        else if (letter === delimitor) {\r\n            result.push(word);\r\n            word = \"\";\r\n            continue;\r\n        }\r\n        word += letter;\r\n    }\r\n\r\n    if (word) {\r\n        result.push(word);\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * uses the given path to go into the given object and returns the value found at the end\r\n * @info arrays can be accessed by using a number as index (e.g. \"@Test.0.test\")\r\n * @param {Object} obj an object or array to search through\r\n * @param {String} path the path to follow through the given object\r\n * @param {String} [prefix=\"@\"] the prefix to use to recognize the string as path to follow\r\n * @param {String} [delimitor=\".\"] the delimitor to use\r\n * @param {Number} [depthBarrier=20] the depth barrier to avoid infinit recurtions\r\n * @returns {*} any value found at the end or undefined if nothing was found\r\n */\r\nfunction getValueFromObjectByPath (obj, path, prefix = \"@\", delimitor = \".\", depthBarrier = 20) {\r\n    if (\r\n        typeof obj !== \"object\"\r\n        || obj === null\r\n        || typeof path !== \"string\"\r\n        || (\r\n            typeof prefix === \"string\"\r\n            && path.substr(0, prefix.length) !== prefix\r\n        )\r\n    ) {\r\n        return undefined;\r\n    }\r\n    const pathParts = getPathPartsFromPath(typeof prefix === \"string\" ? path.substring(prefix.length) : path, delimitor),\r\n        len = pathParts.length;\r\n    let value = obj,\r\n        depth = 0;\r\n\r\n    for (let i = 0; i < len; i++) {\r\n        if (typeof value !== \"object\" || value === null) {\r\n            return undefined;\r\n        }\r\n        value = value[pathParts[i]];\r\n        depth++;\r\n        if (typeof value === \"undefined\" || depth > depthBarrier) {\r\n            return undefined;\r\n        }\r\n    }\r\n    return value;\r\n}\r\n\r\nexport {getValueFromObjectByPath, getPathPartsFromPath};\r\n","\r\n/**\r\n * adds thousands seperators into a number and changes the decimal point\r\n * @param {(Number|String)} num the number as number or string\r\n * @param {String} [delimAbs=\".\"] the letter(s) to use as thousand point\r\n * @param {String} [delimDec=\",\"] the letter(s) to use as decimal point\r\n * @returns {String}  the given number with thousands seperators or an empty string if any invalid num was given\r\n */\r\nfunction thousandsSeparator (num, delimAbs = \".\", delimDec = \",\") {\r\n    if (typeof num !== \"number\" && typeof num !== \"string\") {\r\n        return \"\";\r\n    }\r\n\r\n    const value = typeof num !== \"string\" ? num.toString() : num,\r\n        decPointPos = value.indexOf(\".\"),\r\n        abs = decPointPos > -1 ? value.substring(0, decPointPos) : value,\r\n        result = abs.replace(/\\B(?=(\\d{3})+(?!\\d),?.*)/g, delimAbs),\r\n        dec = decPointPos > -1 ? value.substring(decPointPos + 1) : false;\r\n\r\n    return dec ? result + delimDec + dec : result;\r\n}\r\n\r\nexport default thousandsSeparator;\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import {getValueFromObjectByPath} from \"./getValueFromObjectByPath.js\";\r\nimport thousandsSeparator from \"./thousandsSeparator\";\r\nimport dayjs from \"dayjs\";\r\n/**\r\n * checks if value starts with special prefix to determine if value is a object path\r\n * @param   {string} value string to check\r\n * @returns {Boolean} true is value is an object path\r\n */\r\nfunction isObjectPath (value) {\r\n    return typeof value === \"string\" && value.startsWith(\"@\");\r\n}\r\n/**\r\n * Returns the value of the given key. Also considers, that the key may be an object path.\r\n * @param {Object} properties properties.\r\n * @param {String} propertyKey Key to derive value from.\r\n * @returns {*} - Value from key.\r\n */\r\nfunction prepareValue (properties, propertyKey) {\r\n    Object.keys(properties).forEach((parentKey) => {\r\n        if (properties[parentKey] && typeof properties[parentKey] === \"object\") {\r\n            Object.keys(properties[parentKey]).forEach((key) => {\r\n                properties[parentKey + \".\" + key] = properties[parentKey][key];\r\n            });\r\n        }\r\n    });\r\n\r\n    const isPath = isObjectPath(propertyKey);\r\n    let value = properties[Object.keys(properties).find(propertiesKey => propertiesKey.toLowerCase() === propertyKey.toLowerCase())];\r\n\r\n    if (isPath) {\r\n        value = getValueFromObjectByPath(properties, propertyKey);\r\n    }\r\n\r\n    return value;\r\n}\r\n\r\n/**\r\n * Parsing the boolean value\r\n * @param {String} value default value\r\n * @param {String|Object} format the format of boolean value\r\n* @returns {String} - original value or parsed value\r\n */\r\nfunction getBooleanValue (value, format) {\r\n    let parsedValue = String(value);\r\n\r\n    if (Object.prototype.hasOwnProperty.call(format, value)) {\r\n        // TODO: check if true -> translation is dismissed because i18next does not exist in masterportalApi\r\n        parsedValue = format[value];\r\n\r\n    }\r\n    return parsedValue;\r\n}\r\n\r\n/**\r\n * Appends a suffix if available.\r\n * @param {*} value Value to append suffix.\r\n * @param {String} suffix Suffix\r\n * @returns {String} - Value with suffix.\r\n */\r\nfunction appendSuffix (value, suffix) {\r\n    let valueWithSuffix = value;\r\n\r\n    if (suffix) {\r\n        valueWithSuffix = String(valueWithSuffix) + \" \" + suffix;\r\n    }\r\n    return valueWithSuffix;\r\n}\r\n\r\n/**\r\n * Prepend a prefix if available.\r\n * @param {*} value Value to prepend prefix.\r\n * @param {String} prefix Prefix\r\n * @returns {String} - Value with prefix.\r\n */\r\nfunction prependPrefix (value, prefix) {\r\n    let valueWithPrefix = value;\r\n\r\n    if (prefix) {\r\n        valueWithPrefix = prefix + String(valueWithPrefix);\r\n    }\r\n    return valueWithPrefix;\r\n}\r\n\r\n/**\r\n * Derives the value from the given condition.\r\n * @param {String} key Key.\r\n * @param {String} condition Condition to filter.\r\n * @param {Object} properties Properties.\r\n * @returns {*} - Value that matches the given condition.\r\n */\r\nfunction getValueFromCondition (key, condition, properties) {\r\n    let valueFromCondition,\r\n        match;\r\n\r\n    if (condition === \"contains\") {\r\n        match = Object.keys(properties).filter(key2 => {\r\n            return key2.includes(key);\r\n        })[0];\r\n        valueFromCondition = properties[match];\r\n    }\r\n    else if (condition === \"startsWith\") {\r\n        match = Object.keys(properties).filter(key2 => {\r\n            return key2.startsWith(key);\r\n        })[0];\r\n        valueFromCondition = properties[match];\r\n    }\r\n    else if (condition === \"endsWith\") {\r\n        match = Object.keys(properties).filter(key2 => {\r\n            return key2.endsWith(key);\r\n        })[0];\r\n        valueFromCondition = properties[match];\r\n    }\r\n    else {\r\n        valueFromCondition = properties[key];\r\n    }\r\n\r\n    return valueFromCondition;\r\n\r\n}\r\n\r\n/**\r\n * Maps the feature properties by the given object. if the value is the wildcard '%value%' then the prepared value is taken.\r\n * @param {HTML} htmltag The html tag.\r\n * @param {Object} properties The properties for the htmltag.\r\n * @param {String} preparedValue The prepared value.\r\n * @returns {HTML} The html tag with mapped properties.\r\n */\r\nfunction addPropertiesToHtmlTag (htmltag, properties, preparedValue) {\r\n    const htmltagWithproperties = htmltag;\r\n\r\n    if (properties) {\r\n        Object.keys(properties).forEach(prop => {\r\n            if (properties[prop] === \"%value%\") {\r\n                htmltagWithproperties.setAttribute(prop, preparedValue);\r\n            }\r\n            else {\r\n                htmltagWithproperties.setAttribute(prop, properties[prop]);\r\n            }\r\n        });\r\n    }\r\n    return htmltagWithproperties;\r\n}\r\n\r\n/**\r\n * Derives the gfi value if the value is an object.\r\n * @param {*} key Key of Attribute.\r\n * @param {Object} mappingObj Value of attribute.\r\n * @param {Object} properties object.\r\n * @returns {*} - Prepared Value\r\n */\r\nfunction prepareValueFromObject (key, mappingObj, properties) {\r\n    const type = mappingObj?.type ? mappingObj.type : \"string\",\r\n        condition = mappingObj?.condition ? mappingObj.condition : null,\r\n        serializer = new XMLSerializer();\r\n    let preparedValue = prepareValue(properties, key),\r\n        format = mappingObj?.format ? mappingObj.format : \"YYYY-MM-DDTHH:mm:ss.SSSZ\",\r\n        date,\r\n        htmltag;\r\n\r\n    if (condition) {\r\n        preparedValue = getValueFromCondition(key, condition, properties);\r\n    }\r\n    switch (type) {\r\n        case \"date\": {\r\n            date = new Date(String(preparedValue));\r\n            if (format === \"YYYY-MM-DDTHH:mm:ss.SSSZ\") {\r\n                const offset = date.getTimezoneOffset();\r\n\r\n                let offsetHours = (offset / 60) % 24,\r\n                    offsetMinutes = offset % 60;\r\n\r\n                offsetHours = offsetHours < 0 ? \"+\" + (\"0\" + Math.abs(offsetHours)).slice(-2) : \"-\" + (\"0\" + Math.abs(offsetHours)).slice(-2);\r\n                offsetMinutes = offsetMinutes < 0 ? \":\" + (\"0\" + Math.abs(offsetMinutes)).slice(-2) : \":\" + (\"0\" + offsetMinutes).slice(-2);\r\n                preparedValue = date.toISOString().slice(0, -1) + offsetHours + offsetMinutes;\r\n            }\r\n            else if (!isNaN(date.getDay())) {\r\n                preparedValue = dayjs(String(preparedValue)).format(format);\r\n            }\r\n            else {\r\n                console.warn(\"If the attribute is missing, ISO 8601 is used.\");\r\n            }\r\n            break;\r\n        }\r\n        case \"number\": {\r\n            preparedValue = thousandsSeparator(preparedValue);\r\n            break;\r\n        }\r\n        case \"linechart\": {\r\n            preparedValue = Object.assign({\r\n                name: key,\r\n                staObject: preparedValue\r\n            }, mappingObj);\r\n            break;\r\n        }\r\n        case \"boolean\": {\r\n            format = format === \"DD.MM.YYYY HH:mm:ss\" ? {true: \"true\", false: \"false\"} : format;\r\n            preparedValue = getBooleanValue(preparedValue, format);\r\n            break;\r\n        }\r\n        case \"html\": {\r\n            if (preparedValue !== undefined) {\r\n                // create tag\r\n                if (mappingObj?.html?.tag) {\r\n                    htmltag = document.createElement(mappingObj?.html?.tag);\r\n                }\r\n                // create innerHTML\r\n                if (mappingObj?.html?.innerHTML === \"%value%\") {\r\n                    htmltag.innerHTML = preparedValue;\r\n                }\r\n                else if (mappingObj?.html?.innerHTML) {\r\n                    htmltag.innerHTML = mappingObj?.html?.innerHTML;\r\n                }\r\n                if (htmltag) {\r\n                    if (mappingObj?.html?.properties) {\r\n                        htmltag = addPropertiesToHtmlTag(htmltag, mappingObj?.html?.properties, preparedValue);\r\n                    }\r\n                    preparedValue = serializer.serializeToString(htmltag);\r\n                    // remove xmlns\r\n                    preparedValue = preparedValue.replace(/ xmlns=\"(.*?)\"/g, \"\");\r\n                }\r\n            }\r\n            break;\r\n        }\r\n        // default equals to mappingObj.type === \"string\"\r\n        default: {\r\n            preparedValue = String(preparedValue);\r\n        }\r\n    }\r\n    if (preparedValue && mappingObj.suffix && preparedValue !== \"undefined\") {\r\n        preparedValue = appendSuffix(preparedValue, mappingObj.suffix);\r\n    }\r\n    if (preparedValue && mappingObj.prefix && preparedValue !== \"undefined\") {\r\n        preparedValue = prependPrefix(preparedValue, mappingObj.prefix);\r\n    }\r\n    return preparedValue;\r\n}\r\n\r\n/**\r\n * Maps the feature properties by the given object.\r\n * @param {Object} properties The feature properties.\r\n * @param {Object} mappingObject Object to me mapped.\r\n * @param {Boolean} [isNested=true] Flag if Object is nested, like \"gfiAttributes\".\r\n * @returns {Object} The mapped properties.\r\n */\r\nfunction mapAttributes (properties, mappingObject, isNested = true) {\r\n    let mappedProperties;\r\n\r\n    if (!mappingObject) {\r\n        return false;\r\n    }\r\n    if (!isNested) {\r\n        if (typeof mappingObject === \"string\") {\r\n            mappedProperties = prepareValue(properties, mappingObject);\r\n        }\r\n        else {\r\n            mappedProperties = prepareValueFromObject(mappingObject.name, mappingObject, properties);\r\n        }\r\n    }\r\n    else {\r\n        mappedProperties = {};\r\n        Object.keys(mappingObject).forEach(key => {\r\n            let newKey = mappingObject[key],\r\n                value = prepareValue(properties, key);\r\n\r\n            if (typeof newKey === \"object\") {\r\n                value = prepareValueFromObject(key, newKey, properties);\r\n                newKey = newKey.name;\r\n            }\r\n            if (value && value !== \"undefined\") {\r\n                mappedProperties[newKey] = value;\r\n            }\r\n        });\r\n    }\r\n    return mappedProperties;\r\n}\r\n\r\nexport {\r\n    mapAttributes,\r\n    isObjectPath,\r\n    prepareValue\r\n};\r\n","import {mapAttributes, isObjectPath} from \"../../lib/attributeMapper\";\r\n\r\n/**\r\n * get value without comma and into number format\r\n * @param   {string|number} value the parameter\r\n * @returns {number} the parsed value\r\n */\r\nexport function getValueWithoutComma (value) {\r\n    if (typeof value === \"string\" && value.indexOf(\",\") > -1) {\r\n        return parseFloat(value.replace(\",\", \".\"));\r\n    }\r\n    return value;\r\n}\r\n\r\n/**\r\n * Returns the reference value. If necessary it loops through the feature properties object structure.\r\n * @param   {object} featureProperties properties of the feature\r\n * @param   {string} value attribute value or object path to check\r\n * @returns {void} attribute property can be of any type\r\n */\r\nexport function getReferenceValue (featureProperties, value) {\r\n    const valueIsObjectPath = isObjectPath(value);\r\n    let referenceValue = value;\r\n\r\n    // sets the real feature property value in case referenceValue is an object path\r\n    if (valueIsObjectPath) {\r\n        referenceValue = mapAttributes(featureProperties, referenceValue, false);\r\n    }\r\n\r\n    // sets the real feature property values also for min-max-arrays in case its values are object pathes.\r\n    if (Array.isArray(referenceValue)) {\r\n        referenceValue.forEach((element, index, arr) => {\r\n            if (isObjectPath(element)) {\r\n                arr[index] = mapAttributes(featureProperties, element, false);\r\n            }\r\n        });\r\n    }\r\n    return referenceValue;\r\n}\r\n\r\n/**\r\n * Compares values according to its type.\r\n * @param   {string|number} featureValue value to compare\r\n * @param   {string|number|array} referenceValue value to compare\r\n * @returns {Boolean} true if values equal or in range\r\n */\r\nexport function compareValues (featureValue, referenceValue) {\r\n    let value = featureValue;\r\n\r\n    // plain value compare for strings\r\n    if (typeof featureValue === \"string\" && typeof referenceValue === \"string\") {\r\n        if (featureValue === referenceValue) {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    // plain value compare for boolean\r\n    if (typeof featureValue === \"boolean\" && typeof referenceValue === \"boolean\") {\r\n        if (featureValue === referenceValue) {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    // plain value compare trying to parse featureValue to float\r\n    else if (typeof referenceValue === \"number\") {\r\n        value = parseFloat(value);\r\n\r\n        if (!isNaN(featureValue) && value === parseFloat(referenceValue)) {\r\n            return true;\r\n        }\r\n    }\r\n    // compare value in range\r\n    else if (Array.isArray(referenceValue) && referenceValue.every(element => typeof element === \"number\" || element === null) && (referenceValue.length === 2 || referenceValue.length === 4)) {\r\n        value = parseFloat(getValueWithoutComma(value));\r\n        if (!isNaN(getValueWithoutComma(featureValue))) {\r\n            // value in absolute range of numbers [minValue, maxValue]\r\n            if (referenceValue.length === 2) {\r\n                // do nothing\r\n            }\r\n            // value in relative range of numbers [minValue, maxValue, relMin, relMax]\r\n            else if (referenceValue.length === 4) {\r\n                value = 1 / (parseFloat(referenceValue[3], 10) - parseFloat(referenceValue[2], 10)) * (value - parseFloat(referenceValue[2], 10));\r\n            }\r\n            if (referenceValue[0] === null && referenceValue[1] === null) {\r\n                // everything is in a range of [null, null]\r\n                return true;\r\n            }\r\n            else if (referenceValue[0] === null) {\r\n                // if a range [null, x] is given, x should not be included\r\n                return value < parseFloat(referenceValue[1]);\r\n            }\r\n            else if (referenceValue[1] === null) {\r\n                // if a range [x, null] is given, x should be included\r\n                return value >= parseFloat(referenceValue[0]);\r\n            }\r\n\r\n            // if a range [x, y] is given, x should be included but y should not be included\r\n            return value >= parseFloat(referenceValue[0]) && value < parseFloat(referenceValue[1]);\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Checks one feature against one property returning true if property satisfies condition.\r\n * if clustering is activated, the parameter featureProperties has an array of feautures. only the first feature\r\n * from the array is relevant at point, because only individual features are styled here.\r\n * The styling of clustered features happens in another function.\r\n * @param   {object} featureProperties properties of the feature that has to be checked\r\n * @param   {string} key attribute name or object path to check\r\n * @param   {string|number|array} value attribute value or object path to check\r\n * @returns {Boolean} true if property is satisfied. Otherwhile returns false.\r\n */\r\nexport function checkProperty (featureProperties, key, value) {\r\n    let featureProperty = featureProperties;\r\n\r\n    // if they are clustered features, then the first one is taken from the array\r\n    if (typeof featureProperties === \"object\" && Object.prototype.hasOwnProperty.call(featureProperties, \"features\")) {\r\n        if (Array.isArray(featureProperties.features) && featureProperties.features.length > 0) {\r\n            featureProperty = featureProperties.features[0].getProperties();\r\n        }\r\n    }\r\n\r\n    const featureValue = mapAttributes(featureProperty, key, false),\r\n        referenceValue = getReferenceValue(featureProperty, value);\r\n\r\n    if ((typeof featureValue === \"boolean\" || typeof featureValue === \"string\" || typeof featureValue === \"number\") && (typeof referenceValue === \"boolean\" || typeof referenceValue === \"string\" || typeof referenceValue === \"number\" ||\r\n        (Array.isArray(referenceValue) && referenceValue.every(element => typeof element === \"number\" || element === null) &&\r\n            (referenceValue.length === 2 || referenceValue.length === 4)))) {\r\n        return compareValues(featureValue, referenceValue);\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Loops one feature through all properties returning true if all properties are satisfied.\r\n * Returns also true if rule has no \"conditions\" to check.\r\n * @param   {ol/feature} feature to check\r\n * @param {object} rule the rule to check\r\n * @returns {Boolean} true if all properties are satisfied\r\n */\r\nexport function checkProperties (feature, rule) {\r\n    if (rule?.conditions?.properties && feature) {\r\n        const featureProperties = feature.getProperties(),\r\n            properties = rule.conditions.properties;\r\n        let key,\r\n            i;\r\n\r\n        if (Array.isArray(properties)) {\r\n            for (i in properties) {\r\n                const value = properties[i].value;\r\n\r\n                key = properties[i].attrName;\r\n\r\n                if (!checkProperty(featureProperties, key, value)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            for (key in properties) {\r\n                const value = properties[key];\r\n\r\n                if (!checkProperty(featureProperties, key, value)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    return true;\r\n}","import {checkProperties} from \"../lib/valueOperations\";\r\n/**\r\n * Returning all rules that fit to the feature. Array could be empty.\r\n * @param {object} styleObject the styleObject with style information\r\n * @param {ol/feature} feature the feature to check\r\n * @returns {object[]} return all rules that fit to the feature\r\n */\r\nexport function getRulesForFeature (styleObject, feature) {\r\n    styleObject.rules.forEach(rule => {\r\n        if (typeof feature?.get(\"rotation\") !== \"undefined\") {\r\n            rule.style.rotation = feature.get(\"rotation\");\r\n        }\r\n    });\r\n    return styleObject.rules.filter(rule => checkProperties(feature, rule));\r\n}\r\n/**\r\n * Returns the first rule that satisfies the index of the multi geometry.\r\n * The \"sequence\" must be an integer with defined min and max values representing the index range.\r\n * @param   {object[]} rules all rules the satisfy conditions.properties.\r\n * @param   {integer} index the simple geometries index\r\n * @returns {object|undefined} the proper rule\r\n */\r\nexport function getIndexedRule (rules, index) {\r\n    return rules.find(rule => {\r\n        const sequence = rule.conditions?.sequence ? rule.conditions.sequence : null,\r\n            isSequenceValid = sequence && Array.isArray(sequence) && sequence.every(element => typeof element === \"number\") && sequence.length === 2 && sequence[1] >= sequence[0],\r\n            minValue = isSequenceValid ? sequence[0] : -1,\r\n            maxValue = isSequenceValid ? sequence[1] : -1;\r\n\r\n        return index >= minValue && index <= maxValue;\r\n    });\r\n}\r\n\r\n/**\r\n * Returns the best rule for the indexed feature giving precedence to the index position.\r\n * Otherwhile returns the rule with conditions but without a sequence definition.\r\n * Fallback is a rule without conditions.\r\n * That means also: A rule with fitting properties but without fitting sequence is never used for any multi geometry.\r\n * @param   {object[]} rules the rules to check\r\n * @param   {integer} index the index position of geometry in the multi geometry\r\n * @returns {object|null} the rule or null if no rule match the conditions\r\n */\r\nexport function getRuleForIndex (rules, index) {\r\n    const indexedRule = getIndexedRule(rules, index),\r\n        propertiesRule = rules.find(rule => {\r\n            return rule?.conditions && !Object.prototype.hasOwnProperty.call(rule.conditions, \"sequence\");\r\n        }),\r\n        fallbackRule = rules.find(rule => {\r\n            return !rule?.conditions;\r\n        });\r\n\r\n    if (indexedRule) {\r\n        return indexedRule;\r\n    }\r\n    else if (propertiesRule) {\r\n        return propertiesRule;\r\n    }\r\n    else if (fallbackRule) {\r\n        return fallbackRule;\r\n    }\r\n    return null;\r\n}","/**\r\n * Makes sure that one rgb color always consists of four values\r\n * @param {Number[]} newColor Color in rgb\r\n * @return {Number[]} normColor\r\n */\r\nexport function normalizeRgbColor (newColor) {\r\n    const defaultArray = [1, 1, 1, 1];\r\n\r\n    return newColor.concat(defaultArray).slice(0, 4);\r\n}\r\n\r\n/**\r\n * Converts hex value to rgbarray.\r\n * @param {String} hex Color as hex string.\r\n * @returns {Number[]} - Color als rgb array.\r\n */\r\nexport function hexToRgb (hex) {\r\n    // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n    const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\r\n        hexReplace = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n            return r + r + g + g + b + b;\r\n        });\r\n    let result;\r\n\r\n    result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\r\n    result = result.exec(hexReplace);\r\n\r\n    return result\r\n        ? [\r\n            parseFloat(result[1], 16),\r\n            parseFloat(result[2], 16),\r\n            parseFloat(result[3], 16)\r\n        ]\r\n        : null;\r\n}\r\n\r\n/**\r\n * Converts number to hex string.\r\n * @param {Number} c Color value as number.\r\n * @returns {String} - Converted color number as hex string.\r\n */\r\nexport function componentToHex (c) {\r\n    const hex = Number(c).toString(16);\r\n\r\n    return hex.length === 1 ? \"0\" + hex : hex;\r\n}\r\n/**\r\n * Converts rgb to hex.\r\n * @param {Number} r Red value.\r\n * @param {Number} g Green Value.\r\n * @param {Number} b Blue value.\r\n * @returns {String} - Hex color string.\r\n */\r\nexport function rgbToHex (r, g, b) {\r\n    return \"#\" + componentToHex(r) + componentToHex(g) + componentToHex(b);\r\n}\r\n/**\r\n * Returns input color to destinated color.\r\n * possible values for dest are \"rgb\" and \"hex\".\r\n * color has to come as hex (e.g. \"#ffffff\" || \"#fff\") or as array (e.g [255,255,255,0]) or as String (\"[255,255,255,0]\")\r\n * @param {Number[]|String} color The color to return.\r\n * @param {String} dest Destination color type.\r\n * @returns {String|Number[]} - The converted color.\r\n */\r\nexport function returnColor (color, dest) {\r\n    let src,\r\n        newColor = color,\r\n        pArray = [];\r\n\r\n    if (Array.isArray(newColor)) {\r\n        src = \"rgb\";\r\n    }\r\n    else if (typeof newColor === \"string\" && newColor.indexOf(\"#\") === 0) {\r\n        src = \"hex\";\r\n    }\r\n    else if (typeof newColor === \"string\" && newColor.indexOf(\"#\") === -1) {\r\n        src = \"rgb\";\r\n\r\n        pArray = newColor\r\n            .replace(\"[\", \"\")\r\n            .replace(\"]\", \"\")\r\n            .replace(/ /g, \"\")\r\n            .split(\",\");\r\n        newColor = [pArray[0], pArray[1], pArray[2], pArray[3]];\r\n    }\r\n\r\n    if (src === \"hex\" && dest === \"rgb\") {\r\n        newColor = hexToRgb(newColor);\r\n    }\r\n    else if (src === \"rgb\" && dest === \"hex\") {\r\n        newColor = rgbToHex(newColor[0], newColor[1], newColor[2]);\r\n    }\r\n    else if (src === \"rgb\" && dest === \"rgba\") {\r\n        newColor = \"rgba(\" + newColor[0] + \", \" + newColor[1] + \", \" + newColor[2] + \", \" + newColor[3] + \")\";\r\n    }\r\n\r\n    newColor = dest === \"rgb\" ? normalizeRgbColor(newColor) : newColor;\r\n\r\n    return newColor;\r\n}\r\n","import WebGLPointsLayer from \"ol/layer/WebGLVector\";\r\nimport WebGLVectorLayerRenderer from \"ol/renderer/webgl/VectorLayer\";\r\nimport WebGLVectorTileLayerRenderer from \"ol/renderer/webgl/VectorTileLayer.js\";\r\nimport VectorTile from \"ol/layer/VectorTile.js\";\r\nimport VectorLayer from \"ol/layer/Layer\";\r\nimport styleList from \"../vectorStyle/styleList\";\r\nimport {getRulesForFeature} from \"../vectorStyle/lib/getRuleForIndex\";\r\nimport {returnColor} from \"../vectorStyle/lib/colorConvertions\";\r\nimport {asArray} from \"ol/color.js\";\r\nimport {packColor, parseLiteralStyle} from \"ol/webgl/styleparser.js\";\r\n\r\n/**\r\n * The default style for OpenLayers WebGLPoints class\r\n * @see https://openlayers.org/en/latest/examples/webgl-points-layer.html\r\n * @private\r\n */\r\nconst defaultPointStyle = {\r\n        \"circle-radius\": 10,\r\n        \"circle-fill-color\": \"#006688\",\r\n        \"circle-rotate-with-view\": false,\r\n        \"circle-displacement\": [0, 0],\r\n        \"circle-opacity\": 0.6\r\n    },\r\n\r\n    defaultPolygonStyle = {\r\n        fillColor: \"#006688\",\r\n        strokeColor: \"#006688\",\r\n        strokeWidth: 1,\r\n        opacity: 1\r\n    },\r\n\r\n    /** @type {import('ol/style/literal.js').LiteralStyle} */\r\n    style = Object.assign({\r\n        \"stroke-color\": [\"get\", \"strokeColor\"],\r\n        \"stroke-width\": [\"get\", \"strokeWidth\", \"number\"],\r\n        \"fill-color\": [\"get\", \"fillColor\"],\r\n        \"opacity\": [\"get\", \"opacity\", \"number\"],\r\n        \"size\": [\"get\", \"circleSize\", \"number\"]\r\n    }, defaultPointStyle);\r\n\r\n/**\r\n *  Creates a vector layer with custom renderer.\r\n * @augments VectorLayer\r\n * @private\r\n * @implements {WebGLVectorLayerRenderer}\r\n * @returns {module:ol/layer/VectorLayer} the LocalWebGLLayer with a custom renderer for WebGL styling\r\n */\r\nexport function createVectorLayerRenderer () {\r\n    /**\r\n     * @class LocalWebGLLayer\r\n     * @see https://openlayers.org/en/latest/examples/webgl-vector-layer.html\r\n     * @description the temporary class with a custom renderer to render the vector data with WebGL\r\n     */\r\n    class LocalWebGLLayer extends VectorLayer {\r\n        /**\r\n         * Creates a new renderer that takes the defined style of the new layer as an input.\r\n         * @returns {module:ol/renderer/webgl/WebGLVectorLayerRenderer} the custom renderer\r\n         * @experimental\r\n         */\r\n        createRenderer () {\r\n            return new WebGLVectorLayerRenderer(this, {\r\n                style\r\n            });\r\n        }\r\n    }\r\n\r\n    return LocalWebGLLayer;\r\n}\r\n\r\n/**\r\n * Creates a vector tile layer with custom renderer.\r\n * @augments VectorTile\r\n * @private\r\n * @implements {WebGLVectorTileLayerRenderer}\r\n * @returns {module:ol/layer/VectorTile} the LocalWebGLLayer with a custom renderer for WebGL styling of vectorTile layers.\r\n */\r\nexport function createVectorTileLayerRenderer () {\r\n    /**\r\n     * @class LocalWebGLLayer\r\n     * @see https://openlayers.org/en/latest/examples/webgl-vector-tiles.html\r\n     * @description the temporary class with a custom renderer to render the vectortiles with WebGL\r\n     */\r\n    class LocalWebGLLayer extends VectorTile {\r\n\r\n        /**\r\n         * Creates a new renderer that takes the defined style of the new layer as an input.\r\n         * @returns {module:ol/renderer/webgl/WebGLVectorTileLayerRenderer} the custom renderer\r\n         * @experimental\r\n         */\r\n        createRenderer () {\r\n            const result = parseLiteralStyle(style),\r\n                invisible = [255, 255, 255, 0],\r\n                grey = [119, 119, 119, 1];\r\n\r\n\r\n            return new WebGLVectorTileLayerRenderer(this, {\r\n                style: {\r\n                    fill: {\r\n                        fragment: result.builder.getFillFragmentShader(),\r\n                        vertex: result.builder.getFillVertexShader()\r\n                    },\r\n                    stroke: {\r\n                        fragment: result.builder.getStrokeFragmentShader(),\r\n                        vertex: result.builder.getStrokeVertexShader()\r\n                    },\r\n                    symbol: {\r\n                        fragment: result.builder.getSymbolFragmentShader(),\r\n                        vertex: result.builder.getSymbolVertexShader()\r\n                    },\r\n                    builder: result.builder,\r\n                    attributes: {\r\n                        fillColor: {\r\n                            size: 2,\r\n                            callback: (feature) => {\r\n                                const featureStyle = this.getStyle()(feature, 1);\r\n\r\n                                if (featureStyle && featureStyle[0]) {\r\n                                    const color = featureStyle[0]?.getFill()?.getColor();\r\n\r\n                                    return packColor(color && typeof color === \"string\" ? asArray(color) : invisible);\r\n                                }\r\n                                return packColor(grey);\r\n                            }\r\n                        },\r\n                        strokeColor: {\r\n                            size: 2,\r\n                            callback: (feature) => {\r\n                                const featureStyle = this.getStyle()(feature, 1);\r\n\r\n                                if (featureStyle && featureStyle[0]) {\r\n                                    const color = featureStyle[0]?.getStroke()?.getColor();\r\n\r\n                                    return packColor(color ? asArray(color) : invisible);\r\n                                }\r\n                                return packColor(grey);\r\n                            }\r\n                        },\r\n                        strokeWidth: {\r\n                            size: 1,\r\n                            callback: (feature) => {\r\n                                const featureStyle = this.getStyle()(feature, 1);\r\n\r\n                                if (featureStyle && featureStyle[0]) {\r\n                                    const width = featureStyle[0]?.getStroke()?.getWidth();\r\n\r\n                                    if (width !== undefined) {\r\n                                        return width > 10 ? width / 10 : 1;/** @todo needs refactoring in later versions  */\r\n                                    }\r\n                                }\r\n                                return 1;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    return LocalWebGLLayer;\r\n}\r\n\r\n/**\r\n * Parses the vectorStyle from style.json to the feature\r\n * to reduce processing on runtime.\r\n * Sets properties with style at feature to use by literalSytle of renderer of VectorLayer.\r\n * @private\r\n * @param {module:ol/Feature} feature - the feature to check\r\n * @param {module:Backbone/Model} [styleObject] - (optional) the style model from StyleList\r\n * @returns {void}\r\n */\r\nexport function formatFeatureStyles (feature, styleObject) {\r\n    let rule;\r\n\r\n    if (styleObject) {\r\n        // extract first matching rule only\r\n        rule = getRulesForFeature(styleObject, feature)[0];\r\n    }\r\n\r\n    if (rule?.style) {\r\n        feature.styleRule = rule;\r\n\r\n        const polygonFillColor = returnColor(rule.style.polygonFillColor, \"rgba\"),\r\n            circleFillColor = returnColor(rule.style.circleFillColor, \"hex\"),\r\n\r\n            fillColor = polygonFillColor ? polygonFillColor : circleFillColor,\r\n            strokeColor = returnColor(rule.style.polygonStrokeColor || rule.style.lineStrokeColor, \"hex\"),\r\n            strokeWidth = rule.style.polygonStrokeWidth || rule.style.lineStrokeWidth,\r\n            size = rule.style.circleRadius;\r\n\r\n        feature.set(\"fillColor\", fillColor || defaultPolygonStyle.fillColor);\r\n        feature.set(\"strokeColor\", strokeColor || defaultPolygonStyle.strokeColor);\r\n        feature.set(\"strokeWidth\", strokeWidth || defaultPolygonStyle.strokeWidth);\r\n        feature.set(\"opacity\", fillColor ? (rule.style.polygonFillColor || rule.style.circleFillColor)[3] : defaultPolygonStyle.opacity);\r\n        feature.set(\"circleSize\", size || defaultPointStyle[\"circle-radius\"] * 2);\r\n    }\r\n    else {\r\n        feature.set(\"fillColor\", defaultPolygonStyle.fillColor);\r\n        feature.set(\"strokeColor\", defaultPolygonStyle.strokeColor);\r\n        feature.set(\"strokeWidth\", defaultPolygonStyle.strokeWidth);\r\n        feature.set(\"opacity\", defaultPolygonStyle.opacity);\r\n        feature.set(\"circleSize\", defaultPointStyle[\"circle-radius\"] * 2);\r\n    }\r\n}\r\n\r\n/**\r\n * Layouts the geometry coordinates, removes the Z component\r\n * @deprecated Will be probably removed in release version\r\n * @private\r\n * @param {module:ol/Feature} feature - the feature to format\r\n * @returns {void}\r\n */\r\nexport function formatFeatureGeometry (feature) {\r\n    feature.getGeometry()?.setCoordinates?.(feature.getGeometry().getCoordinates(), \"XY\");\r\n}\r\n\r\n/**\r\n * Cleans the data by automatically parsing data provided as strings to the accurate data type\r\n * @todo Extend to Date types\r\n * @private\r\n * @param {module:ol/Feature} feature - the feature to format\r\n * @param {String[]} [excludeTypes=[\"boolean\"]] - types that should not be parsed from strings\r\n * @returns {void}\r\n */\r\nexport function formatFeatureData (feature, excludeTypes = [\"boolean\"]) {\r\n    for (const key in feature.getProperties()) {\r\n        const\r\n            valueAsNumber = parseFloat(feature.get(key)),\r\n            valueIsTrue = typeof feature.get(key) === \"string\" && feature.get(key).toLowerCase() === \"true\" ? true : undefined,\r\n            valueIsFalse = typeof feature.get(key) === \"string\" && feature.get(key).toLowerCase() === \"false\" ? false : undefined;\r\n\r\n        if (!isNaN(parseFloat(feature.get(key))) && !excludeTypes?.includes(\"number\")) {\r\n            feature.set(key, valueAsNumber);\r\n        }\r\n        if (valueIsTrue === true && !excludeTypes.includes(\"boolean\")) {\r\n            feature.set(key, valueIsTrue);\r\n        }\r\n        if (valueIsFalse === false && !excludeTypes.includes(\"boolean\")) {\r\n            feature.set(key, valueIsFalse);\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * feature transformations called after loading - but not for layer of typ VectortTile\r\n * called by the layer source loader, binds the instance of the layer model\r\n * should be called on each source refresh\r\n * @param {module:ol/Feature[]} features - the features loaded by the layer\r\n * @param {String} styleId - The layer's styleId\r\n * @param {String[]} excludeTypesFromParsing - types that should not be parsed from strings, only necessary for webgl\r\n * @param {Boolean} isPointLayer - whether the layer source should consist only of points (or multi points)\r\n * @returns {void}\r\n */\r\nexport function afterLoading (features, styleId, excludeTypesFromParsing, isPointLayer) {\r\n    const styleObject = styleList.returnStyleObject(styleId); // load styleModel to extract rules per feature\r\n\r\n    if (Array.isArray(features)) {\r\n        features.forEach(feature => {\r\n            /**\r\n             * extract first point from Multipoint\r\n             * @deprecated will probably not be necessary anymore in release version\r\n             * @example An example for that behavior can be found when rendering \"Strassenbaumkataster\"\r\n             */\r\n            if (isPointLayer && feature.getGeometry().getType() === \"MultiPoint\") {\r\n                feature.setGeometry(feature.getGeometry().getPoint(0)); // other points in the multi point will be ignored for now\r\n            }\r\n            formatFeatureGeometry(feature); /** @deprecated will propbably not be necessary anymore in release version */\r\n            formatFeatureStyles(feature, styleObject); /** @todo needs refactoring in release version  */\r\n            formatFeatureData(feature, excludeTypesFromParsing); /** Necessary since the WebGLPoints Style Syntax depends on data types (i.e. numbers not as strings) */\r\n        });\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Creates the OL Layer instance, used to rebuild the layer when shown again after layer has been disposed\r\n * @param {Object} attrs - the attributes of the layer\r\n * @public\r\n * @returns {VectorLayer | WebGLPointsLayer} returns the layer instance\r\n */\r\nexport function createLayer (attrs) {\r\n    let LayerConstructor = WebGLPointsLayer;\r\n    const options = {\r\n        id: attrs.id,\r\n        source: attrs.source,\r\n        disableHitDetection: false,\r\n        name: attrs.name,\r\n        typ: attrs.typ,\r\n        gfiAttributes: attrs.gfiAttributes,\r\n        gfiTheme: attrs.gfiTheme,\r\n        hitTolerance: attrs.hitTolerance || 10,\r\n        opacity: attrs.transparency ? (100 - attrs.transparency) / 100 : attrs.opacity,\r\n        renderer: \"webgl\",\r\n        styleId: attrs.styleId,\r\n        excludeTypesFromParsing: attrs.excludeTypesFromParsing,\r\n        extent: attrs.extent\r\n    };\r\n\r\n    /**\r\n     * If the layer consists only of points, use WebGLPointsLayer\r\n     * For advanced styling options\r\n     * @see https://openlayers.org/en/latest/examples/webgl-points-layer.html\r\n     */\r\n    if (attrs.isPointLayer) {\r\n        /**\r\n         * @deprecated\r\n         * @todo will be replaced in the next OL release and incorporated in the WebGLVectorLayerRenderer\r\n         */\r\n        return new LayerConstructor({\r\n            style: attrs.style || defaultPointStyle,\r\n            disableHitDetection: false,\r\n            ...options,\r\n            isPointLayer: true\r\n        });\r\n    }\r\n\r\n    if (attrs.typ === \"VectorTile\") {\r\n\r\n        /**\r\n         * use ol/renderer/webgl/WebGLVectorLayerRenderer if not point layer\r\n         * Point styling as quads only\r\n         */\r\n        LayerConstructor = createVectorTileLayerRenderer(attrs);\r\n    }\r\n    else {\r\n\r\n        /**\r\n         * use ol/renderer/webgl/WebGLVectorLayerRenderer if not point layer\r\n         * Point styling as quads only\r\n         */\r\n        LayerConstructor = createVectorLayerRenderer(attrs);\r\n    }\r\n    return new LayerConstructor({\r\n        ...options,\r\n        isPointLayer: false\r\n    });\r\n}\r\n\r\nexport default {\r\n    afterLoading,\r\n    createLayer,\r\n    createVectorLayerRenderer,\r\n    formatFeatureData,\r\n    formatFeatureGeometry,\r\n    formatFeatureStyles\r\n};\r\n","/**\n * @module ol/source/Cluster\n */\n\nimport Feature from '../Feature.js';\nimport {assert} from '../asserts.js';\nimport {add as addCoordinate, scale as scaleCoordinate} from '../coordinate.js';\nimport EventType from '../events/EventType.js';\nimport {\n  buffer,\n  createEmpty,\n  createOrUpdateFromCoordinate,\n  getCenter,\n} from '../extent.js';\nimport Point from '../geom/Point.js';\nimport {getUid} from '../util.js';\nimport VectorSource from './Vector.js';\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").FeatureLike]\n * @typedef {(feature: FeatureType) => (Point|null)} GeometryFunction\n */\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {number} [distance=20] Distance in pixels within which features will\n * be clustered together.\n * @property {number} [minDistance=0] Minimum distance in pixels between clusters.\n * Will be capped at the configured distance.\n * By default no minimum distance is guaranteed. This config can be used to avoid\n * overlapping icons. As a tradoff, the cluster feature's position will no longer be\n * the center of all its features.\n * @property {GeometryFunction<FeatureType>} [geometryFunction]\n * Function that takes a {@link module:ol/Feature~Feature} as argument and returns a\n * {@link module:ol/geom/Point~Point} as cluster calculation point for the feature. When a\n * feature should not be considered for clustering, the function should return\n * `null`. The default, which works when the underlying source contains point\n * features only, is\n * ```js\n * function(feature) {\n *   return feature.getGeometry();\n * }\n * ```\n * See {@link module:ol/geom/Polygon~Polygon#getInteriorPoint} for a way to get a cluster\n * calculation point for polygons.\n * @property {function(Point, Array<FeatureType>):Feature} [createCluster]\n * Function that takes the cluster's center {@link module:ol/geom/Point~Point} and an array\n * of {@link module:ol/Feature~Feature} included in this cluster. Must return a\n * {@link module:ol/Feature~Feature} that will be used to render. Default implementation is:\n * ```js\n * function(point, features) {\n *   return new Feature({\n *     geometry: point,\n *     features: features\n *   });\n * }\n * ```\n * @property {VectorSource<FeatureType>} [source=null] Source.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n */\n\n/**\n * @classdesc\n * Layer source to cluster vector data. Works out of the box with point\n * geometries. For other geometry types, or if not all geometries should be\n * considered for clustering, a custom `geometryFunction` can be defined.\n *\n * If the instance is disposed without also disposing the underlying\n * source `setSource(null)` has to be called to remove the listener reference\n * from the wrapped source.\n * @api\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import('../Feature.js').default]\n * @extends {VectorSource<Feature<import(\"../geom/Geometry.js\").default>>}\n */\nclass Cluster extends VectorSource {\n  /**\n   * @param {Options<FeatureType>} [options] Cluster options.\n   */\n  constructor(options) {\n    options = options || {};\n    super({\n      attributions: options.attributions,\n      wrapX: options.wrapX,\n    });\n\n    /**\n     * @type {number|undefined}\n     * @protected\n     */\n    this.resolution = undefined;\n\n    /**\n     * @type {number}\n     * @protected\n     */\n    this.distance = options.distance !== undefined ? options.distance : 20;\n\n    /**\n     * @type {number}\n     * @protected\n     */\n    this.minDistance = options.minDistance || 0;\n\n    /**\n     * @type {number}\n     * @protected\n     */\n    this.interpolationRatio = 0;\n\n    /**\n     * @type {Array<Feature>}\n     * @protected\n     */\n    this.features = [];\n\n    /**\n     * @type {GeometryFunction<import(\"../Feature.js\").FeatureLike>}\n     * @protected\n     */\n    this.geometryFunction =\n      options.geometryFunction ||\n      function (feature) {\n        const geometry = /** @type {Point} */ (feature.getGeometry());\n        assert(\n          !geometry || geometry.getType() === 'Point',\n          'The default `geometryFunction` can only handle `Point` or null geometries',\n        );\n        return geometry;\n      };\n\n    /**\n     * @type {function(Point, Array<FeatureType>):Feature}\n     * @private\n     */\n    this.createCustomCluster_ = options.createCluster;\n\n    /**\n     * @type {VectorSource<FeatureType>|null}\n     * @protected\n     */\n    this.source = null;\n\n    /**\n     * @private\n     */\n    this.boundRefresh_ = this.refresh.bind(this);\n\n    this.updateDistance(this.distance, this.minDistance);\n    this.setSource(options.source || null);\n  }\n\n  /**\n   * Remove all features from the source.\n   * @param {boolean} [fast] Skip dispatching of {@link module:ol/source/VectorEventType~VectorEventType#removefeature} events.\n   * @api\n   * @override\n   */\n  clear(fast) {\n    this.features.length = 0;\n    super.clear(fast);\n  }\n\n  /**\n   * Get the distance in pixels between clusters.\n   * @return {number} Distance.\n   * @api\n   */\n  getDistance() {\n    return this.distance;\n  }\n\n  /**\n   * Get a reference to the wrapped source.\n   * @return {VectorSource<FeatureType>|null} Source.\n   * @api\n   */\n  getSource() {\n    return this.source;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @override\n   */\n  loadFeatures(extent, resolution, projection) {\n    this.source?.loadFeatures(extent, resolution, projection);\n    if (resolution !== this.resolution) {\n      this.resolution = resolution;\n      this.refresh();\n    }\n  }\n\n  /**\n   * Set the distance within which features will be clusterd together.\n   * @param {number} distance The distance in pixels.\n   * @api\n   */\n  setDistance(distance) {\n    this.updateDistance(distance, this.minDistance);\n  }\n\n  /**\n   * Set the minimum distance between clusters. Will be capped at the\n   * configured distance.\n   * @param {number} minDistance The minimum distance in pixels.\n   * @api\n   */\n  setMinDistance(minDistance) {\n    this.updateDistance(this.distance, minDistance);\n  }\n\n  /**\n   * The configured minimum distance between clusters.\n   * @return {number} The minimum distance in pixels.\n   * @api\n   */\n  getMinDistance() {\n    return this.minDistance;\n  }\n\n  /**\n   * Replace the wrapped source.\n   * @param {VectorSource<FeatureType>|null} source The new source for this instance.\n   * @api\n   */\n  setSource(source) {\n    if (this.source) {\n      this.source.removeEventListener(EventType.CHANGE, this.boundRefresh_);\n    }\n    this.source = source;\n    if (source) {\n      source.addEventListener(EventType.CHANGE, this.boundRefresh_);\n    }\n    this.refresh();\n  }\n\n  /**\n   * Handle the source changing.\n   * @override\n   */\n  refresh() {\n    this.clear();\n    this.cluster();\n    this.addFeatures(this.features);\n  }\n\n  /**\n   * Update the distances and refresh the source if necessary.\n   * @param {number} distance The new distance.\n   * @param {number} minDistance The new minimum distance.\n   */\n  updateDistance(distance, minDistance) {\n    const ratio =\n      distance === 0 ? 0 : Math.min(minDistance, distance) / distance;\n    const changed =\n      distance !== this.distance || this.interpolationRatio !== ratio;\n    this.distance = distance;\n    this.minDistance = minDistance;\n    this.interpolationRatio = ratio;\n    if (changed) {\n      this.refresh();\n    }\n  }\n\n  /**\n   * @protected\n   */\n  cluster() {\n    if (this.resolution === undefined || !this.source) {\n      return;\n    }\n    const extent = createEmpty();\n    const mapDistance = this.distance * this.resolution;\n    const features = this.source.getFeatures();\n\n    /** @type {Object<string, true>} */\n    const clustered = {};\n\n    for (let i = 0, ii = features.length; i < ii; i++) {\n      const feature = features[i];\n      if (!(getUid(feature) in clustered)) {\n        const geometry = this.geometryFunction(feature);\n        if (geometry) {\n          const coordinates = geometry.getCoordinates();\n          createOrUpdateFromCoordinate(coordinates, extent);\n          buffer(extent, mapDistance, extent);\n\n          const neighbors = this.source\n            .getFeaturesInExtent(extent)\n            .filter(function (neighbor) {\n              const uid = getUid(neighbor);\n              if (uid in clustered) {\n                return false;\n              }\n              clustered[uid] = true;\n              return true;\n            });\n          this.features.push(this.createCluster(neighbors, extent));\n        }\n      }\n    }\n  }\n\n  /**\n   * @param {Array<FeatureType>} features Features\n   * @param {import(\"../extent.js\").Extent} extent The searched extent for these features.\n   * @return {Feature} The cluster feature.\n   * @protected\n   */\n  createCluster(features, extent) {\n    const centroid = [0, 0];\n    for (let i = features.length - 1; i >= 0; --i) {\n      const geometry = this.geometryFunction(features[i]);\n      if (geometry) {\n        addCoordinate(centroid, geometry.getCoordinates());\n      } else {\n        features.splice(i, 1);\n      }\n    }\n    scaleCoordinate(centroid, 1 / features.length);\n    const searchCenter = getCenter(extent);\n    const ratio = this.interpolationRatio;\n    const geometry = new Point([\n      centroid[0] * (1 - ratio) + searchCenter[0] * ratio,\n      centroid[1] * (1 - ratio) + searchCenter[1] * ratio,\n    ]);\n    if (this.createCustomCluster_) {\n      return this.createCustomCluster_(geometry, features);\n    }\n    return new Feature({\n      geometry,\n      features,\n    });\n  }\n}\n\nexport default Cluster;\n","import VectorSource from \"ol/source/Vector.js\";\r\nimport Cluster from \"ol/source/Cluster.js\";\r\n\r\n/**\r\n * Creates a VectorSource.\r\n * @param {function|string} urlOrLoader loader-function to load the features or an url to load them\r\n * @param {module:ol.source.Vector~LoadingStrategy} strategy The loading strategy to use.\r\n * @param {module:ol.Format} format to parse the response with\r\n * @returns {(module:ol.source.VectorSource|module:ol.source.Cluster)} the VectorSource\r\n */\r\nexport function createVectorSource (urlOrLoader, strategy, format) {\r\n    let loader,\r\n        url,\r\n        features;\r\n\r\n    if (typeof urlOrLoader === \"string\") {\r\n        url = urlOrLoader;\r\n    }\r\n    else if (typeof urlOrLoader === \"function\") {\r\n        loader = urlOrLoader;\r\n    }\r\n    else if (typeof urlOrLoader === \"object\") {\r\n        features = format.readFeatures(urlOrLoader, {\r\n            dataProjection: \"EPSG:4326\",\r\n            featureProjection: \"EPSG:25832\"\r\n        });\r\n    }\r\n    return new VectorSource({\r\n        loader,\r\n        features,\r\n        url,\r\n        strategy,\r\n        format\r\n    });\r\n}\r\n/**\r\n * Creates a Cluster.\r\n * @param {module:ol.source.VectorSource} source the source of the layer\r\n * @param {number} distance - Pixel radius, within this radius, all features are \"clustered\" into one feature. If available, a cluster source is created.\r\n * @param {function | undefined} geometryFunction - returns the geometry of the cluster, gets parameter feature. When a feature should not be considered for clustering, the function should return null.\r\n * @returns {module:ol.source.Cluster} the Cluster\r\n */\r\nexport function createClusterVectorSource (source, distance, geometryFunction) {\r\n    return new Cluster({\r\n        source,\r\n        distance,\r\n        geometryFunction});\r\n}\r\n","\r\n/**\r\n * Checks the version of the wfs against allowed versions and returns the version.\r\n * If the version is not allowed, 1.1.0 is returned.\r\n * @param {rawLayer} rawLayer layer specification as in services.json\r\n * @param {options} [options] additional options\r\n * @returns {String} The allowed version.\r\n */\r\nfunction getVersion (rawLayer, options) {\r\n    const allowedVersions = [\"1.0.0\", \"1.1.0\", \"2.0.0\"];\r\n    let version = options.version || rawLayer.version;\r\n\r\n    if (!allowedVersions.includes(version)) {\r\n        version = allowedVersions[1];\r\n        console.warn(`The \"${rawLayer.typ}\" layer with the id: \"${rawLayer.id}\" is configured in version: ${version}.`\r\n            + ` OpenLayers accepts \"${rawLayer.typ}\" only in the versions: ${allowedVersions},`\r\n            + ` It tries to load the layer with the id: \"${rawLayer.id}\" in version ${allowedVersions[1]}!`);\r\n    }\r\n\r\n    return version;\r\n}\r\n\r\n/**\r\n * Logs and throws an Error.\r\n * @param {string} error error message\r\n * @param {object} [options] additional options\r\n * @param {function} [options.onLoadingError] additional option, called with param error\r\n * @param {function} failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n * {@link https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html failure: see}\r\n * @returns {void}\r\n */\r\nfunction onError (error, options = {}, failure) {\r\n    if (options.onLoadingError) {\r\n        options.onLoadingError(error);\r\n    }\r\n    failure(error);\r\n    throw Error(error);\r\n}\r\n\r\n/**\r\n * Called after features are loaded. Calls options.featuresFilter, success-callback and options.afterLoading.\r\n * Features are added to source.\r\n * @param {ol.source.VectorSource} source the vector source\r\n * @param {Array.<module:ol/Feature~Feature>} features loaded features\r\n * @param {function} onErrorFn  Calls options.onLoadingError and 'featuresloaderror' event will be fired by using failure callback.\r\n * @param {function} success  callback: 'featuresloadend' event will be fired\r\n * @param {function} failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n * @param {options} [options] additional options\r\n * @returns {void}\r\n */\r\nfunction onLoad (source, features, onErrorFn, success, failure, options = {}) {\r\n    let filteredFeatures = features;\r\n\r\n    try {\r\n        if (options.featuresFilter) {\r\n            filteredFeatures = options.featuresFilter(features);\r\n        }\r\n        source.addFeatures(filteredFeatures);\r\n        if (options.afterLoading) {\r\n            options.afterLoading(filteredFeatures);\r\n        }\r\n        // success: see https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html\r\n        success(filteredFeatures);\r\n    }\r\n    catch (error) {\r\n        console.error(error);\r\n        onErrorFn(error, options, failure);\r\n    }\r\n}\r\n\r\nexport {\r\n    getVersion,\r\n    onError,\r\n    onLoad\r\n};\r\n","import VectorLayer from \"ol/layer/Vector.js\";\r\nimport {bbox} from \"ol/loadingstrategy.js\";\r\nimport {WFS} from \"ol/format.js\";\r\nimport * as webgl from \"../renderer/webgl\";\r\n\r\nimport {createVectorSource, createClusterVectorSource} from \"./vector\";\r\nimport {getVersion, onError, onLoad} from \"../lib/wfsUtil\";\r\n\r\n/**\r\n * Layer specification as in services.json.\r\n * @typedef {Object} rawLayer\r\n * @property {string} id - id of the layer\r\n * @property {string} url - url to load features from\r\n * @property {string} featureType - type of features\r\n * @property {string} featureNS - the namespace URI used for features\r\n * @property {number} clusterDistance - pixel radius, within this radius, all features are \"clustered\" into one feature - if available, a cluster source is created.\r\n * @property {function} style - style function to style the layer if options.style is not set\r\n * @property {string} [renderer] - use default canvas or webgl renderer\r\n * @property {string} [styleId] - the styleId of the layer\r\n * @property {string[]} [excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl\r\n */\r\n\r\n/**\r\n * Additional options used to create and load the layer source.\r\n * @typedef {Object} options\r\n * @property {module:ol.source.Vector~LoadingStrategy} loadingStrategy - the loading strategy to use, if not set 'bbox' is used\r\n * @property {string} version - version of WFS requests. If not set, '1.1.0' is used.\r\n * @property {function} onLoadingError - function called on loading error, gets parameter error\r\n * @property {function} beforeLoading - function called before loading\r\n * @property {function} afterLoading - function called after loading, gets parameter features\r\n * @property {function} featuresFilter - function called after loading to filter features, gets parameter features\r\n * @property {function} wfsFilter -  xml resource as wfs filter, the content of the filter file will be sent to the wfs server as POST request\r\n * @property {function} doNotLoadInitially - default false, if set to true the layer will be initialized without network call, an empty array of features is promoted - this is useful to add features later on (e.g. by filtering) to a full functional but initially empty layer\r\n * @property {function} clusterGeometryFunction -  used in cluster source. Returns the geometry of the cluster, gets parameter feature\r\n * @property {function} style - style function to style the layer\r\n * @property {object} loadingParams - added as params to url\r\n */\r\n\r\n/**\r\n  * @param {object} response of the request\r\n  * @param {function} onErrorFn Calls options.onLoadingError and 'featuresloaderror' event will be fired by using failure callback.\r\n  * @param {options} [options] additional options\r\n  * @param {function} failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n  * @returns {function | object} Returns the 'onError' function if response is not ok, otherwise the response object.\r\n  */\r\nfunction handleErrors (response, onErrorFn, options, failure) {\r\n    if (!response.ok) {\r\n        return onErrorFn(`Request to wfs-filter failed. Response status is ${response.status}`, options, failure);\r\n    }\r\n    return response;\r\n}\r\n\r\n/**\r\n * Returns the parameters for the wfs filter request.\r\n * @param {object} payload to set as body\r\n * @returns {object} the parameters for the wfs filter request\r\n */\r\nfunction getFilterRequestParams (payload) {\r\n    return {\r\n        method: \"POST\",\r\n        headers: {\r\n            \"Content-Type\": \"text/xml\"\r\n        },\r\n        body: payload\r\n    };\r\n}\r\n/**\r\n * Loads the WFS.\r\n * Filters the features after load, if options.featuresFilter is given.\r\n * Adds the features to the source.\r\n * Errors are thrown through onErrorFn or if a network issue occurs.\r\n *\r\n * @param {string} url url to load features from\r\n * @param {object} params extra loading parameters\r\n * @param {ol.source.VectorSource} source the vector source\r\n * @param {object} errorAndSuccessFns functions to handle error and success\r\n * @param {function} errorAndSuccessFns.onErrorFn  Calls options.onLoadingError and 'featuresloaderror' event will be fired by using failure callback.\r\n * @param {function} errorAndSuccessFns.success  callback: 'featuresloadend' event will be fired\r\n * @param {function} errorAndSuccessFns.failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n * @param {options} [options] optional additional options\r\n * @returns {void}\r\n */\r\nfunction loadWFS (url, params, source, {onErrorFn, success, failure}, options) {\r\n    fetch(url, params)\r\n        .then((response) => handleErrors(response, onErrorFn, options, failure))\r\n        .then((response) => response.text())\r\n        .then(responseString => source.getFormat().readFeatures(responseString))\r\n        .then(features => onLoad(source, features, onErrorFn, success, failure, options))\r\n        .catch((error) => {\r\n            console.error(error);\r\n        });\r\n}\r\n/**\r\n * Loads the WFS filter. The content of the filter file will be sent to the wfs server as POST request.\r\n * Filters the features after load, if options.featuresFilter is given.\r\n * Adds the features to the source.\r\n * Errors are thrown through onErrorFn or if a network issue occurs.\r\n *\r\n * @param {string} filter xml resource as wfs filter\r\n * @param {string} url url to load features from\r\n * @param {ol.source.VectorSource} source the vector source\r\n * @param {object} errorAndSuccessFns functions to handle error and success\r\n * @param {function} errorAndSuccessFns.onErrorFn  Calls options.onLoadingError and 'featuresloaderror' event will be fired by using failure callback.\r\n * @param {function} errorAndSuccessFns.success  callback: 'featuresloadend' event will be fired\r\n * @param {function} errorAndSuccessFns.failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n * @param {options} [options] optional additional options\r\n * @returns {void}\r\n */\r\nfunction loadWFSFilter (filter, url, source, {onErrorFn, success, failure}, options) {\r\n    fetch(filter)\r\n        .then((response) => handleErrors(response, onErrorFn, options, failure))\r\n        .then((response) => response.text())\r\n        .then((payload) => loadWFS(url, getFilterRequestParams(payload), source, {onErrorFn, success, failure}, options))\r\n        .catch((error) => {\r\n            console.error(error);\r\n        });\r\n}\r\n\r\n/**\r\n * Creates the url for request wfs.\r\n * A distinction is made between the wfs versions.\r\n * @param {rawLayer} rawLayer layer specification as in services.json\r\n * @param {String} version version of wfs\r\n * @param {String} projection projection of wfs\r\n * @param {String} bboxParam bbox loading strategy\r\n * @returns {string} the url\r\n */\r\nfunction createUrl (rawLayer, version, projection, bboxParam) {\r\n    const url = new URL(rawLayer.url);\r\n\r\n    url.searchParams.set(\"service\", \"WFS\");\r\n    url.searchParams.set(\"version\", version);\r\n    url.searchParams.set(\"request\", \"GetFeature\");\r\n    url.searchParams.set(\"srsName\", projection.getCode());\r\n\r\n    if (version === \"1.0.0\" || version === \"1.1.0\") {\r\n        url.searchParams.set(\"typeName\", rawLayer.featureType);\r\n    }\r\n    else if (version === \"2.0.0\") {\r\n        url.searchParams.set(\"typeNames\", rawLayer.featureType);\r\n    }\r\n\r\n    return `${url.toString()}${bboxParam}`;\r\n}\r\n\r\n/**\r\n * Creates an ol/source element for the rawLayer by using a loader.\r\n * The 'featuresloadend' and 'featuresloaderror' events will be fired by using success and failure callbacks of the loader.\r\n * @param {rawLayer} rawLayer layer specification as in services.json\r\n * @param {\"default\" | \"webgl\" | undefined} [rawLayer.renderer] - use default canvas or webgl renderer\r\n * @param {string} [rawLayer.styleId] - the styleId of the layer, only necessary for webgl style pipeline\r\n * @param {string[]} [rawLayer.excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl\r\n * @param {options} [options] additional options\r\n * {@link https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html failure/success see}\r\n * @returns {(ol.source.VectorSource|ol.source.Cluster)} VectorSource or Cluster, depending on whether clusterDistance is set.\r\n */\r\nfunction createLayerSource (rawLayer, options = {}) {\r\n    if (!options.loadingStrategy) {\r\n        options.loadingStrategy = bbox;\r\n    }\r\n\r\n    const version = getVersion(rawLayer, options),\r\n        format = new WFS({\r\n            featureNS: rawLayer.featureNS,\r\n            version: version\r\n        });\r\n    let source = null;\r\n\r\n    function loader (extent, resolution, projection, success, failure) {\r\n        if (options.doNotLoadInitially) {\r\n            onLoad(source, [], onError, success, failure, options);\r\n        }\r\n        else if (options.wfsFilter) {\r\n            loadWFSFilter(options.wfsFilter, rawLayer.url, source, {onErrorFn: onError, success, failure}, options);\r\n        }\r\n        else {\r\n            const bboxParam = options.loadingStrategy === bbox ? `&bbox=${extent.join(\",\")},${projection.getCode()}` : \"\";\r\n            let url = createUrl(rawLayer, version, projection, bboxParam),\r\n                params = {};\r\n\r\n            if (options.loadingParams) {\r\n                for (const key in options.loadingParams) {\r\n                    if (key === \"xhrParameters\") {\r\n                        params = options.loadingParams.xhrParameters;\r\n                        continue;\r\n                    }\r\n                    const option = Array.isArray(options.loadingParams[key]) ? options.loadingParams[key].join(\",\") : options.loadingParams[key];\r\n\r\n                    if (option !== undefined && key === \"bbox\") {\r\n                        url += `&${key}=${option},${projection.getCode()}`;\r\n                    }\r\n                    else if (option !== undefined) {\r\n                        url += `&${key}=${option}`;\r\n                    }\r\n                }\r\n            }\r\n            loadWFS(url, params, source, {onErrorFn: onError, success, failure}, options);\r\n        }\r\n    }\r\n    format.featureType = rawLayer.featureType;\r\n    source = createVectorSource(loader, options.loadingStrategy, format);\r\n\r\n    if (options.beforeLoading) {\r\n        source.once(\"featuresloadstart\", () => options.beforeLoading());\r\n    }\r\n    if (rawLayer.clusterDistance) {\r\n        return createClusterVectorSource(source, rawLayer.clusterDistance, options.clusterGeometryFunction);\r\n    }\r\n    if (rawLayer.renderer === \"webgl\") {\r\n        if (options.loadingStrategy === bbox) {\r\n            source.on(\"featuresloadend\", event => {\r\n                webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing, rawLayer.isPointLayer);\r\n            });\r\n        }\r\n        else {\r\n            source.once(\"featuresloadend\", event => {\r\n                webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing, rawLayer.isPointLayer);\r\n            });\r\n        }\r\n    }\r\n    return source;\r\n}\r\n\r\n/**\r\n * Creates complete ol/Layer from rawLayer containing all required children.\r\n * @param {rawLayer} rawLayer - layer specification as in services.json\r\n * @param {object} [optionalParams] - optional params\r\n * @param {object} [optionalParams.layerParams] - additional layer params\r\n * @param {options} [optionalParams.options] - additional options\r\n * @returns {ol.Layer} Layer that can be added to map.\r\n */\r\nfunction createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {}) {\r\n    let layer, source;\r\n\r\n    // use WebGL render pipeline, if specified\r\n    if (layerParams.renderer === \"webgl\") {\r\n        source = createLayerSource({\r\n            ...rawLayer,\r\n            renderer: layerParams.renderer,\r\n            styleId: layerParams.styleId,\r\n            excludeTypesFromParsing: layerParams.excludeTypesFromParsing,\r\n            isPointLayer: layerParams.isPointLayer\r\n        }, options);\r\n        layer = webgl.createLayer({\r\n            ...rawLayer,\r\n            ...layerParams,\r\n            source\r\n        });\r\n\r\n        return layer;\r\n    }\r\n\r\n    // use default canvas renderer\r\n    source = createLayerSource(rawLayer, options);\r\n    layer = new VectorLayer(Object.assign({\r\n        source,\r\n        id: rawLayer.id\r\n    }, layerParams));\r\n\r\n    if (options.style) {\r\n        layer.setStyle(options.style);\r\n    }\r\n    else if (rawLayer.style) {\r\n        layer.setStyle(rawLayer.style);\r\n    }\r\n    return layer;\r\n}\r\n\r\n/**\r\n * Writes a wfs transaction including the given feature for given layer\r\n * inserting, updated or deleting the feature depending on the given selectedInteraction.\r\n *\r\n * @param {ol/Feature} feature Feature to be inserted, updated or deleted.\r\n * @param {Object} transactionOptions Information about the layer to be manipulated.\r\n * @param {string} transactionMethod Which transaction to perform. Possible values are: \"insert\"|\"delete\"|\"selectedUpdate\"\r\n * @param {string} srsName EPSG code currently used by the map.\r\n * @returns {string} WFS Transaction as an XML Node as String.\r\n */\r\n\r\nfunction writeTransactionBody (feature, transactionOptions, transactionMethod, version = \"1.1.0\") {\r\n    const transactionPosition = {\r\n            insert: 0,\r\n            selectedUpdate: 1,\r\n            delete: 2\r\n        },\r\n        transaction = [[], [], []];\r\n\r\n    if (transactionMethod !== \"insert\" && transactionMethod !== \"delete\" && transactionMethod !== \"selectedUpdate\") {\r\n        throw new Error(\"transactionMethod has to be \\\"insert\\\", \\\"selectedUpdate\\\" or \\\"delete\\\".\");\r\n    }\r\n\r\n    transaction[transactionPosition[transactionMethod]].push(feature);\r\n    return new XMLSerializer()\r\n        .serializeToString(new WFS({version})\r\n            .writeTransaction(...transaction, transactionOptions));\r\n}\r\n\r\n/**\r\n * Checks if it is an unknown or special error and returns the code and the error message\r\n *\r\n * @param {Object} xmlDocument with the error\r\n * @returns {Object} the code and the specific or unknown error looking like this {code, message}\r\n */\r\nfunction getExceptionFromTransactionResponse (xmlDocument) {\r\n    const response = {code: null, message: \"genericFailedTransaction\"},\r\n        exception = xmlDocument.getElementsByTagName(`${xmlDocument.getElementsByTagName(\"Exception\").length === 0 ? \"ows:\" : \"\"}Exception`)[0],\r\n        exceptionText = exception.getElementsByTagName(`${xmlDocument.getElementsByTagName(\"ExceptionText\").length === 0 ? \"ows:\" : \"\"}ExceptionText`)[0];\r\n\r\n    if (exceptionText !== undefined) {\r\n        response.message = exceptionText.textContent;\r\n        console.error(\"WfsTransaction: An error occurred when sending the transaction to the service.\", exceptionText.textContent);\r\n    }\r\n    else {\r\n        response.message = \"WfsTransaction: An unkown error occurred when sending the transaction to the service.\";\r\n        console.error(response.message);\r\n    }\r\n    if (exception?.attributes.getNamedItem(\"code\") || exception?.attributes.getNamedItem(\"exceptionCode\")) {\r\n        response.code = exception.attributes.getNamedItem(`${exception?.attributes.getNamedItem(\"code\") ? \"c\" : \"exceptionC\"}ode`).textContent;\r\n    }\r\n\r\n    return response;\r\n}\r\n\r\n\r\n/**\r\n * Sends a transaction to the service and returns the feature.\r\n *\r\n * @param {string} srsName of the coordinate reference system\r\n * @param {ol/Feature} feature Feature to by inserted / updated / deleted.\r\n * @param {string} url of the wfs-t service\r\n * @param {Object} layer the configured representation of the layer in the Masterportal\r\n * @param {string} transactionMethod which transaction to perform. Possible values are: \"insert\"|\"delete\"|\"selectedUpdate\"\r\n * @returns {ol/Feature} the given feature\r\n * @throws {Error} error if occurs\r\n */\r\nasync function sendTransaction (srsName, feature, url, layer, transactionMethod) {\r\n    let exception,\r\n        response,\r\n        xmlDocument = null,\r\n        transactionSummary = null,\r\n        data = null;\r\n    const baseUrl = new URL(url),\r\n\r\n        {featureNS, featurePrefix, featureType, version} = layer;\r\n\r\n    try {\r\n        response = await fetch(baseUrl, {\r\n            method: \"POST\",\r\n            headers: {\"Content-Type\": \"text/xml\"},\r\n            credentials: layer.isSecured ? \"include\" : \"omit\",\r\n            body: writeTransactionBody(feature,\r\n                {featureNS, featurePrefix, featureType, version, srsName},\r\n                transactionMethod,\r\n                version),\r\n            responseType: \"text\"\r\n        });\r\n\r\n        data = await response.text();\r\n\r\n        xmlDocument = new DOMParser().parseFromString(data, \"text/xml\");\r\n        transactionSummary = xmlDocument.getElementsByTagName(\"wfs:TransactionSummary\");\r\n        if (transactionSummary.length === 0) {\r\n            transactionSummary = xmlDocument.getElementsByTagName(\"TransactionSummary\");\r\n        }\r\n\r\n        // NOTE: WFS-T services respond errors with the transaction as an XML response, even though it's the http code indicates different...\r\n        if (transactionSummary.length === 0) {\r\n            exception = getExceptionFromTransactionResponse(xmlDocument);\r\n            throw new Error(exception.code ? exception.code + \": \" + exception.message : exception.message);\r\n        }\r\n    }\r\n    catch (e) {\r\n        console.error(e);\r\n        throw e;\r\n    }\r\n\r\n    return feature;\r\n}\r\n\r\n/**\r\n * Parses the response of a DescribeFeatureType request\r\n * and prepares its values for later use as an input value for the user.\r\n *\r\n * @param {string} responseData XML response data\r\n * @param {string} featureType Name of the feature type of the service.\r\n * @returns {Array} If an <element> with a name of the featureType is present, an array of prepared feature properties; else an empty Array.\r\n */\r\nfunction parseDescribeFeatureTypeResponse (responseData, featureType) {\r\n\r\n    const parsedResponse = new DOMParser().parseFromString(responseData, \"application/xml\");\r\n\r\n    let prefix = \"\",\r\n        foundElement = null;\r\n\r\n    if (parsedResponse.getElementsByTagName(\"xsd:element\").length > 0) {\r\n        prefix = \"xsd:\";\r\n    }\r\n    else if (parsedResponse.getElementsByTagName(\"xs:element\").length > 0) {\r\n        prefix = \"xs\";\r\n    }\r\n\r\n    // Check if featureType applies to the response\r\n    foundElement = Object.values(parsedResponse.getElementsByTagName(prefix + \"element\")).find(element => element.getAttribute(\"name\") === featureType);\r\n\r\n    if (foundElement) {\r\n        let sequenceElements;\r\n\r\n        if (foundElement.hasChildNodes()) {\r\n            sequenceElements = Object.values(foundElement.getElementsByTagName(prefix + \"sequence\"));\r\n        }\r\n        else {\r\n            sequenceElements = Object.values(parsedResponse.getElementsByTagName(prefix + \"sequence\"));\r\n        }\r\n\r\n        const elements = [];\r\n\r\n        sequenceElements.forEach(sequenceElement => {\r\n            elements.push(...Object.values(sequenceElement.getElementsByTagName(prefix + \"element\")));\r\n        });\r\n\r\n        return elements.map(el => Object.values(el.attributes).reduce((obj, att) => {\r\n            if (att.localName === \"minOccurs\") {\r\n                obj.required = att.value === \"1\";\r\n            }\r\n            else if (att.localName === \"type\") {\r\n                if (att.value.trim().startsWith(\"gml\")) {\r\n                    obj.type = \"geometry\";\r\n                }\r\n                else {\r\n                    let value = att.value;\r\n\r\n                    if (prefix.length > 0) {\r\n                        value = value.replace(prefix, \"\");\r\n                    }\r\n\r\n                    switch (value) {\r\n                        case \"long\":\r\n                            obj.type = \"integer\";\r\n                            break;\r\n                        default:\r\n                            obj.type = value;\r\n                    }\r\n                }\r\n            }\r\n            else if (att.localName === \"name\") {\r\n                obj.label = obj.key = att.value;\r\n            }\r\n            return obj;\r\n        }, {\r\n            label: \"\",\r\n            key: \"\",\r\n            value: null,\r\n            type: \"string\",\r\n            required: true\r\n        }));\r\n    }\r\n    return [];\r\n}\r\n\r\n/**\r\n * Creates the Url to get possible properties from.\r\n *\r\n * @param {string} url from the WFS-T\r\n * @param {string} version of the WFS-T\r\n * @param {string} featureType Name of the FeatureType according to the capabilities document\r\n * @returns {URL} the created url\r\n */\r\nfunction createReceivePossiblePropertiesUrl (url, version, featureType) {\r\n    const baseUrl = new URL(decodeURI(url));\r\n\r\n    baseUrl.searchParams.set(\"SERVICE\", \"WFS\");\r\n    baseUrl.searchParams.set(\"REQUEST\", \"DescribeFeatureType\");\r\n    baseUrl.searchParams.set(\"TYPENAME\", featureType);\r\n    if (!baseUrl.searchParams.has(\"VERSION\") && !baseUrl.searchParams.has(\"version\")) {\r\n        baseUrl.searchParams.set(\"VERSION\", version);\r\n    }\r\n\r\n    return baseUrl;\r\n}\r\n\r\n/**\r\n * Requests the possible properties of a feature and further values;\r\n * for more {@see FeatureProperty}.\r\n *\r\n * @param {string} url from the WFS-T\r\n * @param {string} version of the WFS-T\r\n * @param {string} featureType Name of the FeatureType according to the capabilities document\r\n * @param {boolean} isSecured Whether the layer is secured by BasicAuth and should include or omit the credentials prompt\r\n * @returns {Promise<Array>} If the request is successful, an array of prepared feature properties.\r\n */\r\nasync function receivePossibleProperties (url, version, featureType, isSecured) {\r\n    const baseUrl = createReceivePossiblePropertiesUrl(url, version, featureType);\r\n    let response = null;\r\n\r\n    try {\r\n        response = await fetch(baseUrl, {\r\n            responseType: \"text/xml\",\r\n            credentials: isSecured ? \"include\" : \"omit\"\r\n        });\r\n        return parseDescribeFeatureTypeResponse(await response.text(), featureType);\r\n    }\r\n    catch (e) {\r\n        console.error(e);\r\n        throw e;\r\n    }\r\n}\r\n\r\n/**\r\n * Load the features manually.\r\n * @param {Object} layerAttributes raw layer attributes.\r\n * @param {module:ol/vector/Source} layerSource - the source of the layer\r\n * @returns {void}\r\n */\r\nfunction loadFeaturesManually (layerAttributes, layerSource) {\r\n    const getUrl = createUrl(layerAttributes, layerAttributes.version, {getCode: () => layerAttributes.crs}, \"\");\r\n\r\n    fetch(getUrl, layerSource)\r\n        .then(response => response.text())\r\n        .then(responseString => {\r\n            layerSource.addFeatures(layerSource.getFormat().readFeatures(responseString));\r\n        })\r\n        .catch(error => {\r\n            console.error(error);\r\n        });\r\n}\r\n\r\nexport default {createLayerSource, createLayer, createReceivePossiblePropertiesUrl, sendTransaction, receivePossibleProperties, parseDescribeFeatureTypeResponse, writeTransactionBody, loadFeaturesManually};\r\n","export default \"data:image/svg+xml,%3csvg%20width='23'%20height='32'%20viewBox='0%200%2030%2043'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDB6C494E-88E8-49F1-89CE-97CBEC3A5240%3c/title%3e%3cpath%20d='M14.584%201C7.101%201%201%207.101%201%2014.584c0%208.103%207.865%2020.448%2011.63%2025.93a2.36%202.36%200%200%200%203.908%200c3.766-5.482%2011.63-17.922%2011.63-25.93C28.168%207.054%2022.068%201%2014.584%201z'%20stroke='%23FFF'%20stroke-width='2'%20fill='%23005CA9'%20fill-rule='nonzero'/%3e%3c/svg%3e\"","import {Style, Icon, Stroke, Fill} from \"ol/style.js\";\r\nimport markerSvg from \"../../../public/marker.svg\";\r\n\r\nlet customStyles = {};\r\n\r\n/**\r\n * Allows setting custom styles. When available, they will be used.\r\n * @param {object.<string, ol.Style>} styles - lookup from feature's geometry type (Point, LineString, ...) to style\r\n * @returns {undefined}\r\n */\r\nexport function setCustomStyles (styles) {\r\n    customStyles = styles;\r\n}\r\n\r\n// // // STYLE PARTS\r\nconst marker = new Icon({\r\n        crossOrigin: \"anonymous\",\r\n        src: markerSvg,\r\n        // center bottom of marker 📍 is intended to show the spot\r\n        anchor: [0.5, 1]\r\n    }),\r\n    stroke = new Stroke({\r\n        width: 2,\r\n        color: \"#005CA9\"\r\n    }),\r\n    fill = new Fill({\r\n        color: \"#005CA915\"\r\n    }),\r\n\r\n    // // // STYLES\r\n    pointStyle = new Style({image: marker}),\r\n    lineStyle = new Style({stroke}),\r\n    polygonStyle = new Style({stroke, fill}),\r\n    circleStyle = new Style({stroke, fill}),\r\n    geometryCollectionStyle = new Style({stroke, fill, image: marker}),\r\n\r\n    // // // DEFAULT STYLE LOOKUP\r\n    defaultStyles = {\r\n        Point: pointStyle,\r\n        LineString: lineStyle,\r\n        MultiLineString: lineStyle,\r\n        MultiPoint: pointStyle,\r\n        MultiPolygon: polygonStyle,\r\n        Polygon: polygonStyle,\r\n        GeometryCollection: geometryCollectionStyle,\r\n        Circle: circleStyle\r\n    };\r\n\r\n/**\r\n * Style function according to https://openlayers.org/en/latest/apidoc/module-ol_style_Style.html#~StyleFunction.\r\n * Will use custom values first, if set, and fall back on holes in definition.\r\n * @param {ol.Feature} feature - to be styled\r\n * @returns {ol.Style} style for feature\r\n * @ignore\r\n */\r\nfunction style (feature) {\r\n    const type = feature.getGeometry().getType();\r\n\r\n    return customStyles[type] || defaultStyles[type];\r\n}\r\n\r\nexport default style;\r\n","import VectorLayer from \"ol/layer/Vector.js\";\r\nimport GeoJSON from \"ol/format/GeoJSON.js\";\r\nimport style, {setCustomStyles} from \"./style\";\r\nimport * as webgl from \"../../renderer/webgl\";\r\n\r\nimport {createVectorSource, createClusterVectorSource} from \"../vector\";\r\n\r\n// forward import to export\r\nexport {setCustomStyles};\r\n\r\n/**\r\n * @typedef {Object} layerParams\r\n * @property {string} [renderer] - use default canvas or webgl renderer\r\n * @property {string} [styleId] - the styleId of the layer\r\n * @property {string[]} [excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl\r\n */\r\n\r\n/**\r\n * Creates the VectorSource for a GeoJSON layer. It will ensure each feature has the field id set to use with the other exported geojson functions.\r\n * @param {object} rawLayer - rawLayer as specified in services.json\r\n * @param {string} [rawLayer.url] - url to fetch geojson from; if no rawLayer.features given, this is required\r\n * @param {object} [rawLayer.features] - if features are transmitted via rawLayer, they will be used instead of requesting an URL\r\n * @param {\"default\" | \"webgl\" | undefined} [rawLayer.renderer] - use default canvas or webgl renderer\r\n * @param {string} [rawLayer.styleId] - the styleId of the layer, only necessary for webgl style pipeline\r\n * @param {string[]} [rawLayer.excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl\r\n * @param {string[]} [rawLayer.isPointLayer] - whether the layer consists merely of points (or multi points)\r\n * @param {object} options - options of the geojson layer\r\n * @returns {ol.source.Vector} created VectorSource\r\n */\r\nexport function createLayerSource ({url, features, clusterDistance, renderer, styleId, excludeTypesFromParsing, isPointLayer}, options) {\r\n    const format = new GeoJSON();\r\n    let source = null;\r\n\r\n    source = createVectorSource(url || features, options.loadingStrategy, format);\r\n\r\n    if (typeof clusterDistance === \"number\") {\r\n        source = createClusterVectorSource(source, clusterDistance, options.clusterGeometryFunction);\r\n    }\r\n\r\n    (typeof clusterDistance === \"number\" ? source.getSource() : source).once(\"featuresloadend\", event => {\r\n        if (typeof options.afterLoading === \"function\") {\r\n            options.afterLoading(event?.features);\r\n        }\r\n    });\r\n\r\n    // perform necessary feature operations if renderer is webgl\r\n    if (renderer === \"webgl\") {\r\n        // if features were provided before source creation\r\n        if (features?.length > 0) {\r\n            webgl.afterLoading(source.getFeatures(), styleId, excludeTypesFromParsing, isPointLayer);\r\n        }\r\n        // wait for loading\r\n        source.once(\"featuresloadend\", event => {\r\n            webgl.afterLoading(event?.features, styleId, excludeTypesFromParsing, isPointLayer);\r\n        });\r\n    }\r\n\r\n    return source;\r\n}\r\n\r\n/**\r\n * Creates a layer for GeoJSON.\r\n * @param {object} rawLayer - rawLayer as specified in services.json\r\n * @param {object} [layerParams={}] - extra params of the layer\r\n * @param {object} [options={}] - parameter object\r\n * @param {ol.Map} [options.map] - map the geojson is to be projected on\r\n * @param {ol.Style} [options.layerStyle] - optional style; if not given, default styling (modifiable by setCustomStyles) is used\r\n * @returns {ol.layer.Vector} Layer with id and source specified in rawLayer\r\n */\r\nexport function createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {}) {\r\n    let layer, source;\r\n\r\n    // use WebGL render pipeline, if specified\r\n    if (layerParams.renderer === \"webgl\") {\r\n        source = createLayerSource({\r\n            ...rawLayer,\r\n            renderer: layerParams.renderer,\r\n            styleId: layerParams.styleId,\r\n            excludeTypesFromParsing: layerParams.excludeTypesFromParsing,\r\n            isPointLayer: layerParams.isPointLayer\r\n        }, options);\r\n        layer = webgl.createLayer({\r\n            ...rawLayer,\r\n            ...layerParams,\r\n            source\r\n        });\r\n\r\n        return layer;\r\n    }\r\n\r\n    // use default canvas renderer\r\n    source = createLayerSource(rawLayer, options);\r\n    layer = new VectorLayer(Object.assign({\r\n        id: rawLayer.id,\r\n        source\r\n    }, layerParams));\r\n\r\n    if (options.style) {\r\n        layer.setStyle(options.style);\r\n    }\r\n    else if (rawLayer.style) {\r\n        layer.setStyle(rawLayer.style);\r\n    }\r\n    else {\r\n        layer.setStyle(style);\r\n    }\r\n\r\n    return layer;\r\n}\r\n\r\n/**\r\n * GeoJSON layer with an URL will be reloaded. All other layers will be refreshed.\r\n * @param {ol.layer.Vector} layer - GeoJSON layer to update\r\n * @returns {undefined}\r\n */\r\nexport function updateSource (layer) {\r\n    // openlayers named this \"refresh\", but it also means \"reload\" if an URL is set\r\n    layer.getSource().refresh();\r\n\r\n    // perform necessary feature operations if renderer is webgl\r\n    if (layer.get(\"renderer\") === \"webgl\") {\r\n        layer.getSource().once(\"featuresloadend\", event => {\r\n            webgl.afterLoading(event?.features, layer.get(\"styleId\"), layer.get(\"excludeTypesFromParsing\"), layer.get(\"isPointLayer\"));\r\n        });\r\n    }\r\n}\r\n\r\n/**\r\n * Sets a style to all given features.\r\n * @param {ol.Feature[]} features - openlayers features to be styled\r\n * @param {ol.style.Style~StyleLike} featureStyle - style, array of styles, or style function\r\n * @returns {undefined}\r\n */\r\nexport function setFeatureStyle (features, featureStyle) {\r\n    features.forEach(feature => feature.setStyle(featureStyle));\r\n}\r\n\r\n/**\r\n * @param {ol.Layer} layer - layer to hide all features of\r\n * @returns {undefined}\r\n */\r\nexport function hideAllFeatures (layer) {\r\n    // () => null is the \"do not display\" function for openlayers (overriding VectorLayer styles)\r\n    setFeatureStyle(layer.getSource().getFeatures(), () => null);\r\n}\r\n\r\n/**\r\n * @param {ol.Layer} layer - layer to show all features of\r\n * @returns {undefined}\r\n */\r\nexport function showAllFeatures (layer) {\r\n    // if feature has undefined style, openlayers will check containing VectorLayer for styles\r\n    setFeatureStyle(layer.getSource().getFeatures(), undefined);\r\n}\r\n\r\n/**\r\n * @param {ol.Layer} layer - layer to show some features of\r\n * @param {string[]} featureIdList - list of feature.id to show\r\n * @returns {undefined}\r\n */\r\nexport function showFeaturesById (layer, featureIdList) {\r\n    const features = layer\r\n        .getSource()\r\n        .getFeatures()\r\n        .filter(feature => featureIdList.indexOf(feature.getId()) >= 0);\r\n\r\n    hideAllFeatures(layer);\r\n    setFeatureStyle(features, undefined);\r\n}\r\n\r\n/**\r\n * Load the features manually.\r\n * @param {Object} layerAttributes raw layer attributes.\r\n * @param {module:ol/vector/Source} layerSource - the source of the layer\r\n * @returns {void}\r\n */\r\nexport function loadFeaturesManually (layerAttributes, layerSource) {\r\n    const getUrl = layerAttributes.url;\r\n\r\n    fetch(getUrl, layerSource)\r\n        .then(response => response.text())\r\n        .then(responseString => {\r\n            const features = layerSource.getFormat().readFeatures(responseString);\r\n\r\n            layerSource.addFeatures(features);\r\n            layerSource.dispatchEvent({\r\n                type: \"featuresloadend\",\r\n                features: layerSource.getFeatures()\r\n            });\r\n        })\r\n        .catch(error => {\r\n            console.error(error);\r\n        });\r\n}\r\n","/**\n * @module ol/source/VectorTile\n */\n\nimport TileState from '../TileState.js';\nimport VectorRenderTile from '../VectorRenderTile.js';\nimport Tile from '../VectorTile.js';\nimport EventType from '../events/EventType.js';\nimport {\n  buffer as bufferExtent,\n  getIntersection,\n  intersects,\n} from '../extent.js';\nimport {loadFeaturesXhr} from '../featureloader.js';\nimport {isEmpty} from '../obj.js';\nimport {toSize} from '../size.js';\nimport TileGrid from '../tilegrid/TileGrid.js';\nimport {DEFAULT_MAX_ZOOM} from '../tilegrid/common.js';\nimport {createXYZ, extentFromProjection} from '../tilegrid.js';\nimport UrlTile from './UrlTile.js';\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least twice the number of tiles in the viewport.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {import(\"../format/Feature.js\").default<FeatureType>} [format] Feature format for tiles. Used and required by the default.\n * @property {boolean} [overlaps=true] This source may have overlapping geometries. Setting this\n * to `false` (e.g. for sources with polygons that represent administrative\n * boundaries or TopoJSON sources) allows the renderer to optimise fill and\n * stroke operations.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection of the tile grid.\n * @property {import(\"./Source.js\").State} [state] Source state.\n * @property {typeof import(\"../VectorTile.js\").default} [tileClass] Class used to instantiate tiles.\n * Default is {@link module:ol/VectorTile~VectorTile}.\n * @property {number} [maxZoom=22] Optional max zoom level. Not used if `tileGrid` is provided.\n * @property {number} [minZoom] Optional min zoom level. Not used if `tileGrid` is provided.\n * @property {number|import(\"../size.js\").Size} [tileSize=512] Optional tile size. Not used if `tileGrid` is provided.\n * @property {number} [maxResolution] Optional tile grid resolution at level zero. Not used if `tileGrid` is provided.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction]\n * Optional function to load a tile given a URL. Could look like this for pbf tiles:\n * ```js\n * function(tile, url) {\n *   tile.setLoader(function(extent, resolution, projection) {\n *     fetch(url).then(function(response) {\n *       response.arrayBuffer().then(function(data) {\n *         const format = tile.getFormat() // ol/format/MVT configured as source format\n *         const features = format.readFeatures(data, {\n *           extent: extent,\n *           featureProjection: projection\n *         });\n *         tile.setFeatures(features);\n *       });\n *     });\n *   });\n * }\n * ```\n * If you do not need extent, resolution and projection to get the features for a tile (e.g.\n * for GeoJSON tiles), your `tileLoadFunction` does not need a `setLoader()` call. Only make sure\n * to call `setFeatures()` on the tile:\n * ```js\n * const format = new GeoJSON({featureProjection: map.getView().getProjection()});\n * async function tileLoadFunction(tile, url) {\n *   const response = await fetch(url);\n *   const data = await response.json();\n *   tile.setFeatures(format.readFeatures(data));\n * }\n * ```\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {number} [transition] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {Array<string>} [urls] An array of URL templates.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * When set to `false`, only one world\n * will be rendered. When set to `true`, tiles will be wrapped horizontally to\n * render multiple worlds.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=1]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Class for layer sources providing vector data divided into a tile grid, to be\n * used with {@link module:ol/layer/VectorTile~VectorTileLayer}. Although this source receives tiles\n * with vector features from the server, it is not meant for feature editing.\n * Features are optimized for rendering, their geometries are clipped at or near\n * tile boundaries and simplified for a view resolution. See\n * {@link module:ol/source/Vector~VectorSource} for vector sources that are suitable for feature\n * editing.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n */\nclass VectorTile extends UrlTile {\n  /**\n   * @param {!Options<FeatureType>} options Vector tile options.\n   */\n  constructor(options) {\n    const projection = options.projection || 'EPSG:3857';\n\n    const extent = options.extent || extentFromProjection(projection);\n\n    const tileGrid =\n      options.tileGrid ||\n      createXYZ({\n        extent: extent,\n        maxResolution: options.maxResolution,\n        maxZoom: options.maxZoom !== undefined ? options.maxZoom : 22,\n        minZoom: options.minZoom,\n        tileSize: options.tileSize || 512,\n      });\n\n    super({\n      attributions: options.attributions,\n      attributionsCollapsible: options.attributionsCollapsible,\n      cacheSize: options.cacheSize,\n      interpolate: true,\n      projection: projection,\n      state: options.state,\n      tileGrid: tileGrid,\n      tileLoadFunction: options.tileLoadFunction\n        ? options.tileLoadFunction\n        : defaultLoadFunction,\n      tileUrlFunction: options.tileUrlFunction,\n      url: options.url,\n      urls: options.urls,\n      wrapX: options.wrapX === undefined ? true : options.wrapX,\n      transition: options.transition,\n      zDirection: options.zDirection === undefined ? 1 : options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {import(\"../format/Feature.js\").default<FeatureType>|null}\n     */\n    this.format_ = options.format ? options.format : null;\n\n    /**\n     * @type {Object<string, Array<string>>}\n     * @private\n     */\n    this.tileKeysBySourceTileUrl_ = {};\n\n    /**\n     @type {Object<string, Tile<FeatureType>>}\n     */\n    this.sourceTiles_ = {};\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overlaps_ = options.overlaps == undefined ? true : options.overlaps;\n\n    /**\n     * @protected\n     * @type {typeof import(\"../VectorTile.js\").default}\n     */\n    this.tileClass = options.tileClass ? options.tileClass : Tile;\n\n    /**\n     * @private\n     * @type {Object<string, import(\"../tilegrid/TileGrid.js\").default>}\n     */\n    this.tileGrids_ = {};\n  }\n\n  /**\n   * @return {boolean} The source can have overlapping geometries.\n   */\n  getOverlaps() {\n    return this.overlaps_;\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection\").default} projection Projection.\n   * @param {VectorRenderTile} tile Vector render tile.\n   * @return {Array<import(\"../VectorTile\").default>} Tile keys.\n   */\n  getSourceTiles(pixelRatio, projection, tile) {\n    if (tile.getState() === TileState.IDLE) {\n      tile.setState(TileState.LOADING);\n      const urlTileCoord = tile.wrappedTileCoord;\n      const tileGrid = this.getTileGridForProjection(projection);\n      const extent = tileGrid.getTileCoordExtent(urlTileCoord);\n      const z = urlTileCoord[0];\n      const resolution = tileGrid.getResolution(z);\n      // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n      bufferExtent(extent, -resolution, extent);\n      const sourceTileGrid = this.tileGrid;\n      const sourceExtent = sourceTileGrid.getExtent();\n      if (sourceExtent) {\n        getIntersection(extent, sourceExtent, extent);\n      }\n      const sourceZ = sourceTileGrid.getZForResolution(\n        resolution,\n        this.zDirection,\n      );\n\n      sourceTileGrid.forEachTileCoord(extent, sourceZ, (sourceTileCoord) => {\n        const tileUrl = this.tileUrlFunction(\n          sourceTileCoord,\n          pixelRatio,\n          projection,\n        );\n        if (!this.sourceTiles_[tileUrl]) {\n          this.sourceTiles_[tileUrl] = new this.tileClass(\n            sourceTileCoord,\n            tileUrl ? TileState.IDLE : TileState.EMPTY,\n            tileUrl,\n            this.format_,\n            this.tileLoadFunction,\n          );\n        }\n        const sourceTile = this.sourceTiles_[tileUrl];\n        tile.sourceTiles.push(sourceTile);\n        if (!this.tileKeysBySourceTileUrl_[tileUrl]) {\n          this.tileKeysBySourceTileUrl_[tileUrl] = [];\n        }\n        this.tileKeysBySourceTileUrl_[tileUrl].push(tile.getKey());\n        const sourceTileState = sourceTile.getState();\n        if (sourceTileState < TileState.LOADED) {\n          const listenChange = (event) => {\n            this.handleTileChange(event);\n            const state = sourceTile.getState();\n            if (state === TileState.LOADED || state === TileState.ERROR) {\n              const sourceTileKey = sourceTile.getKey();\n              if (sourceTileKey in tile.errorTileKeys) {\n                if (sourceTile.getState() === TileState.LOADED) {\n                  delete tile.errorTileKeys[sourceTileKey];\n                }\n              } else {\n                tile.loadingSourceTiles--;\n              }\n              if (state === TileState.ERROR) {\n                tile.errorTileKeys[sourceTileKey] = true;\n              } else {\n                sourceTile.removeEventListener(EventType.CHANGE, listenChange);\n              }\n              if (tile.loadingSourceTiles === 0) {\n                tile.setState(\n                  isEmpty(tile.errorTileKeys)\n                    ? TileState.LOADED\n                    : TileState.ERROR,\n                );\n              }\n            }\n          };\n          sourceTile.addEventListener(EventType.CHANGE, listenChange);\n          tile.loadingSourceTiles++;\n        }\n        if (sourceTileState === TileState.IDLE) {\n          sourceTile.extent =\n            sourceTileGrid.getTileCoordExtent(sourceTileCoord);\n          sourceTile.projection = projection;\n          sourceTile.resolution = sourceTileGrid.getResolution(\n            sourceTileCoord[0],\n          );\n          sourceTile.load();\n        }\n      });\n      if (!tile.loadingSourceTiles) {\n        tile.setState(\n          tile.sourceTiles.some(\n            (sourceTile) => sourceTile.getState() === TileState.ERROR,\n          )\n            ? TileState.ERROR\n            : TileState.LOADED,\n        );\n      }\n    }\n\n    return tile.sourceTiles;\n  }\n\n  /**\n   * @param {VectorRenderTile} tile Vector render tile.\n   */\n  removeSourceTiles(tile) {\n    const tileKey = tile.getKey();\n    const sourceTiles = tile.sourceTiles;\n    for (let i = 0, ii = sourceTiles.length; i < ii; ++i) {\n      const sourceTileUrl = sourceTiles[i].getTileUrl();\n      if (!this.tileKeysBySourceTileUrl_[sourceTileUrl]) {\n        return;\n      }\n      const index =\n        this.tileKeysBySourceTileUrl_[sourceTileUrl].indexOf(tileKey);\n      if (index === -1) {\n        continue;\n      }\n      this.tileKeysBySourceTileUrl_[sourceTileUrl].splice(index, 1);\n      if (this.tileKeysBySourceTileUrl_[sourceTileUrl].length === 0) {\n        delete this.tileKeysBySourceTileUrl_[sourceTileUrl];\n        delete this.sourceTiles_[sourceTileUrl];\n      }\n    }\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!VectorRenderTile} Tile.\n   * @override\n   */\n  getTile(z, x, y, pixelRatio, projection) {\n    const tileCoord = [z, x, y];\n    let urlTileCoord = this.getTileCoordForTileUrlFunction(\n      tileCoord,\n      projection,\n    );\n    const sourceExtent = this.getTileGrid().getExtent();\n    const tileGrid = this.getTileGridForProjection(projection);\n    if (urlTileCoord && sourceExtent) {\n      const tileExtent = tileGrid.getTileCoordExtent(urlTileCoord);\n      // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n      bufferExtent(tileExtent, -tileGrid.getResolution(z), tileExtent);\n      if (!intersects(sourceExtent, tileExtent)) {\n        urlTileCoord = null;\n      }\n    }\n    let empty = true;\n    if (urlTileCoord !== null) {\n      const sourceTileGrid = this.tileGrid;\n      const resolution = tileGrid.getResolution(z);\n      const sourceZ = sourceTileGrid.getZForResolution(resolution, 1);\n      // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n      const extent = tileGrid.getTileCoordExtent(urlTileCoord);\n      bufferExtent(extent, -resolution, extent);\n      sourceTileGrid.forEachTileCoord(extent, sourceZ, (sourceTileCoord) => {\n        empty =\n          empty &&\n          !this.tileUrlFunction(sourceTileCoord, pixelRatio, projection);\n      });\n    }\n    const newTile = new VectorRenderTile(\n      tileCoord,\n      empty ? TileState.EMPTY : TileState.IDLE,\n      urlTileCoord,\n      this.getSourceTiles.bind(this, pixelRatio, projection),\n      this.removeSourceTiles.bind(this),\n    );\n    newTile.key = this.getKey();\n    return newTile;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n   * @override\n   */\n  getTileGridForProjection(projection) {\n    const code = projection.getCode();\n    let tileGrid = this.tileGrids_[code];\n    if (!tileGrid) {\n      // A tile grid that matches the tile size of the source tile grid is more\n      // likely to have 1:1 relationships between source tiles and rendered tiles.\n      const sourceTileGrid = this.tileGrid;\n      const resolutions = sourceTileGrid.getResolutions().slice();\n      const origins = resolutions.map(function (resolution, z) {\n        return sourceTileGrid.getOrigin(z);\n      });\n      const tileSizes = resolutions.map(function (resolution, z) {\n        return sourceTileGrid.getTileSize(z);\n      });\n      const length = DEFAULT_MAX_ZOOM + 1;\n      for (let z = resolutions.length; z < length; ++z) {\n        resolutions.push(resolutions[z - 1] / 2);\n        origins.push(origins[z - 1]);\n        tileSizes.push(tileSizes[z - 1]);\n      }\n      tileGrid = new TileGrid({\n        extent: sourceTileGrid.getExtent(),\n        origins: origins,\n        resolutions: resolutions,\n        tileSizes: tileSizes,\n      });\n      this.tileGrids_[code] = tileGrid;\n    }\n    return tileGrid;\n  }\n\n  /**\n   * Get the tile pixel ratio for this source.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Tile pixel ratio.\n   * @override\n   */\n  getTilePixelRatio(pixelRatio) {\n    return pixelRatio;\n  }\n\n  /**\n   * @param {number} z Z.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../size.js\").Size} Tile size.\n   * @override\n   */\n  getTilePixelSize(z, pixelRatio, projection) {\n    const tileGrid = this.getTileGridForProjection(projection);\n    const tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n    return [\n      Math.round(tileSize[0] * pixelRatio),\n      Math.round(tileSize[1] * pixelRatio),\n    ];\n  }\n\n  /**\n   * @param {boolean} overlaps The source has overlapping geometries.\n   */\n  setOverlaps(overlaps) {\n    this.overlaps_ = overlaps;\n    this.changed();\n  }\n}\n\nexport default VectorTile;\n\n/**\n * Sets the loader for a tile.\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n * @param {import(\"../VectorTile.js\").default<FeatureType>} tile Vector tile.\n * @param {string} url URL.\n */\nexport function defaultLoadFunction(tile, url) {\n  tile.setLoader(\n    /**\n     * @param {import(\"../extent.js\").Extent} extent Extent.\n     * @param {number} resolution Resolution.\n     * @param {import(\"../proj/Projection.js\").default} projection Projection.\n     */\n    function (extent, resolution, projection) {\n      loadFeaturesXhr(\n        url,\n        tile.getFormat(),\n        extent,\n        resolution,\n        projection,\n        tile.onLoad.bind(tile),\n        tile.onError.bind(tile),\n      );\n    },\n  );\n}\n","/**\n * @module ol/source/Raster\n */\nimport Disposable from '../Disposable.js';\nimport ImageCanvas from '../ImageCanvas.js';\nimport TileQueue from '../TileQueue.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {equals, getCenter, getHeight, getWidth} from '../extent.js';\nimport ImageLayer from '../layer/Image.js';\nimport TileLayer from '../layer/Tile.js';\nimport {create as createTransform} from '../transform.js';\nimport {getUid} from '../util.js';\nimport ImageSource from './Image.js';\nimport Source from './Source.js';\nimport TileSource from './Tile.js';\n\n/**\n * @typedef {Object} MinionData\n * @property {Array<ArrayBuffer>} buffers Array of buffers.\n * @property {Object} meta Operation metadata.\n * @property {boolean} imageOps The operation is an image operation.\n * @property {number} width The width of the image.\n * @property {number} height The height of the image.\n */\n\n/* istanbul ignore next */\n/**\n * Create a function for running operations.  This function is serialized for\n * use in a worker.\n * @param {function(Array, Object):*} operation The operation.\n * @return {function(MinionData):ArrayBuffer} A function that takes an object with\n * buffers, meta, imageOps, width, and height properties and returns an array\n * buffer.\n */\nfunction createMinion(operation) {\n  return function (data) {\n    // bracket notation for minification support\n    const buffers = data['buffers'];\n    const meta = data['meta'];\n    const imageOps = data['imageOps'];\n    const width = data['width'];\n    const height = data['height'];\n\n    const numBuffers = buffers.length;\n    const numBytes = buffers[0].byteLength;\n\n    if (imageOps) {\n      const images = new Array(numBuffers);\n      for (let b = 0; b < numBuffers; ++b) {\n        images[b] = new ImageData(\n          new Uint8ClampedArray(buffers[b]),\n          width,\n          height,\n        );\n      }\n      const output = operation(images, meta).data;\n      return output.buffer;\n    }\n\n    const output = new Uint8ClampedArray(numBytes);\n    const arrays = new Array(numBuffers);\n    const pixels = new Array(numBuffers);\n    for (let b = 0; b < numBuffers; ++b) {\n      arrays[b] = new Uint8ClampedArray(buffers[b]);\n      pixels[b] = [0, 0, 0, 0];\n    }\n    for (let i = 0; i < numBytes; i += 4) {\n      for (let j = 0; j < numBuffers; ++j) {\n        const array = arrays[j];\n        pixels[j][0] = array[i];\n        pixels[j][1] = array[i + 1];\n        pixels[j][2] = array[i + 2];\n        pixels[j][3] = array[i + 3];\n      }\n      const pixel = operation(pixels, meta);\n      output[i] = pixel[0];\n      output[i + 1] = pixel[1];\n      output[i + 2] = pixel[2];\n      output[i + 3] = pixel[3];\n    }\n    return output.buffer;\n  };\n}\n\n/**\n * Create a worker for running operations.\n * @param {ProcessorOptions} config Processor options.\n * @param {function(MessageEvent): void} onMessage Called with a message event.\n * @return {Worker} The worker.\n */\nfunction createWorker(config, onMessage) {\n  const lib = Object.keys(config.lib || {}).map(function (name) {\n    return 'const ' + name + ' = ' + config.lib[name].toString() + ';';\n  });\n\n  const lines = lib.concat([\n    'const __minion__ = (' + createMinion.toString() + ')(',\n    config.operation.toString(),\n    ');',\n    'self.addEventListener(\"message\", function(event) {',\n    '  const buffer = __minion__(event.data);',\n    '  self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);',\n    '});',\n  ]);\n\n  const worker = new Worker(\n    typeof Blob === 'undefined'\n      ? 'data:text/javascript;base64,' +\n        Buffer.from(lines.join('\\n'), 'binary').toString('base64')\n      : URL.createObjectURL(new Blob(lines, {type: 'text/javascript'})),\n  );\n  worker.addEventListener('message', onMessage);\n  return worker;\n}\n\n/**\n * @typedef {Object} FauxMessageEvent\n * @property {Object} data Message data.\n */\n\n/**\n * Create a faux worker for running operations.\n * @param {ProcessorOptions} config Configuration.\n * @param {function(FauxMessageEvent): void} onMessage Called with a message event.\n * @return {Object} The faux worker.\n */\nfunction createFauxWorker(config, onMessage) {\n  const minion = createMinion(config.operation);\n  let terminated = false;\n  return {\n    postMessage: function (data) {\n      setTimeout(function () {\n        if (terminated) {\n          return;\n        }\n        onMessage({data: {buffer: minion(data), meta: data['meta']}});\n      }, 0);\n    },\n    terminate: function () {\n      terminated = true;\n    },\n  };\n}\n\n/**\n * @typedef {function(Error, ImageData, (Object|Array<Object>)): void} JobCallback\n */\n\n/**\n * @typedef {Object} Job\n * @property {Object} meta Job metadata.\n * @property {Array<ImageData>} inputs Array of input data.\n * @property {JobCallback} callback Called when the job is complete.\n */\n\n/**\n * @typedef {Object} ProcessorOptions\n * @property {number} threads Number of workers to spawn.\n * @property {Operation} operation The operation.\n * @property {Object<string, Function>} [lib] Functions that will be made available to operations run in a worker.\n * @property {number} queue The number of queued jobs to allow.\n * @property {boolean} [imageOps=false] Pass all the image data to the operation instead of a single pixel.\n */\n\n/**\n * @classdesc\n * A processor runs pixel or image operations in workers.\n */\nexport class Processor extends Disposable {\n  /**\n   * @param {ProcessorOptions} config Configuration.\n   */\n  constructor(config) {\n    super();\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.imageOps_ = !!config.imageOps;\n    let threads;\n    if (config.threads === 0) {\n      threads = 0;\n    } else if (this.imageOps_) {\n      threads = 1;\n    } else {\n      threads = config.threads || 1;\n    }\n\n    /**\n     * @type {Array<Worker>}\n     */\n    const workers = new Array(threads);\n    if (threads) {\n      for (let i = 0; i < threads; ++i) {\n        workers[i] = createWorker(config, this.onWorkerMessage_.bind(this, i));\n      }\n    } else {\n      workers[0] = createFauxWorker(\n        config,\n        this.onWorkerMessage_.bind(this, 0),\n      );\n    }\n    /**\n     * @type {Array<Worker>}\n     * @private\n     */\n    this.workers_ = workers;\n\n    /**\n     * @type {Array<Job>}\n     * @private\n     */\n    this.queue_ = [];\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.maxQueueLength_ = config.queue || Infinity;\n    /**\n     * @type {number}\n     * @private\n     */\n    this.running_ = 0;\n\n    /**\n     * @type {Object<number, any>}\n     * @private\n     */\n    this.dataLookup_ = {};\n\n    /**\n     * @type {Job|null}\n     * @private\n     */\n    this.job_ = null;\n  }\n\n  /**\n   * Run operation on input data.\n   * @param {Array<ImageData>} inputs Array of image data.\n   * @param {Object} meta A user data object.  This is passed to all operations\n   *     and must be serializable.\n   * @param {function(Error, ImageData, Object): void} callback Called when work\n   *     completes.  The first argument is any error.  The second is the ImageData\n   *     generated by operations.  The third is the user data object.\n   */\n  process(inputs, meta, callback) {\n    this.enqueue_({\n      inputs: inputs,\n      meta: meta,\n      callback: callback,\n    });\n    this.dispatch_();\n  }\n\n  /**\n   * Add a job to the queue.\n   * @param {Job} job The job.\n   */\n  enqueue_(job) {\n    this.queue_.push(job);\n    while (this.queue_.length > this.maxQueueLength_) {\n      this.queue_.shift().callback(null, null);\n    }\n  }\n\n  /**\n   * Dispatch a job.\n   */\n  dispatch_() {\n    if (this.running_ || this.queue_.length === 0) {\n      return;\n    }\n\n    const job = this.queue_.shift();\n    this.job_ = job;\n    const width = job.inputs[0].width;\n    const height = job.inputs[0].height;\n    const buffers = job.inputs.map(function (input) {\n      return input.data.buffer;\n    });\n    const threads = this.workers_.length;\n    this.running_ = threads;\n    if (threads === 1) {\n      this.workers_[0].postMessage(\n        {\n          buffers: buffers,\n          meta: job.meta,\n          imageOps: this.imageOps_,\n          width: width,\n          height: height,\n        },\n        buffers,\n      );\n      return;\n    }\n\n    const length = job.inputs[0].data.length;\n    const segmentLength = 4 * Math.ceil(length / 4 / threads);\n    for (let i = 0; i < threads; ++i) {\n      const offset = i * segmentLength;\n      const slices = [];\n      for (let j = 0, jj = buffers.length; j < jj; ++j) {\n        slices.push(buffers[j].slice(offset, offset + segmentLength));\n      }\n      this.workers_[i].postMessage(\n        {\n          buffers: slices,\n          meta: job.meta,\n          imageOps: this.imageOps_,\n          width: width,\n          height: height,\n        },\n        slices,\n      );\n    }\n  }\n\n  /**\n   * Handle messages from the worker.\n   * @param {number} index The worker index.\n   * @param {MessageEvent} event The message event.\n   */\n  onWorkerMessage_(index, event) {\n    if (this.disposed) {\n      return;\n    }\n    this.dataLookup_[index] = event.data;\n    --this.running_;\n    if (this.running_ === 0) {\n      this.resolveJob_();\n    }\n  }\n\n  /**\n   * Resolve a job.  If there are no more worker threads, the processor callback\n   * will be called.\n   */\n  resolveJob_() {\n    const job = this.job_;\n    const threads = this.workers_.length;\n    let data, meta;\n    if (threads === 1) {\n      data = new Uint8ClampedArray(this.dataLookup_[0]['buffer']);\n      meta = this.dataLookup_[0]['meta'];\n    } else {\n      const length = job.inputs[0].data.length;\n      data = new Uint8ClampedArray(length);\n      meta = new Array(threads);\n      const segmentLength = 4 * Math.ceil(length / 4 / threads);\n      for (let i = 0; i < threads; ++i) {\n        const buffer = this.dataLookup_[i]['buffer'];\n        const offset = i * segmentLength;\n        data.set(new Uint8ClampedArray(buffer), offset);\n        meta[i] = this.dataLookup_[i]['meta'];\n      }\n    }\n    this.job_ = null;\n    this.dataLookup_ = {};\n    job.callback(\n      null,\n      new ImageData(data, job.inputs[0].width, job.inputs[0].height),\n      meta,\n    );\n    this.dispatch_();\n  }\n\n  /**\n   * Terminate all workers associated with the processor.\n   * @override\n   */\n  disposeInternal() {\n    for (let i = 0; i < this.workers_.length; ++i) {\n      this.workers_[i].terminate();\n    }\n    this.workers_.length = 0;\n  }\n}\n\n/**\n * A function that takes an array of input data, performs some operation, and\n * returns an array of output data.\n * For `pixel` type operations, the function will be called with an array of\n * pixels, where each pixel is an array of four numbers (`[r, g, b, a]`) in the\n * range of 0 - 255. It should return a single pixel array.\n * For `'image'` type operations, functions will be called with an array of\n * [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData)\n * and should return a single\n * [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData).\n * The operations\n * are called with a second \"data\" argument, which can be used for storage.  The\n * data object is accessible from raster events, where it can be initialized in\n * \"beforeoperations\" and accessed again in \"afteroperations\".\n *\n * @typedef {function((Array<Array<number>>|Array<ImageData>), Object):\n *     (Array<number>|ImageData)} Operation\n */\n\n/**\n * @enum {string}\n */\nconst RasterEventType = {\n  /**\n   * Triggered before operations are run.  Listeners will receive an event object with\n   * a `data` property that can be used to make data available to operations.\n   * @event module:ol/source/Raster.RasterSourceEvent#beforeoperations\n   * @api\n   */\n  BEFOREOPERATIONS: 'beforeoperations',\n\n  /**\n   * Triggered after operations are run.  Listeners will receive an event object with\n   * a `data` property.  If more than one thread is used, `data` will be an array of\n   * objects.  If a single thread is used, `data` will be a single object.\n   * @event module:ol/source/Raster.RasterSourceEvent#afteroperations\n   * @api\n   */\n  AFTEROPERATIONS: 'afteroperations',\n};\n\n/**\n * @typedef {'pixel' | 'image'} RasterOperationType\n * Raster operation type. Supported values are `'pixel'` and `'image'`.\n */\n\n/**\n * @typedef {import(\"./Image.js\").ImageSourceEventTypes|'beforeoperations'|'afteroperations'} RasterSourceEventTypes\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Raster~RasterSource} instances are instances of this\n * type.\n */\nexport class RasterSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../Map.js\").FrameState} frameState The frame state.\n   * @param {Object|Array<Object>} data An object made available to operations.  For \"afteroperations\" evenets\n   * this will be an array of objects if more than one thread is used.\n   */\n  constructor(type, frameState, data) {\n    super(type);\n\n    /**\n     * The raster extent.\n     * @type {import(\"../extent.js\").Extent}\n     * @api\n     */\n    this.extent = frameState.extent;\n\n    /**\n     * The pixel resolution (map units per pixel).\n     * @type {number}\n     * @api\n     */\n    this.resolution = frameState.viewState.resolution / frameState.pixelRatio;\n\n    /**\n     * An object made available to all operations.  This can be used by operations\n     * as a storage object (e.g. for calculating statistics).\n     * @type {Object}\n     * @api\n     */\n    this.data = data;\n  }\n}\n\n/**\n * @typedef {Object} Options\n * @property {Array<import(\"./Source.js\").default|import(\"../layer/Layer.js\").default>} sources Input\n * sources or layers.  For vector data, use an VectorImage layer.\n * @property {Operation} [operation] Raster operation.\n * The operation will be called with data from input sources\n * and the output will be assigned to the raster source.\n * @property {Object} [lib] Functions that will be made available to operations run in a worker.\n * @property {number} [threads] By default, operations will be run in a single worker thread.\n * To avoid using workers altogether, set `threads: 0`.  For pixel operations, operations can\n * be run in multiple worker threads.  Note that there is additional overhead in\n * transferring data to multiple workers, and that depending on the user's\n * system, it may not be possible to parallelize the work.\n * @property {RasterOperationType} [operationType='pixel'] Operation type.\n * Supported values are `'pixel'` and `'image'`.  By default,\n * `'pixel'` operations are assumed, and operations will be called with an\n * array of pixels from input sources.  If set to `'image'`, operations will\n * be called with an array of ImageData objects from input sources.\n * @property {Array<number>|null} [resolutions] Resolutions. If specified, raster operations will only\n * be run at the given resolutions.  By default, the resolutions of the first source with resolutions\n * specified will be used, if any. Set to `null` to use any view resolution instead.\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Image.js\").ImageSourceEventTypes, import(\"./Image.js\").ImageSourceEvent, Return> &\n *   import(\"../Observable\").OnSignature<RasterSourceEventTypes, RasterSourceEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types\n *     |RasterSourceEventTypes, Return>} RasterSourceOnSignature\n */\n\n/**\n * @classdesc\n * A source that transforms data from any number of input sources using an\n * {@link module:ol/source/Raster~Operation} function to transform input pixel values into\n * output pixel values.\n *\n * @fires module:ol/source/Raster.RasterSourceEvent\n * @api\n */\nclass RasterSource extends ImageSource {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    super({\n      projection: null,\n    });\n\n    /***\n     * @type {RasterSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {RasterSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {RasterSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {Processor}\n     */\n    this.processor_ = null;\n\n    /**\n     * @private\n     * @type {RasterOperationType}\n     */\n    this.operationType_ =\n      options.operationType !== undefined ? options.operationType : 'pixel';\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.threads_ = options.threads !== undefined ? options.threads : 1;\n\n    /**\n     * @private\n     * @type {Array<import(\"../layer/Layer.js\").default>}\n     */\n    this.layers_ = createLayers(options.sources);\n\n    const changed = this.changed.bind(this);\n    for (let i = 0, ii = this.layers_.length; i < ii; ++i) {\n      this.layers_[i].addEventListener(EventType.CHANGE, changed);\n    }\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.useResolutions_ = options.resolutions !== null;\n\n    /**\n     * @private\n     * @type {import(\"../TileQueue.js\").default}\n     */\n    this.tileQueue_ = new TileQueue(function () {\n      return 1;\n    }, this.processSources_.bind(this));\n\n    /**\n     * The most recently requested frame state.\n     * @type {import(\"../Map.js\").FrameState}\n     * @private\n     */\n    this.requestedFrameState_;\n\n    /**\n     * The most recently rendered image canvas.\n     * @type {import(\"../ImageCanvas.js\").default}\n     * @private\n     */\n    this.renderedImageCanvas_ = null;\n\n    /**\n     * The most recently rendered revision.\n     * @type {number}\n     * @private\n     */\n    this.renderedRevision_;\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").FrameState}\n     */\n    this.frameState_ = {\n      animate: false,\n      coordinateToPixelTransform: createTransform(),\n      declutter: null,\n      extent: null,\n      index: 0,\n      layerIndex: 0,\n      layerStatesArray: getLayerStatesArray(this.layers_),\n      pixelRatio: 1,\n      pixelToCoordinateTransform: createTransform(),\n      postRenderFunctions: [],\n      size: [0, 0],\n      tileQueue: this.tileQueue_,\n      time: Date.now(),\n      usedTiles: {},\n      viewState: /** @type {import(\"../View.js\").State} */ ({\n        rotation: 0,\n      }),\n      viewHints: [],\n      wantedTiles: {},\n      mapId: getUid(this),\n      renderTargets: {},\n    };\n\n    this.setAttributions(function (frameState) {\n      /** @type {Array<string>} */\n      const attributions = [];\n      for (let i = 0, iMax = options.sources.length; i < iMax; ++i) {\n        const sourceOrLayer = options.sources[i];\n        const source =\n          sourceOrLayer instanceof Source\n            ? sourceOrLayer\n            : sourceOrLayer.getSource();\n        if (!source) {\n          continue;\n        }\n        const sourceAttributions = source.getAttributions()?.(frameState);\n        if (typeof sourceAttributions === 'string') {\n          attributions.push(sourceAttributions);\n        } else if (sourceAttributions !== undefined) {\n          attributions.push(...sourceAttributions);\n        }\n      }\n      return attributions;\n    });\n\n    if (options.operation !== undefined) {\n      this.setOperation(options.operation, options.lib);\n    }\n  }\n\n  /**\n   * Set the operation.\n   * @param {Operation} operation New operation.\n   * @param {Object} [lib] Functions that will be available to operations run\n   *     in a worker.\n   * @api\n   */\n  setOperation(operation, lib) {\n    if (this.processor_) {\n      this.processor_.dispose();\n    }\n\n    this.processor_ = new Processor({\n      operation: operation,\n      imageOps: this.operationType_ === 'image',\n      queue: 1,\n      lib: lib,\n      threads: this.threads_,\n    });\n    this.changed();\n  }\n\n  /**\n   * Update the stored frame state.\n   * @param {import(\"../extent.js\").Extent} extent The view extent (in map units).\n   * @param {number} resolution The view resolution.\n   * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n   * @return {import(\"../Map.js\").FrameState} The updated frame state.\n   * @private\n   */\n  updateFrameState_(extent, resolution, projection) {\n    const frameState = /** @type {import(\"../Map.js\").FrameState} */ (\n      Object.assign({}, this.frameState_)\n    );\n\n    frameState.viewState = /** @type {import(\"../View.js\").State} */ (\n      Object.assign({}, frameState.viewState)\n    );\n\n    const center = getCenter(extent);\n\n    frameState.size[0] = Math.ceil(getWidth(extent) / resolution);\n    frameState.size[1] = Math.ceil(getHeight(extent) / resolution);\n    frameState.extent = [\n      center[0] - (frameState.size[0] * resolution) / 2,\n      center[1] - (frameState.size[1] * resolution) / 2,\n      center[0] + (frameState.size[0] * resolution) / 2,\n      center[1] + (frameState.size[1] * resolution) / 2,\n    ];\n    frameState.time = Date.now();\n\n    const viewState = frameState.viewState;\n    viewState.center = center;\n    viewState.projection = projection;\n    viewState.resolution = resolution;\n    return frameState;\n  }\n\n  /**\n   * Determine if all sources are ready.\n   * @return {boolean} All sources are ready.\n   * @private\n   */\n  allSourcesReady_() {\n    let ready = true;\n    let source;\n    for (let i = 0, ii = this.layers_.length; i < ii; ++i) {\n      source = this.layers_[i].getSource();\n      if (!source || source.getState() !== 'ready') {\n        ready = false;\n        break;\n      }\n    }\n    return ready;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../ImageCanvas.js\").default} Single image.\n   * @override\n   */\n  getImage(extent, resolution, pixelRatio, projection) {\n    if (!this.allSourcesReady_()) {\n      return null;\n    }\n\n    this.tileQueue_.loadMoreTiles(16, 16);\n\n    resolution = this.findNearestResolution(resolution);\n    const frameState = this.updateFrameState_(extent, resolution, projection);\n    this.requestedFrameState_ = frameState;\n\n    // check if we can't reuse the existing ol/ImageCanvas\n    if (this.renderedImageCanvas_) {\n      const renderedResolution = this.renderedImageCanvas_.getResolution();\n      const renderedExtent = this.renderedImageCanvas_.getExtent();\n      if (\n        resolution !== renderedResolution ||\n        !equals(frameState.extent, renderedExtent)\n      ) {\n        this.renderedImageCanvas_ = null;\n      }\n    }\n\n    if (\n      !this.renderedImageCanvas_ ||\n      this.getRevision() !== this.renderedRevision_\n    ) {\n      this.processSources_();\n    }\n\n    if (frameState.animate) {\n      requestAnimationFrame(this.changed.bind(this));\n    }\n\n    return this.renderedImageCanvas_;\n  }\n\n  /**\n   * Start processing source data.\n   * @private\n   */\n  processSources_() {\n    const frameState = this.requestedFrameState_;\n    const len = this.layers_.length;\n    const imageDatas = new Array(len);\n    for (let i = 0; i < len; ++i) {\n      frameState.layerIndex = i;\n      frameState.renderTargets = {};\n      const imageData = getImageData(this.layers_[i], frameState);\n      if (imageData) {\n        imageDatas[i] = imageData;\n      } else {\n        return;\n      }\n    }\n\n    const data = {};\n    this.dispatchEvent(\n      new RasterSourceEvent(RasterEventType.BEFOREOPERATIONS, frameState, data),\n    );\n    this.processor_.process(\n      imageDatas,\n      data,\n      this.onWorkerComplete_.bind(this, frameState),\n    );\n  }\n\n  /**\n   * Called when pixel processing is complete.\n   * @param {import(\"../Map.js\").FrameState} frameState The frame state.\n   * @param {Error} err Any error during processing.\n   * @param {ImageData} output The output image data.\n   * @param {Object|Array<Object>} data The user data (or an array if more than one thread).\n   * @private\n   */\n  onWorkerComplete_(frameState, err, output, data) {\n    if (err || !output) {\n      return;\n    }\n\n    // do nothing if extent or resolution changed\n    const extent = frameState.extent;\n    const resolution = frameState.viewState.resolution;\n    if (\n      resolution !== this.requestedFrameState_.viewState.resolution ||\n      !equals(extent, this.requestedFrameState_.extent)\n    ) {\n      return;\n    }\n\n    let context;\n    if (this.renderedImageCanvas_) {\n      context = this.renderedImageCanvas_.getImage().getContext('2d');\n    } else {\n      const width = Math.round(getWidth(extent) / resolution);\n      const height = Math.round(getHeight(extent) / resolution);\n      context = createCanvasContext2D(width, height);\n      this.renderedImageCanvas_ = new ImageCanvas(\n        extent,\n        resolution,\n        1,\n        context.canvas,\n      );\n    }\n    context.putImageData(output, 0, 0);\n\n    if (frameState.animate) {\n      requestAnimationFrame(this.changed.bind(this));\n    } else {\n      this.changed();\n    }\n    this.renderedRevision_ = this.getRevision();\n\n    this.dispatchEvent(\n      new RasterSourceEvent(RasterEventType.AFTEROPERATIONS, frameState, data),\n    );\n  }\n\n  /**\n   * @param {import(\"../proj/Projection\").default} [projection] Projection.\n   * @return {Array<number>|null} Resolutions.\n   * @override\n   */\n  getResolutions(projection) {\n    if (!this.useResolutions_) {\n      return null;\n    }\n    let resolutions = super.getResolutions();\n    if (!resolutions) {\n      for (let i = 0, ii = this.layers_.length; i < ii; ++i) {\n        const source = this.layers_[i].getSource();\n        resolutions = source.getResolutions(projection);\n        if (resolutions) {\n          break;\n        }\n      }\n    }\n    return resolutions;\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    if (this.processor_) {\n      this.processor_.dispose();\n    }\n    super.disposeInternal();\n  }\n}\n\n/**\n * Clean up and unregister the worker.\n * @function\n * @api\n */\nRasterSource.prototype.dispose;\n\n/**\n * A reusable canvas context.\n * @type {CanvasRenderingContext2D}\n * @private\n */\nlet sharedContext = null;\n\n/**\n * Get image data from a layer.\n * @param {import(\"../layer/Layer.js\").default} layer Layer to render.\n * @param {import(\"../Map.js\").FrameState} frameState The frame state.\n * @return {ImageData} The image data.\n */\nfunction getImageData(layer, frameState) {\n  const renderer = layer.getRenderer();\n  if (!renderer) {\n    throw new Error('Unsupported layer type: ' + layer);\n  }\n\n  if (!renderer.prepareFrame(frameState)) {\n    return null;\n  }\n  const width = frameState.size[0];\n  const height = frameState.size[1];\n  if (width === 0 || height === 0) {\n    return null;\n  }\n  const container = renderer.renderFrame(frameState, null);\n  let element;\n  if (container instanceof HTMLCanvasElement) {\n    element = container;\n  } else {\n    if (container) {\n      element = container.firstElementChild;\n    }\n    if (!(element instanceof HTMLCanvasElement)) {\n      throw new Error('Unsupported rendered element: ' + element);\n    }\n    if (element.width === width && element.height === height) {\n      const context = element.getContext('2d');\n      return context.getImageData(0, 0, width, height);\n    }\n  }\n\n  if (!sharedContext) {\n    sharedContext = createCanvasContext2D(width, height, undefined, {\n      willReadFrequently: true,\n    });\n  } else {\n    const canvas = sharedContext.canvas;\n    if (canvas.width !== width || canvas.height !== height) {\n      sharedContext = createCanvasContext2D(width, height, undefined, {\n        willReadFrequently: true,\n      });\n    } else {\n      sharedContext.clearRect(0, 0, width, height);\n    }\n  }\n  sharedContext.drawImage(element, 0, 0, width, height);\n  return sharedContext.getImageData(0, 0, width, height);\n}\n\n/**\n * Get a list of layer states from a list of layers.\n * @param {Array<import(\"../layer/Layer.js\").default>} layers Layers.\n * @return {Array<import(\"../layer/Layer.js\").State>} The layer states.\n */\nfunction getLayerStatesArray(layers) {\n  return layers.map(function (layer) {\n    return layer.getLayerState();\n  });\n}\n\n/**\n * Create layers for all sources.\n * @param {Array<import(\"./Source.js\").default|import(\"../layer/Layer.js\").default>} sources The sources.\n * @return {Array<import(\"../layer/Layer.js\").default>} Array of layers.\n */\nfunction createLayers(sources) {\n  const len = sources.length;\n  const layers = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    layers[i] = createLayer(sources[i]);\n  }\n  return layers;\n}\n\n/**\n * Create a layer for the provided source.\n * @param {import(\"./Source.js\").default|import(\"../layer/Layer.js\").default} layerOrSource The layer or source.\n * @return {import(\"../layer/Layer.js\").default} The layer.\n */\nfunction createLayer(layerOrSource) {\n  // @type {import(\"../layer/Layer.js\").default}\n  let layer;\n  if (layerOrSource instanceof Source) {\n    if (layerOrSource instanceof TileSource) {\n      layer = new TileLayer({source: layerOrSource});\n    } else if (layerOrSource instanceof ImageSource) {\n      layer = new ImageLayer({source: layerOrSource});\n    }\n  } else {\n    layer = layerOrSource;\n  }\n  return layer;\n}\n\nexport default RasterSource;\n","/**\n * @module ol/net\n */\nimport {getUid} from './util.js';\n\n/**\n * Simple JSONP helper. Supports error callbacks and a custom callback param.\n * The error callback will be called when no JSONP is executed after 10 seconds.\n *\n * @param {string} url Request url. A 'callback' query parameter will be\n *     appended.\n * @param {Function} callback Callback on success.\n * @param {Function} [errback] Callback on error.\n * @param {string} [callbackParam] Custom query parameter for the JSONP\n *     callback. Default is 'callback'.\n */\nexport function jsonp(url, callback, errback, callbackParam) {\n  const script = document.createElement('script');\n  const key = 'olc_' + getUid(callback);\n  function cleanup() {\n    delete window[key];\n    script.parentNode.removeChild(script);\n  }\n  script.async = true;\n  script.src =\n    url +\n    (url.includes('?') ? '&' : '?') +\n    (callbackParam || 'callback') +\n    '=' +\n    key;\n  const timer = setTimeout(function () {\n    cleanup();\n    if (errback) {\n      errback();\n    }\n  }, 10000);\n  window[key] = function (data) {\n    clearTimeout(timer);\n    cleanup();\n    callback(data);\n  };\n  document.head.appendChild(script);\n}\n\nexport class ResponseError extends Error {\n  /**\n   * @param {XMLHttpRequest} response The XHR object.\n   */\n  constructor(response) {\n    const message = 'Unexpected response status: ' + response.status;\n    super(message);\n\n    /**\n     * @type {string}\n     */\n    this.name = 'ResponseError';\n\n    /**\n     * @type {XMLHttpRequest}\n     */\n    this.response = response;\n  }\n}\n\nexport class ClientError extends Error {\n  /**\n   * @param {XMLHttpRequest} client The XHR object.\n   */\n  constructor(client) {\n    super('Failed to issue request');\n\n    /**\n     * @type {string}\n     */\n    this.name = 'ClientError';\n\n    /**\n     * @type {XMLHttpRequest}\n     */\n    this.client = client;\n  }\n}\n\n/**\n * @param {string} url The URL.\n * @return {Promise<Object>} A promise that resolves to the JSON response.\n */\nexport function getJSON(url) {\n  return new Promise(function (resolve, reject) {\n    /**\n     * @param {ProgressEvent<XMLHttpRequest>} event The load event.\n     */\n    function onLoad(event) {\n      const client = event.target;\n      // status will be 0 for file:// urls\n      if (!client.status || (client.status >= 200 && client.status < 300)) {\n        let data;\n        try {\n          data = JSON.parse(client.responseText);\n        } catch (err) {\n          const message = 'Error parsing response text as JSON: ' + err.message;\n          reject(new Error(message));\n          return;\n        }\n        resolve(data);\n        return;\n      }\n\n      reject(new ResponseError(client));\n    }\n\n    /**\n     * @param {ProgressEvent<XMLHttpRequest>} event The error event.\n     */\n    function onError(event) {\n      reject(new ClientError(event.target));\n    }\n\n    const client = new XMLHttpRequest();\n    client.addEventListener('load', onLoad);\n    client.addEventListener('error', onError);\n    client.open('GET', url);\n    client.setRequestHeader('Accept', 'application/json');\n    client.send();\n  });\n}\n\n/**\n * @param {string} base The base URL.\n * @param {string} url The potentially relative URL.\n * @return {string} The full URL.\n */\nexport function resolveUrl(base, url) {\n  if (url.includes('://')) {\n    return url;\n  }\n  return new URL(url, base).href;\n}\n\nlet originalXHR;\nexport function overrideXHR(xhr) {\n  if (typeof XMLHttpRequest !== 'undefined') {\n    originalXHR = XMLHttpRequest;\n  }\n  global.XMLHttpRequest = xhr;\n}\n\nexport function restoreXHR() {\n  global.XMLHttpRequest = originalXHR;\n}\n","/**\n * @module ol/source/TileJSON\n */\n// FIXME check order of async callbacks\n\n/**\n * See https://mapbox.com/developers/api/.\n */\n\nimport {applyTransform, intersects} from '../extent.js';\nimport {jsonp as requestJSONP} from '../net.js';\nimport {get as getProjection, getTransformFromProjections} from '../proj.js';\nimport {createXYZ, extentFromProjection} from '../tilegrid.js';\nimport {createFromTemplates} from '../tileurlfunction.js';\nimport TileImage from './TileImage.js';\n\n/**\n * @typedef {Object} Config\n * @property {string} [name] The name.\n * @property {string} [description] The description.\n * @property {string} [version] The version.\n * @property {string} [attribution] The attribution.\n * @property {string} [template] The template.\n * @property {string} [legend] The legend.\n * @property {string} [scheme] The scheme.\n * @property {Array<string>} tiles The tile URL templates.\n * @property {Array<string>} [grids] Optional grids.\n * @property {number} [minzoom] Minimum zoom level.\n * @property {number} [maxzoom] Maximum zoom level.\n * @property {Array<number>} [bounds] Optional bounds.\n * @property {Array<number>} [center] Optional center.\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {boolean} [jsonp=false] Use JSONP with callback to load the TileJSON.\n * Useful when the server does not support CORS..\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {Config} [tileJSON] TileJSON configuration for this source.\n * If not provided, `url` must be configured.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {number|import(\"../size.js\").Size} [tileSize=[256, 256]] The tile size used by the tile service.\n * Note: `tileSize` and other non-standard TileJSON properties are currently ignored.\n * @property {string} [url] URL to the TileJSON file. If not provided, `tileJSON` must be configured.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Layer source for tile data in TileJSON format.\n * @api\n */\nclass TileJSON extends TileImage {\n  /**\n   * @param {Options} options TileJSON options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      crossOrigin: options.crossOrigin,\n      interpolate: options.interpolate,\n      projection: getProjection('EPSG:3857'),\n      reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n      state: 'loading',\n      tileLoadFunction: options.tileLoadFunction,\n      wrapX: options.wrapX !== undefined ? options.wrapX : true,\n      transition: options.transition,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @type {Config}\n     * @private\n     */\n    this.tileJSON_ = null;\n\n    /**\n     * @type {number|import(\"../size.js\").Size}\n     * @private\n     */\n    this.tileSize_ = options.tileSize;\n\n    if (options.url) {\n      if (options.jsonp) {\n        requestJSONP(\n          options.url,\n          this.handleTileJSONResponse.bind(this),\n          this.handleTileJSONError.bind(this),\n        );\n      } else {\n        const client = new XMLHttpRequest();\n        client.addEventListener('load', this.onXHRLoad_.bind(this));\n        client.addEventListener('error', this.onXHRError_.bind(this));\n        client.open('GET', options.url);\n        client.send();\n      }\n    } else if (options.tileJSON) {\n      this.handleTileJSONResponse(options.tileJSON);\n    } else {\n      throw new Error('Either `url` or `tileJSON` options must be provided');\n    }\n  }\n\n  /**\n   * @private\n   * @param {Event} event The load event.\n   */\n  onXHRLoad_(event) {\n    const client = /** @type {XMLHttpRequest} */ (event.target);\n    // status will be 0 for file:// urls\n    if (!client.status || (client.status >= 200 && client.status < 300)) {\n      let response;\n      try {\n        response = /** @type {Config} */ (JSON.parse(client.responseText));\n      } catch {\n        this.handleTileJSONError();\n        return;\n      }\n      this.handleTileJSONResponse(response);\n    } else {\n      this.handleTileJSONError();\n    }\n  }\n\n  /**\n   * @private\n   * @param {Event} event The error event.\n   */\n  onXHRError_(event) {\n    this.handleTileJSONError();\n  }\n\n  /**\n   * @return {Config} The tilejson object.\n   * @api\n   */\n  getTileJSON() {\n    return this.tileJSON_;\n  }\n\n  /**\n   * @protected\n   * @param {Config} tileJSON Tile JSON.\n   */\n  handleTileJSONResponse(tileJSON) {\n    const epsg4326Projection = getProjection('EPSG:4326');\n\n    const sourceProjection = this.getProjection();\n    let extent;\n    if (tileJSON['bounds'] !== undefined) {\n      const transform = getTransformFromProjections(\n        epsg4326Projection,\n        sourceProjection,\n      );\n      extent = applyTransform(tileJSON['bounds'], transform);\n    }\n\n    const gridExtent = extentFromProjection(sourceProjection);\n    const minZoom = tileJSON['minzoom'] || 0;\n    const maxZoom = tileJSON['maxzoom'] || 22;\n    const tileGrid = createXYZ({\n      extent: gridExtent,\n      maxZoom: maxZoom,\n      minZoom: minZoom,\n      tileSize: this.tileSize_,\n    });\n    this.tileGrid = tileGrid;\n\n    this.tileUrlFunction = createFromTemplates(tileJSON['tiles'], tileGrid);\n\n    if (tileJSON['attribution'] && !this.getAttributions()) {\n      const attributionExtent = extent !== undefined ? extent : gridExtent;\n      this.setAttributions(function (frameState) {\n        if (intersects(attributionExtent, frameState.extent)) {\n          return [tileJSON['attribution']];\n        }\n        return null;\n      });\n    }\n    this.tileJSON_ = tileJSON;\n    this.setState('ready');\n  }\n\n  /**\n   * @protected\n   */\n  handleTileJSONError() {\n    this.setState('error');\n  }\n}\n\nexport default TileJSON;\n","import Circle from 'ol/style/Circle.js';\nimport Fill from 'ol/style/Fill.js';\nimport Icon from 'ol/style/Icon.js';\nimport RenderFeature from 'ol/render/Feature.js';\nimport Stroke from 'ol/style/Stroke.js';\nimport Style from 'ol/style/Style.js';\nimport Text from 'ol/style/Text.js';\nimport { toPromise } from 'ol/functions.js';\nimport { registerFont, checkedFonts } from 'ol/render/canvas.js';\nimport TileState from 'ol/TileState.js';\nimport { VectorTile } from 'ol';\nimport { getUid } from 'ol/util.js';\nimport GeoJSON from 'ol/format/GeoJSON.js';\nimport ImageLayer from 'ol/layer/Image.js';\nimport Layer from 'ol/layer/Layer.js';\nimport LayerGroup from 'ol/layer/Group.js';\nimport MVT from 'ol/format/MVT.js';\nimport Map from 'ol/Map.js';\nimport Raster from 'ol/source/Raster.js';\nimport Source from 'ol/source/Source.js';\nimport TileGrid from 'ol/tilegrid/TileGrid.js';\nimport TileJSON from 'ol/source/TileJSON.js';\nimport TileLayer from 'ol/layer/Tile.js';\nimport VectorLayer from 'ol/layer/Vector.js';\nimport VectorSource from 'ol/source/Vector.js';\nimport VectorTileLayer from 'ol/layer/VectorTile.js';\nimport VectorTileSource, { defaultLoadFunction } from 'ol/source/VectorTile.js';\nimport View from 'ol/View.js';\nimport { METERS_PER_UNIT } from 'ol/proj/Units.js';\nimport { bbox } from 'ol/loadingstrategy.js';\nimport { createXYZ } from 'ol/tilegrid.js';\nimport { get as get$1, getUserProjection, getPointResolution, fromLonLat, equivalent } from 'ol/proj.js';\nimport { getCenter, getTopLeft } from 'ol/extent.js';\nimport BaseEvent from 'ol/events/Event.js';\nimport EventType from 'ol/events/EventType.js';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar csscolorparser = {};\n\nvar parseCSSColor_1;\n// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n    'transparent': [\n        0,\n        0,\n        0,\n        0\n    ],\n    'aliceblue': [\n        240,\n        248,\n        255,\n        1\n    ],\n    'antiquewhite': [\n        250,\n        235,\n        215,\n        1\n    ],\n    'aqua': [\n        0,\n        255,\n        255,\n        1\n    ],\n    'aquamarine': [\n        127,\n        255,\n        212,\n        1\n    ],\n    'azure': [\n        240,\n        255,\n        255,\n        1\n    ],\n    'beige': [\n        245,\n        245,\n        220,\n        1\n    ],\n    'bisque': [\n        255,\n        228,\n        196,\n        1\n    ],\n    'black': [\n        0,\n        0,\n        0,\n        1\n    ],\n    'blanchedalmond': [\n        255,\n        235,\n        205,\n        1\n    ],\n    'blue': [\n        0,\n        0,\n        255,\n        1\n    ],\n    'blueviolet': [\n        138,\n        43,\n        226,\n        1\n    ],\n    'brown': [\n        165,\n        42,\n        42,\n        1\n    ],\n    'burlywood': [\n        222,\n        184,\n        135,\n        1\n    ],\n    'cadetblue': [\n        95,\n        158,\n        160,\n        1\n    ],\n    'chartreuse': [\n        127,\n        255,\n        0,\n        1\n    ],\n    'chocolate': [\n        210,\n        105,\n        30,\n        1\n    ],\n    'coral': [\n        255,\n        127,\n        80,\n        1\n    ],\n    'cornflowerblue': [\n        100,\n        149,\n        237,\n        1\n    ],\n    'cornsilk': [\n        255,\n        248,\n        220,\n        1\n    ],\n    'crimson': [\n        220,\n        20,\n        60,\n        1\n    ],\n    'cyan': [\n        0,\n        255,\n        255,\n        1\n    ],\n    'darkblue': [\n        0,\n        0,\n        139,\n        1\n    ],\n    'darkcyan': [\n        0,\n        139,\n        139,\n        1\n    ],\n    'darkgoldenrod': [\n        184,\n        134,\n        11,\n        1\n    ],\n    'darkgray': [\n        169,\n        169,\n        169,\n        1\n    ],\n    'darkgreen': [\n        0,\n        100,\n        0,\n        1\n    ],\n    'darkgrey': [\n        169,\n        169,\n        169,\n        1\n    ],\n    'darkkhaki': [\n        189,\n        183,\n        107,\n        1\n    ],\n    'darkmagenta': [\n        139,\n        0,\n        139,\n        1\n    ],\n    'darkolivegreen': [\n        85,\n        107,\n        47,\n        1\n    ],\n    'darkorange': [\n        255,\n        140,\n        0,\n        1\n    ],\n    'darkorchid': [\n        153,\n        50,\n        204,\n        1\n    ],\n    'darkred': [\n        139,\n        0,\n        0,\n        1\n    ],\n    'darksalmon': [\n        233,\n        150,\n        122,\n        1\n    ],\n    'darkseagreen': [\n        143,\n        188,\n        143,\n        1\n    ],\n    'darkslateblue': [\n        72,\n        61,\n        139,\n        1\n    ],\n    'darkslategray': [\n        47,\n        79,\n        79,\n        1\n    ],\n    'darkslategrey': [\n        47,\n        79,\n        79,\n        1\n    ],\n    'darkturquoise': [\n        0,\n        206,\n        209,\n        1\n    ],\n    'darkviolet': [\n        148,\n        0,\n        211,\n        1\n    ],\n    'deeppink': [\n        255,\n        20,\n        147,\n        1\n    ],\n    'deepskyblue': [\n        0,\n        191,\n        255,\n        1\n    ],\n    'dimgray': [\n        105,\n        105,\n        105,\n        1\n    ],\n    'dimgrey': [\n        105,\n        105,\n        105,\n        1\n    ],\n    'dodgerblue': [\n        30,\n        144,\n        255,\n        1\n    ],\n    'firebrick': [\n        178,\n        34,\n        34,\n        1\n    ],\n    'floralwhite': [\n        255,\n        250,\n        240,\n        1\n    ],\n    'forestgreen': [\n        34,\n        139,\n        34,\n        1\n    ],\n    'fuchsia': [\n        255,\n        0,\n        255,\n        1\n    ],\n    'gainsboro': [\n        220,\n        220,\n        220,\n        1\n    ],\n    'ghostwhite': [\n        248,\n        248,\n        255,\n        1\n    ],\n    'gold': [\n        255,\n        215,\n        0,\n        1\n    ],\n    'goldenrod': [\n        218,\n        165,\n        32,\n        1\n    ],\n    'gray': [\n        128,\n        128,\n        128,\n        1\n    ],\n    'green': [\n        0,\n        128,\n        0,\n        1\n    ],\n    'greenyellow': [\n        173,\n        255,\n        47,\n        1\n    ],\n    'grey': [\n        128,\n        128,\n        128,\n        1\n    ],\n    'honeydew': [\n        240,\n        255,\n        240,\n        1\n    ],\n    'hotpink': [\n        255,\n        105,\n        180,\n        1\n    ],\n    'indianred': [\n        205,\n        92,\n        92,\n        1\n    ],\n    'indigo': [\n        75,\n        0,\n        130,\n        1\n    ],\n    'ivory': [\n        255,\n        255,\n        240,\n        1\n    ],\n    'khaki': [\n        240,\n        230,\n        140,\n        1\n    ],\n    'lavender': [\n        230,\n        230,\n        250,\n        1\n    ],\n    'lavenderblush': [\n        255,\n        240,\n        245,\n        1\n    ],\n    'lawngreen': [\n        124,\n        252,\n        0,\n        1\n    ],\n    'lemonchiffon': [\n        255,\n        250,\n        205,\n        1\n    ],\n    'lightblue': [\n        173,\n        216,\n        230,\n        1\n    ],\n    'lightcoral': [\n        240,\n        128,\n        128,\n        1\n    ],\n    'lightcyan': [\n        224,\n        255,\n        255,\n        1\n    ],\n    'lightgoldenrodyellow': [\n        250,\n        250,\n        210,\n        1\n    ],\n    'lightgray': [\n        211,\n        211,\n        211,\n        1\n    ],\n    'lightgreen': [\n        144,\n        238,\n        144,\n        1\n    ],\n    'lightgrey': [\n        211,\n        211,\n        211,\n        1\n    ],\n    'lightpink': [\n        255,\n        182,\n        193,\n        1\n    ],\n    'lightsalmon': [\n        255,\n        160,\n        122,\n        1\n    ],\n    'lightseagreen': [\n        32,\n        178,\n        170,\n        1\n    ],\n    'lightskyblue': [\n        135,\n        206,\n        250,\n        1\n    ],\n    'lightslategray': [\n        119,\n        136,\n        153,\n        1\n    ],\n    'lightslategrey': [\n        119,\n        136,\n        153,\n        1\n    ],\n    'lightsteelblue': [\n        176,\n        196,\n        222,\n        1\n    ],\n    'lightyellow': [\n        255,\n        255,\n        224,\n        1\n    ],\n    'lime': [\n        0,\n        255,\n        0,\n        1\n    ],\n    'limegreen': [\n        50,\n        205,\n        50,\n        1\n    ],\n    'linen': [\n        250,\n        240,\n        230,\n        1\n    ],\n    'magenta': [\n        255,\n        0,\n        255,\n        1\n    ],\n    'maroon': [\n        128,\n        0,\n        0,\n        1\n    ],\n    'mediumaquamarine': [\n        102,\n        205,\n        170,\n        1\n    ],\n    'mediumblue': [\n        0,\n        0,\n        205,\n        1\n    ],\n    'mediumorchid': [\n        186,\n        85,\n        211,\n        1\n    ],\n    'mediumpurple': [\n        147,\n        112,\n        219,\n        1\n    ],\n    'mediumseagreen': [\n        60,\n        179,\n        113,\n        1\n    ],\n    'mediumslateblue': [\n        123,\n        104,\n        238,\n        1\n    ],\n    'mediumspringgreen': [\n        0,\n        250,\n        154,\n        1\n    ],\n    'mediumturquoise': [\n        72,\n        209,\n        204,\n        1\n    ],\n    'mediumvioletred': [\n        199,\n        21,\n        133,\n        1\n    ],\n    'midnightblue': [\n        25,\n        25,\n        112,\n        1\n    ],\n    'mintcream': [\n        245,\n        255,\n        250,\n        1\n    ],\n    'mistyrose': [\n        255,\n        228,\n        225,\n        1\n    ],\n    'moccasin': [\n        255,\n        228,\n        181,\n        1\n    ],\n    'navajowhite': [\n        255,\n        222,\n        173,\n        1\n    ],\n    'navy': [\n        0,\n        0,\n        128,\n        1\n    ],\n    'oldlace': [\n        253,\n        245,\n        230,\n        1\n    ],\n    'olive': [\n        128,\n        128,\n        0,\n        1\n    ],\n    'olivedrab': [\n        107,\n        142,\n        35,\n        1\n    ],\n    'orange': [\n        255,\n        165,\n        0,\n        1\n    ],\n    'orangered': [\n        255,\n        69,\n        0,\n        1\n    ],\n    'orchid': [\n        218,\n        112,\n        214,\n        1\n    ],\n    'palegoldenrod': [\n        238,\n        232,\n        170,\n        1\n    ],\n    'palegreen': [\n        152,\n        251,\n        152,\n        1\n    ],\n    'paleturquoise': [\n        175,\n        238,\n        238,\n        1\n    ],\n    'palevioletred': [\n        219,\n        112,\n        147,\n        1\n    ],\n    'papayawhip': [\n        255,\n        239,\n        213,\n        1\n    ],\n    'peachpuff': [\n        255,\n        218,\n        185,\n        1\n    ],\n    'peru': [\n        205,\n        133,\n        63,\n        1\n    ],\n    'pink': [\n        255,\n        192,\n        203,\n        1\n    ],\n    'plum': [\n        221,\n        160,\n        221,\n        1\n    ],\n    'powderblue': [\n        176,\n        224,\n        230,\n        1\n    ],\n    'purple': [\n        128,\n        0,\n        128,\n        1\n    ],\n    'rebeccapurple': [\n        102,\n        51,\n        153,\n        1\n    ],\n    'red': [\n        255,\n        0,\n        0,\n        1\n    ],\n    'rosybrown': [\n        188,\n        143,\n        143,\n        1\n    ],\n    'royalblue': [\n        65,\n        105,\n        225,\n        1\n    ],\n    'saddlebrown': [\n        139,\n        69,\n        19,\n        1\n    ],\n    'salmon': [\n        250,\n        128,\n        114,\n        1\n    ],\n    'sandybrown': [\n        244,\n        164,\n        96,\n        1\n    ],\n    'seagreen': [\n        46,\n        139,\n        87,\n        1\n    ],\n    'seashell': [\n        255,\n        245,\n        238,\n        1\n    ],\n    'sienna': [\n        160,\n        82,\n        45,\n        1\n    ],\n    'silver': [\n        192,\n        192,\n        192,\n        1\n    ],\n    'skyblue': [\n        135,\n        206,\n        235,\n        1\n    ],\n    'slateblue': [\n        106,\n        90,\n        205,\n        1\n    ],\n    'slategray': [\n        112,\n        128,\n        144,\n        1\n    ],\n    'slategrey': [\n        112,\n        128,\n        144,\n        1\n    ],\n    'snow': [\n        255,\n        250,\n        250,\n        1\n    ],\n    'springgreen': [\n        0,\n        255,\n        127,\n        1\n    ],\n    'steelblue': [\n        70,\n        130,\n        180,\n        1\n    ],\n    'tan': [\n        210,\n        180,\n        140,\n        1\n    ],\n    'teal': [\n        0,\n        128,\n        128,\n        1\n    ],\n    'thistle': [\n        216,\n        191,\n        216,\n        1\n    ],\n    'tomato': [\n        255,\n        99,\n        71,\n        1\n    ],\n    'turquoise': [\n        64,\n        224,\n        208,\n        1\n    ],\n    'violet': [\n        238,\n        130,\n        238,\n        1\n    ],\n    'wheat': [\n        245,\n        222,\n        179,\n        1\n    ],\n    'white': [\n        255,\n        255,\n        255,\n        1\n    ],\n    'whitesmoke': [\n        245,\n        245,\n        245,\n        1\n    ],\n    'yellow': [\n        255,\n        255,\n        0,\n        1\n    ],\n    'yellowgreen': [\n        154,\n        205,\n        50,\n        1\n    ]\n};\nfunction clamp_css_byte(i) {\n    // Clamp to integer 0 .. 255.\n    i = Math.round(i);\n    // Seems to be what Chrome does (vs truncation).\n    return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clamp_css_float(f) {\n    // Clamp to float 0.0 .. 1.0.\n    return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parse_css_int(str) {\n    // int or percentage.\n    if (str[str.length - 1] === '%')\n        return clamp_css_byte(parseFloat(str) / 100 * 255);\n    return clamp_css_byte(parseInt(str));\n}\nfunction parse_css_float(str) {\n    // float or percentage.\n    if (str[str.length - 1] === '%')\n        return clamp_css_float(parseFloat(str) / 100);\n    return clamp_css_float(parseFloat(str));\n}\nfunction css_hue_to_rgb(m1, m2, h) {\n    if (h < 0)\n        h += 1;\n    else if (h > 1)\n        h -= 1;\n    if (h * 6 < 1)\n        return m1 + (m2 - m1) * h * 6;\n    if (h * 2 < 1)\n        return m2;\n    if (h * 3 < 2)\n        return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    return m1;\n}\nfunction parseCSSColor(css_str) {\n    // Remove all whitespace, not compliant, but should just be more accepting.\n    var str = css_str.replace(/ /g, '').toLowerCase();\n    // Color keywords (and transparent) lookup.\n    if (str in kCSSColorTable)\n        return kCSSColorTable[str].slice();\n    // dup.\n    // #abc and #abc123 syntax.\n    if (str[0] === '#') {\n        if (str.length === 4) {\n            var iv = parseInt(str.substr(1), 16);\n            // TODO(deanm): Stricter parsing.\n            if (!(iv >= 0 && iv <= 4095))\n                return null;\n            // Covers NaN.\n            return [\n                (iv & 3840) >> 4 | (iv & 3840) >> 8,\n                iv & 240 | (iv & 240) >> 4,\n                iv & 15 | (iv & 15) << 4,\n                1\n            ];\n        } else if (str.length === 7) {\n            var iv = parseInt(str.substr(1), 16);\n            // TODO(deanm): Stricter parsing.\n            if (!(iv >= 0 && iv <= 16777215))\n                return null;\n            // Covers NaN.\n            return [\n                (iv & 16711680) >> 16,\n                (iv & 65280) >> 8,\n                iv & 255,\n                1\n            ];\n        }\n        return null;\n    }\n    var op = str.indexOf('('), ep = str.indexOf(')');\n    if (op !== -1 && ep + 1 === str.length) {\n        var fname = str.substr(0, op);\n        var params = str.substr(op + 1, ep - (op + 1)).split(',');\n        var alpha = 1;\n        // To allow case fallthrough.\n        switch (fname) {\n        case 'rgba':\n            if (params.length !== 4)\n                return null;\n            alpha = parse_css_float(params.pop());\n        // Fall through.\n        case 'rgb':\n            if (params.length !== 3)\n                return null;\n            return [\n                parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha\n            ];\n        case 'hsla':\n            if (params.length !== 4)\n                return null;\n            alpha = parse_css_float(params.pop());\n        // Fall through.\n        case 'hsl':\n            if (params.length !== 3)\n                return null;\n            var h = (parseFloat(params[0]) % 360 + 360) % 360 / 360;\n            // 0 .. 1\n            // NOTE(deanm): According to the CSS spec s/l should only be\n            // percentages, but we don't bother and let float or percentage.\n            var s = parse_css_float(params[1]);\n            var l = parse_css_float(params[2]);\n            var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n            var m1 = l * 2 - m2;\n            return [\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h + 1 / 3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h - 1 / 3) * 255),\n                alpha\n            ];\n        default:\n            return null;\n        }\n    }\n    return null;\n}\ntry {\n    parseCSSColor_1 = csscolorparser.parseCSSColor = parseCSSColor;\n} catch (e) {\n}\n\n//      \n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n    constructor(r, g, b, a = 1) {\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n    }\n    /**\n     * Parses valid CSS color strings and returns a `Color` instance.\n     * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n     */\n    static parse(input) {\n        if (!input) {\n            return undefined;\n        }\n        if (input instanceof Color) {\n            return input;\n        }\n        if (typeof input !== 'string') {\n            return undefined;\n        }\n        const rgba = parseCSSColor_1(input);\n        if (!rgba) {\n            return undefined;\n        }\n        return new Color(rgba[0] / 255 * rgba[3], rgba[1] / 255 * rgba[3], rgba[2] / 255 * rgba[3], rgba[3]);\n    }\n    /**\n     * Returns an RGBA string representing the color value.\n     *\n     * @returns An RGBA string.\n     * @example\n     * var purple = new Color.parse('purple');\n     * purple.toString; // = \"rgba(128,0,128,1)\"\n     * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n     * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n     */\n    toString() {\n        const [r, g, b, a] = this.toArray();\n        return `rgba(${ Math.round(r) },${ Math.round(g) },${ Math.round(b) },${ a })`;\n    }\n    /**\n     * Returns an RGBA array of values representing the color, unpremultiplied by A.\n     *\n     * @returns An array of RGBA color values in the range [0, 255].\n     */\n    toArray() {\n        const {r, g, b, a} = this;\n        return a === 0 ? [\n            0,\n            0,\n            0,\n            0\n        ] : [\n            r * 255 / a,\n            g * 255 / a,\n            b * 255 / a,\n            a\n        ];\n    }\n    /**\n     * Returns a RGBA array of float values representing the color, unpremultiplied by A.\n     *\n     * @returns An array of RGBA color values in the range [0, 1].\n     */\n    toArray01() {\n        const {r, g, b, a} = this;\n        return a === 0 ? [\n            0,\n            0,\n            0,\n            0\n        ] : [\n            r / a,\n            g / a,\n            b / a,\n            a\n        ];\n    }\n    /**\n     * Returns an RGBA array of values representing the color, premultiplied by A.\n     *\n     * @returns An array of RGBA color values in the range [0, 1].\n     */\n    toArray01PremultipliedAlpha() {\n        const {r, g, b, a} = this;\n        return [\n            r,\n            g,\n            b,\n            a\n        ];\n    }\n}\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\nColor.blue = new Color(0, 0, 1, 1);\nvar Color$1 = Color;\n\nfunction convertLiteral(value) {\n    return typeof value === 'object' ? [\n        'literal',\n        value\n    ] : value;\n}\nfunction convertFunction(parameters, propertySpec) {\n    let stops = parameters.stops;\n    if (!stops) {\n        // identity function\n        return convertIdentityFunction(parameters, propertySpec);\n    }\n    const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n    const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n    const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n    stops = stops.map(stop => {\n        if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n            return [\n                stop[0],\n                convertTokenString(stop[1])\n            ];\n        }\n        return [\n            stop[0],\n            convertLiteral(stop[1])\n        ];\n    });\n    if (zoomAndFeatureDependent) {\n        return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n    } else if (zoomDependent) {\n        return convertZoomFunction(parameters, propertySpec, stops);\n    } else {\n        return convertPropertyFunction(parameters, propertySpec, stops);\n    }\n}\nfunction convertIdentityFunction(parameters, propertySpec) {\n    const get = [\n        'get',\n        parameters.property\n    ];\n    if (parameters.default === undefined) {\n        // By default, expressions for string-valued properties get coerced. To preserve\n        // legacy function semantics, insert an explicit assertion instead.\n        return propertySpec.type === 'string' ? [\n            'string',\n            get\n        ] : get;\n    } else if (propertySpec.type === 'enum') {\n        return [\n            'match',\n            get,\n            Object.keys(propertySpec.values),\n            get,\n            parameters.default\n        ];\n    } else {\n        const expression = [\n            propertySpec.type === 'color' ? 'to-color' : propertySpec.type,\n            get,\n            convertLiteral(parameters.default)\n        ];\n        if (propertySpec.type === 'array') {\n            expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n        }\n        return expression;\n    }\n}\nfunction getInterpolateOperator(parameters) {\n    switch (parameters.colorSpace) {\n    case 'hcl':\n        return 'interpolate-hcl';\n    case 'lab':\n        return 'interpolate-lab';\n    default:\n        return 'interpolate';\n    }\n}\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n    const featureFunctionParameters = {};\n    const featureFunctionStops = {};\n    const zoomStops = [];\n    for (let s = 0; s < stops.length; s++) {\n        const stop = stops[s];\n        const zoom = stop[0].zoom;\n        if (featureFunctionParameters[zoom] === undefined) {\n            featureFunctionParameters[zoom] = {\n                zoom,\n                type: parameters.type,\n                property: parameters.property,\n                default: parameters.default\n            };\n            featureFunctionStops[zoom] = [];\n            zoomStops.push(zoom);\n        }\n        featureFunctionStops[zoom].push([\n            stop[0].value,\n            stop[1]\n        ]);\n    }\n    // the interpolation type for the zoom dimension of a zoom-and-property\n    // function is determined directly from the style property specification\n    // for which it's being used: linear for interpolatable properties, step\n    // otherwise.\n    const functionType = getFunctionType({}, propertySpec);\n    if (functionType === 'exponential') {\n        const expression = [\n            getInterpolateOperator(parameters),\n            ['linear'],\n            ['zoom']\n        ];\n        for (const z of zoomStops) {\n            const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n            appendStopPair(expression, z, output, false);\n        }\n        return expression;\n    } else {\n        const expression = [\n            'step',\n            ['zoom']\n        ];\n        for (const z of zoomStops) {\n            const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n            appendStopPair(expression, z, output, true);\n        }\n        fixupDegenerateStepCurve(expression);\n        return expression;\n    }\n}\nfunction coalesce(a, b) {\n    if (a !== undefined)\n        return a;\n    if (b !== undefined)\n        return b;\n}\nfunction getFallback(parameters, propertySpec) {\n    const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n    /*\n     * Some fields with type: resolvedImage have an undefined default.\n     * Because undefined is an invalid value for resolvedImage, set fallback to\n     * an empty string instead of undefined to ensure output\n     * passes validation.\n     */\n    if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n        return '';\n    }\n    return defaultValue;\n}\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n    const type = getFunctionType(parameters, propertySpec);\n    const get = [\n        'get',\n        parameters.property\n    ];\n    if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n        const expression = ['case'];\n        for (const stop of stops) {\n            expression.push([\n                '==',\n                get,\n                stop[0]\n            ], stop[1]);\n        }\n        expression.push(getFallback(parameters, propertySpec));\n        return expression;\n    } else if (type === 'categorical') {\n        const expression = [\n            'match',\n            get\n        ];\n        for (const stop of stops) {\n            appendStopPair(expression, stop[0], stop[1], false);\n        }\n        expression.push(getFallback(parameters, propertySpec));\n        return expression;\n    } else if (type === 'interval') {\n        const expression = [\n            'step',\n            [\n                'number',\n                get\n            ]\n        ];\n        for (const stop of stops) {\n            appendStopPair(expression, stop[0], stop[1], true);\n        }\n        fixupDegenerateStepCurve(expression);\n        return parameters.default === undefined ? expression : [\n            'case',\n            [\n                '==',\n                [\n                    'typeof',\n                    get\n                ],\n                'number'\n            ],\n            expression,\n            convertLiteral(parameters.default)\n        ];\n    } else if (type === 'exponential') {\n        const base = parameters.base !== undefined ? parameters.base : 1;\n        const expression = [\n            getInterpolateOperator(parameters),\n            base === 1 ? ['linear'] : [\n                'exponential',\n                base\n            ],\n            [\n                'number',\n                get\n            ]\n        ];\n        for (const stop of stops) {\n            appendStopPair(expression, stop[0], stop[1], false);\n        }\n        return parameters.default === undefined ? expression : [\n            'case',\n            [\n                '==',\n                [\n                    'typeof',\n                    get\n                ],\n                'number'\n            ],\n            expression,\n            convertLiteral(parameters.default)\n        ];\n    } else {\n        throw new Error(`Unknown property function type ${ type }`);\n    }\n}\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n    const type = getFunctionType(parameters, propertySpec);\n    let expression;\n    let isStep = false;\n    if (type === 'interval') {\n        expression = [\n            'step',\n            input\n        ];\n        isStep = true;\n    } else if (type === 'exponential') {\n        const base = parameters.base !== undefined ? parameters.base : 1;\n        expression = [\n            getInterpolateOperator(parameters),\n            base === 1 ? ['linear'] : [\n                'exponential',\n                base\n            ],\n            input\n        ];\n    } else {\n        throw new Error(`Unknown zoom function type \"${ type }\"`);\n    }\n    for (const stop of stops) {\n        appendStopPair(expression, stop[0], stop[1], isStep);\n    }\n    fixupDegenerateStepCurve(expression);\n    return expression;\n}\nfunction fixupDegenerateStepCurve(expression) {\n    // degenerate step curve (i.e. a constant function): add a noop stop\n    if (expression[0] === 'step' && expression.length === 3) {\n        expression.push(0);\n        expression.push(expression[3]);\n    }\n}\nfunction appendStopPair(curve, input, output, isStep) {\n    // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n    // https://github.com/mapbox/mapbox-gl-js/issues/4107\n    if (curve.length > 3 && input === curve[curve.length - 2]) {\n        return;\n    }\n    // step curves don't get the first input value, as it is redundant.\n    if (!(isStep && curve.length === 2)) {\n        curve.push(input);\n    }\n    curve.push(output);\n}\nfunction getFunctionType(parameters, propertySpec) {\n    if (parameters.type) {\n        return parameters.type;\n    } else {\n        return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n    }\n}\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nfunction convertTokenString(s) {\n    const result = ['concat'];\n    const re = /{([^{}]+)}/g;\n    let pos = 0;\n    for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n        const literal = s.slice(pos, re.lastIndex - match[0].length);\n        pos = re.lastIndex;\n        if (literal.length > 0)\n            result.push(literal);\n        result.push([\n            'get',\n            match[1]\n        ]);\n    }\n    if (result.length === 1) {\n        return s;\n    }\n    if (pos < s.length) {\n        result.push(s.slice(pos));\n    } else if (result.length === 2) {\n        return [\n            'to-string',\n            result[1]\n        ];\n    }\n    return result;\n}\n\n//      \nclass ParsingError extends Error {\n    constructor(key, message) {\n        super(message);\n        this.message = message;\n        this.key = key;\n    }\n}\nvar ParsingError$1 = ParsingError;\n\n//      \n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n    constructor(parent, bindings = []) {\n        this.parent = parent;\n        this.bindings = {};\n        for (const [name, expression] of bindings) {\n            this.bindings[name] = expression;\n        }\n    }\n    concat(bindings) {\n        return new Scope(this, bindings);\n    }\n    get(name) {\n        if (this.bindings[name]) {\n            return this.bindings[name];\n        }\n        if (this.parent) {\n            return this.parent.get(name);\n        }\n        throw new Error(`${ name } not found in scope.`);\n    }\n    has(name) {\n        if (this.bindings[name])\n            return true;\n        return this.parent ? this.parent.has(name) : false;\n    }\n}\nvar Scope$1 = Scope;\n\n//      \nconst NullType = { kind: 'null' };\nconst NumberType = { kind: 'number' };\nconst StringType = { kind: 'string' };\nconst BooleanType = { kind: 'boolean' };\nconst ColorType = { kind: 'color' };\nconst ObjectType = { kind: 'object' };\nconst ValueType = { kind: 'value' };\nconst ErrorType = { kind: 'error' };\nconst CollatorType = { kind: 'collator' };\nconst FormattedType = { kind: 'formatted' };\nconst ResolvedImageType = { kind: 'resolvedImage' };\nfunction array$1(itemType, N) {\n    return {\n        kind: 'array',\n        itemType,\n        N\n    };\n}\nfunction toString$1(type) {\n    if (type.kind === 'array') {\n        const itemType = toString$1(type.itemType);\n        return typeof type.N === 'number' ? `array<${ itemType }, ${ type.N }>` : type.itemType.kind === 'value' ? 'array' : `array<${ itemType }>`;\n    } else {\n        return type.kind;\n    }\n}\nconst valueMemberTypes = [\n    NullType,\n    NumberType,\n    StringType,\n    BooleanType,\n    ColorType,\n    FormattedType,\n    ObjectType,\n    array$1(ValueType),\n    ResolvedImageType\n];\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nfunction checkSubtype(expected, t) {\n    if (t.kind === 'error') {\n        // Error is a subtype of every type\n        return null;\n    } else if (expected.kind === 'array') {\n        if (t.kind === 'array' && (t.N === 0 && t.itemType.kind === 'value' || !checkSubtype(expected.itemType, t.itemType)) && (typeof expected.N !== 'number' || expected.N === t.N)) {\n            return null;\n        }\n    } else if (expected.kind === t.kind) {\n        return null;\n    } else if (expected.kind === 'value') {\n        for (const memberType of valueMemberTypes) {\n            if (!checkSubtype(memberType, t)) {\n                return null;\n            }\n        }\n    }\n    return `Expected ${ toString$1(expected) } but found ${ toString$1(t) } instead.`;\n}\nfunction isValidType(provided, allowedTypes) {\n    return allowedTypes.some(t => t.kind === provided.kind);\n}\nfunction isValidNativeType(provided, allowedTypes) {\n    return allowedTypes.some(t => {\n        if (t === 'null') {\n            return provided === null;\n        } else if (t === 'array') {\n            return Array.isArray(provided);\n        } else if (t === 'object') {\n            return provided && !Array.isArray(provided) && typeof provided === 'object';\n        } else {\n            return t === typeof provided;\n        }\n    });\n}\n\n//      \n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\nclass Collator {\n    constructor(caseSensitive, diacriticSensitive, locale) {\n        if (caseSensitive)\n            this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n        else\n            this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n        this.locale = locale;\n        this.collator = new Intl.Collator(this.locale ? this.locale : [], {\n            sensitivity: this.sensitivity,\n            usage: 'search'\n        });\n    }\n    compare(lhs, rhs) {\n        return this.collator.compare(lhs, rhs);\n    }\n    resolvedLocale() {\n        // We create a Collator without \"usage: search\" because we don't want\n        // the search options encoded in our result (e.g. \"en-u-co-search\")\n        return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;\n    }\n}\n\n//      \nclass FormattedSection {\n    constructor(text, image, scale, fontStack, textColor) {\n        // combine characters so that diacritic marks are not separate code points\n        this.text = text.normalize ? text.normalize() : text;\n        this.image = image;\n        this.scale = scale;\n        this.fontStack = fontStack;\n        this.textColor = textColor;\n    }\n}\nclass Formatted {\n    constructor(sections) {\n        this.sections = sections;\n    }\n    static fromString(unformatted) {\n        return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n    }\n    isEmpty() {\n        if (this.sections.length === 0)\n            return true;\n        return !this.sections.some(section => section.text.length !== 0 || section.image && section.image.name.length !== 0);\n    }\n    static factory(text) {\n        if (text instanceof Formatted) {\n            return text;\n        } else {\n            return Formatted.fromString(text);\n        }\n    }\n    toString() {\n        if (this.sections.length === 0)\n            return '';\n        return this.sections.map(section => section.text).join('');\n    }\n    serialize() {\n        const serialized = ['format'];\n        for (const section of this.sections) {\n            if (section.image) {\n                serialized.push([\n                    'image',\n                    section.image.name\n                ]);\n                continue;\n            }\n            serialized.push(section.text);\n            const options = {};\n            if (section.fontStack) {\n                options['text-font'] = [\n                    'literal',\n                    section.fontStack.split(',')\n                ];\n            }\n            if (section.scale) {\n                options['font-scale'] = section.scale;\n            }\n            if (section.textColor) {\n                options['text-color'] = ['rgba'].concat(section.textColor.toArray());\n            }\n            serialized.push(options);\n        }\n        return serialized;\n    }\n}\n\n//      \nclass ResolvedImage {\n    constructor(options) {\n        this.name = options.name;\n        this.available = options.available;\n    }\n    toString() {\n        return this.name;\n    }\n    static fromString(name) {\n        if (!name)\n            return null;\n        // treat empty values as no image\n        return new ResolvedImage({\n            name,\n            available: false\n        });\n    }\n    serialize() {\n        return [\n            'image',\n            this.name\n        ];\n    }\n}\n\nfunction validateRGBA(r, g, b, a) {\n    if (!(typeof r === 'number' && r >= 0 && r <= 255 && typeof g === 'number' && g >= 0 && g <= 255 && typeof b === 'number' && b >= 0 && b <= 255)) {\n        const value = typeof a === 'number' ? [\n            r,\n            g,\n            b,\n            a\n        ] : [\n            r,\n            g,\n            b\n        ];\n        return `Invalid rgba value [${ value.join(', ') }]: 'r', 'g', and 'b' must be between 0 and 255.`;\n    }\n    if (!(typeof a === 'undefined' || typeof a === 'number' && a >= 0 && a <= 1)) {\n        return `Invalid rgba value [${ [\n            r,\n            g,\n            b,\n            a\n        ].join(', ') }]: 'a' must be between 0 and 1.`;\n    }\n    return null;\n}\nfunction isValue(mixed) {\n    if (mixed === null) {\n        return true;\n    } else if (typeof mixed === 'string') {\n        return true;\n    } else if (typeof mixed === 'boolean') {\n        return true;\n    } else if (typeof mixed === 'number') {\n        return true;\n    } else if (mixed instanceof Color$1) {\n        return true;\n    } else if (mixed instanceof Collator) {\n        return true;\n    } else if (mixed instanceof Formatted) {\n        return true;\n    } else if (mixed instanceof ResolvedImage) {\n        return true;\n    } else if (Array.isArray(mixed)) {\n        for (const item of mixed) {\n            if (!isValue(item)) {\n                return false;\n            }\n        }\n        return true;\n    } else if (typeof mixed === 'object') {\n        for (const key in mixed) {\n            if (!isValue(mixed[key])) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        return false;\n    }\n}\nfunction typeOf(value) {\n    if (value === null) {\n        return NullType;\n    } else if (typeof value === 'string') {\n        return StringType;\n    } else if (typeof value === 'boolean') {\n        return BooleanType;\n    } else if (typeof value === 'number') {\n        return NumberType;\n    } else if (value instanceof Color$1) {\n        return ColorType;\n    } else if (value instanceof Collator) {\n        return CollatorType;\n    } else if (value instanceof Formatted) {\n        return FormattedType;\n    } else if (value instanceof ResolvedImage) {\n        return ResolvedImageType;\n    } else if (Array.isArray(value)) {\n        const length = value.length;\n        let itemType;\n        for (const item of value) {\n            const t = typeOf(item);\n            if (!itemType) {\n                itemType = t;\n            } else if (itemType === t) {\n                continue;\n            } else {\n                itemType = ValueType;\n                break;\n            }\n        }\n        return array$1(itemType || ValueType, length);\n    } else {\n        return ObjectType;\n    }\n}\nfunction toString(value) {\n    const type = typeof value;\n    if (value === null) {\n        return '';\n    } else if (type === 'string' || type === 'number' || type === 'boolean') {\n        return String(value);\n    } else if (value instanceof Color$1 || value instanceof Formatted || value instanceof ResolvedImage) {\n        return value.toString();\n    } else {\n        return JSON.stringify(value);\n    }\n}\n\nclass Literal {\n    constructor(type, value) {\n        this.type = type;\n        this.value = value;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`'literal' expression requires exactly one argument, but found ${ args.length - 1 } instead.`);\n        if (!isValue(args[1]))\n            return context.error(`invalid value`);\n        const value = args[1];\n        let type = typeOf(value);\n        // special case: infer the item type if possible for zero-length arrays\n        const expected = context.expectedType;\n        if (type.kind === 'array' && type.N === 0 && expected && expected.kind === 'array' && (typeof expected.N !== 'number' || expected.N === 0)) {\n            type = expected;\n        }\n        return new Literal(type, value);\n    }\n    evaluate() {\n        return this.value;\n    }\n    eachChild() {\n    }\n    outputDefined() {\n        return true;\n    }\n    serialize() {\n        if (this.type.kind === 'array' || this.type.kind === 'object') {\n            return [\n                'literal',\n                this.value\n            ];\n        } else if (this.value instanceof Color$1) {\n            // Constant-folding can generate Literal expressions that you\n            // couldn't actually generate with a \"literal\" expression,\n            // so we have to implement an equivalent serialization here\n            return ['rgba'].concat(this.value.toArray());\n        } else if (this.value instanceof Formatted) {\n            // Same as Color\n            return this.value.serialize();\n        } else {\n            return this.value;\n        }\n    }\n}\nvar Literal$1 = Literal;\n\n//      \nclass RuntimeError {\n    constructor(message) {\n        this.name = 'ExpressionEvaluationError';\n        this.message = message;\n    }\n    toJSON() {\n        return this.message;\n    }\n}\nvar RuntimeError$1 = RuntimeError;\n\nconst types$2 = {\n    string: StringType,\n    number: NumberType,\n    boolean: BooleanType,\n    object: ObjectType\n};\nclass Assertion {\n    constructor(type, args) {\n        this.type = type;\n        this.args = args;\n    }\n    static parse(args, context) {\n        if (args.length < 2)\n            return context.error(`Expected at least one argument.`);\n        let i = 1;\n        let type;\n        const name = args[0];\n        if (name === 'array') {\n            let itemType;\n            if (args.length > 2) {\n                const type = args[1];\n                if (typeof type !== 'string' || !(type in types$2) || type === 'object')\n                    return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n                itemType = types$2[type];\n                i++;\n            } else {\n                itemType = ValueType;\n            }\n            let N;\n            if (args.length > 3) {\n                if (args[2] !== null && (typeof args[2] !== 'number' || args[2] < 0 || args[2] !== Math.floor(args[2]))) {\n                    return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n                }\n                N = args[2];\n                i++;\n            }\n            type = array$1(itemType, N);\n        } else {\n            type = types$2[name];\n        }\n        const parsed = [];\n        for (; i < args.length; i++) {\n            const input = context.parse(args[i], i, ValueType);\n            if (!input)\n                return null;\n            parsed.push(input);\n        }\n        return new Assertion(type, parsed);\n    }\n    evaluate(ctx) {\n        for (let i = 0; i < this.args.length; i++) {\n            const value = this.args[i].evaluate(ctx);\n            const error = checkSubtype(this.type, typeOf(value));\n            if (!error) {\n                return value;\n            } else if (i === this.args.length - 1) {\n                throw new RuntimeError$1(`Expected value to be of type ${ toString$1(this.type) }, but found ${ toString$1(typeOf(value)) } instead.`);\n            }\n        }\n        return null;\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return this.args.every(arg => arg.outputDefined());\n    }\n    serialize() {\n        const type = this.type;\n        const serialized = [type.kind];\n        if (type.kind === 'array') {\n            const itemType = type.itemType;\n            if (itemType.kind === 'string' || itemType.kind === 'number' || itemType.kind === 'boolean') {\n                serialized.push(itemType.kind);\n                const N = type.N;\n                if (typeof N === 'number' || this.args.length > 1) {\n                    serialized.push(N);\n                }\n            }\n        }\n        return serialized.concat(this.args.map(arg => arg.serialize()));\n    }\n}\nvar Assertion$1 = Assertion;\n\n//      \nclass FormatExpression {\n    constructor(sections) {\n        this.type = FormattedType;\n        this.sections = sections;\n    }\n    static parse(args, context) {\n        if (args.length < 2) {\n            return context.error(`Expected at least one argument.`);\n        }\n        const firstArg = args[1];\n        if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n            return context.error(`First argument must be an image or text section.`);\n        }\n        const sections = [];\n        let nextTokenMayBeObject = false;\n        for (let i = 1; i <= args.length - 1; ++i) {\n            const arg = args[i];\n            if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n                nextTokenMayBeObject = false;\n                let scale = null;\n                if (arg['font-scale']) {\n                    scale = context.parse(arg['font-scale'], 1, NumberType);\n                    if (!scale)\n                        return null;\n                }\n                let font = null;\n                if (arg['text-font']) {\n                    font = context.parse(arg['text-font'], 1, array$1(StringType));\n                    if (!font)\n                        return null;\n                }\n                let textColor = null;\n                if (arg['text-color']) {\n                    textColor = context.parse(arg['text-color'], 1, ColorType);\n                    if (!textColor)\n                        return null;\n                }\n                const lastExpression = sections[sections.length - 1];\n                lastExpression.scale = scale;\n                lastExpression.font = font;\n                lastExpression.textColor = textColor;\n            } else {\n                const content = context.parse(args[i], 1, ValueType);\n                if (!content)\n                    return null;\n                const kind = content.type.kind;\n                if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n                    return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n                nextTokenMayBeObject = true;\n                sections.push({\n                    content,\n                    scale: null,\n                    font: null,\n                    textColor: null\n                });\n            }\n        }\n        return new FormatExpression(sections);\n    }\n    evaluate(ctx) {\n        const evaluateSection = section => {\n            const evaluatedContent = section.content.evaluate(ctx);\n            if (typeOf(evaluatedContent) === ResolvedImageType) {\n                return new FormattedSection('', evaluatedContent, null, null, null);\n            }\n            return new FormattedSection(toString(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null);\n        };\n        return new Formatted(this.sections.map(evaluateSection));\n    }\n    eachChild(fn) {\n        for (const section of this.sections) {\n            fn(section.content);\n            if (section.scale) {\n                fn(section.scale);\n            }\n            if (section.font) {\n                fn(section.font);\n            }\n            if (section.textColor) {\n                fn(section.textColor);\n            }\n        }\n    }\n    outputDefined() {\n        // Technically the combinatoric set of all children\n        // Usually, this.text will be undefined anyway\n        return false;\n    }\n    serialize() {\n        const serialized = ['format'];\n        for (const section of this.sections) {\n            serialized.push(section.content.serialize());\n            const options = {};\n            if (section.scale) {\n                options['font-scale'] = section.scale.serialize();\n            }\n            if (section.font) {\n                options['text-font'] = section.font.serialize();\n            }\n            if (section.textColor) {\n                options['text-color'] = section.textColor.serialize();\n            }\n            serialized.push(options);\n        }\n        return serialized;\n    }\n}\n\n//      \nclass ImageExpression {\n    constructor(input) {\n        this.type = ResolvedImageType;\n        this.input = input;\n    }\n    static parse(args, context) {\n        if (args.length !== 2) {\n            return context.error(`Expected two arguments.`);\n        }\n        const name = context.parse(args[1], 1, StringType);\n        if (!name)\n            return context.error(`No image name provided.`);\n        return new ImageExpression(name);\n    }\n    evaluate(ctx) {\n        const evaluatedImageName = this.input.evaluate(ctx);\n        const value = ResolvedImage.fromString(evaluatedImageName);\n        if (value && ctx.availableImages)\n            value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n        return value;\n    }\n    eachChild(fn) {\n        fn(this.input);\n    }\n    outputDefined() {\n        // The output of image is determined by the list of available images in the evaluation context\n        return false;\n    }\n    serialize() {\n        return [\n            'image',\n            this.input.serialize()\n        ];\n    }\n}\n\nconst types$1 = {\n    'to-boolean': BooleanType,\n    'to-color': ColorType,\n    'to-number': NumberType,\n    'to-string': StringType\n};\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\".  Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion {\n    constructor(type, args) {\n        this.type = type;\n        this.args = args;\n    }\n    static parse(args, context) {\n        if (args.length < 2)\n            return context.error(`Expected at least one argument.`);\n        const name = args[0];\n        if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n            return context.error(`Expected one argument.`);\n        const type = types$1[name];\n        const parsed = [];\n        for (let i = 1; i < args.length; i++) {\n            const input = context.parse(args[i], i, ValueType);\n            if (!input)\n                return null;\n            parsed.push(input);\n        }\n        return new Coercion(type, parsed);\n    }\n    evaluate(ctx) {\n        if (this.type.kind === 'boolean') {\n            return Boolean(this.args[0].evaluate(ctx));\n        } else if (this.type.kind === 'color') {\n            let input;\n            let error;\n            for (const arg of this.args) {\n                input = arg.evaluate(ctx);\n                error = null;\n                if (input instanceof Color$1) {\n                    return input;\n                } else if (typeof input === 'string') {\n                    const c = ctx.parseColor(input);\n                    if (c)\n                        return c;\n                } else if (Array.isArray(input)) {\n                    if (input.length < 3 || input.length > 4) {\n                        error = `Invalid rbga value ${ JSON.stringify(input) }: expected an array containing either three or four numeric values.`;\n                    } else {\n                        error = validateRGBA(input[0], input[1], input[2], input[3]);\n                    }\n                    if (!error) {\n                        return new Color$1(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n                    }\n                }\n            }\n            throw new RuntimeError$1(error || `Could not parse color from value '${ typeof input === 'string' ? input : String(JSON.stringify(input)) }'`);\n        } else if (this.type.kind === 'number') {\n            let value = null;\n            for (const arg of this.args) {\n                value = arg.evaluate(ctx);\n                if (value === null)\n                    return 0;\n                const num = Number(value);\n                if (isNaN(num))\n                    continue;\n                return num;\n            }\n            throw new RuntimeError$1(`Could not convert ${ JSON.stringify(value) } to number.`);\n        } else if (this.type.kind === 'formatted') {\n            // There is no explicit 'to-formatted' but this coercion can be implicitly\n            // created by properties that expect the 'formatted' type.\n            return Formatted.fromString(toString(this.args[0].evaluate(ctx)));\n        } else if (this.type.kind === 'resolvedImage') {\n            return ResolvedImage.fromString(toString(this.args[0].evaluate(ctx)));\n        } else {\n            return toString(this.args[0].evaluate(ctx));\n        }\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return this.args.every(arg => arg.outputDefined());\n    }\n    serialize() {\n        if (this.type.kind === 'formatted') {\n            return new FormatExpression([{\n                    content: this.args[0],\n                    scale: null,\n                    font: null,\n                    textColor: null\n                }]).serialize();\n        }\n        if (this.type.kind === 'resolvedImage') {\n            return new ImageExpression(this.args[0]).serialize();\n        }\n        const serialized = [`to-${ this.type.kind }`];\n        this.eachChild(child => {\n            serialized.push(child.serialize());\n        });\n        return serialized;\n    }\n}\nvar Coercion$1 = Coercion;\n\n//      \nconst geometryTypes = [\n    'Unknown',\n    'Point',\n    'LineString',\n    'Polygon'\n];\nclass EvaluationContext {\n    constructor() {\n        this.globals = null;\n        this.feature = null;\n        this.featureState = null;\n        this.formattedSection = null;\n        this._parseColorCache = {};\n        this.availableImages = null;\n        this.canonical = null;\n        this.featureTileCoord = null;\n        this.featureDistanceData = null;\n    }\n    id() {\n        return this.feature && this.feature.id !== undefined ? this.feature.id : null;\n    }\n    geometryType() {\n        return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n    }\n    geometry() {\n        return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n    }\n    canonicalID() {\n        return this.canonical;\n    }\n    properties() {\n        return this.feature && this.feature.properties || {};\n    }\n    distanceFromCenter() {\n        if (this.featureTileCoord && this.featureDistanceData) {\n            const c = this.featureDistanceData.center;\n            const scale = this.featureDistanceData.scale;\n            const {x, y} = this.featureTileCoord;\n            // Calculate the distance vector `d` (left handed)\n            const dX = x * scale - c[0];\n            const dY = y * scale - c[1];\n            // The bearing vector `b` (left handed)\n            const bX = this.featureDistanceData.bearing[0];\n            const bY = this.featureDistanceData.bearing[1];\n            // Distance is calculated as `dot(d, v)`\n            const dist = bX * dX + bY * dY;\n            return dist;\n        }\n        return 0;\n    }\n    parseColor(input) {\n        let cached = this._parseColorCache[input];\n        if (!cached) {\n            cached = this._parseColorCache[input] = Color$1.parse(input);\n        }\n        return cached;\n    }\n}\nvar EvaluationContext$1 = EvaluationContext;\n\n//      \nclass CompoundExpression {\n    constructor(name, type, evaluate, args) {\n        this.name = name;\n        this.type = type;\n        this._evaluate = evaluate;\n        this.args = args;\n    }\n    evaluate(ctx) {\n        return this._evaluate(ctx, this.args);\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        return [this.name].concat(this.args.map(arg => arg.serialize()));\n    }\n    static parse(args, context) {\n        const op = args[0];\n        const definition = CompoundExpression.definitions[op];\n        if (!definition) {\n            return context.error(`Unknown expression \"${ op }\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n        }\n        // Now check argument types against each signature\n        const type = Array.isArray(definition) ? definition[0] : definition.type;\n        const availableOverloads = Array.isArray(definition) ? [[\n                definition[1],\n                definition[2]\n            ]] : definition.overloads;\n        const overloads = availableOverloads.filter(([signature]) => !Array.isArray(signature) || // varags\n        signature.length === args.length - 1    // correct param count\n);\n        let signatureContext = null;\n        for (const [params, evaluate] of overloads) {\n            // Use a fresh context for each attempted signature so that, if\n            // we eventually succeed, we haven't polluted `context.errors`.\n            signatureContext = new ParsingContext$1(context.registry, context.path, null, context.scope);\n            // First parse all the args, potentially coercing to the\n            // types expected by this overload.\n            const parsedArgs = [];\n            let argParseFailed = false;\n            for (let i = 1; i < args.length; i++) {\n                const arg = args[i];\n                const expectedType = Array.isArray(params) ? params[i - 1] : params.type;\n                const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n                if (!parsed) {\n                    argParseFailed = true;\n                    break;\n                }\n                parsedArgs.push(parsed);\n            }\n            if (argParseFailed) {\n                // Couldn't coerce args of this overload to expected type, move\n                // on to next one.\n                continue;\n            }\n            if (Array.isArray(params)) {\n                if (params.length !== parsedArgs.length) {\n                    signatureContext.error(`Expected ${ params.length } arguments, but found ${ parsedArgs.length } instead.`);\n                    continue;\n                }\n            }\n            for (let i = 0; i < parsedArgs.length; i++) {\n                const expected = Array.isArray(params) ? params[i] : params.type;\n                const arg = parsedArgs[i];\n                signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n            }\n            if (signatureContext.errors.length === 0) {\n                return new CompoundExpression(op, type, evaluate, parsedArgs);\n            }\n        }\n        if (overloads.length === 1) {\n            context.errors.push(...signatureContext.errors);\n        } else {\n            const expected = overloads.length ? overloads : availableOverloads;\n            const signatures = expected.map(([params]) => stringifySignature(params)).join(' | ');\n            const actualTypes = [];\n            // For error message, re-parse arguments without trying to\n            // apply any coercions\n            for (let i = 1; i < args.length; i++) {\n                const parsed = context.parse(args[i], 1 + actualTypes.length);\n                if (!parsed)\n                    return null;\n                actualTypes.push(toString$1(parsed.type));\n            }\n            context.error(`Expected arguments of type ${ signatures }, but found (${ actualTypes.join(', ') }) instead.`);\n        }\n        return null;\n    }\n    static register(registry, definitions) {\n        CompoundExpression.definitions = definitions;\n        for (const name in definitions) {\n            registry[name] = CompoundExpression;\n        }\n    }\n}\nfunction stringifySignature(signature) {\n    if (Array.isArray(signature)) {\n        return `(${ signature.map(toString$1).join(', ') })`;\n    } else {\n        return `(${ toString$1(signature.type) }...)`;\n    }\n}\nvar CompoundExpression$1 = CompoundExpression;\n\n//      \nclass CollatorExpression {\n    constructor(caseSensitive, diacriticSensitive, locale) {\n        this.type = CollatorType;\n        this.locale = locale;\n        this.caseSensitive = caseSensitive;\n        this.diacriticSensitive = diacriticSensitive;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`Expected one argument.`);\n        const options = args[1];\n        if (typeof options !== 'object' || Array.isArray(options))\n            return context.error(`Collator options argument must be an object.`);\n        const caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n        if (!caseSensitive)\n            return null;\n        const diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n        if (!diacriticSensitive)\n            return null;\n        let locale = null;\n        if (options['locale']) {\n            locale = context.parse(options['locale'], 1, StringType);\n            if (!locale)\n                return null;\n        }\n        return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n    }\n    evaluate(ctx) {\n        return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n    }\n    eachChild(fn) {\n        fn(this.caseSensitive);\n        fn(this.diacriticSensitive);\n        if (this.locale) {\n            fn(this.locale);\n        }\n    }\n    outputDefined() {\n        // Technically the set of possible outputs is the combinatoric set of Collators produced\n        // by all possible outputs of locale/caseSensitive/diacriticSensitive\n        // But for the primary use of Collators in comparison operators, we ignore the Collator's\n        // possible outputs anyway, so we can get away with leaving this false for now.\n        return false;\n    }\n    serialize() {\n        const options = {};\n        options['case-sensitive'] = this.caseSensitive.serialize();\n        options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n        if (this.locale) {\n            options['locale'] = this.locale.serialize();\n        }\n        return [\n            'collator',\n            options\n        ];\n    }\n}\n\n//      \n// minX, minY, maxX, maxY\nconst EXTENT = 8192;\nfunction updateBBox(bbox, coord) {\n    bbox[0] = Math.min(bbox[0], coord[0]);\n    bbox[1] = Math.min(bbox[1], coord[1]);\n    bbox[2] = Math.max(bbox[2], coord[0]);\n    bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction mercatorXfromLng(lng) {\n    return (180 + lng) / 360;\n}\nfunction mercatorYfromLat(lat) {\n    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))) / 360;\n}\nfunction boxWithinBox(bbox1, bbox2) {\n    if (bbox1[0] <= bbox2[0])\n        return false;\n    if (bbox1[2] >= bbox2[2])\n        return false;\n    if (bbox1[1] <= bbox2[1])\n        return false;\n    if (bbox1[3] >= bbox2[3])\n        return false;\n    return true;\n}\nfunction getTileCoordinates(p, canonical) {\n    const x = mercatorXfromLng(p[0]);\n    const y = mercatorYfromLat(p[1]);\n    const tilesAtZoom = Math.pow(2, canonical.z);\n    return [\n        Math.round(x * tilesAtZoom * EXTENT),\n        Math.round(y * tilesAtZoom * EXTENT)\n    ];\n}\nfunction onBoundary(p, p1, p2) {\n    const x1 = p[0] - p1[0];\n    const y1 = p[1] - p1[1];\n    const x2 = p[0] - p2[0];\n    const y2 = p[1] - p2[1];\n    return x1 * y2 - x2 * y1 === 0 && x1 * x2 <= 0 && y1 * y2 <= 0;\n}\nfunction rayIntersect(p, p1, p2) {\n    return p1[1] > p[1] !== p2[1] > p[1] && p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0];\n}\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings) {\n    let inside = false;\n    for (let i = 0, len = rings.length; i < len; i++) {\n        const ring = rings[i];\n        for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n            if (onBoundary(point, ring[j], ring[j + 1]))\n                return false;\n            if (rayIntersect(point, ring[j], ring[j + 1]))\n                inside = !inside;\n        }\n    }\n    return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n    for (let i = 0; i < polygons.length; i++) {\n        if (pointWithinPolygon(point, polygons[i]))\n            return true;\n    }\n    return false;\n}\nfunction perp(v1, v2) {\n    return v1[0] * v2[1] - v1[1] * v2[0];\n}\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n    // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n    const x1 = p1[0] - q1[0];\n    const y1 = p1[1] - q1[1];\n    const x2 = p2[0] - q1[0];\n    const y2 = p2[1] - q1[1];\n    const x3 = q2[0] - q1[0];\n    const y3 = q2[1] - q1[1];\n    const det1 = x1 * y3 - x3 * y1;\n    const det2 = x2 * y3 - x3 * y2;\n    if (det1 > 0 && det2 < 0 || det1 < 0 && det2 > 0)\n        return true;\n    return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction lineIntersectLine(a, b, c, d) {\n    // check if two segments are parallel or not\n    // precondition is end point a, b is inside polygon, if line a->b is\n    // parallel to polygon edge c->d, then a->b won't intersect with c->d\n    const vectorP = [\n        b[0] - a[0],\n        b[1] - a[1]\n    ];\n    const vectorQ = [\n        d[0] - c[0],\n        d[1] - c[1]\n    ];\n    if (perp(vectorQ, vectorP) === 0)\n        return false;\n    // If lines are intersecting with each other, the relative location should be:\n    // a and b lie in different sides of segment c->d\n    // c and d lie in different sides of segment a->b\n    if (twoSided(a, b, c, d) && twoSided(c, d, a, b))\n        return true;\n    return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n    for (const ring of polygon) {\n        // loop through every edge of the ring\n        for (let j = 0; j < ring.length - 1; ++j) {\n            if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n    // First, check if geometry points of line segments are all inside polygon\n    for (let i = 0; i < line.length; ++i) {\n        if (!pointWithinPolygon(line[i], polygon)) {\n            return false;\n        }\n    }\n    // Second, check if there is line segment intersecting polygon edge\n    for (let i = 0; i < line.length - 1; ++i) {\n        if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n    for (let i = 0; i < polygons.length; i++) {\n        if (lineStringWithinPolygon(line, polygons[i]))\n            return true;\n    }\n    return false;\n}\nfunction getTilePolygon(coordinates, bbox, canonical) {\n    const polygon = [];\n    for (let i = 0; i < coordinates.length; i++) {\n        const ring = [];\n        for (let j = 0; j < coordinates[i].length; j++) {\n            const coord = getTileCoordinates(coordinates[i][j], canonical);\n            updateBBox(bbox, coord);\n            ring.push(coord);\n        }\n        polygon.push(ring);\n    }\n    return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n    const polygons = [];\n    for (let i = 0; i < coordinates.length; i++) {\n        const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n        polygons.push(polygon);\n    }\n    return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n    if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n        const halfWorldSize = worldSize * 0.5;\n        let shift = p[0] - polyBBox[0] > halfWorldSize ? -worldSize : polyBBox[0] - p[0] > halfWorldSize ? worldSize : 0;\n        if (shift === 0) {\n            shift = p[0] - polyBBox[2] > halfWorldSize ? -worldSize : polyBBox[2] - p[0] > halfWorldSize ? worldSize : 0;\n        }\n        p[0] += shift;\n    }\n    updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n    bbox[0] = bbox[1] = Infinity;\n    bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n    const worldSize = Math.pow(2, canonical.z) * EXTENT;\n    const shifts = [\n        canonical.x * EXTENT,\n        canonical.y * EXTENT\n    ];\n    const tilePoints = [];\n    if (!geometry)\n        return tilePoints;\n    for (const points of geometry) {\n        for (const point of points) {\n            const p = [\n                point.x + shifts[0],\n                point.y + shifts[1]\n            ];\n            updatePoint(p, pointBBox, polyBBox, worldSize);\n            tilePoints.push(p);\n        }\n    }\n    return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n    const worldSize = Math.pow(2, canonical.z) * EXTENT;\n    const shifts = [\n        canonical.x * EXTENT,\n        canonical.y * EXTENT\n    ];\n    const tileLines = [];\n    if (!geometry)\n        return tileLines;\n    for (const line of geometry) {\n        const tileLine = [];\n        for (const point of line) {\n            const p = [\n                point.x + shifts[0],\n                point.y + shifts[1]\n            ];\n            updateBBox(lineBBox, p);\n            tileLine.push(p);\n        }\n        tileLines.push(tileLine);\n    }\n    if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n        resetBBox(lineBBox);\n        for (const line of tileLines) {\n            for (const p of line) {\n                updatePoint(p, lineBBox, polyBBox, worldSize);\n            }\n        }\n    }\n    return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n    const pointBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    const polyBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    const canonical = ctx.canonicalID();\n    if (!canonical) {\n        return false;\n    }\n    if (polygonGeometry.type === 'Polygon') {\n        const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n        const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n        if (!boxWithinBox(pointBBox, polyBBox))\n            return false;\n        for (const point of tilePoints) {\n            if (!pointWithinPolygon(point, tilePolygon))\n                return false;\n        }\n    }\n    if (polygonGeometry.type === 'MultiPolygon') {\n        const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n        const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n        if (!boxWithinBox(pointBBox, polyBBox))\n            return false;\n        for (const point of tilePoints) {\n            if (!pointWithinPolygons(point, tilePolygons))\n                return false;\n        }\n    }\n    return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n    const lineBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    const polyBBox = [\n        Infinity,\n        Infinity,\n        -Infinity,\n        -Infinity\n    ];\n    const canonical = ctx.canonicalID();\n    if (!canonical) {\n        return false;\n    }\n    if (polygonGeometry.type === 'Polygon') {\n        const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n        const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n        if (!boxWithinBox(lineBBox, polyBBox))\n            return false;\n        for (const line of tileLines) {\n            if (!lineStringWithinPolygon(line, tilePolygon))\n                return false;\n        }\n    }\n    if (polygonGeometry.type === 'MultiPolygon') {\n        const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n        const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n        if (!boxWithinBox(lineBBox, polyBBox))\n            return false;\n        for (const line of tileLines) {\n            if (!lineStringWithinPolygons(line, tilePolygons))\n                return false;\n        }\n    }\n    return true;\n}\nclass Within {\n    constructor(geojson, geometries) {\n        this.type = BooleanType;\n        this.geojson = geojson;\n        this.geometries = geometries;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`'within' expression requires exactly one argument, but found ${ args.length - 1 } instead.`);\n        if (isValue(args[1])) {\n            const geojson = args[1];\n            if (geojson.type === 'FeatureCollection') {\n                for (let i = 0; i < geojson.features.length; ++i) {\n                    const type = geojson.features[i].geometry.type;\n                    if (type === 'Polygon' || type === 'MultiPolygon') {\n                        return new Within(geojson, geojson.features[i].geometry);\n                    }\n                }\n            } else if (geojson.type === 'Feature') {\n                const type = geojson.geometry.type;\n                if (type === 'Polygon' || type === 'MultiPolygon') {\n                    return new Within(geojson, geojson.geometry);\n                }\n            } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n                return new Within(geojson, geojson);\n            }\n        }\n        return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`);\n    }\n    evaluate(ctx) {\n        if (ctx.geometry() != null && ctx.canonicalID() != null) {\n            if (ctx.geometryType() === 'Point') {\n                return pointsWithinPolygons(ctx, this.geometries);\n            } else if (ctx.geometryType() === 'LineString') {\n                return linesWithinPolygons(ctx, this.geometries);\n            }\n        }\n        return false;\n    }\n    eachChild() {\n    }\n    outputDefined() {\n        return true;\n    }\n    serialize() {\n        return [\n            'within',\n            this.geojson\n        ];\n    }\n}\nvar Within$1 = Within;\n\n//      \nfunction isFeatureConstant(e) {\n    if (e instanceof CompoundExpression$1) {\n        if (e.name === 'get' && e.args.length === 1) {\n            return false;\n        } else if (e.name === 'feature-state') {\n            return false;\n        } else if (e.name === 'has' && e.args.length === 1) {\n            return false;\n        } else if (e.name === 'properties' || e.name === 'geometry-type' || e.name === 'id') {\n            return false;\n        } else if (/^filter-/.test(e.name)) {\n            return false;\n        }\n    }\n    if (e instanceof Within$1) {\n        return false;\n    }\n    let result = true;\n    e.eachChild(arg => {\n        if (result && !isFeatureConstant(arg)) {\n            result = false;\n        }\n    });\n    return result;\n}\nfunction isStateConstant(e) {\n    if (e instanceof CompoundExpression$1) {\n        if (e.name === 'feature-state') {\n            return false;\n        }\n    }\n    let result = true;\n    e.eachChild(arg => {\n        if (result && !isStateConstant(arg)) {\n            result = false;\n        }\n    });\n    return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n    if (e instanceof CompoundExpression$1 && properties.indexOf(e.name) >= 0) {\n        return false;\n    }\n    let result = true;\n    e.eachChild(arg => {\n        if (result && !isGlobalPropertyConstant(arg, properties)) {\n            result = false;\n        }\n    });\n    return result;\n}\n\n//      \nclass Var {\n    constructor(name, boundExpression) {\n        this.type = boundExpression.type;\n        this.name = name;\n        this.boundExpression = boundExpression;\n    }\n    static parse(args, context) {\n        if (args.length !== 2 || typeof args[1] !== 'string')\n            return context.error(`'var' expression requires exactly one string literal argument.`);\n        const name = args[1];\n        if (!context.scope.has(name)) {\n            return context.error(`Unknown variable \"${ name }\". Make sure \"${ name }\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n        }\n        return new Var(name, context.scope.get(name));\n    }\n    evaluate(ctx) {\n        return this.boundExpression.evaluate(ctx);\n    }\n    eachChild() {\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        return [\n            'var',\n            this.name\n        ];\n    }\n}\nvar Var$1 = Var;\n\n//      \n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n    // The expected type of this expression. Provided only to allow Expression\n    // implementations to infer argument types: Expression#parse() need not\n    // check that the output type of the parsed expression matches\n    // `expectedType`.\n    constructor(registry, path = [], expectedType, scope = new Scope$1(), errors = []) {\n        this.registry = registry;\n        this.path = path;\n        this.key = path.map(part => `[${ part }]`).join('');\n        this.scope = scope;\n        this.errors = errors;\n        this.expectedType = expectedType;\n    }\n    /**\n     * @param expr the JSON expression to parse\n     * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n     * @param options\n     * @param options.omitTypeAnnotations set true to omit inferred type annotations.  Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n     * @private\n     */\n    parse(expr, index, expectedType, bindings, options = {}) {\n        if (index) {\n            return this.concat(index, expectedType, bindings)._parse(expr, options);\n        }\n        return this._parse(expr, options);\n    }\n    _parse(expr, options) {\n        if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n            expr = [\n                'literal',\n                expr\n            ];\n        }\n        function annotate(parsed, type, typeAnnotation) {\n            if (typeAnnotation === 'assert') {\n                return new Assertion$1(type, [parsed]);\n            } else if (typeAnnotation === 'coerce') {\n                return new Coercion$1(type, [parsed]);\n            } else {\n                return parsed;\n            }\n        }\n        if (Array.isArray(expr)) {\n            if (expr.length === 0) {\n                return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n            }\n            const op = expr[0];\n            if (typeof op !== 'string') {\n                this.error(`Expression name must be a string, but found ${ typeof op } instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n                return null;\n            }\n            const Expr = this.registry[op];\n            if (Expr) {\n                let parsed = Expr.parse(expr, this);\n                if (!parsed)\n                    return null;\n                if (this.expectedType) {\n                    const expected = this.expectedType;\n                    const actual = parsed.type;\n                    // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n                    // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n                    // Otherwise, we do static type-checking.\n                    //\n                    // These behaviors are overridable for:\n                    //   * The \"coalesce\" operator, which needs to omit type annotations.\n                    //   * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n                    //\n                    if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n                        parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n                    } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n                        parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n                    } else if (this.checkSubtype(expected, actual)) {\n                        return null;\n                    }\n                }\n                // If an expression's arguments are all literals, we can evaluate\n                // it immediately and replace it with a literal value in the\n                // parsed/compiled result. Expressions that expect an image should\n                // not be resolved here so we can later get the available images.\n                if (!(parsed instanceof Literal$1) && parsed.type.kind !== 'resolvedImage' && isConstant(parsed)) {\n                    const ec = new EvaluationContext$1();\n                    try {\n                        parsed = new Literal$1(parsed.type, parsed.evaluate(ec));\n                    } catch (e) {\n                        this.error(e.message);\n                        return null;\n                    }\n                }\n                return parsed;\n            }\n            return this.error(`Unknown expression \"${ op }\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n        } else if (typeof expr === 'undefined') {\n            return this.error(`'undefined' value invalid. Use null instead.`);\n        } else if (typeof expr === 'object') {\n            return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n        } else {\n            return this.error(`Expected an array, but found ${ typeof expr } instead.`);\n        }\n    }\n    /**\n     * Returns a copy of this context suitable for parsing the subexpression at\n     * index `index`, optionally appending to 'let' binding map.\n     *\n     * Note that `errors` property, intended for collecting errors while\n     * parsing, is copied by reference rather than cloned.\n     * @private\n     */\n    concat(index, expectedType, bindings) {\n        const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n        const scope = bindings ? this.scope.concat(bindings) : this.scope;\n        return new ParsingContext(this.registry, path, expectedType || null, scope, this.errors);\n    }\n    /**\n     * Push a parsing (or type checking) error into the `this.errors`\n     * @param error The message\n     * @param keys Optionally specify the source of the error at a child\n     * of the current expression at `this.key`.\n     * @private\n     */\n    error(error, ...keys) {\n        const key = `${ this.key }${ keys.map(k => `[${ k }]`).join('') }`;\n        this.errors.push(new ParsingError$1(key, error));\n    }\n    /**\n     * Returns null if `t` is a subtype of `expected`; otherwise returns an\n     * error message and also pushes it to `this.errors`.\n     */\n    checkSubtype(expected, t) {\n        const error = checkSubtype(expected, t);\n        if (error)\n            this.error(error);\n        return error;\n    }\n}\nvar ParsingContext$1 = ParsingContext;\nfunction isConstant(expression) {\n    if (expression instanceof Var$1) {\n        return isConstant(expression.boundExpression);\n    } else if (expression instanceof CompoundExpression$1 && expression.name === 'error') {\n        return false;\n    } else if (expression instanceof CollatorExpression) {\n        // Although the results of a Collator expression with fixed arguments\n        // generally shouldn't change between executions, we can't serialize them\n        // as constant expressions because results change based on environment.\n        return false;\n    } else if (expression instanceof Within$1) {\n        return false;\n    }\n    const isTypeAnnotation = expression instanceof Coercion$1 || expression instanceof Assertion$1;\n    let childrenConstant = true;\n    expression.eachChild(child => {\n        // We can _almost_ assume that if `expressions` children are constant,\n        // they would already have been evaluated to Literal values when they\n        // were parsed.  Type annotations are the exception, because they might\n        // have been inferred and added after a child was parsed.\n        // So we recurse into isConstant() for the children of type annotations,\n        // but otherwise simply check whether they are Literals.\n        if (isTypeAnnotation) {\n            childrenConstant = childrenConstant && isConstant(child);\n        } else {\n            childrenConstant = childrenConstant && child instanceof Literal$1;\n        }\n    });\n    if (!childrenConstant) {\n        return false;\n    }\n    return isFeatureConstant(expression) && isGlobalPropertyConstant(expression, [\n        'zoom',\n        'heatmap-density',\n        'line-progress',\n        'sky-radial-progress',\n        'accumulated',\n        'is-supported-script',\n        'pitch',\n        'distance-from-center'\n    ]);\n}\n\n//      \n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nfunction findStopLessThanOrEqualTo(stops, input) {\n    const lastIndex = stops.length - 1;\n    let lowerIndex = 0;\n    let upperIndex = lastIndex;\n    let currentIndex = 0;\n    let currentValue, nextValue;\n    while (lowerIndex <= upperIndex) {\n        currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n        currentValue = stops[currentIndex];\n        nextValue = stops[currentIndex + 1];\n        if (currentValue <= input) {\n            if (currentIndex === lastIndex || input < nextValue) {\n                // Search complete\n                return currentIndex;\n            }\n            lowerIndex = currentIndex + 1;\n        } else if (currentValue > input) {\n            upperIndex = currentIndex - 1;\n        } else {\n            throw new RuntimeError$1('Input is not a number.');\n        }\n    }\n    return 0;\n}\n\n//      \nclass Step {\n    constructor(type, input, stops) {\n        this.type = type;\n        this.input = input;\n        this.labels = [];\n        this.outputs = [];\n        for (const [label, expression] of stops) {\n            this.labels.push(label);\n            this.outputs.push(expression);\n        }\n    }\n    static parse(args, context) {\n        if (args.length - 1 < 4) {\n            return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n        }\n        if ((args.length - 1) % 2 !== 0) {\n            return context.error(`Expected an even number of arguments.`);\n        }\n        const input = context.parse(args[1], 1, NumberType);\n        if (!input)\n            return null;\n        const stops = [];\n        let outputType = null;\n        if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        for (let i = 1; i < args.length; i += 2) {\n            const label = i === 1 ? -Infinity : args[i];\n            const value = args[i + 1];\n            const labelKey = i;\n            const valueKey = i + 1;\n            if (typeof label !== 'number') {\n                return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n            }\n            if (stops.length && stops[stops.length - 1][0] >= label) {\n                return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n            }\n            const parsed = context.parse(value, valueKey, outputType);\n            if (!parsed)\n                return null;\n            outputType = outputType || parsed.type;\n            stops.push([\n                label,\n                parsed\n            ]);\n        }\n        return new Step(outputType, input, stops);\n    }\n    evaluate(ctx) {\n        const labels = this.labels;\n        const outputs = this.outputs;\n        if (labels.length === 1) {\n            return outputs[0].evaluate(ctx);\n        }\n        const value = this.input.evaluate(ctx);\n        if (value <= labels[0]) {\n            return outputs[0].evaluate(ctx);\n        }\n        const stopCount = labels.length;\n        if (value >= labels[stopCount - 1]) {\n            return outputs[stopCount - 1].evaluate(ctx);\n        }\n        const index = findStopLessThanOrEqualTo(labels, value);\n        return outputs[index].evaluate(ctx);\n    }\n    eachChild(fn) {\n        fn(this.input);\n        for (const expression of this.outputs) {\n            fn(expression);\n        }\n    }\n    outputDefined() {\n        return this.outputs.every(out => out.outputDefined());\n    }\n    serialize() {\n        const serialized = [\n            'step',\n            this.input.serialize()\n        ];\n        for (let i = 0; i < this.labels.length; i++) {\n            if (i > 0) {\n                serialized.push(this.labels[i]);\n            }\n            serialized.push(this.outputs[i].serialize());\n        }\n        return serialized;\n    }\n}\nvar Step$1 = Step;\n\n/*\n * Copyright (C) 2008 Apple Inc. 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\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\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 APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nvar unitbezier = UnitBezier;\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n    // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n    this.cx = 3 * p1x;\n    this.bx = 3 * (p2x - p1x) - this.cx;\n    this.ax = 1 - this.cx - this.bx;\n    this.cy = 3 * p1y;\n    this.by = 3 * (p2y - p1y) - this.cy;\n    this.ay = 1 - this.cy - this.by;\n    this.p1x = p1x;\n    this.p1y = p2y;\n    this.p2x = p2x;\n    this.p2y = p2y;\n}\nUnitBezier.prototype.sampleCurveX = function (t) {\n    // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n    return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\nUnitBezier.prototype.sampleCurveY = function (t) {\n    return ((this.ay * t + this.by) * t + this.cy) * t;\n};\nUnitBezier.prototype.sampleCurveDerivativeX = function (t) {\n    return (3 * this.ax * t + 2 * this.bx) * t + this.cx;\n};\nUnitBezier.prototype.solveCurveX = function (x, epsilon) {\n    if (typeof epsilon === 'undefined')\n        epsilon = 0.000001;\n    var t0, t1, t2, x2, i;\n    // First try a few iterations of Newton's method -- normally very fast.\n    for (t2 = x, i = 0; i < 8; i++) {\n        x2 = this.sampleCurveX(t2) - x;\n        if (Math.abs(x2) < epsilon)\n            return t2;\n        var d2 = this.sampleCurveDerivativeX(t2);\n        if (Math.abs(d2) < 0.000001)\n            break;\n        t2 = t2 - x2 / d2;\n    }\n    // Fall back to the bisection method for reliability.\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0)\n        return t0;\n    if (t2 > t1)\n        return t1;\n    while (t0 < t1) {\n        x2 = this.sampleCurveX(t2);\n        if (Math.abs(x2 - x) < epsilon)\n            return t2;\n        if (x > x2) {\n            t0 = t2;\n        } else {\n            t1 = t2;\n        }\n        t2 = (t1 - t0) * 0.5 + t0;\n    }\n    // Failure.\n    return t2;\n};\nUnitBezier.prototype.solve = function (x, epsilon) {\n    return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n\nvar UnitBezier$1 = /*@__PURE__*/getDefaultExportFromCjs(unitbezier);\n\n//      \nfunction number(a, b, t) {\n    return a * (1 - t) + b * t;\n}\nfunction color(from, to, t) {\n    return new Color$1(number(from.r, to.r, t), number(from.g, to.g, t), number(from.b, to.b, t), number(from.a, to.a, t));\n}\nfunction array(from, to, t) {\n    return from.map((d, i) => {\n        return number(d, to[i], t);\n    });\n}\n\nvar interpolate = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tnumber: number,\n\tcolor: color,\n\tarray: array\n});\n\n//      \n// Constants\nconst Xn = 0.95047,\n    // D65 standard referent\n    Yn = 1, Zn = 1.08883, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad$1 = Math.PI / 180, rad2deg = 180 / Math.PI;\n// Utilities\nfunction xyz2lab(t) {\n    return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n    return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction xyz2rgb(x) {\n    return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2xyz(x) {\n    x /= 255;\n    return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n// LAB\nfunction rgbToLab(rgbColor) {\n    const b = rgb2xyz(rgbColor.r), a = rgb2xyz(rgbColor.g), l = rgb2xyz(rgbColor.b), x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.072175 * l) / Yn), z = xyz2lab((0.0193339 * b + 0.119192 * a + 0.9503041 * l) / Zn);\n    return {\n        l: 116 * y - 16,\n        a: 500 * (x - y),\n        b: 200 * (y - z),\n        alpha: rgbColor.a\n    };\n}\nfunction labToRgb(labColor) {\n    let y = (labColor.l + 16) / 116, x = isNaN(labColor.a) ? y : y + labColor.a / 500, z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n    y = Yn * lab2xyz(y);\n    x = Xn * lab2xyz(x);\n    z = Zn * lab2xyz(z);\n    return new Color$1(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n    xyz2rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), labColor.alpha);\n}\nfunction interpolateLab(from, to, t) {\n    return {\n        l: number(from.l, to.l, t),\n        a: number(from.a, to.a, t),\n        b: number(from.b, to.b, t),\n        alpha: number(from.alpha, to.alpha, t)\n    };\n}\n// HCL\nfunction rgbToHcl(rgbColor) {\n    const {l, a, b} = rgbToLab(rgbColor);\n    const h = Math.atan2(b, a) * rad2deg;\n    return {\n        h: h < 0 ? h + 360 : h,\n        c: Math.sqrt(a * a + b * b),\n        l,\n        alpha: rgbColor.a\n    };\n}\nfunction hclToRgb(hclColor) {\n    const h = hclColor.h * deg2rad$1, c = hclColor.c, l = hclColor.l;\n    return labToRgb({\n        l,\n        a: Math.cos(h) * c,\n        b: Math.sin(h) * c,\n        alpha: hclColor.alpha\n    });\n}\nfunction interpolateHue(a, b, t) {\n    const d = b - a;\n    return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\nfunction interpolateHcl(from, to, t) {\n    return {\n        h: interpolateHue(from.h, to.h, t),\n        c: number(from.c, to.c, t),\n        l: number(from.l, to.l, t),\n        alpha: number(from.alpha, to.alpha, t)\n    };\n}\nconst lab = {\n    forward: rgbToLab,\n    reverse: labToRgb,\n    interpolate: interpolateLab\n};\nconst hcl = {\n    forward: rgbToHcl,\n    reverse: hclToRgb,\n    interpolate: interpolateHcl\n};\n\n//      \nclass Interpolate {\n    constructor(type, operator, interpolation, input, stops) {\n        this.type = type;\n        this.operator = operator;\n        this.interpolation = interpolation;\n        this.input = input;\n        this.labels = [];\n        this.outputs = [];\n        for (const [label, expression] of stops) {\n            this.labels.push(label);\n            this.outputs.push(expression);\n        }\n    }\n    static interpolationFactor(interpolation, input, lower, upper) {\n        let t = 0;\n        if (interpolation.name === 'exponential') {\n            t = exponentialInterpolation(input, interpolation.base, lower, upper);\n        } else if (interpolation.name === 'linear') {\n            t = exponentialInterpolation(input, 1, lower, upper);\n        } else if (interpolation.name === 'cubic-bezier') {\n            const c = interpolation.controlPoints;\n            const ub = new UnitBezier$1(c[0], c[1], c[2], c[3]);\n            t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n        }\n        return t;\n    }\n    static parse(args, context) {\n        let [operator, interpolation, input, ...rest] = args;\n        if (!Array.isArray(interpolation) || interpolation.length === 0) {\n            return context.error(`Expected an interpolation type expression.`, 1);\n        }\n        if (interpolation[0] === 'linear') {\n            interpolation = { name: 'linear' };\n        } else if (interpolation[0] === 'exponential') {\n            const base = interpolation[1];\n            if (typeof base !== 'number')\n                return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n            interpolation = {\n                name: 'exponential',\n                base\n            };\n        } else if (interpolation[0] === 'cubic-bezier') {\n            const controlPoints = interpolation.slice(1);\n            if (controlPoints.length !== 4 || controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)) {\n                return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n            }\n            interpolation = {\n                name: 'cubic-bezier',\n                controlPoints: controlPoints\n            };\n        } else {\n            return context.error(`Unknown interpolation type ${ String(interpolation[0]) }`, 1, 0);\n        }\n        if (args.length - 1 < 4) {\n            return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n        }\n        if ((args.length - 1) % 2 !== 0) {\n            return context.error(`Expected an even number of arguments.`);\n        }\n        input = context.parse(input, 2, NumberType);\n        if (!input)\n            return null;\n        const stops = [];\n        let outputType = null;\n        if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n            outputType = ColorType;\n        } else if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        for (let i = 0; i < rest.length; i += 2) {\n            const label = rest[i];\n            const value = rest[i + 1];\n            const labelKey = i + 3;\n            const valueKey = i + 4;\n            if (typeof label !== 'number') {\n                return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n            }\n            if (stops.length && stops[stops.length - 1][0] >= label) {\n                return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n            }\n            const parsed = context.parse(value, valueKey, outputType);\n            if (!parsed)\n                return null;\n            outputType = outputType || parsed.type;\n            stops.push([\n                label,\n                parsed\n            ]);\n        }\n        if (outputType.kind !== 'number' && outputType.kind !== 'color' && !(outputType.kind === 'array' && outputType.itemType.kind === 'number' && typeof outputType.N === 'number')) {\n            return context.error(`Type ${ toString$1(outputType) } is not interpolatable.`);\n        }\n        return new Interpolate(outputType, operator, interpolation, input, stops);\n    }\n    evaluate(ctx) {\n        const labels = this.labels;\n        const outputs = this.outputs;\n        if (labels.length === 1) {\n            return outputs[0].evaluate(ctx);\n        }\n        const value = this.input.evaluate(ctx);\n        if (value <= labels[0]) {\n            return outputs[0].evaluate(ctx);\n        }\n        const stopCount = labels.length;\n        if (value >= labels[stopCount - 1]) {\n            return outputs[stopCount - 1].evaluate(ctx);\n        }\n        const index = findStopLessThanOrEqualTo(labels, value);\n        const lower = labels[index];\n        const upper = labels[index + 1];\n        const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n        const outputLower = outputs[index].evaluate(ctx);\n        const outputUpper = outputs[index + 1].evaluate(ctx);\n        if (this.operator === 'interpolate') {\n            return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t);    // eslint-disable-line import/namespace\n        } else if (this.operator === 'interpolate-hcl') {\n            return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n        } else {\n            return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n        }\n    }\n    eachChild(fn) {\n        fn(this.input);\n        for (const expression of this.outputs) {\n            fn(expression);\n        }\n    }\n    outputDefined() {\n        return this.outputs.every(out => out.outputDefined());\n    }\n    serialize() {\n        let interpolation;\n        if (this.interpolation.name === 'linear') {\n            interpolation = ['linear'];\n        } else if (this.interpolation.name === 'exponential') {\n            if (this.interpolation.base === 1) {\n                interpolation = ['linear'];\n            } else {\n                interpolation = [\n                    'exponential',\n                    this.interpolation.base\n                ];\n            }\n        } else {\n            interpolation = ['cubic-bezier'].concat(this.interpolation.controlPoints);\n        }\n        const serialized = [\n            this.operator,\n            interpolation,\n            this.input.serialize()\n        ];\n        for (let i = 0; i < this.labels.length; i++) {\n            serialized.push(this.labels[i], this.outputs[i].serialize());\n        }\n        return serialized;\n    }\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n *                     = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`.  In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n    const difference = upperValue - lowerValue;\n    const progress = input - lowerValue;\n    if (difference === 0) {\n        return 0;\n    } else if (base === 1) {\n        return progress / difference;\n    } else {\n        return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n    }\n}\nvar Interpolate$1 = Interpolate;\n\nclass Coalesce {\n    constructor(type, args) {\n        this.type = type;\n        this.args = args;\n    }\n    static parse(args, context) {\n        if (args.length < 2) {\n            return context.error('Expectected at least one argument.');\n        }\n        let outputType = null;\n        const expectedType = context.expectedType;\n        if (expectedType && expectedType.kind !== 'value') {\n            outputType = expectedType;\n        }\n        const parsedArgs = [];\n        for (const arg of args.slice(1)) {\n            const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n            if (!parsed)\n                return null;\n            outputType = outputType || parsed.type;\n            parsedArgs.push(parsed);\n        }\n        // Above, we parse arguments without inferred type annotation so that\n        // they don't produce a runtime error for `null` input, which would\n        // preempt the desired null-coalescing behavior.\n        // Thus, if any of our arguments would have needed an annotation, we\n        // need to wrap the enclosing coalesce expression with it instead.\n        const needsAnnotation = expectedType && parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n        return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : new Coalesce(outputType, parsedArgs);\n    }\n    evaluate(ctx) {\n        let result = null;\n        let argCount = 0;\n        let firstImage;\n        for (const arg of this.args) {\n            argCount++;\n            result = arg.evaluate(ctx);\n            // we need to keep track of the first requested image in a coalesce statement\n            // if coalesce can't find a valid image, we return the first image so styleimagemissing can fire\n            if (result && result instanceof ResolvedImage && !result.available) {\n                // set to first image\n                if (!firstImage) {\n                    firstImage = result;\n                }\n                result = null;\n                // if we reach the end, return the first image\n                if (argCount === this.args.length) {\n                    return firstImage;\n                }\n            }\n            if (result !== null)\n                break;\n        }\n        return result;\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return this.args.every(arg => arg.outputDefined());\n    }\n    serialize() {\n        const serialized = ['coalesce'];\n        this.eachChild(child => {\n            serialized.push(child.serialize());\n        });\n        return serialized;\n    }\n}\nvar Coalesce$1 = Coalesce;\n\n//      \nclass Let {\n    constructor(bindings, result) {\n        this.type = result.type;\n        this.bindings = [].concat(bindings);\n        this.result = result;\n    }\n    evaluate(ctx) {\n        return this.result.evaluate(ctx);\n    }\n    eachChild(fn) {\n        for (const binding of this.bindings) {\n            fn(binding[1]);\n        }\n        fn(this.result);\n    }\n    static parse(args, context) {\n        if (args.length < 4)\n            return context.error(`Expected at least 3 arguments, but found ${ args.length - 1 } instead.`);\n        const bindings = [];\n        for (let i = 1; i < args.length - 1; i += 2) {\n            const name = args[i];\n            if (typeof name !== 'string') {\n                return context.error(`Expected string, but found ${ typeof name } instead.`, i);\n            }\n            if (/[^a-zA-Z0-9_]/.test(name)) {\n                return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n            }\n            const value = context.parse(args[i + 1], i + 1);\n            if (!value)\n                return null;\n            bindings.push([\n                name,\n                value\n            ]);\n        }\n        const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n        if (!result)\n            return null;\n        return new Let(bindings, result);\n    }\n    outputDefined() {\n        return this.result.outputDefined();\n    }\n    serialize() {\n        const serialized = ['let'];\n        for (const [name, expr] of this.bindings) {\n            serialized.push(name, expr.serialize());\n        }\n        serialized.push(this.result.serialize());\n        return serialized;\n    }\n}\nvar Let$1 = Let;\n\n//      \nclass At {\n    constructor(type, index, input) {\n        this.type = type;\n        this.index = index;\n        this.input = input;\n    }\n    static parse(args, context) {\n        if (args.length !== 3)\n            return context.error(`Expected 2 arguments, but found ${ args.length - 1 } instead.`);\n        const index = context.parse(args[1], 1, NumberType);\n        const input = context.parse(args[2], 2, array$1(context.expectedType || ValueType));\n        if (!index || !input)\n            return null;\n        const t = input.type;\n        return new At(t.itemType, index, input);\n    }\n    evaluate(ctx) {\n        const index = this.index.evaluate(ctx);\n        const array = this.input.evaluate(ctx);\n        if (index < 0) {\n            throw new RuntimeError$1(`Array index out of bounds: ${ index } < 0.`);\n        }\n        if (index >= array.length) {\n            throw new RuntimeError$1(`Array index out of bounds: ${ index } > ${ array.length - 1 }.`);\n        }\n        if (index !== Math.floor(index)) {\n            throw new RuntimeError$1(`Array index must be an integer, but found ${ index } instead.`);\n        }\n        return array[index];\n    }\n    eachChild(fn) {\n        fn(this.index);\n        fn(this.input);\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        return [\n            'at',\n            this.index.serialize(),\n            this.input.serialize()\n        ];\n    }\n}\nvar At$1 = At;\n\n//      \nclass In {\n    constructor(needle, haystack) {\n        this.type = BooleanType;\n        this.needle = needle;\n        this.haystack = haystack;\n    }\n    static parse(args, context) {\n        if (args.length !== 3) {\n            return context.error(`Expected 2 arguments, but found ${ args.length - 1 } instead.`);\n        }\n        const needle = context.parse(args[1], 1, ValueType);\n        const haystack = context.parse(args[2], 2, ValueType);\n        if (!needle || !haystack)\n            return null;\n        if (!isValidType(needle.type, [\n                BooleanType,\n                StringType,\n                NumberType,\n                NullType,\n                ValueType\n            ])) {\n            return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(needle.type) } instead`);\n        }\n        return new In(needle, haystack);\n    }\n    evaluate(ctx) {\n        const needle = this.needle.evaluate(ctx);\n        const haystack = this.haystack.evaluate(ctx);\n        if (haystack == null)\n            return false;\n        if (!isValidNativeType(needle, [\n                'boolean',\n                'string',\n                'number',\n                'null'\n            ])) {\n            throw new RuntimeError$1(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(typeOf(needle)) } instead.`);\n        }\n        if (!isValidNativeType(haystack, [\n                'string',\n                'array'\n            ])) {\n            throw new RuntimeError$1(`Expected second argument to be of type array or string, but found ${ toString$1(typeOf(haystack)) } instead.`);\n        }\n        return haystack.indexOf(needle) >= 0;\n    }\n    eachChild(fn) {\n        fn(this.needle);\n        fn(this.haystack);\n    }\n    outputDefined() {\n        return true;\n    }\n    serialize() {\n        return [\n            'in',\n            this.needle.serialize(),\n            this.haystack.serialize()\n        ];\n    }\n}\nvar In$1 = In;\n\n//      \nclass IndexOf {\n    constructor(needle, haystack, fromIndex) {\n        this.type = NumberType;\n        this.needle = needle;\n        this.haystack = haystack;\n        this.fromIndex = fromIndex;\n    }\n    static parse(args, context) {\n        if (args.length <= 2 || args.length >= 5) {\n            return context.error(`Expected 3 or 4 arguments, but found ${ args.length - 1 } instead.`);\n        }\n        const needle = context.parse(args[1], 1, ValueType);\n        const haystack = context.parse(args[2], 2, ValueType);\n        if (!needle || !haystack)\n            return null;\n        if (!isValidType(needle.type, [\n                BooleanType,\n                StringType,\n                NumberType,\n                NullType,\n                ValueType\n            ])) {\n            return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(needle.type) } instead`);\n        }\n        if (args.length === 4) {\n            const fromIndex = context.parse(args[3], 3, NumberType);\n            if (!fromIndex)\n                return null;\n            return new IndexOf(needle, haystack, fromIndex);\n        } else {\n            return new IndexOf(needle, haystack);\n        }\n    }\n    evaluate(ctx) {\n        const needle = this.needle.evaluate(ctx);\n        const haystack = this.haystack.evaluate(ctx);\n        if (!isValidNativeType(needle, [\n                'boolean',\n                'string',\n                'number',\n                'null'\n            ])) {\n            throw new RuntimeError$1(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(typeOf(needle)) } instead.`);\n        }\n        if (!isValidNativeType(haystack, [\n                'string',\n                'array'\n            ])) {\n            throw new RuntimeError$1(`Expected second argument to be of type array or string, but found ${ toString$1(typeOf(haystack)) } instead.`);\n        }\n        if (this.fromIndex) {\n            const fromIndex = this.fromIndex.evaluate(ctx);\n            return haystack.indexOf(needle, fromIndex);\n        }\n        return haystack.indexOf(needle);\n    }\n    eachChild(fn) {\n        fn(this.needle);\n        fn(this.haystack);\n        if (this.fromIndex) {\n            fn(this.fromIndex);\n        }\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        if (this.fromIndex != null && this.fromIndex !== undefined) {\n            const fromIndex = this.fromIndex.serialize();\n            return [\n                'index-of',\n                this.needle.serialize(),\n                this.haystack.serialize(),\n                fromIndex\n            ];\n        }\n        return [\n            'index-of',\n            this.needle.serialize(),\n            this.haystack.serialize()\n        ];\n    }\n}\nvar IndexOf$1 = IndexOf;\n\n// Map input label values to output expression index\nclass Match {\n    constructor(inputType, outputType, input, cases, outputs, otherwise) {\n        this.inputType = inputType;\n        this.type = outputType;\n        this.input = input;\n        this.cases = cases;\n        this.outputs = outputs;\n        this.otherwise = otherwise;\n    }\n    static parse(args, context) {\n        if (args.length < 5)\n            return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n        if (args.length % 2 !== 1)\n            return context.error(`Expected an even number of arguments.`);\n        let inputType;\n        let outputType;\n        if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        const cases = {};\n        const outputs = [];\n        for (let i = 2; i < args.length - 1; i += 2) {\n            let labels = args[i];\n            const value = args[i + 1];\n            if (!Array.isArray(labels)) {\n                labels = [labels];\n            }\n            const labelContext = context.concat(i);\n            if (labels.length === 0) {\n                return labelContext.error('Expected at least one branch label.');\n            }\n            for (const label of labels) {\n                if (typeof label !== 'number' && typeof label !== 'string') {\n                    return labelContext.error(`Branch labels must be numbers or strings.`);\n                } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n                    return labelContext.error(`Branch labels must be integers no larger than ${ Number.MAX_SAFE_INTEGER }.`);\n                } else if (typeof label === 'number' && Math.floor(label) !== label) {\n                    return labelContext.error(`Numeric branch labels must be integer values.`);\n                } else if (!inputType) {\n                    inputType = typeOf(label);\n                } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n                    return null;\n                }\n                if (typeof cases[String(label)] !== 'undefined') {\n                    return labelContext.error('Branch labels must be unique.');\n                }\n                cases[String(label)] = outputs.length;\n            }\n            const result = context.parse(value, i, outputType);\n            if (!result)\n                return null;\n            outputType = outputType || result.type;\n            outputs.push(result);\n        }\n        const input = context.parse(args[1], 1, ValueType);\n        if (!input)\n            return null;\n        const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n        if (!otherwise)\n            return null;\n        if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n            return null;\n        }\n        return new Match(inputType, outputType, input, cases, outputs, otherwise);\n    }\n    evaluate(ctx) {\n        const input = this.input.evaluate(ctx);\n        const output = typeOf(input) === this.inputType && this.outputs[this.cases[input]] || this.otherwise;\n        return output.evaluate(ctx);\n    }\n    eachChild(fn) {\n        fn(this.input);\n        this.outputs.forEach(fn);\n        fn(this.otherwise);\n    }\n    outputDefined() {\n        return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n    }\n    serialize() {\n        const serialized = [\n            'match',\n            this.input.serialize()\n        ];\n        // Sort so serialization has an arbitrary defined order, even though\n        // branch order doesn't affect evaluation\n        const sortedLabels = Object.keys(this.cases).sort();\n        // Group branches by unique match expression to support condensed\n        // serializations of the form [case1, case2, ...] -> matchExpression\n        const groupedByOutput = [];\n        const outputLookup = {};\n        // lookup index into groupedByOutput for a given output expression\n        for (const label of sortedLabels) {\n            const outputIndex = outputLookup[this.cases[label]];\n            if (outputIndex === undefined) {\n                // First time seeing this output, add it to the end of the grouped list\n                outputLookup[this.cases[label]] = groupedByOutput.length;\n                groupedByOutput.push([\n                    this.cases[label],\n                    [label]\n                ]);\n            } else {\n                // We've seen this expression before, add the label to that output's group\n                groupedByOutput[outputIndex][1].push(label);\n            }\n        }\n        const coerceLabel = label => this.inputType.kind === 'number' ? Number(label) : label;\n        for (const [outputIndex, labels] of groupedByOutput) {\n            if (labels.length === 1) {\n                // Only a single label matches this output expression\n                serialized.push(coerceLabel(labels[0]));\n            } else {\n                // Array of literal labels pointing to this output expression\n                serialized.push(labels.map(coerceLabel));\n            }\n            serialized.push(this.outputs[outputIndex].serialize());\n        }\n        serialized.push(this.otherwise.serialize());\n        return serialized;\n    }\n}\nvar Match$1 = Match;\n\nclass Case {\n    constructor(type, branches, otherwise) {\n        this.type = type;\n        this.branches = branches;\n        this.otherwise = otherwise;\n    }\n    static parse(args, context) {\n        if (args.length < 4)\n            return context.error(`Expected at least 3 arguments, but found only ${ args.length - 1 }.`);\n        if (args.length % 2 !== 0)\n            return context.error(`Expected an odd number of arguments.`);\n        let outputType;\n        if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        const branches = [];\n        for (let i = 1; i < args.length - 1; i += 2) {\n            const test = context.parse(args[i], i, BooleanType);\n            if (!test)\n                return null;\n            const result = context.parse(args[i + 1], i + 1, outputType);\n            if (!result)\n                return null;\n            branches.push([\n                test,\n                result\n            ]);\n            outputType = outputType || result.type;\n        }\n        const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n        if (!otherwise)\n            return null;\n        return new Case(outputType, branches, otherwise);\n    }\n    evaluate(ctx) {\n        for (const [test, expression] of this.branches) {\n            if (test.evaluate(ctx)) {\n                return expression.evaluate(ctx);\n            }\n        }\n        return this.otherwise.evaluate(ctx);\n    }\n    eachChild(fn) {\n        for (const [test, expression] of this.branches) {\n            fn(test);\n            fn(expression);\n        }\n        fn(this.otherwise);\n    }\n    outputDefined() {\n        return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n    }\n    serialize() {\n        const serialized = ['case'];\n        this.eachChild(child => {\n            serialized.push(child.serialize());\n        });\n        return serialized;\n    }\n}\nvar Case$1 = Case;\n\n//      \nclass Slice {\n    constructor(type, input, beginIndex, endIndex) {\n        this.type = type;\n        this.input = input;\n        this.beginIndex = beginIndex;\n        this.endIndex = endIndex;\n    }\n    static parse(args, context) {\n        if (args.length <= 2 || args.length >= 5) {\n            return context.error(`Expected 3 or 4 arguments, but found ${ args.length - 1 } instead.`);\n        }\n        const input = context.parse(args[1], 1, ValueType);\n        const beginIndex = context.parse(args[2], 2, NumberType);\n        if (!input || !beginIndex)\n            return null;\n        if (!isValidType(input.type, [\n                array$1(ValueType),\n                StringType,\n                ValueType\n            ])) {\n            return context.error(`Expected first argument to be of type array or string, but found ${ toString$1(input.type) } instead`);\n        }\n        if (args.length === 4) {\n            const endIndex = context.parse(args[3], 3, NumberType);\n            if (!endIndex)\n                return null;\n            return new Slice(input.type, input, beginIndex, endIndex);\n        } else {\n            return new Slice(input.type, input, beginIndex);\n        }\n    }\n    evaluate(ctx) {\n        const input = this.input.evaluate(ctx);\n        const beginIndex = this.beginIndex.evaluate(ctx);\n        if (!isValidNativeType(input, [\n                'string',\n                'array'\n            ])) {\n            throw new RuntimeError$1(`Expected first argument to be of type array or string, but found ${ toString$1(typeOf(input)) } instead.`);\n        }\n        if (this.endIndex) {\n            const endIndex = this.endIndex.evaluate(ctx);\n            return input.slice(beginIndex, endIndex);\n        }\n        return input.slice(beginIndex);\n    }\n    eachChild(fn) {\n        fn(this.input);\n        fn(this.beginIndex);\n        if (this.endIndex) {\n            fn(this.endIndex);\n        }\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        if (this.endIndex != null && this.endIndex !== undefined) {\n            const endIndex = this.endIndex.serialize();\n            return [\n                'slice',\n                this.input.serialize(),\n                this.beginIndex.serialize(),\n                endIndex\n            ];\n        }\n        return [\n            'slice',\n            this.input.serialize(),\n            this.beginIndex.serialize()\n        ];\n    }\n}\nvar Slice$1 = Slice;\n\n//      \nfunction isComparableType(op, type) {\n    if (op === '==' || op === '!=') {\n        // equality operator\n        return type.kind === 'boolean' || type.kind === 'string' || type.kind === 'number' || type.kind === 'null' || type.kind === 'value';\n    } else {\n        // ordering operator\n        return type.kind === 'string' || type.kind === 'number' || type.kind === 'value';\n    }\n}\nfunction eq(ctx, a, b) {\n    return a === b;\n}\nfunction neq(ctx, a, b) {\n    return a !== b;\n}\nfunction lt(ctx, a, b) {\n    return a < b;\n}\nfunction gt(ctx, a, b) {\n    return a > b;\n}\nfunction lteq(ctx, a, b) {\n    return a <= b;\n}\nfunction gteq(ctx, a, b) {\n    return a >= b;\n}\nfunction eqCollate(ctx, a, b, c) {\n    return c.compare(a, b) === 0;\n}\nfunction neqCollate(ctx, a, b, c) {\n    return !eqCollate(ctx, a, b, c);\n}\nfunction ltCollate(ctx, a, b, c) {\n    return c.compare(a, b) < 0;\n}\nfunction gtCollate(ctx, a, b, c) {\n    return c.compare(a, b) > 0;\n}\nfunction lteqCollate(ctx, a, b, c) {\n    return c.compare(a, b) <= 0;\n}\nfunction gteqCollate(ctx, a, b, c) {\n    return c.compare(a, b) >= 0;\n}\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n    const isOrderComparison = op !== '==' && op !== '!=';\n    return class Comparison {\n        constructor(lhs, rhs, collator) {\n            this.type = BooleanType;\n            this.lhs = lhs;\n            this.rhs = rhs;\n            this.collator = collator;\n            this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n        }\n        static parse(args, context) {\n            if (args.length !== 3 && args.length !== 4)\n                return context.error(`Expected two or three arguments.`);\n            const op = args[0];\n            let lhs = context.parse(args[1], 1, ValueType);\n            if (!lhs)\n                return null;\n            if (!isComparableType(op, lhs.type)) {\n                return context.concat(1).error(`\"${ op }\" comparisons are not supported for type '${ toString$1(lhs.type) }'.`);\n            }\n            let rhs = context.parse(args[2], 2, ValueType);\n            if (!rhs)\n                return null;\n            if (!isComparableType(op, rhs.type)) {\n                return context.concat(2).error(`\"${ op }\" comparisons are not supported for type '${ toString$1(rhs.type) }'.`);\n            }\n            if (lhs.type.kind !== rhs.type.kind && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n                return context.error(`Cannot compare types '${ toString$1(lhs.type) }' and '${ toString$1(rhs.type) }'.`);\n            }\n            if (isOrderComparison) {\n                // typing rules specific to less/greater than operators\n                if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n                    // (value, T)\n                    lhs = new Assertion$1(rhs.type, [lhs]);\n                } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n                    // (T, value)\n                    rhs = new Assertion$1(lhs.type, [rhs]);\n                }\n            }\n            let collator = null;\n            if (args.length === 4) {\n                if (lhs.type.kind !== 'string' && rhs.type.kind !== 'string' && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n                    return context.error(`Cannot use collator to compare non-string types.`);\n                }\n                collator = context.parse(args[3], 3, CollatorType);\n                if (!collator)\n                    return null;\n            }\n            return new Comparison(lhs, rhs, collator);\n        }\n        evaluate(ctx) {\n            const lhs = this.lhs.evaluate(ctx);\n            const rhs = this.rhs.evaluate(ctx);\n            if (isOrderComparison && this.hasUntypedArgument) {\n                const lt = typeOf(lhs);\n                const rt = typeOf(rhs);\n                // check that type is string or number, and equal\n                if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n                    throw new RuntimeError$1(`Expected arguments for \"${ op }\" to be (string, string) or (number, number), but found (${ lt.kind }, ${ rt.kind }) instead.`);\n                }\n            }\n            if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n                const lt = typeOf(lhs);\n                const rt = typeOf(rhs);\n                if (lt.kind !== 'string' || rt.kind !== 'string') {\n                    return compareBasic(ctx, lhs, rhs);\n                }\n            }\n            return this.collator ? compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) : compareBasic(ctx, lhs, rhs);\n        }\n        eachChild(fn) {\n            fn(this.lhs);\n            fn(this.rhs);\n            if (this.collator) {\n                fn(this.collator);\n            }\n        }\n        outputDefined() {\n            return true;\n        }\n        serialize() {\n            const serialized = [op];\n            this.eachChild(child => {\n                serialized.push(child.serialize());\n            });\n            return serialized;\n        }\n    };\n}\nconst Equals = makeComparison('==', eq, eqCollate);\nconst NotEquals = makeComparison('!=', neq, neqCollate);\nconst LessThan = makeComparison('<', lt, ltCollate);\nconst GreaterThan = makeComparison('>', gt, gtCollate);\nconst LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nconst GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\n//      \nclass NumberFormat {\n    // BCP 47 language tag\n    // ISO 4217 currency code, required if style=currency\n    // Simple units sanctioned for use in ECMAScript, required if style=unit. https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n    // Default 0\n    // Default 3\n    constructor(number, locale, currency, unit, minFractionDigits, maxFractionDigits) {\n        this.type = StringType;\n        this.number = number;\n        this.locale = locale;\n        this.currency = currency;\n        this.unit = unit;\n        this.minFractionDigits = minFractionDigits;\n        this.maxFractionDigits = maxFractionDigits;\n    }\n    static parse(args, context) {\n        if (args.length !== 3)\n            return context.error(`Expected two arguments.`);\n        const number = context.parse(args[1], 1, NumberType);\n        if (!number)\n            return null;\n        const options = args[2];\n        if (typeof options !== 'object' || Array.isArray(options))\n            return context.error(`NumberFormat options argument must be an object.`);\n        let locale = null;\n        if (options['locale']) {\n            locale = context.parse(options['locale'], 1, StringType);\n            if (!locale)\n                return null;\n        }\n        let currency = null;\n        if (options['currency']) {\n            currency = context.parse(options['currency'], 1, StringType);\n            if (!currency)\n                return null;\n        }\n        let unit = null;\n        if (options['unit']) {\n            unit = context.parse(options['unit'], 1, StringType);\n            if (!unit)\n                return null;\n        }\n        let minFractionDigits = null;\n        if (options['min-fraction-digits']) {\n            minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n            if (!minFractionDigits)\n                return null;\n        }\n        let maxFractionDigits = null;\n        if (options['max-fraction-digits']) {\n            maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n            if (!maxFractionDigits)\n                return null;\n        }\n        return new NumberFormat(number, locale, currency, unit, minFractionDigits, maxFractionDigits);\n    }\n    evaluate(ctx) {\n        return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n            style: this.currency && 'currency' || this.unit && 'unit' || 'decimal',\n            currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n            unit: this.unit ? this.unit.evaluate(ctx) : undefined,\n            minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n            maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined\n        }).format(this.number.evaluate(ctx));\n    }\n    eachChild(fn) {\n        fn(this.number);\n        if (this.locale) {\n            fn(this.locale);\n        }\n        if (this.currency) {\n            fn(this.currency);\n        }\n        if (this.unit) {\n            fn(this.unit);\n        }\n        if (this.minFractionDigits) {\n            fn(this.minFractionDigits);\n        }\n        if (this.maxFractionDigits) {\n            fn(this.maxFractionDigits);\n        }\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        const options = {};\n        if (this.locale) {\n            options['locale'] = this.locale.serialize();\n        }\n        if (this.currency) {\n            options['currency'] = this.currency.serialize();\n        }\n        if (this.unit) {\n            options['unit'] = this.unit.serialize();\n        }\n        if (this.minFractionDigits) {\n            options['min-fraction-digits'] = this.minFractionDigits.serialize();\n        }\n        if (this.maxFractionDigits) {\n            options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n        }\n        return [\n            'number-format',\n            this.number.serialize(),\n            options\n        ];\n    }\n}\n\n//      \nclass Length {\n    constructor(input) {\n        this.type = NumberType;\n        this.input = input;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`Expected 1 argument, but found ${ args.length - 1 } instead.`);\n        const input = context.parse(args[1], 1);\n        if (!input)\n            return null;\n        if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n            return context.error(`Expected argument of type string or array, but found ${ toString$1(input.type) } instead.`);\n        return new Length(input);\n    }\n    evaluate(ctx) {\n        const input = this.input.evaluate(ctx);\n        if (typeof input === 'string') {\n            return input.length;\n        } else if (Array.isArray(input)) {\n            return input.length;\n        } else {\n            throw new RuntimeError$1(`Expected value to be of type string or array, but found ${ toString$1(typeOf(input)) } instead.`);\n        }\n    }\n    eachChild(fn) {\n        fn(this.input);\n    }\n    outputDefined() {\n        return false;\n    }\n    serialize() {\n        const serialized = ['length'];\n        this.eachChild(child => {\n            serialized.push(child.serialize());\n        });\n        return serialized;\n    }\n}\nvar Length$1 = Length;\n\n//      \nconst expressions = {\n    // special forms\n    '==': Equals,\n    '!=': NotEquals,\n    '>': GreaterThan,\n    '<': LessThan,\n    '>=': GreaterThanOrEqual,\n    '<=': LessThanOrEqual,\n    'array': Assertion$1,\n    'at': At$1,\n    'boolean': Assertion$1,\n    'case': Case$1,\n    'coalesce': Coalesce$1,\n    'collator': CollatorExpression,\n    'format': FormatExpression,\n    'image': ImageExpression,\n    'in': In$1,\n    'index-of': IndexOf$1,\n    'interpolate': Interpolate$1,\n    'interpolate-hcl': Interpolate$1,\n    'interpolate-lab': Interpolate$1,\n    'length': Length$1,\n    'let': Let$1,\n    'literal': Literal$1,\n    'match': Match$1,\n    'number': Assertion$1,\n    'number-format': NumberFormat,\n    'object': Assertion$1,\n    'slice': Slice$1,\n    'step': Step$1,\n    'string': Assertion$1,\n    'to-boolean': Coercion$1,\n    'to-color': Coercion$1,\n    'to-number': Coercion$1,\n    'to-string': Coercion$1,\n    'var': Var$1,\n    'within': Within$1\n};\nfunction rgba(ctx, [r, g, b, a]) {\n    r = r.evaluate(ctx);\n    g = g.evaluate(ctx);\n    b = b.evaluate(ctx);\n    const alpha = a ? a.evaluate(ctx) : 1;\n    const error = validateRGBA(r, g, b, alpha);\n    if (error)\n        throw new RuntimeError$1(error);\n    return new Color$1(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\nfunction has(key, obj) {\n    return key in obj;\n}\nfunction get(key, obj) {\n    const v = obj[key];\n    return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n    while (i <= j) {\n        const m = i + j >> 1;\n        if (a[m] === v)\n            return true;\n        if (a[m] > v)\n            j = m - 1;\n        else\n            i = m + 1;\n    }\n    return false;\n}\nfunction varargs(type) {\n    return { type };\n}\nCompoundExpression$1.register(expressions, {\n    'error': [\n        ErrorType,\n        [StringType],\n        (ctx, [v]) => {\n            throw new RuntimeError$1(v.evaluate(ctx));\n        }\n    ],\n    'typeof': [\n        StringType,\n        [ValueType],\n        (ctx, [v]) => toString$1(typeOf(v.evaluate(ctx)))\n    ],\n    'to-rgba': [\n        array$1(NumberType, 4),\n        [ColorType],\n        (ctx, [v]) => {\n            return v.evaluate(ctx).toArray();\n        }\n    ],\n    'rgb': [\n        ColorType,\n        [\n            NumberType,\n            NumberType,\n            NumberType\n        ],\n        rgba\n    ],\n    'rgba': [\n        ColorType,\n        [\n            NumberType,\n            NumberType,\n            NumberType,\n            NumberType\n        ],\n        rgba\n    ],\n    'has': {\n        type: BooleanType,\n        overloads: [\n            [\n                [StringType],\n                (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n            ],\n            [\n                [\n                    StringType,\n                    ObjectType\n                ],\n                (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n            ]\n        ]\n    },\n    'get': {\n        type: ValueType,\n        overloads: [\n            [\n                [StringType],\n                (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n            ],\n            [\n                [\n                    StringType,\n                    ObjectType\n                ],\n                (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n            ]\n        ]\n    },\n    'feature-state': [\n        ValueType,\n        [StringType],\n        (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n    ],\n    'properties': [\n        ObjectType,\n        [],\n        ctx => ctx.properties()\n    ],\n    'geometry-type': [\n        StringType,\n        [],\n        ctx => ctx.geometryType()\n    ],\n    'id': [\n        ValueType,\n        [],\n        ctx => ctx.id()\n    ],\n    'zoom': [\n        NumberType,\n        [],\n        ctx => ctx.globals.zoom\n    ],\n    'pitch': [\n        NumberType,\n        [],\n        ctx => ctx.globals.pitch || 0\n    ],\n    'distance-from-center': [\n        NumberType,\n        [],\n        ctx => ctx.distanceFromCenter()\n    ],\n    'heatmap-density': [\n        NumberType,\n        [],\n        ctx => ctx.globals.heatmapDensity || 0\n    ],\n    'line-progress': [\n        NumberType,\n        [],\n        ctx => ctx.globals.lineProgress || 0\n    ],\n    'sky-radial-progress': [\n        NumberType,\n        [],\n        ctx => ctx.globals.skyRadialProgress || 0\n    ],\n    'accumulated': [\n        ValueType,\n        [],\n        ctx => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n    ],\n    '+': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => {\n            let result = 0;\n            for (const arg of args) {\n                result += arg.evaluate(ctx);\n            }\n            return result;\n        }\n    ],\n    '*': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => {\n            let result = 1;\n            for (const arg of args) {\n                result *= arg.evaluate(ctx);\n            }\n            return result;\n        }\n    ],\n    '-': {\n        type: NumberType,\n        overloads: [\n            [\n                [\n                    NumberType,\n                    NumberType\n                ],\n                (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n            ],\n            [\n                [NumberType],\n                (ctx, [a]) => -a.evaluate(ctx)\n            ]\n        ]\n    },\n    '/': [\n        NumberType,\n        [\n            NumberType,\n            NumberType\n        ],\n        (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n    ],\n    '%': [\n        NumberType,\n        [\n            NumberType,\n            NumberType\n        ],\n        (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n    ],\n    'ln2': [\n        NumberType,\n        [],\n        () => Math.LN2\n    ],\n    'pi': [\n        NumberType,\n        [],\n        () => Math.PI\n    ],\n    'e': [\n        NumberType,\n        [],\n        () => Math.E\n    ],\n    '^': [\n        NumberType,\n        [\n            NumberType,\n            NumberType\n        ],\n        (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n    ],\n    'sqrt': [\n        NumberType,\n        [NumberType],\n        (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n    ],\n    'log10': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n    ],\n    'ln': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.log(n.evaluate(ctx))\n    ],\n    'log2': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n    ],\n    'sin': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.sin(n.evaluate(ctx))\n    ],\n    'cos': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.cos(n.evaluate(ctx))\n    ],\n    'tan': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.tan(n.evaluate(ctx))\n    ],\n    'asin': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.asin(n.evaluate(ctx))\n    ],\n    'acos': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.acos(n.evaluate(ctx))\n    ],\n    'atan': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.atan(n.evaluate(ctx))\n    ],\n    'min': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n    ],\n    'max': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n    ],\n    'abs': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.abs(n.evaluate(ctx))\n    ],\n    'round': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => {\n            const v = n.evaluate(ctx);\n            // Javascript's Math.round() rounds towards +Infinity for halfway\n            // values, even when they're negative. It's more common to round\n            // away from 0 (e.g., this is what python and C++ do)\n            return v < 0 ? -Math.round(-v) : Math.round(v);\n        }\n    ],\n    'floor': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.floor(n.evaluate(ctx))\n    ],\n    'ceil': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n    ],\n    'filter-==': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        (ctx, [k, v]) => ctx.properties()[k.value] === v.value\n    ],\n    'filter-id-==': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => ctx.id() === v.value\n    ],\n    'filter-type-==': [\n        BooleanType,\n        [StringType],\n        (ctx, [v]) => ctx.geometryType() === v.value\n    ],\n    'filter-<': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a < b;\n        }\n    ],\n    'filter-id-<': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a < b;\n        }\n    ],\n    'filter->': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a > b;\n        }\n    ],\n    'filter-id->': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a > b;\n        }\n    ],\n    'filter-<=': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a <= b;\n        }\n    ],\n    'filter-id-<=': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a <= b;\n        }\n    ],\n    'filter->=': [\n        BooleanType,\n        [\n            StringType,\n            ValueType\n        ],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a >= b;\n        }\n    ],\n    'filter-id->=': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a >= b;\n        }\n    ],\n    'filter-has': [\n        BooleanType,\n        [ValueType],\n        (ctx, [k]) => k.value in ctx.properties()\n    ],\n    'filter-has-id': [\n        BooleanType,\n        [],\n        ctx => ctx.id() !== null && ctx.id() !== undefined\n    ],\n    'filter-type-in': [\n        BooleanType,\n        [array$1(StringType)],\n        (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0\n    ],\n    'filter-id-in': [\n        BooleanType,\n        [array$1(ValueType)],\n        (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0\n    ],\n    'filter-in-small': [\n        BooleanType,\n        [\n            StringType,\n            array$1(ValueType)\n        ],\n        // assumes v is an array literal\n        (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0\n    ],\n    'filter-in-large': [\n        BooleanType,\n        [\n            StringType,\n            array$1(ValueType)\n        ],\n        // assumes v is a array literal with values sorted in ascending order and of a single type\n        (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)\n    ],\n    'all': {\n        type: BooleanType,\n        overloads: [\n            [\n                [\n                    BooleanType,\n                    BooleanType\n                ],\n                (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n            ],\n            [\n                varargs(BooleanType),\n                (ctx, args) => {\n                    for (const arg of args) {\n                        if (!arg.evaluate(ctx))\n                            return false;\n                    }\n                    return true;\n                }\n            ]\n        ]\n    },\n    'any': {\n        type: BooleanType,\n        overloads: [\n            [\n                [\n                    BooleanType,\n                    BooleanType\n                ],\n                (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n            ],\n            [\n                varargs(BooleanType),\n                (ctx, args) => {\n                    for (const arg of args) {\n                        if (arg.evaluate(ctx))\n                            return true;\n                    }\n                    return false;\n                }\n            ]\n        ]\n    },\n    '!': [\n        BooleanType,\n        [BooleanType],\n        (ctx, [b]) => !b.evaluate(ctx)\n    ],\n    'is-supported-script': [\n        BooleanType,\n        [StringType],\n        // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n        (ctx, [s]) => {\n            const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n            if (isSupportedScript) {\n                return isSupportedScript(s.evaluate(ctx));\n            }\n            return true;\n        }\n    ],\n    'upcase': [\n        StringType,\n        [StringType],\n        (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n    ],\n    'downcase': [\n        StringType,\n        [StringType],\n        (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n    ],\n    'concat': [\n        StringType,\n        varargs(ValueType),\n        (ctx, args) => args.map(arg => toString(arg.evaluate(ctx))).join('')\n    ],\n    'resolved-locale': [\n        StringType,\n        [CollatorType],\n        (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n    ]\n});\nvar definitions = expressions;\n\n//      \n/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nfunction success(value) {\n    return {\n        result: 'success',\n        value\n    };\n}\nfunction error(value) {\n    return {\n        result: 'error',\n        value\n    };\n}\n\n//      \nfunction supportsPropertyExpression(spec) {\n    return spec['property-type'] === 'data-driven';\n}\nfunction supportsZoomExpression(spec) {\n    return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n    return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction isFunction(value) {\n    return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nclass StyleExpression {\n    constructor(expression, propertySpec) {\n        this.expression = expression;\n        this._warningHistory = {};\n        this._evaluator = new EvaluationContext$1();\n        this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n        this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n    }\n    evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection, featureTileCoord, featureDistanceData) {\n        this._evaluator.globals = globals;\n        this._evaluator.feature = feature;\n        this._evaluator.featureState = featureState;\n        this._evaluator.canonical = canonical || null;\n        this._evaluator.availableImages = availableImages || null;\n        this._evaluator.formattedSection = formattedSection;\n        this._evaluator.featureTileCoord = featureTileCoord || null;\n        this._evaluator.featureDistanceData = featureDistanceData || null;\n        return this.expression.evaluate(this._evaluator);\n    }\n    evaluate(globals, feature, featureState, canonical, availableImages, formattedSection, featureTileCoord, featureDistanceData) {\n        this._evaluator.globals = globals;\n        this._evaluator.feature = feature || null;\n        this._evaluator.featureState = featureState || null;\n        this._evaluator.canonical = canonical || null;\n        this._evaluator.availableImages = availableImages || null;\n        this._evaluator.formattedSection = formattedSection || null;\n        this._evaluator.featureTileCoord = featureTileCoord || null;\n        this._evaluator.featureDistanceData = featureDistanceData || null;\n        try {\n            const val = this.expression.evaluate(this._evaluator);\n            // eslint-disable-next-line no-self-compare\n            if (val === null || val === undefined || typeof val === 'number' && val !== val) {\n                return this._defaultValue;\n            }\n            if (this._enumValues && !(val in this._enumValues)) {\n                throw new RuntimeError$1(`Expected value to be one of ${ Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ') }, but found ${ JSON.stringify(val) } instead.`);\n            }\n            return val;\n        } catch (e) {\n            if (!this._warningHistory[e.message]) {\n                this._warningHistory[e.message] = true;\n                if (typeof console !== 'undefined') {\n                    console.warn(e.message);\n                }\n            }\n            return this._defaultValue;\n        }\n    }\n}\nfunction isExpression(expression) {\n    return Array.isArray(expression) && expression.length > 0 && typeof expression[0] === 'string' && expression[0] in definitions;\n}\n/**\n * Parse and typecheck the given style spec JSON expression.  If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value.  Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nfunction createExpression(expression, propertySpec) {\n    const parser = new ParsingContext$1(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n    // For string-valued properties, coerce to string at the top level rather than asserting.\n    const parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n    if (!parsed) {\n        return error(parser.errors);\n    }\n    return success(new StyleExpression(parsed, propertySpec));\n}\nclass ZoomConstantExpression {\n    constructor(kind, expression) {\n        this.kind = kind;\n        this._styleExpression = expression;\n        this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n    }\n    evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n    evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n}\nclass ZoomDependentExpression {\n    constructor(kind, expression, zoomStops, interpolationType) {\n        this.kind = kind;\n        this.zoomStops = zoomStops;\n        this._styleExpression = expression;\n        this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n        this.interpolationType = interpolationType;\n    }\n    evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n    evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n    interpolationFactor(input, lower, upper) {\n        if (this.interpolationType) {\n            return Interpolate$1.interpolationFactor(this.interpolationType, input, lower, upper);\n        } else {\n            return 0;\n        }\n    }\n}\nfunction createPropertyExpression(expression, propertySpec) {\n    expression = createExpression(expression, propertySpec);\n    if (expression.result === 'error') {\n        return expression;\n    }\n    const parsed = expression.value.expression;\n    const isFeatureConstant$1 = isFeatureConstant(parsed);\n    if (!isFeatureConstant$1 && !supportsPropertyExpression(propertySpec)) {\n        return error([new ParsingError$1('', 'data expressions not supported')]);\n    }\n    const isZoomConstant = isGlobalPropertyConstant(parsed, [\n        'zoom',\n        'pitch',\n        'distance-from-center'\n    ]);\n    if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n        return error([new ParsingError$1('', 'zoom expressions not supported')]);\n    }\n    const zoomCurve = findZoomCurve(parsed);\n    if (!zoomCurve && !isZoomConstant) {\n        return error([new ParsingError$1('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n    } else if (zoomCurve instanceof ParsingError$1) {\n        return error([zoomCurve]);\n    } else if (zoomCurve instanceof Interpolate$1 && !supportsInterpolation(propertySpec)) {\n        return error([new ParsingError$1('', '\"interpolate\" expressions cannot be used with this property')]);\n    }\n    if (!zoomCurve) {\n        return success(isFeatureConstant$1 ? new ZoomConstantExpression('constant', expression.value) : new ZoomConstantExpression('source', expression.value));\n    }\n    const interpolationType = zoomCurve instanceof Interpolate$1 ? zoomCurve.interpolation : undefined;\n    return success(isFeatureConstant$1 ? new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) : new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType));\n}\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression) {\n    let result = null;\n    if (expression instanceof Let$1) {\n        result = findZoomCurve(expression.result);\n    } else if (expression instanceof Coalesce$1) {\n        for (const arg of expression.args) {\n            result = findZoomCurve(arg);\n            if (result) {\n                break;\n            }\n        }\n    } else if ((expression instanceof Step$1 || expression instanceof Interpolate$1) && expression.input instanceof CompoundExpression$1 && expression.input.name === 'zoom') {\n        result = expression;\n    }\n    if (result instanceof ParsingError$1) {\n        return result;\n    }\n    expression.eachChild(child => {\n        const childResult = findZoomCurve(child);\n        if (childResult instanceof ParsingError$1) {\n            result = childResult;\n        } else if (!result && childResult) {\n            result = new ParsingError$1('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n        } else if (result && childResult && result !== childResult) {\n            result = new ParsingError$1('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n        }\n    });\n    return result;\n}\nfunction getExpectedType(spec) {\n    const types = {\n        color: ColorType,\n        string: StringType,\n        number: NumberType,\n        enum: StringType,\n        boolean: BooleanType,\n        formatted: FormattedType,\n        resolvedImage: ResolvedImageType\n    };\n    if (spec.type === 'array') {\n        return array$1(types[spec.value] || ValueType, spec.length);\n    }\n    return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n    if (spec.type === 'color' && (isFunction(spec.default) || Array.isArray(spec.default))) {\n        // Special case for heatmap-color: it uses the 'default:' to define a\n        // default color ramp, but createExpression expects a simple value to fall\n        // back to in case of runtime errors\n        return new Color$1(0, 0, 0, 0);\n    } else if (spec.type === 'color') {\n        return Color$1.parse(spec.default) || null;\n    } else if (spec.default === undefined) {\n        return null;\n    } else {\n        return spec.default;\n    }\n}\n\n//      \n// Turn jsonlint-lines-primitives objects into primitive objects\nfunction unbundle(value) {\n    if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n        return value.valueOf();\n    } else {\n        return value;\n    }\n}\nfunction deepUnbundle(value) {\n    if (Array.isArray(value)) {\n        return value.map(deepUnbundle);\n    } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n        const unbundledValue = {};\n        for (const key in value) {\n            unbundledValue[key] = deepUnbundle(value[key]);\n        }\n        return unbundledValue;\n    }\n    return unbundle(value);\n}\n\nvar spec = {\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"terrain\":{\"type\":\"terrain\"},\"fog\":{\"type\":\"fog\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"projection\":{\"type\":\"projection\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],\"source_vector\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"attribution\":{\"type\":\"string\"},\"promoteId\":{\"type\":\"promoteId\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"attribution\":{\"type\":\"string\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster_dem\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster-dem\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"attribution\":{\"type\":\"string\"},\"encoding\":{\"type\":\"enum\",\"values\":{\"terrarium\":{},\"mapbox\":{}},\"default\":\"mapbox\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"attribution\":{\"type\":\"string\"},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"filter\":{\"type\":\"*\"},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"},\"clusterMinPoints\":{\"type\":\"number\"},\"clusterProperties\":{\"type\":\"*\"},\"lineMetrics\":{\"type\":\"boolean\",\"default\":false},\"generateId\":{\"type\":\"boolean\",\"default\":false},\"promoteId\":{\"type\":\"promoteId\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"heatmap\":{},\"fill-extrusion\":{},\"raster\":{},\"hillshade\":{},\"background\":{},\"sky\":{}},\"required\":true},\"metadata\":{\"type\":\"*\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\",\"layout_sky\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_sky\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill\":{\"fill-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_circle\":{\"circle-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_heatmap\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"},\"fill-extrusion-edge-radius\":{\"type\":\"number\",\"private\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"property-type\":\"constant\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-join\":{\"type\":\"enum\",\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"requires\":[{\"line-join\":\"miter\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"requires\":[{\"line-join\":\"round\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"values\":{\"point\":{},\"line\":{},\"line-center\":{}},\"default\":\"point\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"default\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"viewport-y\":{},\"source\":{}},\"default\":\"auto\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{\"type\":\"enum\",\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{\"type\":\"resolvedImage\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{\"type\":\"formatted\",\"default\":\"\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{\"type\":\"number\",\"units\":\"ems\",\"default\":0,\"requires\":[\"text-field\"],\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\",{\"!\":\"text-variable-anchor\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"horizontal\":{},\"vertical\":{}},\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{\"type\":\"boolean\",\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{\"type\":\"enum\",\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\",{\"!\":\"text-radial-offset\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\",\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_hillshade\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_symbol\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\",\"pitch\",\"distance-from-center\"]}},\"filter_fill\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_line\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_circle\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_fill-extrusion\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_heatmap\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{},\"within\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"expression\":{\"type\":\"expression\"},\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":24,\"value\":[\"number\",\"color\"],\"length\":2},\"expression\":{\"type\":\"array\",\"value\":\"*\",\"minimum\":1},\"expression_name\":{\"type\":\"enum\",\"values\":{\"let\":{\"group\":\"Variable binding\"},\"var\":{\"group\":\"Variable binding\"},\"literal\":{\"group\":\"Types\"},\"array\":{\"group\":\"Types\"},\"at\":{\"group\":\"Lookup\"},\"in\":{\"group\":\"Lookup\"},\"index-of\":{\"group\":\"Lookup\"},\"slice\":{\"group\":\"Lookup\"},\"case\":{\"group\":\"Decision\"},\"match\":{\"group\":\"Decision\"},\"coalesce\":{\"group\":\"Decision\"},\"step\":{\"group\":\"Ramps, scales, curves\"},\"interpolate\":{\"group\":\"Ramps, scales, curves\"},\"interpolate-hcl\":{\"group\":\"Ramps, scales, curves\"},\"interpolate-lab\":{\"group\":\"Ramps, scales, curves\"},\"ln2\":{\"group\":\"Math\"},\"pi\":{\"group\":\"Math\"},\"e\":{\"group\":\"Math\"},\"typeof\":{\"group\":\"Types\"},\"string\":{\"group\":\"Types\"},\"number\":{\"group\":\"Types\"},\"boolean\":{\"group\":\"Types\"},\"object\":{\"group\":\"Types\"},\"collator\":{\"group\":\"Types\"},\"format\":{\"group\":\"Types\"},\"image\":{\"group\":\"Types\"},\"number-format\":{\"group\":\"Types\"},\"to-string\":{\"group\":\"Types\"},\"to-number\":{\"group\":\"Types\"},\"to-boolean\":{\"group\":\"Types\"},\"to-rgba\":{\"group\":\"Color\"},\"to-color\":{\"group\":\"Types\"},\"rgb\":{\"group\":\"Color\"},\"rgba\":{\"group\":\"Color\"},\"get\":{\"group\":\"Lookup\"},\"has\":{\"group\":\"Lookup\"},\"length\":{\"group\":\"Lookup\"},\"properties\":{\"group\":\"Feature data\"},\"feature-state\":{\"group\":\"Feature data\"},\"geometry-type\":{\"group\":\"Feature data\"},\"id\":{\"group\":\"Feature data\"},\"zoom\":{\"group\":\"Camera\"},\"pitch\":{\"group\":\"Camera\"},\"distance-from-center\":{\"group\":\"Camera\"},\"heatmap-density\":{\"group\":\"Heatmap\"},\"line-progress\":{\"group\":\"Feature data\"},\"sky-radial-progress\":{\"group\":\"sky\"},\"accumulated\":{\"group\":\"Feature data\"},\"+\":{\"group\":\"Math\"},\"*\":{\"group\":\"Math\"},\"-\":{\"group\":\"Math\"},\"/\":{\"group\":\"Math\"},\"%\":{\"group\":\"Math\"},\"^\":{\"group\":\"Math\"},\"sqrt\":{\"group\":\"Math\"},\"log10\":{\"group\":\"Math\"},\"ln\":{\"group\":\"Math\"},\"log2\":{\"group\":\"Math\"},\"sin\":{\"group\":\"Math\"},\"cos\":{\"group\":\"Math\"},\"tan\":{\"group\":\"Math\"},\"asin\":{\"group\":\"Math\"},\"acos\":{\"group\":\"Math\"},\"atan\":{\"group\":\"Math\"},\"min\":{\"group\":\"Math\"},\"max\":{\"group\":\"Math\"},\"round\":{\"group\":\"Math\"},\"abs\":{\"group\":\"Math\"},\"ceil\":{\"group\":\"Math\"},\"floor\":{\"group\":\"Math\"},\"distance\":{\"group\":\"Math\"},\"==\":{\"group\":\"Decision\"},\"!=\":{\"group\":\"Decision\"},\">\":{\"group\":\"Decision\"},\"<\":{\"group\":\"Decision\"},\">=\":{\"group\":\"Decision\"},\"<=\":{\"group\":\"Decision\"},\"all\":{\"group\":\"Decision\"},\"any\":{\"group\":\"Decision\"},\"!\":{\"group\":\"Decision\"},\"within\":{\"group\":\"Decision\"},\"is-supported-script\":{\"group\":\"String\"},\"upcase\":{\"group\":\"String\"},\"downcase\":{\"group\":\"String\"},\"concat\":{\"group\":\"String\"},\"resolved-locale\":{\"group\":\"String\"}}},\"fog\":{\"range\":{\"type\":\"array\",\"default\":[0.5,10],\"minimum\":-20,\"maximum\":20,\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"high-color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#245cdf\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"space-color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],4,\"#010b19\",7,\"#367ab9\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"horizon-blend\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],4,0.2,7,0.1],\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"star-intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],5,0.35,6,0],\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"property-type\":\"data-constant\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]}},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"projection\":{\"name\":{\"type\":\"enum\",\"values\":{\"albers\":{},\"equalEarth\":{},\"equirectangular\":{},\"lambertConformalConic\":{},\"mercator\":{},\"naturalEarth\":{},\"winkelTripel\":{},\"globe\":{}},\"default\":\"mercator\",\"required\":true},\"center\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"minimum\":[-180,-90],\"maximum\":[180,90],\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]},\"parallels\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"minimum\":[-90,-90],\"maximum\":[90,90],\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]}},\"terrain\":{\"source\":{\"type\":\"string\",\"required\":true},\"exaggeration\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":1,\"minimum\":0,\"maximum\":1000,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true,\"requires\":[\"source\"]}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\",\"paint_sky\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"default\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{\"type\":\"color\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-height\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{\"type\":\"boolean\",\"default\":true,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-ambient-occlusion-intensity\":{\"property-type\":\"data-constant\",\"type\":\"number\",\"private\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"fill-extrusion-ambient-occlusion-radius\":{\"property-type\":\"data-constant\",\"type\":\"number\",\"private\":true,\"default\":3,\"minimum\":0,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true,\"requires\":[\"fill-extrusion-edge-radius\"]}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"minimum\":0,\"transition\":false,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-gradient\":{\"type\":\"color\",\"transition\":false,\"requires\":[{\"!\":\"line-pattern\"},{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"expression\":{\"interpolated\":true,\"parameters\":[\"line-progress\"]},\"property-type\":\"color-ramp\"},\"line-trim-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"minimum\":[0,0],\"maximum\":[1,1],\"transition\":false,\"requires\":[{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"property-type\":\"constant\"}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},\"paint_heatmap\":{\"heatmap-radius\":{\"type\":\"number\",\"default\":30,\"minimum\":1,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",0.1,\"royalblue\",0.3,\"cyan\",0.5,\"lime\",0.7,\"yellow\",1,\"red\"],\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"overridable\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"transition\":true,\"units\":\"degrees\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{\"type\":\"enum\",\"values\":{\"linear\":{},\"nearest\":{}},\"default\":\"linear\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"transition\":false,\"units\":\"milliseconds\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_hillshade\":{\"hillshade-illumination-direction\":{\"type\":\"number\",\"default\":335,\"minimum\":0,\"maximum\":359,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{\"type\":\"color\",\"default\":\"#FFFFFF\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_sky\":{\"sky-type\":{\"type\":\"enum\",\"values\":{\"gradient\":{},\"atmosphere\":{}},\"default\":\"atmosphere\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun-intensity\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"atmosphere\"}],\"default\":10,\"minimum\":0,\"maximum\":100,\"transition\":false,\"property-type\":\"data-constant\"},\"sky-gradient-center\":{\"type\":\"array\",\"requires\":[{\"sky-type\":\"gradient\"}],\"value\":\"number\",\"default\":[0,0],\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient-radius\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"gradient\"}],\"default\":90,\"minimum\":0,\"maximum\":180,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"sky-radial-progress\"],0.8,\"#87ceeb\",1,\"white\"],\"transition\":false,\"requires\":[{\"sky-type\":\"gradient\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"sky-radial-progress\"]},\"property-type\":\"color-ramp\"},\"sky-atmosphere-halo-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-atmosphere-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}},\"property-type\":{\"data-driven\":{\"type\":\"property-type\"},\"color-ramp\":{\"type\":\"property-type\"},\"data-constant\":{\"type\":\"property-type\"},\"constant\":{\"type\":\"property-type\"}},\"promoteId\":{\"*\":{\"type\":\"string\"}}};\n\n//      \nfunction isExpressionFilter(filter) {\n    if (filter === true || filter === false) {\n        return true;\n    }\n    if (!Array.isArray(filter) || filter.length === 0) {\n        return false;\n    }\n    switch (filter[0]) {\n    case 'has':\n        return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n    case 'in':\n        return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n    case '!in':\n    case '!has':\n    case 'none':\n        return false;\n    case '==':\n    case '!=':\n    case '>':\n    case '>=':\n    case '<':\n    case '<=':\n        return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n    case 'any':\n    case 'all':\n        for (const f of filter.slice(1)) {\n            if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n                return false;\n            }\n        }\n        return true;\n    default:\n        return true;\n    }\n}\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter mapbox gl filter\n * @param {string} layerType the type of the layer this filter will be applied to.\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter, layerType = 'fill') {\n    if (filter === null || filter === undefined) {\n        return {\n            filter: () => true,\n            needGeometry: false,\n            needFeature: false\n        };\n    }\n    if (!isExpressionFilter(filter)) {\n        filter = convertFilter(filter);\n    }\n    const filterExp = filter;\n    let staticFilter = true;\n    try {\n        staticFilter = extractStaticFilter(filterExp);\n    } catch (e) {\n        console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${ JSON.stringify(filterExp, null, 2) }\n        `);\n    }\n    // Compile the static component of the filter\n    const filterSpec = spec[`filter_${ layerType }`];\n    const compiledStaticFilter = createExpression(staticFilter, filterSpec);\n    let filterFunc = null;\n    if (compiledStaticFilter.result === 'error') {\n        throw new Error(compiledStaticFilter.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n    } else {\n        filterFunc = (globalProperties, feature, canonical) => compiledStaticFilter.value.evaluate(globalProperties, feature, {}, canonical);\n    }\n    // If the static component is not equal to the entire filter then we have a dynamic component\n    // Compile the dynamic component separately\n    let dynamicFilterFunc = null;\n    let needFeature = null;\n    if (staticFilter !== filterExp) {\n        const compiledDynamicFilter = createExpression(filterExp, filterSpec);\n        if (compiledDynamicFilter.result === 'error') {\n            throw new Error(compiledDynamicFilter.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n        } else {\n            dynamicFilterFunc = (globalProperties, feature, canonical, featureTileCoord, featureDistanceData) => compiledDynamicFilter.value.evaluate(globalProperties, feature, {}, canonical, undefined, undefined, featureTileCoord, featureDistanceData);\n            needFeature = !isFeatureConstant(compiledDynamicFilter.value.expression);\n        }\n    }\n    filterFunc = filterFunc;\n    const needGeometry = geometryNeeded(staticFilter);\n    return {\n        filter: filterFunc,\n        dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : undefined,\n        needGeometry,\n        needFeature: !!needFeature\n    };\n}\nfunction extractStaticFilter(filter) {\n    if (!isDynamicFilter(filter)) {\n        return filter;\n    }\n    // Shallow copy so we can replace expressions in-place\n    let result = deepUnbundle(filter);\n    // 1. Union branches\n    unionDynamicBranches(result);\n    // 2. Collapse dynamic conditions to  `true`\n    result = collapseDynamicBooleanExpressions(result);\n    return result;\n}\nfunction collapseDynamicBooleanExpressions(expression) {\n    if (!Array.isArray(expression)) {\n        return expression;\n    }\n    const collapsed = collapsedExpression(expression);\n    if (collapsed === true) {\n        return collapsed;\n    } else {\n        return collapsed.map(subExpression => collapseDynamicBooleanExpressions(subExpression));\n    }\n}\n/**\n * Traverses the expression and replaces all instances of branching on a\n * `dynamic` conditional (such as `['pitch']` or `['distance-from-center']`)\n * into an `any` expression.\n * This ensures that all possible outcomes of a `dynamic` branch are considered\n * when evaluating the expression upfront during filtering.\n *\n * @param {Array<any>} filter the filter expression mutated in-place.\n */\nfunction unionDynamicBranches(filter) {\n    let isBranchingDynamically = false;\n    const branches = [];\n    if (filter[0] === 'case') {\n        for (let i = 1; i < filter.length - 1; i += 2) {\n            isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[i]);\n            branches.push(filter[i + 1]);\n        }\n        branches.push(filter[filter.length - 1]);\n    } else if (filter[0] === 'match') {\n        isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n        for (let i = 2; i < filter.length - 1; i += 2) {\n            branches.push(filter[i + 1]);\n        }\n        branches.push(filter[filter.length - 1]);\n    } else if (filter[0] === 'step') {\n        isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n        for (let i = 1; i < filter.length - 1; i += 2) {\n            branches.push(filter[i + 1]);\n        }\n    }\n    if (isBranchingDynamically) {\n        filter.length = 0;\n        filter.push('any', ...branches);\n    }\n    // traverse and recurse into children\n    for (let i = 1; i < filter.length; i++) {\n        unionDynamicBranches(filter[i]);\n    }\n}\nfunction isDynamicFilter(filter) {\n    // Base Cases\n    if (!Array.isArray(filter)) {\n        return false;\n    }\n    if (isRootExpressionDynamic(filter[0])) {\n        return true;\n    }\n    for (let i = 1; i < filter.length; i++) {\n        const child = filter[i];\n        if (isDynamicFilter(child)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isRootExpressionDynamic(expression) {\n    return expression === 'pitch' || expression === 'distance-from-center';\n}\nconst dynamicConditionExpressions = new Set([\n    'in',\n    '==',\n    '!=',\n    '>',\n    '>=',\n    '<',\n    '<=',\n    'to-boolean'\n]);\nfunction collapsedExpression(expression) {\n    if (dynamicConditionExpressions.has(expression[0])) {\n        for (let i = 1; i < expression.length; i++) {\n            const param = expression[i];\n            if (isDynamicFilter(param)) {\n                return true;\n            }\n        }\n    }\n    return expression;\n}\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n    if (!Array.isArray(filter))\n        return false;\n    if (filter[0] === 'within')\n        return true;\n    for (let index = 1; index < filter.length; index++) {\n        if (geometryNeeded(filter[index]))\n            return true;\n    }\n    return false;\n}\nfunction convertFilter(filter) {\n    if (!filter)\n        return true;\n    const op = filter[0];\n    if (filter.length <= 1)\n        return op !== 'any';\n    const converted = op === '==' ? convertComparisonOp(filter[1], filter[2], '==') : op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || op === '>=' ? convertComparisonOp(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) : op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : op === 'in' ? convertInOp(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp(filter[1]) : op === '!has' ? convertNegation(convertHasOp(filter[1])) : op === 'within' ? filter : true;\n    return converted;\n}\nfunction convertComparisonOp(property, value, op) {\n    switch (property) {\n    case '$type':\n        return [\n            `filter-type-${ op }`,\n            value\n        ];\n    case '$id':\n        return [\n            `filter-id-${ op }`,\n            value\n        ];\n    default:\n        return [\n            `filter-${ op }`,\n            property,\n            value\n        ];\n    }\n}\nfunction convertDisjunctionOp(filters) {\n    return ['any'].concat(filters.map(convertFilter));\n}\nfunction convertInOp(property, values) {\n    if (values.length === 0) {\n        return false;\n    }\n    switch (property) {\n    case '$type':\n        return [\n            `filter-type-in`,\n            [\n                'literal',\n                values\n            ]\n        ];\n    case '$id':\n        return [\n            `filter-id-in`,\n            [\n                'literal',\n                values\n            ]\n        ];\n    default:\n        if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n            return [\n                'filter-in-large',\n                property,\n                [\n                    'literal',\n                    values.sort(compare)\n                ]\n            ];\n        } else {\n            return [\n                'filter-in-small',\n                property,\n                [\n                    'literal',\n                    values\n                ]\n            ];\n        }\n    }\n}\nfunction convertHasOp(property) {\n    switch (property) {\n    case '$type':\n        return true;\n    case '$id':\n        return [`filter-has-id`];\n    default:\n        return [\n            `filter-has`,\n            property\n        ];\n    }\n}\nfunction convertNegation(filter) {\n    return [\n        '!',\n        filter\n    ];\n}\n\n//      \nvar refProperties = [\n    'type',\n    'source',\n    'source-layer',\n    'minzoom',\n    'maxzoom',\n    'filter',\n    'layout'\n];\n\n//      \nfunction deref(layer, parent) {\n    const result = {};\n    for (const k in layer) {\n        if (k !== 'ref') {\n            result[k] = layer[k];\n        }\n    }\n    refProperties.forEach(k => {\n        if (k in parent) {\n            result[k] = parent[k];\n        }\n    });\n    return result;\n}\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array<Layer>} layers\n * @returns {Array<Layer>}\n */\nfunction derefLayers(layers) {\n    layers = layers.slice();\n    const map = Object.create(null);\n    for (let i = 0; i < layers.length; i++) {\n        map[layers[i].id] = layers[i];\n    }\n    for (let i = 0; i < layers.length; i++) {\n        if ('ref' in layers[i]) {\n            layers[i] = deref(layers[i], map[layers[i].ref]);\n        }\n    }\n    return layers;\n}\n\nvar fontWeights = {\n    thin: 100,\n    hairline: 100,\n    'ultra-light': 200,\n    'extra-light': 200,\n    light: 300,\n    book: 300,\n    regular: 400,\n    normal: 400,\n    plain: 400,\n    roman: 400,\n    standard: 400,\n    medium: 500,\n    'semi-bold': 600,\n    'demi-bold': 600,\n    bold: 700,\n    'extra-bold': 800,\n    'ultra-bold': 800,\n    heavy: 900,\n    black: 900,\n    'heavy-black': 900,\n    fat: 900,\n    poster: 900,\n    'ultra-black': 950,\n    'extra-black': 950\n};\nvar sp = ' ';\nvar italicRE = /(italic|oblique)$/i;\nvar fontCache = {};\nvar mapboxToCssFont = function (fonts, size, lineHeight) {\n    var cssData = fontCache[fonts];\n    if (!cssData) {\n        if (!Array.isArray(fonts)) {\n            fonts = [fonts];\n        }\n        var weight = 400;\n        var style = 'normal';\n        var fontFamilies = [];\n        var haveWeight, haveStyle;\n        for (var i = 0, ii = fonts.length; i < ii; ++i) {\n            var font = fonts[i];\n            var parts = font.split(' ');\n            var maybeWeight = parts[parts.length - 1].toLowerCase();\n            if (maybeWeight == 'normal' || maybeWeight == 'italic' || maybeWeight == 'oblique') {\n                style = haveStyle ? style : maybeWeight;\n                haveStyle = true;\n                parts.pop();\n                maybeWeight = parts[parts.length - 1].toLowerCase();\n            } else if (italicRE.test(maybeWeight)) {\n                maybeWeight = maybeWeight.replace(italicRE, '');\n                style = haveStyle ? style : parts[parts.length - 1].replace(maybeWeight, '');\n                haveStyle = true;\n            }\n            for (var w in fontWeights) {\n                var previousPart = parts.length > 1 ? parts[parts.length - 2].toLowerCase() : '';\n                if (maybeWeight == w || maybeWeight == w.replace('-', '') || previousPart + '-' + maybeWeight == w) {\n                    weight = haveWeight ? weight : fontWeights[w];\n                    parts.pop();\n                    if (previousPart && w.startsWith(previousPart)) {\n                        parts.pop();\n                    }\n                    break;\n                }\n            }\n            if (!haveWeight && typeof maybeWeight == 'number') {\n                weight = maybeWeight;\n                haveWeight = true;\n            }\n            var fontFamily = parts.join(sp).replace('Klokantech Noto Sans', 'Noto Sans');\n            if (fontFamily.indexOf(sp) !== -1) {\n                fontFamily = '\"' + fontFamily + '\"';\n            }\n            fontFamilies.push(fontFamily);\n        }\n        // CSS font property: font-style font-weight font-size/line-height font-family\n        cssData = fontCache[fonts] = [\n            style,\n            weight,\n            fontFamilies\n        ];\n    }\n    return cssData[0] + sp + cssData[1] + sp + size + 'px' + (lineHeight ? '/' + lineHeight : '') + sp + cssData[2];\n};\n\nvar mb2css = /*@__PURE__*/getDefaultExportFromCjs(mapboxToCssFont);\n\nconst mapboxBaseUrl = 'https://api.mapbox.com';\n/**\n * Gets the path from a mapbox:// URL.\n * @param {string} url The Mapbox URL.\n * @return {string} The path.\n * @private\n */\nfunction getMapboxPath(url) {\n    const startsWith = 'mapbox://';\n    if (url.indexOf(startsWith) !== 0) {\n        return '';\n    }\n    return url.slice(startsWith.length);\n}\n/**\n * Turns mapbox:// sprite URLs into resolvable URLs.\n * @param {string} url The sprite URL.\n * @param {string} token The access token.\n * @param {string} styleUrl The style URL.\n * @return {string} A resolvable URL.\n * @private\n */\nfunction normalizeSpriteUrl(url, token, styleUrl) {\n    const mapboxPath = getMapboxPath(url);\n    if (!mapboxPath) {\n        return decodeURI(new URL(url, styleUrl).href);\n    }\n    const startsWith = 'sprites/';\n    if (mapboxPath.indexOf(startsWith) !== 0) {\n        throw new Error(`unexpected sprites url: ${ url }`);\n    }\n    const sprite = mapboxPath.slice(startsWith.length);\n    return `${ mapboxBaseUrl }/styles/v1/${ sprite }/sprite?access_token=${ token }`;\n}\n/**\n * Turns mapbox:// style URLs into resolvable URLs.\n * @param {string} url The style URL.\n * @param {string} token The access token.\n * @return {string} A resolvable URL.\n * @private\n */\nfunction normalizeStyleUrl(url, token) {\n    const mapboxPath = getMapboxPath(url);\n    if (!mapboxPath) {\n        return decodeURI(new URL(url, location.href).href);\n    }\n    const startsWith = 'styles/';\n    if (mapboxPath.indexOf(startsWith) !== 0) {\n        throw new Error(`unexpected style url: ${ url }`);\n    }\n    const style = mapboxPath.slice(startsWith.length);\n    return `${ mapboxBaseUrl }/styles/v1/${ style }?&access_token=${ token }`;\n}\nconst mapboxSubdomains = [\n    'a',\n    'b',\n    'c',\n    'd'\n];\n/**\n * Turns mapbox:// source URLs into vector tile URL templates.\n * @param {string} url The source URL.\n * @param {string} token The access token.\n * @param {string} tokenParam The access token key.\n * @param {string} styleUrl The style URL.\n * @return {Array<string>} A vector tile template.\n * @private\n */\nfunction normalizeSourceUrl(url, token, tokenParam, styleUrl) {\n    const urlObject = new URL(url, styleUrl);\n    const mapboxPath = getMapboxPath(url);\n    if (!mapboxPath) {\n        if (!token) {\n            return [decodeURI(urlObject.href)];\n        }\n        if (!urlObject.searchParams.has(tokenParam)) {\n            urlObject.searchParams.set(tokenParam, token);\n        }\n        return [decodeURI(urlObject.href)];\n    }\n    if (mapboxPath === 'mapbox.satellite') {\n        const sizeFactor = window.devicePixelRatio >= 1.5 ? '@2x' : '';\n        return [`https://api.mapbox.com/v4/${ mapboxPath }/{z}/{x}/{y}${ sizeFactor }.webp?access_token=${ token }`];\n    }\n    return mapboxSubdomains.map(sub => `https://${ sub }.tiles.mapbox.com/v4/${ mapboxPath }/{z}/{x}/{y}.vector.pbf?access_token=${ token }`);\n}\n\n/** @typedef {'Style'|'Source'|'Sprite'|'SpriteImage'|'Tiles'|'GeoJSON'} ResourceType */\n/** @typedef {import(\"ol\").Map} Map */\n/** @typedef {import(\"ol/layer\").Layer} Layer */\n/** @typedef {import(\"ol/layer\").Group} LayerGroup */\n/** @typedef {import(\"ol/layer\").Vector} VectorLayer */\n/** @typedef {import(\"ol/layer\").VectorTile} VectorTileLayer */\n/** @typedef {import(\"ol/source\").Source} Source */\nconst functionCacheByStyleId = {};\nconst filterCacheByStyleId = {};\nlet styleId = 0;\nfunction getStyleId(glStyle) {\n    if (!glStyle.id) {\n        glStyle.id = styleId++;\n    }\n    return glStyle.id;\n}\nfunction getStyleFunctionKey(glStyle, olLayer) {\n    return getStyleId(glStyle) + '.' + getUid(olLayer);\n}\n/**\n * @param {Object} glStyle Mapboox style object.\n * @return {Object} Function cache.\n */\nfunction getFunctionCache(glStyle) {\n    let functionCache = functionCacheByStyleId[glStyle.id];\n    if (!functionCache) {\n        functionCache = {};\n        functionCacheByStyleId[getStyleId(glStyle)] = functionCache;\n    }\n    return functionCache;\n}\nfunction clearFunctionCache() {\n    for (const key in functionCacheByStyleId) {\n        delete functionCacheByStyleId[key];\n    }\n}\n/**\n * @param {Object} glStyle Mapboox style object.\n * @return {Object} Filter cache.\n */\nfunction getFilterCache(glStyle) {\n    let filterCache = filterCacheByStyleId[glStyle.id];\n    if (!filterCache) {\n        filterCache = {};\n        filterCacheByStyleId[getStyleId(glStyle)] = filterCache;\n    }\n    return filterCache;\n}\nfunction deg2rad(degrees) {\n    return degrees * Math.PI / 180;\n}\nconst defaultResolutions = (function () {\n    const resolutions = [];\n    for (let res = 78271.51696402048; resolutions.length <= 24; res /= 2) {\n        resolutions.push(res);\n    }\n    return resolutions;\n}());\n/**\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @return {HTMLCanvasElement} Canvas.\n */\nfunction createCanvas(width, height) {\n    if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && typeof OffscreenCanvas !== 'undefined') {\n        // eslint-disable-line\n        return new OffscreenCanvas(width, height);\n    }\n    const canvas = document.createElement('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n}\nfunction getZoomForResolution(resolution, resolutions) {\n    let i = 0;\n    const ii = resolutions.length;\n    for (; i < ii; ++i) {\n        const candidate = resolutions[i];\n        if (candidate < resolution && i + 1 < ii) {\n            const zoomFactor = resolutions[i] / resolutions[i + 1];\n            return i + Math.log(resolutions[i] / resolution) / Math.log(zoomFactor);\n        }\n    }\n    return ii - 1;\n}\nfunction getResolutionForZoom(zoom, resolutions) {\n    const base = Math.floor(zoom);\n    const factor = Math.pow(2, zoom - base);\n    return resolutions[base] / factor;\n}\nconst pendingRequests = {};\n/**\n * @param {ResourceType} resourceType Type of resource to load.\n * @param {string} url Url of the resource.\n * @param {Options} [options={}] Options.\n * @param {{request?: Request}} [metadata] Object to be filled with the request.\n * @return {Promise<Object|Response>} Promise that resolves with the loaded resource\n * or rejects with the Response object.\n * @private\n */\nfunction fetchResource(resourceType, url, options = {}, metadata) {\n    if (url in pendingRequests) {\n        if (metadata) {\n            metadata.request = pendingRequests[url][0];\n        }\n        return pendingRequests[url][1];\n    }\n    const transformedRequest = options.transformRequest ? options.transformRequest(url, resourceType) || url : url;\n    const pendingRequest = toPromise(() => transformedRequest).then(transformedRequest => {\n        if (!(transformedRequest instanceof Request)) {\n            transformedRequest = new Request(transformedRequest);\n        }\n        if (!transformedRequest.headers.get('Accept')) {\n            transformedRequest.headers.set('Accept', 'application/json');\n        }\n        if (metadata) {\n            metadata.request = transformedRequest;\n        }\n        return fetch(transformedRequest).then(function (response) {\n            delete pendingRequests[url];\n            return response.ok ? response.json() : Promise.reject(new Error('Error fetching source ' + url));\n        }).catch(function (error) {\n            delete pendingRequests[url];\n            return Promise.reject(new Error('Error fetching source ' + url));\n        });\n    });\n    pendingRequests[url] = [\n        transformedRequest,\n        pendingRequest\n    ];\n    return pendingRequest;\n}\nfunction getGlStyle(glStyleOrUrl, options) {\n    if (typeof glStyleOrUrl === 'string') {\n        if (glStyleOrUrl.trim().startsWith('{')) {\n            try {\n                const glStyle = JSON.parse(glStyleOrUrl);\n                return Promise.resolve(glStyle);\n            } catch (error) {\n                return Promise.reject(error);\n            }\n        } else {\n            glStyleOrUrl = normalizeStyleUrl(glStyleOrUrl, options.accessToken);\n            return fetchResource('Style', glStyleOrUrl, options);\n        }\n    } else {\n        return Promise.resolve(glStyleOrUrl);\n    }\n}\nconst tilejsonCache = {};\n/**\n * @param {Object} glSource glStyle source object.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Promise<{tileJson: Object, tileLoadFunction: import('ol/Tile.js').LoadFunction}?>} TileJson and load function\n */\nfunction getTileJson(glSource, styleUrl, options = {}) {\n    const cacheKey = [\n        styleUrl,\n        JSON.stringify(glSource)\n    ].toString();\n    let promise = tilejsonCache[cacheKey];\n    if (!promise || options.transformRequest) {\n        let tileLoadFunction;\n        if (options.transformRequest) {\n            tileLoadFunction = (tile, src) => {\n                const transformedRequest = options.transformRequest ? options.transformRequest(src, 'Tiles') || src : src;\n                if (tile instanceof VectorTile) {\n                    tile.setLoader((extent, resolution, projection) => {\n                        toPromise(() => transformedRequest).then(transformedRequest => {\n                            fetch(transformedRequest).then(response => response.arrayBuffer()).then(data => {\n                                const format = tile.getFormat();\n                                const features = format.readFeatures(data, {\n                                    extent: extent,\n                                    featureProjection: projection\n                                });\n                                // @ts-ignore\n                                tile.setFeatures(features);\n                            }).catch(e => tile.setState(TileState.ERROR));\n                        });\n                    });\n                } else {\n                    const img = tile.getImage();\n                    toPromise(() => transformedRequest).then(transformedRequest => {\n                        if (transformedRequest instanceof Request) {\n                            fetch(transformedRequest).then(response => response.blob()).then(blob => {\n                                const url = URL.createObjectURL(blob);\n                                img.addEventListener('load', () => URL.revokeObjectURL(url));\n                                img.addEventListener('error', () => URL.revokeObjectURL(url));\n                                img.src = url;\n                            }).catch(e => tile.setState(TileState.ERROR));\n                        } else {\n                            img.src = transformedRequest;\n                        }\n                    });\n                }\n            };\n        }\n        const url = glSource.url;\n        if (url && !glSource.tiles) {\n            const normalizedSourceUrl = normalizeSourceUrl(url, options.accessToken, options.accessTokenParam || 'access_token', styleUrl || location.href);\n            if (url.startsWith('mapbox://')) {\n                promise = Promise.resolve({\n                    tileJson: Object.assign({}, glSource, {\n                        url: undefined,\n                        tiles: normalizedSourceUrl\n                    }),\n                    tileLoadFunction\n                });\n            } else {\n                const metadata = {};\n                promise = fetchResource('Source', normalizedSourceUrl[0], options, metadata).then(function (tileJson) {\n                    tileJson.tiles = tileJson.tiles.map(function (tileUrl) {\n                        if (tileJson.scheme === 'tms') {\n                            tileUrl = tileUrl.replace('{y}', '{-y}');\n                        }\n                        return normalizeSourceUrl(tileUrl, options.accessToken, options.accessTokenParam || 'access_token', metadata.request.url)[0];\n                    });\n                    return Promise.resolve({\n                        tileJson,\n                        tileLoadFunction\n                    });\n                });\n            }\n        } else {\n            glSource = Object.assign({}, glSource, {\n                tiles: glSource.tiles.map(function (tileUrl) {\n                    if (glSource.scheme === 'tms') {\n                        tileUrl = tileUrl.replace('{y}', '{-y}');\n                    }\n                    return normalizeSourceUrl(tileUrl, options.accessToken, options.accessTokenParam || 'access_token', styleUrl || location.href)[0];\n                })\n            });\n            promise = Promise.resolve({\n                tileJson: Object.assign({}, glSource),\n                tileLoadFunction\n            });\n        }\n        tilejsonCache[cacheKey] = promise;\n    }\n    return promise;\n}\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} spriteImage Sprite image id.\n * @param {{x: number, y: number, width: number, height: number, pixelRatio: number}} spriteImageData Sprite image data.\n * @param {number} haloWidth Halo width.\n * @param {{r: number, g: number, b: number, a: number}} haloColor Halo color.\n * @return {HTMLCanvasElement} Canvas element with the halo.\n */\nfunction drawIconHalo(spriteImage, spriteImageData, haloWidth, haloColor) {\n    const imgSize = [\n        2 * haloWidth * spriteImageData.pixelRatio + spriteImageData.width,\n        2 * haloWidth * spriteImageData.pixelRatio + spriteImageData.height\n    ];\n    const imageCanvas = createCanvas(imgSize[0], imgSize[1]);\n    const imageContext = imageCanvas.getContext('2d');\n    imageContext.drawImage(spriteImage, spriteImageData.x, spriteImageData.y, spriteImageData.width, spriteImageData.height, haloWidth * spriteImageData.pixelRatio, haloWidth * spriteImageData.pixelRatio, spriteImageData.width, spriteImageData.height);\n    const imageData = imageContext.getImageData(0, 0, imgSize[0], imgSize[1]);\n    imageContext.globalCompositeOperation = 'destination-over';\n    imageContext.fillStyle = `rgba(${ haloColor.r * 255 },${ haloColor.g * 255 },${ haloColor.b * 255 },${ haloColor.a })`;\n    const data = imageData.data;\n    for (let i = 0, ii = imageData.width; i < ii; ++i) {\n        for (let j = 0, jj = imageData.height; j < jj; ++j) {\n            const index = (j * ii + i) * 4;\n            const alpha = data[index + 3];\n            if (alpha > 0) {\n                imageContext.arc(i, j, haloWidth * spriteImageData.pixelRatio, 0, 2 * Math.PI);\n            }\n        }\n    }\n    imageContext.fill();\n    return imageCanvas;\n}\nfunction smoothstep(min, max, value) {\n    const x = Math.max(0, Math.min(1, (value - min) / (max - min)));\n    return x * x * (3 - 2 * x);\n}\n/**\n * @param {HTMLImageElement} image SDF image\n * @param {{x: number, y: number, width: number, height: number}} area Area to unSDF\n * @param {{r: number, g: number, b: number, a: number}} color Color to use\n * @return {HTMLCanvasElement} Regular image\n */\nfunction drawSDF(image, area, color) {\n    const imageCanvas = createCanvas(area.width, area.height);\n    const imageContext = imageCanvas.getContext('2d');\n    imageContext.drawImage(image, area.x, area.y, area.width, area.height, 0, 0, area.width, area.height);\n    const imageData = imageContext.getImageData(0, 0, area.width, area.height);\n    const data = imageData.data;\n    for (let i = 0, ii = imageData.width; i < ii; ++i) {\n        for (let j = 0, jj = imageData.height; j < jj; ++j) {\n            const index = (j * ii + i) * 4;\n            const dist = data[index + 3] / 255;\n            const buffer = 0.75;\n            const gamma = 0.1;\n            const alpha = smoothstep(buffer - gamma, buffer + gamma, dist);\n            if (alpha > 0) {\n                data[index + 0] = Math.round(255 * color.r * alpha);\n                data[index + 1] = Math.round(255 * color.g * alpha);\n                data[index + 2] = Math.round(255 * color.b * alpha);\n                data[index + 3] = Math.round(255 * alpha);\n            } else {\n                data[index + 3] = 0;\n            }\n        }\n    }\n    imageContext.putImageData(imageData, 0, 0);\n    return imageCanvas;\n}    /**\n * @typedef {import(\"./apply.js\").Options} Options\n * @private\n */\n\nconst hairSpacePool = Array(256).join('\\u200A');\nfunction applyLetterSpacing(text, letterSpacing) {\n    if (letterSpacing >= 0.05) {\n        let textWithLetterSpacing = '';\n        const lines = text.split('\\n');\n        const joinSpaceString = hairSpacePool.slice(0, Math.round(letterSpacing / 0.1));\n        for (let l = 0, ll = lines.length; l < ll; ++l) {\n            if (l > 0) {\n                textWithLetterSpacing += '\\n';\n            }\n            textWithLetterSpacing += lines[l].split('').join(joinSpaceString);\n        }\n        return textWithLetterSpacing;\n    }\n    return text;\n}\nlet measureContext;\nfunction getMeasureContext() {\n    if (!measureContext) {\n        measureContext = createCanvas(1, 1).getContext('2d');\n    }\n    return measureContext;\n}\nfunction measureText(text, letterSpacing) {\n    return getMeasureContext().measureText(text).width + (text.length - 1) * letterSpacing;\n}\nconst measureCache = {};\nfunction wrapText(text, font, em, letterSpacing) {\n    if (text.indexOf('\\n') !== -1) {\n        const hardLines = text.split('\\n');\n        const lines = [];\n        for (let i = 0, ii = hardLines.length; i < ii; ++i) {\n            lines.push(wrapText(hardLines[i], font, em, letterSpacing));\n        }\n        return lines.join('\\n');\n    }\n    const key = em + ',' + font + ',' + text + ',' + letterSpacing;\n    let wrappedText = measureCache[key];\n    if (!wrappedText) {\n        const words = text.split(' ');\n        if (words.length > 1) {\n            const ctx = getMeasureContext();\n            ctx.font = font;\n            const oneEm = ctx.measureText('M').width;\n            const maxWidth = oneEm * em;\n            let line = '';\n            const lines = [];\n            // Pass 1 - wrap lines to not exceed maxWidth\n            for (let i = 0, ii = words.length; i < ii; ++i) {\n                const word = words[i];\n                const testLine = line + (line ? ' ' : '') + word;\n                if (measureText(testLine, letterSpacing) <= maxWidth) {\n                    line = testLine;\n                } else {\n                    if (line) {\n                        lines.push(line);\n                    }\n                    line = word;\n                }\n            }\n            if (line) {\n                lines.push(line);\n            }\n            // Pass 2 - add lines with a width of less than 30% of maxWidth to the previous or next line\n            for (let i = 0, ii = lines.length; i < ii && ii > 1; ++i) {\n                const line = lines[i];\n                if (measureText(line, letterSpacing) < maxWidth * 0.35) {\n                    const prevWidth = i > 0 ? measureText(lines[i - 1], letterSpacing) : Infinity;\n                    const nextWidth = i < ii - 1 ? measureText(lines[i + 1], letterSpacing) : Infinity;\n                    lines.splice(i, 1);\n                    ii -= 1;\n                    if (prevWidth < nextWidth) {\n                        lines[i - 1] += ' ' + line;\n                        i -= 1;\n                    } else {\n                        lines[i] = line + ' ' + lines[i];\n                    }\n                }\n            }\n            // Pass 3 - try to fill 80% of maxWidth for each line\n            for (let i = 0, ii = lines.length - 1; i < ii; ++i) {\n                const line = lines[i];\n                const next = lines[i + 1];\n                if (measureText(line, letterSpacing) > maxWidth * 0.7 && measureText(next, letterSpacing) < maxWidth * 0.6) {\n                    const lineWords = line.split(' ');\n                    const lastWord = lineWords.pop();\n                    if (measureText(lastWord, letterSpacing) < maxWidth * 0.2) {\n                        lines[i] = lineWords.join(' ');\n                        lines[i + 1] = lastWord + ' ' + next;\n                    }\n                    ii -= 1;\n                }\n            }\n            wrappedText = lines.join('\\n');\n        } else {\n            wrappedText = text;\n        }\n        wrappedText = applyLetterSpacing(wrappedText, letterSpacing);\n        measureCache[key] = wrappedText;\n    }\n    return wrappedText;\n}\nconst fontFamilyRegEx = /font-family: ?([^;]*);/;\nconst stripQuotesRegEx = /(\"|')/g;\nlet loadedFontFamilies;\nfunction hasFontFamily(family) {\n    if (!loadedFontFamilies) {\n        loadedFontFamilies = {};\n        const styleSheets = document.styleSheets;\n        for (let i = 0, ii = styleSheets.length; i < ii; ++i) {\n            const styleSheet = styleSheets[i];\n            try {\n                const cssRules = styleSheet.rules || styleSheet.cssRules;\n                if (cssRules) {\n                    for (let j = 0, jj = cssRules.length; j < jj; ++j) {\n                        const cssRule = cssRules[j];\n                        if (cssRule.type == 5) {\n                            const match = cssRule.cssText.match(fontFamilyRegEx);\n                            loadedFontFamilies[match[1].replace(stripQuotesRegEx, '')] = true;\n                        }\n                    }\n                }\n            } catch (e) {\n            }\n        }\n    }\n    return family in loadedFontFamilies;\n}\nconst processedFontFamilies = {};\n/**\n * @param {Array} fonts Fonts.\n * @param {string} [templateUrl] Template URL.\n * @return {Array} Processed fonts.\n * @private\n */\nfunction getFonts(fonts, templateUrl = 'https://cdn.jsdelivr.net/npm/@fontsource/{font-family}/{fontweight}{-fontstyle}.css') {\n    const fontsKey = fonts.toString();\n    if (fontsKey in processedFontFamilies) {\n        return processedFontFamilies[fontsKey];\n    }\n    const fontDescriptions = [];\n    for (let i = 0, ii = fonts.length; i < ii; ++i) {\n        fonts[i] = fonts[i].replace('Arial Unicode MS', 'Arial');\n        const font = fonts[i];\n        const cssFont = mb2css(font, 1);\n        registerFont(cssFont);\n        const parts = cssFont.split(' ');\n        fontDescriptions.push([\n            parts.slice(3).join(' ').replace(/\"/g, ''),\n            parts[1],\n            parts[0]\n        ]);\n    }\n    for (let i = 0, ii = fontDescriptions.length; i < ii; ++i) {\n        const fontDescription = fontDescriptions[i];\n        const family = fontDescription[0];\n        if (!hasFontFamily(family)) {\n            if (checkedFonts.get(`${ fontDescription[2] }\\n${ fontDescription[1] } \\n${ family }`) !== 100) {\n                const fontUrl = templateUrl.replace('{font-family}', family.replace(/ /g, '-').toLowerCase()).replace('{Font+Family}', family.replace(/ /g, '+')).replace('{fontweight}', fontDescription[1]).replace('{-fontstyle}', fontDescription[2].replace('normal', '').replace(/(.+)/, '-$1')).replace('{fontstyle}', fontDescription[2]);\n                if (!document.querySelector('link[href=\"' + fontUrl + '\"]')) {\n                    const markup = document.createElement('link');\n                    markup.href = fontUrl;\n                    markup.rel = 'stylesheet';\n                    document.head.appendChild(markup);\n                }\n            }\n        }\n    }\n    processedFontFamilies[fontsKey] = fonts;\n    return fonts;\n}\n\n/*\nol-mapbox-style - Use Mapbox/MapLibre Style objects with OpenLayers\nCopyright 2016-present ol-mapbox-style contributors\nLicense: https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE\n*/\n/**\n * @typedef {import(\"ol/layer/Vector\").default} VectorLayer\n * @typedef {import(\"ol/layer/VectorTile\").default} VectorTileLayer\n * @typedef {import(\"ol/style/Style\").StyleFunction} StyleFunction\n * @typedef {import('./util.js').ResourceType} ResourceType\n */\nconst types = {\n    'Point': 1,\n    'MultiPoint': 1,\n    'LineString': 2,\n    'MultiLineString': 2,\n    'Polygon': 3,\n    'MultiPolygon': 3\n};\nconst anchor = {\n    'center': [\n        0.5,\n        0.5\n    ],\n    'left': [\n        0,\n        0.5\n    ],\n    'right': [\n        1,\n        0.5\n    ],\n    'top': [\n        0.5,\n        0\n    ],\n    'bottom': [\n        0.5,\n        1\n    ],\n    'top-left': [\n        0,\n        0\n    ],\n    'top-right': [\n        1,\n        0\n    ],\n    'bottom-left': [\n        0,\n        1\n    ],\n    'bottom-right': [\n        1,\n        1\n    ]\n};\nconst expressionData = function (rawExpression, propertySpec) {\n    const compiledExpression = createPropertyExpression(rawExpression, propertySpec);\n    if (compiledExpression.result === 'error') {\n        throw new Error(compiledExpression.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n    }\n    return compiledExpression.value;\n};\nconst emptyObj$1 = {};\nconst zoomObj = { zoom: 0 };\nlet renderFeatureCoordinates, renderFeature;\n/**\n * @private\n * @param {Object} layer Gl object layer.\n * @param {string} layoutOrPaint 'layout' or 'paint'.\n * @param {string} property Feature property.\n * @param {number} zoom Zoom.\n * @param {Object} feature Gl feature.\n * @param {Object} [functionCache] Function cache.\n * @param {Object} [featureState] Feature state.\n * @return {?} Value.\n */\nfunction getValue(layer, layoutOrPaint, property, zoom, feature, functionCache, featureState) {\n    const layerId = layer.id;\n    if (!functionCache) {\n        functionCache = {};\n        console.warn('No functionCache provided to getValue()');    //eslint-disable-line no-console\n    }\n    if (!functionCache[layerId]) {\n        functionCache[layerId] = {};\n    }\n    const functions = functionCache[layerId];\n    if (!functions[property]) {\n        let value = (layer[layoutOrPaint] || emptyObj$1)[property];\n        const propertySpec = spec[`${ layoutOrPaint }_${ layer.type }`][property];\n        if (value === undefined) {\n            value = propertySpec.default;\n        }\n        let isExpr = isExpression(value);\n        if (!isExpr && isFunction(value)) {\n            value = convertFunction(value, propertySpec);\n            isExpr = true;\n        }\n        if (isExpr) {\n            const compiledExpression = expressionData(value, propertySpec);\n            functions[property] = compiledExpression.evaluate.bind(compiledExpression);\n        } else {\n            if (propertySpec.type == 'color') {\n                value = Color$1.parse(value);\n            }\n            functions[property] = function () {\n                return value;\n            };\n        }\n    }\n    zoomObj.zoom = zoom;\n    return functions[property](zoomObj, feature, featureState);\n}\n/**\n * @private\n * @param {Object} layer Gl object layer.\n * @param {number} zoom Zoom.\n * @param {Object} feature Gl feature.\n * @param {\"icon\"|\"text\"} prefix Style property prefix.\n * @param {Object} [functionCache] Function cache.\n * @return {\"declutter\"|\"obstacle\"|\"none\"} Value.\n */\nfunction getDeclutterMode(layer, zoom, feature, prefix, functionCache) {\n    const allowOverlap = getValue(layer, 'layout', `${ prefix }-allow-overlap`, zoom, feature, functionCache);\n    if (!allowOverlap) {\n        return 'declutter';\n    }\n    const ignorePlacement = getValue(layer, 'layout', `${ prefix }-ignore-placement`, zoom, feature, functionCache);\n    if (!ignorePlacement) {\n        return 'obstacle';\n    }\n    return 'none';\n}\n/**\n * @private\n * @param {string} layerId Layer id.\n * @param {?} filter Filter.\n * @param {Object} feature Feature.\n * @param {number} zoom Zoom.\n * @param {Object} [filterCache] Filter cache.\n * @return {boolean} Filter result.\n */\nfunction evaluateFilter(layerId, filter, feature, zoom, filterCache) {\n    if (!filterCache) {\n        console.warn('No filterCache provided to evaluateFilter()');    //eslint-disable-line no-console\n    }\n    if (!(layerId in filterCache)) {\n        filterCache[layerId] = createFilter(filter).filter;\n    }\n    zoomObj.zoom = zoom;\n    return filterCache[layerId](zoomObj, feature);\n}\nlet renderTransparentEnabled = false;\n/**\n * Configure whether features with a transparent style should be rendered. When\n * set to `true`, it will be possible to hit detect content that is not visible,\n * like transparent fills of polygons, using `ol/layer/Layer#getFeatures()` or\n * `ol/Map#getFeaturesAtPixel()`\n * @param {boolean} enabled Rendering of transparent elements is enabled.\n * Default is `false`.\n */\nfunction renderTransparent(enabled) {\n    if (enabled !== renderTransparentEnabled) {\n        clearFunctionCache();\n        renderTransparentEnabled = enabled;\n    }\n}\n/**\n * @private\n * @param {?} color Color.\n * @param {number} [opacity] Opacity.\n * @return {string} Color.\n */\nfunction colorWithOpacity(color, opacity) {\n    if (color) {\n        if (!renderTransparentEnabled && (color.a === 0 || opacity === 0)) {\n            return undefined;\n        }\n        const a = color.a;\n        opacity = opacity === undefined ? 1 : opacity;\n        return a === 0 ? 'transparent' : 'rgba(' + Math.round(color.r * 255 / a) + ',' + Math.round(color.g * 255 / a) + ',' + Math.round(color.b * 255 / a) + ',' + a * opacity + ')';\n    }\n    return color;\n}\nconst templateRegEx = /\\{[^{}}]*\\}/g;\n/**\n * @private\n * @param {string} text Text.\n * @param {Object} properties Properties.\n * @return {string} Text.\n */\nfunction fromTemplate(text, properties) {\n    return text.replace(templateRegEx, function (match) {\n        return properties[match.slice(1, -1)] || '';\n    });\n}\nlet recordLayer = false;\n/**\n * Turns recording of the Mapbox/MapLibre Style's `layer` on and off. When turned on,\n * the layer that a rendered feature belongs to will be set as the feature's\n * `mapbox-layer` property.\n * @param {boolean} record Recording of the style layer is on.\n */\nfunction recordStyleLayer(record = false) {\n    recordLayer = record;\n}\nconst styleFunctionArgs = {};\n/**\n * Creates a style function from the `glStyle` object for all layers that use\n * the specified `source`, which needs to be a `\"type\": \"vector\"` or\n * `\"type\": \"geojson\"` source and applies it to the specified OpenLayers layer.\n *\n * Two additional properties will be set on the provided layer:\n *\n *  * `mapbox-source`: The `id` of the Mapbox/MapLibre Style document's source that the\n *    OpenLayers layer was created from. Usually `apply()` creates one\n *    OpenLayers layer per Mapbox/MapLibre Style source, unless the layer stack has\n *    layers from different sources in between.\n *  * `mapbox-layers`: The `id`s of the Mapbox/MapLibre Style document's layers that are\n *    included in the OpenLayers layer.\n *\n * This function also works in a web worker. In worker mode, the main thread needs\n * to listen to messages from the worker and respond with another message to make\n * sure that sprite image loading works:\n *\n * ```js\n *  worker.addEventListener('message', event => {\n *   if (event.data.action === 'loadImage') {\n *     const image = new Image();\n *     image.crossOrigin = 'anonymous';\n *     image.addEventListener('load', function() {\n *       createImageBitmap(image, 0, 0, image.width, image.height).then(imageBitmap => {\n *         worker.postMessage({\n *           action: 'imageLoaded',\n *           image: imageBitmap,\n *           src: event.data.src\n *         }, [imageBitmap]);\n *       });\n *     });\n *     image.src = event.data.src;\n *   }\n * });\n * ```\n *\n * @param {VectorLayer|VectorTileLayer} olLayer OpenLayers layer to\n * apply the style to. In addition to the style, the layer will get two\n * properties: `mapbox-source` will be the `id` of the `glStyle`'s source used\n * for the layer, and `mapbox-layers` will be an array of the `id`s of the\n * `glStyle`'s layers.\n * @param {string|Object} glStyle Mapbox/MapLibre Style object.\n * @param {string|Array<string>} sourceOrLayers `source` key or an array of layer `id`s\n * from the Mapbox/MapLibre Style object. When a `source` key is provided, all layers for\n * the specified source will be included in the style function. When layer `id`s\n * are provided, they must be from layers that use the same source.\n * @param {Array<number>} resolutions\n * Resolutions for mapping resolution to zoom level.\n * @param {Object} spriteData Sprite data from the url specified in\n * the Mapbox/MapLibre Style object's `sprite` property. Only required if a `sprite`\n * property is specified in the Mapbox/MapLibre Style object.\n * @param {string|Request|Promise<string|Request>} spriteImageUrl Sprite image url for the sprite\n * specified in the Mapbox/MapLibre Style object's `sprite` property. Only required if a\n * `sprite` property is specified in the Mapbox/MapLibre Style object.\n * @param {function(Array<string>, string=):Array<string>} getFonts Function that\n * receives a font stack and the url template from the GL style's `metadata['ol:webfonts']`\n * property (if set) as arguments, and returns a (modified) font stack that\n * is available. Font names are the names used in the Mapbox/MapLibre Style object. If\n * not provided, the font stack will be used as-is. This function can also be\n * used for loading web fonts.\n * @param {function(VectorLayer|VectorTileLayer, string):HTMLImageElement|HTMLCanvasElement|string|undefined} [getImage=undefined]\n * Function that returns an image or a URL for an image name. If the result is an HTMLImageElement, it must already be\n * loaded. The layer can be used to call layer.changed() when the loading and processing of the image has finished.\n * This function can be used for icons not in the sprite or to override sprite icons.\n * @return {StyleFunction} Style function for use in\n * `ol.layer.Vector` or `ol.layer.VectorTile`.\n */\nfunction stylefunction(olLayer, glStyle, sourceOrLayers, resolutions = defaultResolutions, spriteData = undefined, spriteImageUrl = undefined, getFonts = undefined, getImage = undefined) {\n    if (typeof glStyle == 'string') {\n        glStyle = JSON.parse(glStyle);\n    }\n    if (glStyle.version != 8) {\n        throw new Error('glStyle version 8 required.');\n    }\n    styleFunctionArgs[getStyleFunctionKey(glStyle, olLayer)] = Array.from(arguments);\n    let spriteImage, spriteImageSize;\n    let spriteImageUnSDFed;\n    if (spriteImageUrl) {\n        if (typeof Image !== 'undefined') {\n            const img = new Image();\n            let blobUrl;\n            toPromise(() => spriteImageUrl).then(spriteImageUrl => {\n                if (spriteImageUrl instanceof Request) {\n                    fetch(spriteImageUrl).then(response => response.blob()).then(blob => {\n                        blobUrl = URL.createObjectURL(blob);\n                        img.src = blobUrl;\n                    }).catch(() => {\n                    });\n                } else {\n                    img.crossOrigin = 'anonymous';\n                    img.src = spriteImageUrl;\n                    if (blobUrl) {\n                        URL.revokeObjectURL(blobUrl);\n                    }\n                }\n            });\n            img.onload = function () {\n                spriteImage = img;\n                spriteImageSize = [\n                    img.width,\n                    img.height\n                ];\n                olLayer.changed();\n                img.onload = null;\n            };\n        } else if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\n            //eslint-disable-line\n            const worker = self;\n            // Main thread needs to handle 'loadImage' and dispatch 'imageLoaded'\n            worker.postMessage({\n                action: 'loadImage',\n                src: spriteImageUrl\n            });\n            worker.addEventListener('message', function handler(event) {\n                if (event.data.action === 'imageLoaded' && event.data.src === spriteImageUrl) {\n                    spriteImage = event.data.image;\n                    spriteImageSize = [\n                        spriteImage.width,\n                        spriteImage.height\n                    ];\n                }\n            });\n        }\n    }\n    const allLayers = derefLayers(glStyle.layers);\n    const layersBySourceLayer = {};\n    const mapboxLayers = [];\n    const iconImageCache = {};\n    const patternCache = {};\n    const functionCache = getFunctionCache(glStyle);\n    const filterCache = getFilterCache(glStyle);\n    let mapboxSource;\n    for (let i = 0, ii = allLayers.length; i < ii; ++i) {\n        const layer = allLayers[i];\n        const layerId = layer.id;\n        if (typeof sourceOrLayers == 'string' && layer.source == sourceOrLayers || Array.isArray(sourceOrLayers) && sourceOrLayers.indexOf(layerId) !== -1) {\n            const sourceLayer = layer['source-layer'];\n            if (!mapboxSource) {\n                mapboxSource = layer.source;\n                const source = glStyle.sources[mapboxSource];\n                if (!source) {\n                    throw new Error(`Source \"${ mapboxSource }\" is not defined`);\n                }\n                const type = source.type;\n                if (type !== 'vector' && type !== 'geojson') {\n                    throw new Error(`Source \"${ mapboxSource }\" is not of type \"vector\" or \"geojson\", but \"${ type }\"`);\n                }\n            } else if (layer.source !== mapboxSource) {\n                throw new Error(`Layer \"${ layerId }\" does not use source \"${ mapboxSource }`);\n            }\n            let layers = layersBySourceLayer[sourceLayer];\n            if (!layers) {\n                layers = [];\n                layersBySourceLayer[sourceLayer] = layers;\n            }\n            layers.push({\n                layer: layer,\n                index: i\n            });\n            mapboxLayers.push(layerId);\n        }\n    }\n    const textHalo = new Stroke();\n    const textColor = new Fill();\n    const styles = [];\n    /**\n   * @param {import(\"ol/Feature\").default|import(\"ol/render/Feature\").default} feature Feature.\n   * @param {number} resolution Resolution.\n   * @param {string} [onlyLayer] Calculate style for this layer only.\n   * @return {Array<import(\"ol/style/Style\").default>} Style.\n   */\n    const styleFunction = function (feature, resolution, onlyLayer) {\n        const properties = feature.getProperties();\n        const layers = layersBySourceLayer[properties.layer];\n        if (!layers) {\n            return undefined;\n        }\n        let zoom = resolutions.indexOf(resolution);\n        if (zoom == -1) {\n            zoom = getZoomForResolution(resolution, resolutions);\n        }\n        const type = types[feature.getGeometry().getType()];\n        const f = {\n            id: feature.getId(),\n            properties: properties,\n            type: type\n        };\n        const featureState = olLayer.get('mapbox-featurestate')[feature.getId()];\n        let stylesLength = -1;\n        let featureBelongsToLayer;\n        for (let i = 0, ii = layers.length; i < ii; ++i) {\n            const layerData = layers[i];\n            const layer = layerData.layer;\n            const layerId = layer.id;\n            if (onlyLayer !== undefined && onlyLayer !== layerId) {\n                continue;\n            }\n            const layout = layer.layout || emptyObj$1;\n            const paint = layer.paint || emptyObj$1;\n            if (layout.visibility === 'none' || 'minzoom' in layer && zoom < layer.minzoom || 'maxzoom' in layer && zoom >= layer.maxzoom) {\n                continue;\n            }\n            const filter = layer.filter;\n            if (!filter || evaluateFilter(layerId, filter, f, zoom, filterCache)) {\n                featureBelongsToLayer = layer;\n                let color, opacity, fill, stroke, strokeColor, style;\n                const index = layerData.index;\n                if (type == 3 && (layer.type == 'fill' || layer.type == 'fill-extrusion')) {\n                    opacity = getValue(layer, 'paint', layer.type + '-opacity', zoom, f, functionCache, featureState);\n                    if (layer.type + '-pattern' in paint) {\n                        const fillIcon = getValue(layer, 'paint', layer.type + '-pattern', zoom, f, functionCache, featureState);\n                        if (fillIcon) {\n                            const icon = typeof fillIcon === 'string' ? fromTemplate(fillIcon, properties) : fillIcon.toString();\n                            if (spriteImage && spriteData && spriteData[icon]) {\n                                ++stylesLength;\n                                style = styles[stylesLength];\n                                if (!style || !style.getFill() || style.getStroke() || style.getText()) {\n                                    style = new Style({ fill: new Fill() });\n                                    styles[stylesLength] = style;\n                                }\n                                fill = style.getFill();\n                                style.setZIndex(index);\n                                const icon_cache_key = icon + '.' + opacity;\n                                let pattern = patternCache[icon_cache_key];\n                                if (!pattern) {\n                                    const spriteImageData = spriteData[icon];\n                                    const canvas = createCanvas(spriteImageData.width, spriteImageData.height);\n                                    const ctx = canvas.getContext('2d');\n                                    ctx.globalAlpha = opacity;\n                                    ctx.drawImage(spriteImage, spriteImageData.x, spriteImageData.y, spriteImageData.width, spriteImageData.height, 0, 0, spriteImageData.width, spriteImageData.height);\n                                    pattern = ctx.createPattern(canvas, 'repeat');\n                                    patternCache[icon_cache_key] = pattern;\n                                }\n                                fill.setColor(pattern);\n                            }\n                        }\n                    } else {\n                        color = colorWithOpacity(getValue(layer, 'paint', layer.type + '-color', zoom, f, functionCache, featureState), opacity);\n                        if (layer.type + '-outline-color' in paint) {\n                            strokeColor = colorWithOpacity(getValue(layer, 'paint', layer.type + '-outline-color', zoom, f, functionCache, featureState), opacity);\n                        }\n                        if (!strokeColor) {\n                            strokeColor = color;\n                        }\n                        if (color || strokeColor) {\n                            ++stylesLength;\n                            style = styles[stylesLength];\n                            if (!style || color && !style.getFill() || !color && style.getFill() || strokeColor && !style.getStroke() || !strokeColor && style.getStroke() || style.getText()) {\n                                style = new Style({\n                                    fill: color ? new Fill() : undefined,\n                                    stroke: strokeColor ? new Stroke() : undefined\n                                });\n                                styles[stylesLength] = style;\n                            }\n                            if (color) {\n                                fill = style.getFill();\n                                fill.setColor(color);\n                            }\n                            if (strokeColor) {\n                                stroke = style.getStroke();\n                                stroke.setColor(strokeColor);\n                                stroke.setWidth(0.5);\n                            }\n                            style.setZIndex(index);\n                        }\n                    }\n                }\n                if (type != 1 && layer.type == 'line') {\n                    if (!('line-pattern' in paint)) {\n                        color = colorWithOpacity(getValue(layer, 'paint', 'line-color', zoom, f, functionCache, featureState), getValue(layer, 'paint', 'line-opacity', zoom, f, functionCache, featureState));\n                    } else {\n                        color = undefined;\n                    }\n                    const width = getValue(layer, 'paint', 'line-width', zoom, f, functionCache, featureState);\n                    if (color && width > 0) {\n                        ++stylesLength;\n                        style = styles[stylesLength];\n                        if (!style || !style.getStroke() || style.getFill() || style.getText()) {\n                            style = new Style({ stroke: new Stroke() });\n                            styles[stylesLength] = style;\n                        }\n                        stroke = style.getStroke();\n                        stroke.setLineCap(getValue(layer, 'layout', 'line-cap', zoom, f, functionCache, featureState));\n                        stroke.setLineJoin(getValue(layer, 'layout', 'line-join', zoom, f, functionCache, featureState));\n                        stroke.setMiterLimit(getValue(layer, 'layout', 'line-miter-limit', zoom, f, functionCache, featureState));\n                        stroke.setColor(color);\n                        stroke.setWidth(width);\n                        stroke.setLineDash(paint['line-dasharray'] ? getValue(layer, 'paint', 'line-dasharray', zoom, f, functionCache, featureState).map(function (x) {\n                            return x * width;\n                        }) : null);\n                        style.setZIndex(index);\n                    }\n                }\n                let hasImage = false;\n                let text = null;\n                let placementAngle = 0;\n                let icon, iconImg, skipLabel;\n                if ((type == 1 || type == 2) && 'icon-image' in layout) {\n                    const iconImage = getValue(layer, 'layout', 'icon-image', zoom, f, functionCache, featureState);\n                    if (iconImage) {\n                        icon = typeof iconImage === 'string' ? fromTemplate(iconImage, properties) : iconImage.toString();\n                        let styleGeom = undefined;\n                        const imageElement = getImage ? getImage(olLayer, icon) : undefined;\n                        if (spriteImage && spriteData && spriteData[icon] || imageElement) {\n                            const iconRotationAlignment = getValue(layer, 'layout', 'icon-rotation-alignment', zoom, f, functionCache, featureState);\n                            if (type == 2) {\n                                const geom = feature.getGeometry();\n                                // ol package and ol-debug.js only\n                                if (geom.getFlatMidpoint || geom.getFlatMidpoints) {\n                                    const extent = geom.getExtent();\n                                    const size = Math.sqrt(Math.max(Math.pow((extent[2] - extent[0]) / resolution, 2), Math.pow((extent[3] - extent[1]) / resolution, 2)));\n                                    if (size > 150) {\n                                        //FIXME Do not hard-code a size of 150\n                                        const midpoint = geom.getType() === 'MultiLineString' ? geom.getFlatMidpoints() : geom.getFlatMidpoint();\n                                        if (!renderFeature) {\n                                            renderFeatureCoordinates = [\n                                                NaN,\n                                                NaN\n                                            ];\n                                            renderFeature = new RenderFeature('Point', renderFeatureCoordinates, [], 2, {}, undefined);\n                                        }\n                                        styleGeom = renderFeature;\n                                        renderFeatureCoordinates[0] = midpoint[0];\n                                        renderFeatureCoordinates[1] = midpoint[1];\n                                        const placement = getValue(layer, 'layout', 'symbol-placement', zoom, f, functionCache, featureState);\n                                        if (placement === 'line' && iconRotationAlignment === 'map') {\n                                            const stride = geom.getStride();\n                                            const coordinates = geom.getFlatCoordinates();\n                                            for (let i = 0, ii = coordinates.length - stride; i < ii; i += stride) {\n                                                const x1 = coordinates[i];\n                                                const y1 = coordinates[i + 1];\n                                                const x2 = coordinates[i + stride];\n                                                const y2 = coordinates[i + stride + 1];\n                                                const minX = Math.min(x1, x2);\n                                                const maxX = Math.max(x1, x2);\n                                                const xM = midpoint[0];\n                                                const yM = midpoint[1];\n                                                const dotProduct = (y2 - y1) * (xM - x1) - (x2 - x1) * (yM - y1);\n                                                if (Math.abs(dotProduct) < 0.001 && //midpoint is aligned with the segment\n                                                    xM <= maxX && xM >= minX    //midpoint is on the segment and not outside it\n) {\n                                                    placementAngle = Math.atan2(y1 - y2, x2 - x1);\n                                                    break;\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                            if (type !== 2 || styleGeom) {\n                                const iconSize = getValue(layer, 'layout', 'icon-size', zoom, f, functionCache, featureState);\n                                const iconColor = paint['icon-color'] !== undefined ? getValue(layer, 'paint', 'icon-color', zoom, f, functionCache, featureState) : null;\n                                if (!iconColor || iconColor.a !== 0) {\n                                    const haloColor = getValue(layer, 'paint', 'icon-halo-color', zoom, f, functionCache, featureState);\n                                    const haloWidth = getValue(layer, 'paint', 'icon-halo-width', zoom, f, functionCache, featureState);\n                                    let iconCacheKey = `${ icon }.${ iconSize }.${ haloWidth }.${ haloColor }`;\n                                    if (iconColor !== null) {\n                                        iconCacheKey += `.${ iconColor }`;\n                                    }\n                                    iconImg = iconImageCache[iconCacheKey];\n                                    if (!iconImg) {\n                                        const declutterMode = getDeclutterMode(layer, zoom, f, 'icon', functionCache);\n                                        let displacement;\n                                        if ('icon-offset' in layout) {\n                                            displacement = getValue(layer, 'layout', 'icon-offset', zoom, f, functionCache, featureState).slice(0);\n                                            displacement[0] *= iconSize;\n                                            displacement[1] *= -iconSize;\n                                        }\n                                        let color = iconColor ? [\n                                            iconColor.r * 255,\n                                            iconColor.g * 255,\n                                            iconColor.b * 255,\n                                            iconColor.a\n                                        ] : undefined;\n                                        if (imageElement) {\n                                            const iconOptions = {\n                                                color: color,\n                                                rotateWithView: iconRotationAlignment === 'map',\n                                                displacement: displacement,\n                                                declutterMode: declutterMode,\n                                                scale: iconSize\n                                            };\n                                            if (typeof imageElement === 'string') {\n                                                // it is a src URL\n                                                iconOptions.src = imageElement;\n                                            } else {\n                                                iconOptions.img = imageElement;\n                                                iconOptions.imgSize = [\n                                                    imageElement.width,\n                                                    imageElement.height\n                                                ];\n                                            }\n                                            iconImg = new Icon(iconOptions);\n                                        } else {\n                                            const spriteImageData = spriteData[icon];\n                                            let img, size, offset;\n                                            if (haloWidth) {\n                                                if (spriteImageData.sdf) {\n                                                    img = drawIconHalo(drawSDF(spriteImage, spriteImageData, iconColor || [\n                                                        0,\n                                                        0,\n                                                        0,\n                                                        1\n                                                    ]), {\n                                                        x: 0,\n                                                        y: 0,\n                                                        width: spriteImageData.width,\n                                                        height: spriteImageData.height,\n                                                        pixelRatio: spriteImageData.pixelRatio\n                                                    }, haloWidth, haloColor);\n                                                    color = undefined;    // do not tint haloed icons\n                                                } else {\n                                                    img = drawIconHalo(spriteImage, spriteImageData, haloWidth, haloColor);\n                                                }\n                                            } else {\n                                                if (spriteImageData.sdf) {\n                                                    if (!spriteImageUnSDFed) {\n                                                        spriteImageUnSDFed = drawSDF(spriteImage, {\n                                                            x: 0,\n                                                            y: 0,\n                                                            width: spriteImageSize[0],\n                                                            height: spriteImageSize[1]\n                                                        }, {\n                                                            r: 1,\n                                                            g: 1,\n                                                            b: 1,\n                                                            a: 1\n                                                        });\n                                                    }\n                                                    img = spriteImageUnSDFed;\n                                                } else {\n                                                    img = spriteImage;\n                                                }\n                                                size = [\n                                                    spriteImageData.width,\n                                                    spriteImageData.height\n                                                ];\n                                                offset = [\n                                                    spriteImageData.x,\n                                                    spriteImageData.y\n                                                ];\n                                            }\n                                            iconImg = new Icon({\n                                                color: color,\n                                                img: img,\n                                                // @ts-ignore\n                                                imgSize: spriteImageSize,\n                                                size: size,\n                                                offset: offset,\n                                                rotateWithView: iconRotationAlignment === 'map',\n                                                scale: iconSize / spriteImageData.pixelRatio,\n                                                displacement: displacement,\n                                                declutterMode: declutterMode\n                                            });\n                                        }\n                                        iconImageCache[iconCacheKey] = iconImg;\n                                    }\n                                }\n                                if (iconImg) {\n                                    ++stylesLength;\n                                    style = styles[stylesLength];\n                                    if (!style || !style.getImage() || style.getFill() || style.getStroke()) {\n                                        style = new Style();\n                                        styles[stylesLength] = style;\n                                    }\n                                    style.setGeometry(styleGeom);\n                                    iconImg.setRotation(placementAngle + deg2rad(getValue(layer, 'layout', 'icon-rotate', zoom, f, functionCache, featureState)));\n                                    iconImg.setOpacity(getValue(layer, 'paint', 'icon-opacity', zoom, f, functionCache, featureState));\n                                    iconImg.setAnchor(anchor[getValue(layer, 'layout', 'icon-anchor', zoom, f, functionCache, featureState)]);\n                                    style.setImage(iconImg);\n                                    text = style.getText();\n                                    style.setText(undefined);\n                                    style.setZIndex(index);\n                                    hasImage = true;\n                                    skipLabel = false;\n                                }\n                            } else {\n                                skipLabel = true;\n                            }\n                        }\n                    }\n                }\n                if (type == 1 && layer.type === 'circle') {\n                    ++stylesLength;\n                    style = styles[stylesLength];\n                    if (!style || !style.getImage() || style.getFill() || style.getStroke()) {\n                        style = new Style();\n                        styles[stylesLength] = style;\n                    }\n                    const circleRadius = 'circle-radius' in paint ? getValue(layer, 'paint', 'circle-radius', zoom, f, functionCache, featureState) : 5;\n                    const circleStrokeColor = colorWithOpacity(getValue(layer, 'paint', 'circle-stroke-color', zoom, f, functionCache, featureState), getValue(layer, 'paint', 'circle-stroke-opacity', zoom, f, functionCache, featureState));\n                    const circleTranslate = getValue(layer, 'paint', 'circle-translate', zoom, f, functionCache, featureState);\n                    const circleColor = colorWithOpacity(getValue(layer, 'paint', 'circle-color', zoom, f, functionCache, featureState), getValue(layer, 'paint', 'circle-opacity', zoom, f, functionCache, featureState));\n                    const circleStrokeWidth = getValue(layer, 'paint', 'circle-stroke-width', zoom, f, functionCache, featureState);\n                    const cache_key = circleRadius + '.' + circleStrokeColor + '.' + circleColor + '.' + circleStrokeWidth + '.' + circleTranslate[0] + '.' + circleTranslate[1];\n                    iconImg = iconImageCache[cache_key];\n                    if (!iconImg) {\n                        iconImg = new Circle({\n                            radius: circleRadius,\n                            displacement: [\n                                circleTranslate[0],\n                                -circleTranslate[1]\n                            ],\n                            stroke: circleStrokeColor && circleStrokeWidth > 0 ? new Stroke({\n                                width: circleStrokeWidth,\n                                color: circleStrokeColor\n                            }) : undefined,\n                            fill: circleColor ? new Fill({ color: circleColor }) : undefined,\n                            declutterMode: 'none'\n                        });\n                        iconImageCache[cache_key] = iconImg;\n                    }\n                    style.setImage(iconImg);\n                    text = style.getText();\n                    style.setText(undefined);\n                    style.setGeometry(undefined);\n                    style.setZIndex(index);\n                    hasImage = true;\n                }\n                let label, font, textLineHeight, textSize, letterSpacing, maxTextWidth;\n                if ('text-field' in layout) {\n                    textSize = Math.round(getValue(layer, 'layout', 'text-size', zoom, f, functionCache, featureState));\n                    const fontArray = getValue(layer, 'layout', 'text-font', zoom, f, functionCache, featureState);\n                    textLineHeight = getValue(layer, 'layout', 'text-line-height', zoom, f, functionCache, featureState);\n                    font = mb2css(getFonts ? getFonts(fontArray, glStyle.metadata ? glStyle.metadata['ol:webfonts'] : undefined) : fontArray, textSize, textLineHeight);\n                    if (!font.includes('sans-serif')) {\n                        font += ',sans-serif';\n                    }\n                    letterSpacing = getValue(layer, 'layout', 'text-letter-spacing', zoom, f, functionCache, featureState);\n                    maxTextWidth = getValue(layer, 'layout', 'text-max-width', zoom, f, functionCache, featureState);\n                    const textField = getValue(layer, 'layout', 'text-field', zoom, f, functionCache, featureState);\n                    if (typeof textField === 'object' && textField.sections) {\n                        if (textField.sections.length === 1) {\n                            label = textField.toString();\n                        } else {\n                            label = textField.sections.reduce((acc, chunk, i) => {\n                                const fonts = chunk.fontStack ? chunk.fontStack.split(',') : fontArray;\n                                const chunkFont = mb2css(getFonts ? getFonts(fonts) : fonts, textSize * (chunk.scale || 1), textLineHeight);\n                                let text = chunk.text;\n                                if (text === '\\n') {\n                                    acc.push('\\n', '');\n                                    return acc;\n                                }\n                                if (type == 2) {\n                                    acc.push(applyLetterSpacing(text, letterSpacing), chunkFont);\n                                    return acc;\n                                }\n                                text = wrapText(text, chunkFont, maxTextWidth, letterSpacing).split('\\n');\n                                for (let i = 0, ii = text.length; i < ii; ++i) {\n                                    if (i > 0) {\n                                        acc.push('\\n', '');\n                                    }\n                                    acc.push(text[i], chunkFont);\n                                }\n                                return acc;\n                            }, []);\n                        }\n                    } else {\n                        label = fromTemplate(textField, properties).trim();\n                    }\n                    opacity = getValue(layer, 'paint', 'text-opacity', zoom, f, functionCache, featureState);\n                }\n                if (label && opacity && !skipLabel) {\n                    if (!hasImage) {\n                        ++stylesLength;\n                        style = styles[stylesLength];\n                        if (!style || !style.getText() || style.getFill() || style.getStroke()) {\n                            style = new Style();\n                            styles[stylesLength] = style;\n                        }\n                        style.setImage(undefined);\n                        style.setGeometry(undefined);\n                    }\n                    const declutterMode = getDeclutterMode(layer, zoom, f, 'text', functionCache);\n                    if (!style.getText()) {\n                        style.setText(text);\n                    }\n                    text = style.getText();\n                    if (!text || 'getDeclutterMode' in text && text.getDeclutterMode() !== declutterMode) {\n                        text = new Text({\n                            padding: [\n                                2,\n                                2,\n                                2,\n                                2\n                            ],\n                            // @ts-ignore\n                            declutterMode: declutterMode\n                        });\n                        style.setText(text);\n                    }\n                    const textTransform = getValue(layer, 'layout', 'text-transform', zoom, f, functionCache, featureState);\n                    if (textTransform == 'uppercase') {\n                        label = Array.isArray(label) ? label.map((t, i) => i % 2 ? t : t.toUpperCase()) : label.toUpperCase();\n                    } else if (textTransform == 'lowercase') {\n                        label = Array.isArray(label) ? label.map((t, i) => i % 2 ? t : t.toLowerCase()) : label.toLowerCase();\n                    }\n                    const wrappedLabel = Array.isArray(label) ? label : type == 2 ? applyLetterSpacing(label, letterSpacing) : wrapText(label, font, maxTextWidth, letterSpacing);\n                    text.setText(wrappedLabel);\n                    text.setFont(font);\n                    text.setRotation(deg2rad(getValue(layer, 'layout', 'text-rotate', zoom, f, functionCache, featureState)));\n                    if (typeof text.setKeepUpright === 'function') {\n                        const keepUpright = getValue(layer, 'layout', 'text-keep-upright', zoom, f, functionCache, featureState);\n                        text.setKeepUpright(keepUpright);\n                    }\n                    const textAnchor = getValue(layer, 'layout', 'text-anchor', zoom, f, functionCache, featureState);\n                    const placement = hasImage || type == 1 ? 'point' : getValue(layer, 'layout', 'symbol-placement', zoom, f, functionCache, featureState);\n                    let textAlign;\n                    if (placement === 'line-center') {\n                        text.setPlacement('line');\n                        textAlign = 'center';\n                    } else {\n                        text.setPlacement(placement);\n                    }\n                    if (placement === 'line' && typeof text.setRepeat === 'function') {\n                        const symbolSpacing = getValue(layer, 'layout', 'symbol-spacing', zoom, f, functionCache, featureState);\n                        text.setRepeat(symbolSpacing * 2);\n                    }\n                    text.setOverflow(placement === 'point');\n                    let textHaloWidth = getValue(layer, 'paint', 'text-halo-width', zoom, f, functionCache, featureState);\n                    const textOffset = getValue(layer, 'layout', 'text-offset', zoom, f, functionCache, featureState);\n                    const textTranslate = getValue(layer, 'paint', 'text-translate', zoom, f, functionCache, featureState);\n                    // Text offset has to take halo width and line height into account\n                    let vOffset = 0;\n                    let hOffset = 0;\n                    if (placement == 'point') {\n                        textAlign = 'center';\n                        if (textAnchor.indexOf('left') !== -1) {\n                            textAlign = 'left';\n                            hOffset = textHaloWidth;\n                        } else if (textAnchor.indexOf('right') !== -1) {\n                            textAlign = 'right';\n                            hOffset = -textHaloWidth;\n                        }\n                        const textRotationAlignment = getValue(layer, 'layout', 'text-rotation-alignment', zoom, f, functionCache, featureState);\n                        text.setRotateWithView(textRotationAlignment == 'map');\n                    } else {\n                        text.setMaxAngle(deg2rad(getValue(layer, 'layout', 'text-max-angle', zoom, f, functionCache, featureState)) * label.length / wrappedLabel.length);\n                        text.setRotateWithView(false);\n                    }\n                    text.setTextAlign(textAlign);\n                    let textBaseline = 'middle';\n                    if (textAnchor.indexOf('bottom') == 0) {\n                        textBaseline = 'bottom';\n                        vOffset = -textHaloWidth - 0.5 * (textLineHeight - 1) * textSize;\n                    } else if (textAnchor.indexOf('top') == 0) {\n                        textBaseline = 'top';\n                        vOffset = textHaloWidth + 0.5 * (textLineHeight - 1) * textSize;\n                    }\n                    text.setTextBaseline(textBaseline);\n                    const textJustify = getValue(layer, 'layout', 'text-justify', zoom, f, functionCache, featureState);\n                    text.setJustify(textJustify === 'auto' ? undefined : textJustify);\n                    text.setOffsetX(textOffset[0] * textSize + hOffset + textTranslate[0]);\n                    text.setOffsetY(textOffset[1] * textSize + vOffset + textTranslate[1]);\n                    textColor.setColor(colorWithOpacity(getValue(layer, 'paint', 'text-color', zoom, f, functionCache, featureState), opacity));\n                    text.setFill(textColor);\n                    const haloColor = colorWithOpacity(getValue(layer, 'paint', 'text-halo-color', zoom, f, functionCache, featureState), opacity);\n                    if (haloColor && textHaloWidth > 0) {\n                        textHalo.setColor(haloColor);\n                        // spec here : https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-symbol-text-halo-width\n                        // Halo width must be doubled because it is applied around the center of the text outline\n                        textHaloWidth *= 2;\n                        // 1/4 of text size (spec) x 2\n                        const halfTextSize = 0.5 * textSize;\n                        textHalo.setWidth(textHaloWidth <= halfTextSize ? textHaloWidth : halfTextSize);\n                        text.setStroke(textHalo);\n                    } else {\n                        text.setStroke(undefined);\n                    }\n                    const textPadding = getValue(layer, 'layout', 'text-padding', zoom, f, functionCache, featureState);\n                    const padding = text.getPadding();\n                    if (textPadding !== padding[0]) {\n                        padding[0] = textPadding;\n                        padding[1] = textPadding;\n                        padding[2] = textPadding;\n                        padding[3] = textPadding;\n                    }\n                    style.setZIndex(index);\n                }\n            }\n        }\n        if (stylesLength > -1) {\n            styles.length = stylesLength + 1;\n            if (recordLayer) {\n                if ('set' in feature) {\n                    // ol/Feature\n                    feature.set('mapbox-layer', featureBelongsToLayer);\n                } else {\n                    // ol/render/Feature\n                    feature.getProperties()['mapbox-layer'] = featureBelongsToLayer;\n                }\n            }\n            return styles;\n        }\n        return undefined;\n    };\n    olLayer.setStyle(styleFunction);\n    olLayer.set('mapbox-source', mapboxSource);\n    olLayer.set('mapbox-layers', mapboxLayers);\n    olLayer.set('mapbox-featurestate', olLayer.get('mapbox-featurestate') || {});\n    return styleFunction;\n}\n/**\n * Get the the style for a specific Mapbox layer only. This can be useful for creating a legend.\n * @param {import(\"ol/Feature\").default|import(\"ol/render/Feature\").default} feature OpenLayers feature.\n * @param {number} resolution View resolution.\n * @param {import(\"ol/layer\").Vector|import(\"ol/layer\").VectorTile} olLayer OpenLayers layer.\n * @param {string} layerId Id of the Mapbox layer to get the style for\n * @return {Array<import(\"ol/style\").Style>} Styles for the provided Mapbox layer.\n */\nfunction getStyleForLayer(feature, resolution, olLayer, layerId) {\n    const evaluateStyle = olLayer.getStyleFunction();\n    if (evaluateStyle.length === 3) {\n        // @ts-ignore\n        return evaluateStyle(feature, resolution, layerId);\n    }\n    return undefined;\n}\n\n/**\n * Generates a shaded relief image given elevation data.  Uses a 3x3\n * neighborhood for determining slope and aspect.\n * @param {Array<ImageData>} inputs Array of input images.\n * @param {Object} data Data added in the \"beforeoperations\" event.\n * @return {ImageData} Output image.\n */\nfunction hillshade(inputs, data) {\n    const elevationImage = inputs[0];\n    const width = elevationImage.width;\n    const height = elevationImage.height;\n    const elevationData = elevationImage.data;\n    const shadeData = new Uint8ClampedArray(elevationData.length);\n    const dp = data.resolution * 2;\n    const maxX = width - 1;\n    const maxY = height - 1;\n    const pixel = [\n        0,\n        0,\n        0,\n        0\n    ];\n    const twoPi = 2 * Math.PI;\n    const halfPi = Math.PI / 2;\n    const sunEl = Math.PI * data.sunEl / 180;\n    const sunAz = Math.PI * data.sunAz / 180;\n    const cosSunEl = Math.cos(sunEl);\n    const sinSunEl = Math.sin(sunEl);\n    const highlightColor = data.highlightColor;\n    const shadowColor = data.shadowColor;\n    const accentColor = data.accentColor;\n    const encoding = data.encoding;\n    let pixelX, pixelY, x0, x1, y0, y1, offset, z0, z1, dzdx, dzdy, slope, aspect, accent, scaled, shade, scaledAccentColor, compositeShadeColor, clamp, slopeScaleBase, scaledSlope, cosIncidence;\n    function calculateElevation(pixel, encoding = 'mapbox') {\n        // The method used to extract elevations from the DEM.\n        //\n        // The supported methods are the Mapbox format\n        // (red * 256 * 256 + green * 256 + blue) * 0.1 - 10000\n        // and the Terrarium format\n        // (red * 256 + green + blue / 256) - 32768\n        //\n        if (encoding === 'mapbox') {\n            return (pixel[0] * 256 * 256 + pixel[1] * 256 + pixel[2]) * 0.1 - 10000;\n        }\n        if (encoding === 'terrarium') {\n            return pixel[0] * 256 + pixel[1] + pixel[2] / 256 - 32768;\n        }\n    }\n    for (pixelY = 0; pixelY <= maxY; ++pixelY) {\n        y0 = pixelY === 0 ? 0 : pixelY - 1;\n        y1 = pixelY === maxY ? maxY : pixelY + 1;\n        for (pixelX = 0; pixelX <= maxX; ++pixelX) {\n            x0 = pixelX === 0 ? 0 : pixelX - 1;\n            x1 = pixelX === maxX ? maxX : pixelX + 1;\n            // determine elevation for (x0, pixelY)\n            offset = (pixelY * width + x0) * 4;\n            pixel[0] = elevationData[offset];\n            pixel[1] = elevationData[offset + 1];\n            pixel[2] = elevationData[offset + 2];\n            pixel[3] = elevationData[offset + 3];\n            z0 = data.vert * calculateElevation(pixel, encoding);\n            // determine elevation for (x1, pixelY)\n            offset = (pixelY * width + x1) * 4;\n            pixel[0] = elevationData[offset];\n            pixel[1] = elevationData[offset + 1];\n            pixel[2] = elevationData[offset + 2];\n            pixel[3] = elevationData[offset + 3];\n            z1 = data.vert * calculateElevation(pixel, encoding);\n            dzdx = (z1 - z0) / dp;\n            // determine elevation for (pixelX, y0)\n            offset = (y0 * width + pixelX) * 4;\n            pixel[0] = elevationData[offset];\n            pixel[1] = elevationData[offset + 1];\n            pixel[2] = elevationData[offset + 2];\n            pixel[3] = elevationData[offset + 3];\n            z0 = data.vert * calculateElevation(pixel, encoding);\n            // determine elevation for (pixelX, y1)\n            offset = (y1 * width + pixelX) * 4;\n            pixel[0] = elevationData[offset];\n            pixel[1] = elevationData[offset + 1];\n            pixel[2] = elevationData[offset + 2];\n            pixel[3] = elevationData[offset + 3];\n            z1 = data.vert * calculateElevation(pixel, encoding);\n            dzdy = (z1 - z0) / dp;\n            aspect = Math.atan2(dzdy, -dzdx);\n            if (aspect < 0) {\n                aspect = halfPi - aspect;\n            } else if (aspect > halfPi) {\n                aspect = twoPi - aspect + halfPi;\n            } else {\n                aspect = halfPi - aspect;\n            }\n            // Bootstrap slope and corresponding incident values\n            slope = Math.atan(Math.sqrt(dzdx * dzdx + dzdy * dzdy));\n            cosIncidence = sinSunEl * Math.cos(slope) + cosSunEl * Math.sin(slope) * Math.cos(sunAz - aspect);\n            accent = Math.cos(slope);\n            // 255 for Hex colors\n            scaled = 255 * cosIncidence;\n            /*\n       * The following is heavily inspired\n       * by [Maplibre's equivalent WebGL shader](https://github.com/maplibre/maplibre-gl-js/blob/main/src/shaders/hillshade.fragment.glsl)\n       */\n            // Forces given value to stay between two given extremes\n            clamp = Math.min(Math.max(2 * data.sunEl, 0), 1);\n            // Intensity basis for hillshade opacity\n            slopeScaleBase = 1.875 - data.opacity * 1.75;\n            // Intensity interpolation so that higher intensity values create more opaque hillshading\n            scaledSlope = data.opacity !== 0.5 ? halfPi * ((Math.pow(slopeScaleBase, slope) - 1) / (Math.pow(slopeScaleBase, halfPi) - 1)) : slope;\n            // Accent hillshade color with given accentColor to emphasize rougher terrain\n            scaledAccentColor = {\n                r: (1 - accent) * accentColor.r * clamp * 255,\n                g: (1 - accent) * accentColor.g * clamp * 255,\n                b: (1 - accent) * accentColor.b * clamp * 255,\n                a: (1 - accent) * accentColor.a * clamp * 255\n            };\n            // Allows highlight vs shadow discrimination\n            shade = Math.abs(((aspect + sunAz) / Math.PI + 0.5) % 2 - 1);\n            // Creates a composite color mix between highlight & shadow colors to emphasize slopes\n            compositeShadeColor = {\n                r: (highlightColor.r * (1 - shade) + shadowColor.r * shade) * scaled,\n                g: (highlightColor.g * (1 - shade) + shadowColor.g * shade) * scaled,\n                b: (highlightColor.b * (1 - shade) + shadowColor.b * shade) * scaled,\n                a: (highlightColor.a * (1 - shade) + shadowColor.a * shade) * scaled\n            };\n            // Fill in result color value\n            offset = (pixelY * width + pixelX) * 4;\n            shadeData[offset] = scaledAccentColor.r * (1 - shade) + compositeShadeColor.r;\n            shadeData[offset + 1] = scaledAccentColor.g * (1 - shade) + compositeShadeColor.g;\n            shadeData[offset + 2] = scaledAccentColor.b * (1 - shade) + compositeShadeColor.b;\n            // Key opacity on the scaledSlope to improve legibility by increasing higher elevation rates' contrast\n            shadeData[offset + 3] = elevationData[offset + 3] * data.opacity * clamp * Math.sin(scaledSlope);\n        }\n    }\n    return new ImageData(shadeData, width, height);\n}\n\n/*\nol-mapbox-style - Use Mapbox/MapLibre Style objects with OpenLayers\nCopyright 2016-present ol-mapbox-style contributors\nLicense: https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE\n*/\n/**\n * @typedef {Object} FeatureIdentifier\n * @property {string|number} id The feature id.\n * @property {string} source The source id.\n */\n/**\n * @typedef {Object} Options\n * @property {string} [accessToken] Access token for 'mapbox://' urls.\n * @property {function(string, import(\"./util.js\").ResourceType): (Request|string|Promise<Request|string>|void)} [transformRequest]\n * Function for controlling how `ol-mapbox-style` fetches resources. Can be used for modifying\n * the url, adding headers or setting credentials options. Called with the url and the resource\n * type as arguments, this function is supposed to return a `Request` or a url `string`, or a promise tehereof.\n * Without a return value the original request will not be modified.\n * @property {string} [projection='EPSG:3857'] Only useful when working with non-standard projections.\n * Code of a projection registered with OpenLayers. All sources of the style must be provided in this\n * projection. The projection must also have a valid extent defined, which will be used to determine the\n * origin and resolutions of the tile grid for all tiled sources of the style. When provided, the bbox\n * placeholder in tile and geojson urls changes: the default is `{bbox-epsg-3857}`, when projection is e.g.\n * set to `EPSG:4326`, the bbox placeholder will be `{bbox-epsg-4326}`.\n * @property {Array<number>} [resolutions] Only useful when working with non-standard projections.\n * Resolutions for mapping resolution to the `zoom` used in the Mapbox/MapLibre style.\n * @property {string} [styleUrl] URL of the Mapbox GL style. Required for styles that were provided\n * as object, when they contain a relative sprite url, or sources referencing data by relative url.\n * @property {string} [webfonts] Template for resolving webfonts. Can be used to specify where to fetch\n * web fonts when no `ol:webfonts` metadata is set in the style object. See `getFonts()` and the\n * \"Font handling\" section in `README.md` for details.\n * @property {function(VectorLayer|VectorTileLayer, string):HTMLImageElement|HTMLCanvasElement|string|undefined} [getImage=undefined]\n * Function that returns an image for an icon name. If the result is an HTMLImageElement, it must already be\n * loaded. The layer can be used to call layer.changed() when the loading and processing of the image has finished.\n * This function be used for icons not in the sprite or to override sprite icons.\n * @property {string} [accessTokenParam='access_token'] Access token param. For internal use.\n */\n/**\n * @typedef {Object} ApplyStyleOptions\n * @property {string} [source=''] Source. Default is `''`, which causes the first source in the\n * style to be used.\n * @property {Array<string>} [layers] Layers. If no source is provided, the layers with the\n * provided ids will be used from the style's `layers` array. All layers need to use the same source.\n * @property {boolean} [updateSource=true] Update or create vector (tile) layer source with parameters\n * specified for the source in the mapbox style definition.\n */\n/**\n * @param {import(\"ol/proj/Projection.js\").default} projection Projection.\n * @param {number} [tileSize=512] Tile size.\n * @return {Array<number>} Resolutions.\n */\nfunction getTileResolutions(projection, tileSize = 512) {\n    return projection.getExtent() ? createXYZ({\n        extent: projection.getExtent(),\n        tileSize: tileSize,\n        maxZoom: 22\n    }).getResolutions() : defaultResolutions;\n}\n/**\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Options} Completed options with accessToken and accessTokenParam.\n */\nfunction completeOptions(styleUrl, options) {\n    if (!options.accessToken) {\n        options = Object.assign({}, options);\n        const searchParams = new URL(styleUrl).searchParams;\n        // The last search parameter is the access token\n        searchParams.forEach((value, key) => {\n            options.accessToken = value;\n            options.accessTokenParam = key;\n        });\n    }\n    return options;\n}\n/**\n * Applies a style function to an `ol/layer/VectorTile` or `ol/layer/Vector`\n * with an `ol/source/VectorTile` or an `ol/source/Vector`. If the layer does not have a source\n * yet, it will be created and populated from the information in the `glStyle` (unless `updateSource` is\n * set to `false`).\n *\n * **Example:**\n * ```js\n * import {applyStyle} from 'ol-mapbox-style';\n * import {VectorTile} from 'ol/layer.js';\n *\n * const layer = new VectorTile({declutter: true});\n * applyStyle(layer, 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_OPENMAPTILES_TOKEN');\n * ```\n *\n * The style function will render all layers from the `glStyle` object that use the source\n * of the first layer, the specified `source`, or a subset of layers from the same source. The\n * source needs to be a `\"type\": \"vector\"` or `\"type\": \"geojson\"` source.\n *\n * Two additional properties will be set on the provided layer:\n *\n *  * `mapbox-source`: The `id` of the Mapbox/MapLibre Style document's source that the\n *    OpenLayers layer was created from. Usually `apply()` creates one\n *    OpenLayers layer per Mapbox/MapLibre Style source, unless the layer stack has\n *    layers from different sources in between.\n *  * `mapbox-layers`: The `id`s of the Mapbox/MapLibre Style document's layers that are\n *    included in the OpenLayers layer.\n *\n * @param {VectorTileLayer|VectorLayer} layer OpenLayers layer. When the layer has a source configured,\n * it will be modified to use the configuration from the glStyle's `source`. Options specified on the\n * layer's source will override those from the glStyle's `source`, except for `url` and\n * `tileUrlFunction`. When the source projection is the default (`EPSG:3857`), the `tileGrid` will\n * also be overridden. If you'd rather not have ol-mapbox-style modify the source, configure `applyStyle()`\n * with the `updateSource: false` option.\n * @param {string|Object} glStyle Mapbox/MapLibre Style object.\n * @param {string|Array<string>|Options&ApplyStyleOptions} [sourceOrLayersOrOptions] Options or\n * `source` key or an array of layer `id`s from the Mapbox/MapLibre Style object. When a `source` key is\n * provided, all layers for the specified source will be included in the style function. When layer\n * `id`s are provided, they must be from layers that use the same source. When not provided or a falsey\n * value, all layers using the first source specified in the glStyle will be rendered.\n * @param {Options&ApplyStyleOptions|string} [optionsOrPath] **Deprecated**. Options. Alternatively the path of the style file\n * (only required when a relative path is used for the `\"sprite\"` property of the style).\n * @param {Array<number>} [resolutions] **Deprecated**. Resolutions for mapping resolution to zoom level.\n * Only needed when working with non-standard tile grids or projections, can also be supplied with\n * options.\n * @return {Promise} Promise which will be resolved when the style can be used\n * for rendering.\n */\nfunction applyStyle(layer, glStyle, sourceOrLayersOrOptions = '', optionsOrPath = {}, resolutions = undefined) {\n    let styleUrl, sourceId;\n    /** @type {Options&ApplyStyleOptions} */\n    let options;\n    let sourceOrLayers;\n    let updateSource = true;\n    if (typeof sourceOrLayersOrOptions !== 'string' && !Array.isArray(sourceOrLayersOrOptions)) {\n        options = sourceOrLayersOrOptions;\n        sourceOrLayers = options.source || options.layers;\n        optionsOrPath = options;\n    } else {\n        sourceOrLayers = sourceOrLayersOrOptions;\n    }\n    if (typeof optionsOrPath === 'string') {\n        styleUrl = optionsOrPath;\n        options = {};\n    } else {\n        styleUrl = optionsOrPath.styleUrl;\n        options = optionsOrPath;\n    }\n    if (options.updateSource === false) {\n        updateSource = false;\n    }\n    if (!resolutions) {\n        resolutions = options.resolutions;\n    }\n    if (!styleUrl && typeof glStyle === 'string' && !glStyle.trim().startsWith('{')) {\n        styleUrl = glStyle;\n    }\n    if (styleUrl) {\n        styleUrl = styleUrl.startsWith('data:') ? location.href : normalizeStyleUrl(styleUrl, options.accessToken);\n        options = completeOptions(styleUrl, options);\n    }\n    return new Promise(function (resolve, reject) {\n        // TODO: figure out where best place to check source type is\n        // Note that the source arg is an array of gl layer ids and each must be\n        // dereferenced to get source type to validate\n        getGlStyle(glStyle, options).then(function (glStyle) {\n            if (glStyle.version != 8) {\n                return reject(new Error('glStyle version 8 required.'));\n            }\n            if (!(layer instanceof VectorLayer || layer instanceof VectorTileLayer)) {\n                return reject(new Error('Can only apply to VectorLayer or VectorTileLayer'));\n            }\n            const type = layer instanceof VectorTileLayer ? 'vector' : 'geojson';\n            if (!sourceOrLayers) {\n                sourceId = Object.keys(glStyle.sources).find(function (key) {\n                    return glStyle.sources[key].type === type;\n                });\n                sourceOrLayers = sourceId;\n            } else if (Array.isArray(sourceOrLayers)) {\n                sourceId = glStyle.layers.find(function (layer) {\n                    return layer.id === sourceOrLayers[0];\n                }).source;\n            } else {\n                sourceId = sourceOrLayers;\n            }\n            if (!sourceId) {\n                return reject(new Error(`No ${ type } source found in the glStyle.`));\n            }\n            function assignSource() {\n                if (!updateSource) {\n                    return Promise.resolve();\n                }\n                if (layer instanceof VectorTileLayer) {\n                    return setupVectorSource(glStyle.sources[sourceId], styleUrl, options).then(function (source) {\n                        const targetSource = layer.getSource();\n                        if (!targetSource) {\n                            layer.setSource(source);\n                        } else if (source !== targetSource) {\n                            targetSource.setTileUrlFunction(source.getTileUrlFunction());\n                            if (typeof targetSource.setUrls === 'function' && typeof source.getUrls === 'function') {\n                                // to get correct keys for tile cache and queue\n                                targetSource.setUrls(source.getUrls());\n                            }\n                            //@ts-ignore\n                            if (!targetSource.format_) {\n                                //@ts-ignore\n                                targetSource.format_ = source.format_;\n                            }\n                            if (!targetSource.getAttributions()) {\n                                targetSource.setAttributions(source.getAttributions());\n                            }\n                            if (targetSource.getTileLoadFunction() === defaultLoadFunction) {\n                                targetSource.setTileLoadFunction(source.getTileLoadFunction());\n                            }\n                            if (equivalent(targetSource.getProjection(), source.getProjection())) {\n                                targetSource.tileGrid = source.getTileGrid();\n                            }\n                        }\n                        const tileGrid = layer.getSource().getTileGrid();\n                        if (!isFinite(layer.getMaxResolution()) && !isFinite(layer.getMinZoom()) && tileGrid.getMinZoom() > 0) {\n                            layer.setMaxResolution(getResolutionForZoom(Math.max(0, tileGrid.getMinZoom() - 1e-12), tileGrid.getResolutions()));\n                        }\n                    });\n                }\n                const glSource = glStyle.sources[sourceId];\n                let source = layer.getSource();\n                if (!source || source.get('mapbox-source') !== glSource) {\n                    source = setupGeoJSONSource(glSource, styleUrl, options);\n                }\n                const targetSource = layer.getSource();\n                if (!targetSource) {\n                    layer.setSource(source);\n                } else if (source !== targetSource) {\n                    if (!targetSource.getAttributions()) {\n                        targetSource.setAttributions(source.getAttributions());\n                    }\n                    //@ts-ignore\n                    if (!targetSource.format_) {\n                        //@ts-ignore\n                        targetSource.format_ = source.getFormat();\n                    }\n                    //@ts-ignore\n                    targetSource.url_ = source.getUrl();\n                }\n                return Promise.resolve();\n            }\n            let spriteScale, spriteData, spriteImageUrl, style;\n            function onChange() {\n                if (!style && (!glStyle.sprite || spriteData)) {\n                    if (options.projection && !resolutions) {\n                        const projection = get$1(options.projection);\n                        const units = projection.getUnits();\n                        if (units !== 'm') {\n                            resolutions = defaultResolutions.map(resolution => resolution / METERS_PER_UNIT[units]);\n                        }\n                    }\n                    style = stylefunction(layer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, (fonts, templateUrl = options.webfonts) => getFonts(fonts, templateUrl), options.getImage);\n                    if (!layer.getStyle()) {\n                        reject(new Error(`Nothing to show for source [${ sourceId }]`));\n                    } else {\n                        assignSource().then(resolve).catch(reject);\n                    }\n                } else if (style) {\n                    layer.setStyle(style);\n                    assignSource().then(resolve).catch(reject);\n                } else {\n                    reject(new Error('Something went wrong trying to apply style.'));\n                }\n            }\n            if (glStyle.sprite) {\n                const sprite = new URL(normalizeSpriteUrl(glStyle.sprite, options.accessToken, styleUrl || location.href));\n                spriteScale = window.devicePixelRatio >= 1.5 ? 0.5 : 1;\n                const sizeFactor = spriteScale == 0.5 ? '@2x' : '';\n                let spriteUrl = sprite.origin + sprite.pathname + sizeFactor + '.json' + sprite.search;\n                new Promise(function (resolve, reject) {\n                    fetchResource('Sprite', spriteUrl, options).then(resolve).catch(function (error) {\n                        spriteUrl = sprite.origin + sprite.pathname + '.json' + sprite.search;\n                        fetchResource('Sprite', spriteUrl, options).then(resolve).catch(reject);\n                    });\n                }).then(function (spritesJson) {\n                    if (spritesJson === undefined) {\n                        reject(new Error('No sprites found.'));\n                    }\n                    spriteData = spritesJson;\n                    spriteImageUrl = sprite.origin + sprite.pathname + sizeFactor + '.png' + sprite.search;\n                    if (options.transformRequest) {\n                        const transformed = options.transformRequest(spriteImageUrl, 'SpriteImage') || spriteImageUrl;\n                        if (transformed instanceof Request || transformed instanceof Promise) {\n                            spriteImageUrl = transformed;\n                        }\n                    }\n                    onChange();\n                }).catch(function (err) {\n                    reject(new Error(`Sprites cannot be loaded: ${ spriteUrl }: ${ err.message }`));\n                });\n            } else {\n                onChange();\n            }\n        }).catch(reject);\n    });\n}\nconst emptyObj = {};\nfunction setFirstBackground(mapOrLayer, glStyle, options) {\n    glStyle.layers.some(function (layer) {\n        if (layer.type === 'background') {\n            if (mapOrLayer instanceof Layer) {\n                mapOrLayer.setBackground(function (resolution) {\n                    return getBackgroundColor(layer, resolution, options, {});\n                });\n                return true;\n            }\n            if (mapOrLayer instanceof Map || mapOrLayer instanceof LayerGroup) {\n                mapOrLayer.getLayers().insertAt(0, setupBackgroundLayer(layer, options, {}));\n                return true;\n            }\n        }\n    });\n}\n/**\n * Applies properties of the Mapbox/MapLibre Style's first `background` layer to the\n * provided map or layer (group).\n *\n * **Example:**\n * ```js\n * import {applyBackground} from 'ol-mapbox-style';\n * import {Map} from 'ol';\n *\n * const map = new Map({target: 'map'});\n * applyBackground(map, 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_OPENMAPTILES_TOKEN');\n * ```\n * @param {Map|import(\"ol/layer/Base.js\").default} mapOrLayer OpenLayers Map or layer (group).\n * @param {Object|string} glStyle Mapbox/MapLibre Style object or url.\n * @param {Options} options Options.\n * @return {Promise} Promise that resolves when the background is applied.\n */\nfunction applyBackground(mapOrLayer, glStyle, options = {}) {\n    return getGlStyle(glStyle, options).then(function (glStyle) {\n        setFirstBackground(mapOrLayer, glStyle, options);\n    });\n}\nfunction getSourceIdByRef(layers, ref) {\n    let sourceId;\n    layers.some(function (layer) {\n        if (layer.id == ref) {\n            sourceId = layer.source;\n            return true;\n        }\n    });\n    return sourceId;\n}\nfunction extentFromTileJSON(tileJSON, projection) {\n    const bounds = tileJSON.bounds;\n    if (bounds) {\n        const ll = fromLonLat([\n            bounds[0],\n            bounds[1]\n        ], projection);\n        const tr = fromLonLat([\n            bounds[2],\n            bounds[3]\n        ], projection);\n        return [\n            ll[0],\n            ll[1],\n            tr[0],\n            tr[1]\n        ];\n    }\n    return get$1(projection).getExtent();\n}\nfunction sourceOptionsFromTileJSON(glSource, tileJSON, options) {\n    const tileJSONSource = new TileJSON({\n        tileJSON: tileJSON,\n        tileSize: glSource.tileSize || tileJSON.tileSize || 512\n    });\n    const tileJSONDoc = tileJSONSource.getTileJSON();\n    const tileGrid = tileJSONSource.getTileGrid();\n    const projection = get$1(options.projection || 'EPSG:3857');\n    const extent = extentFromTileJSON(tileJSONDoc, projection);\n    const projectionExtent = projection.getExtent();\n    const minZoom = tileJSONDoc.minzoom || 0;\n    const maxZoom = tileJSONDoc.maxzoom || 22;\n    /** @type {import(\"ol/source/VectorTile.js\").Options<import(\"ol/render/Feature.js\").default>} */\n    const sourceOptions = {\n        attributions: tileJSONSource.getAttributions(),\n        projection: projection,\n        tileGrid: new TileGrid({\n            origin: projectionExtent ? getTopLeft(projectionExtent) : tileGrid.getOrigin(0),\n            extent: extent || tileGrid.getExtent(),\n            minZoom: minZoom,\n            resolutions: getTileResolutions(projection, tileJSON.tileSize).slice(0, maxZoom + 1),\n            tileSize: tileGrid.getTileSize(0)\n        })\n    };\n    if (Array.isArray(tileJSONDoc.tiles)) {\n        sourceOptions.urls = tileJSONDoc.tiles;\n    } else {\n        sourceOptions.url = tileJSONDoc.tiles;\n    }\n    return sourceOptions;\n}\nfunction getBackgroundColor(glLayer, resolution, options, functionCache) {\n    const background = {\n        id: glLayer.id,\n        type: glLayer.type\n    };\n    const layout = glLayer.layout || {};\n    const paint = glLayer.paint || {};\n    background['paint'] = paint;\n    const zoom = getZoomForResolution(resolution, options.resolutions || defaultResolutions);\n    let opacity;\n    const bg = getValue(background, 'paint', 'background-color', zoom, emptyObj, functionCache);\n    if (paint['background-opacity'] !== undefined) {\n        opacity = getValue(background, 'paint', 'background-opacity', zoom, emptyObj, functionCache);\n    }\n    return layout.visibility == 'none' ? undefined : colorWithOpacity(bg, opacity);\n}\n/**\n * @param {Object} glLayer Mapbox/MapLibre Style layer object.\n * @param {Options} options Options.\n * @param {Object} functionCache Cache for functions.\n * @return {Layer} OpenLayers layer.\n */\nfunction setupBackgroundLayer(glLayer, options, functionCache) {\n    const div = document.createElement('div');\n    div.className = 'ol-mapbox-style-background';\n    div.style.position = 'absolute';\n    div.style.width = '100%';\n    div.style.height = '100%';\n    return new Layer({\n        source: new Source({}),\n        render(frameState) {\n            const color = getBackgroundColor(glLayer, frameState.viewState.resolution, options, functionCache);\n            div.style.backgroundColor = color;\n            return div;\n        }\n    });\n}\n/**\n * Creates an OpenLayers VectorTile source for a gl source entry.\n * @param {Object} glSource \"source\" entry from a Mapbox/MapLibre Style object.\n * @param {string|undefined} styleUrl URL to use for the source. This is expected to be the complete http(s) url,\n * with access key applied.\n * @param {Options} options Options.\n * @return {Promise<import(\"ol/source/VectorTile\").default>} Promise resolving to a VectorTile source.\n * @private\n */\nfunction setupVectorSource(glSource, styleUrl, options) {\n    return new Promise(function (resolve, reject) {\n        getTileJson(glSource, styleUrl, options).then(function ({tileJson, tileLoadFunction}) {\n            const sourceOptions = sourceOptionsFromTileJSON(glSource, tileJson, options);\n            sourceOptions.tileLoadFunction = tileLoadFunction;\n            sourceOptions.format = new MVT();\n            resolve(new VectorTileSource(sourceOptions));\n        }).catch(reject);\n    });\n}\nfunction setupVectorLayer(glSource, styleUrl, options) {\n    const layer = new VectorTileLayer({\n        declutter: true,\n        visible: false\n    });\n    setupVectorSource(glSource, styleUrl, options).then(function (source) {\n        source.set('mapbox-source', glSource);\n        layer.setSource(source);\n    }).catch(function (error) {\n        layer.setSource(undefined);\n    });\n    return layer;\n}\nfunction getBboxTemplate(projection) {\n    const projCode = projection ? projection.getCode() : 'EPSG:3857';\n    return `{bbox-${ projCode.toLowerCase().replace(/[^a-z0-9]/g, '-') }}`;\n}\nfunction setupRasterSource(glSource, styleUrl, options) {\n    return new Promise(function (resolve, reject) {\n        getTileJson(glSource, styleUrl, options).then(function ({tileJson, tileLoadFunction}) {\n            const source = new TileJSON({\n                interpolate: options.interpolate === undefined ? true : options.interpolate,\n                transition: 0,\n                crossOrigin: 'anonymous',\n                tileJSON: tileJson\n            });\n            source.tileGrid = sourceOptionsFromTileJSON(glSource, tileJson, options).tileGrid;\n            if (options.projection) {\n                //@ts-ignore\n                source.projection = get$1(options.projection);\n            }\n            const getTileUrl = source.getTileUrlFunction();\n            if (tileLoadFunction) {\n                source.setTileLoadFunction(tileLoadFunction);\n            }\n            source.setTileUrlFunction(function (tileCoord, pixelRatio, projection) {\n                const bboxTemplate = getBboxTemplate(projection);\n                let src = getTileUrl(tileCoord, pixelRatio, projection);\n                if (src.indexOf(bboxTemplate) != -1) {\n                    const bbox = source.getTileGrid().getTileCoordExtent(tileCoord);\n                    src = src.replace(bboxTemplate, bbox.toString());\n                }\n                return src;\n            });\n            source.set('mapbox-source', glSource);\n            resolve(source);\n        }).catch(function (error) {\n            reject(error);\n        });\n    });\n}\nfunction setupRasterLayer(glSource, styleUrl, options) {\n    const layer = new TileLayer();\n    setupRasterSource(glSource, styleUrl, options).then(function (source) {\n        layer.setSource(source);\n    }).catch(function () {\n        layer.setSource(undefined);\n    });\n    return layer;\n}\n/**\n *\n * @param {Object} glSource \"source\" entry from a Mapbox/MapLibre Style object.\n * @param {string} styleUrl Style url\n * @param {Options} options ol-mapbox-style options.\n * @return {ImageLayer<Raster>} The raster layer\n */\nfunction setupHillshadeLayer(glSource, styleUrl, options) {\n    const tileLayer = setupRasterLayer(glSource, styleUrl, options);\n    /** @type {ImageLayer<Raster>} */\n    const layer = new ImageLayer({\n        source: new Raster({\n            operationType: 'image',\n            operation: hillshade,\n            sources: [tileLayer]\n        })\n    });\n    return layer;\n}\n/**\n * @param {Object} glSource glStyle source.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {VectorSource} Configured vector source.\n */\nfunction setupGeoJSONSource(glSource, styleUrl, options) {\n    const geoJsonFormat = options.projection ? new GeoJSON({ dataProjection: options.projection }) : new GeoJSON();\n    const data = glSource.data;\n    const sourceOptions = {};\n    if (typeof data == 'string') {\n        const [geoJsonUrl] = normalizeSourceUrl(data, options.accessToken, options.accessTokenParam || 'access_token', styleUrl || location.href);\n        if (/\\{bbox-[0-9a-z-]+\\}/.test(geoJsonUrl)) {\n            const extentUrl = (extent, resolution, projection) => {\n                const bboxTemplate = getBboxTemplate(projection);\n                return geoJsonUrl.replace(bboxTemplate, `${ extent.join(',') }`);\n            };\n            const source = new VectorSource({\n                attributions: glSource.attribution,\n                format: geoJsonFormat,\n                loader: (extent, resolution, projection, success, failure) => {\n                    const url = typeof extentUrl === 'function' ? extentUrl(extent, resolution, projection) : extentUrl;\n                    fetchResource('GeoJSON', url, options).then(json => {\n                        const features = source.getFormat().readFeatures(json, { featureProjection: projection });\n                        source.addFeatures(features);\n                        success(features);\n                    }).catch(response => {\n                        source.removeLoadedExtent(extent);\n                        failure();\n                    });\n                },\n                strategy: bbox\n            });\n            source.set('mapbox-source', glSource);\n            return source;\n        }\n        const source = new VectorSource({\n            attributions: glSource.attribution,\n            format: geoJsonFormat,\n            url: geoJsonUrl,\n            loader: (extent, resolution, projection, success, failure) => {\n                fetchResource('GeoJSON', geoJsonUrl, options).then(json => {\n                    const features = source.getFormat().readFeatures(json, { featureProjection: projection });\n                    source.addFeatures(features);\n                    success(features);\n                }).catch(response => {\n                    source.removeLoadedExtent(extent);\n                    failure();\n                });\n            }\n        });\n        return source;\n    }\n    sourceOptions.features = geoJsonFormat.readFeatures(data, { featureProjection: getUserProjection() || 'EPSG:3857' });\n    const source = new VectorSource(Object.assign({\n        attributions: glSource.attribution,\n        format: geoJsonFormat\n    }, sourceOptions));\n    source.set('mapbox-source', glSource);\n    return source;\n}\nfunction setupGeoJSONLayer(glSource, styleUrl, options) {\n    return new VectorLayer({\n        declutter: true,\n        source: setupGeoJSONSource(glSource, styleUrl, options),\n        visible: false\n    });\n}\nfunction prerenderRasterLayer(glLayer, layer, functionCache) {\n    let zoom = null;\n    return function (event) {\n        if (glLayer.paint && 'raster-opacity' in glLayer.paint && event.frameState.viewState.zoom !== zoom) {\n            zoom = event.frameState.viewState.zoom;\n            delete functionCache[glLayer.id];\n            updateRasterLayerProperties(glLayer, layer, zoom, functionCache);\n        }\n    };\n}\nfunction updateRasterLayerProperties(glLayer, layer, zoom, functionCache) {\n    const opacity = getValue(glLayer, 'paint', 'raster-opacity', zoom, emptyObj, functionCache);\n    layer.setOpacity(opacity);\n}\nfunction manageVisibility(layer, mapOrGroup) {\n    function onChange() {\n        const glStyle = mapOrGroup.get('mapbox-style');\n        if (!glStyle) {\n            return;\n        }\n        const mapboxLayers = derefLayers(glStyle.layers);\n        const layerMapboxLayerids = layer.get('mapbox-layers');\n        const visible = mapboxLayers.filter(function (mapboxLayer) {\n            return layerMapboxLayerids.includes(mapboxLayer.id);\n        }).some(function (mapboxLayer) {\n            return !mapboxLayer.layout || !mapboxLayer.layout.visibility || mapboxLayer.layout.visibility === 'visible';\n        });\n        if (layer.get('visible') !== visible) {\n            layer.setVisible(visible);\n        }\n    }\n    layer.on('change', onChange);\n    onChange();\n}\nfunction setupLayer(glStyle, styleUrl, glLayer, options) {\n    const functionCache = getFunctionCache(glStyle);\n    const glLayers = glStyle.layers;\n    const type = glLayer.type;\n    const id = glLayer.source || getSourceIdByRef(glLayers, glLayer.ref);\n    const glSource = glStyle.sources[id];\n    let layer;\n    if (type == 'background') {\n        layer = setupBackgroundLayer(glLayer, options, functionCache);\n    } else if (glSource.type == 'vector') {\n        layer = setupVectorLayer(glSource, styleUrl, options);\n    } else if (glSource.type == 'raster') {\n        layer = setupRasterLayer(glSource, styleUrl, options);\n        layer.setVisible(glLayer.layout ? glLayer.layout.visibility !== 'none' : true);\n        layer.on('prerender', prerenderRasterLayer(glLayer, layer, functionCache));\n    } else if (glSource.type == 'geojson') {\n        layer = setupGeoJSONLayer(glSource, styleUrl, options);\n    } else if (glSource.type == 'raster-dem' && glLayer.type == 'hillshade') {\n        const hillshadeLayer = setupHillshadeLayer(glSource, styleUrl, options);\n        layer = hillshadeLayer;\n        hillshadeLayer.getSource().on('beforeoperations', function (event) {\n            const data = event.data;\n            data.resolution = getPointResolution(options.projection || 'EPSG:3857', event.resolution, getCenter(event.extent), 'm');\n            const zoom = getZoomForResolution(event.resolution, options.resolutions || defaultResolutions);\n            data.encoding = glSource.encoding;\n            data.vert = 5 * getValue(glLayer, 'paint', 'hillshade-exaggeration', zoom, emptyObj, functionCache);\n            data.sunAz = getValue(glLayer, 'paint', 'hillshade-illumination-direction', zoom, emptyObj, functionCache);\n            data.sunEl = 35;\n            data.opacity = 0.3;\n            data.highlightColor = getValue(glLayer, 'paint', 'hillshade-highlight-color', zoom, emptyObj, functionCache);\n            data.shadowColor = getValue(glLayer, 'paint', 'hillshade-shadow-color', zoom, emptyObj, functionCache);\n            data.accentColor = getValue(glLayer, 'paint', 'hillshade-accent-color', zoom, emptyObj, functionCache);\n        });\n        layer.setVisible(glLayer.layout ? glLayer.layout.visibility !== 'none' : true);\n    }\n    const glSourceId = id;\n    if (layer) {\n        layer.set('mapbox-source', glSourceId);\n    }\n    return layer;\n}\n/**\n * @param {*} glStyle Mapbox/MapLibre Style.\n * @param {Map|LayerGroup} mapOrGroup Map or layer group.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Promise} Promise that resolves when the style is loaded.\n */\nfunction processStyle(glStyle, mapOrGroup, styleUrl, options) {\n    const promises = [];\n    let view = null;\n    if (mapOrGroup instanceof Map) {\n        view = mapOrGroup.getView();\n        if (!view.isDef() && !view.getRotation() && !view.getResolutions()) {\n            const projection = options.projection ? get$1(options.projection) : view.getProjection();\n            view = new View(Object.assign(view.getProperties(), {\n                maxResolution: defaultResolutions[0] / METERS_PER_UNIT[projection.getUnits()],\n                projection: options.projection || view.getProjection()\n            }));\n            mapOrGroup.setView(view);\n        }\n        if ('center' in glStyle && !view.getCenter()) {\n            view.setCenter(fromLonLat(glStyle.center, view.getProjection()));\n        }\n        if ('zoom' in glStyle && view.getZoom() === undefined) {\n            view.setResolution(defaultResolutions[0] / METERS_PER_UNIT[view.getProjection().getUnits()] / Math.pow(2, glStyle.zoom));\n        }\n        if (!view.getCenter() || view.getZoom() === undefined) {\n            view.fit(view.getProjection().getExtent(), {\n                nearest: true,\n                size: mapOrGroup.getSize()\n            });\n        }\n    }\n    mapOrGroup.set('mapbox-style', glStyle);\n    mapOrGroup.set('mapbox-metadata', {\n        styleUrl,\n        options\n    });\n    const glLayers = glStyle.layers;\n    let layerIds = [];\n    let layer, glSourceId, id;\n    for (let i = 0, ii = glLayers.length; i < ii; ++i) {\n        const glLayer = glLayers[i];\n        const type = glLayer.type;\n        if (type == 'heatmap') {\n            //FIXME Unsupported layer type\n            // eslint-disable-next-line no-console\n            console.debug(`layers[${ i }].type \"${ type }\" not supported`);\n            continue;\n        } else {\n            id = glLayer.source || getSourceIdByRef(glLayers, glLayer.ref);\n            // this technique assumes gl layers will be in a particular order\n            if (!id || id != glSourceId) {\n                if (layerIds.length) {\n                    promises.push(finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options));\n                    layerIds = [];\n                }\n                layer = setupLayer(glStyle, styleUrl, glLayer, options);\n                if (!(layer instanceof VectorLayer || layer instanceof VectorTileLayer)) {\n                    layerIds = [];\n                }\n                glSourceId = layer.get('mapbox-source');\n            }\n            layerIds.push(glLayer.id);\n        }\n    }\n    promises.push(finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options));\n    return Promise.all(promises);\n}\n/**\n * Loads and applies a Mapbox/MapLibre Style object into an OpenLayers Map or LayerGroup.\n * This includes the map background, the layers, and for Map instances that did not\n * have a View defined yet also the center and the zoom.\n *\n * **Example:**\n * ```js\n * import apply from 'ol-mapbox-style';\n *\n * apply('map', 'mapbox://styles/mapbox/bright-v9', {accessToken: 'YOUR_MAPBOX_TOKEN'});\n * ```\n *\n * The center and zoom will only be set if present in the Mapbox/MapLibre Style document,\n * and if not already set on the OpenLayers map.\n *\n * Layers will be added to the OpenLayers map, without affecting any layers that\n * might already be set on the map.\n *\n * Layers added by `apply()` will have two additional properties:\n *\n *  * `mapbox-source`: The `id` of the Mapbox/MapLibre Style document's source that the\n *    OpenLayers layer was created from. Usually `apply()` creates one\n *    OpenLayers layer per Mapbox/MapLibre Style source, unless the layer stack has\n *    layers from different sources in between.\n *  * `mapbox-layers`: The `id`s of the Mapbox/MapLibre Style document's layers that are\n *    included in the OpenLayers layer.\n *\n * This function sets an additional `mapbox-style` property on the OpenLayers\n * Map or LayerGroup instance, which holds the Mapbox/MapLibre Style object.\n *\n * @param {Map|HTMLElement|string|LayerGroup} mapOrGroupOrElement Either an existing\n * OpenLayers Map instance, or a HTML element, or the id of a HTML element that will be\n * the target of a new OpenLayers Map, or a layer group. If layer group, styles\n * releated to the map and view will be ignored.\n * @param {string|Object} style JSON style object or style url pointing to a\n * Mapbox/MapLibre Style object. When using Mapbox APIs, the url is the `styleUrl`\n * shown in Mapbox Studio's \"share\" panel. In addition, the `accessToken` option\n * (see below) must be set.\n * When passed as JSON style object, all OpenLayers layers created by `apply()`\n * will be immediately available, but they may not have a source yet (i.e. when\n * they are defined by a TileJSON url in the Mapbox/MapLibre Style document). When passed\n * as style url, layers will be added to the map when the Mapbox/MapLibre Style document\n * is loaded and parsed.\n * @param {Options} options Options.\n * @return {Promise<Map|LayerGroup>} A promise that resolves after all layers have been added to\n * the OpenLayers Map instance or LayerGroup, their sources set, and their styles applied. The\n * `resolve` callback will be called with the OpenLayers Map instance or LayerGroup as\n * argument.\n */\nfunction apply(mapOrGroupOrElement, style, options = {}) {\n    let promise;\n    /** @type {Map|LayerGroup} */\n    let mapOrGroup;\n    if (typeof mapOrGroupOrElement === 'string' || mapOrGroupOrElement instanceof HTMLElement) {\n        mapOrGroup = new Map({ target: mapOrGroupOrElement });\n    } else {\n        mapOrGroup = mapOrGroupOrElement;\n    }\n    if (typeof style === 'string') {\n        const styleUrl = style.startsWith('data:') ? location.href : normalizeStyleUrl(style, options.accessToken);\n        options = completeOptions(styleUrl, options);\n        promise = new Promise(function (resolve, reject) {\n            getGlStyle(style, options).then(function (glStyle) {\n                processStyle(glStyle, mapOrGroup, styleUrl, options).then(function () {\n                    resolve(mapOrGroup);\n                }).catch(reject);\n            }).catch(function (err) {\n                reject(new Error(`Could not load ${ style }: ${ err.message }`));\n            });\n        });\n    } else {\n        promise = new Promise(function (resolve, reject) {\n            processStyle(style, mapOrGroup, !options.styleUrl || options.styleUrl.startsWith('data:') ? location.href : normalizeStyleUrl(options.styleUrl, options.accessToken), options).then(function () {\n                resolve(mapOrGroup);\n            }).catch(reject);\n        });\n    }\n    return promise;\n}\n/**\n * If layerIds is not empty, applies the style specified in glStyle to the layer,\n * and adds the layer to the map.\n *\n * The layer may not yet have a source when the function is called.  If so, the style\n * is applied to the layer via a once listener on the 'change:source' event.\n *\n * @param {Layer} layer An OpenLayers layer instance.\n * @param {Array<string>} layerIds Array containing layer ids of already-processed layers.\n * @param {Object} glStyle Style as a JSON object.\n * @param {string|undefined} styleUrl The original style URL. Only required\n * when a relative path is used with the `\"sprite\"` property of the style.\n * @param {Map|LayerGroup} mapOrGroup OpenLayers Map.\n * @param {Options} options Options.\n * @return {Promise} Returns a promise that resolves after the source has\n * been set on the specified layer, and the style has been applied.\n */\nfunction finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options = {}) {\n    let minZoom = 24;\n    let maxZoom = 0;\n    const glLayers = glStyle.layers;\n    for (let i = 0, ii = glLayers.length; i < ii; ++i) {\n        const glLayer = glLayers[i];\n        if (layerIds.indexOf(glLayer.id) !== -1) {\n            minZoom = Math.min('minzoom' in glLayer ? glLayer.minzoom : 0, minZoom);\n            maxZoom = Math.max('maxzoom' in glLayer ? glLayer.maxzoom : 24, maxZoom);\n        }\n    }\n    return new Promise(function (resolve, reject) {\n        const setStyle = function () {\n            const source = layer.getSource();\n            if (!source || source.getState() === 'error') {\n                reject(new Error('Error accessing data for source ' + layer.get('mapbox-source')));\n                return;\n            }\n            if ('getTileGrid' in source) {\n                const tileGrid = /** @type {import(\"ol/source/Tile.js\").default|import(\"ol/source/VectorTile.js\").default} */\n                source.getTileGrid();\n                if (tileGrid) {\n                    const sourceMinZoom = tileGrid.getMinZoom();\n                    if (minZoom > 0 || sourceMinZoom > 0) {\n                        layer.setMaxResolution(Math.min(getResolutionForZoom(Math.max(0, minZoom - 1e-12), defaultResolutions), getResolutionForZoom(Math.max(0, sourceMinZoom - 1e-12), tileGrid.getResolutions())));\n                    }\n                    if (maxZoom < 24) {\n                        layer.setMinResolution(getResolutionForZoom(maxZoom, defaultResolutions));\n                    }\n                }\n            } else {\n                if (minZoom > 0) {\n                    layer.setMaxResolution(getResolutionForZoom(Math.max(0, minZoom - 1e-12), defaultResolutions));\n                }\n            }\n            if (source instanceof VectorSource || source instanceof VectorTileSource) {\n                applyStyle(layer, glStyle, layerIds, Object.assign({ styleUrl: styleUrl }, options)).then(function () {\n                    manageVisibility(layer, mapOrGroup);\n                    resolve();\n                }).catch(reject);\n            } else {\n                resolve();\n            }\n        };\n        layer.set('mapbox-layers', layerIds);\n        const layers = mapOrGroup.getLayers();\n        if (layers.getArray().indexOf(layer) === -1) {\n            layers.push(layer);\n        }\n        if (layer.getSource()) {\n            setStyle();\n        } else {\n            layer.once('change:source', setStyle);\n        }\n    });\n}\n/**\n * Get the Mapbox Layer object for the provided `layerId`.\n * @param {Map|LayerGroup} mapOrGroup Map or LayerGroup.\n * @param {string} layerId Mapbox Layer id.\n * @return {Object} Mapbox Layer object.\n */\nfunction getMapboxLayer(mapOrGroup, layerId) {\n    const style = mapOrGroup.get('mapbox-style');\n    const layerStyle = style.layers.find(function (layer) {\n        return layer.id === layerId;\n    });\n    return layerStyle;\n}\n/**\n * Add a new Mapbox Layer object to the style. The map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {Object} mapboxLayer Mapbox Layer object.\n * @param {string} [beforeLayerId] Optional id of the Mapbox Layer before the new layer that will be added.\n * @return {Promise<void>} Resolves when the added layer is available.\n */\nfunction addMapboxLayer(mapOrGroup, mapboxLayer, beforeLayerId) {\n    const glStyle = mapOrGroup.get('mapbox-style');\n    const mapboxLayers = glStyle.layers;\n    let spliceIndex;\n    let sourceIndex = -1;\n    if (beforeLayerId !== undefined) {\n        const beforeMapboxLayer = getMapboxLayer(mapOrGroup, beforeLayerId);\n        if (beforeMapboxLayer === undefined) {\n            throw new Error(`Layer with id \"${ beforeLayerId }\" not found.`);\n        }\n        spliceIndex = mapboxLayers.indexOf(beforeMapboxLayer);\n    } else {\n        spliceIndex = mapboxLayers.length;\n    }\n    let sourceOffset;\n    if (spliceIndex > 0 && mapboxLayers[spliceIndex - 1].source === mapboxLayer.source) {\n        sourceIndex = spliceIndex - 1;\n        sourceOffset = -1;\n    } else if (spliceIndex < mapboxLayers.length && mapboxLayers[spliceIndex].source === mapboxLayer.source) {\n        sourceIndex = spliceIndex;\n        sourceOffset = 0;\n    }\n    if (sourceIndex === -1) {\n        const {options, styleUrl} = mapOrGroup.get('mapbox-metadata');\n        const layer = setupLayer(glStyle, styleUrl, mapboxLayer, options);\n        if (beforeLayerId) {\n            const beforeLayer = getLayer(mapOrGroup, beforeLayerId);\n            const beforeLayerIndex = mapOrGroup.getLayers().getArray().indexOf(beforeLayer);\n            mapOrGroup.getLayers().insertAt(beforeLayerIndex, layer);\n        }\n        mapboxLayers.splice(spliceIndex, 0, mapboxLayer);\n        return finalizeLayer(layer, [mapboxLayer.id], glStyle, styleUrl, mapOrGroup, options);\n    }\n    if (mapboxLayers.some(layer => layer.id === mapboxLayer.id)) {\n        throw new Error(`Layer with id \"${ mapboxLayer.id }\" already exists.`);\n    }\n    const sourceLayerId = mapboxLayers[sourceIndex].id;\n    const args = styleFunctionArgs[getStyleFunctionKey(mapOrGroup.get('mapbox-style'), getLayer(mapOrGroup, sourceLayerId))];\n    mapboxLayers.splice(spliceIndex, 0, mapboxLayer);\n    if (args) {\n        const [olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage] = args;\n        if (Array.isArray(sourceOrLayers)) {\n            const layerIndex = sourceOrLayers.indexOf(sourceLayerId) + sourceOffset;\n            sourceOrLayers.splice(layerIndex, 0, mapboxLayer.id);\n        }\n        stylefunction(olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage);\n    } else {\n        getLayer(mapOrGroup, mapboxLayers[sourceIndex].id).changed();\n    }\n    return Promise.resolve();\n}\n/**\n * Update a Mapbox Layer object in the style. The map will be re-rendered with the new style.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {Object} mapboxLayer Updated Mapbox Layer object.\n */\nfunction updateMapboxLayer(mapOrGroup, mapboxLayer) {\n    const glStyle = mapOrGroup.get('mapbox-style');\n    const mapboxLayers = glStyle.layers;\n    const index = mapboxLayers.findIndex(function (layer) {\n        return layer.id === mapboxLayer.id;\n    });\n    if (index === -1) {\n        throw new Error(`Layer with id \"${ mapboxLayer.id }\" not found.`);\n    }\n    const oldLayer = mapboxLayers[index];\n    if (oldLayer.source !== mapboxLayer.source) {\n        throw new Error('Updated layer and previous version must use the same source.');\n    }\n    delete getFunctionCache(glStyle)[mapboxLayer.id];\n    delete getFilterCache(glStyle)[mapboxLayer.id];\n    mapboxLayers[index] = mapboxLayer;\n    const args = styleFunctionArgs[getStyleFunctionKey(mapOrGroup.get('mapbox-style'), getLayer(mapOrGroup, mapboxLayer.id))];\n    if (args) {\n        stylefunction.apply(undefined, args);\n    } else {\n        getLayer(mapOrGroup, mapboxLayer.id).changed();\n    }\n}\n/**\n * Updates a Mapbox source object in the style. The according OpenLayers source will be replaced\n * and the map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {string} id Key of the source in the `sources` object literal.\n * @param {Object} mapboxSource Mapbox source object.\n * @return {Promise<Source>} Promise that resolves when the source has been updated.\n */\nfunction updateMapboxSource(mapOrGroup, id, mapboxSource) {\n    const currentSource = getSource(mapOrGroup, id);\n    const layers = mapOrGroup.getLayers().getArray().filter(function (layer) {\n        return (layer instanceof VectorLayer || layer instanceof TileLayer || layer instanceof VectorTileLayer) && layer.getSource() === currentSource;\n    });\n    const metadata = mapOrGroup.get('mapbox-metadata');\n    let newSourcePromise;\n    switch (mapboxSource.type) {\n    case 'vector':\n        newSourcePromise = setupVectorSource(mapboxSource, metadata.styleUrl, metadata.options);\n        break;\n    case 'geojson':\n        newSourcePromise = Promise.resolve(setupGeoJSONSource(mapboxSource, metadata.styleUrl, metadata.options));\n        break;\n    case 'raster':\n    case 'raster-dem':\n        newSourcePromise = setupRasterSource(mapboxSource, metadata.styleUrl, metadata.options);\n        break;\n    default:\n        return Promise.reject(new Error('Unsupported source type ' + mapboxSource.type));\n    }\n    newSourcePromise.then(function (newSource) {\n        layers.forEach(function (layer) {\n            layer.setSource(newSource);\n        });\n    });\n    return newSourcePromise;\n}\n/**\n * Remove a Mapbox Layer object from the style. The map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {string|Object} mapboxLayerIdOrLayer Mapbox Layer id or Mapbox Layer object.\n */\nfunction removeMapboxLayer(mapOrGroup, mapboxLayerIdOrLayer) {\n    const mapboxLayerId = typeof mapboxLayerIdOrLayer === 'string' ? mapboxLayerIdOrLayer : mapboxLayerIdOrLayer.id;\n    const layer = getLayer(mapOrGroup, mapboxLayerId);\n    /** @type {Array<Object>} */\n    const layerMapboxLayers = layer.get('mapbox-layers');\n    if (layerMapboxLayers.length === 1) {\n        throw new Error('Cannot remove last Mapbox layer from an OpenLayers layer.');\n    }\n    layerMapboxLayers.splice(layerMapboxLayers.indexOf(mapboxLayerId), 1);\n    const glStyle = mapOrGroup.get('mapbox-style');\n    const layers = glStyle.layers;\n    layers.splice(layers.findIndex(layer => layer.id === mapboxLayerId), 1);\n    const args = styleFunctionArgs[getStyleFunctionKey(glStyle, layer)];\n    if (args) {\n        const [olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage] = args;\n        if (Array.isArray(sourceOrLayers)) {\n            sourceOrLayers.splice(sourceOrLayers.findIndex(layer => layer === mapboxLayerId), 1);\n        }\n        stylefunction(olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage);\n    } else {\n        getLayer(mapOrGroup, mapboxLayerId).changed();\n    }\n}\n/**\n * Get the OpenLayers layer instance that contains the provided Mapbox/MapLibre Style\n * `layer`. Note that multiple Mapbox/MapLibre Style layers are combined in a single\n * OpenLayers layer instance when they use the same Mapbox/MapLibre Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} layerId Mapbox/MapLibre Style layer id.\n * @return {Layer} OpenLayers layer instance.\n */\nfunction getLayer(map, layerId) {\n    const layers = map.getLayers().getArray();\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n        const mapboxLayers = layers[i].get('mapbox-layers');\n        if (mapboxLayers && mapboxLayers.indexOf(layerId) !== -1) {\n            return layers[i];\n        }\n    }\n    return undefined;\n}\n/**\n * Get the OpenLayers layer instances for the provided Mapbox/MapLibre Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} sourceId Mapbox/MapLibre Style source id.\n * @return {Array<Layer>} OpenLayers layer instances.\n */\nfunction getLayers(map, sourceId) {\n    const result = [];\n    const layers = map.getLayers().getArray();\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n        if (layers[i].get('mapbox-source') === sourceId) {\n            result.push(layers[i]);\n        }\n    }\n    return result;\n}\n/**\n * Get the OpenLayers source instance for the provided Mapbox/MapLibre Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} sourceId Mapbox/MapLibre Style source id.\n * @return {Source} OpenLayers source instance.\n */\nfunction getSource(map, sourceId) {\n    const layers = map.getLayers().getArray();\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n        const source = /** @type {Layer} */\n        layers[i].getSource();\n        if (layers[i].get('mapbox-source') === sourceId) {\n            return source;\n        }\n    }\n    return undefined;\n}\n/**\n * Sets or removes a feature state. The feature state is taken into account for styling,\n * just like the feature's properties, and can be used e.g. to conditionally render selected\n * features differently.\n *\n * The feature state will be stored on the OpenLayers layer matching the feature identifier, in the\n * `mapbox-featurestate` property.\n * @param {Map|VectorLayer|VectorTileLayer} mapOrLayer OpenLayers Map or layer to set the feature\n * state on.\n * @param {FeatureIdentifier} feature Feature identifier.\n * @param {Object|null} state Feature state. Set to `null` to remove the feature state.\n */\nfunction setFeatureState(mapOrLayer, feature, state) {\n    const layers = 'getLayers' in mapOrLayer ? getLayers(mapOrLayer, feature.source) : [mapOrLayer];\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n        const featureState = layers[i].get('mapbox-featurestate');\n        if (featureState) {\n            if (state) {\n                featureState[feature.id] = state;\n            } else {\n                delete featureState[feature.id];\n            }\n            layers[i].changed();\n        } else {\n            throw new Error(`Map or layer for source \"${ feature.source }\" not found.`);\n        }\n    }\n}\n/**\n * Sets or removes a feature state. The feature state is taken into account for styling,\n * just like the feature's properties, and can be used e.g. to conditionally render selected\n * features differently.\n * @param {Map|VectorLayer|VectorTileLayer} mapOrLayer Map or layer to set the feature state on.\n * @param {FeatureIdentifier} feature Feature identifier.\n * @return {Object|null} Feature state or `null` when no feature state is set for the given\n * feature identifier.\n */\nfunction getFeatureState(mapOrLayer, feature) {\n    const layers = 'getLayers' in mapOrLayer ? getLayers(mapOrLayer, feature.source) : [mapOrLayer];\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n        const featureState = layers[i].get('mapbox-featurestate');\n        if (featureState && featureState[feature.id]) {\n            return featureState[feature.id];\n        }\n    }\n    return undefined;\n}\n\n/** @typedef {import(\"ol/Map.js\").default} Map */\n/**\n * @classdesc\n * Event emitted on configuration or loading error.\n */\nclass ErrorEvent extends BaseEvent {\n    /**\n   * @param {Error} error error object.\n   */\n    constructor(error) {\n        super(EventType.ERROR);\n        /**\n     * @type {Error}\n     */\n        this.error = error;\n    }\n}\n/**\n * @typedef {Object} Options\n * @property {string} styleUrl The URL of the Mapbox/MapLibre Style object to use for this layer.  For a\n * style created with Mapbox Studio and hosted on Mapbox, this will look like\n * 'mapbox://styles/you/your-style'.\n * @property {string} [accessToken] The access token for your Mapbox/MapLibre style. This has to be provided\n * for `mapbox://` style urls. For `https://` and other urls, any access key must be the last query\n * parameter of the style url.\n * @property {string} [source] If your style uses more than one source, you need to use either the\n * `source` property or the `layers` property to limit rendering to a single vector source.  The\n * `source` property corresponds to the id of a vector source in your Mapbox/MapLibre style.\n * @property {Array<string>} [layers] Limit rendering to the list of included layers.  All layers\n * must share the same vector source.  If your style uses more than one source, you need to use\n * either the `source` property or the `layers` property to limit rendering to a single vector\n * source.\n * @property {boolean} [declutter=true] Declutter images and text. Decluttering is applied to all\n * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priority\n * is defined by the z-index of the layer, the `zIndex` of the style and the render order of features.\n * Higher z-index means higher priority. Within the same z-index, a feature rendered before another has\n * higher priority.\n *\n * As an optimization decluttered features from layers with the same `className` are rendered above\n * the fill and stroke styles of all of those layers regardless of z-index.  To opt out of this\n * behavior and place declutterd features with their own layer configure the layer with a `className`\n * other than `ol-layer`.\n * @property {import(\"ol/layer/Base.js\").BackgroundColor|false} [background] Background color for the layer.\n * If not specified, the background from the Mapbox/MapLibre Style object will be used. Set to `false` to prevent\n * the Mapbox/MapLibre style's background from being used.\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(\"ol/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. If neither `maxResolution` nor `minZoom` are defined, the layer's `maxResolution` will\n * match the style source's `minzoom`.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will\n * be visible. If neither `maxResolution` nor `minZoom` are defined, the layer's `minZoom` will match\n * the style source's `minzoom`.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"ol/render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the tile extent used by the\n * renderer when getting features from the vector tile for the rendering or hit-detection.\n * Recommended value: Vector tiles are usually generated with a buffer, so this value should match\n * the largest possible buffer of the used tiles. It should be at least the size of the largest\n * point symbol or line width.\n * @property {import(\"ol/layer/VectorTile.js\").VectorTileRenderType} [renderMode='hybrid'] Render mode for vector tiles:\n *  * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom\n *    animations. Point symbols and texts are accurately rendered as vectors and can stay upright on\n *    rotated views.\n *  * `'vector'`: Everything is rendered as vectors. Use this mode for improved performance on vector\n *    tile layers with only a few rendered features (e.g. for highlighting a subset of features of\n *    another layer with the same source).\n * @property {import(\"ol/Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use `map.addLayer()`.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will be\n * recreated during animations. This means that no vectors will be shown clipped, but the setting\n * will have a performance impact for large amounts of vector data. When set to `false`, batches\n * will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will be\n * recreated during interactions. See also `updateWhileAnimating`.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @classdesc\n * ```js\n * import {MapboxVectorLayer} from 'ol-mapbox-style';\n * ```\n * A vector tile layer based on a Mapbox/MapLibre style that uses a single vector source.  Configure\n * the layer with the `styleUrl` and `accessToken` shown in Mapbox Studio's share panel.\n * If the style uses more than one source, use the `source` property to choose a single\n * vector source.  If you want to render a subset of the layers in the style, use the `layers`\n * property (all layers must share the same vector source).  See the constructor options for\n * more detail.\n *\n *     const map = new Map({\n *       view: new View({\n *         center: [0, 0],\n *         zoom: 1,\n *       }),\n *       layers: [\n *         new MapboxVectorLayer({\n *           styleUrl: 'mapbox://styles/mapbox/bright-v9',\n *           accessToken: 'your-mapbox-access-token-here',\n *         }),\n *       ],\n *       target: 'map',\n *     });\n *\n * On configuration or loading error, the layer will trigger an `'error'` event.  Listeners\n * will receive an object with an `error` property that can be used to diagnose the problem.\n *\n * **Note for users of the full build**: The `MapboxVectorLayer` requires the\n * [ol-mapbox-style](https://github.com/openlayers/ol-mapbox-style) library to be loaded as well.\n *\n * @param {Options} options Options.\n * @extends {VectorTileLayer<import(\"ol/source/VectorTile.js\").default>}\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nclass MapboxVectorLayer extends VectorTileLayer {\n    /**\n   * @param {Options} options Layer options.  At a minimum, `styleUrl` and `accessToken`\n   * must be provided.\n   */\n    constructor(options) {\n        const declutter = 'declutter' in options ? options.declutter : true;\n        const source = new VectorTileSource({\n            state: 'loading',\n            format: new MVT()\n        });\n        super({\n            source: source,\n            background: options.background === false ? null : options.background,\n            declutter: declutter,\n            className: options.className,\n            opacity: options.opacity,\n            visible: options.visible,\n            zIndex: options.zIndex,\n            minResolution: options.minResolution,\n            maxResolution: options.maxResolution,\n            minZoom: options.minZoom,\n            maxZoom: options.maxZoom,\n            renderOrder: options.renderOrder,\n            renderBuffer: options.renderBuffer,\n            renderMode: options.renderMode,\n            map: options.map,\n            updateWhileAnimating: options.updateWhileAnimating,\n            updateWhileInteracting: options.updateWhileInteracting,\n            preload: options.preload,\n            useInterimTilesOnError: options.useInterimTilesOnError,\n            properties: options.properties\n        });\n        if (options.accessToken) {\n            this.accessToken = options.accessToken;\n        }\n        const url = options.styleUrl;\n        const promises = [applyStyle(this, url, options.layers || options.source, { accessToken: this.accessToken })];\n        if (this.getBackground() === undefined) {\n            promises.push(applyBackground(this, options.styleUrl, { accessToken: this.accessToken }));\n        }\n        Promise.all(promises).then(() => {\n            source.setState('ready');\n        }).catch(error => {\n            this.dispatchEvent(new ErrorEvent(error));\n            const source = this.getSource();\n            source.setState('error');\n        });\n    }\n}\n\nexport { MapboxVectorLayer, addMapboxLayer, apply, applyBackground, applyStyle, apply as default, getFeatureState, getLayer, getLayers, getMapboxLayer, getSource, getStyleForLayer, recordStyleLayer, removeMapboxLayer, renderTransparent, setFeatureState, stylefunction, updateMapboxLayer, updateMapboxSource };\n//# sourceMappingURL=index.js.map\n","import MVT from \"ol/format/MVT\";\r\nimport VectorTileLayer from \"ol/layer/VectorTile\";\r\nimport VectorTileSource from \"ol/source/VectorTile\";\r\nimport OpenLayersTileGrid from \"ol/tilegrid/TileGrid\";\r\nimport {extentFromProjection} from \"ol/tilegrid\";\r\nimport * as webgl from \"../renderer/webgl\";\r\n\r\nimport {stylefunction, apply} from \"ol-mapbox-style\";\r\n\r\nimport defaults from \"../defaults\";\r\n\r\nconst OL_DEFAULT_VECTOR_TILE_GRID_CRS = \"EPSG:3857\";\r\n\r\n/**\r\n * Used properites of layer specification as in services.json.\r\n *\r\n * @typedef {Object} rawLayer\r\n * @property {string} id - Layer id\r\n * @property {string} name - Layer name\r\n * @property {string} url - source url\r\n * @property {string} [epsg=defaults.epsg] - vector tiles crs\r\n * @property {number[]} [extent] - extent\r\n * @property {number} [maxZoom=22] - min zoom level\r\n * @property {number} [minZoom] - max zoom level\r\n * @property {function} [olAttribution] - optional function that takes a module:ol/Map~FrameState and returns a string or an array of strings representing source attributions\r\n * @property {number[]} [origin] - The tile grid origin, i.e. where the x and y axes meet ([z, 0, 0]). Tile coordinates increase left to right and downwards\r\n * @property {number[][]} [origins] - Tile grid origins, i.e. where the x and y axes meet ([z, 0, 0]), for each zoom level. If given, the array length should match the length of the resolutions array, i.e. each resolution can have a different origin. Tile coordinates increase left to right and downwards. If not specified, extent or origin must be provided.\r\n * @property {number[]} [resolutions] - Resolutions. The array index of each resolution needs to match the zoom level. This means that even if a minZoom is configured, the resolutions array will have a length of maxZoom + 1.\r\n * @property {number} [tileSize=512] - size of a tile in px\r\n * @property {number} [zDirection=1] - zoom level offset for requested tiles\r\n */\r\n\r\n/**\r\n * Used properites of layer specification as in services.json.\r\n *\r\n * @typedef {Object} tileGridProperties\r\n * @property {string} [epsg] - vector tiles crs\r\n * @property {number} [tileSize=512] - size of a tile in px\r\n * @property {number} [zDirection=1] - zoom level offset for requested tiles\r\n * @property {number} [minZoom] - min zoom level\r\n * @property {number} [maxZoom=22] - may zoom level\r\n * @property {number[]} [extent] - extent\r\n * @property {number[]} [resolutions] - Resolutions. The array index of each resolution needs to match the zoom level. This means that even if a minZoom is configured, the resolutions array will have a length of maxZoom + 1.\r\n * @property {number[]} [origin] - The tile grid origin, i.e. where the x and y axes meet ([z, 0, 0]). Tile coordinates increase left to right and downwards\r\n * @property {number[][]} [origins] - Tile grid origins, i.e. where the x and y axes meet ([z, 0, 0]), for each zoom level. If given, the array length should match the length of the resolutions array, i.e. each resolution can have a different origin. Tile coordinates increase left to right and downwards. If not specified, extent or origin must be provided.\r\n */\r\n\r\n/**\r\n * Additional properties for style specification\r\n * @typedef {Object} styleParams\r\n * @property {string} [sourceId] - key from the Mapbox Style object. When a source key is provided, all layers for the specified source will be included in the style function.\r\n * @property {number[]} [resolutions] - Resolutions for mapping resolution to zoom level.\r\n * @property {object} [spriteData] - Sprite data from the url specified in the Mapbox Style object's sprite property. Only required if a sprite property is specified in the Mapbox Style object.\r\n * @property {string} [spriteImageUrl] - Url to sprite image\r\n * @property {function} [getFonts] - Function that receives a font stack as arguments, and returns a (modified) font stack that is available. Font names are the names used in the Mapbox Style object. If not provided, the font stack will be used as-is. This function can also be used for loading web fonts.\r\n */\r\n\r\n/**\r\n * Create a TileGrid.\r\n *\r\n * @param {tileGridProperties} [options] - options\r\n * @returns {ol.tilegrid.TileGrid} TileGrid\r\n */\r\nexport function createTileGrid (options = {}) {\r\n\r\n    const epsg = options.epsg ? options.epsg : defaults.epsg,\r\n        extent = options.extent ? options.extent : extentFromProjection(epsg),\r\n        tileSize = options.tileSize ? options.tileSize : 512,\r\n        resolutions = options.resolutions ? options.resolutions : defaults.options.map(x => x.resolution),\r\n        tileGridParams = {\r\n            extent: extent,\r\n            resolutions: resolutions,\r\n            minZoom: options.minZoom,\r\n            tileSize: new Array(2).fill(tileSize)\r\n        };\r\n\r\n    if (options.origins) {\r\n        tileGridParams.origins = options.origins;\r\n    }\r\n    else {\r\n        tileGridParams.origin = options.origin ? options.origin : [tileGridParams.extent[0], tileGridParams.extent[3]];\r\n    }\r\n\r\n    return new OpenLayersTileGrid(tileGridParams);\r\n}\r\n\r\n/**\r\n * Check if TileGrid must be created.\r\n *\r\n * @param {tileGridProperties} options - tile grid parameters\r\n * @returns {boolean} must create tileGrid\r\n */\r\nfunction mustCreateTileGrid (options = {}) {\r\n    const createOptions = [options.extent, options.tileSize, options.resolutions, options.origin, options.origins, options.minZoom],\r\n        epsgTest = options.epsg ? options.epsg.toUpperCase() : options.epsg;\r\n\r\n    if (!createOptions.every((x) => typeof x === \"undefined\")) {\r\n        return true;\r\n    }\r\n\r\n    if (epsgTest !== OL_DEFAULT_VECTOR_TILE_GRID_CRS) {\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Creates a Vector Tiles source.\r\n *\r\n * @param {string} url - url to vector tile service\r\n * @param {tileGridProperties} [options] - properties for tileGrid\r\n * @param {\"default\" | \"webgl\" | undefined} [options.renderer] - use default canvas or webgl renderer\r\n * @param {string} [options.styleId] - the styleId of the layer, only necessary for webgl style pipeline\r\n * @param {string[]} [options.excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl\r\n * @returns {ol.source.VectorTile} Source\r\n */\r\nexport function createLayerSource (url, options = {}) {\r\n    options.epsg = options.epsg ? options.epsg : defaults.epsg;\r\n    const sourceParams = {\r\n        projection: options.epsg,\r\n        format: new MVT(),\r\n        url: url,\r\n        tileSize: options.tileSize,\r\n        zDirection: options.zDirection,\r\n        minZoom: options.minZoom,\r\n        maxZoom: options.maxZoom\r\n    };\r\n\r\n    if (mustCreateTileGrid(options)) {\r\n        sourceParams.tileGrid = createTileGrid(options);\r\n    }\r\n    return new VectorTileSource(sourceParams);\r\n}\r\n\r\n/**\r\n * Creates a Vector Tiles layer.\r\n *\r\n * @param {rawLayer} rawLayer - rawLayer as specified in services.json\r\n * @param {object} [layerParams={}] - extra params of the layer. Can overwrite or extend all ol layer parameters.\r\n * @param {object} [options={}] - parameter object. Not used atm.\r\n * @returns {ol.layer.VectorTile} Layer with id and source specified in rawLayer\r\n */\r\nexport function createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {}) {\r\n    if ([rawLayer.id, rawLayer.name, rawLayer.url].some((x) => typeof x === \"undefined\")) {\r\n        console.error(`Cancelled creation of layer \"${rawLayer.id}\"(${rawLayer.name}) because of missing required parameters`);\r\n        return undefined;\r\n    }\r\n    let layer, source;\r\n\r\n    // use WebGL render pipeline, if specified\r\n    if (layerParams.renderer === \"webgl\") {\r\n        source = createLayerSource(rawLayer.url, {\r\n            ...rawLayer,\r\n            renderer: layerParams.renderer,\r\n            styleId: layerParams.styleId,\r\n            excludeTypesFromParsing: layerParams.excludeTypesFromParsing\r\n        });\r\n\r\n        layer = webgl.createLayer({\r\n            extent: source.getTileGrid().getExtent(),\r\n            ...rawLayer,\r\n            ...layerParams,\r\n            source\r\n        });\r\n\r\n        return layer;\r\n    }\r\n\r\n    // use default canvas renderer\r\n    source = createLayerSource(rawLayer.url, rawLayer);\r\n    layer = new VectorTileLayer(Object.assign({\r\n        id: rawLayer.id, name: rawLayer.name, attribution: rawLayer.olAttribution, extent: source.getTileGrid().getExtent(),\r\n        minZoom: rawLayer.minZoom, maxZoom: rawLayer.maxZoom, source: source,\r\n        declutter: true}, layerParams));\r\n\r\n    if (options.style && rawLayer.renderer !== \"webgl\") {\r\n        layer.setStyle(options.style);\r\n    }\r\n\r\n    return layer;\r\n}\r\n\r\n/**\r\n * Set a mapbox style\r\n * @param {ol.layer.VectorTile} layer - layer to style\r\n * @param {object} glStyle - MapBox style definition\r\n * @param {options} [styleParams={}] - Additional options for style specification\r\n * @param {string} url - MapBox style url\r\n * @returns {void}\r\n */\r\nexport function setStyle (layer, glStyle, {options = {}} = {}, url) {\r\n    Object.keys(glStyle.sources).forEach((key) => {\r\n        const glStyleSourceId = key;\r\n\r\n        if (glStyle.sources[key].type !== \"vector\" && glStyle.sources[key].type !== \"geojson\") {\r\n            const olMap = layer.get(\"map\");\r\n\r\n            apply(olMap, url);\r\n        }\r\n        else {\r\n            stylefunction(layer, glStyle,\r\n                options.sourceId ? options.sourceId : glStyleSourceId,\r\n                options.resolutions,\r\n                options.spriteData,\r\n                options.spriteImageUrl,\r\n                options.getFonts);\r\n        }\r\n    });\r\n}\r\n","import VectorLayer from \"ol/layer/Vector.js\";\r\nimport {bbox} from \"ol/loadingstrategy.js\";\r\nimport GeoJSON from \"ol/format/GeoJSON.js\";\r\nimport {createVectorSource, createClusterVectorSource} from \"./vector\";\r\nimport {onError, onLoad} from \"../lib/wfsUtil\";\r\nimport * as webgl from \"../renderer/webgl\";\r\n\r\n/**\r\n * Layer specification as in services.json.\r\n * @typedef {Object} rawLayer\r\n * @property {string} id - id of the layer\r\n * @property {string} url - url to load features from\r\n * @property {string} collection - name of the oaf collection\r\n * @property {number} clusterDistance - pixel radius, within this radius, all features are \"clustered\" into one feature - if available, a cluster source is created.\r\n * @property {function} style - style function to style the layer if options.style is not set\r\n */\r\n\r\n/**\r\n * Additional options used to create and load the layer source.\r\n * @typedef {Object} options\r\n * @property {module:ol.source.Vector~LoadingStrategy} loadingStrategy - the loading strategy to use, if not set 'bbox' is used\r\n * @property {function} onLoadingError - function called on loading error, gets parameter error\r\n * @property {function} beforeLoading - function called before loading\r\n * @property {function} afterLoading - function called after loading, gets parameter features\r\n * @property {function} featuresFilter - function called after loading to filter features, gets parameter features\r\n * @property {function} clusterGeometryFunction -  used in cluster source. Returns the geometry of the cluster, gets parameter feature\r\n * @property {function} style - style function to style the layer\r\n * @property {object} loadingParams - added as params to url\r\n */\r\n\r\n/**\r\n * Returns the 'onError' function if response is not ok\r\n * @param {object} response of the request\r\n * @param {function} onErrorFn Calls options.onLoadingError and 'featuresloaderror' event will be fired by using failure callback.\r\n * @param {options} [options] additional options\r\n * @param {function} failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n * @returns {void}\r\n */\r\nfunction handleErrors (response, onErrorFn, options, failure) {\r\n    if (!response.ok) {\r\n        return onErrorFn(`Request to wfs-filter failed. Response status is ${response.statusText}`, options, failure);\r\n    }\r\n    return response;\r\n}\r\n\r\n\r\n/**\r\n* Parses the given feature collection for the next nextLink.\r\n* @param {Object} featureCollection the feature collection\r\n* @returns {String|Boolean} the next link or false if no next link exists\r\n*/\r\nfunction getNextLinkFromFeatureCollection (featureCollection) {\r\n    if (typeof featureCollection !== \"object\" || featureCollection === null || !Array.isArray(featureCollection.links)) {\r\n        return false;\r\n    }\r\n    for (let i = 0; i < featureCollection.links.length; i++) {\r\n        if (\r\n            typeof featureCollection.links[i] === \"object\" && featureCollection.links[i] !== null\r\n            && typeof featureCollection.links[i].href === \"string\"\r\n            && featureCollection.links[i].rel === \"next\"\r\n            && featureCollection.links[i].type === \"application/geo+json\"\r\n        ) {\r\n            return featureCollection.links[i].href;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\n/**\r\n * Loads the Layer Source (Geojson).\r\n * Iterates over all collection pages and collect it.\r\n * Filters the features after load, if options.featuresFilter is given.\r\n * Adds the features to the source.\r\n * @param {string} url url to load features from\r\n * @param {ol.source.VectorSource} source the vector source\r\n * @param {object} errorAndSuccessFns functions to handle error and success\r\n * @param {function} errorAndSuccessFns.onErrorFn  Calls options.onLoadingError and 'featuresloaderror' event will be fired by using failure callback.\r\n * @param {function} errorAndSuccessFns.success  callback: 'featuresloadend' event will be fired\r\n * @param {function} errorAndSuccessFns.failure failure callback to ol.VectorLayer, fires 'featuresloaderror' event\r\n * @param {options} [options] optional additional options\r\n * @param {Object[]} collectedFeatures the features from previous calls\r\n * @returns {void}\r\n */\r\nfunction loadSource (url, source, {onErrorFn, success, failure}, options, collectedFeatures = []) {\r\n    const params = {\r\n        headers: {\r\n            Accept: \"application/geo+json\"\r\n        },\r\n        method: \"GET\"\r\n    };\r\n\r\n    fetch(url, params)\r\n        .then((response) => handleErrors(response, onErrorFn, options, failure))\r\n        .then((response) => response.json())\r\n        .then(responseJson => {\r\n            const nextLink = getNextLinkFromFeatureCollection(responseJson);\r\n\r\n            responseJson.features.forEach(feature => collectedFeatures.push(feature));\r\n            if (typeof nextLink === \"string\") {\r\n                loadSource(nextLink, source, {onErrorFn: onError, success, failure}, options, collectedFeatures);\r\n                return;\r\n            }\r\n            responseJson.features = collectedFeatures;\r\n            responseJson.numberReturned = responseJson.numberMatched;\r\n            onLoad(source, source.getFormat().readFeatures(responseJson), onErrorFn, success, failure, options);\r\n        })\r\n        .catch((error) => {\r\n            onErrorFn(error, options, failure);\r\n        });\r\n}\r\n\r\n/**\r\n * Creates the url for OAF request.\r\n * @param {rawLayer} rawLayer layer specification as in services.json\r\n * @param {object} loadingParams added as params to url\r\n * @param {number[]} [extent] the current viewport extent\r\n * @returns {string} the url\r\n */\r\nexport function createUrl (rawLayer, loadingParams) {\r\n    const bboxParam = loadingParams?.bbox || rawLayer.bbox,\r\n        rawUrl = rawLayer.url;\r\n    let bboxValue = typeof bboxParam === \"string\" && bboxParam.length ? bboxParam : null,\r\n        url = null;\r\n\r\n    url = new URL(rawUrl);\r\n    if (typeof rawLayer.collection === \"string\") {\r\n        if (!url.pathname.endsWith(\"/\")) {\r\n            url.pathname += \"/collections/\" + rawLayer.collection + \"/items\";\r\n        }\r\n        else {\r\n            url.pathname += \"collections/\" + rawLayer.collection + \"/items\";\r\n        }\r\n\r\n    }\r\n\r\n    if (typeof rawLayer.limit === \"number\") {\r\n        url.searchParams.set(\"limit\", rawLayer.limit);\r\n    }\r\n    if (Array.isArray(bboxParam) && bboxParam.length === 4) {\r\n        bboxValue = bboxParam.join(\",\");\r\n    }\r\n    if (bboxValue) {\r\n        url.searchParams.set(\"bbox\", bboxParam);\r\n        if (typeof rawLayer.bboxCrs === \"string\" && rawLayer.bboxCrs !== \"\") {\r\n            url.searchParams.set(\"bbox-crs\", rawLayer.bboxCrs);\r\n        }\r\n    }\r\n    if (typeof rawLayer.crs === \"string\") {\r\n        url.searchParams.set(\"crs\", rawLayer.crs);\r\n    }\r\n    if (typeof rawLayer.datetime === \"string\" && rawLayer.datetime !== \"\") {\r\n        url.searchParams.set(\"datetime\", rawLayer.datetime);\r\n    }\r\n    if (typeof rawLayer.params === \"object\" && Object.keys(rawLayer.params).length) {\r\n        Object.entries(rawLayer.params).forEach(([key, value]) => {\r\n            url.searchParams.set(key, value);\r\n        });\r\n    }\r\n\r\n    return url;\r\n}\r\n\r\n/**\r\n * Creates an ol/source element for the rawLayer by using a loader.\r\n * The 'featuresloadend' and 'featuresloaderror' events will be fired by using success and failure callbacks of the loader.\r\n * @param {rawLayer} rawLayer layer specification as in services.json\r\n * @param {options} [options] additional options\r\n * {@link https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html failure/success see}\r\n * @returns {(ol.source.VectorSource|ol.source.Cluster)} VectorSource or Cluster, depending on whether clusterDistance is set.\r\n */\r\nfunction getLayerSource (rawLayer, options) {\r\n    const format = new GeoJSON();\r\n    let source = null;\r\n\r\n    function loader (extent, _, __, success, failure) {\r\n        const bboxParam = options.loadingStrategy === bbox ? extent : options.loadingParams.bbox,\r\n            url = createUrl(rawLayer, {\r\n                ...options.loadingParams,\r\n                bbox: bboxParam\r\n            });\r\n\r\n        loadSource(url, source, {onErrorFn: onError, success, failure}, options);\r\n    }\r\n    source = createVectorSource(loader, options.loadingStrategy, format);\r\n\r\n    if (options.beforeLoading) {\r\n        source.once(\"featuresloadstart\", () => options.beforeLoading());\r\n    }\r\n\r\n    if (rawLayer.clusterDistance) {\r\n        return createClusterVectorSource(source, rawLayer.clusterDistance, options.clusterGeometryFunction);\r\n    }\r\n    return source;\r\n}\r\n\r\n/**\r\n * Creates an ol/source element for the rawLayer by OAF (XML or Geojson)\r\n * @param {rawLayer} rawLayer layer specification as in services.json\r\n * @param {\"default\" | \"webgl\" | undefined} [rawLayer.renderer] - use default canvas or webgl renderer\r\n * @param {string} [rawLayer.styleId] - the styleId of the layer, only necessary for webgl style pipeline\r\n * @param {string[]} [rawLayer.excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl\r\n * @param {options} [options] additional options\r\n * {@link https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html failure/success see}\r\n * @returns {(ol.source.VectorSource|ol.source.Cluster)} VectorSource or Cluster, depending on whether clusterDistance is set.\r\n */\r\nfunction createLayerSource (rawLayer, options = {}) {\r\n    if (!options.loadingStrategy) {\r\n        options.loadingStrategy = bbox;\r\n    }\r\n    const source = getLayerSource(rawLayer, options);\r\n\r\n    if (rawLayer.renderer === \"webgl\") {\r\n        source.once(\"featuresloadend\", event => {\r\n            webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing, rawLayer.isPointLayer);\r\n        });\r\n    }\r\n\r\n    return source;\r\n}\r\n\r\n/**\r\n * Creates complete ol/Layer from rawLayer containing all required children.\r\n * @param {rawLayer} rawLayer - layer specification as in services.json\r\n * @param {object} [optionalParams] - optional params\r\n * @param {object} [optionalParams.layerParams] - additional layer params\r\n * @param {options} [optionalParams.options] - additional options\r\n * @returns {ol.Layer} Layer that can be added to map.\r\n */\r\nfunction createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {}) {\r\n    let layer, source;\r\n\r\n    // use WebGL render pipeline, if specified\r\n    if (layerParams.renderer === \"webgl\") {\r\n        source = createLayerSource({\r\n            ...rawLayer,\r\n            renderer: layerParams.renderer,\r\n            styleId: layerParams.styleId,\r\n            excludeTypesFromParsing: layerParams.excludeTypesFromParsing,\r\n            isPointLayer: layerParams.isPointLayer\r\n        }, options);\r\n        layer = webgl.createLayer({\r\n            ...rawLayer,\r\n            ...layerParams,\r\n            source\r\n        });\r\n\r\n        return layer;\r\n    }\r\n\r\n    // use default canvas renderer\r\n    source = createLayerSource(rawLayer, options);\r\n    layer = new VectorLayer(Object.assign({\r\n        source,\r\n        id: rawLayer.id\r\n    }, layerParams));\r\n\r\n    if (options.style) {\r\n        layer.setStyle(options.style);\r\n    }\r\n    else if (rawLayer.style) {\r\n        layer.setStyle(rawLayer.style);\r\n    }\r\n    return layer;\r\n}\r\n\r\n/**\r\n * Load the features manually.\r\n * @param {Object} layerAttributes raw layer attributes.\r\n * @param {module:ol/vector/Source} layerSource - the source of the layer\r\n * @returns {void}\r\n */\r\nfunction loadFeaturesManually (layerAttributes, layerSource) {\r\n    const getUrl = createUrl(layerAttributes, layerAttributes.version, {getCode: () => layerAttributes.crs}, \"\");\r\n\r\n    fetch(getUrl, layerSource)\r\n        .then(response => {\r\n            return response.text();\r\n        })\r\n        .then(responseString => {\r\n            layerSource.addFeatures(layerSource.getFormat().readFeatures(responseString));\r\n        })\r\n        .catch(error => {\r\n            console.error(error);\r\n        });\r\n}\r\n\r\nexport default {createLayer, createLayerSource, createUrl, loadFeaturesManually};\r\n","/**\r\n * Creates a terrain provider with the cesiumTerrainProviderOptions, if not exists.\r\n * @param {Object} rawLayer  attributes of the layer\r\n * @param {string} [rawLayer.url] - the URL of the Cesium terrain server\r\n * @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html\r\n * @returns {void}\r\n */\r\nasync function createTerrainProvider (rawLayer) {\r\n    const options = {};\r\n    let terrainProvider = \"\";\r\n\r\n    if (rawLayer.cesiumTerrainProviderOptions) {\r\n        Object.assign(options, rawLayer.cesiumTerrainProviderOptions);\r\n    }\r\n    terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(rawLayer.url, options);\r\n\r\n    return terrainProvider;\r\n}\r\n\r\n/**\r\n * Sets the layers visibility by setting the terrain provider at Cesium scene.\r\n * @param {boolean} value  if true, terrainProvider is set to map and terrain will be visible\r\n * @param {Object} rawLayer  attributes of the layer\r\n * @param {string} [rawLayer.url] - the URL of the Cesium terrain server\r\n * @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html\r\n * @param {OLCesium} map ol cesium map\r\n * @returns {void}\r\n */\r\nexport async function setVisible (value, rawLayer, map) {\r\n    if (map && typeof map.getCesiumScene === \"function\") {\r\n        if (value) {\r\n            map.getCesiumScene().terrainProvider = await createTerrainProvider(rawLayer);\r\n        }\r\n        else {\r\n            map.getCesiumScene().terrainProvider = new Cesium.EllipsoidTerrainProvider({});\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * Creates an terrain layer to use in ol-Cesium map.\r\n * @param {Object} rawLayer - layer specification as in services.json\r\n * @param {string} [rawLayer.id] - optional id of the layer, passed to help identification in services.json\r\n * @param {string} [rawLayer.url] - the URL of the Cesium terrain server\r\n * @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html\r\n * @returns {Object} layer\r\n */\r\nexport function createLayer (rawLayer) {\r\n    this.values = {\r\n        name: rawLayer.name,\r\n        id: rawLayer.id,\r\n        typ: rawLayer.typ\r\n    };\r\n    return this;\r\n}\r\n/**\r\n * Returns the value for the given key of the rawlayer.\r\n * @param {String} key to get the value for\r\n * @returns {*} the value to the key\r\n */\r\nexport function get (key) {\r\n    if (!this.values) {\r\n        return undefined;\r\n    }\r\n    return this.values[key];\r\n}\r\n","/**\r\n * Sets the layers visibility by setting the show attribute at the datasource.\r\n * @param {boolean} value  if true, the entity will be shown\r\n * @param {Object} rawLayer  attributes of the layer\r\n * @param {string} [rawLayer.id] the id of the layer\r\n * @param {OLCesium} map ol cesium map\r\n * @returns {void}\r\n */\r\nexport function setVisible (value, rawLayer, map) {\r\n    if (map && typeof map.getDataSources === \"function\") {\r\n        const dataSources = map.getDataSources(),\r\n            dataSource = dataSources.getByName(rawLayer?.id);\r\n\r\n        if (dataSource.length === 0) {\r\n            console.warn(\"Cannot change visibility of 3D entity for layer with id \", rawLayer.id, \". Datasource is not available.\");\r\n        }\r\n        else {\r\n            dataSource[0].show = typeof value === \"boolean\" ? value : false;\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * Adapts the rawEntity and adds it to the dataSource's entities.\r\n * The created entity has the attribute 'layerReferenceId' which contains the rawLayer's id.\r\n * @param {Object} rawEntity to add to the dataSource\r\n * @param {string} [rawEntity.url] specifying the URI of the glTF asset\r\n * @param {number} [rawEntity.longitude] longitude of the position\r\n * @param {number} [rawEntity.latitude] latitude of the position\r\n * @param {number} [rawEntity.height] height  of the position\r\n * @param {boolean} [rawEntity.allowPicking] if true, each geometry instance will only be pickable with Scene#pick. When false, GPU memory is saved\r\n * @param {Array} [rawEntity.attributes] attributes of the glTF asset\r\n * @param {number} [rawEntity.heading] the rotation about the negative z axis\r\n * @param {number} [rawEntity.pitch] the rotation about the negative y axis\r\n * @param {number} [rawEntity.roll] the rotation about the positive x axis\r\n * @param {boolean} [rawEntity.show] optional- if true, entity is shown.\r\n * @param {Cesium.CustomDataSource} dataSource a Cesium.DataSource implementation to manage a group of entities\r\n * @param {Object} rawLayer layer specification as in services.json\r\n * @param {string} [rawLayer.id] optional id of the layer, passed to help identification in services.json\r\n * @returns {Object} the created entity\r\n */\r\nfunction addEntity (rawEntity, dataSource, rawLayer) {\r\n    if (typeof rawEntity.url !== \"string\") {\r\n        console.warn(\"Url of entity must be a string, but is:\", rawEntity.url);\r\n        return null;\r\n    }\r\n    if (![rawEntity.longitude, rawEntity.latitude, rawEntity.height].every(num => typeof num === \"number\")) {\r\n        console.warn(\"longitude, latitude and height of entity must be a number.\");\r\n        return null;\r\n    }\r\n    const position = Cesium.Cartesian3.fromDegrees(rawEntity.longitude, rawEntity.latitude, rawEntity.height),\r\n        allowPicking = typeof rawEntity.allowPicking === \"boolean\" ? rawEntity.allowPicking : true,\r\n        attributes = rawEntity.attributes ? rawEntity.attributes : {};\r\n    let headingPitchRoll = \"\",\r\n        orientation = \"\",\r\n        modelOptions = \"\",\r\n        entityOptions = null,\r\n        entity = \"\",\r\n        heading = 0,\r\n        pitch = 0,\r\n        roll = 0;\r\n\r\n    if (typeof rawEntity.heading === \"number\") {\r\n        heading = rawEntity.heading / 180 * Math.PI;\r\n    }\r\n    if (typeof rawEntity.pitch === \"number\") {\r\n        pitch = rawEntity.pitch / 180 * Math.PI;\r\n    }\r\n    if (typeof rawEntity.roll === \"number\") {\r\n        roll = rawEntity.roll / 180 * Math.PI;\r\n    }\r\n    headingPitchRoll = new Cesium.HeadingPitchRoll(heading, pitch, roll);\r\n    orientation = Cesium.Transforms.headingPitchRollQuaternion(position, headingPitchRoll);\r\n    modelOptions = Object.assign(rawEntity.modelOptions || {}, {\r\n        uri: rawEntity.url,\r\n        scale: typeof rawEntity.scale === \"number\" ? rawEntity.scale : 1,\r\n        show: typeof rawEntity.show === \"boolean\" ? rawEntity.show : false\r\n    });\r\n    entityOptions = {\r\n        name: rawEntity.url,\r\n        position,\r\n        orientation,\r\n        show: typeof rawEntity.show === \"boolean\" ? rawEntity.show : false,\r\n        model: modelOptions\r\n    };\r\n    entity = dataSource.entities.add(entityOptions);\r\n    entity.attributes = attributes;\r\n    entity.allowPicking = allowPicking;\r\n    entity.layerReferenceId = rawLayer.id;\r\n    return entity;\r\n}\r\n\r\n/**\r\n * Iterates over the entities of the raw layer and adds them to dataSource.\r\n * @param {Object} rawLayer  attributes of the layer\r\n * @param {string} [rawLayer.id] the id of the layer\r\n * @param {string} [rawLayer.entities] array of entities to add\r\n * @param {Cesium.CustomDataSource} dataSource a Cesium.DataSource implementation to manage a group of entities\r\n * @returns {void}\r\n */\r\nfunction addEntities (rawLayer, dataSource) {\r\n    if (rawLayer.entities) {\r\n        rawLayer.entities.forEach(entity => {\r\n            // just created dataSource is an object, but if it is got by name it is contained in an array\r\n            addEntity(entity, Array.isArray(dataSource) ? dataSource[0] : dataSource, rawLayer);\r\n        });\r\n    }\r\n}\r\n\r\n/**\r\n * Creates a Cesium.CustomDataSource and adds it to map's dataSources.\r\n * Iterates over the entities of the raw layer and adds them to dataSource.\r\n * @param {Object} rawLayer  attributes of the layer\r\n * @param {string} [rawLayer.id] the id of the layer\r\n * @param {string} [rawLayer.entities] array of entities to add\r\n * @param {OLCesium} map ol cesium map\r\n * @param {function} callback to execute after datasource is added to map and entities are added\r\n * @returns {*} null or the return-value of the callback\r\n */\r\nexport function createDataSource (rawLayer, map, callback) {\r\n    if (!rawLayer) {\r\n        console.warn(\"Cannot add entities to rawLayer which is null!\");\r\n    }\r\n    else if (map && typeof map.getDataSources === \"function\") {\r\n        const dataSources = map.getDataSources();\r\n        let dataSource = dataSources.getByName(rawLayer.id);\r\n\r\n        if (dataSource.length === 0) {\r\n            dataSource = new Cesium.CustomDataSource(rawLayer.id);\r\n            dataSources.add(dataSource).then(function (addedDataSource) {\r\n                addEntities(rawLayer, addedDataSource, map);\r\n                if (callback) {\r\n                    return callback();\r\n                }\r\n                return null;\r\n            });\r\n        }\r\n        else {\r\n            addEntities(rawLayer, dataSource, map);\r\n            if (callback) {\r\n                return callback();\r\n            }\r\n        }\r\n    }\r\n    return null;\r\n}\r\n\r\n\r\n/**\r\n * Creates an entities layer to use in ol-Cesium map.\r\n * @param {Object} rawLayer layer specification as in services.json\r\n * @param {string} [rawLayer.id] optional id of the layer, passed to help identification in services.json\r\n * @param {string} [rawLayer.name] optional name of the layer, passed to help identification in services.json\r\n * @param {string} [rawLayer.typ] typ of the layer, passed to help identification in services.json\r\n * @param {Array} [rawLayer.entities] array of entities to add\r\n * @param {OLCesium} map ol cesium map\r\n * @returns {Object} layer\r\n */\r\nexport function createLayer (rawLayer, map) {\r\n    createDataSource(rawLayer, map);\r\n    this.values = {\r\n        name: rawLayer.name,\r\n        id: rawLayer.id,\r\n        typ: rawLayer.typ\r\n    };\r\n    return this;\r\n}\r\n\r\n/**\r\n * Returns the value for the given key of the rawlayer.\r\n * @param {String} key to get the value for\r\n * @returns {*} the value to the key\r\n */\r\nexport function get (key) {\r\n    if (!this.values) {\r\n        return undefined;\r\n    }\r\n    return this.values[key];\r\n}\r\n","/**\r\n * Creates the tileset.\r\n * @param {Object} mpapiTileset - masterportal API Tileset object\r\n * @param {Object} rawLayer  attributes of the layer\r\n * @param {string} [rawLayer.url] - the URL of the Cesium terrain server\r\n * @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html\r\n * @returns {Cesium.Cesium3DTileset} the tileset\r\n */\r\nfunction createTileSet (mpapiTileset, rawLayer) {\r\n    const baseUrl = rawLayer.url.split(\"?\")[0],\r\n        // when no json file is given by url, use tileset.json as default\r\n        url = baseUrl + (baseUrl.endsWith(\".json\") ? \"\" : \"/tileset.json\"),\r\n        options = {};\r\n\r\n    mpapiTileset.url = url;\r\n\r\n    if (rawLayer.cesium3DTilesetOptions) {\r\n        Object.assign(options, rawLayer.cesium3DTilesetOptions);\r\n    }\r\n    return Promise.resolve(Cesium.Cesium3DTileset.fromUrl(url, options));\r\n}\r\n\r\n/**\r\n * Creates an terrain layer to use in ol-Cesium map. Sets the id of the rawlayer to tileset.layerReferenceId.\r\n * @param {Object} rawLayer - layer specification as in services.json\r\n * @param {string} [rawLayer.id] - optional id of the layer, passed to help identification in services.json\r\n * @param {string} [rawLayer.url] - the URL of the Cesium terrain server\r\n * @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html\r\n * @returns {void}\r\n */\r\n\r\nexport default function Tileset (rawLayer) {\r\n    this.values = {\r\n        name: rawLayer.name,\r\n        id: rawLayer.id,\r\n        typ: rawLayer.typ,\r\n        transparency: rawLayer.transparency\r\n    };\r\n    if (Cesium) {\r\n        this.tileset = Promise.resolve(createTileSet(this, rawLayer));\r\n        this.tileset.then(function (tileset) {\r\n            if (tileset) {\r\n                tileset.layerReferenceId = rawLayer.id;\r\n            }\r\n        });\r\n    }\r\n}\r\n\r\n/**\r\n * Sets the opacity to the tilset.\r\n * @param {Numbe} opacity the opacity\r\n * @returns {void}\r\n */\r\nTileset.prototype.setOpacity = function (opacity) {\r\n    let color = \"rgba(255, 255, 255, \" + opacity + \")\";\r\n\r\n    if (this.tileset.style !== undefined) {\r\n        const splitValues = this.tileset.style.style.color.split(\",\");\r\n\r\n        if (!splitValues[0].startsWith(\"rgba\") && splitValues[0].startsWith(\"rgb\")) {\r\n            splitValues[0] = splitValues[0].replace(\"rgb\", \"rgba\");\r\n            splitValues[2] = splitValues[2].split(\")\")[0];\r\n        }\r\n\r\n        splitValues[3] = ` ${opacity})`;\r\n        color = splitValues.toString();\r\n    }\r\n\r\n    this.tileset.then(function (tileset) {\r\n        if (tileset) {\r\n            tileset.style = new Cesium.Cesium3DTileStyle({color});\r\n        }\r\n    });\r\n};\r\n\r\n/**\r\n *\r\n * @param {boolean} value  if true, terrainProvider is set to map and terrain will be visible\r\n * @param {OLCesium} map ol cesium map\r\n * @returns {void}\r\n */\r\nTileset.prototype.setVisible = function (value, map) {\r\n    if (map && typeof map.getCesiumScene === \"function\") {\r\n        if (value) {\r\n            if (!map.getCesiumScene().primitives.contains(this.tileset)) {\r\n                this.tileset.then(function (tileset) {\r\n                    map.getCesiumScene().primitives.add(tileset);\r\n                });\r\n            }\r\n        }\r\n        this.tileset.then(function (tileset) {\r\n            if (tileset) {\r\n                tileset.show = value;\r\n            }\r\n        });\r\n    }\r\n};\r\n\r\n/**\r\n * Returns the value for the given key of the rawlayer.\r\n * @param {String} key to get the value for\r\n * @returns {*} the value to the key\r\n */\r\nTileset.prototype.get = function (key) {\r\n    if (!this.values) {\r\n        return undefined;\r\n    }\r\n    return this.values[key];\r\n};\r\n","/**\r\n * @param {ol.Layer} layer - layer to check\r\n * @param {number} params - parameter object\r\n * @param {number} [params.resolution] - resolution to check; if not given, map is required\r\n * @param {object} [params.map] - map to check; if not given, resolution is required\r\n * @returns {boolean} whether layer is visible in given resolution\r\n */\r\nexport function isLayerVisibleInResolution (layer, {resolution, map}) {\r\n    const r = typeof resolution === \"undefined\"\r\n        ? map.getView().getResolution()\r\n        : resolution;\r\n\r\n    return layer.getMaxResolution() >= r && r >= layer.getMinResolution();\r\n}\r\n\r\n/**\r\n * Generates an array of URLs that are supposed to hold legend graphics.\r\n *\r\n * @param {*} rawLayer - layer specification as in services.json\r\n * @param {string} [rawLayer.layers=\"\"] - comma separated list of service layers\r\n * @returns {string[]} URLs of legend graphics for the rawLayer.\r\n */\r\nexport function getLegendURLs ({legendURL, layers = \"\", url, typ, format, version}) {\r\n    if (legendURL) {\r\n        return legendURL === \"ignore\" ? [] : [legendURL];\r\n    }\r\n\r\n    return layers\r\n        .split(\",\")\r\n        .filter(x => x /* filters empty string since it's falsy */)\r\n        .map(layerName => `${url}?SERVICE=${typ}&REQUEST=GetLegendGraphic&FORMAT=${format || \"image/png\"}&VERSION=${version}&LAYER=${layerName}`);\r\n}\r\n","/**\r\n * Parses stramed coordinates to pairs of coordinates.\r\n * @param {(string[]|number[])} coordinates - flat coordinates where two following belong together\r\n * @returns {Array.<number[]>} array of coordinate pairs\r\n */\r\nexport default function coordsToPairs (coordinates) {\r\n    const floatCoords = coordinates.map(parseFloat),\r\n        result = [];\r\n\r\n    while (floatCoords.length) {\r\n        result.push(floatCoords.splice(0, 2));\r\n    }\r\n\r\n    return result;\r\n}\r\n","import Polygon from \"ol/geom/Polygon\";\r\nimport Point from \"ol/geom/Point\";\r\n\r\nimport coordsToPairs from \"./coordsToPairs\";\r\n\r\n/**\r\n * Zooms the map to a geometry.\r\n * @param {ol/Map} map map object to zoom\r\n * @param {(ol/geom/SimpleGeometry|ol/extent)} geometryOrExtent the geometry or extent to zoom to\r\n * @param {object} [params={}] forwarded to ol/View.fit, may e.g. specify duration of animation {@link https://openlayers.org/en/latest/apidoc/module-ol_View.html#~FitOptions}\r\n * @returns {void}\r\n */\r\nexport default function zoomTo (map, geometryOrExtent, params = {}) {\r\n    map.getView().fit(geometryOrExtent, params);\r\n}\r\n\r\n/**\r\n * Zooms the map to a searchResult.\r\n * @param {ol/Map} map map object to zoom\r\n * @param {SearchResult} searchResult result from searchAddress\r\n * @param {object} [params={}] forwarded to ol/View.fit, may e.g. specify duration of animation {@link https://openlayers.org/en/latest/apidoc/module-ol_View.html#~FitOptions}\r\n * @returns {void}\r\n */\r\nexport function zoomToSearchResult (map, searchResult, params = {}) {\r\n    let geom;\r\n\r\n    switch (searchResult.geometry.type) {\r\n        case \"Polygon\":\r\n            geom = new Polygon([coordsToPairs(searchResult.geometry.coordinates)]);\r\n            break;\r\n        case \"Point\":\r\n            geom = new Point(searchResult.geometry.coordinates.map(parseFloat));\r\n            break;\r\n        default:\r\n            console.warn(`ZoomTo for type ${searchResult.geometry.type} not implemented.`);\r\n            return;\r\n    }\r\n\r\n    zoomTo(map, geom, params);\r\n}\r\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  exports.defaults = {\n    \"0.1\": {\n      explicitCharkey: false,\n      trim: true,\n      normalize: true,\n      normalizeTags: false,\n      attrkey: \"@\",\n      charkey: \"#\",\n      explicitArray: false,\n      ignoreAttrs: false,\n      mergeAttrs: false,\n      explicitRoot: false,\n      validator: null,\n      xmlns: false,\n      explicitChildren: false,\n      childkey: '@@',\n      charsAsChildren: false,\n      includeWhiteChars: false,\n      async: false,\n      strict: true,\n      attrNameProcessors: null,\n      attrValueProcessors: null,\n      tagNameProcessors: null,\n      valueProcessors: null,\n      emptyTag: ''\n    },\n    \"0.2\": {\n      explicitCharkey: false,\n      trim: false,\n      normalize: false,\n      normalizeTags: false,\n      attrkey: \"$\",\n      charkey: \"_\",\n      explicitArray: true,\n      ignoreAttrs: false,\n      mergeAttrs: false,\n      explicitRoot: true,\n      validator: null,\n      xmlns: false,\n      explicitChildren: false,\n      preserveChildrenOrder: false,\n      childkey: '$$',\n      charsAsChildren: false,\n      includeWhiteChars: false,\n      async: false,\n      strict: true,\n      attrNameProcessors: null,\n      attrValueProcessors: null,\n      tagNameProcessors: null,\n      valueProcessors: null,\n      rootName: 'root',\n      xmldec: {\n        'version': '1.0',\n        'encoding': 'UTF-8',\n        'standalone': true\n      },\n      doctype: null,\n      renderOpts: {\n        'pretty': true,\n        'indent': '  ',\n        'newline': '\\n'\n      },\n      headless: false,\n      chunkSize: 10000,\n      emptyTag: '',\n      cdata: false\n    }\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,\n    slice = [].slice,\n    hasProp = {}.hasOwnProperty;\n\n  assign = function() {\n    var i, key, len, source, sources, target;\n    target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n    if (isFunction(Object.assign)) {\n      Object.assign.apply(null, arguments);\n    } else {\n      for (i = 0, len = sources.length; i < len; i++) {\n        source = sources[i];\n        if (source != null) {\n          for (key in source) {\n            if (!hasProp.call(source, key)) continue;\n            target[key] = source[key];\n          }\n        }\n      }\n    }\n    return target;\n  };\n\n  isFunction = function(val) {\n    return !!val && Object.prototype.toString.call(val) === '[object Function]';\n  };\n\n  isObject = function(val) {\n    var ref;\n    return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n  };\n\n  isArray = function(val) {\n    if (isFunction(Array.isArray)) {\n      return Array.isArray(val);\n    } else {\n      return Object.prototype.toString.call(val) === '[object Array]';\n    }\n  };\n\n  isEmpty = function(val) {\n    var key;\n    if (isArray(val)) {\n      return !val.length;\n    } else {\n      for (key in val) {\n        if (!hasProp.call(val, key)) continue;\n        return false;\n      }\n      return true;\n    }\n  };\n\n  isPlainObject = function(val) {\n    var ctor, proto;\n    return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n  };\n\n  getValue = function(obj) {\n    if (isFunction(obj.valueOf)) {\n      return obj.valueOf();\n    } else {\n      return obj;\n    }\n  };\n\n  module.exports.assign = assign;\n\n  module.exports.isFunction = isFunction;\n\n  module.exports.isObject = isObject;\n\n  module.exports.isArray = isArray;\n\n  module.exports.isEmpty = isEmpty;\n\n  module.exports.isPlainObject = isPlainObject;\n\n  module.exports.getValue = getValue;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLDOMImplementation;\n\n  module.exports = XMLDOMImplementation = (function() {\n    function XMLDOMImplementation() {}\n\n    XMLDOMImplementation.prototype.hasFeature = function(feature, version) {\n      return true;\n    };\n\n    XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    XMLDOMImplementation.prototype.createHTMLDocument = function(title) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    XMLDOMImplementation.prototype.getFeature = function(feature, version) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    return XMLDOMImplementation;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLDOMErrorHandler;\n\n  module.exports = XMLDOMErrorHandler = (function() {\n    function XMLDOMErrorHandler() {}\n\n    XMLDOMErrorHandler.prototype.handleError = function(error) {\n      throw new Error(error);\n    };\n\n    return XMLDOMErrorHandler;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLDOMStringList;\n\n  module.exports = XMLDOMStringList = (function() {\n    function XMLDOMStringList(arr) {\n      this.arr = arr || [];\n    }\n\n    Object.defineProperty(XMLDOMStringList.prototype, 'length', {\n      get: function() {\n        return this.arr.length;\n      }\n    });\n\n    XMLDOMStringList.prototype.item = function(index) {\n      return this.arr[index] || null;\n    };\n\n    XMLDOMStringList.prototype.contains = function(str) {\n      return this.arr.indexOf(str) !== -1;\n    };\n\n    return XMLDOMStringList;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;\n\n  XMLDOMErrorHandler = require('./XMLDOMErrorHandler');\n\n  XMLDOMStringList = require('./XMLDOMStringList');\n\n  module.exports = XMLDOMConfiguration = (function() {\n    function XMLDOMConfiguration() {\n      var clonedSelf;\n      this.defaultParams = {\n        \"canonical-form\": false,\n        \"cdata-sections\": false,\n        \"comments\": false,\n        \"datatype-normalization\": false,\n        \"element-content-whitespace\": true,\n        \"entities\": true,\n        \"error-handler\": new XMLDOMErrorHandler(),\n        \"infoset\": true,\n        \"validate-if-schema\": false,\n        \"namespaces\": true,\n        \"namespace-declarations\": true,\n        \"normalize-characters\": false,\n        \"schema-location\": '',\n        \"schema-type\": '',\n        \"split-cdata-sections\": true,\n        \"validate\": false,\n        \"well-formed\": true\n      };\n      this.params = clonedSelf = Object.create(this.defaultParams);\n    }\n\n    Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {\n      get: function() {\n        return new XMLDOMStringList(Object.keys(this.defaultParams));\n      }\n    });\n\n    XMLDOMConfiguration.prototype.getParameter = function(name) {\n      if (this.params.hasOwnProperty(name)) {\n        return this.params[name];\n      } else {\n        return null;\n      }\n    };\n\n    XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {\n      return true;\n    };\n\n    XMLDOMConfiguration.prototype.setParameter = function(name, value) {\n      if (value != null) {\n        return this.params[name] = value;\n      } else {\n        return delete this.params[name];\n      }\n    };\n\n    return XMLDOMConfiguration;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  module.exports = {\n    Element: 1,\n    Attribute: 2,\n    Text: 3,\n    CData: 4,\n    EntityReference: 5,\n    EntityDeclaration: 6,\n    ProcessingInstruction: 7,\n    Comment: 8,\n    Document: 9,\n    DocType: 10,\n    DocumentFragment: 11,\n    NotationDeclaration: 12,\n    Declaration: 201,\n    Raw: 202,\n    AttributeDeclaration: 203,\n    ElementDeclaration: 204,\n    Dummy: 205\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLAttribute, XMLNode;\n\n  NodeType = require('./NodeType');\n\n  XMLNode = require('./XMLNode');\n\n  module.exports = XMLAttribute = (function() {\n    function XMLAttribute(parent, name, value) {\n      this.parent = parent;\n      if (this.parent) {\n        this.options = this.parent.options;\n        this.stringify = this.parent.stringify;\n      }\n      if (name == null) {\n        throw new Error(\"Missing attribute name. \" + this.debugInfo(name));\n      }\n      this.name = this.stringify.name(name);\n      this.value = this.stringify.attValue(value);\n      this.type = NodeType.Attribute;\n      this.isId = false;\n      this.schemaTypeInfo = null;\n    }\n\n    Object.defineProperty(XMLAttribute.prototype, 'nodeType', {\n      get: function() {\n        return this.type;\n      }\n    });\n\n    Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {\n      get: function() {\n        return this.parent;\n      }\n    });\n\n    Object.defineProperty(XMLAttribute.prototype, 'textContent', {\n      get: function() {\n        return this.value;\n      },\n      set: function(value) {\n        return this.value = value || '';\n      }\n    });\n\n    Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {\n      get: function() {\n        return '';\n      }\n    });\n\n    Object.defineProperty(XMLAttribute.prototype, 'prefix', {\n      get: function() {\n        return '';\n      }\n    });\n\n    Object.defineProperty(XMLAttribute.prototype, 'localName', {\n      get: function() {\n        return this.name;\n      }\n    });\n\n    Object.defineProperty(XMLAttribute.prototype, 'specified', {\n      get: function() {\n        return true;\n      }\n    });\n\n    XMLAttribute.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLAttribute.prototype.toString = function(options) {\n      return this.options.writer.attribute(this, this.options.writer.filterOptions(options));\n    };\n\n    XMLAttribute.prototype.debugInfo = function(name) {\n      name = name || this.name;\n      if (name == null) {\n        return \"parent: <\" + this.parent.name + \">\";\n      } else {\n        return \"attribute: {\" + name + \"}, parent: <\" + this.parent.name + \">\";\n      }\n    };\n\n    XMLAttribute.prototype.isEqualNode = function(node) {\n      if (node.namespaceURI !== this.namespaceURI) {\n        return false;\n      }\n      if (node.prefix !== this.prefix) {\n        return false;\n      }\n      if (node.localName !== this.localName) {\n        return false;\n      }\n      if (node.value !== this.value) {\n        return false;\n      }\n      return true;\n    };\n\n    return XMLAttribute;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLNamedNodeMap;\n\n  module.exports = XMLNamedNodeMap = (function() {\n    function XMLNamedNodeMap(nodes) {\n      this.nodes = nodes;\n    }\n\n    Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {\n      get: function() {\n        return Object.keys(this.nodes).length || 0;\n      }\n    });\n\n    XMLNamedNodeMap.prototype.clone = function() {\n      return this.nodes = null;\n    };\n\n    XMLNamedNodeMap.prototype.getNamedItem = function(name) {\n      return this.nodes[name];\n    };\n\n    XMLNamedNodeMap.prototype.setNamedItem = function(node) {\n      var oldNode;\n      oldNode = this.nodes[node.nodeName];\n      this.nodes[node.nodeName] = node;\n      return oldNode || null;\n    };\n\n    XMLNamedNodeMap.prototype.removeNamedItem = function(name) {\n      var oldNode;\n      oldNode = this.nodes[name];\n      delete this.nodes[name];\n      return oldNode || null;\n    };\n\n    XMLNamedNodeMap.prototype.item = function(index) {\n      return this.nodes[Object.keys(this.nodes)[index]] || null;\n    };\n\n    XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\");\n    };\n\n    return XMLNamedNodeMap;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  XMLAttribute = require('./XMLAttribute');\n\n  XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n  module.exports = XMLElement = (function(superClass) {\n    extend(XMLElement, superClass);\n\n    function XMLElement(parent, name, attributes) {\n      var child, j, len, ref1;\n      XMLElement.__super__.constructor.call(this, parent);\n      if (name == null) {\n        throw new Error(\"Missing element name. \" + this.debugInfo());\n      }\n      this.name = this.stringify.name(name);\n      this.type = NodeType.Element;\n      this.attribs = {};\n      this.schemaTypeInfo = null;\n      if (attributes != null) {\n        this.attribute(attributes);\n      }\n      if (parent.type === NodeType.Document) {\n        this.isRoot = true;\n        this.documentObject = parent;\n        parent.rootObject = this;\n        if (parent.children) {\n          ref1 = parent.children;\n          for (j = 0, len = ref1.length; j < len; j++) {\n            child = ref1[j];\n            if (child.type === NodeType.DocType) {\n              child.name = this.name;\n              break;\n            }\n          }\n        }\n      }\n    }\n\n    Object.defineProperty(XMLElement.prototype, 'tagName', {\n      get: function() {\n        return this.name;\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'namespaceURI', {\n      get: function() {\n        return '';\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'prefix', {\n      get: function() {\n        return '';\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'localName', {\n      get: function() {\n        return this.name;\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'id', {\n      get: function() {\n        throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'className', {\n      get: function() {\n        throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'classList', {\n      get: function() {\n        throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n      }\n    });\n\n    Object.defineProperty(XMLElement.prototype, 'attributes', {\n      get: function() {\n        if (!this.attributeMap || !this.attributeMap.nodes) {\n          this.attributeMap = new XMLNamedNodeMap(this.attribs);\n        }\n        return this.attributeMap;\n      }\n    });\n\n    XMLElement.prototype.clone = function() {\n      var att, attName, clonedSelf, ref1;\n      clonedSelf = Object.create(this);\n      if (clonedSelf.isRoot) {\n        clonedSelf.documentObject = null;\n      }\n      clonedSelf.attribs = {};\n      ref1 = this.attribs;\n      for (attName in ref1) {\n        if (!hasProp.call(ref1, attName)) continue;\n        att = ref1[attName];\n        clonedSelf.attribs[attName] = att.clone();\n      }\n      clonedSelf.children = [];\n      this.children.forEach(function(child) {\n        var clonedChild;\n        clonedChild = child.clone();\n        clonedChild.parent = clonedSelf;\n        return clonedSelf.children.push(clonedChild);\n      });\n      return clonedSelf;\n    };\n\n    XMLElement.prototype.attribute = function(name, value) {\n      var attName, attValue;\n      if (name != null) {\n        name = getValue(name);\n      }\n      if (isObject(name)) {\n        for (attName in name) {\n          if (!hasProp.call(name, attName)) continue;\n          attValue = name[attName];\n          this.attribute(attName, attValue);\n        }\n      } else {\n        if (isFunction(value)) {\n          value = value.apply();\n        }\n        if (this.options.keepNullAttributes && (value == null)) {\n          this.attribs[name] = new XMLAttribute(this, name, \"\");\n        } else if (value != null) {\n          this.attribs[name] = new XMLAttribute(this, name, value);\n        }\n      }\n      return this;\n    };\n\n    XMLElement.prototype.removeAttribute = function(name) {\n      var attName, j, len;\n      if (name == null) {\n        throw new Error(\"Missing attribute name. \" + this.debugInfo());\n      }\n      name = getValue(name);\n      if (Array.isArray(name)) {\n        for (j = 0, len = name.length; j < len; j++) {\n          attName = name[j];\n          delete this.attribs[attName];\n        }\n      } else {\n        delete this.attribs[name];\n      }\n      return this;\n    };\n\n    XMLElement.prototype.toString = function(options) {\n      return this.options.writer.element(this, this.options.writer.filterOptions(options));\n    };\n\n    XMLElement.prototype.att = function(name, value) {\n      return this.attribute(name, value);\n    };\n\n    XMLElement.prototype.a = function(name, value) {\n      return this.attribute(name, value);\n    };\n\n    XMLElement.prototype.getAttribute = function(name) {\n      if (this.attribs.hasOwnProperty(name)) {\n        return this.attribs[name].value;\n      } else {\n        return null;\n      }\n    };\n\n    XMLElement.prototype.setAttribute = function(name, value) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getAttributeNode = function(name) {\n      if (this.attribs.hasOwnProperty(name)) {\n        return this.attribs[name];\n      } else {\n        return null;\n      }\n    };\n\n    XMLElement.prototype.setAttributeNode = function(newAttr) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.removeAttributeNode = function(oldAttr) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getElementsByTagName = function(name) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.setAttributeNodeNS = function(newAttr) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.hasAttribute = function(name) {\n      return this.attribs.hasOwnProperty(name);\n    };\n\n    XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.setIdAttribute = function(name, isId) {\n      if (this.attribs.hasOwnProperty(name)) {\n        return this.attribs[name].isId;\n      } else {\n        return isId;\n      }\n    };\n\n    XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getElementsByTagName = function(tagname) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.getElementsByClassName = function(classNames) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLElement.prototype.isEqualNode = function(node) {\n      var i, j, ref1;\n      if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n        return false;\n      }\n      if (node.namespaceURI !== this.namespaceURI) {\n        return false;\n      }\n      if (node.prefix !== this.prefix) {\n        return false;\n      }\n      if (node.localName !== this.localName) {\n        return false;\n      }\n      if (node.attribs.length !== this.attribs.length) {\n        return false;\n      }\n      for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {\n        if (!this.attribs[i].isEqualNode(node.attribs[i])) {\n          return false;\n        }\n      }\n      return true;\n    };\n\n    return XMLElement;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLCharacterData, XMLNode,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  XMLNode = require('./XMLNode');\n\n  module.exports = XMLCharacterData = (function(superClass) {\n    extend(XMLCharacterData, superClass);\n\n    function XMLCharacterData(parent) {\n      XMLCharacterData.__super__.constructor.call(this, parent);\n      this.value = '';\n    }\n\n    Object.defineProperty(XMLCharacterData.prototype, 'data', {\n      get: function() {\n        return this.value;\n      },\n      set: function(value) {\n        return this.value = value || '';\n      }\n    });\n\n    Object.defineProperty(XMLCharacterData.prototype, 'length', {\n      get: function() {\n        return this.value.length;\n      }\n    });\n\n    Object.defineProperty(XMLCharacterData.prototype, 'textContent', {\n      get: function() {\n        return this.value;\n      },\n      set: function(value) {\n        return this.value = value || '';\n      }\n    });\n\n    XMLCharacterData.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLCharacterData.prototype.substringData = function(offset, count) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLCharacterData.prototype.appendData = function(arg) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLCharacterData.prototype.insertData = function(offset, arg) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLCharacterData.prototype.deleteData = function(offset, count) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLCharacterData.prototype.replaceData = function(offset, count, arg) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLCharacterData.prototype.isEqualNode = function(node) {\n      if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n        return false;\n      }\n      if (node.data !== this.data) {\n        return false;\n      }\n      return true;\n    };\n\n    return XMLCharacterData;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLCData, XMLCharacterData,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  NodeType = require('./NodeType');\n\n  XMLCharacterData = require('./XMLCharacterData');\n\n  module.exports = XMLCData = (function(superClass) {\n    extend(XMLCData, superClass);\n\n    function XMLCData(parent, text) {\n      XMLCData.__super__.constructor.call(this, parent);\n      if (text == null) {\n        throw new Error(\"Missing CDATA text. \" + this.debugInfo());\n      }\n      this.name = \"#cdata-section\";\n      this.type = NodeType.CData;\n      this.value = this.stringify.cdata(text);\n    }\n\n    XMLCData.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLCData.prototype.toString = function(options) {\n      return this.options.writer.cdata(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLCData;\n\n  })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLCharacterData, XMLComment,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  NodeType = require('./NodeType');\n\n  XMLCharacterData = require('./XMLCharacterData');\n\n  module.exports = XMLComment = (function(superClass) {\n    extend(XMLComment, superClass);\n\n    function XMLComment(parent, text) {\n      XMLComment.__super__.constructor.call(this, parent);\n      if (text == null) {\n        throw new Error(\"Missing comment text. \" + this.debugInfo());\n      }\n      this.name = \"#comment\";\n      this.type = NodeType.Comment;\n      this.value = this.stringify.comment(text);\n    }\n\n    XMLComment.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLComment.prototype.toString = function(options) {\n      return this.options.writer.comment(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLComment;\n\n  })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDeclaration, XMLNode, isObject,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  isObject = require('./Utility').isObject;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  module.exports = XMLDeclaration = (function(superClass) {\n    extend(XMLDeclaration, superClass);\n\n    function XMLDeclaration(parent, version, encoding, standalone) {\n      var ref;\n      XMLDeclaration.__super__.constructor.call(this, parent);\n      if (isObject(version)) {\n        ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n      }\n      if (!version) {\n        version = '1.0';\n      }\n      this.type = NodeType.Declaration;\n      this.version = this.stringify.xmlVersion(version);\n      if (encoding != null) {\n        this.encoding = this.stringify.xmlEncoding(encoding);\n      }\n      if (standalone != null) {\n        this.standalone = this.stringify.xmlStandalone(standalone);\n      }\n    }\n\n    XMLDeclaration.prototype.toString = function(options) {\n      return this.options.writer.declaration(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLDeclaration;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDTDAttList, XMLNode,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  module.exports = XMLDTDAttList = (function(superClass) {\n    extend(XMLDTDAttList, superClass);\n\n    function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n      XMLDTDAttList.__super__.constructor.call(this, parent);\n      if (elementName == null) {\n        throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n      }\n      if (attributeName == null) {\n        throw new Error(\"Missing DTD attribute name. \" + this.debugInfo(elementName));\n      }\n      if (!attributeType) {\n        throw new Error(\"Missing DTD attribute type. \" + this.debugInfo(elementName));\n      }\n      if (!defaultValueType) {\n        throw new Error(\"Missing DTD attribute default. \" + this.debugInfo(elementName));\n      }\n      if (defaultValueType.indexOf('#') !== 0) {\n        defaultValueType = '#' + defaultValueType;\n      }\n      if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n        throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n      }\n      if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n        throw new Error(\"Default value only applies to #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n      }\n      this.elementName = this.stringify.name(elementName);\n      this.type = NodeType.AttributeDeclaration;\n      this.attributeName = this.stringify.name(attributeName);\n      this.attributeType = this.stringify.dtdAttType(attributeType);\n      if (defaultValue) {\n        this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n      }\n      this.defaultValueType = defaultValueType;\n    }\n\n    XMLDTDAttList.prototype.toString = function(options) {\n      return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLDTDAttList;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDTDEntity, XMLNode, isObject,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  isObject = require('./Utility').isObject;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  module.exports = XMLDTDEntity = (function(superClass) {\n    extend(XMLDTDEntity, superClass);\n\n    function XMLDTDEntity(parent, pe, name, value) {\n      XMLDTDEntity.__super__.constructor.call(this, parent);\n      if (name == null) {\n        throw new Error(\"Missing DTD entity name. \" + this.debugInfo(name));\n      }\n      if (value == null) {\n        throw new Error(\"Missing DTD entity value. \" + this.debugInfo(name));\n      }\n      this.pe = !!pe;\n      this.name = this.stringify.name(name);\n      this.type = NodeType.EntityDeclaration;\n      if (!isObject(value)) {\n        this.value = this.stringify.dtdEntityValue(value);\n        this.internal = true;\n      } else {\n        if (!value.pubID && !value.sysID) {\n          throw new Error(\"Public and/or system identifiers are required for an external entity. \" + this.debugInfo(name));\n        }\n        if (value.pubID && !value.sysID) {\n          throw new Error(\"System identifier is required for a public external entity. \" + this.debugInfo(name));\n        }\n        this.internal = false;\n        if (value.pubID != null) {\n          this.pubID = this.stringify.dtdPubID(value.pubID);\n        }\n        if (value.sysID != null) {\n          this.sysID = this.stringify.dtdSysID(value.sysID);\n        }\n        if (value.nData != null) {\n          this.nData = this.stringify.dtdNData(value.nData);\n        }\n        if (this.pe && this.nData) {\n          throw new Error(\"Notation declaration is not allowed in a parameter entity. \" + this.debugInfo(name));\n        }\n      }\n    }\n\n    Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {\n      get: function() {\n        return this.pubID;\n      }\n    });\n\n    Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {\n      get: function() {\n        return this.sysID;\n      }\n    });\n\n    Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {\n      get: function() {\n        return this.nData || null;\n      }\n    });\n\n    Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {\n      get: function() {\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {\n      get: function() {\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {\n      get: function() {\n        return null;\n      }\n    });\n\n    XMLDTDEntity.prototype.toString = function(options) {\n      return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLDTDEntity;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDTDElement, XMLNode,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  module.exports = XMLDTDElement = (function(superClass) {\n    extend(XMLDTDElement, superClass);\n\n    function XMLDTDElement(parent, name, value) {\n      XMLDTDElement.__super__.constructor.call(this, parent);\n      if (name == null) {\n        throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n      }\n      if (!value) {\n        value = '(#PCDATA)';\n      }\n      if (Array.isArray(value)) {\n        value = '(' + value.join(',') + ')';\n      }\n      this.name = this.stringify.name(name);\n      this.type = NodeType.ElementDeclaration;\n      this.value = this.stringify.dtdElementValue(value);\n    }\n\n    XMLDTDElement.prototype.toString = function(options) {\n      return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLDTDElement;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDTDNotation, XMLNode,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  module.exports = XMLDTDNotation = (function(superClass) {\n    extend(XMLDTDNotation, superClass);\n\n    function XMLDTDNotation(parent, name, value) {\n      XMLDTDNotation.__super__.constructor.call(this, parent);\n      if (name == null) {\n        throw new Error(\"Missing DTD notation name. \" + this.debugInfo(name));\n      }\n      if (!value.pubID && !value.sysID) {\n        throw new Error(\"Public or system identifiers are required for an external entity. \" + this.debugInfo(name));\n      }\n      this.name = this.stringify.name(name);\n      this.type = NodeType.NotationDeclaration;\n      if (value.pubID != null) {\n        this.pubID = this.stringify.dtdPubID(value.pubID);\n      }\n      if (value.sysID != null) {\n        this.sysID = this.stringify.dtdSysID(value.sysID);\n      }\n    }\n\n    Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {\n      get: function() {\n        return this.pubID;\n      }\n    });\n\n    Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {\n      get: function() {\n        return this.sysID;\n      }\n    });\n\n    XMLDTDNotation.prototype.toString = function(options) {\n      return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLDTDNotation;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  isObject = require('./Utility').isObject;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  XMLDTDAttList = require('./XMLDTDAttList');\n\n  XMLDTDEntity = require('./XMLDTDEntity');\n\n  XMLDTDElement = require('./XMLDTDElement');\n\n  XMLDTDNotation = require('./XMLDTDNotation');\n\n  XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n  module.exports = XMLDocType = (function(superClass) {\n    extend(XMLDocType, superClass);\n\n    function XMLDocType(parent, pubID, sysID) {\n      var child, i, len, ref, ref1, ref2;\n      XMLDocType.__super__.constructor.call(this, parent);\n      this.type = NodeType.DocType;\n      if (parent.children) {\n        ref = parent.children;\n        for (i = 0, len = ref.length; i < len; i++) {\n          child = ref[i];\n          if (child.type === NodeType.Element) {\n            this.name = child.name;\n            break;\n          }\n        }\n      }\n      this.documentObject = parent;\n      if (isObject(pubID)) {\n        ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;\n      }\n      if (sysID == null) {\n        ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];\n      }\n      if (pubID != null) {\n        this.pubID = this.stringify.dtdPubID(pubID);\n      }\n      if (sysID != null) {\n        this.sysID = this.stringify.dtdSysID(sysID);\n      }\n    }\n\n    Object.defineProperty(XMLDocType.prototype, 'entities', {\n      get: function() {\n        var child, i, len, nodes, ref;\n        nodes = {};\n        ref = this.children;\n        for (i = 0, len = ref.length; i < len; i++) {\n          child = ref[i];\n          if ((child.type === NodeType.EntityDeclaration) && !child.pe) {\n            nodes[child.name] = child;\n          }\n        }\n        return new XMLNamedNodeMap(nodes);\n      }\n    });\n\n    Object.defineProperty(XMLDocType.prototype, 'notations', {\n      get: function() {\n        var child, i, len, nodes, ref;\n        nodes = {};\n        ref = this.children;\n        for (i = 0, len = ref.length; i < len; i++) {\n          child = ref[i];\n          if (child.type === NodeType.NotationDeclaration) {\n            nodes[child.name] = child;\n          }\n        }\n        return new XMLNamedNodeMap(nodes);\n      }\n    });\n\n    Object.defineProperty(XMLDocType.prototype, 'publicId', {\n      get: function() {\n        return this.pubID;\n      }\n    });\n\n    Object.defineProperty(XMLDocType.prototype, 'systemId', {\n      get: function() {\n        return this.sysID;\n      }\n    });\n\n    Object.defineProperty(XMLDocType.prototype, 'internalSubset', {\n      get: function() {\n        throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n      }\n    });\n\n    XMLDocType.prototype.element = function(name, value) {\n      var child;\n      child = new XMLDTDElement(this, name, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n      var child;\n      child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLDocType.prototype.entity = function(name, value) {\n      var child;\n      child = new XMLDTDEntity(this, false, name, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLDocType.prototype.pEntity = function(name, value) {\n      var child;\n      child = new XMLDTDEntity(this, true, name, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLDocType.prototype.notation = function(name, value) {\n      var child;\n      child = new XMLDTDNotation(this, name, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLDocType.prototype.toString = function(options) {\n      return this.options.writer.docType(this, this.options.writer.filterOptions(options));\n    };\n\n    XMLDocType.prototype.ele = function(name, value) {\n      return this.element(name, value);\n    };\n\n    XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n      return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n    };\n\n    XMLDocType.prototype.ent = function(name, value) {\n      return this.entity(name, value);\n    };\n\n    XMLDocType.prototype.pent = function(name, value) {\n      return this.pEntity(name, value);\n    };\n\n    XMLDocType.prototype.not = function(name, value) {\n      return this.notation(name, value);\n    };\n\n    XMLDocType.prototype.up = function() {\n      return this.root() || this.documentObject;\n    };\n\n    XMLDocType.prototype.isEqualNode = function(node) {\n      if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n        return false;\n      }\n      if (node.name !== this.name) {\n        return false;\n      }\n      if (node.publicId !== this.publicId) {\n        return false;\n      }\n      if (node.systemId !== this.systemId) {\n        return false;\n      }\n      return true;\n    };\n\n    return XMLDocType;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLNode, XMLRaw,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  NodeType = require('./NodeType');\n\n  XMLNode = require('./XMLNode');\n\n  module.exports = XMLRaw = (function(superClass) {\n    extend(XMLRaw, superClass);\n\n    function XMLRaw(parent, text) {\n      XMLRaw.__super__.constructor.call(this, parent);\n      if (text == null) {\n        throw new Error(\"Missing raw text. \" + this.debugInfo());\n      }\n      this.type = NodeType.Raw;\n      this.value = this.stringify.raw(text);\n    }\n\n    XMLRaw.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLRaw.prototype.toString = function(options) {\n      return this.options.writer.raw(this, this.options.writer.filterOptions(options));\n    };\n\n    return XMLRaw;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLCharacterData, XMLText,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  NodeType = require('./NodeType');\n\n  XMLCharacterData = require('./XMLCharacterData');\n\n  module.exports = XMLText = (function(superClass) {\n    extend(XMLText, superClass);\n\n    function XMLText(parent, text) {\n      XMLText.__super__.constructor.call(this, parent);\n      if (text == null) {\n        throw new Error(\"Missing element text. \" + this.debugInfo());\n      }\n      this.name = \"#text\";\n      this.type = NodeType.Text;\n      this.value = this.stringify.text(text);\n    }\n\n    Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {\n      get: function() {\n        throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n      }\n    });\n\n    Object.defineProperty(XMLText.prototype, 'wholeText', {\n      get: function() {\n        var next, prev, str;\n        str = '';\n        prev = this.previousSibling;\n        while (prev) {\n          str = prev.data + str;\n          prev = prev.previousSibling;\n        }\n        str += this.data;\n        next = this.nextSibling;\n        while (next) {\n          str = str + next.data;\n          next = next.nextSibling;\n        }\n        return str;\n      }\n    });\n\n    XMLText.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLText.prototype.toString = function(options) {\n      return this.options.writer.text(this, this.options.writer.filterOptions(options));\n    };\n\n    XMLText.prototype.splitText = function(offset) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLText.prototype.replaceWholeText = function(content) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    return XMLText;\n\n  })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLCharacterData, XMLProcessingInstruction,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  NodeType = require('./NodeType');\n\n  XMLCharacterData = require('./XMLCharacterData');\n\n  module.exports = XMLProcessingInstruction = (function(superClass) {\n    extend(XMLProcessingInstruction, superClass);\n\n    function XMLProcessingInstruction(parent, target, value) {\n      XMLProcessingInstruction.__super__.constructor.call(this, parent);\n      if (target == null) {\n        throw new Error(\"Missing instruction target. \" + this.debugInfo());\n      }\n      this.type = NodeType.ProcessingInstruction;\n      this.target = this.stringify.insTarget(target);\n      this.name = this.target;\n      if (value) {\n        this.value = this.stringify.insValue(value);\n      }\n    }\n\n    XMLProcessingInstruction.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLProcessingInstruction.prototype.toString = function(options) {\n      return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));\n    };\n\n    XMLProcessingInstruction.prototype.isEqualNode = function(node) {\n      if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n        return false;\n      }\n      if (node.target !== this.target) {\n        return false;\n      }\n      return true;\n    };\n\n    return XMLProcessingInstruction;\n\n  })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDummy, XMLNode,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  module.exports = XMLDummy = (function(superClass) {\n    extend(XMLDummy, superClass);\n\n    function XMLDummy(parent) {\n      XMLDummy.__super__.constructor.call(this, parent);\n      this.type = NodeType.Dummy;\n    }\n\n    XMLDummy.prototype.clone = function() {\n      return Object.create(this);\n    };\n\n    XMLDummy.prototype.toString = function(options) {\n      return '';\n    };\n\n    return XMLDummy;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLNodeList;\n\n  module.exports = XMLNodeList = (function() {\n    function XMLNodeList(nodes) {\n      this.nodes = nodes;\n    }\n\n    Object.defineProperty(XMLNodeList.prototype, 'length', {\n      get: function() {\n        return this.nodes.length || 0;\n      }\n    });\n\n    XMLNodeList.prototype.clone = function() {\n      return this.nodes = null;\n    };\n\n    XMLNodeList.prototype.item = function(index) {\n      return this.nodes[index] || null;\n    };\n\n    return XMLNodeList;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  module.exports = {\n    Disconnected: 1,\n    Preceding: 2,\n    Following: 4,\n    Contains: 8,\n    ContainedBy: 16,\n    ImplementationSpecific: 32\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,\n    hasProp = {}.hasOwnProperty;\n\n  ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;\n\n  XMLElement = null;\n\n  XMLCData = null;\n\n  XMLComment = null;\n\n  XMLDeclaration = null;\n\n  XMLDocType = null;\n\n  XMLRaw = null;\n\n  XMLText = null;\n\n  XMLProcessingInstruction = null;\n\n  XMLDummy = null;\n\n  NodeType = null;\n\n  XMLNodeList = null;\n\n  XMLNamedNodeMap = null;\n\n  DocumentPosition = null;\n\n  module.exports = XMLNode = (function() {\n    function XMLNode(parent1) {\n      this.parent = parent1;\n      if (this.parent) {\n        this.options = this.parent.options;\n        this.stringify = this.parent.stringify;\n      }\n      this.value = null;\n      this.children = [];\n      this.baseURI = null;\n      if (!XMLElement) {\n        XMLElement = require('./XMLElement');\n        XMLCData = require('./XMLCData');\n        XMLComment = require('./XMLComment');\n        XMLDeclaration = require('./XMLDeclaration');\n        XMLDocType = require('./XMLDocType');\n        XMLRaw = require('./XMLRaw');\n        XMLText = require('./XMLText');\n        XMLProcessingInstruction = require('./XMLProcessingInstruction');\n        XMLDummy = require('./XMLDummy');\n        NodeType = require('./NodeType');\n        XMLNodeList = require('./XMLNodeList');\n        XMLNamedNodeMap = require('./XMLNamedNodeMap');\n        DocumentPosition = require('./DocumentPosition');\n      }\n    }\n\n    Object.defineProperty(XMLNode.prototype, 'nodeName', {\n      get: function() {\n        return this.name;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'nodeType', {\n      get: function() {\n        return this.type;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'nodeValue', {\n      get: function() {\n        return this.value;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'parentNode', {\n      get: function() {\n        return this.parent;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'childNodes', {\n      get: function() {\n        if (!this.childNodeList || !this.childNodeList.nodes) {\n          this.childNodeList = new XMLNodeList(this.children);\n        }\n        return this.childNodeList;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'firstChild', {\n      get: function() {\n        return this.children[0] || null;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'lastChild', {\n      get: function() {\n        return this.children[this.children.length - 1] || null;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'previousSibling', {\n      get: function() {\n        var i;\n        i = this.parent.children.indexOf(this);\n        return this.parent.children[i - 1] || null;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'nextSibling', {\n      get: function() {\n        var i;\n        i = this.parent.children.indexOf(this);\n        return this.parent.children[i + 1] || null;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'ownerDocument', {\n      get: function() {\n        return this.document() || null;\n      }\n    });\n\n    Object.defineProperty(XMLNode.prototype, 'textContent', {\n      get: function() {\n        var child, j, len, ref2, str;\n        if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {\n          str = '';\n          ref2 = this.children;\n          for (j = 0, len = ref2.length; j < len; j++) {\n            child = ref2[j];\n            if (child.textContent) {\n              str += child.textContent;\n            }\n          }\n          return str;\n        } else {\n          return null;\n        }\n      },\n      set: function(value) {\n        throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n      }\n    });\n\n    XMLNode.prototype.setParent = function(parent) {\n      var child, j, len, ref2, results;\n      this.parent = parent;\n      if (parent) {\n        this.options = parent.options;\n        this.stringify = parent.stringify;\n      }\n      ref2 = this.children;\n      results = [];\n      for (j = 0, len = ref2.length; j < len; j++) {\n        child = ref2[j];\n        results.push(child.setParent(this));\n      }\n      return results;\n    };\n\n    XMLNode.prototype.element = function(name, attributes, text) {\n      var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;\n      lastChild = null;\n      if (attributes === null && (text == null)) {\n        ref2 = [{}, null], attributes = ref2[0], text = ref2[1];\n      }\n      if (attributes == null) {\n        attributes = {};\n      }\n      attributes = getValue(attributes);\n      if (!isObject(attributes)) {\n        ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];\n      }\n      if (name != null) {\n        name = getValue(name);\n      }\n      if (Array.isArray(name)) {\n        for (j = 0, len = name.length; j < len; j++) {\n          item = name[j];\n          lastChild = this.element(item);\n        }\n      } else if (isFunction(name)) {\n        lastChild = this.element(name.apply());\n      } else if (isObject(name)) {\n        for (key in name) {\n          if (!hasProp.call(name, key)) continue;\n          val = name[key];\n          if (isFunction(val)) {\n            val = val.apply();\n          }\n          if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n            lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n          } else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {\n            lastChild = this.dummy();\n          } else if (isObject(val) && isEmpty(val)) {\n            lastChild = this.element(key);\n          } else if (!this.options.keepNullNodes && (val == null)) {\n            lastChild = this.dummy();\n          } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n            for (k = 0, len1 = val.length; k < len1; k++) {\n              item = val[k];\n              childNode = {};\n              childNode[key] = item;\n              lastChild = this.element(childNode);\n            }\n          } else if (isObject(val)) {\n            if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {\n              lastChild = this.element(val);\n            } else {\n              lastChild = this.element(key);\n              lastChild.element(val);\n            }\n          } else {\n            lastChild = this.element(key, val);\n          }\n        }\n      } else if (!this.options.keepNullNodes && text === null) {\n        lastChild = this.dummy();\n      } else {\n        if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n          lastChild = this.text(text);\n        } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n          lastChild = this.cdata(text);\n        } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n          lastChild = this.comment(text);\n        } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n          lastChild = this.raw(text);\n        } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n          lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n        } else {\n          lastChild = this.node(name, attributes, text);\n        }\n      }\n      if (lastChild == null) {\n        throw new Error(\"Could not create any elements with: \" + name + \". \" + this.debugInfo());\n      }\n      return lastChild;\n    };\n\n    XMLNode.prototype.insertBefore = function(name, attributes, text) {\n      var child, i, newChild, refChild, removed;\n      if (name != null ? name.type : void 0) {\n        newChild = name;\n        refChild = attributes;\n        newChild.setParent(this);\n        if (refChild) {\n          i = children.indexOf(refChild);\n          removed = children.splice(i);\n          children.push(newChild);\n          Array.prototype.push.apply(children, removed);\n        } else {\n          children.push(newChild);\n        }\n        return newChild;\n      } else {\n        if (this.isRoot) {\n          throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n        }\n        i = this.parent.children.indexOf(this);\n        removed = this.parent.children.splice(i);\n        child = this.parent.element(name, attributes, text);\n        Array.prototype.push.apply(this.parent.children, removed);\n        return child;\n      }\n    };\n\n    XMLNode.prototype.insertAfter = function(name, attributes, text) {\n      var child, i, removed;\n      if (this.isRoot) {\n        throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n      }\n      i = this.parent.children.indexOf(this);\n      removed = this.parent.children.splice(i + 1);\n      child = this.parent.element(name, attributes, text);\n      Array.prototype.push.apply(this.parent.children, removed);\n      return child;\n    };\n\n    XMLNode.prototype.remove = function() {\n      var i, ref2;\n      if (this.isRoot) {\n        throw new Error(\"Cannot remove the root element. \" + this.debugInfo());\n      }\n      i = this.parent.children.indexOf(this);\n      [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;\n      return this.parent;\n    };\n\n    XMLNode.prototype.node = function(name, attributes, text) {\n      var child, ref2;\n      if (name != null) {\n        name = getValue(name);\n      }\n      attributes || (attributes = {});\n      attributes = getValue(attributes);\n      if (!isObject(attributes)) {\n        ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];\n      }\n      child = new XMLElement(this, name, attributes);\n      if (text != null) {\n        child.text(text);\n      }\n      this.children.push(child);\n      return child;\n    };\n\n    XMLNode.prototype.text = function(value) {\n      var child;\n      if (isObject(value)) {\n        this.element(value);\n      }\n      child = new XMLText(this, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLNode.prototype.cdata = function(value) {\n      var child;\n      child = new XMLCData(this, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLNode.prototype.comment = function(value) {\n      var child;\n      child = new XMLComment(this, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLNode.prototype.commentBefore = function(value) {\n      var child, i, removed;\n      i = this.parent.children.indexOf(this);\n      removed = this.parent.children.splice(i);\n      child = this.parent.comment(value);\n      Array.prototype.push.apply(this.parent.children, removed);\n      return this;\n    };\n\n    XMLNode.prototype.commentAfter = function(value) {\n      var child, i, removed;\n      i = this.parent.children.indexOf(this);\n      removed = this.parent.children.splice(i + 1);\n      child = this.parent.comment(value);\n      Array.prototype.push.apply(this.parent.children, removed);\n      return this;\n    };\n\n    XMLNode.prototype.raw = function(value) {\n      var child;\n      child = new XMLRaw(this, value);\n      this.children.push(child);\n      return this;\n    };\n\n    XMLNode.prototype.dummy = function() {\n      var child;\n      child = new XMLDummy(this);\n      return child;\n    };\n\n    XMLNode.prototype.instruction = function(target, value) {\n      var insTarget, insValue, instruction, j, len;\n      if (target != null) {\n        target = getValue(target);\n      }\n      if (value != null) {\n        value = getValue(value);\n      }\n      if (Array.isArray(target)) {\n        for (j = 0, len = target.length; j < len; j++) {\n          insTarget = target[j];\n          this.instruction(insTarget);\n        }\n      } else if (isObject(target)) {\n        for (insTarget in target) {\n          if (!hasProp.call(target, insTarget)) continue;\n          insValue = target[insTarget];\n          this.instruction(insTarget, insValue);\n        }\n      } else {\n        if (isFunction(value)) {\n          value = value.apply();\n        }\n        instruction = new XMLProcessingInstruction(this, target, value);\n        this.children.push(instruction);\n      }\n      return this;\n    };\n\n    XMLNode.prototype.instructionBefore = function(target, value) {\n      var child, i, removed;\n      i = this.parent.children.indexOf(this);\n      removed = this.parent.children.splice(i);\n      child = this.parent.instruction(target, value);\n      Array.prototype.push.apply(this.parent.children, removed);\n      return this;\n    };\n\n    XMLNode.prototype.instructionAfter = function(target, value) {\n      var child, i, removed;\n      i = this.parent.children.indexOf(this);\n      removed = this.parent.children.splice(i + 1);\n      child = this.parent.instruction(target, value);\n      Array.prototype.push.apply(this.parent.children, removed);\n      return this;\n    };\n\n    XMLNode.prototype.declaration = function(version, encoding, standalone) {\n      var doc, xmldec;\n      doc = this.document();\n      xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n      if (doc.children.length === 0) {\n        doc.children.unshift(xmldec);\n      } else if (doc.children[0].type === NodeType.Declaration) {\n        doc.children[0] = xmldec;\n      } else {\n        doc.children.unshift(xmldec);\n      }\n      return doc.root() || doc;\n    };\n\n    XMLNode.prototype.dtd = function(pubID, sysID) {\n      var child, doc, doctype, i, j, k, len, len1, ref2, ref3;\n      doc = this.document();\n      doctype = new XMLDocType(doc, pubID, sysID);\n      ref2 = doc.children;\n      for (i = j = 0, len = ref2.length; j < len; i = ++j) {\n        child = ref2[i];\n        if (child.type === NodeType.DocType) {\n          doc.children[i] = doctype;\n          return doctype;\n        }\n      }\n      ref3 = doc.children;\n      for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {\n        child = ref3[i];\n        if (child.isRoot) {\n          doc.children.splice(i, 0, doctype);\n          return doctype;\n        }\n      }\n      doc.children.push(doctype);\n      return doctype;\n    };\n\n    XMLNode.prototype.up = function() {\n      if (this.isRoot) {\n        throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n      }\n      return this.parent;\n    };\n\n    XMLNode.prototype.root = function() {\n      var node;\n      node = this;\n      while (node) {\n        if (node.type === NodeType.Document) {\n          return node.rootObject;\n        } else if (node.isRoot) {\n          return node;\n        } else {\n          node = node.parent;\n        }\n      }\n    };\n\n    XMLNode.prototype.document = function() {\n      var node;\n      node = this;\n      while (node) {\n        if (node.type === NodeType.Document) {\n          return node;\n        } else {\n          node = node.parent;\n        }\n      }\n    };\n\n    XMLNode.prototype.end = function(options) {\n      return this.document().end(options);\n    };\n\n    XMLNode.prototype.prev = function() {\n      var i;\n      i = this.parent.children.indexOf(this);\n      if (i < 1) {\n        throw new Error(\"Already at the first node. \" + this.debugInfo());\n      }\n      return this.parent.children[i - 1];\n    };\n\n    XMLNode.prototype.next = function() {\n      var i;\n      i = this.parent.children.indexOf(this);\n      if (i === -1 || i === this.parent.children.length - 1) {\n        throw new Error(\"Already at the last node. \" + this.debugInfo());\n      }\n      return this.parent.children[i + 1];\n    };\n\n    XMLNode.prototype.importDocument = function(doc) {\n      var clonedRoot;\n      clonedRoot = doc.root().clone();\n      clonedRoot.parent = this;\n      clonedRoot.isRoot = false;\n      this.children.push(clonedRoot);\n      return this;\n    };\n\n    XMLNode.prototype.debugInfo = function(name) {\n      var ref2, ref3;\n      name = name || this.name;\n      if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {\n        return \"\";\n      } else if (name == null) {\n        return \"parent: <\" + this.parent.name + \">\";\n      } else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {\n        return \"node: <\" + name + \">\";\n      } else {\n        return \"node: <\" + name + \">, parent: <\" + this.parent.name + \">\";\n      }\n    };\n\n    XMLNode.prototype.ele = function(name, attributes, text) {\n      return this.element(name, attributes, text);\n    };\n\n    XMLNode.prototype.nod = function(name, attributes, text) {\n      return this.node(name, attributes, text);\n    };\n\n    XMLNode.prototype.txt = function(value) {\n      return this.text(value);\n    };\n\n    XMLNode.prototype.dat = function(value) {\n      return this.cdata(value);\n    };\n\n    XMLNode.prototype.com = function(value) {\n      return this.comment(value);\n    };\n\n    XMLNode.prototype.ins = function(target, value) {\n      return this.instruction(target, value);\n    };\n\n    XMLNode.prototype.doc = function() {\n      return this.document();\n    };\n\n    XMLNode.prototype.dec = function(version, encoding, standalone) {\n      return this.declaration(version, encoding, standalone);\n    };\n\n    XMLNode.prototype.e = function(name, attributes, text) {\n      return this.element(name, attributes, text);\n    };\n\n    XMLNode.prototype.n = function(name, attributes, text) {\n      return this.node(name, attributes, text);\n    };\n\n    XMLNode.prototype.t = function(value) {\n      return this.text(value);\n    };\n\n    XMLNode.prototype.d = function(value) {\n      return this.cdata(value);\n    };\n\n    XMLNode.prototype.c = function(value) {\n      return this.comment(value);\n    };\n\n    XMLNode.prototype.r = function(value) {\n      return this.raw(value);\n    };\n\n    XMLNode.prototype.i = function(target, value) {\n      return this.instruction(target, value);\n    };\n\n    XMLNode.prototype.u = function() {\n      return this.up();\n    };\n\n    XMLNode.prototype.importXMLBuilder = function(doc) {\n      return this.importDocument(doc);\n    };\n\n    XMLNode.prototype.replaceChild = function(newChild, oldChild) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.removeChild = function(oldChild) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.appendChild = function(newChild) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.hasChildNodes = function() {\n      return this.children.length !== 0;\n    };\n\n    XMLNode.prototype.cloneNode = function(deep) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.normalize = function() {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.isSupported = function(feature, version) {\n      return true;\n    };\n\n    XMLNode.prototype.hasAttributes = function() {\n      return this.attribs.length !== 0;\n    };\n\n    XMLNode.prototype.compareDocumentPosition = function(other) {\n      var ref, res;\n      ref = this;\n      if (ref === other) {\n        return 0;\n      } else if (this.document() !== other.document()) {\n        res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;\n        if (Math.random() < 0.5) {\n          res |= DocumentPosition.Preceding;\n        } else {\n          res |= DocumentPosition.Following;\n        }\n        return res;\n      } else if (ref.isAncestor(other)) {\n        return DocumentPosition.Contains | DocumentPosition.Preceding;\n      } else if (ref.isDescendant(other)) {\n        return DocumentPosition.Contains | DocumentPosition.Following;\n      } else if (ref.isPreceding(other)) {\n        return DocumentPosition.Preceding;\n      } else {\n        return DocumentPosition.Following;\n      }\n    };\n\n    XMLNode.prototype.isSameNode = function(other) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.lookupPrefix = function(namespaceURI) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.lookupNamespaceURI = function(prefix) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.isEqualNode = function(node) {\n      var i, j, ref2;\n      if (node.nodeType !== this.nodeType) {\n        return false;\n      }\n      if (node.children.length !== this.children.length) {\n        return false;\n      }\n      for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {\n        if (!this.children[i].isEqualNode(node.children[i])) {\n          return false;\n        }\n      }\n      return true;\n    };\n\n    XMLNode.prototype.getFeature = function(feature, version) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.setUserData = function(key, data, handler) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.getUserData = function(key) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLNode.prototype.contains = function(other) {\n      if (!other) {\n        return false;\n      }\n      return other === this || this.isDescendant(other);\n    };\n\n    XMLNode.prototype.isDescendant = function(node) {\n      var child, isDescendantChild, j, len, ref2;\n      ref2 = this.children;\n      for (j = 0, len = ref2.length; j < len; j++) {\n        child = ref2[j];\n        if (node === child) {\n          return true;\n        }\n        isDescendantChild = child.isDescendant(node);\n        if (isDescendantChild) {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    XMLNode.prototype.isAncestor = function(node) {\n      return node.isDescendant(this);\n    };\n\n    XMLNode.prototype.isPreceding = function(node) {\n      var nodePos, thisPos;\n      nodePos = this.treePosition(node);\n      thisPos = this.treePosition(this);\n      if (nodePos === -1 || thisPos === -1) {\n        return false;\n      } else {\n        return nodePos < thisPos;\n      }\n    };\n\n    XMLNode.prototype.isFollowing = function(node) {\n      var nodePos, thisPos;\n      nodePos = this.treePosition(node);\n      thisPos = this.treePosition(this);\n      if (nodePos === -1 || thisPos === -1) {\n        return false;\n      } else {\n        return nodePos > thisPos;\n      }\n    };\n\n    XMLNode.prototype.treePosition = function(node) {\n      var found, pos;\n      pos = 0;\n      found = false;\n      this.foreachTreeNode(this.document(), function(childNode) {\n        pos++;\n        if (!found && childNode === node) {\n          return found = true;\n        }\n      });\n      if (found) {\n        return pos;\n      } else {\n        return -1;\n      }\n    };\n\n    XMLNode.prototype.foreachTreeNode = function(node, func) {\n      var child, j, len, ref2, res;\n      node || (node = this.document());\n      ref2 = node.children;\n      for (j = 0, len = ref2.length; j < len; j++) {\n        child = ref2[j];\n        if (res = func(child)) {\n          return res;\n        } else {\n          res = this.foreachTreeNode(child, func);\n          if (res) {\n            return res;\n          }\n        }\n      }\n    };\n\n    return XMLNode;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLStringifier,\n    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n    hasProp = {}.hasOwnProperty;\n\n  module.exports = XMLStringifier = (function() {\n    function XMLStringifier(options) {\n      this.assertLegalName = bind(this.assertLegalName, this);\n      this.assertLegalChar = bind(this.assertLegalChar, this);\n      var key, ref, value;\n      options || (options = {});\n      this.options = options;\n      if (!this.options.version) {\n        this.options.version = '1.0';\n      }\n      ref = options.stringify || {};\n      for (key in ref) {\n        if (!hasProp.call(ref, key)) continue;\n        value = ref[key];\n        this[key] = value;\n      }\n    }\n\n    XMLStringifier.prototype.name = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalName('' + val || '');\n    };\n\n    XMLStringifier.prototype.text = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar(this.textEscape('' + val || ''));\n    };\n\n    XMLStringifier.prototype.cdata = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      val = '' + val || '';\n      val = val.replace(']]>', ']]]]><![CDATA[>');\n      return this.assertLegalChar(val);\n    };\n\n    XMLStringifier.prototype.comment = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      val = '' + val || '';\n      if (val.match(/--/)) {\n        throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n      }\n      return this.assertLegalChar(val);\n    };\n\n    XMLStringifier.prototype.raw = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return '' + val || '';\n    };\n\n    XMLStringifier.prototype.attValue = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar(this.attEscape(val = '' + val || ''));\n    };\n\n    XMLStringifier.prototype.insTarget = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.insValue = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      val = '' + val || '';\n      if (val.match(/\\?>/)) {\n        throw new Error(\"Invalid processing instruction value: \" + val);\n      }\n      return this.assertLegalChar(val);\n    };\n\n    XMLStringifier.prototype.xmlVersion = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      val = '' + val || '';\n      if (!val.match(/1\\.[0-9]+/)) {\n        throw new Error(\"Invalid version number: \" + val);\n      }\n      return val;\n    };\n\n    XMLStringifier.prototype.xmlEncoding = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      val = '' + val || '';\n      if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n        throw new Error(\"Invalid encoding: \" + val);\n      }\n      return this.assertLegalChar(val);\n    };\n\n    XMLStringifier.prototype.xmlStandalone = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      if (val) {\n        return \"yes\";\n      } else {\n        return \"no\";\n      }\n    };\n\n    XMLStringifier.prototype.dtdPubID = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.dtdSysID = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.dtdElementValue = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.dtdAttType = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.dtdAttDefault = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.dtdEntityValue = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.dtdNData = function(val) {\n      if (this.options.noValidation) {\n        return val;\n      }\n      return this.assertLegalChar('' + val || '');\n    };\n\n    XMLStringifier.prototype.convertAttKey = '@';\n\n    XMLStringifier.prototype.convertPIKey = '?';\n\n    XMLStringifier.prototype.convertTextKey = '#text';\n\n    XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n    XMLStringifier.prototype.convertCommentKey = '#comment';\n\n    XMLStringifier.prototype.convertRawKey = '#raw';\n\n    XMLStringifier.prototype.assertLegalChar = function(str) {\n      var regex, res;\n      if (this.options.noValidation) {\n        return str;\n      }\n      regex = '';\n      if (this.options.version === '1.0') {\n        regex = /[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n        if (res = str.match(regex)) {\n          throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n        }\n      } else if (this.options.version === '1.1') {\n        regex = /[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n        if (res = str.match(regex)) {\n          throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n        }\n      }\n      return str;\n    };\n\n    XMLStringifier.prototype.assertLegalName = function(str) {\n      var regex;\n      if (this.options.noValidation) {\n        return str;\n      }\n      this.assertLegalChar(str);\n      regex = /^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])([\\x2D\\.0-:A-Z_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n      if (!str.match(regex)) {\n        throw new Error(\"Invalid character in name\");\n      }\n      return str;\n    };\n\n    XMLStringifier.prototype.textEscape = function(str) {\n      var ampregex;\n      if (this.options.noValidation) {\n        return str;\n      }\n      ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n      return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\r/g, '&#xD;');\n    };\n\n    XMLStringifier.prototype.attEscape = function(str) {\n      var ampregex;\n      if (this.options.noValidation) {\n        return str;\n      }\n      ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n      return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\n    };\n\n    return XMLStringifier;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  module.exports = {\n    None: 0,\n    OpenTag: 1,\n    InsideTag: 2,\n    CloseTag: 3\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,\n    hasProp = {}.hasOwnProperty;\n\n  assign = require('./Utility').assign;\n\n  NodeType = require('./NodeType');\n\n  XMLDeclaration = require('./XMLDeclaration');\n\n  XMLDocType = require('./XMLDocType');\n\n  XMLCData = require('./XMLCData');\n\n  XMLComment = require('./XMLComment');\n\n  XMLElement = require('./XMLElement');\n\n  XMLRaw = require('./XMLRaw');\n\n  XMLText = require('./XMLText');\n\n  XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n  XMLDummy = require('./XMLDummy');\n\n  XMLDTDAttList = require('./XMLDTDAttList');\n\n  XMLDTDElement = require('./XMLDTDElement');\n\n  XMLDTDEntity = require('./XMLDTDEntity');\n\n  XMLDTDNotation = require('./XMLDTDNotation');\n\n  WriterState = require('./WriterState');\n\n  module.exports = XMLWriterBase = (function() {\n    function XMLWriterBase(options) {\n      var key, ref, value;\n      options || (options = {});\n      this.options = options;\n      ref = options.writer || {};\n      for (key in ref) {\n        if (!hasProp.call(ref, key)) continue;\n        value = ref[key];\n        this[\"_\" + key] = this[key];\n        this[key] = value;\n      }\n    }\n\n    XMLWriterBase.prototype.filterOptions = function(options) {\n      var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;\n      options || (options = {});\n      options = assign({}, this.options, options);\n      filteredOptions = {\n        writer: this\n      };\n      filteredOptions.pretty = options.pretty || false;\n      filteredOptions.allowEmpty = options.allowEmpty || false;\n      filteredOptions.indent = (ref = options.indent) != null ? ref : '  ';\n      filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\\n';\n      filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;\n      filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;\n      filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';\n      if (filteredOptions.spaceBeforeSlash === true) {\n        filteredOptions.spaceBeforeSlash = ' ';\n      }\n      filteredOptions.suppressPrettyCount = 0;\n      filteredOptions.user = {};\n      filteredOptions.state = WriterState.None;\n      return filteredOptions;\n    };\n\n    XMLWriterBase.prototype.indent = function(node, options, level) {\n      var indentLevel;\n      if (!options.pretty || options.suppressPrettyCount) {\n        return '';\n      } else if (options.pretty) {\n        indentLevel = (level || 0) + options.offset + 1;\n        if (indentLevel > 0) {\n          return new Array(indentLevel).join(options.indent);\n        }\n      }\n      return '';\n    };\n\n    XMLWriterBase.prototype.endline = function(node, options, level) {\n      if (!options.pretty || options.suppressPrettyCount) {\n        return '';\n      } else {\n        return options.newline;\n      }\n    };\n\n    XMLWriterBase.prototype.attribute = function(att, options, level) {\n      var r;\n      this.openAttribute(att, options, level);\n      r = ' ' + att.name + '=\"' + att.value + '\"';\n      this.closeAttribute(att, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.cdata = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<![CDATA[';\n      options.state = WriterState.InsideTag;\n      r += node.value;\n      options.state = WriterState.CloseTag;\n      r += ']]>' + this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.comment = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<!-- ';\n      options.state = WriterState.InsideTag;\n      r += node.value;\n      options.state = WriterState.CloseTag;\n      r += ' -->' + this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.declaration = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<?xml';\n      options.state = WriterState.InsideTag;\n      r += ' version=\"' + node.version + '\"';\n      if (node.encoding != null) {\n        r += ' encoding=\"' + node.encoding + '\"';\n      }\n      if (node.standalone != null) {\n        r += ' standalone=\"' + node.standalone + '\"';\n      }\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '?>';\n      r += this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.docType = function(node, options, level) {\n      var child, i, len, r, ref;\n      level || (level = 0);\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level);\n      r += '<!DOCTYPE ' + node.root().name;\n      if (node.pubID && node.sysID) {\n        r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n      } else if (node.sysID) {\n        r += ' SYSTEM \"' + node.sysID + '\"';\n      }\n      if (node.children.length > 0) {\n        r += ' [';\n        r += this.endline(node, options, level);\n        options.state = WriterState.InsideTag;\n        ref = node.children;\n        for (i = 0, len = ref.length; i < len; i++) {\n          child = ref[i];\n          r += this.writeChildNode(child, options, level + 1);\n        }\n        options.state = WriterState.CloseTag;\n        r += ']';\n      }\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '>';\n      r += this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.element = function(node, options, level) {\n      var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;\n      level || (level = 0);\n      prettySuppressed = false;\n      r = '';\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r += this.indent(node, options, level) + '<' + node.name;\n      ref = node.attribs;\n      for (name in ref) {\n        if (!hasProp.call(ref, name)) continue;\n        att = ref[name];\n        r += this.attribute(att, options, level);\n      }\n      childNodeCount = node.children.length;\n      firstChildNode = childNodeCount === 0 ? null : node.children[0];\n      if (childNodeCount === 0 || node.children.every(function(e) {\n        return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n      })) {\n        if (options.allowEmpty) {\n          r += '>';\n          options.state = WriterState.CloseTag;\n          r += '</' + node.name + '>' + this.endline(node, options, level);\n        } else {\n          options.state = WriterState.CloseTag;\n          r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);\n        }\n      } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n        r += '>';\n        options.state = WriterState.InsideTag;\n        options.suppressPrettyCount++;\n        prettySuppressed = true;\n        r += this.writeChildNode(firstChildNode, options, level + 1);\n        options.suppressPrettyCount--;\n        prettySuppressed = false;\n        options.state = WriterState.CloseTag;\n        r += '</' + node.name + '>' + this.endline(node, options, level);\n      } else {\n        if (options.dontPrettyTextNodes) {\n          ref1 = node.children;\n          for (i = 0, len = ref1.length; i < len; i++) {\n            child = ref1[i];\n            if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {\n              options.suppressPrettyCount++;\n              prettySuppressed = true;\n              break;\n            }\n          }\n        }\n        r += '>' + this.endline(node, options, level);\n        options.state = WriterState.InsideTag;\n        ref2 = node.children;\n        for (j = 0, len1 = ref2.length; j < len1; j++) {\n          child = ref2[j];\n          r += this.writeChildNode(child, options, level + 1);\n        }\n        options.state = WriterState.CloseTag;\n        r += this.indent(node, options, level) + '</' + node.name + '>';\n        if (prettySuppressed) {\n          options.suppressPrettyCount--;\n        }\n        r += this.endline(node, options, level);\n        options.state = WriterState.None;\n      }\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.writeChildNode = function(node, options, level) {\n      switch (node.type) {\n        case NodeType.CData:\n          return this.cdata(node, options, level);\n        case NodeType.Comment:\n          return this.comment(node, options, level);\n        case NodeType.Element:\n          return this.element(node, options, level);\n        case NodeType.Raw:\n          return this.raw(node, options, level);\n        case NodeType.Text:\n          return this.text(node, options, level);\n        case NodeType.ProcessingInstruction:\n          return this.processingInstruction(node, options, level);\n        case NodeType.Dummy:\n          return '';\n        case NodeType.Declaration:\n          return this.declaration(node, options, level);\n        case NodeType.DocType:\n          return this.docType(node, options, level);\n        case NodeType.AttributeDeclaration:\n          return this.dtdAttList(node, options, level);\n        case NodeType.ElementDeclaration:\n          return this.dtdElement(node, options, level);\n        case NodeType.EntityDeclaration:\n          return this.dtdEntity(node, options, level);\n        case NodeType.NotationDeclaration:\n          return this.dtdNotation(node, options, level);\n        default:\n          throw new Error(\"Unknown XML node type: \" + node.constructor.name);\n      }\n    };\n\n    XMLWriterBase.prototype.processingInstruction = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<?';\n      options.state = WriterState.InsideTag;\n      r += node.target;\n      if (node.value) {\n        r += ' ' + node.value;\n      }\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '?>';\n      r += this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.raw = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level);\n      options.state = WriterState.InsideTag;\n      r += node.value;\n      options.state = WriterState.CloseTag;\n      r += this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.text = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level);\n      options.state = WriterState.InsideTag;\n      r += node.value;\n      options.state = WriterState.CloseTag;\n      r += this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.dtdAttList = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<!ATTLIST';\n      options.state = WriterState.InsideTag;\n      r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;\n      if (node.defaultValueType !== '#DEFAULT') {\n        r += ' ' + node.defaultValueType;\n      }\n      if (node.defaultValue) {\n        r += ' \"' + node.defaultValue + '\"';\n      }\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.dtdElement = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<!ELEMENT';\n      options.state = WriterState.InsideTag;\n      r += ' ' + node.name + ' ' + node.value;\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.dtdEntity = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<!ENTITY';\n      options.state = WriterState.InsideTag;\n      if (node.pe) {\n        r += ' %';\n      }\n      r += ' ' + node.name;\n      if (node.value) {\n        r += ' \"' + node.value + '\"';\n      } else {\n        if (node.pubID && node.sysID) {\n          r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n        } else if (node.sysID) {\n          r += ' SYSTEM \"' + node.sysID + '\"';\n        }\n        if (node.nData) {\n          r += ' NDATA ' + node.nData;\n        }\n      }\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.dtdNotation = function(node, options, level) {\n      var r;\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      r = this.indent(node, options, level) + '<!NOTATION';\n      options.state = WriterState.InsideTag;\n      r += ' ' + node.name;\n      if (node.pubID && node.sysID) {\n        r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n      } else if (node.pubID) {\n        r += ' PUBLIC \"' + node.pubID + '\"';\n      } else if (node.sysID) {\n        r += ' SYSTEM \"' + node.sysID + '\"';\n      }\n      options.state = WriterState.CloseTag;\n      r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n      options.state = WriterState.None;\n      this.closeNode(node, options, level);\n      return r;\n    };\n\n    XMLWriterBase.prototype.openNode = function(node, options, level) {};\n\n    XMLWriterBase.prototype.closeNode = function(node, options, level) {};\n\n    XMLWriterBase.prototype.openAttribute = function(att, options, level) {};\n\n    XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};\n\n    return XMLWriterBase;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var XMLStringWriter, XMLWriterBase,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  XMLWriterBase = require('./XMLWriterBase');\n\n  module.exports = XMLStringWriter = (function(superClass) {\n    extend(XMLStringWriter, superClass);\n\n    function XMLStringWriter(options) {\n      XMLStringWriter.__super__.constructor.call(this, options);\n    }\n\n    XMLStringWriter.prototype.document = function(doc, options) {\n      var child, i, len, r, ref;\n      options = this.filterOptions(options);\n      r = '';\n      ref = doc.children;\n      for (i = 0, len = ref.length; i < len; i++) {\n        child = ref[i];\n        r += this.writeChildNode(child, options, 0);\n      }\n      if (options.pretty && r.slice(-options.newline.length) === options.newline) {\n        r = r.slice(0, -options.newline.length);\n      }\n      return r;\n    };\n\n    return XMLStringWriter;\n\n  })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  isPlainObject = require('./Utility').isPlainObject;\n\n  XMLDOMImplementation = require('./XMLDOMImplementation');\n\n  XMLDOMConfiguration = require('./XMLDOMConfiguration');\n\n  XMLNode = require('./XMLNode');\n\n  NodeType = require('./NodeType');\n\n  XMLStringifier = require('./XMLStringifier');\n\n  XMLStringWriter = require('./XMLStringWriter');\n\n  module.exports = XMLDocument = (function(superClass) {\n    extend(XMLDocument, superClass);\n\n    function XMLDocument(options) {\n      XMLDocument.__super__.constructor.call(this, null);\n      this.name = \"#document\";\n      this.type = NodeType.Document;\n      this.documentURI = null;\n      this.domConfig = new XMLDOMConfiguration();\n      options || (options = {});\n      if (!options.writer) {\n        options.writer = new XMLStringWriter();\n      }\n      this.options = options;\n      this.stringify = new XMLStringifier(options);\n    }\n\n    Object.defineProperty(XMLDocument.prototype, 'implementation', {\n      value: new XMLDOMImplementation()\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'doctype', {\n      get: function() {\n        var child, i, len, ref;\n        ref = this.children;\n        for (i = 0, len = ref.length; i < len; i++) {\n          child = ref[i];\n          if (child.type === NodeType.DocType) {\n            return child;\n          }\n        }\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'documentElement', {\n      get: function() {\n        return this.rootObject || null;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {\n      get: function() {\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {\n      get: function() {\n        return false;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {\n      get: function() {\n        if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n          return this.children[0].encoding;\n        } else {\n          return null;\n        }\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {\n      get: function() {\n        if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n          return this.children[0].standalone === 'yes';\n        } else {\n          return false;\n        }\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {\n      get: function() {\n        if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n          return this.children[0].version;\n        } else {\n          return \"1.0\";\n        }\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'URL', {\n      get: function() {\n        return this.documentURI;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'origin', {\n      get: function() {\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'compatMode', {\n      get: function() {\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'characterSet', {\n      get: function() {\n        return null;\n      }\n    });\n\n    Object.defineProperty(XMLDocument.prototype, 'contentType', {\n      get: function() {\n        return null;\n      }\n    });\n\n    XMLDocument.prototype.end = function(writer) {\n      var writerOptions;\n      writerOptions = {};\n      if (!writer) {\n        writer = this.options.writer;\n      } else if (isPlainObject(writer)) {\n        writerOptions = writer;\n        writer = this.options.writer;\n      }\n      return writer.document(this, writer.filterOptions(writerOptions));\n    };\n\n    XMLDocument.prototype.toString = function(options) {\n      return this.options.writer.document(this, this.options.writer.filterOptions(options));\n    };\n\n    XMLDocument.prototype.createElement = function(tagName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createDocumentFragment = function() {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createTextNode = function(data) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createComment = function(data) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createCDATASection = function(data) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createProcessingInstruction = function(target, data) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createAttribute = function(name) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createEntityReference = function(name) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.getElementsByTagName = function(tagname) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.importNode = function(importedNode, deep) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.getElementById = function(elementId) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.adoptNode = function(source) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.normalizeDocument = function() {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.getElementsByClassName = function(classNames) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createEvent = function(eventInterface) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createRange = function() {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {\n      throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n    };\n\n    return XMLDocument;\n\n  })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,\n    hasProp = {}.hasOwnProperty;\n\n  ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;\n\n  NodeType = require('./NodeType');\n\n  XMLDocument = require('./XMLDocument');\n\n  XMLElement = require('./XMLElement');\n\n  XMLCData = require('./XMLCData');\n\n  XMLComment = require('./XMLComment');\n\n  XMLRaw = require('./XMLRaw');\n\n  XMLText = require('./XMLText');\n\n  XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n  XMLDeclaration = require('./XMLDeclaration');\n\n  XMLDocType = require('./XMLDocType');\n\n  XMLDTDAttList = require('./XMLDTDAttList');\n\n  XMLDTDEntity = require('./XMLDTDEntity');\n\n  XMLDTDElement = require('./XMLDTDElement');\n\n  XMLDTDNotation = require('./XMLDTDNotation');\n\n  XMLAttribute = require('./XMLAttribute');\n\n  XMLStringifier = require('./XMLStringifier');\n\n  XMLStringWriter = require('./XMLStringWriter');\n\n  WriterState = require('./WriterState');\n\n  module.exports = XMLDocumentCB = (function() {\n    function XMLDocumentCB(options, onData, onEnd) {\n      var writerOptions;\n      this.name = \"?xml\";\n      this.type = NodeType.Document;\n      options || (options = {});\n      writerOptions = {};\n      if (!options.writer) {\n        options.writer = new XMLStringWriter();\n      } else if (isPlainObject(options.writer)) {\n        writerOptions = options.writer;\n        options.writer = new XMLStringWriter();\n      }\n      this.options = options;\n      this.writer = options.writer;\n      this.writerOptions = this.writer.filterOptions(writerOptions);\n      this.stringify = new XMLStringifier(options);\n      this.onDataCallback = onData || function() {};\n      this.onEndCallback = onEnd || function() {};\n      this.currentNode = null;\n      this.currentLevel = -1;\n      this.openTags = {};\n      this.documentStarted = false;\n      this.documentCompleted = false;\n      this.root = null;\n    }\n\n    XMLDocumentCB.prototype.createChildNode = function(node) {\n      var att, attName, attributes, child, i, len, ref1, ref2;\n      switch (node.type) {\n        case NodeType.CData:\n          this.cdata(node.value);\n          break;\n        case NodeType.Comment:\n          this.comment(node.value);\n          break;\n        case NodeType.Element:\n          attributes = {};\n          ref1 = node.attribs;\n          for (attName in ref1) {\n            if (!hasProp.call(ref1, attName)) continue;\n            att = ref1[attName];\n            attributes[attName] = att.value;\n          }\n          this.node(node.name, attributes);\n          break;\n        case NodeType.Dummy:\n          this.dummy();\n          break;\n        case NodeType.Raw:\n          this.raw(node.value);\n          break;\n        case NodeType.Text:\n          this.text(node.value);\n          break;\n        case NodeType.ProcessingInstruction:\n          this.instruction(node.target, node.value);\n          break;\n        default:\n          throw new Error(\"This XML node type is not supported in a JS object: \" + node.constructor.name);\n      }\n      ref2 = node.children;\n      for (i = 0, len = ref2.length; i < len; i++) {\n        child = ref2[i];\n        this.createChildNode(child);\n        if (child.type === NodeType.Element) {\n          this.up();\n        }\n      }\n      return this;\n    };\n\n    XMLDocumentCB.prototype.dummy = function() {\n      return this;\n    };\n\n    XMLDocumentCB.prototype.node = function(name, attributes, text) {\n      var ref1;\n      if (name == null) {\n        throw new Error(\"Missing node name.\");\n      }\n      if (this.root && this.currentLevel === -1) {\n        throw new Error(\"Document can only have one root node. \" + this.debugInfo(name));\n      }\n      this.openCurrent();\n      name = getValue(name);\n      if (attributes == null) {\n        attributes = {};\n      }\n      attributes = getValue(attributes);\n      if (!isObject(attributes)) {\n        ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n      }\n      this.currentNode = new XMLElement(this, name, attributes);\n      this.currentNode.children = false;\n      this.currentLevel++;\n      this.openTags[this.currentLevel] = this.currentNode;\n      if (text != null) {\n        this.text(text);\n      }\n      return this;\n    };\n\n    XMLDocumentCB.prototype.element = function(name, attributes, text) {\n      var child, i, len, oldValidationFlag, ref1, root;\n      if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n        this.dtdElement.apply(this, arguments);\n      } else {\n        if (Array.isArray(name) || isObject(name) || isFunction(name)) {\n          oldValidationFlag = this.options.noValidation;\n          this.options.noValidation = true;\n          root = new XMLDocument(this.options).element('TEMP_ROOT');\n          root.element(name);\n          this.options.noValidation = oldValidationFlag;\n          ref1 = root.children;\n          for (i = 0, len = ref1.length; i < len; i++) {\n            child = ref1[i];\n            this.createChildNode(child);\n            if (child.type === NodeType.Element) {\n              this.up();\n            }\n          }\n        } else {\n          this.node(name, attributes, text);\n        }\n      }\n      return this;\n    };\n\n    XMLDocumentCB.prototype.attribute = function(name, value) {\n      var attName, attValue;\n      if (!this.currentNode || this.currentNode.children) {\n        throw new Error(\"att() can only be used immediately after an ele() call in callback mode. \" + this.debugInfo(name));\n      }\n      if (name != null) {\n        name = getValue(name);\n      }\n      if (isObject(name)) {\n        for (attName in name) {\n          if (!hasProp.call(name, attName)) continue;\n          attValue = name[attName];\n          this.attribute(attName, attValue);\n        }\n      } else {\n        if (isFunction(value)) {\n          value = value.apply();\n        }\n        if (this.options.keepNullAttributes && (value == null)) {\n          this.currentNode.attribs[name] = new XMLAttribute(this, name, \"\");\n        } else if (value != null) {\n          this.currentNode.attribs[name] = new XMLAttribute(this, name, value);\n        }\n      }\n      return this;\n    };\n\n    XMLDocumentCB.prototype.text = function(value) {\n      var node;\n      this.openCurrent();\n      node = new XMLText(this, value);\n      this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.cdata = function(value) {\n      var node;\n      this.openCurrent();\n      node = new XMLCData(this, value);\n      this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.comment = function(value) {\n      var node;\n      this.openCurrent();\n      node = new XMLComment(this, value);\n      this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.raw = function(value) {\n      var node;\n      this.openCurrent();\n      node = new XMLRaw(this, value);\n      this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.instruction = function(target, value) {\n      var i, insTarget, insValue, len, node;\n      this.openCurrent();\n      if (target != null) {\n        target = getValue(target);\n      }\n      if (value != null) {\n        value = getValue(value);\n      }\n      if (Array.isArray(target)) {\n        for (i = 0, len = target.length; i < len; i++) {\n          insTarget = target[i];\n          this.instruction(insTarget);\n        }\n      } else if (isObject(target)) {\n        for (insTarget in target) {\n          if (!hasProp.call(target, insTarget)) continue;\n          insValue = target[insTarget];\n          this.instruction(insTarget, insValue);\n        }\n      } else {\n        if (isFunction(value)) {\n          value = value.apply();\n        }\n        node = new XMLProcessingInstruction(this, target, value);\n        this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      }\n      return this;\n    };\n\n    XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n      var node;\n      this.openCurrent();\n      if (this.documentStarted) {\n        throw new Error(\"declaration() must be the first node.\");\n      }\n      node = new XMLDeclaration(this, version, encoding, standalone);\n      this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n      this.openCurrent();\n      if (root == null) {\n        throw new Error(\"Missing root node name.\");\n      }\n      if (this.root) {\n        throw new Error(\"dtd() must come before the root node.\");\n      }\n      this.currentNode = new XMLDocType(this, pubID, sysID);\n      this.currentNode.rootNodeName = root;\n      this.currentNode.children = false;\n      this.currentLevel++;\n      this.openTags[this.currentLevel] = this.currentNode;\n      return this;\n    };\n\n    XMLDocumentCB.prototype.dtdElement = function(name, value) {\n      var node;\n      this.openCurrent();\n      node = new XMLDTDElement(this, name, value);\n      this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n      var node;\n      this.openCurrent();\n      node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n      this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.entity = function(name, value) {\n      var node;\n      this.openCurrent();\n      node = new XMLDTDEntity(this, false, name, value);\n      this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.pEntity = function(name, value) {\n      var node;\n      this.openCurrent();\n      node = new XMLDTDEntity(this, true, name, value);\n      this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.notation = function(name, value) {\n      var node;\n      this.openCurrent();\n      node = new XMLDTDNotation(this, name, value);\n      this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n      return this;\n    };\n\n    XMLDocumentCB.prototype.up = function() {\n      if (this.currentLevel < 0) {\n        throw new Error(\"The document node has no parent.\");\n      }\n      if (this.currentNode) {\n        if (this.currentNode.children) {\n          this.closeNode(this.currentNode);\n        } else {\n          this.openNode(this.currentNode);\n        }\n        this.currentNode = null;\n      } else {\n        this.closeNode(this.openTags[this.currentLevel]);\n      }\n      delete this.openTags[this.currentLevel];\n      this.currentLevel--;\n      return this;\n    };\n\n    XMLDocumentCB.prototype.end = function() {\n      while (this.currentLevel >= 0) {\n        this.up();\n      }\n      return this.onEnd();\n    };\n\n    XMLDocumentCB.prototype.openCurrent = function() {\n      if (this.currentNode) {\n        this.currentNode.children = true;\n        return this.openNode(this.currentNode);\n      }\n    };\n\n    XMLDocumentCB.prototype.openNode = function(node) {\n      var att, chunk, name, ref1;\n      if (!node.isOpen) {\n        if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {\n          this.root = node;\n        }\n        chunk = '';\n        if (node.type === NodeType.Element) {\n          this.writerOptions.state = WriterState.OpenTag;\n          chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;\n          ref1 = node.attribs;\n          for (name in ref1) {\n            if (!hasProp.call(ref1, name)) continue;\n            att = ref1[name];\n            chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);\n          }\n          chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);\n          this.writerOptions.state = WriterState.InsideTag;\n        } else {\n          this.writerOptions.state = WriterState.OpenTag;\n          chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;\n          if (node.pubID && node.sysID) {\n            chunk += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n          } else if (node.sysID) {\n            chunk += ' SYSTEM \"' + node.sysID + '\"';\n          }\n          if (node.children) {\n            chunk += ' [';\n            this.writerOptions.state = WriterState.InsideTag;\n          } else {\n            this.writerOptions.state = WriterState.CloseTag;\n            chunk += '>';\n          }\n          chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);\n        }\n        this.onData(chunk, this.currentLevel);\n        return node.isOpen = true;\n      }\n    };\n\n    XMLDocumentCB.prototype.closeNode = function(node) {\n      var chunk;\n      if (!node.isClosed) {\n        chunk = '';\n        this.writerOptions.state = WriterState.CloseTag;\n        if (node.type === NodeType.Element) {\n          chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n        } else {\n          chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n        }\n        this.writerOptions.state = WriterState.None;\n        this.onData(chunk, this.currentLevel);\n        return node.isClosed = true;\n      }\n    };\n\n    XMLDocumentCB.prototype.onData = function(chunk, level) {\n      this.documentStarted = true;\n      return this.onDataCallback(chunk, level + 1);\n    };\n\n    XMLDocumentCB.prototype.onEnd = function() {\n      this.documentCompleted = true;\n      return this.onEndCallback();\n    };\n\n    XMLDocumentCB.prototype.debugInfo = function(name) {\n      if (name == null) {\n        return \"\";\n      } else {\n        return \"node: <\" + name + \">\";\n      }\n    };\n\n    XMLDocumentCB.prototype.ele = function() {\n      return this.element.apply(this, arguments);\n    };\n\n    XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n      return this.node(name, attributes, text);\n    };\n\n    XMLDocumentCB.prototype.txt = function(value) {\n      return this.text(value);\n    };\n\n    XMLDocumentCB.prototype.dat = function(value) {\n      return this.cdata(value);\n    };\n\n    XMLDocumentCB.prototype.com = function(value) {\n      return this.comment(value);\n    };\n\n    XMLDocumentCB.prototype.ins = function(target, value) {\n      return this.instruction(target, value);\n    };\n\n    XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n      return this.declaration(version, encoding, standalone);\n    };\n\n    XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n      return this.doctype(root, pubID, sysID);\n    };\n\n    XMLDocumentCB.prototype.e = function(name, attributes, text) {\n      return this.element(name, attributes, text);\n    };\n\n    XMLDocumentCB.prototype.n = function(name, attributes, text) {\n      return this.node(name, attributes, text);\n    };\n\n    XMLDocumentCB.prototype.t = function(value) {\n      return this.text(value);\n    };\n\n    XMLDocumentCB.prototype.d = function(value) {\n      return this.cdata(value);\n    };\n\n    XMLDocumentCB.prototype.c = function(value) {\n      return this.comment(value);\n    };\n\n    XMLDocumentCB.prototype.r = function(value) {\n      return this.raw(value);\n    };\n\n    XMLDocumentCB.prototype.i = function(target, value) {\n      return this.instruction(target, value);\n    };\n\n    XMLDocumentCB.prototype.att = function() {\n      if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n        return this.attList.apply(this, arguments);\n      } else {\n        return this.attribute.apply(this, arguments);\n      }\n    };\n\n    XMLDocumentCB.prototype.a = function() {\n      if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n        return this.attList.apply(this, arguments);\n      } else {\n        return this.attribute.apply(this, arguments);\n      }\n    };\n\n    XMLDocumentCB.prototype.ent = function(name, value) {\n      return this.entity(name, value);\n    };\n\n    XMLDocumentCB.prototype.pent = function(name, value) {\n      return this.pEntity(name, value);\n    };\n\n    XMLDocumentCB.prototype.not = function(name, value) {\n      return this.notation(name, value);\n    };\n\n    return XMLDocumentCB;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  NodeType = require('./NodeType');\n\n  XMLWriterBase = require('./XMLWriterBase');\n\n  WriterState = require('./WriterState');\n\n  module.exports = XMLStreamWriter = (function(superClass) {\n    extend(XMLStreamWriter, superClass);\n\n    function XMLStreamWriter(stream, options) {\n      this.stream = stream;\n      XMLStreamWriter.__super__.constructor.call(this, options);\n    }\n\n    XMLStreamWriter.prototype.endline = function(node, options, level) {\n      if (node.isLastRootNode && options.state === WriterState.CloseTag) {\n        return '';\n      } else {\n        return XMLStreamWriter.__super__.endline.call(this, node, options, level);\n      }\n    };\n\n    XMLStreamWriter.prototype.document = function(doc, options) {\n      var child, i, j, k, len, len1, ref, ref1, results;\n      ref = doc.children;\n      for (i = j = 0, len = ref.length; j < len; i = ++j) {\n        child = ref[i];\n        child.isLastRootNode = i === doc.children.length - 1;\n      }\n      options = this.filterOptions(options);\n      ref1 = doc.children;\n      results = [];\n      for (k = 0, len1 = ref1.length; k < len1; k++) {\n        child = ref1[k];\n        results.push(this.writeChildNode(child, options, 0));\n      }\n      return results;\n    };\n\n    XMLStreamWriter.prototype.attribute = function(att, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));\n    };\n\n    XMLStreamWriter.prototype.cdata = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.comment = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.declaration = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.docType = function(node, options, level) {\n      var child, j, len, ref;\n      level || (level = 0);\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      this.stream.write(this.indent(node, options, level));\n      this.stream.write('<!DOCTYPE ' + node.root().name);\n      if (node.pubID && node.sysID) {\n        this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n      } else if (node.sysID) {\n        this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n      }\n      if (node.children.length > 0) {\n        this.stream.write(' [');\n        this.stream.write(this.endline(node, options, level));\n        options.state = WriterState.InsideTag;\n        ref = node.children;\n        for (j = 0, len = ref.length; j < len; j++) {\n          child = ref[j];\n          this.writeChildNode(child, options, level + 1);\n        }\n        options.state = WriterState.CloseTag;\n        this.stream.write(']');\n      }\n      options.state = WriterState.CloseTag;\n      this.stream.write(options.spaceBeforeSlash + '>');\n      this.stream.write(this.endline(node, options, level));\n      options.state = WriterState.None;\n      return this.closeNode(node, options, level);\n    };\n\n    XMLStreamWriter.prototype.element = function(node, options, level) {\n      var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;\n      level || (level = 0);\n      this.openNode(node, options, level);\n      options.state = WriterState.OpenTag;\n      this.stream.write(this.indent(node, options, level) + '<' + node.name);\n      ref = node.attribs;\n      for (name in ref) {\n        if (!hasProp.call(ref, name)) continue;\n        att = ref[name];\n        this.attribute(att, options, level);\n      }\n      childNodeCount = node.children.length;\n      firstChildNode = childNodeCount === 0 ? null : node.children[0];\n      if (childNodeCount === 0 || node.children.every(function(e) {\n        return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n      })) {\n        if (options.allowEmpty) {\n          this.stream.write('>');\n          options.state = WriterState.CloseTag;\n          this.stream.write('</' + node.name + '>');\n        } else {\n          options.state = WriterState.CloseTag;\n          this.stream.write(options.spaceBeforeSlash + '/>');\n        }\n      } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n        this.stream.write('>');\n        options.state = WriterState.InsideTag;\n        options.suppressPrettyCount++;\n        prettySuppressed = true;\n        this.writeChildNode(firstChildNode, options, level + 1);\n        options.suppressPrettyCount--;\n        prettySuppressed = false;\n        options.state = WriterState.CloseTag;\n        this.stream.write('</' + node.name + '>');\n      } else {\n        this.stream.write('>' + this.endline(node, options, level));\n        options.state = WriterState.InsideTag;\n        ref1 = node.children;\n        for (j = 0, len = ref1.length; j < len; j++) {\n          child = ref1[j];\n          this.writeChildNode(child, options, level + 1);\n        }\n        options.state = WriterState.CloseTag;\n        this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');\n      }\n      this.stream.write(this.endline(node, options, level));\n      options.state = WriterState.None;\n      return this.closeNode(node, options, level);\n    };\n\n    XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.raw = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.text = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.dtdElement = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));\n    };\n\n    XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {\n      return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));\n    };\n\n    return XMLStreamWriter;\n\n  })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n  ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n  XMLDOMImplementation = require('./XMLDOMImplementation');\n\n  XMLDocument = require('./XMLDocument');\n\n  XMLDocumentCB = require('./XMLDocumentCB');\n\n  XMLStringWriter = require('./XMLStringWriter');\n\n  XMLStreamWriter = require('./XMLStreamWriter');\n\n  NodeType = require('./NodeType');\n\n  WriterState = require('./WriterState');\n\n  module.exports.create = function(name, xmldec, doctype, options) {\n    var doc, root;\n    if (name == null) {\n      throw new Error(\"Root element needs a name.\");\n    }\n    options = assign({}, xmldec, doctype, options);\n    doc = new XMLDocument(options);\n    root = doc.element(name);\n    if (!options.headless) {\n      doc.declaration(options);\n      if ((options.pubID != null) || (options.sysID != null)) {\n        doc.dtd(options);\n      }\n    }\n    return root;\n  };\n\n  module.exports.begin = function(options, onData, onEnd) {\n    var ref1;\n    if (isFunction(options)) {\n      ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n      options = {};\n    }\n    if (onData) {\n      return new XMLDocumentCB(options, onData, onEnd);\n    } else {\n      return new XMLDocument(options);\n    }\n  };\n\n  module.exports.stringWriter = function(options) {\n    return new XMLStringWriter(options);\n  };\n\n  module.exports.streamWriter = function(stream, options) {\n    return new XMLStreamWriter(stream, options);\n  };\n\n  module.exports.implementation = new XMLDOMImplementation();\n\n  module.exports.nodeType = NodeType;\n\n  module.exports.writerState = WriterState;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  \"use strict\";\n  var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n    hasProp = {}.hasOwnProperty;\n\n  builder = require('xmlbuilder');\n\n  defaults = require('./defaults').defaults;\n\n  requiresCDATA = function(entry) {\n    return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n  };\n\n  wrapCDATA = function(entry) {\n    return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n  };\n\n  escapeCDATA = function(entry) {\n    return entry.replace(']]>', ']]]]><![CDATA[>');\n  };\n\n  exports.Builder = (function() {\n    function Builder(opts) {\n      var key, ref, value;\n      this.options = {};\n      ref = defaults[\"0.2\"];\n      for (key in ref) {\n        if (!hasProp.call(ref, key)) continue;\n        value = ref[key];\n        this.options[key] = value;\n      }\n      for (key in opts) {\n        if (!hasProp.call(opts, key)) continue;\n        value = opts[key];\n        this.options[key] = value;\n      }\n    }\n\n    Builder.prototype.buildObject = function(rootObj) {\n      var attrkey, charkey, render, rootElement, rootName;\n      attrkey = this.options.attrkey;\n      charkey = this.options.charkey;\n      if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n        rootName = Object.keys(rootObj)[0];\n        rootObj = rootObj[rootName];\n      } else {\n        rootName = this.options.rootName;\n      }\n      render = (function(_this) {\n        return function(element, obj) {\n          var attr, child, entry, index, key, value;\n          if (typeof obj !== 'object') {\n            if (_this.options.cdata && requiresCDATA(obj)) {\n              element.raw(wrapCDATA(obj));\n            } else {\n              element.txt(obj);\n            }\n          } else if (Array.isArray(obj)) {\n            for (index in obj) {\n              if (!hasProp.call(obj, index)) continue;\n              child = obj[index];\n              for (key in child) {\n                entry = child[key];\n                element = render(element.ele(key), entry).up();\n              }\n            }\n          } else {\n            for (key in obj) {\n              if (!hasProp.call(obj, key)) continue;\n              child = obj[key];\n              if (key === attrkey) {\n                if (typeof child === \"object\") {\n                  for (attr in child) {\n                    value = child[attr];\n                    element = element.att(attr, value);\n                  }\n                }\n              } else if (key === charkey) {\n                if (_this.options.cdata && requiresCDATA(child)) {\n                  element = element.raw(wrapCDATA(child));\n                } else {\n                  element = element.txt(child);\n                }\n              } else if (Array.isArray(child)) {\n                for (index in child) {\n                  if (!hasProp.call(child, index)) continue;\n                  entry = child[index];\n                  if (typeof entry === 'string') {\n                    if (_this.options.cdata && requiresCDATA(entry)) {\n                      element = element.ele(key).raw(wrapCDATA(entry)).up();\n                    } else {\n                      element = element.ele(key, entry).up();\n                    }\n                  } else {\n                    element = render(element.ele(key), entry).up();\n                  }\n                }\n              } else if (typeof child === \"object\") {\n                element = render(element.ele(key), child).up();\n              } else {\n                if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n                  element = element.ele(key).raw(wrapCDATA(child)).up();\n                } else {\n                  if (child == null) {\n                    child = '';\n                  }\n                  element = element.ele(key, child.toString()).up();\n                }\n              }\n            }\n          }\n          return element;\n        };\n      })(this);\n      rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n        headless: this.options.headless,\n        allowSurrogateChars: this.options.allowSurrogateChars\n      });\n      return render(rootElement, rootObj).end(this.options.renderOpts);\n    };\n\n    return Builder;\n\n  })();\n\n}).call(this);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","module.exports = require('events').EventEmitter;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    var proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(buf).copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n  var alphabet = '0123456789abcdef'\n  var table = new Array(256)\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n","export default {}","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n  || function(encoding) {\n       switch (encoding && encoding.toLowerCase()) {\n         case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n         default: return false;\n       }\n     }\n\n\nfunction assertEncoding(encoding) {\n  if (encoding && !isBufferEncoding(encoding)) {\n    throw new Error('Unknown encoding: ' + encoding);\n  }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n  this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n  assertEncoding(encoding);\n  switch (this.encoding) {\n    case 'utf8':\n      // CESU-8 represents each of Surrogate Pair by 3-bytes\n      this.surrogateSize = 3;\n      break;\n    case 'ucs2':\n    case 'utf16le':\n      // UTF-16 represents each of Surrogate Pair by 2-bytes\n      this.surrogateSize = 2;\n      this.detectIncompleteChar = utf16DetectIncompleteChar;\n      break;\n    case 'base64':\n      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n      this.surrogateSize = 3;\n      this.detectIncompleteChar = base64DetectIncompleteChar;\n      break;\n    default:\n      this.write = passThroughWrite;\n      return;\n  }\n\n  // Enough space to store all bytes of a single character. UTF-8 needs 4\n  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n  this.charBuffer = new Buffer(6);\n  // Number of bytes received for the current incomplete multi-byte character.\n  this.charReceived = 0;\n  // Number of bytes expected for the current incomplete multi-byte character.\n  this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n  var charStr = '';\n  // if our last write ended with an incomplete multibyte character\n  while (this.charLength) {\n    // determine how many remaining bytes this buffer has to offer for this char\n    var available = (buffer.length >= this.charLength - this.charReceived) ?\n        this.charLength - this.charReceived :\n        buffer.length;\n\n    // add the new bytes to the char buffer\n    buffer.copy(this.charBuffer, this.charReceived, 0, available);\n    this.charReceived += available;\n\n    if (this.charReceived < this.charLength) {\n      // still not enough chars in this buffer? wait for more ...\n      return '';\n    }\n\n    // remove bytes belonging to the current character from the buffer\n    buffer = buffer.slice(available, buffer.length);\n\n    // get the character that was split\n    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n    var charCode = charStr.charCodeAt(charStr.length - 1);\n    if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n      this.charLength += this.surrogateSize;\n      charStr = '';\n      continue;\n    }\n    this.charReceived = this.charLength = 0;\n\n    // if there are no more bytes in this buffer, just emit our char\n    if (buffer.length === 0) {\n      return charStr;\n    }\n    break;\n  }\n\n  // determine and set charLength / charReceived\n  this.detectIncompleteChar(buffer);\n\n  var end = buffer.length;\n  if (this.charLength) {\n    // buffer the incomplete character bytes we got\n    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n    end -= this.charReceived;\n  }\n\n  charStr += buffer.toString(this.encoding, 0, end);\n\n  var end = charStr.length - 1;\n  var charCode = charStr.charCodeAt(end);\n  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n  if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n    var size = this.surrogateSize;\n    this.charLength += size;\n    this.charReceived += size;\n    this.charBuffer.copy(this.charBuffer, size, 0, size);\n    buffer.copy(this.charBuffer, 0, 0, size);\n    return charStr.substring(0, end);\n  }\n\n  // or just emit the charStr\n  return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n  // determine how many bytes we have to check at the end of this buffer\n  var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n  // Figure out if one of the last i bytes of our buffer announces an\n  // incomplete char.\n  for (; i > 0; i--) {\n    var c = buffer[buffer.length - i];\n\n    // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n    // 110XXXXX\n    if (i == 1 && c >> 5 == 0x06) {\n      this.charLength = 2;\n      break;\n    }\n\n    // 1110XXXX\n    if (i <= 2 && c >> 4 == 0x0E) {\n      this.charLength = 3;\n      break;\n    }\n\n    // 11110XXX\n    if (i <= 3 && c >> 3 == 0x1E) {\n      this.charLength = 4;\n      break;\n    }\n  }\n  this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n  var res = '';\n  if (buffer && buffer.length)\n    res = this.write(buffer);\n\n  if (this.charReceived) {\n    var cr = this.charReceived;\n    var buf = this.charBuffer;\n    var enc = this.encoding;\n    res += buf.slice(0, cr).toString(enc);\n  }\n\n  return res;\n};\n\nfunction passThroughWrite(buffer) {\n  return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n  this.charReceived = buffer.length % 2;\n  this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n  this.charReceived = buffer.length % 3;\n  this.charLength = this.charReceived ? 3 : 0;\n}\n",";(function (sax) { // wrapper for non-node envs\n  sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n  sax.SAXParser = SAXParser\n  sax.SAXStream = SAXStream\n  sax.createStream = createStream\n\n  // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n  // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n  // since that's the earliest that a buffer overrun could occur.  This way, checks are\n  // as rare as required, but as often as necessary to ensure never crossing this bound.\n  // Furthermore, buffers are only tested at most once per write(), so passing a very\n  // large string into write() might have undesirable effects, but this is manageable by\n  // the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme\n  // edge case, result in creating at most one complete copy of the string passed in.\n  // Set to Infinity to have unlimited buffers.\n  sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n  var buffers = [\n    'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n    'procInstName', 'procInstBody', 'entity', 'attribName',\n    'attribValue', 'cdata', 'script'\n  ]\n\n  sax.EVENTS = [\n    'text',\n    'processinginstruction',\n    'sgmldeclaration',\n    'doctype',\n    'comment',\n    'opentagstart',\n    'attribute',\n    'opentag',\n    'closetag',\n    'opencdata',\n    'cdata',\n    'closecdata',\n    'error',\n    'end',\n    'ready',\n    'script',\n    'opennamespace',\n    'closenamespace'\n  ]\n\n  function SAXParser (strict, opt) {\n    if (!(this instanceof SAXParser)) {\n      return new SAXParser(strict, opt)\n    }\n\n    var parser = this\n    clearBuffers(parser)\n    parser.q = parser.c = ''\n    parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n    parser.opt = opt || {}\n    parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n    parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n    parser.tags = []\n    parser.closed = parser.closedRoot = parser.sawRoot = false\n    parser.tag = parser.error = null\n    parser.strict = !!strict\n    parser.noscript = !!(strict || parser.opt.noscript)\n    parser.state = S.BEGIN\n    parser.strictEntities = parser.opt.strictEntities\n    parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n    parser.attribList = []\n\n    // namespaces form a prototype chain.\n    // it always points at the current tag,\n    // which protos to its parent tag.\n    if (parser.opt.xmlns) {\n      parser.ns = Object.create(rootNS)\n    }\n\n    // disallow unquoted attribute values if not otherwise configured\n    // and strict mode is true\n    if (parser.opt.unquotedAttributeValues === undefined) {\n      parser.opt.unquotedAttributeValues = !strict;\n    }\n\n    // mostly just for error reporting\n    parser.trackPosition = parser.opt.position !== false\n    if (parser.trackPosition) {\n      parser.position = parser.line = parser.column = 0\n    }\n    emit(parser, 'onready')\n  }\n\n  if (!Object.create) {\n    Object.create = function (o) {\n      function F () {}\n      F.prototype = o\n      var newf = new F()\n      return newf\n    }\n  }\n\n  if (!Object.keys) {\n    Object.keys = function (o) {\n      var a = []\n      for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n      return a\n    }\n  }\n\n  function checkBufferLength (parser) {\n    var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n    var maxActual = 0\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      var len = parser[buffers[i]].length\n      if (len > maxAllowed) {\n        // Text/cdata nodes can get big, and since they're buffered,\n        // we can get here under normal conditions.\n        // Avoid issues by emitting the text node now,\n        // so at least it won't get any bigger.\n        switch (buffers[i]) {\n          case 'textNode':\n            closeText(parser)\n            break\n\n          case 'cdata':\n            emitNode(parser, 'oncdata', parser.cdata)\n            parser.cdata = ''\n            break\n\n          case 'script':\n            emitNode(parser, 'onscript', parser.script)\n            parser.script = ''\n            break\n\n          default:\n            error(parser, 'Max buffer length exceeded: ' + buffers[i])\n        }\n      }\n      maxActual = Math.max(maxActual, len)\n    }\n    // schedule the next check for the earliest possible buffer overrun.\n    var m = sax.MAX_BUFFER_LENGTH - maxActual\n    parser.bufferCheckPosition = m + parser.position\n  }\n\n  function clearBuffers (parser) {\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      parser[buffers[i]] = ''\n    }\n  }\n\n  function flushBuffers (parser) {\n    closeText(parser)\n    if (parser.cdata !== '') {\n      emitNode(parser, 'oncdata', parser.cdata)\n      parser.cdata = ''\n    }\n    if (parser.script !== '') {\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n  }\n\n  SAXParser.prototype = {\n    end: function () { end(this) },\n    write: write,\n    resume: function () { this.error = null; return this },\n    close: function () { return this.write(null) },\n    flush: function () { flushBuffers(this) }\n  }\n\n  var Stream\n  try {\n    Stream = require('stream').Stream\n  } catch (ex) {\n    Stream = function () {}\n  }\n  if (!Stream) Stream = function () {}\n\n  var streamWraps = sax.EVENTS.filter(function (ev) {\n    return ev !== 'error' && ev !== 'end'\n  })\n\n  function createStream (strict, opt) {\n    return new SAXStream(strict, opt)\n  }\n\n  function SAXStream (strict, opt) {\n    if (!(this instanceof SAXStream)) {\n      return new SAXStream(strict, opt)\n    }\n\n    Stream.apply(this)\n\n    this._parser = new SAXParser(strict, opt)\n    this.writable = true\n    this.readable = true\n\n    var me = this\n\n    this._parser.onend = function () {\n      me.emit('end')\n    }\n\n    this._parser.onerror = function (er) {\n      me.emit('error', er)\n\n      // if didn't throw, then means error was handled.\n      // go ahead and clear error, so we can write again.\n      me._parser.error = null\n    }\n\n    this._decoder = null\n\n    streamWraps.forEach(function (ev) {\n      Object.defineProperty(me, 'on' + ev, {\n        get: function () {\n          return me._parser['on' + ev]\n        },\n        set: function (h) {\n          if (!h) {\n            me.removeAllListeners(ev)\n            me._parser['on' + ev] = h\n            return h\n          }\n          me.on(ev, h)\n        },\n        enumerable: true,\n        configurable: false\n      })\n    })\n  }\n\n  SAXStream.prototype = Object.create(Stream.prototype, {\n    constructor: {\n      value: SAXStream\n    }\n  })\n\n  SAXStream.prototype.write = function (data) {\n    if (typeof Buffer === 'function' &&\n      typeof Buffer.isBuffer === 'function' &&\n      Buffer.isBuffer(data)) {\n      if (!this._decoder) {\n        var SD = require('string_decoder').StringDecoder\n        this._decoder = new SD('utf8')\n      }\n      data = this._decoder.write(data)\n    }\n\n    this._parser.write(data.toString())\n    this.emit('data', data)\n    return true\n  }\n\n  SAXStream.prototype.end = function (chunk) {\n    if (chunk && chunk.length) {\n      this.write(chunk)\n    }\n    this._parser.end()\n    return true\n  }\n\n  SAXStream.prototype.on = function (ev, handler) {\n    var me = this\n    if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n      me._parser['on' + ev] = function () {\n        var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n        args.splice(0, 0, ev)\n        me.emit.apply(me, args)\n      }\n    }\n\n    return Stream.prototype.on.call(me, ev, handler)\n  }\n\n  // this really needs to be replaced with character classes.\n  // XML allows all manner of ridiculous numbers and digits.\n  var CDATA = '[CDATA['\n  var DOCTYPE = 'DOCTYPE'\n  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n  var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n  var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n  // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n  // This implementation works on strings, a single character at a time\n  // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n  // without a significant breaking change to either this  parser, or the\n  // JavaScript language.  Implementation of an emoji-capable xml parser\n  // is left as an exercise for the reader.\n  var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n  var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n  var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  function isWhitespace (c) {\n    return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n  }\n\n  function isQuote (c) {\n    return c === '\"' || c === '\\''\n  }\n\n  function isAttribEnd (c) {\n    return c === '>' || isWhitespace(c)\n  }\n\n  function isMatch (regex, c) {\n    return regex.test(c)\n  }\n\n  function notMatch (regex, c) {\n    return !isMatch(regex, c)\n  }\n\n  var S = 0\n  sax.STATE = {\n    BEGIN: S++, // leading byte order mark or whitespace\n    BEGIN_WHITESPACE: S++, // leading whitespace\n    TEXT: S++, // general stuff\n    TEXT_ENTITY: S++, // &amp and such.\n    OPEN_WAKA: S++, // <\n    SGML_DECL: S++, // <!BLARG\n    SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n    DOCTYPE: S++, // <!DOCTYPE\n    DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n    DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n    DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n    COMMENT_STARTING: S++, // <!-\n    COMMENT: S++, // <!--\n    COMMENT_ENDING: S++, // <!-- blah -\n    COMMENT_ENDED: S++, // <!-- blah --\n    CDATA: S++, // <![CDATA[ something\n    CDATA_ENDING: S++, // ]\n    CDATA_ENDING_2: S++, // ]]\n    PROC_INST: S++, // <?hi\n    PROC_INST_BODY: S++, // <?hi there\n    PROC_INST_ENDING: S++, // <?hi \"there\" ?\n    OPEN_TAG: S++, // <strong\n    OPEN_TAG_SLASH: S++, // <strong /\n    ATTRIB: S++, // <a\n    ATTRIB_NAME: S++, // <a foo\n    ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n    ATTRIB_VALUE: S++, // <a foo=\n    ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n    ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n    ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n    ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n    ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n    CLOSE_TAG: S++, // </a\n    CLOSE_TAG_SAW_WHITE: S++, // </a   >\n    SCRIPT: S++, // <script> ...\n    SCRIPT_ENDING: S++ // <script> ... <\n  }\n\n  sax.XML_ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\"\n  }\n\n  sax.ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\",\n    'AElig': 198,\n    'Aacute': 193,\n    'Acirc': 194,\n    'Agrave': 192,\n    'Aring': 197,\n    'Atilde': 195,\n    'Auml': 196,\n    'Ccedil': 199,\n    'ETH': 208,\n    'Eacute': 201,\n    'Ecirc': 202,\n    'Egrave': 200,\n    'Euml': 203,\n    'Iacute': 205,\n    'Icirc': 206,\n    'Igrave': 204,\n    'Iuml': 207,\n    'Ntilde': 209,\n    'Oacute': 211,\n    'Ocirc': 212,\n    'Ograve': 210,\n    'Oslash': 216,\n    'Otilde': 213,\n    'Ouml': 214,\n    'THORN': 222,\n    'Uacute': 218,\n    'Ucirc': 219,\n    'Ugrave': 217,\n    'Uuml': 220,\n    'Yacute': 221,\n    'aacute': 225,\n    'acirc': 226,\n    'aelig': 230,\n    'agrave': 224,\n    'aring': 229,\n    'atilde': 227,\n    'auml': 228,\n    'ccedil': 231,\n    'eacute': 233,\n    'ecirc': 234,\n    'egrave': 232,\n    'eth': 240,\n    'euml': 235,\n    'iacute': 237,\n    'icirc': 238,\n    'igrave': 236,\n    'iuml': 239,\n    'ntilde': 241,\n    'oacute': 243,\n    'ocirc': 244,\n    'ograve': 242,\n    'oslash': 248,\n    'otilde': 245,\n    'ouml': 246,\n    'szlig': 223,\n    'thorn': 254,\n    'uacute': 250,\n    'ucirc': 251,\n    'ugrave': 249,\n    'uuml': 252,\n    'yacute': 253,\n    'yuml': 255,\n    'copy': 169,\n    'reg': 174,\n    'nbsp': 160,\n    'iexcl': 161,\n    'cent': 162,\n    'pound': 163,\n    'curren': 164,\n    'yen': 165,\n    'brvbar': 166,\n    'sect': 167,\n    'uml': 168,\n    'ordf': 170,\n    'laquo': 171,\n    'not': 172,\n    'shy': 173,\n    'macr': 175,\n    'deg': 176,\n    'plusmn': 177,\n    'sup1': 185,\n    'sup2': 178,\n    'sup3': 179,\n    'acute': 180,\n    'micro': 181,\n    'para': 182,\n    'middot': 183,\n    'cedil': 184,\n    'ordm': 186,\n    'raquo': 187,\n    'frac14': 188,\n    'frac12': 189,\n    'frac34': 190,\n    'iquest': 191,\n    'times': 215,\n    'divide': 247,\n    'OElig': 338,\n    'oelig': 339,\n    'Scaron': 352,\n    'scaron': 353,\n    'Yuml': 376,\n    'fnof': 402,\n    'circ': 710,\n    'tilde': 732,\n    'Alpha': 913,\n    'Beta': 914,\n    'Gamma': 915,\n    'Delta': 916,\n    'Epsilon': 917,\n    'Zeta': 918,\n    'Eta': 919,\n    'Theta': 920,\n    'Iota': 921,\n    'Kappa': 922,\n    'Lambda': 923,\n    'Mu': 924,\n    'Nu': 925,\n    'Xi': 926,\n    'Omicron': 927,\n    'Pi': 928,\n    'Rho': 929,\n    'Sigma': 931,\n    'Tau': 932,\n    'Upsilon': 933,\n    'Phi': 934,\n    'Chi': 935,\n    'Psi': 936,\n    'Omega': 937,\n    'alpha': 945,\n    'beta': 946,\n    'gamma': 947,\n    'delta': 948,\n    'epsilon': 949,\n    'zeta': 950,\n    'eta': 951,\n    'theta': 952,\n    'iota': 953,\n    'kappa': 954,\n    'lambda': 955,\n    'mu': 956,\n    'nu': 957,\n    'xi': 958,\n    'omicron': 959,\n    'pi': 960,\n    'rho': 961,\n    'sigmaf': 962,\n    'sigma': 963,\n    'tau': 964,\n    'upsilon': 965,\n    'phi': 966,\n    'chi': 967,\n    'psi': 968,\n    'omega': 969,\n    'thetasym': 977,\n    'upsih': 978,\n    'piv': 982,\n    'ensp': 8194,\n    'emsp': 8195,\n    'thinsp': 8201,\n    'zwnj': 8204,\n    'zwj': 8205,\n    'lrm': 8206,\n    'rlm': 8207,\n    'ndash': 8211,\n    'mdash': 8212,\n    'lsquo': 8216,\n    'rsquo': 8217,\n    'sbquo': 8218,\n    'ldquo': 8220,\n    'rdquo': 8221,\n    'bdquo': 8222,\n    'dagger': 8224,\n    'Dagger': 8225,\n    'bull': 8226,\n    'hellip': 8230,\n    'permil': 8240,\n    'prime': 8242,\n    'Prime': 8243,\n    'lsaquo': 8249,\n    'rsaquo': 8250,\n    'oline': 8254,\n    'frasl': 8260,\n    'euro': 8364,\n    'image': 8465,\n    'weierp': 8472,\n    'real': 8476,\n    'trade': 8482,\n    'alefsym': 8501,\n    'larr': 8592,\n    'uarr': 8593,\n    'rarr': 8594,\n    'darr': 8595,\n    'harr': 8596,\n    'crarr': 8629,\n    'lArr': 8656,\n    'uArr': 8657,\n    'rArr': 8658,\n    'dArr': 8659,\n    'hArr': 8660,\n    'forall': 8704,\n    'part': 8706,\n    'exist': 8707,\n    'empty': 8709,\n    'nabla': 8711,\n    'isin': 8712,\n    'notin': 8713,\n    'ni': 8715,\n    'prod': 8719,\n    'sum': 8721,\n    'minus': 8722,\n    'lowast': 8727,\n    'radic': 8730,\n    'prop': 8733,\n    'infin': 8734,\n    'ang': 8736,\n    'and': 8743,\n    'or': 8744,\n    'cap': 8745,\n    'cup': 8746,\n    'int': 8747,\n    'there4': 8756,\n    'sim': 8764,\n    'cong': 8773,\n    'asymp': 8776,\n    'ne': 8800,\n    'equiv': 8801,\n    'le': 8804,\n    'ge': 8805,\n    'sub': 8834,\n    'sup': 8835,\n    'nsub': 8836,\n    'sube': 8838,\n    'supe': 8839,\n    'oplus': 8853,\n    'otimes': 8855,\n    'perp': 8869,\n    'sdot': 8901,\n    'lceil': 8968,\n    'rceil': 8969,\n    'lfloor': 8970,\n    'rfloor': 8971,\n    'lang': 9001,\n    'rang': 9002,\n    'loz': 9674,\n    'spades': 9824,\n    'clubs': 9827,\n    'hearts': 9829,\n    'diams': 9830\n  }\n\n  Object.keys(sax.ENTITIES).forEach(function (key) {\n    var e = sax.ENTITIES[key]\n    var s = typeof e === 'number' ? String.fromCharCode(e) : e\n    sax.ENTITIES[key] = s\n  })\n\n  for (var s in sax.STATE) {\n    sax.STATE[sax.STATE[s]] = s\n  }\n\n  // shorthand\n  S = sax.STATE\n\n  function emit (parser, event, data) {\n    parser[event] && parser[event](data)\n  }\n\n  function emitNode (parser, nodeType, data) {\n    if (parser.textNode) closeText(parser)\n    emit(parser, nodeType, data)\n  }\n\n  function closeText (parser) {\n    parser.textNode = textopts(parser.opt, parser.textNode)\n    if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n    parser.textNode = ''\n  }\n\n  function textopts (opt, text) {\n    if (opt.trim) text = text.trim()\n    if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n    return text\n  }\n\n  function error (parser, er) {\n    closeText(parser)\n    if (parser.trackPosition) {\n      er += '\\nLine: ' + parser.line +\n        '\\nColumn: ' + parser.column +\n        '\\nChar: ' + parser.c\n    }\n    er = new Error(er)\n    parser.error = er\n    emit(parser, 'onerror', er)\n    return parser\n  }\n\n  function end (parser) {\n    if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n    if ((parser.state !== S.BEGIN) &&\n      (parser.state !== S.BEGIN_WHITESPACE) &&\n      (parser.state !== S.TEXT)) {\n      error(parser, 'Unexpected end')\n    }\n    closeText(parser)\n    parser.c = ''\n    parser.closed = true\n    emit(parser, 'onend')\n    SAXParser.call(parser, parser.strict, parser.opt)\n    return parser\n  }\n\n  function strictFail (parser, message) {\n    if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n      throw new Error('bad call to strictFail')\n    }\n    if (parser.strict) {\n      error(parser, message)\n    }\n  }\n\n  function newTag (parser) {\n    if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n    var parent = parser.tags[parser.tags.length - 1] || parser\n    var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n    // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n    if (parser.opt.xmlns) {\n      tag.ns = parent.ns\n    }\n    parser.attribList.length = 0\n    emitNode(parser, 'onopentagstart', tag)\n  }\n\n  function qname (name, attribute) {\n    var i = name.indexOf(':')\n    var qualName = i < 0 ? [ '', name ] : name.split(':')\n    var prefix = qualName[0]\n    var local = qualName[1]\n\n    // <x \"xmlns\"=\"http://foo\">\n    if (attribute && name === 'xmlns') {\n      prefix = 'xmlns'\n      local = ''\n    }\n\n    return { prefix: prefix, local: local }\n  }\n\n  function attrib (parser) {\n    if (!parser.strict) {\n      parser.attribName = parser.attribName[parser.looseCase]()\n    }\n\n    if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n      parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n      parser.attribName = parser.attribValue = ''\n      return\n    }\n\n    if (parser.opt.xmlns) {\n      var qn = qname(parser.attribName, true)\n      var prefix = qn.prefix\n      var local = qn.local\n\n      if (prefix === 'xmlns') {\n        // namespace binding attribute. push the binding into scope\n        if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n          strictFail(parser,\n            'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n          strictFail(parser,\n            'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else {\n          var tag = parser.tag\n          var parent = parser.tags[parser.tags.length - 1] || parser\n          if (tag.ns === parent.ns) {\n            tag.ns = Object.create(parent.ns)\n          }\n          tag.ns[local] = parser.attribValue\n        }\n      }\n\n      // defer onattribute events until all attributes have been seen\n      // so any new bindings can take effect. preserve attribute order\n      // so deferred events can be emitted in document order\n      parser.attribList.push([parser.attribName, parser.attribValue])\n    } else {\n      // in non-xmlns mode, we can emit the event right away\n      parser.tag.attributes[parser.attribName] = parser.attribValue\n      emitNode(parser, 'onattribute', {\n        name: parser.attribName,\n        value: parser.attribValue\n      })\n    }\n\n    parser.attribName = parser.attribValue = ''\n  }\n\n  function openTag (parser, selfClosing) {\n    if (parser.opt.xmlns) {\n      // emit namespace binding events\n      var tag = parser.tag\n\n      // add namespace info to tag\n      var qn = qname(parser.tagName)\n      tag.prefix = qn.prefix\n      tag.local = qn.local\n      tag.uri = tag.ns[qn.prefix] || ''\n\n      if (tag.prefix && !tag.uri) {\n        strictFail(parser, 'Unbound namespace prefix: ' +\n          JSON.stringify(parser.tagName))\n        tag.uri = qn.prefix\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (tag.ns && parent.ns !== tag.ns) {\n        Object.keys(tag.ns).forEach(function (p) {\n          emitNode(parser, 'onopennamespace', {\n            prefix: p,\n            uri: tag.ns[p]\n          })\n        })\n      }\n\n      // handle deferred onattribute events\n      // Note: do not apply default ns to attributes:\n      //   http://www.w3.org/TR/REC-xml-names/#defaulting\n      for (var i = 0, l = parser.attribList.length; i < l; i++) {\n        var nv = parser.attribList[i]\n        var name = nv[0]\n        var value = nv[1]\n        var qualName = qname(name, true)\n        var prefix = qualName.prefix\n        var local = qualName.local\n        var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n        var a = {\n          name: name,\n          value: value,\n          prefix: prefix,\n          local: local,\n          uri: uri\n        }\n\n        // if there's any attributes with an undefined namespace,\n        // then fail on them now.\n        if (prefix && prefix !== 'xmlns' && !uri) {\n          strictFail(parser, 'Unbound namespace prefix: ' +\n            JSON.stringify(prefix))\n          a.uri = prefix\n        }\n        parser.tag.attributes[name] = a\n        emitNode(parser, 'onattribute', a)\n      }\n      parser.attribList.length = 0\n    }\n\n    parser.tag.isSelfClosing = !!selfClosing\n\n    // process the tag\n    parser.sawRoot = true\n    parser.tags.push(parser.tag)\n    emitNode(parser, 'onopentag', parser.tag)\n    if (!selfClosing) {\n      // special case for <script> in non-strict mode.\n      if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n        parser.state = S.SCRIPT\n      } else {\n        parser.state = S.TEXT\n      }\n      parser.tag = null\n      parser.tagName = ''\n    }\n    parser.attribName = parser.attribValue = ''\n    parser.attribList.length = 0\n  }\n\n  function closeTag (parser) {\n    if (!parser.tagName) {\n      strictFail(parser, 'Weird empty close tag.')\n      parser.textNode += '</>'\n      parser.state = S.TEXT\n      return\n    }\n\n    if (parser.script) {\n      if (parser.tagName !== 'script') {\n        parser.script += '</' + parser.tagName + '>'\n        parser.tagName = ''\n        parser.state = S.SCRIPT\n        return\n      }\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n\n    // first make sure that the closing tag actually exists.\n    // <a><b></c></b></a> will close everything, otherwise.\n    var t = parser.tags.length\n    var tagName = parser.tagName\n    if (!parser.strict) {\n      tagName = tagName[parser.looseCase]()\n    }\n    var closeTo = tagName\n    while (t--) {\n      var close = parser.tags[t]\n      if (close.name !== closeTo) {\n        // fail the first time in strict mode\n        strictFail(parser, 'Unexpected close tag')\n      } else {\n        break\n      }\n    }\n\n    // didn't find it.  we already failed for strict, so just abort.\n    if (t < 0) {\n      strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n      parser.textNode += '</' + parser.tagName + '>'\n      parser.state = S.TEXT\n      return\n    }\n    parser.tagName = tagName\n    var s = parser.tags.length\n    while (s-- > t) {\n      var tag = parser.tag = parser.tags.pop()\n      parser.tagName = parser.tag.name\n      emitNode(parser, 'onclosetag', parser.tagName)\n\n      var x = {}\n      for (var i in tag.ns) {\n        x[i] = tag.ns[i]\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (parser.opt.xmlns && tag.ns !== parent.ns) {\n        // remove namespace bindings introduced by tag\n        Object.keys(tag.ns).forEach(function (p) {\n          var n = tag.ns[p]\n          emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n        })\n      }\n    }\n    if (t === 0) parser.closedRoot = true\n    parser.tagName = parser.attribValue = parser.attribName = ''\n    parser.attribList.length = 0\n    parser.state = S.TEXT\n  }\n\n  function parseEntity (parser) {\n    var entity = parser.entity\n    var entityLC = entity.toLowerCase()\n    var num\n    var numStr = ''\n\n    if (parser.ENTITIES[entity]) {\n      return parser.ENTITIES[entity]\n    }\n    if (parser.ENTITIES[entityLC]) {\n      return parser.ENTITIES[entityLC]\n    }\n    entity = entityLC\n    if (entity.charAt(0) === '#') {\n      if (entity.charAt(1) === 'x') {\n        entity = entity.slice(2)\n        num = parseInt(entity, 16)\n        numStr = num.toString(16)\n      } else {\n        entity = entity.slice(1)\n        num = parseInt(entity, 10)\n        numStr = num.toString(10)\n      }\n    }\n    entity = entity.replace(/^0+/, '')\n    if (isNaN(num) || numStr.toLowerCase() !== entity) {\n      strictFail(parser, 'Invalid character entity')\n      return '&' + parser.entity + ';'\n    }\n\n    return String.fromCodePoint(num)\n  }\n\n  function beginWhiteSpace (parser, c) {\n    if (c === '<') {\n      parser.state = S.OPEN_WAKA\n      parser.startTagPosition = parser.position\n    } else if (!isWhitespace(c)) {\n      // have to process this as a text node.\n      // weird, but happens.\n      strictFail(parser, 'Non-whitespace before first tag.')\n      parser.textNode = c\n      parser.state = S.TEXT\n    }\n  }\n\n  function charAt (chunk, i) {\n    var result = ''\n    if (i < chunk.length) {\n      result = chunk.charAt(i)\n    }\n    return result\n  }\n\n  function write (chunk) {\n    var parser = this\n    if (this.error) {\n      throw this.error\n    }\n    if (parser.closed) {\n      return error(parser,\n        'Cannot write after close. Assign an onready handler.')\n    }\n    if (chunk === null) {\n      return end(parser)\n    }\n    if (typeof chunk === 'object') {\n      chunk = chunk.toString()\n    }\n    var i = 0\n    var c = ''\n    while (true) {\n      c = charAt(chunk, i++)\n      parser.c = c\n\n      if (!c) {\n        break\n      }\n\n      if (parser.trackPosition) {\n        parser.position++\n        if (c === '\\n') {\n          parser.line++\n          parser.column = 0\n        } else {\n          parser.column++\n        }\n      }\n\n      switch (parser.state) {\n        case S.BEGIN:\n          parser.state = S.BEGIN_WHITESPACE\n          if (c === '\\uFEFF') {\n            continue\n          }\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.BEGIN_WHITESPACE:\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.TEXT:\n          if (parser.sawRoot && !parser.closedRoot) {\n            var starti = i - 1\n            while (c && c !== '<' && c !== '&') {\n              c = charAt(chunk, i++)\n              if (c && parser.trackPosition) {\n                parser.position++\n                if (c === '\\n') {\n                  parser.line++\n                  parser.column = 0\n                } else {\n                  parser.column++\n                }\n              }\n            }\n            parser.textNode += chunk.substring(starti, i - 1)\n          }\n          if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else {\n            if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n              strictFail(parser, 'Text data outside of root node.')\n            }\n            if (c === '&') {\n              parser.state = S.TEXT_ENTITY\n            } else {\n              parser.textNode += c\n            }\n          }\n          continue\n\n        case S.SCRIPT:\n          // only non-strict\n          if (c === '<') {\n            parser.state = S.SCRIPT_ENDING\n          } else {\n            parser.script += c\n          }\n          continue\n\n        case S.SCRIPT_ENDING:\n          if (c === '/') {\n            parser.state = S.CLOSE_TAG\n          } else {\n            parser.script += '<' + c\n            parser.state = S.SCRIPT\n          }\n          continue\n\n        case S.OPEN_WAKA:\n          // either a /, ?, !, or text is coming next.\n          if (c === '!') {\n            parser.state = S.SGML_DECL\n            parser.sgmlDecl = ''\n          } else if (isWhitespace(c)) {\n            // wait for it...\n          } else if (isMatch(nameStart, c)) {\n            parser.state = S.OPEN_TAG\n            parser.tagName = c\n          } else if (c === '/') {\n            parser.state = S.CLOSE_TAG\n            parser.tagName = ''\n          } else if (c === '?') {\n            parser.state = S.PROC_INST\n            parser.procInstName = parser.procInstBody = ''\n          } else {\n            strictFail(parser, 'Unencoded <')\n            // if there was some whitespace, then add that in.\n            if (parser.startTagPosition + 1 < parser.position) {\n              var pad = parser.position - parser.startTagPosition\n              c = new Array(pad).join(' ') + c\n            }\n            parser.textNode += '<' + c\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.SGML_DECL:\n          if (parser.sgmlDecl + c === '--') {\n            parser.state = S.COMMENT\n            parser.comment = ''\n            parser.sgmlDecl = ''\n            continue;\n          }\n\n          if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n            parser.state = S.DOCTYPE_DTD\n            parser.doctype += '<!' + parser.sgmlDecl + c\n            parser.sgmlDecl = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n            emitNode(parser, 'onopencdata')\n            parser.state = S.CDATA\n            parser.sgmlDecl = ''\n            parser.cdata = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n            parser.state = S.DOCTYPE\n            if (parser.doctype || parser.sawRoot) {\n              strictFail(parser,\n                'Inappropriately located doctype declaration')\n            }\n            parser.doctype = ''\n            parser.sgmlDecl = ''\n          } else if (c === '>') {\n            emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n            parser.sgmlDecl = ''\n            parser.state = S.TEXT\n          } else if (isQuote(c)) {\n            parser.state = S.SGML_DECL_QUOTED\n            parser.sgmlDecl += c\n          } else {\n            parser.sgmlDecl += c\n          }\n          continue\n\n        case S.SGML_DECL_QUOTED:\n          if (c === parser.q) {\n            parser.state = S.SGML_DECL\n            parser.q = ''\n          }\n          parser.sgmlDecl += c\n          continue\n\n        case S.DOCTYPE:\n          if (c === '>') {\n            parser.state = S.TEXT\n            emitNode(parser, 'ondoctype', parser.doctype)\n            parser.doctype = true // just remember that we saw it.\n          } else {\n            parser.doctype += c\n            if (c === '[') {\n              parser.state = S.DOCTYPE_DTD\n            } else if (isQuote(c)) {\n              parser.state = S.DOCTYPE_QUOTED\n              parser.q = c\n            }\n          }\n          continue\n\n        case S.DOCTYPE_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.q = ''\n            parser.state = S.DOCTYPE\n          }\n          continue\n\n        case S.DOCTYPE_DTD:\n          if (c === ']') {\n            parser.doctype += c\n            parser.state = S.DOCTYPE\n          } else if (c === '<') {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else if (isQuote(c)) {\n            parser.doctype += c\n            parser.state = S.DOCTYPE_DTD_QUOTED\n            parser.q = c\n          } else {\n            parser.doctype += c\n          }\n          continue\n\n        case S.DOCTYPE_DTD_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.state = S.DOCTYPE_DTD\n            parser.q = ''\n          }\n          continue\n\n        case S.COMMENT:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDING\n          } else {\n            parser.comment += c\n          }\n          continue\n\n        case S.COMMENT_ENDING:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDED\n            parser.comment = textopts(parser.opt, parser.comment)\n            if (parser.comment) {\n              emitNode(parser, 'oncomment', parser.comment)\n            }\n            parser.comment = ''\n          } else {\n            parser.comment += '-' + c\n            parser.state = S.COMMENT\n          }\n          continue\n\n        case S.COMMENT_ENDED:\n          if (c !== '>') {\n            strictFail(parser, 'Malformed comment')\n            // allow <!-- blah -- bloo --> in non-strict mode,\n            // which is a comment of \" blah -- bloo \"\n            parser.comment += '--' + c\n            parser.state = S.COMMENT\n          } else if (parser.doctype && parser.doctype !== true) {\n            parser.state = S.DOCTYPE_DTD\n          } else {\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.CDATA:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING\n          } else {\n            parser.cdata += c\n          }\n          continue\n\n        case S.CDATA_ENDING:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING_2\n          } else {\n            parser.cdata += ']' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.CDATA_ENDING_2:\n          if (c === '>') {\n            if (parser.cdata) {\n              emitNode(parser, 'oncdata', parser.cdata)\n            }\n            emitNode(parser, 'onclosecdata')\n            parser.cdata = ''\n            parser.state = S.TEXT\n          } else if (c === ']') {\n            parser.cdata += ']'\n          } else {\n            parser.cdata += ']]' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.PROC_INST:\n          if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else if (isWhitespace(c)) {\n            parser.state = S.PROC_INST_BODY\n          } else {\n            parser.procInstName += c\n          }\n          continue\n\n        case S.PROC_INST_BODY:\n          if (!parser.procInstBody && isWhitespace(c)) {\n            continue\n          } else if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else {\n            parser.procInstBody += c\n          }\n          continue\n\n        case S.PROC_INST_ENDING:\n          if (c === '>') {\n            emitNode(parser, 'onprocessinginstruction', {\n              name: parser.procInstName,\n              body: parser.procInstBody\n            })\n            parser.procInstName = parser.procInstBody = ''\n            parser.state = S.TEXT\n          } else {\n            parser.procInstBody += '?' + c\n            parser.state = S.PROC_INST_BODY\n          }\n          continue\n\n        case S.OPEN_TAG:\n          if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else {\n            newTag(parser)\n            if (c === '>') {\n              openTag(parser)\n            } else if (c === '/') {\n              parser.state = S.OPEN_TAG_SLASH\n            } else {\n              if (!isWhitespace(c)) {\n                strictFail(parser, 'Invalid character in tag name')\n              }\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.OPEN_TAG_SLASH:\n          if (c === '>') {\n            openTag(parser, true)\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Forward-slash in opening tag not followed by >')\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.ATTRIB:\n          // haven't read the attribute name yet.\n          if (isWhitespace(c)) {\n            continue\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (c === '>') {\n            strictFail(parser, 'Attribute without value')\n            parser.attribValue = parser.attribName\n            attrib(parser)\n            openTag(parser)\n          } else if (isWhitespace(c)) {\n            parser.state = S.ATTRIB_NAME_SAW_WHITE\n          } else if (isMatch(nameBody, c)) {\n            parser.attribName += c\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME_SAW_WHITE:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (isWhitespace(c)) {\n            continue\n          } else {\n            strictFail(parser, 'Attribute without value')\n            parser.tag.attributes[parser.attribName] = ''\n            parser.attribValue = ''\n            emitNode(parser, 'onattribute', {\n              name: parser.attribName,\n              value: ''\n            })\n            parser.attribName = ''\n            if (c === '>') {\n              openTag(parser)\n            } else if (isMatch(nameStart, c)) {\n              parser.attribName = c\n              parser.state = S.ATTRIB_NAME\n            } else {\n              strictFail(parser, 'Invalid attribute name')\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.ATTRIB_VALUE:\n          if (isWhitespace(c)) {\n            continue\n          } else if (isQuote(c)) {\n            parser.q = c\n            parser.state = S.ATTRIB_VALUE_QUOTED\n          } else {\n            if (!parser.opt.unquotedAttributeValues) {\n              error(parser, 'Unquoted attribute value')\n            }\n            parser.state = S.ATTRIB_VALUE_UNQUOTED\n            parser.attribValue = c\n          }\n          continue\n\n        case S.ATTRIB_VALUE_QUOTED:\n          if (c !== parser.q) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_Q\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          parser.q = ''\n          parser.state = S.ATTRIB_VALUE_CLOSED\n          continue\n\n        case S.ATTRIB_VALUE_CLOSED:\n          if (isWhitespace(c)) {\n            parser.state = S.ATTRIB\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            strictFail(parser, 'No whitespace between attributes')\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_VALUE_UNQUOTED:\n          if (!isAttribEnd(c)) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_U\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          if (c === '>') {\n            openTag(parser)\n          } else {\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.CLOSE_TAG:\n          if (!parser.tagName) {\n            if (isWhitespace(c)) {\n              continue\n            } else if (notMatch(nameStart, c)) {\n              if (parser.script) {\n                parser.script += '</' + c\n                parser.state = S.SCRIPT\n              } else {\n                strictFail(parser, 'Invalid tagname in closing tag.')\n              }\n            } else {\n              parser.tagName = c\n            }\n          } else if (c === '>') {\n            closeTag(parser)\n          } else if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else if (parser.script) {\n            parser.script += '</' + parser.tagName\n            parser.tagName = ''\n            parser.state = S.SCRIPT\n          } else {\n            if (!isWhitespace(c)) {\n              strictFail(parser, 'Invalid tagname in closing tag')\n            }\n            parser.state = S.CLOSE_TAG_SAW_WHITE\n          }\n          continue\n\n        case S.CLOSE_TAG_SAW_WHITE:\n          if (isWhitespace(c)) {\n            continue\n          }\n          if (c === '>') {\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Invalid characters in closing tag')\n          }\n          continue\n\n        case S.TEXT_ENTITY:\n        case S.ATTRIB_VALUE_ENTITY_Q:\n        case S.ATTRIB_VALUE_ENTITY_U:\n          var returnState\n          var buffer\n          switch (parser.state) {\n            case S.TEXT_ENTITY:\n              returnState = S.TEXT\n              buffer = 'textNode'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_Q:\n              returnState = S.ATTRIB_VALUE_QUOTED\n              buffer = 'attribValue'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_U:\n              returnState = S.ATTRIB_VALUE_UNQUOTED\n              buffer = 'attribValue'\n              break\n          }\n\n          if (c === ';') {\n            var parsedEntity = parseEntity(parser)\n            if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n              parser.entity = ''\n              parser.state = returnState\n              parser.write(parsedEntity)\n            } else {\n              parser[buffer] += parsedEntity\n              parser.entity = ''\n              parser.state = returnState\n            }\n          } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n            parser.entity += c\n          } else {\n            strictFail(parser, 'Invalid character in entity name')\n            parser[buffer] += '&' + parser.entity + c\n            parser.entity = ''\n            parser.state = returnState\n          }\n\n          continue\n\n        default: /* istanbul ignore next */ {\n          throw new Error(parser, 'Unknown state: ' + parser.state)\n        }\n      }\n    } // while\n\n    if (parser.position >= parser.bufferCheckPosition) {\n      checkBufferLength(parser)\n    }\n    return parser\n  }\n\n  /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n  /* istanbul ignore next */\n  if (!String.fromCodePoint) {\n    (function () {\n      var stringFromCharCode = String.fromCharCode\n      var floor = Math.floor\n      var fromCodePoint = function () {\n        var MAX_SIZE = 0x4000\n        var codeUnits = []\n        var highSurrogate\n        var lowSurrogate\n        var index = -1\n        var length = arguments.length\n        if (!length) {\n          return ''\n        }\n        var result = ''\n        while (++index < length) {\n          var codePoint = Number(arguments[index])\n          if (\n            !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n            codePoint < 0 || // not a valid Unicode code point\n            codePoint > 0x10FFFF || // not a valid Unicode code point\n            floor(codePoint) !== codePoint // not an integer\n          ) {\n            throw RangeError('Invalid code point: ' + codePoint)\n          }\n          if (codePoint <= 0xFFFF) { // BMP code point\n            codeUnits.push(codePoint)\n          } else { // Astral code point; split in surrogate halves\n            // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n            codePoint -= 0x10000\n            highSurrogate = (codePoint >> 10) + 0xD800\n            lowSurrogate = (codePoint % 0x400) + 0xDC00\n            codeUnits.push(highSurrogate, lowSurrogate)\n          }\n          if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n            result += stringFromCharCode.apply(null, codeUnits)\n            codeUnits.length = 0\n          }\n        }\n        return result\n      }\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(String, 'fromCodePoint', {\n          value: fromCodePoint,\n          configurable: true,\n          writable: true\n        })\n      } else {\n        String.fromCodePoint = fromCodePoint\n      }\n    }())\n  }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  \"use strict\";\n  exports.stripBOM = function(str) {\n    if (str[0] === '\\uFEFF') {\n      return str.substring(1);\n    } else {\n      return str;\n    }\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  \"use strict\";\n  var prefixMatch;\n\n  prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n  exports.normalize = function(str) {\n    return str.toLowerCase();\n  };\n\n  exports.firstCharLowerCase = function(str) {\n    return str.charAt(0).toLowerCase() + str.slice(1);\n  };\n\n  exports.stripPrefix = function(str) {\n    return str.replace(prefixMatch, '');\n  };\n\n  exports.parseNumbers = function(str) {\n    if (!isNaN(str)) {\n      str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n    }\n    return str;\n  };\n\n  exports.parseBooleans = function(str) {\n    if (/^(?:true|false)$/i.test(str)) {\n      str = str.toLowerCase() === 'true';\n    }\n    return str;\n  };\n\n}).call(this);\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  \"use strict\";\n  var bom, defaults, defineProperty, events, isEmpty, processItem, processors, sax, setImmediate,\n    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  sax = require('sax');\n\n  events = require('events');\n\n  bom = require('./bom');\n\n  processors = require('./processors');\n\n  setImmediate = require('timers').setImmediate;\n\n  defaults = require('./defaults').defaults;\n\n  isEmpty = function(thing) {\n    return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n  };\n\n  processItem = function(processors, item, key) {\n    var i, len, process;\n    for (i = 0, len = processors.length; i < len; i++) {\n      process = processors[i];\n      item = process(item, key);\n    }\n    return item;\n  };\n\n  defineProperty = function(obj, key, value) {\n    var descriptor;\n    descriptor = Object.create(null);\n    descriptor.value = value;\n    descriptor.writable = true;\n    descriptor.enumerable = true;\n    descriptor.configurable = true;\n    return Object.defineProperty(obj, key, descriptor);\n  };\n\n  exports.Parser = (function(superClass) {\n    extend(Parser, superClass);\n\n    function Parser(opts) {\n      this.parseStringPromise = bind(this.parseStringPromise, this);\n      this.parseString = bind(this.parseString, this);\n      this.reset = bind(this.reset, this);\n      this.assignOrPush = bind(this.assignOrPush, this);\n      this.processAsync = bind(this.processAsync, this);\n      var key, ref, value;\n      if (!(this instanceof exports.Parser)) {\n        return new exports.Parser(opts);\n      }\n      this.options = {};\n      ref = defaults[\"0.2\"];\n      for (key in ref) {\n        if (!hasProp.call(ref, key)) continue;\n        value = ref[key];\n        this.options[key] = value;\n      }\n      for (key in opts) {\n        if (!hasProp.call(opts, key)) continue;\n        value = opts[key];\n        this.options[key] = value;\n      }\n      if (this.options.xmlns) {\n        this.options.xmlnskey = this.options.attrkey + \"ns\";\n      }\n      if (this.options.normalizeTags) {\n        if (!this.options.tagNameProcessors) {\n          this.options.tagNameProcessors = [];\n        }\n        this.options.tagNameProcessors.unshift(processors.normalize);\n      }\n      this.reset();\n    }\n\n    Parser.prototype.processAsync = function() {\n      var chunk, err;\n      try {\n        if (this.remaining.length <= this.options.chunkSize) {\n          chunk = this.remaining;\n          this.remaining = '';\n          this.saxParser = this.saxParser.write(chunk);\n          return this.saxParser.close();\n        } else {\n          chunk = this.remaining.substr(0, this.options.chunkSize);\n          this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n          this.saxParser = this.saxParser.write(chunk);\n          return setImmediate(this.processAsync);\n        }\n      } catch (error1) {\n        err = error1;\n        if (!this.saxParser.errThrown) {\n          this.saxParser.errThrown = true;\n          return this.emit(err);\n        }\n      }\n    };\n\n    Parser.prototype.assignOrPush = function(obj, key, newValue) {\n      if (!(key in obj)) {\n        if (!this.options.explicitArray) {\n          return defineProperty(obj, key, newValue);\n        } else {\n          return defineProperty(obj, key, [newValue]);\n        }\n      } else {\n        if (!(obj[key] instanceof Array)) {\n          defineProperty(obj, key, [obj[key]]);\n        }\n        return obj[key].push(newValue);\n      }\n    };\n\n    Parser.prototype.reset = function() {\n      var attrkey, charkey, ontext, stack;\n      this.removeAllListeners();\n      this.saxParser = sax.parser(this.options.strict, {\n        trim: false,\n        normalize: false,\n        xmlns: this.options.xmlns\n      });\n      this.saxParser.errThrown = false;\n      this.saxParser.onerror = (function(_this) {\n        return function(error) {\n          _this.saxParser.resume();\n          if (!_this.saxParser.errThrown) {\n            _this.saxParser.errThrown = true;\n            return _this.emit(\"error\", error);\n          }\n        };\n      })(this);\n      this.saxParser.onend = (function(_this) {\n        return function() {\n          if (!_this.saxParser.ended) {\n            _this.saxParser.ended = true;\n            return _this.emit(\"end\", _this.resultObject);\n          }\n        };\n      })(this);\n      this.saxParser.ended = false;\n      this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n      this.resultObject = null;\n      stack = [];\n      attrkey = this.options.attrkey;\n      charkey = this.options.charkey;\n      this.saxParser.onopentag = (function(_this) {\n        return function(node) {\n          var key, newValue, obj, processedKey, ref;\n          obj = {};\n          obj[charkey] = \"\";\n          if (!_this.options.ignoreAttrs) {\n            ref = node.attributes;\n            for (key in ref) {\n              if (!hasProp.call(ref, key)) continue;\n              if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n                obj[attrkey] = {};\n              }\n              newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];\n              processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;\n              if (_this.options.mergeAttrs) {\n                _this.assignOrPush(obj, processedKey, newValue);\n              } else {\n                defineProperty(obj[attrkey], processedKey, newValue);\n              }\n            }\n          }\n          obj[\"#name\"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;\n          if (_this.options.xmlns) {\n            obj[_this.options.xmlnskey] = {\n              uri: node.uri,\n              local: node.local\n            };\n          }\n          return stack.push(obj);\n        };\n      })(this);\n      this.saxParser.onclosetag = (function(_this) {\n        return function() {\n          var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;\n          obj = stack.pop();\n          nodeName = obj[\"#name\"];\n          if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n            delete obj[\"#name\"];\n          }\n          if (obj.cdata === true) {\n            cdata = obj.cdata;\n            delete obj.cdata;\n          }\n          s = stack[stack.length - 1];\n          if (obj[charkey].match(/^\\s*$/) && !cdata) {\n            emptyStr = obj[charkey];\n            delete obj[charkey];\n          } else {\n            if (_this.options.trim) {\n              obj[charkey] = obj[charkey].trim();\n            }\n            if (_this.options.normalize) {\n              obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n            }\n            obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];\n            if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n              obj = obj[charkey];\n            }\n          }\n          if (isEmpty(obj)) {\n            if (typeof _this.options.emptyTag === 'function') {\n              obj = _this.options.emptyTag();\n            } else {\n              obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n            }\n          }\n          if (_this.options.validator != null) {\n            xpath = \"/\" + ((function() {\n              var i, len, results;\n              results = [];\n              for (i = 0, len = stack.length; i < len; i++) {\n                node = stack[i];\n                results.push(node[\"#name\"]);\n              }\n              return results;\n            })()).concat(nodeName).join(\"/\");\n            (function() {\n              var err;\n              try {\n                return obj = _this.options.validator(xpath, s && s[nodeName], obj);\n              } catch (error1) {\n                err = error1;\n                return _this.emit(\"error\", err);\n              }\n            })();\n          }\n          if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n            if (!_this.options.preserveChildrenOrder) {\n              node = {};\n              if (_this.options.attrkey in obj) {\n                node[_this.options.attrkey] = obj[_this.options.attrkey];\n                delete obj[_this.options.attrkey];\n              }\n              if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n                node[_this.options.charkey] = obj[_this.options.charkey];\n                delete obj[_this.options.charkey];\n              }\n              if (Object.getOwnPropertyNames(obj).length > 0) {\n                node[_this.options.childkey] = obj;\n              }\n              obj = node;\n            } else if (s) {\n              s[_this.options.childkey] = s[_this.options.childkey] || [];\n              objClone = {};\n              for (key in obj) {\n                if (!hasProp.call(obj, key)) continue;\n                defineProperty(objClone, key, obj[key]);\n              }\n              s[_this.options.childkey].push(objClone);\n              delete obj[\"#name\"];\n              if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n                obj = obj[charkey];\n              }\n            }\n          }\n          if (stack.length > 0) {\n            return _this.assignOrPush(s, nodeName, obj);\n          } else {\n            if (_this.options.explicitRoot) {\n              old = obj;\n              obj = {};\n              defineProperty(obj, nodeName, old);\n            }\n            _this.resultObject = obj;\n            _this.saxParser.ended = true;\n            return _this.emit(\"end\", _this.resultObject);\n          }\n        };\n      })(this);\n      ontext = (function(_this) {\n        return function(text) {\n          var charChild, s;\n          s = stack[stack.length - 1];\n          if (s) {\n            s[charkey] += text;\n            if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n              s[_this.options.childkey] = s[_this.options.childkey] || [];\n              charChild = {\n                '#name': '__text__'\n              };\n              charChild[charkey] = text;\n              if (_this.options.normalize) {\n                charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n              }\n              s[_this.options.childkey].push(charChild);\n            }\n            return s;\n          }\n        };\n      })(this);\n      this.saxParser.ontext = ontext;\n      return this.saxParser.oncdata = (function(_this) {\n        return function(text) {\n          var s;\n          s = ontext(text);\n          if (s) {\n            return s.cdata = true;\n          }\n        };\n      })(this);\n    };\n\n    Parser.prototype.parseString = function(str, cb) {\n      var err;\n      if ((cb != null) && typeof cb === \"function\") {\n        this.on(\"end\", function(result) {\n          this.reset();\n          return cb(null, result);\n        });\n        this.on(\"error\", function(err) {\n          this.reset();\n          return cb(err);\n        });\n      }\n      try {\n        str = str.toString();\n        if (str.trim() === '') {\n          this.emit(\"end\", null);\n          return true;\n        }\n        str = bom.stripBOM(str);\n        if (this.options.async) {\n          this.remaining = str;\n          setImmediate(this.processAsync);\n          return this.saxParser;\n        }\n        return this.saxParser.write(str).close();\n      } catch (error1) {\n        err = error1;\n        if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n          this.emit('error', err);\n          return this.saxParser.errThrown = true;\n        } else if (this.saxParser.ended) {\n          throw err;\n        }\n      }\n    };\n\n    Parser.prototype.parseStringPromise = function(str) {\n      return new Promise((function(_this) {\n        return function(resolve, reject) {\n          return _this.parseString(str, function(err, value) {\n            if (err) {\n              return reject(err);\n            } else {\n              return resolve(value);\n            }\n          });\n        };\n      })(this));\n    };\n\n    return Parser;\n\n  })(events);\n\n  exports.parseString = function(str, a, b) {\n    var cb, options, parser;\n    if (b != null) {\n      if (typeof b === 'function') {\n        cb = b;\n      }\n      if (typeof a === 'object') {\n        options = a;\n      }\n    } else {\n      if (typeof a === 'function') {\n        cb = a;\n      }\n      options = {};\n    }\n    parser = new exports.Parser(options);\n    return parser.parseString(str, cb);\n  };\n\n  exports.parseStringPromise = function(str, a) {\n    var options, parser;\n    if (typeof a === 'object') {\n      options = a;\n    }\n    parser = new exports.Parser(options);\n    return parser.parseStringPromise(str);\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n  \"use strict\";\n  var builder, defaults, parser, processors,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  defaults = require('./defaults');\n\n  builder = require('./builder');\n\n  parser = require('./parser');\n\n  processors = require('./processors');\n\n  exports.defaults = defaults.defaults;\n\n  exports.processors = processors;\n\n  exports.ValidationError = (function(superClass) {\n    extend(ValidationError, superClass);\n\n    function ValidationError(message) {\n      this.message = message;\n    }\n\n    return ValidationError;\n\n  })(Error);\n\n  exports.Builder = builder.Builder;\n\n  exports.Parser = parser.Parser;\n\n  exports.parseString = parser.parseString;\n\n  exports.parseStringPromise = parser.parseStringPromise;\n\n}).call(this);\n","// enum-like object to avoid typos\r\nexport const searchTypes = {\r\n    STREET: \"street\",\r\n    DISTRICT: \"district\",\r\n    PARCEL: \"parcel\",\r\n    STREET_KEY: \"streetKey\",\r\n    ADDRESS_AFFIXED: \"addressAffixed\",\r\n    ADDRESS_UNAFFIXED: \"addressUnaffixed\",\r\n    HOUSE_NUMBERS_FOR_STREET: \"houseNumbersForStreet\"\r\n};\r\n\r\n/**\r\n* @typedef {Object} SearchResult\r\n* @property {String} type which kind of hit this is\r\n* @property {object} properties contents of the hit as parsed by xml2js - e.g. contains $ keys for xml attributes\r\n* @property {object} geometry may be a point, a bbox, a polygon, ...\r\n*/\r\n","import defaults from \"../defaults\";\r\n\r\nlet showGeographicIdentifier = defaults.showGeographicIdentifier;\r\n\r\n/**\r\n * Sets whether geographicIdentifier should be used as name of a search result.\r\n * @param {boolean} show geographicIdentifier should be used as name of a search result\r\n * @returns {void}\r\n */\r\nexport function setShowGeographicIdentifier (show) {\r\n    show ? showGeographicIdentifier = show : null;\r\n}\r\n\r\n/**\r\n * Retrieves active gazetteer URL.\r\n * @returns {boolean} geographicIdentifier should be used as name of a search result\r\n */\r\nexport function getShowGeographicIdentifier () {\r\n    return showGeographicIdentifier;\r\n}\r\n","import xml2js from \"xml2js\";\r\n\r\nimport {searchTypes} from \"./types\";\r\nimport {getShowGeographicIdentifier} from \"./showGeographicIdentifier\";\r\n\r\n/**\r\n * Flattens xml2js result a little to avoid unnecessary one-element arrays.\r\n * NOTE currently keeping special properties ($, _) of xml2js to keep attributes.\r\n * @param {*} a anything\r\n * @returns {*} a's first element if one-element array, else a\r\n * @ignore\r\n */\r\nfunction flatten (a) {\r\n    if (Array.isArray(a) && a.length === 1) {\r\n        return flatten(a[0]);\r\n    }\r\n    return a;\r\n}\r\n\r\n/**\r\n * Recursively searches an object for a key.\r\n * Since parsed XML tends to contain extra arrays, those are stepped into.\r\n * @param {(object|Array)} o object to deep-search for key\r\n * @param {string} key key to search for\r\n * @returns {*} value behind key\r\n * @ignore\r\n */\r\nfunction findKey (o, key) {\r\n    if (Array.isArray(o)) {\r\n        return o.map(x => findKey(x, key)).filter(x => x)[0];\r\n    }\r\n    if (typeof o !== \"object\") {\r\n        return null;\r\n    }\r\n    if (typeof o[key] !== \"undefined\") {\r\n        return o[key];\r\n    }\r\n    return Object.keys(o).map(oKey => findKey(o[oKey], key)).filter(x => x)[0];\r\n}\r\n\r\n/**\r\n * Simply copies over all properties it can find.\r\n * @param {object} entry xml2js-parsed result entry\r\n * @returns {object} copied and flattened properties\r\n * @ignore\r\n */\r\nfunction getAllPropertiesFlat (entry) {\r\n    const properties = {\r\n        objectType: Object.keys(entry)[0]\r\n    };\r\n\r\n    Object.keys(entry[properties.objectType][0]).forEach(propertyName => {\r\n        properties[propertyName] = flatten(entry[properties.objectType][0][propertyName]);\r\n    });\r\n\r\n    return properties;\r\n}\r\n\r\n/**\r\n * Parses coordinates from wkt string.\r\n * @param {string} wkt position as wkt\r\n * @returns {string} position as coordinates\r\n */\r\nfunction parseCoordinatesFromWkt (wkt) {\r\n    let pos = [];\r\n\r\n    if (wkt.startsWith(\"POINT\")) {\r\n        pos = wkt.split(\")\")[0]?.split(\"(\")[1];\r\n    }\r\n\r\n    return pos;\r\n}\r\n\r\n/**\r\n * Parses result entries; uses type-specific rules to determine name/geometry.\r\n * @param {object} entry xml2js-parsed result entry\r\n * @param {string} type type string\r\n * @returns {SearchResult} parsed search result for districts\r\n * @ignore\r\n */\r\nfunction parseEntry (entry, type) {\r\n    const searchResult = {\r\n        type,\r\n        properties: getAllPropertiesFlat(entry)\r\n    };\r\n    let pos = searchResult.properties?.pos ? parseCoordinatesFromWkt(searchResult.properties.pos) : findKey(searchResult.properties, \"pos\")[0],\r\n        hausnummer = \"\",\r\n        hausnummernzusatz = \"\",\r\n        strassenname = \"\";\r\n\r\n    // setting name\r\n    switch (type) {\r\n        case searchTypes.DISTRICT:\r\n            searchResult.name = searchResult.properties.geographicIdentifier?._ ? searchResult.properties.geographicIdentifier._ : searchResult.properties.geographicIdentifier;\r\n            break;\r\n        case searchTypes.STREET_KEY:\r\n        case searchTypes.STREET:\r\n            if (searchResult.properties?.position_strassenachse) {\r\n                pos = findKey(searchResult.properties?.position_strassenachse, \"pos\")[0];\r\n            }\r\n            searchResult.name = getShowGeographicIdentifier() ? searchResult.properties.geographicIdentifier._ : searchResult.properties.strassenname;\r\n            break;\r\n        case searchTypes.PARCEL:\r\n            searchResult.name = `${searchResult.properties.gemarkung}/${searchResult.properties.flurstuecksnummer}`;\r\n            break;\r\n        case searchTypes.HOUSE_NUMBERS_FOR_STREET:\r\n            // house number like \"11a\" as name is not very telling - use \"Streetname 11a\" and save \"11a\" separately in properties\r\n            hausnummer = searchResult.properties.hausnummer?._ ? searchResult.properties.hausnummer._ : searchResult.properties.hausnummer;\r\n\r\n            if (searchResult.properties.hausnummernzusatz) {\r\n                hausnummernzusatz = searchResult.properties.hausnummernzusatz?._ ? searchResult.properties.hausnummernzusatz._ : searchResult.properties.hausnummernzusatz;\r\n            }\r\n\r\n            searchResult.properties.hausnummerkomplett = `${hausnummer}${hausnummernzusatz}`;\r\n            searchResult.name =\r\n            getShowGeographicIdentifier() ? searchResult.properties.geographicIdentifier._ :\r\n                (searchResult.properties?.geographicIdentifier ? searchResult.properties.geographicIdentifier._.split(searchResult.properties.hausnummerkomplett)[0] : searchResult.properties.strassenname + \" \") +\r\n                searchResult.properties.hausnummerkomplett;\r\n            break;\r\n        case searchTypes.ADDRESS_AFFIXED:\r\n            strassenname = searchResult.properties.strassenname?._ ? searchResult.properties.strassenname._ : searchResult.properties.strassenname;\r\n            hausnummer = searchResult.properties.hausnummer?._ ? searchResult.properties.hausnummer._ : searchResult.properties.hausnummer;\r\n            hausnummernzusatz = searchResult.properties.hausnummernzusatz?._ ? searchResult.properties.hausnummernzusatz._ : searchResult.properties.hausnummernzusatz;\r\n\r\n            searchResult.name = getShowGeographicIdentifier() ? searchResult.properties.geographicIdentifier._ : `${strassenname} ${hausnummer}${hausnummernzusatz}`;\r\n            break;\r\n        case searchTypes.ADDRESS_UNAFFIXED:\r\n            strassenname = searchResult.properties.strassenname?._ ? searchResult.properties.strassenname._ : searchResult.properties.strassenname;\r\n            hausnummer = searchResult.properties.hausnummer?._ ? searchResult.properties.hausnummer._ : searchResult.properties.hausnummer;\r\n\r\n            searchResult.name =\r\n            getShowGeographicIdentifier() ? searchResult.properties.geographicIdentifier._ :\r\n                (searchResult.properties?.geographicIdentifier ? searchResult.properties.geographicIdentifier._.split(hausnummer)[0] : strassenname + \" \") + hausnummer;\r\n            break;\r\n        default:\r\n            searchResult.name = null;\r\n            console.error(`Unknown type in searchAddress.parse: '${type}'. Could not set name.`);\r\n            break;\r\n    }\r\n\r\n    // setting geometry\r\n    switch (type) {\r\n        case searchTypes.DISTRICT:\r\n        case searchTypes.STREET_KEY:\r\n        case searchTypes.STREET:\r\n        case searchTypes.PARCEL:\r\n        case searchTypes.HOUSE_NUMBERS_FOR_STREET:\r\n        case searchTypes.ADDRESS_AFFIXED:\r\n        case searchTypes.ADDRESS_UNAFFIXED:\r\n            // for these, all polygon points are identical - using point is more clear\r\n            searchResult.geometry = {\r\n                type: \"Point\",\r\n                coordinates: pos.split(\" \")\r\n            };\r\n            break;\r\n        default:\r\n            searchResult.geometry = null;\r\n            console.error(`Unknown type in searchAddress.parse: '${type}'. Could not set geometry.`);\r\n            break;\r\n    }\r\n\r\n    return searchResult;\r\n}\r\n\r\n/**\r\n * Parses gazetteer xml to search objects.\r\n * @param {string} key internal name for query froms searchTypes\r\n * @param {string} xmlString gazetteer answer as xml string\r\n * @returns {Promise<SearchResult[]>} parsed response\r\n * @ignore\r\n */\r\nexport function parse (key, xmlString) {\r\n    return new Promise((resolve, reject) => {\r\n        // tag processor \"stripPrefix\" removes e.g. \"dog:\" prefix on properties\r\n        xml2js.parseString(xmlString, {tagNameProcessors: [xml2js.processors.stripPrefix]},\r\n            (err, source) => {\r\n                if (err) {\r\n                    reject(err);\r\n                    return;\r\n                }\r\n\r\n                try {\r\n                    const searchResults = source.FeatureCollection?.member\r\n                        ? source.FeatureCollection.member\r\n                            .map(entry => parseEntry(entry, key))\r\n                            .sort((a, b) => a.name.localeCompare(b.name))\r\n                        : [];\r\n\r\n                    resolve(searchResults);\r\n                }\r\n                catch (e) {\r\n                    reject(e);\r\n                }\r\n            });\r\n    });\r\n}\r\n","import defaults from \"../defaults\";\r\n\r\n// Holds URL of gazetteer to use in search function\r\nlet gazetteerUrl = defaults.gazetteerUrl;\r\n\r\n/**\r\n * Sets the gazetteerUrl to be used by the search function.\r\n * If parameter is falsy, url from defaults.js is kept.\r\n * @param {String} url url to use for searchAddress\r\n * @returns {void}\r\n */\r\nexport function setGazetteerUrl (url) {\r\n    url ? gazetteerUrl = url : null;\r\n}\r\n\r\n/**\r\n * Retrieves active gazetteer URL.\r\n * @returns {string} currently set gazetteer URL\r\n */\r\nexport function getGazetteerUrl () {\r\n    return gazetteerUrl;\r\n}\r\n","import {getGazetteerUrl} from \"./gazetteerUrl\";\r\nimport {searchTypes} from \"./types\";\r\n\r\n/**\r\n * Encodes given string(s) to be usable as URI component.\r\n * @param {(string[]|string)} v value(s) to encode\r\n * @returns {(string[]|string)} encoded value(s)\r\n * @ignore\r\n */\r\nexport function encode (v) {\r\n    return Array.isArray(v) ? v.map(encodeURIComponent) : encodeURIComponent(v);\r\n}\r\n\r\n/**\r\n * Builds the part of the url query where a stored query is addressed by id.\r\n * @param {string} key internal name for query froms searchTypes\r\n * @param {(string[]|string)} v string for single-value queries, string[] for multi-value queries, strings in order of appearance in URL\r\n * @returns {string} URL query part like \"&StoryQuery_ID=queryName&param=value\"\r\n * @param {boolean} searchStreetBeforeWord whether to put an star in front of the search for streets (full text search)\r\n * @ignore\r\n */\r\nexport function getIdQuery (key, v, searchStreetBeforeWord = true) {\r\n    return {\r\n        [searchTypes.STREET]: encodedValue => searchStreetBeforeWord ? `&StoredQuery_ID=findeStrasse&strassenname=*${encodedValue}` : `&StoredQuery_ID=findeStrasse&strassenname=${encodedValue}`,\r\n        [searchTypes.DISTRICT]: encodedValue => `&StoredQuery_ID=findeStadtteil&stadtteilname=${encodedValue}`,\r\n        [searchTypes.PARCEL]: encodedValue => `&StoredQuery_ID=Flurstueck&gemarkung=${encodedValue[0]}&flurstuecksnummer=${encodedValue[1]}`,\r\n        [searchTypes.STREET_KEY]: encodedValue => `&StoredQuery_ID=findeStrassenSchluessel&strassenschluessel=${encodedValue}`,\r\n        [searchTypes.ADDRESS_AFFIXED]: encodedValue => `&StoredQuery_ID=AdresseMitZusatz&strassenname=${encodedValue[0]}&hausnummer=${encodedValue[1]}&zusatz=${encodedValue[2]}`,\r\n        [searchTypes.ADDRESS_UNAFFIXED]: encodedValue => `&StoredQuery_ID=AdresseOhneZusatz&strassenname=${encodedValue[0]}&hausnummer=${encodedValue[1]}`,\r\n        [searchTypes.HOUSE_NUMBERS_FOR_STREET]: encodedValue => `&StoredQuery_ID=HausnummernZuStrasse&strassenname=${encodedValue}`\r\n    }[key](encode(v));\r\n}\r\n\r\n/**\r\n * Retrieves xml text for a gazetteer search.\r\n * @param {string} key internal name for query froms searchTypes\r\n * @param {(string[]|string)} value value to search for\r\n * @param {AbortController} abortController the controller to abort the search\r\n * @param {boolean} searchStreetBeforeWord whether to put an star in front of the search for streets (full text search)\r\n * @returns {Promise<string>} xhr response text\r\n * @ignore\r\n */\r\nexport function searchGazetteer (key, value, abortController, searchStreetBeforeWord) {\r\n    return new Promise((resolve, reject) => {\r\n        const url = getGazetteerUrl() + getIdQuery(key, value, searchStreetBeforeWord);\r\n\r\n        fetch(url, {\r\n            signal: abortController?.signal,\r\n            timeout: 6000\r\n        })\r\n            .then(response => resolve(response.text()))\r\n            .catch(error => reject(error));\r\n    });\r\n}\r\n","import {zoomToSearchResult} from \"../lib/zoomTo\";\r\n\r\nimport {parse} from \"./parse\";\r\nimport {searchTypes} from \"./types\";\r\nimport {searchGazetteer} from \"./searchGazetteer\";\r\n\r\nlet abortController = null;\r\n\r\n/**\r\n * Chains gazetteer request and response parser.\r\n * @param {string} type from searchTypes\r\n * @param {(string|string[])} values one or multiple strings, depending on type\r\n * @param {function} sortFunction a function with two parameters which can be used to sort all results\r\n * @param {function} filterFunction a function which will be executed to filter results\r\n * @param {boolean} searchStreetBeforeWord whether to put an star in front of the search for streets (full text search)\r\n * @returns {Promise<SearchResult[]>} parsed response\r\n * @ignore\r\n */\r\nfunction searchAndParse (type, values, sortFunction = (a, b) => a.name.localeCompare(b.name), filterFunction = () => true, searchStreetBeforeWord) {\r\n    return new Promise((resolve, reject) => {\r\n        searchGazetteer(type, values, abortController, searchStreetBeforeWord)\r\n            .then(results => {\r\n                parse(type, results).then(parsed => {\r\n                    resolve(parsed.filter(filterFunction)\r\n                        .sort(sortFunction));\r\n                });\r\n            })\r\n            .catch(e => reject(e));\r\n    });\r\n}\r\n\r\n/**\r\n * Chains gazetteer request and response parser for street and house number.\r\n * Combines streets with their available house numbers before returning.\r\n * @param {string} searchstring string to search for\r\n * @param {boolean} searchHouseNumbers whether to additionally search for house numbers\r\n * @param {boolean} searchStreetBeforeWord whether to put an star in front of the search for streets (full text search)\r\n * @returns {Promise<SearchResult[]>} parsed response\r\n * @ignore\r\n */\r\nfunction searchAndParseStreetAndHouseNumber (searchstring, searchHouseNumbers, searchStreetBeforeWord) {\r\n    return new Promise((resolve, reject) => {\r\n        searchGazetteer(searchTypes.STREET, searchstring, abortController, searchStreetBeforeWord)\r\n            .then(streetResults => parse(searchTypes.STREET, streetResults))\r\n            .then(parsedStreetResults => {\r\n                const allSearches = [],\r\n                    matches = searchstring.match(new RegExp(\"^(.+)[\\\\s,](\\\\d+|\\\\d.*)$\"));\r\n\r\n                for (let i = 0; i < parsedStreetResults.length; i++) {\r\n                    // put street in front of street's street+hnr as ordering\r\n                    allSearches.push([parsedStreetResults[i]]);\r\n                    if (searchHouseNumbers) {\r\n                        allSearches.push(searchAndParse(searchTypes.HOUSE_NUMBERS_FOR_STREET, parsedStreetResults[i].name, undefined, undefined, searchStreetBeforeWord));\r\n                    }\r\n                }\r\n\r\n                if (!parsedStreetResults.length && matches?.length && searchHouseNumbers) {\r\n                    allSearches.push(searchAndParse(searchTypes.HOUSE_NUMBERS_FOR_STREET,\r\n                        matches[1],\r\n                        (a, b) => parseInt(a.properties?.hausnummer, 10) - parseInt(b.properties?.hausnummer, 10),\r\n                        item => item.properties?.hausnummerkomplett?.indexOf(matches[2]) === 0, // check longer housenumbers and suffixes!,\r\n                        searchStreetBeforeWord));\r\n                }\r\n\r\n                return Promise.all(allSearches);\r\n            })\r\n            .then(allResults => resolve([].concat(...allResults)))\r\n            .catch(e => reject(e));\r\n    });\r\n}\r\n\r\n/**\r\n * The search function uses the configured gazetteer to retrieve geospatial information\r\n * regarding a search string. Use the parameters to decide what to search for. At least one\r\n * searchX parameter must be true to start a search, or the search will be rejected.\r\n * @param {String} searchstring search string\r\n * @param {object} params parameter object\r\n * @param {boolean} [params.zoom = false] whether to zoom to the result if it's a single hit\r\n * @param {boolean} [params.zoomToParams] parameter object forwarded to ol/View.fit function {@link https://openlayers.org/en/latest/apidoc/module-ol_View.html#~FitOptions}\r\n * @param {ol/Map} [params.map] map object must be given if zoomTo is true\r\n * @param {boolean} [params.searchAddress = false] set true to search for a whole address\r\n * @param {boolean} [params.searchStreets = false] set true to search for streets\r\n * @param {boolean} [params.searchHouseNumbers = false] set true to search for house numbers; only works if searchStreets is true\r\n * @param {boolean} [params.searchDistricts = false] set true to search for districts\r\n * @param {boolean} [params.searchParcels = false] set true to search for parcels\r\n * @param {boolean} [params.searchStreetKey = false] set true to search for street keys\r\n * @param {boolean} [params.minCharacters = 3] minimum length of searchstring\r\n * @param {boolean} [abortPreviousSearch = false] if true the previous search is aborted\r\n * @returns {Promise<SearchResult[]>} resolves array of search results; rejects without value if search was canceled internally\r\n */\r\nexport function search (searchstring, params, abortPreviousSearch = false) {\r\n    if (abortPreviousSearch && abortController !== null) {\r\n        abortController.abort();\r\n    }\r\n    abortController = new AbortController();\r\n\r\n    return new Promise((resolve, reject) => {\r\n        const {\r\n                map,\r\n                zoom = false,\r\n                zoomToParams,\r\n                searchAddress = false,\r\n                searchStreets = false,\r\n                searchStreetBeforeWord = true,\r\n                searchDistricts = false,\r\n                searchParcels = false,\r\n                searchStreetKey = false,\r\n                minCharacters = 3\r\n            } = params,\r\n            // promises array\r\n            searches = [];\r\n        let {\r\n            searchHouseNumbers = false\r\n        } = params;\r\n\r\n        // stop search if search string too short\r\n        if (searchstring.length < minCharacters) {\r\n            reject({error: \"Search string too short.\"});\r\n            return;\r\n        }\r\n\r\n        // warn if zooming will not be possible\r\n        if (zoom && !map) {\r\n            console.warn(\"Instructed to zoom, but required map object was not given. Zooming will be skipped.\");\r\n        }\r\n\r\n        // warn if supposed to search for house numbers, but not street - set searchHouseNumbers false for next check\r\n        if (!searchStreets && searchHouseNumbers) {\r\n            console.warn(`Search for '${searchstring}' supposed to retrieve house numbers, but not streets. Invalid search configuration. House numbers will not be searched for as a result.`);\r\n            searchHouseNumbers = false;\r\n        }\r\n\r\n        // stop search if no search to be done\r\n        if (!(searchAddress || searchStreets || searchHouseNumbers || searchDistricts || searchParcels || searchStreetKey)) {\r\n            reject({error: `Search for '${searchstring}' received no indication what to search for. Search is canceled.`});\r\n            return;\r\n        }\r\n\r\n        if (searchStreets) {\r\n            searches.push(searchAndParseStreetAndHouseNumber(searchstring, searchHouseNumbers, searchStreetBeforeWord));\r\n        }\r\n\r\n        if (searchAddress) {\r\n            // assume pattern like \"Streetname 41b\", split to [\"Streetname\", \"41\", \"b\"]\r\n            let values = searchstring.split(/(\\d+)/).map(s => s.trim()).filter(x => x);\r\n\r\n            if (values.length > 3) {\r\n                const streetName = values[0],\r\n                    houseNum = values[1],\r\n                    appendix = searchstring.replace(values[0], \"\").replace(values[1], \"\").trim();\r\n\r\n                values = [streetName, houseNum, appendix];\r\n            }\r\n\r\n            // if neither two (no affix like b) or three (with affix like b) parts found, not enough (or too many) params for method - don't search\r\n            const type = [false, false, searchTypes.ADDRESS_UNAFFIXED, searchTypes.ADDRESS_AFFIXED][values.length];\r\n\r\n            if (type) {\r\n                searches.push(searchAndParse(type, values));\r\n            }\r\n        }\r\n\r\n        // needs pattern that looks like a name\r\n        if (searchDistricts && (/^[a-z-üäöß]+$/i).test(searchstring)) {\r\n            searches.push(searchAndParse(searchTypes.DISTRICT, searchstring));\r\n        }\r\n\r\n        // needs pattern like \"A12345\"\r\n        if (searchStreetKey && (/^[a-z]{1}[0-9]{1,5}$/i).test(searchstring)) {\r\n            searches.push(searchAndParse(searchTypes.STREET_KEY, searchstring));\r\n        }\r\n\r\n        if (searchParcels) {\r\n            let values;\r\n\r\n            // assume pattern like \"1234/1...\", \"1234 1...\", ...\r\n            if ((/^[0-9]{4}[\\s|/][0-9]*$/).test(searchstring)) {\r\n                values = searchstring.split(/[\\s|/]/);\r\n            }\r\n            // ... or \"12345...\", where separation is after fourth character\r\n            else if ((/^[0-9]{5,}$/).test(searchstring)) {\r\n                values = [searchstring.slice(0, 4), searchstring.slice(4)];\r\n            }\r\n\r\n            // if searchstring didn't match a pattern, don't search\r\n            if (values) {\r\n                searches.push(searchAndParse(searchTypes.PARCEL, values));\r\n            }\r\n        }\r\n\r\n        Promise.all(searches)\r\n            .then(arr => {\r\n                const flattened = [].concat(...arr);\r\n\r\n                if (zoom && map && flattened.length === 1) {\r\n                    try {\r\n                        zoomToSearchResult(map, flattened[0], zoomToParams);\r\n                    }\r\n                    catch (e) {\r\n                        console.error(\"Zooming to element from gazetteer failed.\");\r\n                        console.error(e);\r\n                    }\r\n                }\r\n                resolve(flattened);\r\n            })\r\n            .catch(e => reject(e));\r\n    });\r\n}\r\n","import defaults from \"../defaults\";\r\n\r\n/**\r\n * Sets the configured background image to the div the map is to be rendered in.\r\n * @param {object} [config={}] - user configuration\r\n * @param {string} [config.target] - id of map div\r\n * @param {string} [config.backgroundImage] - image URL to set; \"\" means none, undefined means default\r\n * @returns {undefined}\r\n */\r\nfunction setBackgroundImage ({backgroundImage, target} = {}) {\r\n    const div = document.getElementById(target || defaults.target);\r\n\r\n    if (div) {\r\n        const urlString = `url(${\r\n            // keep \"\" as explicit none\r\n            typeof backgroundImage === \"string\" ? backgroundImage : defaults.backgroundImage\r\n        })`;\r\n\r\n        div.style.backgroundImage = urlString;\r\n    }\r\n}\r\n\r\nexport default setBackgroundImage;\r\n","/**\r\n * Helper function to detect layer availability/usability. Depending on layer\r\n * type, the method to infer availability broadly varies.\r\n * @param {Object} layerSpecification services.json layer specification\r\n * @returns {Promise} resolves to status code of a layer-specific default\r\n * request as Number, or null if no request could be made, which should\r\n * indicate misconfiguration; defaults to 900 if the request itself failed for\r\n * arbitrary reasons (usually CORS-related)\r\n */\r\nexport default function ({url, typ, capabilitiesUrl, ...rest}) {\r\n    const statusCheckUrls = [];\r\n\r\n    if (capabilitiesUrl) {\r\n        statusCheckUrls.push(capabilitiesUrl);\r\n    }\r\n    else if (typ === \"OAF\") {\r\n        statusCheckUrls.push(url);\r\n    }\r\n    else if (typ === \"Entities3D\") {\r\n        rest.entities\r\n            .forEach(entity => entity.url ? statusCheckUrls.push(entity.url) : null);\r\n    }\r\n    else if (typ === \"TileSet3D\" || typ === \"Terrain3D\") {\r\n        statusCheckUrls.push(url);\r\n    }\r\n    else if (typ === \"GeoJSON\") {\r\n        if (!url && rest.features) {\r\n            // may be a local layer without source url – that's equal to 200\r\n            return Promise.resolve(200);\r\n        }\r\n        if (url) {\r\n            statusCheckUrls.push(url);\r\n        }\r\n    }\r\n    else if (typ === \"VectorTile\") {\r\n        statusCheckUrls.push(url.replaceAll(/\\{[xyz]\\}/ig, \"0\"));\r\n    }\r\n    else if (typ === \"WMTS\") {\r\n        const arbitraryTileRequests = (url ? [url] : rest.urls)\r\n            .map(entry => entry\r\n                .replace(/\\{Style\\}/ig, rest.style)\r\n                .replace(/\\{TileMatrixSet\\}/ig, rest.tileMatrixSet)\r\n                .replaceAll(/\\{(TileMatrix|TileRow|TileCol)\\}/ig, \"0\"));\r\n\r\n        statusCheckUrls.push(...arbitraryTileRequests);\r\n    }\r\n    else if (url) {\r\n        statusCheckUrls.push(`${url}?service=${typ}&request=GetCapabilities`);\r\n    }\r\n\r\n    if (!statusCheckUrls.length) {\r\n        return Promise.resolve(null);\r\n    }\r\n\r\n    return Promise\r\n        .allSettled(statusCheckUrls\r\n            .map(statusCheckUrl => new Promise((resolve) => fetch(statusCheckUrl, {method: \"HEAD\"})\r\n                .then(({status}) => resolve(status))\r\n                // usually from CORS, treated as 900 here (\"proprietary\" status code)\r\n                .catch(() => resolve(900)))))\r\n        // return highest status code (will indicate erroneous behaviour)\r\n        .then(codes => Math.max(...codes.map(({value}) => value)));\r\n}\r\n","/**\r\n * This is an implementation of the interface to OGC API - Processes - Part 1: Core.\r\n * @module api/ogcApiProcesses\r\n * @see {@link https://ogcapi.ogc.org/processes|OGC API - Processes} for further information\r\n */\r\n\r\n/**\r\n * Returns the url params for a DELETE request.\r\n * @returns {object} The url params for DELETE request.\r\n */\r\nfunction fetchDeleteParams () {\r\n    return {\r\n        method: \"DELETE\"\r\n    };\r\n}\r\n\r\n/**\r\n * Returns the url params for a GET request.\r\n * @returns {object} The url params for GET request.\r\n */\r\nfunction fetchGetParams () {\r\n    return {\r\n        method: \"GET\"\r\n    };\r\n}\r\n\r\n/**\r\n * Returns the url params for a POST request.\r\n * @param {object} body The request body.\r\n * @returns {object} The url params for poPOSTst request.\r\n */\r\nfunction fetchPostParams (body) {\r\n    return {\r\n        method: \"POST\",\r\n        headers: {\r\n            \"Content-Type\": \"application/json\"\r\n        },\r\n        body: JSON.stringify(body)\r\n    };\r\n}\r\n\r\n/**\r\n * Returns the fetch params by request method.\r\n * @param {string} method The fetch method.\r\n * @param {object} body The request body.\r\n * @returns {object} The fetch params.\r\n */\r\nfunction fetchParams (method, body) {\r\n    const fetchParamsByMethod = {\r\n        DELETE: fetchDeleteParams,\r\n        GET: fetchGetParams,\r\n        POST: fetchPostParams\r\n    };\r\n\r\n    return fetchParamsByMethod[method](body);\r\n}\r\n/**\r\n * Fetch the url with fetch api and catch errors.\r\n * @param {string} processUrl The process url.\r\n * @param {string} [method=GET] The fetch method.\r\n * @param {object} [body={}] The request body, only used if request-method is POST.\r\n * @returns {object} The response object.\r\n */\r\nfunction fetchUrl (processUrl, method = \"GET\", body = {}) {\r\n    return new Promise((resolve, reject) => {\r\n        fetch(processUrl, fetchParams(method, body))\r\n            .then(response => {\r\n                const errorMessage = `Status code: ${response.status}.`;\r\n\r\n                if (response.ok) {\r\n                    return response.json();\r\n                }\r\n                else if (response.status === \"400\") {\r\n                    throw new Error(`${errorMessage} The URL: ${response.url} is an bad request! Perhaps the status of the process or job is failure!`);\r\n                }\r\n                else if (response.status === \"404\") {\r\n                    throw new Error(`${errorMessage} The URL: ${response.url} was not found!`);\r\n                }\r\n\r\n                throw new Error(`${errorMessage} The response of the URL: ${response.url} has an error occured!`);\r\n            })\r\n            .then(responseJson => resolve(responseJson))\r\n            .catch(error => {\r\n                reject(error);\r\n            });\r\n    });\r\n}\r\n\r\n/**\r\n * Retrieve the list of available processes.\r\n * @param {string} processUrl The process url.\r\n * @param {boolean} [nextLink=false] If processurl is a nextLink.\r\n * @returns {object[]} The process list.\r\n */\r\nasync function processList (processUrl, nextLink = false) {\r\n    const url = nextLink ? processUrl : `${processUrl}/processes`,\r\n        responseJson = await fetchUrl(url),\r\n        nextLinkObject = responseJson?.links?.find(link => link.rel === \"next\");\r\n    let processes = responseJson.processes;\r\n\r\n    if (typeof nextLinkObject !== \"undefined\") {\r\n        processes = processes.concat(await processList(nextLinkObject.href, true));\r\n    }\r\n\r\n    return processes;\r\n}\r\n\r\n/**\r\n * Retrieve the description of a process.\r\n * @param {string} processUrl The process url.\r\n * @param {string} processId The process id.\r\n * @returns {object} The process description.\r\n */\r\nasync function processDescription (processUrl, processId) {\r\n    const url = `${processUrl}/processes/${processId}`,\r\n        responseJson = await fetchUrl(url);\r\n\r\n    return responseJson;\r\n}\r\n\r\n/**\r\n * Execute a process.\r\n * @param {string} processUrl The process url.\r\n * @param {string} processId The process id.\r\n * @param {object} data The data.\r\n * @returns {object} The response data.\r\n */\r\nasync function executeProcess (processUrl, processId, data) {\r\n    const url = `${processUrl}/processes/${processId}/execution`,\r\n        body = {\r\n            inputs: data\r\n        },\r\n        responseJson = await fetchUrl(url, \"POST\", body);\r\n\r\n    return responseJson;\r\n}\r\n\r\n/**\r\n * Retrieve the list of jobs.\r\n * @param {string} processUrl The process url.\r\n * @param {boolean} [nextLink=false] If processurl is a nextLink.\r\n * @returns {object[]} The job list.\r\n */\r\nasync function jobList (processUrl, nextLink = false) {\r\n    const url = nextLink ? processUrl : `${processUrl}/jobs`,\r\n        responseJson = await fetchUrl(url),\r\n        nextLinkObject = responseJson?.links?.find(link => link.rel === \"next\");\r\n    let jobs = responseJson.jobs;\r\n\r\n    if (typeof nextLinkObject !== \"undefined\") {\r\n        jobs = jobs.concat(await jobList(nextLinkObject.href, true));\r\n    }\r\n\r\n    return jobs;\r\n}\r\n\r\n/**\r\n * Retrieve the status of a job.\r\n * @param {string} processUrl The process url.\r\n * @param {string} jobId The job id.\r\n * @returns {object} The job status.\r\n */\r\nasync function jobStatus (processUrl, jobId) {\r\n    const url = `${processUrl}/jobs/${jobId}`,\r\n        responseJson = await fetchUrl(url);\r\n\r\n    return responseJson;\r\n}\r\n\r\n/**\r\n * Cancel a job execution, remove a finished job.\r\n * @param {string} processUrl The process url.\r\n * @param {string} jobId The job id.\r\n * @returns {object} The canceled job status.\r\n */\r\nasync function cancelJob (processUrl, jobId) {\r\n    const url = `${processUrl}/jobs/${jobId}`,\r\n        responseJson = await fetchUrl(url, \"DELETE\");\r\n\r\n    return responseJson;\r\n}\r\n\r\n/**\r\n * Retrieve the result(s) of a job.\r\n * @param {string} processUrl The process url.\r\n * @param {string} jobId The job id.\r\n * @param {string} [format=json] The result format can be `html` or `json`.\r\n * @returns {object} The job dismissed status.\r\n */\r\nasync function jobResults (processUrl, jobId, format = \"json\") {\r\n    const url = `${processUrl}/jobs/${jobId}/results?f=${format}`,\r\n        responseJson = await fetchUrl(url);\r\n\r\n    return responseJson;\r\n}\r\n\r\nexport default {\r\n    processList,\r\n    processDescription,\r\n    executeProcess,\r\n    jobList,\r\n    cancelJob,\r\n    jobStatus,\r\n    jobResults\r\n};\r\n","let initialCreateMap = null\n\nexport default function addPlugins(this, plugins) {\n  const originalCreateMap = this.createMap\n  if (!initialCreateMap) {\n    initialCreateMap = originalCreateMap\n  }\n  this.createMap = async (params) => {\n    try {\n      const instance = await originalCreateMap(params)\n      plugins.forEach((initializePlugin) => initializePlugin(instance))\n      return instance\n    } catch (error) {\n      console.error('@polar/core: Map creation failed.', error)\n    }\n  }\n}\n\nexport function resetPlugins(this) {\n  if (initialCreateMap) {\n    this.createMap = initialCreateMap\n    initialCreateMap = null\n  }\n}\n","/*!\n * Vue.js v2.7.16\n * (c) 2014-2023 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\nvar isArray = Array.isArray;\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef(v) {\n    return v === undefined || v === null;\n}\nfunction isDef(v) {\n    return v !== undefined && v !== null;\n}\nfunction isTrue(v) {\n    return v === true;\n}\nfunction isFalse(v) {\n    return v === false;\n}\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive(value) {\n    return (typeof value === 'string' ||\n        typeof value === 'number' ||\n        // $flow-disable-line\n        typeof value === 'symbol' ||\n        typeof value === 'boolean');\n}\nfunction isFunction(value) {\n    return typeof value === 'function';\n}\n/**\n * Quick object check - this is primarily used to tell\n * objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject(obj) {\n    return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\nfunction toRawType(value) {\n    return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject(obj) {\n    return _toString.call(obj) === '[object Object]';\n}\nfunction isRegExp(v) {\n    return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex(val) {\n    var n = parseFloat(String(val));\n    return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n    return (isDef(val) &&\n        typeof val.then === 'function' &&\n        typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n    return val == null\n        ? ''\n        : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n            ? JSON.stringify(val, replacer, 2)\n            : String(val);\n}\nfunction replacer(_key, val) {\n    // avoid circular deps from v3\n    if (val && val.__v_isRef) {\n        return val.value;\n    }\n    return val;\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n    var n = parseFloat(val);\n    return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n    var map = Object.create(null);\n    var list = str.split(',');\n    for (var i = 0; i < list.length; i++) {\n        map[list[i]] = true;\n    }\n    return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n    var len = arr.length;\n    if (len) {\n        // fast path for the only / last item\n        if (item === arr[len - 1]) {\n            arr.length = len - 1;\n            return;\n        }\n        var index = arr.indexOf(item);\n        if (index > -1) {\n            return arr.splice(index, 1);\n        }\n    }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n    return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n    var cache = Object.create(null);\n    return function cachedFn(str) {\n        var hit = cache[str];\n        return hit || (cache[str] = fn(str));\n    };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n    return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n    return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n    function boundFn(a) {\n        var l = arguments.length;\n        return l\n            ? l > 1\n                ? fn.apply(ctx, arguments)\n                : fn.call(ctx, a)\n            : fn.call(ctx);\n    }\n    boundFn._length = fn.length;\n    return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n    return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n    start = start || 0;\n    var i = list.length - start;\n    var ret = new Array(i);\n    while (i--) {\n        ret[i] = list[i + start];\n    }\n    return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n    for (var key in _from) {\n        to[key] = _from[key];\n    }\n    return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n    var res = {};\n    for (var i = 0; i < arr.length; i++) {\n        if (arr[i]) {\n            extend(res, arr[i]);\n        }\n    }\n    return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n    if (a === b)\n        return true;\n    var isObjectA = isObject(a);\n    var isObjectB = isObject(b);\n    if (isObjectA && isObjectB) {\n        try {\n            var isArrayA = Array.isArray(a);\n            var isArrayB = Array.isArray(b);\n            if (isArrayA && isArrayB) {\n                return (a.length === b.length &&\n                    a.every(function (e, i) {\n                        return looseEqual(e, b[i]);\n                    }));\n            }\n            else if (a instanceof Date && b instanceof Date) {\n                return a.getTime() === b.getTime();\n            }\n            else if (!isArrayA && !isArrayB) {\n                var keysA = Object.keys(a);\n                var keysB = Object.keys(b);\n                return (keysA.length === keysB.length &&\n                    keysA.every(function (key) {\n                        return looseEqual(a[key], b[key]);\n                    }));\n            }\n            else {\n                /* istanbul ignore next */\n                return false;\n            }\n        }\n        catch (e) {\n            /* istanbul ignore next */\n            return false;\n        }\n    }\n    else if (!isObjectA && !isObjectB) {\n        return String(a) === String(b);\n    }\n    else {\n        return false;\n    }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n    for (var i = 0; i < arr.length; i++) {\n        if (looseEqual(arr[i], val))\n            return i;\n    }\n    return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n    var called = false;\n    return function () {\n        if (!called) {\n            called = true;\n            fn.apply(this, arguments);\n        }\n    };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n    if (x === y) {\n        return x === 0 && 1 / x !== 1 / y;\n    }\n    else {\n        return x === x || y === y;\n    }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n    'beforeCreate',\n    'created',\n    'beforeMount',\n    'mounted',\n    'beforeUpdate',\n    'updated',\n    'beforeDestroy',\n    'destroyed',\n    'activated',\n    'deactivated',\n    'errorCaptured',\n    'serverPrefetch',\n    'renderTracked',\n    'renderTriggered'\n];\n\nvar config = {\n    /**\n     * Option merge strategies (used in core/util/options)\n     */\n    // $flow-disable-line\n    optionMergeStrategies: Object.create(null),\n    /**\n     * Whether to suppress warnings.\n     */\n    silent: false,\n    /**\n     * Show production mode tip message on boot?\n     */\n    productionTip: process.env.NODE_ENV !== 'production',\n    /**\n     * Whether to enable devtools\n     */\n    devtools: process.env.NODE_ENV !== 'production',\n    /**\n     * Whether to record perf\n     */\n    performance: false,\n    /**\n     * Error handler for watcher errors\n     */\n    errorHandler: null,\n    /**\n     * Warn handler for watcher warns\n     */\n    warnHandler: null,\n    /**\n     * Ignore certain custom elements\n     */\n    ignoredElements: [],\n    /**\n     * Custom user key aliases for v-on\n     */\n    // $flow-disable-line\n    keyCodes: Object.create(null),\n    /**\n     * Check if a tag is reserved so that it cannot be registered as a\n     * component. This is platform-dependent and may be overwritten.\n     */\n    isReservedTag: no,\n    /**\n     * Check if an attribute is reserved so that it cannot be used as a component\n     * prop. This is platform-dependent and may be overwritten.\n     */\n    isReservedAttr: no,\n    /**\n     * Check if a tag is an unknown element.\n     * Platform-dependent.\n     */\n    isUnknownElement: no,\n    /**\n     * Get the namespace of an element\n     */\n    getTagNamespace: noop,\n    /**\n     * Parse the real tag name for the specific platform.\n     */\n    parsePlatformTagName: identity,\n    /**\n     * Check if an attribute must be bound using property, e.g. value\n     * Platform-dependent.\n     */\n    mustUseProp: no,\n    /**\n     * Perform updates asynchronously. Intended to be used by Vue Test Utils\n     * This will significantly reduce performance if set to false.\n     */\n    async: true,\n    /**\n     * Exposed for legacy reasons\n     */\n    _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n    var c = (str + '').charCodeAt(0);\n    return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n    Object.defineProperty(obj, key, {\n        value: val,\n        enumerable: !!enumerable,\n        writable: true,\n        configurable: true\n    });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n    if (bailRE.test(path)) {\n        return;\n    }\n    var segments = path.split('.');\n    return function (obj) {\n        for (var i = 0; i < segments.length; i++) {\n            if (!obj)\n                return;\n            obj = obj[segments[i]];\n        }\n        return obj;\n    };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n    try {\n        var opts = {};\n        Object.defineProperty(opts, 'passive', {\n            get: function () {\n                /* istanbul ignore next */\n                supportsPassive = true;\n            }\n        }); // https://github.com/facebook/flow/issues/285\n        window.addEventListener('test-passive', null, opts);\n    }\n    catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n    if (_isServer === undefined) {\n        /* istanbul ignore if */\n        if (!inBrowser && typeof global !== 'undefined') {\n            // detect presence of vue-server-renderer and avoid\n            // Webpack shimming the process\n            _isServer =\n                global['process'] && global['process'].env.VUE_ENV === 'server';\n        }\n        else {\n            _isServer = false;\n        }\n    }\n    return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n    return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n    isNative(Symbol) &&\n    typeof Reflect !== 'undefined' &&\n    isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n    // use native Set when available.\n    _Set = Set;\n}\nelse {\n    // a non-standard Set polyfill that only works with primitive keys.\n    _Set = /** @class */ (function () {\n        function Set() {\n            this.set = Object.create(null);\n        }\n        Set.prototype.has = function (key) {\n            return this.set[key] === true;\n        };\n        Set.prototype.add = function (key) {\n            this.set[key] = true;\n        };\n        Set.prototype.clear = function () {\n            this.set = Object.create(null);\n        };\n        return Set;\n    }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n    return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n    if (vm === void 0) { vm = null; }\n    if (!vm)\n        currentInstance && currentInstance._scope.off();\n    currentInstance = vm;\n    vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n    function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n        this.tag = tag;\n        this.data = data;\n        this.children = children;\n        this.text = text;\n        this.elm = elm;\n        this.ns = undefined;\n        this.context = context;\n        this.fnContext = undefined;\n        this.fnOptions = undefined;\n        this.fnScopeId = undefined;\n        this.key = data && data.key;\n        this.componentOptions = componentOptions;\n        this.componentInstance = undefined;\n        this.parent = undefined;\n        this.raw = false;\n        this.isStatic = false;\n        this.isRootInsert = true;\n        this.isComment = false;\n        this.isCloned = false;\n        this.isOnce = false;\n        this.asyncFactory = asyncFactory;\n        this.asyncMeta = undefined;\n        this.isAsyncPlaceholder = false;\n    }\n    Object.defineProperty(VNode.prototype, \"child\", {\n        // DEPRECATED: alias for componentInstance for backwards compat.\n        /* istanbul ignore next */\n        get: function () {\n            return this.componentInstance;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return VNode;\n}());\nvar createEmptyVNode = function (text) {\n    if (text === void 0) { text = ''; }\n    var node = new VNode();\n    node.text = text;\n    node.isComment = true;\n    return node;\n};\nfunction createTextVNode(val) {\n    return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n    var cloned = new VNode(vnode.tag, vnode.data, \n    // #7975\n    // clone children array to avoid mutating original in case of cloning\n    // a child.\n    vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n    cloned.ns = vnode.ns;\n    cloned.isStatic = vnode.isStatic;\n    cloned.key = vnode.key;\n    cloned.isComment = vnode.isComment;\n    cloned.fnContext = vnode.fnContext;\n    cloned.fnOptions = vnode.fnOptions;\n    cloned.fnScopeId = vnode.fnScopeId;\n    cloned.asyncMeta = vnode.asyncMeta;\n    cloned.isCloned = true;\n    return cloned;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n    for (var i = 0; i < pendingCleanupDeps.length; i++) {\n        var dep = pendingCleanupDeps[i];\n        dep.subs = dep.subs.filter(function (s) { return s; });\n        dep._pending = false;\n    }\n    pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n    function Dep() {\n        // pending subs cleanup\n        this._pending = false;\n        this.id = uid$2++;\n        this.subs = [];\n    }\n    Dep.prototype.addSub = function (sub) {\n        this.subs.push(sub);\n    };\n    Dep.prototype.removeSub = function (sub) {\n        // #12696 deps with massive amount of subscribers are extremely slow to\n        // clean up in Chromium\n        // to workaround this, we unset the sub for now, and clear them on\n        // next scheduler flush.\n        this.subs[this.subs.indexOf(sub)] = null;\n        if (!this._pending) {\n            this._pending = true;\n            pendingCleanupDeps.push(this);\n        }\n    };\n    Dep.prototype.depend = function (info) {\n        if (Dep.target) {\n            Dep.target.addDep(this);\n            if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n                Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n            }\n        }\n    };\n    Dep.prototype.notify = function (info) {\n        // stabilize the subscriber list first\n        var subs = this.subs.filter(function (s) { return s; });\n        if (process.env.NODE_ENV !== 'production' && !config.async) {\n            // subs aren't sorted in scheduler if not running async\n            // we need to sort them now to make sure they fire in correct\n            // order\n            subs.sort(function (a, b) { return a.id - b.id; });\n        }\n        for (var i = 0, l = subs.length; i < l; i++) {\n            var sub = subs[i];\n            if (process.env.NODE_ENV !== 'production' && info) {\n                sub.onTrigger &&\n                    sub.onTrigger(__assign({ effect: subs[i] }, info));\n            }\n            sub.update();\n        }\n    };\n    return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n    targetStack.push(target);\n    Dep.target = target;\n}\nfunction popTarget() {\n    targetStack.pop();\n    Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n    'push',\n    'pop',\n    'shift',\n    'unshift',\n    'splice',\n    'sort',\n    'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n    // cache original method\n    var original = arrayProto[method];\n    def(arrayMethods, method, function mutator() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var result = original.apply(this, args);\n        var ob = this.__ob__;\n        var inserted;\n        switch (method) {\n            case 'push':\n            case 'unshift':\n                inserted = args;\n                break;\n            case 'splice':\n                inserted = args.slice(2);\n                break;\n        }\n        if (inserted)\n            ob.observeArray(inserted);\n        // notify change\n        if (process.env.NODE_ENV !== 'production') {\n            ob.dep.notify({\n                type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n                target: this,\n                key: method\n            });\n        }\n        else {\n            ob.dep.notify();\n        }\n        return result;\n    });\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n    shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n    notify: noop,\n    depend: noop,\n    addSub: noop,\n    removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n    function Observer(value, shallow, mock) {\n        if (shallow === void 0) { shallow = false; }\n        if (mock === void 0) { mock = false; }\n        this.value = value;\n        this.shallow = shallow;\n        this.mock = mock;\n        // this.value = value\n        this.dep = mock ? mockDep : new Dep();\n        this.vmCount = 0;\n        def(value, '__ob__', this);\n        if (isArray(value)) {\n            if (!mock) {\n                if (hasProto) {\n                    value.__proto__ = arrayMethods;\n                    /* eslint-enable no-proto */\n                }\n                else {\n                    for (var i = 0, l = arrayKeys.length; i < l; i++) {\n                        var key = arrayKeys[i];\n                        def(value, key, arrayMethods[key]);\n                    }\n                }\n            }\n            if (!shallow) {\n                this.observeArray(value);\n            }\n        }\n        else {\n            /**\n             * Walk through all properties and convert them into\n             * getter/setters. This method should only be called when\n             * value type is Object.\n             */\n            var keys = Object.keys(value);\n            for (var i = 0; i < keys.length; i++) {\n                var key = keys[i];\n                defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);\n            }\n        }\n    }\n    /**\n     * Observe a list of Array items.\n     */\n    Observer.prototype.observeArray = function (value) {\n        for (var i = 0, l = value.length; i < l; i++) {\n            observe(value[i], false, this.mock);\n        }\n    };\n    return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n    if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n        return value.__ob__;\n    }\n    if (shouldObserve &&\n        (ssrMockReactivity || !isServerRendering()) &&\n        (isArray(value) || isPlainObject(value)) &&\n        Object.isExtensible(value) &&\n        !value.__v_skip /* ReactiveFlags.SKIP */ &&\n        !isRef(value) &&\n        !(value instanceof VNode)) {\n        return new Observer(value, shallow, ssrMockReactivity);\n    }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {\n    if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }\n    var dep = new Dep();\n    var property = Object.getOwnPropertyDescriptor(obj, key);\n    if (property && property.configurable === false) {\n        return;\n    }\n    // cater for pre-defined getter/setters\n    var getter = property && property.get;\n    var setter = property && property.set;\n    if ((!getter || setter) &&\n        (val === NO_INITIAL_VALUE || arguments.length === 2)) {\n        val = obj[key];\n    }\n    var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);\n    Object.defineProperty(obj, key, {\n        enumerable: true,\n        configurable: true,\n        get: function reactiveGetter() {\n            var value = getter ? getter.call(obj) : val;\n            if (Dep.target) {\n                if (process.env.NODE_ENV !== 'production') {\n                    dep.depend({\n                        target: obj,\n                        type: \"get\" /* TrackOpTypes.GET */,\n                        key: key\n                    });\n                }\n                else {\n                    dep.depend();\n                }\n                if (childOb) {\n                    childOb.dep.depend();\n                    if (isArray(value)) {\n                        dependArray(value);\n                    }\n                }\n            }\n            return isRef(value) && !shallow ? value.value : value;\n        },\n        set: function reactiveSetter(newVal) {\n            var value = getter ? getter.call(obj) : val;\n            if (!hasChanged(value, newVal)) {\n                return;\n            }\n            if (process.env.NODE_ENV !== 'production' && customSetter) {\n                customSetter();\n            }\n            if (setter) {\n                setter.call(obj, newVal);\n            }\n            else if (getter) {\n                // #7981: for accessor properties without setter\n                return;\n            }\n            else if (!shallow && isRef(value) && !isRef(newVal)) {\n                value.value = newVal;\n                return;\n            }\n            else {\n                val = newVal;\n            }\n            childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);\n            if (process.env.NODE_ENV !== 'production') {\n                dep.notify({\n                    type: \"set\" /* TriggerOpTypes.SET */,\n                    target: obj,\n                    key: key,\n                    newValue: newVal,\n                    oldValue: value\n                });\n            }\n            else {\n                dep.notify();\n            }\n        }\n    });\n    return dep;\n}\nfunction set(target, key, val) {\n    if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n        warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n    }\n    if (isReadonly(target)) {\n        process.env.NODE_ENV !== 'production' && warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n        return;\n    }\n    var ob = target.__ob__;\n    if (isArray(target) && isValidArrayIndex(key)) {\n        target.length = Math.max(target.length, key);\n        target.splice(key, 1, val);\n        // when mocking for SSR, array methods are not hijacked\n        if (ob && !ob.shallow && ob.mock) {\n            observe(val, false, true);\n        }\n        return val;\n    }\n    if (key in target && !(key in Object.prototype)) {\n        target[key] = val;\n        return val;\n    }\n    if (target._isVue || (ob && ob.vmCount)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\n                'at runtime - declare it upfront in the data option.');\n        return val;\n    }\n    if (!ob) {\n        target[key] = val;\n        return val;\n    }\n    defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n    if (process.env.NODE_ENV !== 'production') {\n        ob.dep.notify({\n            type: \"add\" /* TriggerOpTypes.ADD */,\n            target: target,\n            key: key,\n            newValue: val,\n            oldValue: undefined\n        });\n    }\n    else {\n        ob.dep.notify();\n    }\n    return val;\n}\nfunction del(target, key) {\n    if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n        warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n    }\n    if (isArray(target) && isValidArrayIndex(key)) {\n        target.splice(key, 1);\n        return;\n    }\n    var ob = target.__ob__;\n    if (target._isVue || (ob && ob.vmCount)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn('Avoid deleting properties on a Vue instance or its root $data ' +\n                '- just set it to null.');\n        return;\n    }\n    if (isReadonly(target)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n        return;\n    }\n    if (!hasOwn(target, key)) {\n        return;\n    }\n    delete target[key];\n    if (!ob) {\n        return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        ob.dep.notify({\n            type: \"delete\" /* TriggerOpTypes.DELETE */,\n            target: target,\n            key: key\n        });\n    }\n    else {\n        ob.dep.notify();\n    }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n    for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n        e = value[i];\n        if (e && e.__ob__) {\n            e.__ob__.dep.depend();\n        }\n        if (isArray(e)) {\n            dependArray(e);\n        }\n    }\n}\n\nfunction reactive(target) {\n    makeReactive(target, false);\n    return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n    makeReactive(target, true);\n    def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n    return target;\n}\nfunction makeReactive(target, shallow) {\n    // if trying to observe a readonly proxy, return the readonly version.\n    if (!isReadonly(target)) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (isArray(target)) {\n                warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n            }\n            var existingOb = target && target.__ob__;\n            if (existingOb && existingOb.shallow !== shallow) {\n                warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n            }\n        }\n        var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n        if (process.env.NODE_ENV !== 'production' && !ob) {\n            if (target == null || isPrimitive(target)) {\n                warn(\"value cannot be made reactive: \".concat(String(target)));\n            }\n            if (isCollectionType(target)) {\n                warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n            }\n        }\n    }\n}\nfunction isReactive(value) {\n    if (isReadonly(value)) {\n        return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n    }\n    return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n    return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n    return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n    return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n    var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n    return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n    // non-extensible objects won't be observed anyway\n    if (Object.isExtensible(value)) {\n        def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n    }\n    return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n    var type = toRawType(value);\n    return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n    return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n    return createRef(value, false);\n}\nfunction shallowRef(value) {\n    return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n    if (isRef(rawValue)) {\n        return rawValue;\n    }\n    var ref = {};\n    def(ref, RefFlag, true);\n    def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n    def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n    return ref;\n}\nfunction triggerRef(ref) {\n    if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n        warn(\"received object is not a triggerable ref.\");\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        ref.dep &&\n            ref.dep.notify({\n                type: \"set\" /* TriggerOpTypes.SET */,\n                target: ref,\n                key: 'value'\n            });\n    }\n    else {\n        ref.dep && ref.dep.notify();\n    }\n}\nfunction unref(ref) {\n    return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n    if (isReactive(objectWithRefs)) {\n        return objectWithRefs;\n    }\n    var proxy = {};\n    var keys = Object.keys(objectWithRefs);\n    for (var i = 0; i < keys.length; i++) {\n        proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n    }\n    return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n    Object.defineProperty(target, key, {\n        enumerable: true,\n        configurable: true,\n        get: function () {\n            var val = source[key];\n            if (isRef(val)) {\n                return val.value;\n            }\n            else {\n                var ob = val && val.__ob__;\n                if (ob)\n                    ob.dep.depend();\n                return val;\n            }\n        },\n        set: function (value) {\n            var oldValue = source[key];\n            if (isRef(oldValue) && !isRef(value)) {\n                oldValue.value = value;\n            }\n            else {\n                source[key] = value;\n            }\n        }\n    });\n}\nfunction customRef(factory) {\n    var dep = new Dep();\n    var _a = factory(function () {\n        if (process.env.NODE_ENV !== 'production') {\n            dep.depend({\n                target: ref,\n                type: \"get\" /* TrackOpTypes.GET */,\n                key: 'value'\n            });\n        }\n        else {\n            dep.depend();\n        }\n    }, function () {\n        if (process.env.NODE_ENV !== 'production') {\n            dep.notify({\n                target: ref,\n                type: \"set\" /* TriggerOpTypes.SET */,\n                key: 'value'\n            });\n        }\n        else {\n            dep.notify();\n        }\n    }), get = _a.get, set = _a.set;\n    var ref = {\n        get value() {\n            return get();\n        },\n        set value(newVal) {\n            set(newVal);\n        }\n    };\n    def(ref, RefFlag, true);\n    return ref;\n}\nfunction toRefs(object) {\n    if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n        warn(\"toRefs() expects a reactive object but received a plain one.\");\n    }\n    var ret = isArray(object) ? new Array(object.length) : {};\n    for (var key in object) {\n        ret[key] = toRef(object, key);\n    }\n    return ret;\n}\nfunction toRef(object, key, defaultValue) {\n    var val = object[key];\n    if (isRef(val)) {\n        return val;\n    }\n    var ref = {\n        get value() {\n            var val = object[key];\n            return val === undefined ? defaultValue : val;\n        },\n        set value(newVal) {\n            object[key] = newVal;\n        }\n    };\n    def(ref, RefFlag, true);\n    return ref;\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\nfunction readonly(target) {\n    return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n    if (!isPlainObject(target)) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (isArray(target)) {\n                warn(\"Vue 2 does not support readonly arrays.\");\n            }\n            else if (isCollectionType(target)) {\n                warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n            }\n            else {\n                warn(\"value cannot be made readonly: \".concat(typeof target));\n            }\n        }\n        return target;\n    }\n    if (process.env.NODE_ENV !== 'production' && !Object.isExtensible(target)) {\n        warn(\"Vue 2 does not support creating readonly proxy for non-extensible object.\");\n    }\n    // already a readonly object\n    if (isReadonly(target)) {\n        return target;\n    }\n    // already has a readonly proxy\n    var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\n    var existingProxy = target[existingFlag];\n    if (existingProxy) {\n        return existingProxy;\n    }\n    var proxy = Object.create(Object.getPrototypeOf(target));\n    def(target, existingFlag, proxy);\n    def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n    def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n    if (isRef(target)) {\n        def(proxy, RefFlag, true);\n    }\n    if (shallow || isShallow(target)) {\n        def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n    }\n    var keys = Object.keys(target);\n    for (var i = 0; i < keys.length; i++) {\n        defineReadonlyProperty(proxy, target, keys[i], shallow);\n    }\n    return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n    Object.defineProperty(proxy, key, {\n        enumerable: true,\n        configurable: true,\n        get: function () {\n            var val = target[key];\n            return shallow || !isPlainObject(val) ? val : readonly(val);\n        },\n        set: function () {\n            process.env.NODE_ENV !== 'production' &&\n                warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n        }\n    });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n    return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n    var getter;\n    var setter;\n    var onlyGetter = isFunction(getterOrOptions);\n    if (onlyGetter) {\n        getter = getterOrOptions;\n        setter = process.env.NODE_ENV !== 'production'\n            ? function () {\n                warn('Write operation failed: computed value is readonly');\n            }\n            : noop;\n    }\n    else {\n        getter = getterOrOptions.get;\n        setter = getterOrOptions.set;\n    }\n    var watcher = isServerRendering()\n        ? null\n        : new Watcher(currentInstance, getter, noop, { lazy: true });\n    if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n        watcher.onTrack = debugOptions.onTrack;\n        watcher.onTrigger = debugOptions.onTrigger;\n    }\n    var ref = {\n        // some libs rely on the presence effect for checking computed refs\n        // from normal refs, but the implementation doesn't matter\n        effect: watcher,\n        get value() {\n            if (watcher) {\n                if (watcher.dirty) {\n                    watcher.evaluate();\n                }\n                if (Dep.target) {\n                    if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n                        Dep.target.onTrack({\n                            effect: Dep.target,\n                            target: ref,\n                            type: \"get\" /* TrackOpTypes.GET */,\n                            key: 'value'\n                        });\n                    }\n                    watcher.depend();\n                }\n                return watcher.value;\n            }\n            else {\n                return getter();\n            }\n        },\n        set value(newVal) {\n            setter(newVal);\n        }\n    };\n    def(ref, RefFlag, true);\n    def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n    return ref;\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n    return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n    return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n        ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n    return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n        ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n    if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n        warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n            \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n            \"supports `watch(source, cb, options?) signature.\");\n    }\n    return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n    var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n    if (process.env.NODE_ENV !== 'production' && !cb) {\n        if (immediate !== undefined) {\n            warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n                \"watch(source, callback, options?) signature.\");\n        }\n        if (deep !== undefined) {\n            warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\n                \"watch(source, callback, options?) signature.\");\n        }\n    }\n    var warnInvalidSource = function (s) {\n        warn(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n            \"function, a ref, a reactive object, or an array of these types.\");\n    };\n    var instance = currentInstance;\n    var call = function (fn, type, args) {\n        if (args === void 0) { args = null; }\n        var res = invokeWithErrorHandling(fn, null, args, instance, type);\n        if (deep && res && res.__ob__)\n            res.__ob__.dep.depend();\n        return res;\n    };\n    var getter;\n    var forceTrigger = false;\n    var isMultiSource = false;\n    if (isRef(source)) {\n        getter = function () { return source.value; };\n        forceTrigger = isShallow(source);\n    }\n    else if (isReactive(source)) {\n        getter = function () {\n            source.__ob__.dep.depend();\n            return source;\n        };\n        deep = true;\n    }\n    else if (isArray(source)) {\n        isMultiSource = true;\n        forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n        getter = function () {\n            return source.map(function (s) {\n                if (isRef(s)) {\n                    return s.value;\n                }\n                else if (isReactive(s)) {\n                    s.__ob__.dep.depend();\n                    return traverse(s);\n                }\n                else if (isFunction(s)) {\n                    return call(s, WATCHER_GETTER);\n                }\n                else {\n                    process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n                }\n            });\n        };\n    }\n    else if (isFunction(source)) {\n        if (cb) {\n            // getter with cb\n            getter = function () { return call(source, WATCHER_GETTER); };\n        }\n        else {\n            // no cb -> simple effect\n            getter = function () {\n                if (instance && instance._isDestroyed) {\n                    return;\n                }\n                if (cleanup) {\n                    cleanup();\n                }\n                return call(source, WATCHER, [onCleanup]);\n            };\n        }\n    }\n    else {\n        getter = noop;\n        process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n    }\n    if (cb && deep) {\n        var baseGetter_1 = getter;\n        getter = function () { return traverse(baseGetter_1()); };\n    }\n    var cleanup;\n    var onCleanup = function (fn) {\n        cleanup = watcher.onStop = function () {\n            call(fn, WATCHER_CLEANUP);\n        };\n    };\n    // in SSR there is no need to setup an actual effect, and it should be noop\n    // unless it's eager\n    if (isServerRendering()) {\n        // we will also not call the invalidate callback (+ runner is not set up)\n        onCleanup = noop;\n        if (!cb) {\n            getter();\n        }\n        else if (immediate) {\n            call(cb, WATCHER_CB, [\n                getter(),\n                isMultiSource ? [] : undefined,\n                onCleanup\n            ]);\n        }\n        return noop;\n    }\n    var watcher = new Watcher(currentInstance, getter, noop, {\n        lazy: true\n    });\n    watcher.noRecurse = !cb;\n    var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n    // overwrite default run\n    watcher.run = function () {\n        if (!watcher.active) {\n            return;\n        }\n        if (cb) {\n            // watch(source, cb)\n            var newValue = watcher.get();\n            if (deep ||\n                forceTrigger ||\n                (isMultiSource\n                    ? newValue.some(function (v, i) {\n                        return hasChanged(v, oldValue[i]);\n                    })\n                    : hasChanged(newValue, oldValue))) {\n                // cleanup before running cb again\n                if (cleanup) {\n                    cleanup();\n                }\n                call(cb, WATCHER_CB, [\n                    newValue,\n                    // pass undefined as the old value when it's changed for the first time\n                    oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n                    onCleanup\n                ]);\n                oldValue = newValue;\n            }\n        }\n        else {\n            // watchEffect\n            watcher.get();\n        }\n    };\n    if (flush === 'sync') {\n        watcher.update = watcher.run;\n    }\n    else if (flush === 'post') {\n        watcher.post = true;\n        watcher.update = function () { return queueWatcher(watcher); };\n    }\n    else {\n        // pre\n        watcher.update = function () {\n            if (instance && instance === currentInstance && !instance._isMounted) {\n                // pre-watcher triggered before\n                var buffer = instance._preWatchers || (instance._preWatchers = []);\n                if (buffer.indexOf(watcher) < 0)\n                    buffer.push(watcher);\n            }\n            else {\n                queueWatcher(watcher);\n            }\n        };\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        watcher.onTrack = onTrack;\n        watcher.onTrigger = onTrigger;\n    }\n    // initial run\n    if (cb) {\n        if (immediate) {\n            watcher.run();\n        }\n        else {\n            oldValue = watcher.get();\n        }\n    }\n    else if (flush === 'post' && instance) {\n        instance.$once('hook:mounted', function () { return watcher.get(); });\n    }\n    else {\n        watcher.get();\n    }\n    return function () {\n        watcher.teardown();\n    };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n    function EffectScope(detached) {\n        if (detached === void 0) { detached = false; }\n        this.detached = detached;\n        /**\n         * @internal\n         */\n        this.active = true;\n        /**\n         * @internal\n         */\n        this.effects = [];\n        /**\n         * @internal\n         */\n        this.cleanups = [];\n        this.parent = activeEffectScope;\n        if (!detached && activeEffectScope) {\n            this.index =\n                (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n        }\n    }\n    EffectScope.prototype.run = function (fn) {\n        if (this.active) {\n            var currentEffectScope = activeEffectScope;\n            try {\n                activeEffectScope = this;\n                return fn();\n            }\n            finally {\n                activeEffectScope = currentEffectScope;\n            }\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn(\"cannot run an inactive effect scope.\");\n        }\n    };\n    /**\n     * This should only be called on non-detached scopes\n     * @internal\n     */\n    EffectScope.prototype.on = function () {\n        activeEffectScope = this;\n    };\n    /**\n     * This should only be called on non-detached scopes\n     * @internal\n     */\n    EffectScope.prototype.off = function () {\n        activeEffectScope = this.parent;\n    };\n    EffectScope.prototype.stop = function (fromParent) {\n        if (this.active) {\n            var i = void 0, l = void 0;\n            for (i = 0, l = this.effects.length; i < l; i++) {\n                this.effects[i].teardown();\n            }\n            for (i = 0, l = this.cleanups.length; i < l; i++) {\n                this.cleanups[i]();\n            }\n            if (this.scopes) {\n                for (i = 0, l = this.scopes.length; i < l; i++) {\n                    this.scopes[i].stop(true);\n                }\n            }\n            // nested scope, dereference from parent to avoid memory leaks\n            if (!this.detached && this.parent && !fromParent) {\n                // optimized O(1) removal\n                var last = this.parent.scopes.pop();\n                if (last && last !== this) {\n                    this.parent.scopes[this.index] = last;\n                    last.index = this.index;\n                }\n            }\n            this.parent = undefined;\n            this.active = false;\n        }\n    };\n    return EffectScope;\n}());\nfunction effectScope(detached) {\n    return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n    if (scope === void 0) { scope = activeEffectScope; }\n    if (scope && scope.active) {\n        scope.effects.push(effect);\n    }\n}\nfunction getCurrentScope() {\n    return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n    if (activeEffectScope) {\n        activeEffectScope.cleanups.push(fn);\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn(\"onScopeDispose() is called when there is no active effect scope\" +\n            \" to be associated with.\");\n    }\n}\n\nfunction provide(key, value) {\n    if (!currentInstance) {\n        if (process.env.NODE_ENV !== 'production') {\n            warn(\"provide() can only be used inside setup().\");\n        }\n    }\n    else {\n        // TS doesn't allow symbol as index type\n        resolveProvided(currentInstance)[key] = value;\n    }\n}\nfunction resolveProvided(vm) {\n    // by default an instance inherits its parent's provides object\n    // but when it needs to provide values of its own, it creates its\n    // own provides object using parent provides object as prototype.\n    // this way in `inject` we can simply look up injections from direct\n    // parent and let the prototype chain do the work.\n    var existing = vm._provided;\n    var parentProvides = vm.$parent && vm.$parent._provided;\n    if (parentProvides === existing) {\n        return (vm._provided = Object.create(parentProvides));\n    }\n    else {\n        return existing;\n    }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n    if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n    // fallback to `currentRenderingInstance` so that this can be called in\n    // a functional component\n    var instance = currentInstance;\n    if (instance) {\n        // #2400\n        // to support `app.use` plugins,\n        // fallback to appContext's `provides` if the instance is at root\n        var provides = instance.$parent && instance.$parent._provided;\n        if (provides && key in provides) {\n            // TS doesn't allow symbol as index type\n            return provides[key];\n        }\n        else if (arguments.length > 1) {\n            return treatDefaultAsFactory && isFunction(defaultValue)\n                ? defaultValue.call(instance)\n                : defaultValue;\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n        }\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn(\"inject() can only be used inside setup() or functional components.\");\n    }\n}\n\nvar normalizeEvent = cached(function (name) {\n    var passive = name.charAt(0) === '&';\n    name = passive ? name.slice(1) : name;\n    var once = name.charAt(0) === '~'; // Prefixed last, checked first\n    name = once ? name.slice(1) : name;\n    var capture = name.charAt(0) === '!';\n    name = capture ? name.slice(1) : name;\n    return {\n        name: name,\n        once: once,\n        capture: capture,\n        passive: passive\n    };\n});\nfunction createFnInvoker(fns, vm) {\n    function invoker() {\n        var fns = invoker.fns;\n        if (isArray(fns)) {\n            var cloned = fns.slice();\n            for (var i = 0; i < cloned.length; i++) {\n                invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n            }\n        }\n        else {\n            // return handler return value for single handlers\n            return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n        }\n    }\n    invoker.fns = fns;\n    return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n    var name, cur, old, event;\n    for (name in on) {\n        cur = on[name];\n        old = oldOn[name];\n        event = normalizeEvent(name);\n        if (isUndef(cur)) {\n            process.env.NODE_ENV !== 'production' &&\n                warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n        }\n        else if (isUndef(old)) {\n            if (isUndef(cur.fns)) {\n                cur = on[name] = createFnInvoker(cur, vm);\n            }\n            if (isTrue(event.once)) {\n                cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n            }\n            add(event.name, cur, event.capture, event.passive, event.params);\n        }\n        else if (cur !== old) {\n            old.fns = cur;\n            on[name] = old;\n        }\n    }\n    for (name in oldOn) {\n        if (isUndef(on[name])) {\n            event = normalizeEvent(name);\n            remove(event.name, oldOn[name], event.capture);\n        }\n    }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n    if (def instanceof VNode) {\n        def = def.data.hook || (def.data.hook = {});\n    }\n    var invoker;\n    var oldHook = def[hookKey];\n    function wrappedHook() {\n        hook.apply(this, arguments);\n        // important: remove merged hook to ensure it's called only once\n        // and prevent memory leak\n        remove$2(invoker.fns, wrappedHook);\n    }\n    if (isUndef(oldHook)) {\n        // no existing hook\n        invoker = createFnInvoker([wrappedHook]);\n    }\n    else {\n        /* istanbul ignore if */\n        if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n            // already a merged invoker\n            invoker = oldHook;\n            invoker.fns.push(wrappedHook);\n        }\n        else {\n            // existing plain hook\n            invoker = createFnInvoker([oldHook, wrappedHook]);\n        }\n    }\n    invoker.merged = true;\n    def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n    // we are only extracting raw values here.\n    // validation and default values are handled in the child\n    // component itself.\n    var propOptions = Ctor.options.props;\n    if (isUndef(propOptions)) {\n        return;\n    }\n    var res = {};\n    var attrs = data.attrs, props = data.props;\n    if (isDef(attrs) || isDef(props)) {\n        for (var key in propOptions) {\n            var altKey = hyphenate(key);\n            if (process.env.NODE_ENV !== 'production') {\n                var keyInLowerCase = key.toLowerCase();\n                if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n                    tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n                        \"\".concat(formatComponentName(\n                        // @ts-expect-error tag is string\n                        tag || Ctor), \", but the declared prop name is\") +\n                        \" \\\"\".concat(key, \"\\\". \") +\n                        \"Note that HTML attributes are case-insensitive and camelCased \" +\n                        \"props need to use their kebab-case equivalents when using in-DOM \" +\n                        \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n                }\n            }\n            checkProp(res, props, key, altKey, true) ||\n                checkProp(res, attrs, key, altKey, false);\n        }\n    }\n    return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n    if (isDef(hash)) {\n        if (hasOwn(hash, key)) {\n            res[key] = hash[key];\n            if (!preserve) {\n                delete hash[key];\n            }\n            return true;\n        }\n        else if (hasOwn(hash, altKey)) {\n            res[key] = hash[altKey];\n            if (!preserve) {\n                delete hash[altKey];\n            }\n            return true;\n        }\n    }\n    return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n    for (var i = 0; i < children.length; i++) {\n        if (isArray(children[i])) {\n            return Array.prototype.concat.apply([], children);\n        }\n    }\n    return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren(children) {\n    return isPrimitive(children)\n        ? [createTextVNode(children)]\n        : isArray(children)\n            ? normalizeArrayChildren(children)\n            : undefined;\n}\nfunction isTextNode(node) {\n    return isDef(node) && isDef(node.text) && isFalse(node.isComment);\n}\nfunction normalizeArrayChildren(children, nestedIndex) {\n    var res = [];\n    var i, c, lastIndex, last;\n    for (i = 0; i < children.length; i++) {\n        c = children[i];\n        if (isUndef(c) || typeof c === 'boolean')\n            continue;\n        lastIndex = res.length - 1;\n        last = res[lastIndex];\n        //  nested\n        if (isArray(c)) {\n            if (c.length > 0) {\n                c = normalizeArrayChildren(c, \"\".concat(nestedIndex || '', \"_\").concat(i));\n                // merge adjacent text nodes\n                if (isTextNode(c[0]) && isTextNode(last)) {\n                    res[lastIndex] = createTextVNode(last.text + c[0].text);\n                    c.shift();\n                }\n                res.push.apply(res, c);\n            }\n        }\n        else if (isPrimitive(c)) {\n            if (isTextNode(last)) {\n                // merge adjacent text nodes\n                // this is necessary for SSR hydration because text nodes are\n                // essentially merged when rendered to HTML strings\n                res[lastIndex] = createTextVNode(last.text + c);\n            }\n            else if (c !== '') {\n                // convert primitive to vnode\n                res.push(createTextVNode(c));\n            }\n        }\n        else {\n            if (isTextNode(c) && isTextNode(last)) {\n                // merge adjacent text nodes\n                res[lastIndex] = createTextVNode(last.text + c.text);\n            }\n            else {\n                // default key for nested array children (likely generated by v-for)\n                if (isTrue(children._isVList) &&\n                    isDef(c.tag) &&\n                    isUndef(c.key) &&\n                    isDef(nestedIndex)) {\n                    c.key = \"__vlist\".concat(nestedIndex, \"_\").concat(i, \"__\");\n                }\n                res.push(c);\n            }\n        }\n    }\n    return res;\n}\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList(val, render) {\n    var ret = null, i, l, keys, key;\n    if (isArray(val) || typeof val === 'string') {\n        ret = new Array(val.length);\n        for (i = 0, l = val.length; i < l; i++) {\n            ret[i] = render(val[i], i);\n        }\n    }\n    else if (typeof val === 'number') {\n        ret = new Array(val);\n        for (i = 0; i < val; i++) {\n            ret[i] = render(i + 1, i);\n        }\n    }\n    else if (isObject(val)) {\n        if (hasSymbol && val[Symbol.iterator]) {\n            ret = [];\n            var iterator = val[Symbol.iterator]();\n            var result = iterator.next();\n            while (!result.done) {\n                ret.push(render(result.value, ret.length));\n                result = iterator.next();\n            }\n        }\n        else {\n            keys = Object.keys(val);\n            ret = new Array(keys.length);\n            for (i = 0, l = keys.length; i < l; i++) {\n                key = keys[i];\n                ret[i] = render(val[key], key, i);\n            }\n        }\n    }\n    if (!isDef(ret)) {\n        ret = [];\n    }\n    ret._isVList = true;\n    return ret;\n}\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot(name, fallbackRender, props, bindObject) {\n    var scopedSlotFn = this.$scopedSlots[name];\n    var nodes;\n    if (scopedSlotFn) {\n        // scoped slot\n        props = props || {};\n        if (bindObject) {\n            if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n                warn('slot v-bind without argument expects an Object', this);\n            }\n            props = extend(extend({}, bindObject), props);\n        }\n        nodes =\n            scopedSlotFn(props) ||\n                (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\n    }\n    else {\n        nodes =\n            this.$slots[name] ||\n                (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\n    }\n    var target = props && props.slot;\n    if (target) {\n        return this.$createElement('template', { slot: target }, nodes);\n    }\n    else {\n        return nodes;\n    }\n}\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter(id) {\n    return resolveAsset(this.$options, 'filters', id, true) || identity;\n}\n\nfunction isKeyNotMatch(expect, actual) {\n    if (isArray(expect)) {\n        return expect.indexOf(actual) === -1;\n    }\n    else {\n        return expect !== actual;\n    }\n}\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n    var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n    if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n        return isKeyNotMatch(builtInKeyName, eventKeyName);\n    }\n    else if (mappedKeyCode) {\n        return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n    }\n    else if (eventKeyName) {\n        return hyphenate(eventKeyName) !== key;\n    }\n    return eventKeyCode === undefined;\n}\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps(data, tag, value, asProp, isSync) {\n    if (value) {\n        if (!isObject(value)) {\n            process.env.NODE_ENV !== 'production' &&\n                warn('v-bind without argument expects an Object or Array value', this);\n        }\n        else {\n            if (isArray(value)) {\n                value = toObject(value);\n            }\n            var hash = void 0;\n            var _loop_1 = function (key) {\n                if (key === 'class' || key === 'style' || isReservedAttribute(key)) {\n                    hash = data;\n                }\n                else {\n                    var type = data.attrs && data.attrs.type;\n                    hash =\n                        asProp || config.mustUseProp(tag, type, key)\n                            ? data.domProps || (data.domProps = {})\n                            : data.attrs || (data.attrs = {});\n                }\n                var camelizedKey = camelize(key);\n                var hyphenatedKey = hyphenate(key);\n                if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n                    hash[key] = value[key];\n                    if (isSync) {\n                        var on = data.on || (data.on = {});\n                        on[\"update:\".concat(key)] = function ($event) {\n                            value[key] = $event;\n                        };\n                    }\n                }\n            };\n            for (var key in value) {\n                _loop_1(key);\n            }\n        }\n    }\n    return data;\n}\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic(index, isInFor) {\n    var cached = this._staticTrees || (this._staticTrees = []);\n    var tree = cached[index];\n    // if has already-rendered static tree and not inside v-for,\n    // we can reuse the same tree.\n    if (tree && !isInFor) {\n        return tree;\n    }\n    // otherwise, render a fresh tree.\n    tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates\n    );\n    markStatic(tree, \"__static__\".concat(index), false);\n    return tree;\n}\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce(tree, index, key) {\n    markStatic(tree, \"__once__\".concat(index).concat(key ? \"_\".concat(key) : \"\"), true);\n    return tree;\n}\nfunction markStatic(tree, key, isOnce) {\n    if (isArray(tree)) {\n        for (var i = 0; i < tree.length; i++) {\n            if (tree[i] && typeof tree[i] !== 'string') {\n                markStaticNode(tree[i], \"\".concat(key, \"_\").concat(i), isOnce);\n            }\n        }\n    }\n    else {\n        markStaticNode(tree, key, isOnce);\n    }\n}\nfunction markStaticNode(node, key, isOnce) {\n    node.isStatic = true;\n    node.key = key;\n    node.isOnce = isOnce;\n}\n\nfunction bindObjectListeners(data, value) {\n    if (value) {\n        if (!isPlainObject(value)) {\n            process.env.NODE_ENV !== 'production' && warn('v-on without argument expects an Object value', this);\n        }\n        else {\n            var on = (data.on = data.on ? extend({}, data.on) : {});\n            for (var key in value) {\n                var existing = on[key];\n                var ours = value[key];\n                on[key] = existing ? [].concat(existing, ours) : ours;\n            }\n        }\n    }\n    return data;\n}\n\nfunction resolveScopedSlots(fns, res, \n// the following are added in 2.6\nhasDynamicKeys, contentHashKey) {\n    res = res || { $stable: !hasDynamicKeys };\n    for (var i = 0; i < fns.length; i++) {\n        var slot = fns[i];\n        if (isArray(slot)) {\n            resolveScopedSlots(slot, res, hasDynamicKeys);\n        }\n        else if (slot) {\n            // marker for reverse proxying v-slot without scope on this.$slots\n            // @ts-expect-error\n            if (slot.proxy) {\n                // @ts-expect-error\n                slot.fn.proxy = true;\n            }\n            res[slot.key] = slot.fn;\n        }\n    }\n    if (contentHashKey) {\n        res.$key = contentHashKey;\n    }\n    return res;\n}\n\n// helper to process dynamic keys for dynamic arguments in v-bind and v-on.\nfunction bindDynamicKeys(baseObj, values) {\n    for (var i = 0; i < values.length; i += 2) {\n        var key = values[i];\n        if (typeof key === 'string' && key) {\n            baseObj[values[i]] = values[i + 1];\n        }\n        else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n            // null is a special value for explicitly removing a binding\n            warn(\"Invalid value for dynamic directive argument (expected string or null): \".concat(key), this);\n        }\n    }\n    return baseObj;\n}\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier(value, symbol) {\n    return typeof value === 'string' ? symbol + value : value;\n}\n\nfunction installRenderHelpers(target) {\n    target._o = markOnce;\n    target._n = toNumber;\n    target._s = toString;\n    target._l = renderList;\n    target._t = renderSlot;\n    target._q = looseEqual;\n    target._i = looseIndexOf;\n    target._m = renderStatic;\n    target._f = resolveFilter;\n    target._k = checkKeyCodes;\n    target._b = bindObjectProps;\n    target._v = createTextVNode;\n    target._e = createEmptyVNode;\n    target._u = resolveScopedSlots;\n    target._g = bindObjectListeners;\n    target._d = bindDynamicKeys;\n    target._p = prependModifier;\n}\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots(children, context) {\n    if (!children || !children.length) {\n        return {};\n    }\n    var slots = {};\n    for (var i = 0, l = children.length; i < l; i++) {\n        var child = children[i];\n        var data = child.data;\n        // remove slot attribute if the node is resolved as a Vue slot node\n        if (data && data.attrs && data.attrs.slot) {\n            delete data.attrs.slot;\n        }\n        // named slots should only be respected if the vnode was rendered in the\n        // same context.\n        if ((child.context === context || child.fnContext === context) &&\n            data &&\n            data.slot != null) {\n            var name_1 = data.slot;\n            var slot = slots[name_1] || (slots[name_1] = []);\n            if (child.tag === 'template') {\n                slot.push.apply(slot, child.children || []);\n            }\n            else {\n                slot.push(child);\n            }\n        }\n        else {\n            (slots.default || (slots.default = [])).push(child);\n        }\n    }\n    // ignore slots that contains only whitespace\n    for (var name_2 in slots) {\n        if (slots[name_2].every(isWhitespace)) {\n            delete slots[name_2];\n        }\n    }\n    return slots;\n}\nfunction isWhitespace(node) {\n    return (node.isComment && !node.asyncFactory) || node.text === ' ';\n}\n\nfunction isAsyncPlaceholder(node) {\n    // @ts-expect-error not really boolean type\n    return node.isComment && node.asyncFactory;\n}\n\nfunction normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {\n    var res;\n    var hasNormalSlots = Object.keys(normalSlots).length > 0;\n    var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;\n    var key = scopedSlots && scopedSlots.$key;\n    if (!scopedSlots) {\n        res = {};\n    }\n    else if (scopedSlots._normalized) {\n        // fast path 1: child component re-render only, parent did not change\n        return scopedSlots._normalized;\n    }\n    else if (isStable &&\n        prevScopedSlots &&\n        prevScopedSlots !== emptyObject &&\n        key === prevScopedSlots.$key &&\n        !hasNormalSlots &&\n        !prevScopedSlots.$hasNormal) {\n        // fast path 2: stable scoped slots w/ no normal slots to proxy,\n        // only need to normalize once\n        return prevScopedSlots;\n    }\n    else {\n        res = {};\n        for (var key_1 in scopedSlots) {\n            if (scopedSlots[key_1] && key_1[0] !== '$') {\n                res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);\n            }\n        }\n    }\n    // expose normal slots on scopedSlots\n    for (var key_2 in normalSlots) {\n        if (!(key_2 in res)) {\n            res[key_2] = proxyNormalSlot(normalSlots, key_2);\n        }\n    }\n    // avoriaz seems to mock a non-extensible $scopedSlots object\n    // and when that is passed down this would cause an error\n    if (scopedSlots && Object.isExtensible(scopedSlots)) {\n        scopedSlots._normalized = res;\n    }\n    def(res, '$stable', isStable);\n    def(res, '$key', key);\n    def(res, '$hasNormal', hasNormalSlots);\n    return res;\n}\nfunction normalizeScopedSlot(vm, normalSlots, key, fn) {\n    var normalized = function () {\n        var cur = currentInstance;\n        setCurrentInstance(vm);\n        var res = arguments.length ? fn.apply(null, arguments) : fn({});\n        res =\n            res && typeof res === 'object' && !isArray(res)\n                ? [res] // single vnode\n                : normalizeChildren(res);\n        var vnode = res && res[0];\n        setCurrentInstance(cur);\n        return res &&\n            (!vnode ||\n                (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391\n            ? undefined\n            : res;\n    };\n    // this is a slot using the new v-slot syntax without scope. although it is\n    // compiled as a scoped slot, render fn users would expect it to be present\n    // on this.$slots because the usage is semantically a normal slot.\n    if (fn.proxy) {\n        Object.defineProperty(normalSlots, key, {\n            get: normalized,\n            enumerable: true,\n            configurable: true\n        });\n    }\n    return normalized;\n}\nfunction proxyNormalSlot(slots, key) {\n    return function () { return slots[key]; };\n}\n\nfunction initSetup(vm) {\n    var options = vm.$options;\n    var setup = options.setup;\n    if (setup) {\n        var ctx = (vm._setupContext = createSetupContext(vm));\n        setCurrentInstance(vm);\n        pushTarget();\n        var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, \"setup\");\n        popTarget();\n        setCurrentInstance();\n        if (isFunction(setupResult)) {\n            // render function\n            // @ts-ignore\n            options.render = setupResult;\n        }\n        else if (isObject(setupResult)) {\n            // bindings\n            if (process.env.NODE_ENV !== 'production' && setupResult instanceof VNode) {\n                warn(\"setup() should not return VNodes directly - \" +\n                    \"return a render function instead.\");\n            }\n            vm._setupState = setupResult;\n            // __sfc indicates compiled bindings from <script setup>\n            if (!setupResult.__sfc) {\n                for (var key in setupResult) {\n                    if (!isReserved(key)) {\n                        proxyWithRefUnwrap(vm, setupResult, key);\n                    }\n                    else if (process.env.NODE_ENV !== 'production') {\n                        warn(\"Avoid using variables that start with _ or $ in setup().\");\n                    }\n                }\n            }\n            else {\n                // exposed for compiled render fn\n                var proxy = (vm._setupProxy = {});\n                for (var key in setupResult) {\n                    if (key !== '__sfc') {\n                        proxyWithRefUnwrap(proxy, setupResult, key);\n                    }\n                }\n            }\n        }\n        else if (process.env.NODE_ENV !== 'production' && setupResult !== undefined) {\n            warn(\"setup() should return an object. Received: \".concat(setupResult === null ? 'null' : typeof setupResult));\n        }\n    }\n}\nfunction createSetupContext(vm) {\n    var exposeCalled = false;\n    return {\n        get attrs() {\n            if (!vm._attrsProxy) {\n                var proxy = (vm._attrsProxy = {});\n                def(proxy, '_v_attr_proxy', true);\n                syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs');\n            }\n            return vm._attrsProxy;\n        },\n        get listeners() {\n            if (!vm._listenersProxy) {\n                var proxy = (vm._listenersProxy = {});\n                syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners');\n            }\n            return vm._listenersProxy;\n        },\n        get slots() {\n            return initSlotsProxy(vm);\n        },\n        emit: bind(vm.$emit, vm),\n        expose: function (exposed) {\n            if (process.env.NODE_ENV !== 'production') {\n                if (exposeCalled) {\n                    warn(\"expose() should be called only once per setup().\", vm);\n                }\n                exposeCalled = true;\n            }\n            if (exposed) {\n                Object.keys(exposed).forEach(function (key) {\n                    return proxyWithRefUnwrap(vm, exposed, key);\n                });\n            }\n        }\n    };\n}\nfunction syncSetupProxy(to, from, prev, instance, type) {\n    var changed = false;\n    for (var key in from) {\n        if (!(key in to)) {\n            changed = true;\n            defineProxyAttr(to, key, instance, type);\n        }\n        else if (from[key] !== prev[key]) {\n            changed = true;\n        }\n    }\n    for (var key in to) {\n        if (!(key in from)) {\n            changed = true;\n            delete to[key];\n        }\n    }\n    return changed;\n}\nfunction defineProxyAttr(proxy, key, instance, type) {\n    Object.defineProperty(proxy, key, {\n        enumerable: true,\n        configurable: true,\n        get: function () {\n            return instance[type][key];\n        }\n    });\n}\nfunction initSlotsProxy(vm) {\n    if (!vm._slotsProxy) {\n        syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots);\n    }\n    return vm._slotsProxy;\n}\nfunction syncSetupSlots(to, from) {\n    for (var key in from) {\n        to[key] = from[key];\n    }\n    for (var key in to) {\n        if (!(key in from)) {\n            delete to[key];\n        }\n    }\n}\n/**\n * @internal use manual type def because public setup context type relies on\n * legacy VNode types\n */\nfunction useSlots() {\n    return getContext().slots;\n}\n/**\n * @internal use manual type def because public setup context type relies on\n * legacy VNode types\n */\nfunction useAttrs() {\n    return getContext().attrs;\n}\n/**\n * Vue 2 only\n * @internal use manual type def because public setup context type relies on\n * legacy VNode types\n */\nfunction useListeners() {\n    return getContext().listeners;\n}\nfunction getContext() {\n    if (process.env.NODE_ENV !== 'production' && !currentInstance) {\n        warn(\"useContext() called without active instance.\");\n    }\n    var vm = currentInstance;\n    return vm._setupContext || (vm._setupContext = createSetupContext(vm));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n    var props = isArray(raw)\n        ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {})\n        : raw;\n    for (var key in defaults) {\n        var opt = props[key];\n        if (opt) {\n            if (isArray(opt) || isFunction(opt)) {\n                props[key] = { type: opt, default: defaults[key] };\n            }\n            else {\n                opt.default = defaults[key];\n            }\n        }\n        else if (opt === null) {\n            props[key] = { default: defaults[key] };\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn(\"props default key \\\"\".concat(key, \"\\\" has no corresponding declaration.\"));\n        }\n    }\n    return props;\n}\n\nfunction initRender(vm) {\n    vm._vnode = null; // the root of the child tree\n    vm._staticTrees = null; // v-once cached trees\n    var options = vm.$options;\n    var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree\n    var renderContext = parentVnode && parentVnode.context;\n    vm.$slots = resolveSlots(options._renderChildren, renderContext);\n    vm.$scopedSlots = parentVnode\n        ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots)\n        : emptyObject;\n    // bind the createElement fn to this instance\n    // so that we get proper render context inside it.\n    // args order: tag, data, children, normalizationType, alwaysNormalize\n    // internal version is used by render functions compiled from templates\n    // @ts-expect-error\n    vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); };\n    // normalization is always applied for the public version, used in\n    // user-written render functions.\n    // @ts-expect-error\n    vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); };\n    // $attrs & $listeners are exposed for easier HOC creation.\n    // they need to be reactive so that HOCs using them are always updated\n    var parentData = parentVnode && parentVnode.data;\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n        defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () {\n            !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n        }, true);\n        defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n            !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n        }, true);\n    }\n    else {\n        defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, null, true);\n        defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n    }\n}\nvar currentRenderingInstance = null;\nfunction renderMixin(Vue) {\n    // install runtime convenience helpers\n    installRenderHelpers(Vue.prototype);\n    Vue.prototype.$nextTick = function (fn) {\n        return nextTick(fn, this);\n    };\n    Vue.prototype._render = function () {\n        var vm = this;\n        var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode;\n        if (_parentVnode && vm._isMounted) {\n            vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);\n            if (vm._slotsProxy) {\n                syncSetupSlots(vm._slotsProxy, vm.$scopedSlots);\n            }\n        }\n        // set parent vnode. this allows render functions to have access\n        // to the data on the placeholder node.\n        vm.$vnode = _parentVnode;\n        // render self\n        var prevInst = currentInstance;\n        var prevRenderInst = currentRenderingInstance;\n        var vnode;\n        try {\n            setCurrentInstance(vm);\n            currentRenderingInstance = vm;\n            vnode = render.call(vm._renderProxy, vm.$createElement);\n        }\n        catch (e) {\n            handleError(e, vm, \"render\");\n            // return error render result,\n            // or previous vnode to prevent render error causing blank component\n            /* istanbul ignore else */\n            if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n                try {\n                    vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n                }\n                catch (e) {\n                    handleError(e, vm, \"renderError\");\n                    vnode = vm._vnode;\n                }\n            }\n            else {\n                vnode = vm._vnode;\n            }\n        }\n        finally {\n            currentRenderingInstance = prevRenderInst;\n            setCurrentInstance(prevInst);\n        }\n        // if the returned array contains only a single node, allow it\n        if (isArray(vnode) && vnode.length === 1) {\n            vnode = vnode[0];\n        }\n        // return empty vnode in case the render function errored out\n        if (!(vnode instanceof VNode)) {\n            if (process.env.NODE_ENV !== 'production' && isArray(vnode)) {\n                warn('Multiple root nodes returned from render function. Render function ' +\n                    'should return a single root node.', vm);\n            }\n            vnode = createEmptyVNode();\n        }\n        // set parent\n        vnode.parent = _parentVnode;\n        return vnode;\n    };\n}\n\nfunction ensureCtor(comp, base) {\n    if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) {\n        comp = comp.default;\n    }\n    return isObject(comp) ? base.extend(comp) : comp;\n}\nfunction createAsyncPlaceholder(factory, data, context, children, tag) {\n    var node = createEmptyVNode();\n    node.asyncFactory = factory;\n    node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n    return node;\n}\nfunction resolveAsyncComponent(factory, baseCtor) {\n    if (isTrue(factory.error) && isDef(factory.errorComp)) {\n        return factory.errorComp;\n    }\n    if (isDef(factory.resolved)) {\n        return factory.resolved;\n    }\n    var owner = currentRenderingInstance;\n    if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n        // already pending\n        factory.owners.push(owner);\n    }\n    if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n        return factory.loadingComp;\n    }\n    if (owner && !isDef(factory.owners)) {\n        var owners_1 = (factory.owners = [owner]);\n        var sync_1 = true;\n        var timerLoading_1 = null;\n        var timerTimeout_1 = null;\n        owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); });\n        var forceRender_1 = function (renderCompleted) {\n            for (var i = 0, l = owners_1.length; i < l; i++) {\n                owners_1[i].$forceUpdate();\n            }\n            if (renderCompleted) {\n                owners_1.length = 0;\n                if (timerLoading_1 !== null) {\n                    clearTimeout(timerLoading_1);\n                    timerLoading_1 = null;\n                }\n                if (timerTimeout_1 !== null) {\n                    clearTimeout(timerTimeout_1);\n                    timerTimeout_1 = null;\n                }\n            }\n        };\n        var resolve = once(function (res) {\n            // cache resolved\n            factory.resolved = ensureCtor(res, baseCtor);\n            // invoke callbacks only if this is not a synchronous resolve\n            // (async resolves are shimmed as synchronous during SSR)\n            if (!sync_1) {\n                forceRender_1(true);\n            }\n            else {\n                owners_1.length = 0;\n            }\n        });\n        var reject_1 = once(function (reason) {\n            process.env.NODE_ENV !== 'production' &&\n                warn(\"Failed to resolve async component: \".concat(String(factory)) +\n                    (reason ? \"\\nReason: \".concat(reason) : ''));\n            if (isDef(factory.errorComp)) {\n                factory.error = true;\n                forceRender_1(true);\n            }\n        });\n        var res_1 = factory(resolve, reject_1);\n        if (isObject(res_1)) {\n            if (isPromise(res_1)) {\n                // () => Promise\n                if (isUndef(factory.resolved)) {\n                    res_1.then(resolve, reject_1);\n                }\n            }\n            else if (isPromise(res_1.component)) {\n                res_1.component.then(resolve, reject_1);\n                if (isDef(res_1.error)) {\n                    factory.errorComp = ensureCtor(res_1.error, baseCtor);\n                }\n                if (isDef(res_1.loading)) {\n                    factory.loadingComp = ensureCtor(res_1.loading, baseCtor);\n                    if (res_1.delay === 0) {\n                        factory.loading = true;\n                    }\n                    else {\n                        // @ts-expect-error NodeJS timeout type\n                        timerLoading_1 = setTimeout(function () {\n                            timerLoading_1 = null;\n                            if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                                factory.loading = true;\n                                forceRender_1(false);\n                            }\n                        }, res_1.delay || 200);\n                    }\n                }\n                if (isDef(res_1.timeout)) {\n                    // @ts-expect-error NodeJS timeout type\n                    timerTimeout_1 = setTimeout(function () {\n                        timerTimeout_1 = null;\n                        if (isUndef(factory.resolved)) {\n                            reject_1(process.env.NODE_ENV !== 'production' ? \"timeout (\".concat(res_1.timeout, \"ms)\") : null);\n                        }\n                    }, res_1.timeout);\n                }\n            }\n        }\n        sync_1 = false;\n        // return in case resolved synchronously\n        return factory.loading ? factory.loadingComp : factory.resolved;\n    }\n}\n\nfunction getFirstComponentChild(children) {\n    if (isArray(children)) {\n        for (var i = 0; i < children.length; i++) {\n            var c = children[i];\n            if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n                return c;\n            }\n        }\n    }\n}\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) {\n    if (isArray(data) || isPrimitive(data)) {\n        normalizationType = children;\n        children = data;\n        data = undefined;\n    }\n    if (isTrue(alwaysNormalize)) {\n        normalizationType = ALWAYS_NORMALIZE;\n    }\n    return _createElement(context, tag, data, children, normalizationType);\n}\nfunction _createElement(context, tag, data, children, normalizationType) {\n    if (isDef(data) && isDef(data.__ob__)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn(\"Avoid using observed data object as vnode data: \".concat(JSON.stringify(data), \"\\n\") + 'Always create fresh vnode data objects in each render!', context);\n        return createEmptyVNode();\n    }\n    // object syntax in v-bind\n    if (isDef(data) && isDef(data.is)) {\n        tag = data.is;\n    }\n    if (!tag) {\n        // in case of component :is set to falsy value\n        return createEmptyVNode();\n    }\n    // warn against non-primitive key\n    if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {\n        warn('Avoid using non-primitive value as key, ' +\n            'use string/number value instead.', context);\n    }\n    // support single function children as default scoped slot\n    if (isArray(children) && isFunction(children[0])) {\n        data = data || {};\n        data.scopedSlots = { default: children[0] };\n        children.length = 0;\n    }\n    if (normalizationType === ALWAYS_NORMALIZE) {\n        children = normalizeChildren(children);\n    }\n    else if (normalizationType === SIMPLE_NORMALIZE) {\n        children = simpleNormalizeChildren(children);\n    }\n    var vnode, ns;\n    if (typeof tag === 'string') {\n        var Ctor = void 0;\n        ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n        if (config.isReservedTag(tag)) {\n            // platform built-in elements\n            if (process.env.NODE_ENV !== 'production' &&\n                isDef(data) &&\n                isDef(data.nativeOn) &&\n                data.tag !== 'component') {\n                warn(\"The .native modifier for v-on is only valid on components but it was used on <\".concat(tag, \">.\"), context);\n            }\n            vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);\n        }\n        else if ((!data || !data.pre) &&\n            isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {\n            // component\n            vnode = createComponent(Ctor, data, context, children, tag);\n        }\n        else {\n            // unknown or unlisted namespaced elements\n            // check at runtime because it may get assigned a namespace when its\n            // parent normalizes children\n            vnode = new VNode(tag, data, children, undefined, undefined, context);\n        }\n    }\n    else {\n        // direct component options / constructor\n        vnode = createComponent(tag, data, context, children);\n    }\n    if (isArray(vnode)) {\n        return vnode;\n    }\n    else if (isDef(vnode)) {\n        if (isDef(ns))\n            applyNS(vnode, ns);\n        if (isDef(data))\n            registerDeepBindings(data);\n        return vnode;\n    }\n    else {\n        return createEmptyVNode();\n    }\n}\nfunction applyNS(vnode, ns, force) {\n    vnode.ns = ns;\n    if (vnode.tag === 'foreignObject') {\n        // use default namespace inside foreignObject\n        ns = undefined;\n        force = true;\n    }\n    if (isDef(vnode.children)) {\n        for (var i = 0, l = vnode.children.length; i < l; i++) {\n            var child = vnode.children[i];\n            if (isDef(child.tag) &&\n                (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n                applyNS(child, ns, force);\n            }\n        }\n    }\n}\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings(data) {\n    if (isObject(data.style)) {\n        traverse(data.style);\n    }\n    if (isObject(data.class)) {\n        traverse(data.class);\n    }\n}\n\n/**\n * @internal this function needs manual public type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction h(type, props, children) {\n    if (!currentInstance) {\n        process.env.NODE_ENV !== 'production' &&\n            warn(\"globally imported h() can only be invoked when there is an active \" +\n                \"component instance, e.g. synchronously in a component's render or setup function.\");\n    }\n    return createElement$1(currentInstance, type, props, children, 2, true);\n}\n\nfunction handleError(err, vm, info) {\n    // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n    // See: https://github.com/vuejs/vuex/issues/1505\n    pushTarget();\n    try {\n        if (vm) {\n            var cur = vm;\n            while ((cur = cur.$parent)) {\n                var hooks = cur.$options.errorCaptured;\n                if (hooks) {\n                    for (var i = 0; i < hooks.length; i++) {\n                        try {\n                            var capture = hooks[i].call(cur, err, vm, info) === false;\n                            if (capture)\n                                return;\n                        }\n                        catch (e) {\n                            globalHandleError(e, cur, 'errorCaptured hook');\n                        }\n                    }\n                }\n            }\n        }\n        globalHandleError(err, vm, info);\n    }\n    finally {\n        popTarget();\n    }\n}\nfunction invokeWithErrorHandling(handler, context, args, vm, info) {\n    var res;\n    try {\n        res = args ? handler.apply(context, args) : handler.call(context);\n        if (res && !res._isVue && isPromise(res) && !res._handled) {\n            res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n            res._handled = true;\n        }\n    }\n    catch (e) {\n        handleError(e, vm, info);\n    }\n    return res;\n}\nfunction globalHandleError(err, vm, info) {\n    if (config.errorHandler) {\n        try {\n            return config.errorHandler.call(null, err, vm, info);\n        }\n        catch (e) {\n            // if the user intentionally throws the original error in the handler,\n            // do not log it twice\n            if (e !== err) {\n                logError(e, null, 'config.errorHandler');\n            }\n        }\n    }\n    logError(err, vm, info);\n}\nfunction logError(err, vm, info) {\n    if (process.env.NODE_ENV !== 'production') {\n        warn(\"Error in \".concat(info, \": \\\"\").concat(err.toString(), \"\\\"\"), vm);\n    }\n    /* istanbul ignore else */\n    if (inBrowser && typeof console !== 'undefined') {\n        console.error(err);\n    }\n    else {\n        throw err;\n    }\n}\n\n/* globals MutationObserver */\nvar isUsingMicroTask = false;\nvar callbacks = [];\nvar pending = false;\nfunction flushCallbacks() {\n    pending = false;\n    var copies = callbacks.slice(0);\n    callbacks.length = 0;\n    for (var i = 0; i < copies.length; i++) {\n        copies[i]();\n    }\n}\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n    var p_1 = Promise.resolve();\n    timerFunc = function () {\n        p_1.then(flushCallbacks);\n        // In problematic UIWebViews, Promise.then doesn't completely break, but\n        // it can get stuck in a weird state where callbacks are pushed into the\n        // microtask queue but the queue isn't being flushed, until the browser\n        // needs to do some other work, e.g. handle a timer. Therefore we can\n        // \"force\" the microtask queue to be flushed by adding an empty timer.\n        if (isIOS)\n            setTimeout(noop);\n    };\n    isUsingMicroTask = true;\n}\nelse if (!isIE &&\n    typeof MutationObserver !== 'undefined' &&\n    (isNative(MutationObserver) ||\n        // PhantomJS and iOS 7.x\n        MutationObserver.toString() === '[object MutationObserverConstructor]')) {\n    // Use MutationObserver where native Promise is not available,\n    // e.g. PhantomJS, iOS7, Android 4.4\n    // (#6466 MutationObserver is unreliable in IE11)\n    var counter_1 = 1;\n    var observer = new MutationObserver(flushCallbacks);\n    var textNode_1 = document.createTextNode(String(counter_1));\n    observer.observe(textNode_1, {\n        characterData: true\n    });\n    timerFunc = function () {\n        counter_1 = (counter_1 + 1) % 2;\n        textNode_1.data = String(counter_1);\n    };\n    isUsingMicroTask = true;\n}\nelse if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n    // Fallback to setImmediate.\n    // Technically it leverages the (macro) task queue,\n    // but it is still a better choice than setTimeout.\n    timerFunc = function () {\n        setImmediate(flushCallbacks);\n    };\n}\nelse {\n    // Fallback to setTimeout.\n    timerFunc = function () {\n        setTimeout(flushCallbacks, 0);\n    };\n}\n/**\n * @internal\n */\nfunction nextTick(cb, ctx) {\n    var _resolve;\n    callbacks.push(function () {\n        if (cb) {\n            try {\n                cb.call(ctx);\n            }\n            catch (e) {\n                handleError(e, ctx, 'nextTick');\n            }\n        }\n        else if (_resolve) {\n            _resolve(ctx);\n        }\n    });\n    if (!pending) {\n        pending = true;\n        timerFunc();\n    }\n    // $flow-disable-line\n    if (!cb && typeof Promise !== 'undefined') {\n        return new Promise(function (resolve) {\n            _resolve = resolve;\n        });\n    }\n}\n\nfunction useCssModule(name) {\n    if (name === void 0) { name = '$style'; }\n    /* istanbul ignore else */\n    {\n        if (!currentInstance) {\n            process.env.NODE_ENV !== 'production' && warn(\"useCssModule must be called inside setup()\");\n            return emptyObject;\n        }\n        var mod = currentInstance[name];\n        if (!mod) {\n            process.env.NODE_ENV !== 'production' &&\n                warn(\"Current instance does not have CSS module named \\\"\".concat(name, \"\\\".\"));\n            return emptyObject;\n        }\n        return mod;\n    }\n}\n\n/**\n * Runtime helper for SFC's CSS variable injection feature.\n * @private\n */\nfunction useCssVars(getter) {\n    if (!inBrowser && !false)\n        return;\n    var instance = currentInstance;\n    if (!instance) {\n        process.env.NODE_ENV !== 'production' &&\n            warn(\"useCssVars is called without current active component instance.\");\n        return;\n    }\n    watchPostEffect(function () {\n        var el = instance.$el;\n        var vars = getter(instance, instance._setupProxy);\n        if (el && el.nodeType === 1) {\n            var style = el.style;\n            for (var key in vars) {\n                style.setProperty(\"--\".concat(key), vars[key]);\n            }\n        }\n    });\n}\n\n/**\n * v3-compatible async component API.\n * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts\n * because it relies on existing manual types\n */\nfunction defineAsyncComponent(source) {\n    if (isFunction(source)) {\n        source = { loader: source };\n    }\n    var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out\n    _b = source.suspensible, // undefined = never times out\n    suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true\n    userOnError = source.onError;\n    if (process.env.NODE_ENV !== 'production' && suspensible) {\n        warn(\"The suspensible option for async components is not supported in Vue2. It is ignored.\");\n    }\n    var pendingRequest = null;\n    var retries = 0;\n    var retry = function () {\n        retries++;\n        pendingRequest = null;\n        return load();\n    };\n    var load = function () {\n        var thisRequest;\n        return (pendingRequest ||\n            (thisRequest = pendingRequest =\n                loader()\n                    .catch(function (err) {\n                    err = err instanceof Error ? err : new Error(String(err));\n                    if (userOnError) {\n                        return new Promise(function (resolve, reject) {\n                            var userRetry = function () { return resolve(retry()); };\n                            var userFail = function () { return reject(err); };\n                            userOnError(err, userRetry, userFail, retries + 1);\n                        });\n                    }\n                    else {\n                        throw err;\n                    }\n                })\n                    .then(function (comp) {\n                    if (thisRequest !== pendingRequest && pendingRequest) {\n                        return pendingRequest;\n                    }\n                    if (process.env.NODE_ENV !== 'production' && !comp) {\n                        warn(\"Async component loader resolved to undefined. \" +\n                            \"If you are using retry(), make sure to return its return value.\");\n                    }\n                    // interop module default\n                    if (comp &&\n                        (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n                        comp = comp.default;\n                    }\n                    if (process.env.NODE_ENV !== 'production' && comp && !isObject(comp) && !isFunction(comp)) {\n                        throw new Error(\"Invalid async component load result: \".concat(comp));\n                    }\n                    return comp;\n                })));\n    };\n    return function () {\n        var component = load();\n        return {\n            component: component,\n            delay: delay,\n            timeout: timeout,\n            error: errorComponent,\n            loading: loadingComponent\n        };\n    };\n}\n\nfunction createLifeCycle(hookName) {\n    return function (fn, target) {\n        if (target === void 0) { target = currentInstance; }\n        if (!target) {\n            process.env.NODE_ENV !== 'production' &&\n                warn(\"\".concat(formatName(hookName), \" is called when there is no active component instance to be \") +\n                    \"associated with. \" +\n                    \"Lifecycle injection APIs can only be used during execution of setup().\");\n            return;\n        }\n        return injectHook(target, hookName, fn);\n    };\n}\nfunction formatName(name) {\n    if (name === 'beforeDestroy') {\n        name = 'beforeUnmount';\n    }\n    else if (name === 'destroyed') {\n        name = 'unmounted';\n    }\n    return \"on\".concat(name[0].toUpperCase() + name.slice(1));\n}\nfunction injectHook(instance, hookName, fn) {\n    var options = instance.$options;\n    options[hookName] = mergeLifecycleHook(options[hookName], fn);\n}\nvar onBeforeMount = createLifeCycle('beforeMount');\nvar onMounted = createLifeCycle('mounted');\nvar onBeforeUpdate = createLifeCycle('beforeUpdate');\nvar onUpdated = createLifeCycle('updated');\nvar onBeforeUnmount = createLifeCycle('beforeDestroy');\nvar onUnmounted = createLifeCycle('destroyed');\nvar onActivated = createLifeCycle('activated');\nvar onDeactivated = createLifeCycle('deactivated');\nvar onServerPrefetch = createLifeCycle('serverPrefetch');\nvar onRenderTracked = createLifeCycle('renderTracked');\nvar onRenderTriggered = createLifeCycle('renderTriggered');\nvar injectErrorCapturedHook = createLifeCycle('errorCaptured');\nfunction onErrorCaptured(hook, target) {\n    if (target === void 0) { target = currentInstance; }\n    injectErrorCapturedHook(hook, target);\n}\n\n/**\n * Note: also update dist/vue.runtime.mjs when adding new exports to this file.\n */\nvar version = '2.7.16';\n/**\n * @internal type is manually declared in <root>/types/v3-define-component.d.ts\n */\nfunction defineComponent(options) {\n    return options;\n}\n\nvar seenObjects = new _Set();\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse(val) {\n    _traverse(val, seenObjects);\n    seenObjects.clear();\n    return val;\n}\nfunction _traverse(val, seen) {\n    var i, keys;\n    var isA = isArray(val);\n    if ((!isA && !isObject(val)) ||\n        val.__v_skip /* ReactiveFlags.SKIP */ ||\n        Object.isFrozen(val) ||\n        val instanceof VNode) {\n        return;\n    }\n    if (val.__ob__) {\n        var depId = val.__ob__.dep.id;\n        if (seen.has(depId)) {\n            return;\n        }\n        seen.add(depId);\n    }\n    if (isA) {\n        i = val.length;\n        while (i--)\n            _traverse(val[i], seen);\n    }\n    else if (isRef(val)) {\n        _traverse(val.value, seen);\n    }\n    else {\n        keys = Object.keys(val);\n        i = keys.length;\n        while (i--)\n            _traverse(val[keys[i]], seen);\n    }\n}\n\nvar uid$1 = 0;\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n * @internal\n */\nvar Watcher = /** @class */ (function () {\n    function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {\n        recordEffectScope(this, \n        // if the active effect scope is manually created (not a component scope),\n        // prioritize it\n        activeEffectScope && !activeEffectScope._vm\n            ? activeEffectScope\n            : vm\n                ? vm._scope\n                : undefined);\n        if ((this.vm = vm) && isRenderWatcher) {\n            vm._watcher = this;\n        }\n        // options\n        if (options) {\n            this.deep = !!options.deep;\n            this.user = !!options.user;\n            this.lazy = !!options.lazy;\n            this.sync = !!options.sync;\n            this.before = options.before;\n            if (process.env.NODE_ENV !== 'production') {\n                this.onTrack = options.onTrack;\n                this.onTrigger = options.onTrigger;\n            }\n        }\n        else {\n            this.deep = this.user = this.lazy = this.sync = false;\n        }\n        this.cb = cb;\n        this.id = ++uid$1; // uid for batching\n        this.active = true;\n        this.post = false;\n        this.dirty = this.lazy; // for lazy watchers\n        this.deps = [];\n        this.newDeps = [];\n        this.depIds = new _Set();\n        this.newDepIds = new _Set();\n        this.expression = process.env.NODE_ENV !== 'production' ? expOrFn.toString() : '';\n        // parse expression for getter\n        if (isFunction(expOrFn)) {\n            this.getter = expOrFn;\n        }\n        else {\n            this.getter = parsePath(expOrFn);\n            if (!this.getter) {\n                this.getter = noop;\n                process.env.NODE_ENV !== 'production' &&\n                    warn(\"Failed watching path: \\\"\".concat(expOrFn, \"\\\" \") +\n                        'Watcher only accepts simple dot-delimited paths. ' +\n                        'For full control, use a function instead.', vm);\n            }\n        }\n        this.value = this.lazy ? undefined : this.get();\n    }\n    /**\n     * Evaluate the getter, and re-collect dependencies.\n     */\n    Watcher.prototype.get = function () {\n        pushTarget(this);\n        var value;\n        var vm = this.vm;\n        try {\n            value = this.getter.call(vm, vm);\n        }\n        catch (e) {\n            if (this.user) {\n                handleError(e, vm, \"getter for watcher \\\"\".concat(this.expression, \"\\\"\"));\n            }\n            else {\n                throw e;\n            }\n        }\n        finally {\n            // \"touch\" every property so they are all tracked as\n            // dependencies for deep watching\n            if (this.deep) {\n                traverse(value);\n            }\n            popTarget();\n            this.cleanupDeps();\n        }\n        return value;\n    };\n    /**\n     * Add a dependency to this directive.\n     */\n    Watcher.prototype.addDep = function (dep) {\n        var id = dep.id;\n        if (!this.newDepIds.has(id)) {\n            this.newDepIds.add(id);\n            this.newDeps.push(dep);\n            if (!this.depIds.has(id)) {\n                dep.addSub(this);\n            }\n        }\n    };\n    /**\n     * Clean up for dependency collection.\n     */\n    Watcher.prototype.cleanupDeps = function () {\n        var i = this.deps.length;\n        while (i--) {\n            var dep = this.deps[i];\n            if (!this.newDepIds.has(dep.id)) {\n                dep.removeSub(this);\n            }\n        }\n        var tmp = this.depIds;\n        this.depIds = this.newDepIds;\n        this.newDepIds = tmp;\n        this.newDepIds.clear();\n        tmp = this.deps;\n        this.deps = this.newDeps;\n        this.newDeps = tmp;\n        this.newDeps.length = 0;\n    };\n    /**\n     * Subscriber interface.\n     * Will be called when a dependency changes.\n     */\n    Watcher.prototype.update = function () {\n        /* istanbul ignore else */\n        if (this.lazy) {\n            this.dirty = true;\n        }\n        else if (this.sync) {\n            this.run();\n        }\n        else {\n            queueWatcher(this);\n        }\n    };\n    /**\n     * Scheduler job interface.\n     * Will be called by the scheduler.\n     */\n    Watcher.prototype.run = function () {\n        if (this.active) {\n            var value = this.get();\n            if (value !== this.value ||\n                // Deep watchers and watchers on Object/Arrays should fire even\n                // when the value is the same, because the value may\n                // have mutated.\n                isObject(value) ||\n                this.deep) {\n                // set new value\n                var oldValue = this.value;\n                this.value = value;\n                if (this.user) {\n                    var info = \"callback for watcher \\\"\".concat(this.expression, \"\\\"\");\n                    invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n                }\n                else {\n                    this.cb.call(this.vm, value, oldValue);\n                }\n            }\n        }\n    };\n    /**\n     * Evaluate the value of the watcher.\n     * This only gets called for lazy watchers.\n     */\n    Watcher.prototype.evaluate = function () {\n        this.value = this.get();\n        this.dirty = false;\n    };\n    /**\n     * Depend on all deps collected by this watcher.\n     */\n    Watcher.prototype.depend = function () {\n        var i = this.deps.length;\n        while (i--) {\n            this.deps[i].depend();\n        }\n    };\n    /**\n     * Remove self from all dependencies' subscriber list.\n     */\n    Watcher.prototype.teardown = function () {\n        if (this.vm && !this.vm._isBeingDestroyed) {\n            remove$2(this.vm._scope.effects, this);\n        }\n        if (this.active) {\n            var i = this.deps.length;\n            while (i--) {\n                this.deps[i].removeSub(this);\n            }\n            this.active = false;\n            if (this.onStop) {\n                this.onStop();\n            }\n        }\n    };\n    return Watcher;\n}());\n\nvar mark;\nvar measure;\nif (process.env.NODE_ENV !== 'production') {\n    var perf_1 = inBrowser && window.performance;\n    /* istanbul ignore if */\n    if (perf_1 &&\n        // @ts-ignore\n        perf_1.mark &&\n        // @ts-ignore\n        perf_1.measure &&\n        // @ts-ignore\n        perf_1.clearMarks &&\n        // @ts-ignore\n        perf_1.clearMeasures) {\n        mark = function (tag) { return perf_1.mark(tag); };\n        measure = function (name, startTag, endTag) {\n            perf_1.measure(name, startTag, endTag);\n            perf_1.clearMarks(startTag);\n            perf_1.clearMarks(endTag);\n            // perf.clearMeasures(name)\n        };\n    }\n}\n\nfunction initEvents(vm) {\n    vm._events = Object.create(null);\n    vm._hasHookEvent = false;\n    // init parent attached events\n    var listeners = vm.$options._parentListeners;\n    if (listeners) {\n        updateComponentListeners(vm, listeners);\n    }\n}\nvar target$1;\nfunction add$1(event, fn) {\n    target$1.$on(event, fn);\n}\nfunction remove$1(event, fn) {\n    target$1.$off(event, fn);\n}\nfunction createOnceHandler$1(event, fn) {\n    var _target = target$1;\n    return function onceHandler() {\n        var res = fn.apply(null, arguments);\n        if (res !== null) {\n            _target.$off(event, onceHandler);\n        }\n    };\n}\nfunction updateComponentListeners(vm, listeners, oldListeners) {\n    target$1 = vm;\n    updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm);\n    target$1 = undefined;\n}\nfunction eventsMixin(Vue) {\n    var hookRE = /^hook:/;\n    Vue.prototype.$on = function (event, fn) {\n        var vm = this;\n        if (isArray(event)) {\n            for (var i = 0, l = event.length; i < l; i++) {\n                vm.$on(event[i], fn);\n            }\n        }\n        else {\n            (vm._events[event] || (vm._events[event] = [])).push(fn);\n            // optimize hook:event cost by using a boolean flag marked at registration\n            // instead of a hash lookup\n            if (hookRE.test(event)) {\n                vm._hasHookEvent = true;\n            }\n        }\n        return vm;\n    };\n    Vue.prototype.$once = function (event, fn) {\n        var vm = this;\n        function on() {\n            vm.$off(event, on);\n            fn.apply(vm, arguments);\n        }\n        on.fn = fn;\n        vm.$on(event, on);\n        return vm;\n    };\n    Vue.prototype.$off = function (event, fn) {\n        var vm = this;\n        // all\n        if (!arguments.length) {\n            vm._events = Object.create(null);\n            return vm;\n        }\n        // array of events\n        if (isArray(event)) {\n            for (var i_1 = 0, l = event.length; i_1 < l; i_1++) {\n                vm.$off(event[i_1], fn);\n            }\n            return vm;\n        }\n        // specific event\n        var cbs = vm._events[event];\n        if (!cbs) {\n            return vm;\n        }\n        if (!fn) {\n            vm._events[event] = null;\n            return vm;\n        }\n        // specific handler\n        var cb;\n        var i = cbs.length;\n        while (i--) {\n            cb = cbs[i];\n            if (cb === fn || cb.fn === fn) {\n                cbs.splice(i, 1);\n                break;\n            }\n        }\n        return vm;\n    };\n    Vue.prototype.$emit = function (event) {\n        var vm = this;\n        if (process.env.NODE_ENV !== 'production') {\n            var lowerCaseEvent = event.toLowerCase();\n            if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n                tip(\"Event \\\"\".concat(lowerCaseEvent, \"\\\" is emitted in component \") +\n                    \"\".concat(formatComponentName(vm), \" but the handler is registered for \\\"\").concat(event, \"\\\". \") +\n                    \"Note that HTML attributes are case-insensitive and you cannot use \" +\n                    \"v-on to listen to camelCase events when using in-DOM templates. \" +\n                    \"You should probably use \\\"\".concat(hyphenate(event), \"\\\" instead of \\\"\").concat(event, \"\\\".\"));\n            }\n        }\n        var cbs = vm._events[event];\n        if (cbs) {\n            cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n            var args = toArray(arguments, 1);\n            var info = \"event handler for \\\"\".concat(event, \"\\\"\");\n            for (var i = 0, l = cbs.length; i < l; i++) {\n                invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n            }\n        }\n        return vm;\n    };\n}\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\nfunction setActiveInstance(vm) {\n    var prevActiveInstance = activeInstance;\n    activeInstance = vm;\n    return function () {\n        activeInstance = prevActiveInstance;\n    };\n}\nfunction initLifecycle(vm) {\n    var options = vm.$options;\n    // locate first non-abstract parent\n    var parent = options.parent;\n    if (parent && !options.abstract) {\n        while (parent.$options.abstract && parent.$parent) {\n            parent = parent.$parent;\n        }\n        parent.$children.push(vm);\n    }\n    vm.$parent = parent;\n    vm.$root = parent ? parent.$root : vm;\n    vm.$children = [];\n    vm.$refs = {};\n    vm._provided = parent ? parent._provided : Object.create(null);\n    vm._watcher = null;\n    vm._inactive = null;\n    vm._directInactive = false;\n    vm._isMounted = false;\n    vm._isDestroyed = false;\n    vm._isBeingDestroyed = false;\n}\nfunction lifecycleMixin(Vue) {\n    Vue.prototype._update = function (vnode, hydrating) {\n        var vm = this;\n        var prevEl = vm.$el;\n        var prevVnode = vm._vnode;\n        var restoreActiveInstance = setActiveInstance(vm);\n        vm._vnode = vnode;\n        // Vue.prototype.__patch__ is injected in entry points\n        // based on the rendering backend used.\n        if (!prevVnode) {\n            // initial render\n            vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n        }\n        else {\n            // updates\n            vm.$el = vm.__patch__(prevVnode, vnode);\n        }\n        restoreActiveInstance();\n        // update __vue__ reference\n        if (prevEl) {\n            prevEl.__vue__ = null;\n        }\n        if (vm.$el) {\n            vm.$el.__vue__ = vm;\n        }\n        // if parent is an HOC, update its $el as well\n        var wrapper = vm;\n        while (wrapper &&\n            wrapper.$vnode &&\n            wrapper.$parent &&\n            wrapper.$vnode === wrapper.$parent._vnode) {\n            wrapper.$parent.$el = wrapper.$el;\n            wrapper = wrapper.$parent;\n        }\n        // updated hook is called by the scheduler to ensure that children are\n        // updated in a parent's updated hook.\n    };\n    Vue.prototype.$forceUpdate = function () {\n        var vm = this;\n        if (vm._watcher) {\n            vm._watcher.update();\n        }\n    };\n    Vue.prototype.$destroy = function () {\n        var vm = this;\n        if (vm._isBeingDestroyed) {\n            return;\n        }\n        callHook$1(vm, 'beforeDestroy');\n        vm._isBeingDestroyed = true;\n        // remove self from parent\n        var parent = vm.$parent;\n        if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n            remove$2(parent.$children, vm);\n        }\n        // teardown scope. this includes both the render watcher and other\n        // watchers created\n        vm._scope.stop();\n        // remove reference from data ob\n        // frozen object may not have observer.\n        if (vm._data.__ob__) {\n            vm._data.__ob__.vmCount--;\n        }\n        // call the last hook...\n        vm._isDestroyed = true;\n        // invoke destroy hooks on current rendered tree\n        vm.__patch__(vm._vnode, null);\n        // fire destroyed hook\n        callHook$1(vm, 'destroyed');\n        // turn off all instance listeners.\n        vm.$off();\n        // remove __vue__ reference\n        if (vm.$el) {\n            vm.$el.__vue__ = null;\n        }\n        // release circular reference (#6759)\n        if (vm.$vnode) {\n            vm.$vnode.parent = null;\n        }\n    };\n}\nfunction mountComponent(vm, el, hydrating) {\n    vm.$el = el;\n    if (!vm.$options.render) {\n        // @ts-expect-error invalid type\n        vm.$options.render = createEmptyVNode;\n        if (process.env.NODE_ENV !== 'production') {\n            /* istanbul ignore if */\n            if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n                vm.$options.el ||\n                el) {\n                warn('You are using the runtime-only build of Vue where the template ' +\n                    'compiler is not available. Either pre-compile the templates into ' +\n                    'render functions, or use the compiler-included build.', vm);\n            }\n            else {\n                warn('Failed to mount component: template or render function not defined.', vm);\n            }\n        }\n    }\n    callHook$1(vm, 'beforeMount');\n    var updateComponent;\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n        updateComponent = function () {\n            var name = vm._name;\n            var id = vm._uid;\n            var startTag = \"vue-perf-start:\".concat(id);\n            var endTag = \"vue-perf-end:\".concat(id);\n            mark(startTag);\n            var vnode = vm._render();\n            mark(endTag);\n            measure(\"vue \".concat(name, \" render\"), startTag, endTag);\n            mark(startTag);\n            vm._update(vnode, hydrating);\n            mark(endTag);\n            measure(\"vue \".concat(name, \" patch\"), startTag, endTag);\n        };\n    }\n    else {\n        updateComponent = function () {\n            vm._update(vm._render(), hydrating);\n        };\n    }\n    var watcherOptions = {\n        before: function () {\n            if (vm._isMounted && !vm._isDestroyed) {\n                callHook$1(vm, 'beforeUpdate');\n            }\n        }\n    };\n    if (process.env.NODE_ENV !== 'production') {\n        watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); };\n        watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); };\n    }\n    // we set this to vm._watcher inside the watcher's constructor\n    // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n    // component's mounted hook), which relies on vm._watcher being already defined\n    new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */);\n    hydrating = false;\n    // flush buffer for flush: \"pre\" watchers queued in setup()\n    var preWatchers = vm._preWatchers;\n    if (preWatchers) {\n        for (var i = 0; i < preWatchers.length; i++) {\n            preWatchers[i].run();\n        }\n    }\n    // manually mounted instance, call mounted on self\n    // mounted is called for render-created child components in its inserted hook\n    if (vm.$vnode == null) {\n        vm._isMounted = true;\n        callHook$1(vm, 'mounted');\n    }\n    return vm;\n}\nfunction updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {\n    if (process.env.NODE_ENV !== 'production') {\n        isUpdatingChildComponent = true;\n    }\n    // determine whether component has slot children\n    // we need to do this before overwriting $options._renderChildren.\n    // check if there are dynamic scopedSlots (hand-written or compiled but with\n    // dynamic slot names). Static scoped slots compiled from template has the\n    // \"$stable\" marker.\n    var newScopedSlots = parentVnode.data.scopedSlots;\n    var oldScopedSlots = vm.$scopedSlots;\n    var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||\n        (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n        (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||\n        (!newScopedSlots && vm.$scopedSlots.$key));\n    // Any static slot children from the parent may have changed during parent's\n    // update. Dynamic scoped slots may also have changed. In such cases, a forced\n    // update is necessary to ensure correctness.\n    var needsForceUpdate = !!(renderChildren || // has new static slots\n        vm.$options._renderChildren || // has old static slots\n        hasDynamicScopedSlot);\n    var prevVNode = vm.$vnode;\n    vm.$options._parentVnode = parentVnode;\n    vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n    if (vm._vnode) {\n        // update child tree's parent\n        vm._vnode.parent = parentVnode;\n    }\n    vm.$options._renderChildren = renderChildren;\n    // update $attrs and $listeners hash\n    // these are also reactive so they may trigger child update if the child\n    // used them during render\n    var attrs = parentVnode.data.attrs || emptyObject;\n    if (vm._attrsProxy) {\n        // force update if attrs are accessed and has changed since it may be\n        // passed to a child component.\n        if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) {\n            needsForceUpdate = true;\n        }\n    }\n    vm.$attrs = attrs;\n    // update listeners\n    listeners = listeners || emptyObject;\n    var prevListeners = vm.$options._parentListeners;\n    if (vm._listenersProxy) {\n        syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners');\n    }\n    vm.$listeners = vm.$options._parentListeners = listeners;\n    updateComponentListeners(vm, listeners, prevListeners);\n    // update props\n    if (propsData && vm.$options.props) {\n        toggleObserving(false);\n        var props = vm._props;\n        var propKeys = vm.$options._propKeys || [];\n        for (var i = 0; i < propKeys.length; i++) {\n            var key = propKeys[i];\n            var propOptions = vm.$options.props; // wtf flow?\n            props[key] = validateProp(key, propOptions, propsData, vm);\n        }\n        toggleObserving(true);\n        // keep a copy of raw propsData\n        vm.$options.propsData = propsData;\n    }\n    // resolve slots + force update if has children\n    if (needsForceUpdate) {\n        vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n        vm.$forceUpdate();\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        isUpdatingChildComponent = false;\n    }\n}\nfunction isInInactiveTree(vm) {\n    while (vm && (vm = vm.$parent)) {\n        if (vm._inactive)\n            return true;\n    }\n    return false;\n}\nfunction activateChildComponent(vm, direct) {\n    if (direct) {\n        vm._directInactive = false;\n        if (isInInactiveTree(vm)) {\n            return;\n        }\n    }\n    else if (vm._directInactive) {\n        return;\n    }\n    if (vm._inactive || vm._inactive === null) {\n        vm._inactive = false;\n        for (var i = 0; i < vm.$children.length; i++) {\n            activateChildComponent(vm.$children[i]);\n        }\n        callHook$1(vm, 'activated');\n    }\n}\nfunction deactivateChildComponent(vm, direct) {\n    if (direct) {\n        vm._directInactive = true;\n        if (isInInactiveTree(vm)) {\n            return;\n        }\n    }\n    if (!vm._inactive) {\n        vm._inactive = true;\n        for (var i = 0; i < vm.$children.length; i++) {\n            deactivateChildComponent(vm.$children[i]);\n        }\n        callHook$1(vm, 'deactivated');\n    }\n}\nfunction callHook$1(vm, hook, args, setContext) {\n    if (setContext === void 0) { setContext = true; }\n    // #7573 disable dep collection when invoking lifecycle hooks\n    pushTarget();\n    var prevInst = currentInstance;\n    var prevScope = getCurrentScope();\n    setContext && setCurrentInstance(vm);\n    var handlers = vm.$options[hook];\n    var info = \"\".concat(hook, \" hook\");\n    if (handlers) {\n        for (var i = 0, j = handlers.length; i < j; i++) {\n            invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);\n        }\n    }\n    if (vm._hasHookEvent) {\n        vm.$emit('hook:' + hook);\n    }\n    if (setContext) {\n        setCurrentInstance(prevInst);\n        prevScope && prevScope.on();\n    }\n    popTarget();\n}\n\nvar MAX_UPDATE_COUNT = 100;\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState() {\n    index = queue.length = activatedChildren.length = 0;\n    has = {};\n    if (process.env.NODE_ENV !== 'production') {\n        circular = {};\n    }\n    waiting = flushing = false;\n}\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n    var performance_1 = window.performance;\n    if (performance_1 &&\n        typeof performance_1.now === 'function' &&\n        getNow() > document.createEvent('Event').timeStamp) {\n        // if the event timestamp, although evaluated AFTER the Date.now(), is\n        // smaller than it, it means the event is using a hi-res timestamp,\n        // and we need to use the hi-res version for event listener timestamps as\n        // well.\n        getNow = function () { return performance_1.now(); };\n    }\n}\nvar sortCompareFn = function (a, b) {\n    if (a.post) {\n        if (!b.post)\n            return 1;\n    }\n    else if (b.post) {\n        return -1;\n    }\n    return a.id - b.id;\n};\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue() {\n    currentFlushTimestamp = getNow();\n    flushing = true;\n    var watcher, id;\n    // Sort queue before flush.\n    // This ensures that:\n    // 1. Components are updated from parent to child. (because parent is always\n    //    created before the child)\n    // 2. A component's user watchers are run before its render watcher (because\n    //    user watchers are created before the render watcher)\n    // 3. If a component is destroyed during a parent component's watcher run,\n    //    its watchers can be skipped.\n    queue.sort(sortCompareFn);\n    // do not cache length because more watchers might be pushed\n    // as we run existing watchers\n    for (index = 0; index < queue.length; index++) {\n        watcher = queue[index];\n        if (watcher.before) {\n            watcher.before();\n        }\n        id = watcher.id;\n        has[id] = null;\n        watcher.run();\n        // in dev build, check and stop circular updates.\n        if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n            circular[id] = (circular[id] || 0) + 1;\n            if (circular[id] > MAX_UPDATE_COUNT) {\n                warn('You may have an infinite update loop ' +\n                    (watcher.user\n                        ? \"in watcher with expression \\\"\".concat(watcher.expression, \"\\\"\")\n                        : \"in a component render function.\"), watcher.vm);\n                break;\n            }\n        }\n    }\n    // keep copies of post queues before resetting state\n    var activatedQueue = activatedChildren.slice();\n    var updatedQueue = queue.slice();\n    resetSchedulerState();\n    // call component updated and activated hooks\n    callActivatedHooks(activatedQueue);\n    callUpdatedHooks(updatedQueue);\n    cleanupDeps();\n    // devtool hook\n    /* istanbul ignore if */\n    if (devtools && config.devtools) {\n        devtools.emit('flush');\n    }\n}\nfunction callUpdatedHooks(queue) {\n    var i = queue.length;\n    while (i--) {\n        var watcher = queue[i];\n        var vm = watcher.vm;\n        if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n            callHook$1(vm, 'updated');\n        }\n    }\n}\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent(vm) {\n    // setting _inactive to false here so that a render function can\n    // rely on checking whether it's in an inactive tree (e.g. router-view)\n    vm._inactive = false;\n    activatedChildren.push(vm);\n}\nfunction callActivatedHooks(queue) {\n    for (var i = 0; i < queue.length; i++) {\n        queue[i]._inactive = true;\n        activateChildComponent(queue[i], true /* true */);\n    }\n}\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher(watcher) {\n    var id = watcher.id;\n    if (has[id] != null) {\n        return;\n    }\n    if (watcher === Dep.target && watcher.noRecurse) {\n        return;\n    }\n    has[id] = true;\n    if (!flushing) {\n        queue.push(watcher);\n    }\n    else {\n        // if already flushing, splice the watcher based on its id\n        // if already past its id, it will be run next immediately.\n        var i = queue.length - 1;\n        while (i > index && queue[i].id > watcher.id) {\n            i--;\n        }\n        queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n        waiting = true;\n        if (process.env.NODE_ENV !== 'production' && !config.async) {\n            flushSchedulerQueue();\n            return;\n        }\n        nextTick(flushSchedulerQueue);\n    }\n}\n\nfunction initProvide(vm) {\n    var provideOption = vm.$options.provide;\n    if (provideOption) {\n        var provided = isFunction(provideOption)\n            ? provideOption.call(vm)\n            : provideOption;\n        if (!isObject(provided)) {\n            return;\n        }\n        var source = resolveProvided(vm);\n        // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to\n        // iterate the keys ourselves.\n        var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided);\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key));\n        }\n    }\n}\nfunction initInjections(vm) {\n    var result = resolveInject(vm.$options.inject, vm);\n    if (result) {\n        toggleObserving(false);\n        Object.keys(result).forEach(function (key) {\n            /* istanbul ignore else */\n            if (process.env.NODE_ENV !== 'production') {\n                defineReactive(vm, key, result[key], function () {\n                    warn(\"Avoid mutating an injected value directly since the changes will be \" +\n                        \"overwritten whenever the provided component re-renders. \" +\n                        \"injection being mutated: \\\"\".concat(key, \"\\\"\"), vm);\n                });\n            }\n            else {\n                defineReactive(vm, key, result[key]);\n            }\n        });\n        toggleObserving(true);\n    }\n}\nfunction resolveInject(inject, vm) {\n    if (inject) {\n        // inject is :any because flow is not smart enough to figure out cached\n        var result = Object.create(null);\n        var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            // #6574 in case the inject object is observed...\n            if (key === '__ob__')\n                continue;\n            var provideKey = inject[key].from;\n            if (provideKey in vm._provided) {\n                result[key] = vm._provided[provideKey];\n            }\n            else if ('default' in inject[key]) {\n                var provideDefault = inject[key].default;\n                result[key] = isFunction(provideDefault)\n                    ? provideDefault.call(vm)\n                    : provideDefault;\n            }\n            else if (process.env.NODE_ENV !== 'production') {\n                warn(\"Injection \\\"\".concat(key, \"\\\" not found\"), vm);\n            }\n        }\n        return result;\n    }\n}\n\nfunction FunctionalRenderContext(data, props, children, parent, Ctor) {\n    var _this = this;\n    var options = Ctor.options;\n    // ensure the createElement function in functional components\n    // gets a unique context - this is necessary for correct named slot check\n    var contextVm;\n    if (hasOwn(parent, '_uid')) {\n        contextVm = Object.create(parent);\n        contextVm._original = parent;\n    }\n    else {\n        // the context vm passed in is a functional context as well.\n        // in this case we want to make sure we are able to get a hold to the\n        // real context instance.\n        contextVm = parent;\n        // @ts-ignore\n        parent = parent._original;\n    }\n    var isCompiled = isTrue(options._compiled);\n    var needNormalization = !isCompiled;\n    this.data = data;\n    this.props = props;\n    this.children = children;\n    this.parent = parent;\n    this.listeners = data.on || emptyObject;\n    this.injections = resolveInject(options.inject, parent);\n    this.slots = function () {\n        if (!_this.$slots) {\n            normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));\n        }\n        return _this.$slots;\n    };\n    Object.defineProperty(this, 'scopedSlots', {\n        enumerable: true,\n        get: function () {\n            return normalizeScopedSlots(parent, data.scopedSlots, this.slots());\n        }\n    });\n    // support for compiled functional template\n    if (isCompiled) {\n        // exposing $options for renderStatic()\n        this.$options = options;\n        // pre-resolve slots for renderSlot()\n        this.$slots = this.slots();\n        this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);\n    }\n    if (options._scopeId) {\n        this._c = function (a, b, c, d) {\n            var vnode = createElement$1(contextVm, a, b, c, d, needNormalization);\n            if (vnode && !isArray(vnode)) {\n                vnode.fnScopeId = options._scopeId;\n                vnode.fnContext = parent;\n            }\n            return vnode;\n        };\n    }\n    else {\n        this._c = function (a, b, c, d) {\n            return createElement$1(contextVm, a, b, c, d, needNormalization);\n        };\n    }\n}\ninstallRenderHelpers(FunctionalRenderContext.prototype);\nfunction createFunctionalComponent(Ctor, propsData, data, contextVm, children) {\n    var options = Ctor.options;\n    var props = {};\n    var propOptions = options.props;\n    if (isDef(propOptions)) {\n        for (var key in propOptions) {\n            props[key] = validateProp(key, propOptions, propsData || emptyObject);\n        }\n    }\n    else {\n        if (isDef(data.attrs))\n            mergeProps(props, data.attrs);\n        if (isDef(data.props))\n            mergeProps(props, data.props);\n    }\n    var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);\n    var vnode = options.render.call(null, renderContext._c, renderContext);\n    if (vnode instanceof VNode) {\n        return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);\n    }\n    else if (isArray(vnode)) {\n        var vnodes = normalizeChildren(vnode) || [];\n        var res = new Array(vnodes.length);\n        for (var i = 0; i < vnodes.length; i++) {\n            res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n        }\n        return res;\n    }\n}\nfunction cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {\n    // #7817 clone node before setting fnContext, otherwise if the node is reused\n    // (e.g. it was from a cached normal slot) the fnContext causes named slots\n    // that should not be matched to match.\n    var clone = cloneVNode(vnode);\n    clone.fnContext = contextVm;\n    clone.fnOptions = options;\n    if (process.env.NODE_ENV !== 'production') {\n        (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext =\n            renderContext;\n    }\n    if (data.slot) {\n        (clone.data || (clone.data = {})).slot = data.slot;\n    }\n    return clone;\n}\nfunction mergeProps(to, from) {\n    for (var key in from) {\n        to[camelize(key)] = from[key];\n    }\n}\n\nfunction getComponentName(options) {\n    return options.name || options.__name || options._componentTag;\n}\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n    init: function (vnode, hydrating) {\n        if (vnode.componentInstance &&\n            !vnode.componentInstance._isDestroyed &&\n            vnode.data.keepAlive) {\n            // kept-alive components, treat as a patch\n            var mountedNode = vnode; // work around flow\n            componentVNodeHooks.prepatch(mountedNode, mountedNode);\n        }\n        else {\n            var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));\n            child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n        }\n    },\n    prepatch: function (oldVnode, vnode) {\n        var options = vnode.componentOptions;\n        var child = (vnode.componentInstance = oldVnode.componentInstance);\n        updateChildComponent(child, options.propsData, // updated props\n        options.listeners, // updated listeners\n        vnode, // new parent vnode\n        options.children // new children\n        );\n    },\n    insert: function (vnode) {\n        var context = vnode.context, componentInstance = vnode.componentInstance;\n        if (!componentInstance._isMounted) {\n            componentInstance._isMounted = true;\n            callHook$1(componentInstance, 'mounted');\n        }\n        if (vnode.data.keepAlive) {\n            if (context._isMounted) {\n                // vue-router#1212\n                // During updates, a kept-alive component's child components may\n                // change, so directly walking the tree here may call activated hooks\n                // on incorrect children. Instead we push them into a queue which will\n                // be processed after the whole patch process ended.\n                queueActivatedComponent(componentInstance);\n            }\n            else {\n                activateChildComponent(componentInstance, true /* direct */);\n            }\n        }\n    },\n    destroy: function (vnode) {\n        var componentInstance = vnode.componentInstance;\n        if (!componentInstance._isDestroyed) {\n            if (!vnode.data.keepAlive) {\n                componentInstance.$destroy();\n            }\n            else {\n                deactivateChildComponent(componentInstance, true /* direct */);\n            }\n        }\n    }\n};\nvar hooksToMerge = Object.keys(componentVNodeHooks);\nfunction createComponent(Ctor, data, context, children, tag) {\n    if (isUndef(Ctor)) {\n        return;\n    }\n    var baseCtor = context.$options._base;\n    // plain options object: turn it into a constructor\n    if (isObject(Ctor)) {\n        Ctor = baseCtor.extend(Ctor);\n    }\n    // if at this stage it's not a constructor or an async component factory,\n    // reject.\n    if (typeof Ctor !== 'function') {\n        if (process.env.NODE_ENV !== 'production') {\n            warn(\"Invalid Component definition: \".concat(String(Ctor)), context);\n        }\n        return;\n    }\n    // async component\n    var asyncFactory;\n    // @ts-expect-error\n    if (isUndef(Ctor.cid)) {\n        asyncFactory = Ctor;\n        Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n        if (Ctor === undefined) {\n            // return a placeholder node for async component, which is rendered\n            // as a comment node but preserves all the raw information for the node.\n            // the information will be used for async server-rendering and hydration.\n            return createAsyncPlaceholder(asyncFactory, data, context, children, tag);\n        }\n    }\n    data = data || {};\n    // resolve constructor options in case global mixins are applied after\n    // component constructor creation\n    resolveConstructorOptions(Ctor);\n    // transform component v-model data into props & events\n    if (isDef(data.model)) {\n        // @ts-expect-error\n        transformModel(Ctor.options, data);\n    }\n    // extract props\n    // @ts-expect-error\n    var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n    // functional component\n    // @ts-expect-error\n    if (isTrue(Ctor.options.functional)) {\n        return createFunctionalComponent(Ctor, propsData, data, context, children);\n    }\n    // extract listeners, since these needs to be treated as\n    // child component listeners instead of DOM listeners\n    var listeners = data.on;\n    // replace with listeners with .native modifier\n    // so it gets processed during parent component patch.\n    data.on = data.nativeOn;\n    // @ts-expect-error\n    if (isTrue(Ctor.options.abstract)) {\n        // abstract components do not keep anything\n        // other than props & listeners & slot\n        // work around flow\n        var slot = data.slot;\n        data = {};\n        if (slot) {\n            data.slot = slot;\n        }\n    }\n    // install component management hooks onto the placeholder node\n    installComponentHooks(data);\n    // return a placeholder vnode\n    // @ts-expect-error\n    var name = getComponentName(Ctor.options) || tag;\n    var vnode = new VNode(\n    // @ts-expect-error\n    \"vue-component-\".concat(Ctor.cid).concat(name ? \"-\".concat(name) : ''), data, undefined, undefined, undefined, context, \n    // @ts-expect-error\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);\n    return vnode;\n}\nfunction createComponentInstanceForVnode(\n// we know it's MountedComponentVNode but flow doesn't\nvnode, \n// activeInstance in lifecycle state\nparent) {\n    var options = {\n        _isComponent: true,\n        _parentVnode: vnode,\n        parent: parent\n    };\n    // check inline-template render functions\n    var inlineTemplate = vnode.data.inlineTemplate;\n    if (isDef(inlineTemplate)) {\n        options.render = inlineTemplate.render;\n        options.staticRenderFns = inlineTemplate.staticRenderFns;\n    }\n    return new vnode.componentOptions.Ctor(options);\n}\nfunction installComponentHooks(data) {\n    var hooks = data.hook || (data.hook = {});\n    for (var i = 0; i < hooksToMerge.length; i++) {\n        var key = hooksToMerge[i];\n        var existing = hooks[key];\n        var toMerge = componentVNodeHooks[key];\n        // @ts-expect-error\n        if (existing !== toMerge && !(existing && existing._merged)) {\n            hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;\n        }\n    }\n}\nfunction mergeHook(f1, f2) {\n    var merged = function (a, b) {\n        // flow complains about extra args which is why we use any\n        f1(a, b);\n        f2(a, b);\n    };\n    merged._merged = true;\n    return merged;\n}\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel(options, data) {\n    var prop = (options.model && options.model.prop) || 'value';\n    var event = (options.model && options.model.event) || 'input';\n    (data.attrs || (data.attrs = {}))[prop] = data.model.value;\n    var on = data.on || (data.on = {});\n    var existing = on[event];\n    var callback = data.model.callback;\n    if (isDef(existing)) {\n        if (isArray(existing)\n            ? existing.indexOf(callback) === -1\n            : existing !== callback) {\n            on[event] = [callback].concat(existing);\n        }\n    }\n    else {\n        on[event] = callback;\n    }\n}\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace; // work around flow check\nvar formatComponentName;\nif (process.env.NODE_ENV !== 'production') {\n    var hasConsole_1 = typeof console !== 'undefined';\n    var classifyRE_1 = /(?:^|[-_])(\\w)/g;\n    var classify_1 = function (str) {\n        return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');\n    };\n    warn = function (msg, vm) {\n        if (vm === void 0) { vm = currentInstance; }\n        var trace = vm ? generateComponentTrace(vm) : '';\n        if (config.warnHandler) {\n            config.warnHandler.call(null, msg, vm, trace);\n        }\n        else if (hasConsole_1 && !config.silent) {\n            console.error(\"[Vue warn]: \".concat(msg).concat(trace));\n        }\n    };\n    tip = function (msg, vm) {\n        if (hasConsole_1 && !config.silent) {\n            console.warn(\"[Vue tip]: \".concat(msg) + (vm ? generateComponentTrace(vm) : ''));\n        }\n    };\n    formatComponentName = function (vm, includeFile) {\n        if (vm.$root === vm) {\n            return '<Root>';\n        }\n        var options = isFunction(vm) && vm.cid != null\n            ? vm.options\n            : vm._isVue\n                ? vm.$options || vm.constructor.options\n                : vm;\n        var name = getComponentName(options);\n        var file = options.__file;\n        if (!name && file) {\n            var match = file.match(/([^/\\\\]+)\\.vue$/);\n            name = match && match[1];\n        }\n        return ((name ? \"<\".concat(classify_1(name), \">\") : \"<Anonymous>\") +\n            (file && includeFile !== false ? \" at \".concat(file) : ''));\n    };\n    var repeat_1 = function (str, n) {\n        var res = '';\n        while (n) {\n            if (n % 2 === 1)\n                res += str;\n            if (n > 1)\n                str += str;\n            n >>= 1;\n        }\n        return res;\n    };\n    generateComponentTrace = function (vm) {\n        if (vm._isVue && vm.$parent) {\n            var tree = [];\n            var currentRecursiveSequence = 0;\n            while (vm) {\n                if (tree.length > 0) {\n                    var last = tree[tree.length - 1];\n                    if (last.constructor === vm.constructor) {\n                        currentRecursiveSequence++;\n                        vm = vm.$parent;\n                        continue;\n                    }\n                    else if (currentRecursiveSequence > 0) {\n                        tree[tree.length - 1] = [last, currentRecursiveSequence];\n                        currentRecursiveSequence = 0;\n                    }\n                }\n                tree.push(vm);\n                vm = vm.$parent;\n            }\n            return ('\\n\\nfound in\\n\\n' +\n                tree\n                    .map(function (vm, i) {\n                    return \"\".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)\n                        ? \"\".concat(formatComponentName(vm[0]), \"... (\").concat(vm[1], \" recursive calls)\")\n                        : formatComponentName(vm));\n                })\n                    .join('\\n'));\n        }\n        else {\n            return \"\\n\\n(found in \".concat(formatComponentName(vm), \")\");\n        }\n    };\n}\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n    strats.el = strats.propsData = function (parent, child, vm, key) {\n        if (!vm) {\n            warn(\"option \\\"\".concat(key, \"\\\" can only be used during instance \") +\n                'creation with the `new` keyword.');\n        }\n        return defaultStrat(parent, child);\n    };\n}\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData(to, from, recursive) {\n    if (recursive === void 0) { recursive = true; }\n    if (!from)\n        return to;\n    var key, toVal, fromVal;\n    var keys = hasSymbol\n        ? Reflect.ownKeys(from)\n        : Object.keys(from);\n    for (var i = 0; i < keys.length; i++) {\n        key = keys[i];\n        // in case the object is already observed...\n        if (key === '__ob__')\n            continue;\n        toVal = to[key];\n        fromVal = from[key];\n        if (!recursive || !hasOwn(to, key)) {\n            set(to, key, fromVal);\n        }\n        else if (toVal !== fromVal &&\n            isPlainObject(toVal) &&\n            isPlainObject(fromVal)) {\n            mergeData(toVal, fromVal);\n        }\n    }\n    return to;\n}\n/**\n * Data\n */\nfunction mergeDataOrFn(parentVal, childVal, vm) {\n    if (!vm) {\n        // in a Vue.extend merge, both should be functions\n        if (!childVal) {\n            return parentVal;\n        }\n        if (!parentVal) {\n            return childVal;\n        }\n        // when parentVal & childVal are both present,\n        // we need to return a function that returns the\n        // merged result of both functions... no need to\n        // check if parentVal is a function here because\n        // it has to be a function to pass previous merges.\n        return function mergedDataFn() {\n            return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);\n        };\n    }\n    else {\n        return function mergedInstanceDataFn() {\n            // instance merge\n            var instanceData = isFunction(childVal)\n                ? childVal.call(vm, vm)\n                : childVal;\n            var defaultData = isFunction(parentVal)\n                ? parentVal.call(vm, vm)\n                : parentVal;\n            if (instanceData) {\n                return mergeData(instanceData, defaultData);\n            }\n            else {\n                return defaultData;\n            }\n        };\n    }\n}\nstrats.data = function (parentVal, childVal, vm) {\n    if (!vm) {\n        if (childVal && typeof childVal !== 'function') {\n            process.env.NODE_ENV !== 'production' &&\n                warn('The \"data\" option should be a function ' +\n                    'that returns a per-instance value in component ' +\n                    'definitions.', vm);\n            return parentVal;\n        }\n        return mergeDataOrFn(parentVal, childVal);\n    }\n    return mergeDataOrFn(parentVal, childVal, vm);\n};\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeLifecycleHook(parentVal, childVal) {\n    var res = childVal\n        ? parentVal\n            ? parentVal.concat(childVal)\n            : isArray(childVal)\n                ? childVal\n                : [childVal]\n        : parentVal;\n    return res ? dedupeHooks(res) : res;\n}\nfunction dedupeHooks(hooks) {\n    var res = [];\n    for (var i = 0; i < hooks.length; i++) {\n        if (res.indexOf(hooks[i]) === -1) {\n            res.push(hooks[i]);\n        }\n    }\n    return res;\n}\nLIFECYCLE_HOOKS.forEach(function (hook) {\n    strats[hook] = mergeLifecycleHook;\n});\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets(parentVal, childVal, vm, key) {\n    var res = Object.create(parentVal || null);\n    if (childVal) {\n        process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n        return extend(res, childVal);\n    }\n    else {\n        return res;\n    }\n}\nASSET_TYPES.forEach(function (type) {\n    strats[type + 's'] = mergeAssets;\n});\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (parentVal, childVal, vm, key) {\n    // work around Firefox's Object.prototype.watch...\n    //@ts-expect-error work around\n    if (parentVal === nativeWatch)\n        parentVal = undefined;\n    //@ts-expect-error work around\n    if (childVal === nativeWatch)\n        childVal = undefined;\n    /* istanbul ignore if */\n    if (!childVal)\n        return Object.create(parentVal || null);\n    if (process.env.NODE_ENV !== 'production') {\n        assertObjectType(key, childVal, vm);\n    }\n    if (!parentVal)\n        return childVal;\n    var ret = {};\n    extend(ret, parentVal);\n    for (var key_1 in childVal) {\n        var parent_1 = ret[key_1];\n        var child = childVal[key_1];\n        if (parent_1 && !isArray(parent_1)) {\n            parent_1 = [parent_1];\n        }\n        ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];\n    }\n    return ret;\n};\n/**\n * Other object hashes.\n */\nstrats.props =\n    strats.methods =\n        strats.inject =\n            strats.computed =\n                function (parentVal, childVal, vm, key) {\n                    if (childVal && process.env.NODE_ENV !== 'production') {\n                        assertObjectType(key, childVal, vm);\n                    }\n                    if (!parentVal)\n                        return childVal;\n                    var ret = Object.create(null);\n                    extend(ret, parentVal);\n                    if (childVal)\n                        extend(ret, childVal);\n                    return ret;\n                };\nstrats.provide = function (parentVal, childVal) {\n    if (!parentVal)\n        return childVal;\n    return function () {\n        var ret = Object.create(null);\n        mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal);\n        if (childVal) {\n            mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive\n            );\n        }\n        return ret;\n    };\n};\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n    return childVal === undefined ? parentVal : childVal;\n};\n/**\n * Validate component names\n */\nfunction checkComponents(options) {\n    for (var key in options.components) {\n        validateComponentName(key);\n    }\n}\nfunction validateComponentName(name) {\n    if (!new RegExp(\"^[a-zA-Z][\\\\-\\\\.0-9_\".concat(unicodeRegExp.source, \"]*$\")).test(name)) {\n        warn('Invalid component name: \"' +\n            name +\n            '\". Component names ' +\n            'should conform to valid custom element name in html5 specification.');\n    }\n    if (isBuiltInTag(name) || config.isReservedTag(name)) {\n        warn('Do not use built-in or reserved HTML elements as component ' +\n            'id: ' +\n            name);\n    }\n}\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps(options, vm) {\n    var props = options.props;\n    if (!props)\n        return;\n    var res = {};\n    var i, val, name;\n    if (isArray(props)) {\n        i = props.length;\n        while (i--) {\n            val = props[i];\n            if (typeof val === 'string') {\n                name = camelize(val);\n                res[name] = { type: null };\n            }\n            else if (process.env.NODE_ENV !== 'production') {\n                warn('props must be strings when using array syntax.');\n            }\n        }\n    }\n    else if (isPlainObject(props)) {\n        for (var key in props) {\n            val = props[key];\n            name = camelize(key);\n            res[name] = isPlainObject(val) ? val : { type: val };\n        }\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn(\"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n            \"but got \".concat(toRawType(props), \".\"), vm);\n    }\n    options.props = res;\n}\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject(options, vm) {\n    var inject = options.inject;\n    if (!inject)\n        return;\n    var normalized = (options.inject = {});\n    if (isArray(inject)) {\n        for (var i = 0; i < inject.length; i++) {\n            normalized[inject[i]] = { from: inject[i] };\n        }\n    }\n    else if (isPlainObject(inject)) {\n        for (var key in inject) {\n            var val = inject[key];\n            normalized[key] = isPlainObject(val)\n                ? extend({ from: key }, val)\n                : { from: val };\n        }\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn(\"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n            \"but got \".concat(toRawType(inject), \".\"), vm);\n    }\n}\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives$1(options) {\n    var dirs = options.directives;\n    if (dirs) {\n        for (var key in dirs) {\n            var def = dirs[key];\n            if (isFunction(def)) {\n                dirs[key] = { bind: def, update: def };\n            }\n        }\n    }\n}\nfunction assertObjectType(name, value, vm) {\n    if (!isPlainObject(value)) {\n        warn(\"Invalid value for option \\\"\".concat(name, \"\\\": expected an Object, \") +\n            \"but got \".concat(toRawType(value), \".\"), vm);\n    }\n}\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions(parent, child, vm) {\n    if (process.env.NODE_ENV !== 'production') {\n        checkComponents(child);\n    }\n    if (isFunction(child)) {\n        // @ts-expect-error\n        child = child.options;\n    }\n    normalizeProps(child, vm);\n    normalizeInject(child, vm);\n    normalizeDirectives$1(child);\n    // Apply extends and mixins on the child options,\n    // but only if it is a raw options object that isn't\n    // the result of another mergeOptions call.\n    // Only merged options has the _base property.\n    if (!child._base) {\n        if (child.extends) {\n            parent = mergeOptions(parent, child.extends, vm);\n        }\n        if (child.mixins) {\n            for (var i = 0, l = child.mixins.length; i < l; i++) {\n                parent = mergeOptions(parent, child.mixins[i], vm);\n            }\n        }\n    }\n    var options = {};\n    var key;\n    for (key in parent) {\n        mergeField(key);\n    }\n    for (key in child) {\n        if (!hasOwn(parent, key)) {\n            mergeField(key);\n        }\n    }\n    function mergeField(key) {\n        var strat = strats[key] || defaultStrat;\n        options[key] = strat(parent[key], child[key], vm, key);\n    }\n    return options;\n}\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset(options, type, id, warnMissing) {\n    /* istanbul ignore if */\n    if (typeof id !== 'string') {\n        return;\n    }\n    var assets = options[type];\n    // check local registration variations first\n    if (hasOwn(assets, id))\n        return assets[id];\n    var camelizedId = camelize(id);\n    if (hasOwn(assets, camelizedId))\n        return assets[camelizedId];\n    var PascalCaseId = capitalize(camelizedId);\n    if (hasOwn(assets, PascalCaseId))\n        return assets[PascalCaseId];\n    // fallback to prototype chain\n    var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n    if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n        warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id);\n    }\n    return res;\n}\n\nfunction validateProp(key, propOptions, propsData, vm) {\n    var prop = propOptions[key];\n    var absent = !hasOwn(propsData, key);\n    var value = propsData[key];\n    // boolean casting\n    var booleanIndex = getTypeIndex(Boolean, prop.type);\n    if (booleanIndex > -1) {\n        if (absent && !hasOwn(prop, 'default')) {\n            value = false;\n        }\n        else if (value === '' || value === hyphenate(key)) {\n            // only cast empty string / same name to boolean if\n            // boolean has higher priority\n            var stringIndex = getTypeIndex(String, prop.type);\n            if (stringIndex < 0 || booleanIndex < stringIndex) {\n                value = true;\n            }\n        }\n    }\n    // check default value\n    if (value === undefined) {\n        value = getPropDefaultValue(vm, prop, key);\n        // since the default value is a fresh copy,\n        // make sure to observe it.\n        var prevShouldObserve = shouldObserve;\n        toggleObserving(true);\n        observe(value);\n        toggleObserving(prevShouldObserve);\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        assertProp(prop, key, value, vm, absent);\n    }\n    return value;\n}\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue(vm, prop, key) {\n    // no default, return undefined\n    if (!hasOwn(prop, 'default')) {\n        return undefined;\n    }\n    var def = prop.default;\n    // warn against non-factory defaults for Object & Array\n    if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n        warn('Invalid default value for prop \"' +\n            key +\n            '\": ' +\n            'Props with type Object/Array must use a factory function ' +\n            'to return the default value.', vm);\n    }\n    // the raw prop value was also undefined from previous render,\n    // return previous default value to avoid unnecessary watcher trigger\n    if (vm &&\n        vm.$options.propsData &&\n        vm.$options.propsData[key] === undefined &&\n        vm._props[key] !== undefined) {\n        return vm._props[key];\n    }\n    // call factory function for non-Function types\n    // a value is Function if its prototype is function even across different execution context\n    return isFunction(def) && getType(prop.type) !== 'Function'\n        ? def.call(vm)\n        : def;\n}\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp(prop, name, value, vm, absent) {\n    if (prop.required && absent) {\n        warn('Missing required prop: \"' + name + '\"', vm);\n        return;\n    }\n    if (value == null && !prop.required) {\n        return;\n    }\n    var type = prop.type;\n    var valid = !type || type === true;\n    var expectedTypes = [];\n    if (type) {\n        if (!isArray(type)) {\n            type = [type];\n        }\n        for (var i = 0; i < type.length && !valid; i++) {\n            var assertedType = assertType(value, type[i], vm);\n            expectedTypes.push(assertedType.expectedType || '');\n            valid = assertedType.valid;\n        }\n    }\n    var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\n    if (!valid && haveExpectedTypes) {\n        warn(getInvalidTypeMessage(name, value, expectedTypes), vm);\n        return;\n    }\n    var validator = prop.validator;\n    if (validator) {\n        if (!validator(value)) {\n            warn('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\n        }\n    }\n}\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\nfunction assertType(value, type, vm) {\n    var valid;\n    var expectedType = getType(type);\n    if (simpleCheckRE.test(expectedType)) {\n        var t = typeof value;\n        valid = t === expectedType.toLowerCase();\n        // for primitive wrapper objects\n        if (!valid && t === 'object') {\n            valid = value instanceof type;\n        }\n    }\n    else if (expectedType === 'Object') {\n        valid = isPlainObject(value);\n    }\n    else if (expectedType === 'Array') {\n        valid = isArray(value);\n    }\n    else {\n        try {\n            valid = value instanceof type;\n        }\n        catch (e) {\n            warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n            valid = false;\n        }\n    }\n    return {\n        valid: valid,\n        expectedType: expectedType\n    };\n}\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType(fn) {\n    var match = fn && fn.toString().match(functionTypeCheckRE);\n    return match ? match[1] : '';\n}\nfunction isSameType(a, b) {\n    return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n    if (!isArray(expectedTypes)) {\n        return isSameType(expectedTypes, type) ? 0 : -1;\n    }\n    for (var i = 0, len = expectedTypes.length; i < len; i++) {\n        if (isSameType(expectedTypes[i], type)) {\n            return i;\n        }\n    }\n    return -1;\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n    var message = \"Invalid prop: type check failed for prop \\\"\".concat(name, \"\\\".\") +\n        \" Expected \".concat(expectedTypes.map(capitalize).join(', '));\n    var expectedType = expectedTypes[0];\n    var receivedType = toRawType(value);\n    // check if we need to specify expected value\n    if (expectedTypes.length === 1 &&\n        isExplicable(expectedType) &&\n        isExplicable(typeof value) &&\n        !isBoolean(expectedType, receivedType)) {\n        message += \" with value \".concat(styleValue(value, expectedType));\n    }\n    message += \", got \".concat(receivedType, \" \");\n    // check if we need to specify received value\n    if (isExplicable(receivedType)) {\n        message += \"with value \".concat(styleValue(value, receivedType), \".\");\n    }\n    return message;\n}\nfunction styleValue(value, type) {\n    if (type === 'String') {\n        return \"\\\"\".concat(value, \"\\\"\");\n    }\n    else if (type === 'Number') {\n        return \"\".concat(Number(value));\n    }\n    else {\n        return \"\".concat(value);\n    }\n}\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\nfunction isExplicable(value) {\n    return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });\n}\nfunction isBoolean() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\nvar initProxy;\nif (process.env.NODE_ENV !== 'production') {\n    var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +\n        'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n        'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\n        'require' // for Webpack/Browserify\n    );\n    var warnNonPresent_1 = function (target, key) {\n        warn(\"Property or method \\\"\".concat(key, \"\\\" is not defined on the instance but \") +\n            'referenced during render. Make sure that this property is reactive, ' +\n            'either in the data option, or for class-based components, by ' +\n            'initializing the property. ' +\n            'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);\n    };\n    var warnReservedPrefix_1 = function (target, key) {\n        warn(\"Property \\\"\".concat(key, \"\\\" must be accessed with \\\"$data.\").concat(key, \"\\\" because \") +\n            'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n            'prevent conflicts with Vue internals. ' +\n            'See: https://v2.vuejs.org/v2/api/#data', target);\n    };\n    var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);\n    if (hasProxy_1) {\n        var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n        config.keyCodes = new Proxy(config.keyCodes, {\n            set: function (target, key, value) {\n                if (isBuiltInModifier_1(key)) {\n                    warn(\"Avoid overwriting built-in modifier in config.keyCodes: .\".concat(key));\n                    return false;\n                }\n                else {\n                    target[key] = value;\n                    return true;\n                }\n            }\n        });\n    }\n    var hasHandler_1 = {\n        has: function (target, key) {\n            var has = key in target;\n            var isAllowed = allowedGlobals_1(key) ||\n                (typeof key === 'string' &&\n                    key.charAt(0) === '_' &&\n                    !(key in target.$data));\n            if (!has && !isAllowed) {\n                if (key in target.$data)\n                    warnReservedPrefix_1(target, key);\n                else\n                    warnNonPresent_1(target, key);\n            }\n            return has || !isAllowed;\n        }\n    };\n    var getHandler_1 = {\n        get: function (target, key) {\n            if (typeof key === 'string' && !(key in target)) {\n                if (key in target.$data)\n                    warnReservedPrefix_1(target, key);\n                else\n                    warnNonPresent_1(target, key);\n            }\n            return target[key];\n        }\n    };\n    initProxy = function initProxy(vm) {\n        if (hasProxy_1) {\n            // determine which proxy handler to use\n            var options = vm.$options;\n            var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1;\n            vm._renderProxy = new Proxy(vm, handlers);\n        }\n        else {\n            vm._renderProxy = vm;\n        }\n    };\n}\n\nvar sharedPropertyDefinition = {\n    enumerable: true,\n    configurable: true,\n    get: noop,\n    set: noop\n};\nfunction proxy(target, sourceKey, key) {\n    sharedPropertyDefinition.get = function proxyGetter() {\n        return this[sourceKey][key];\n    };\n    sharedPropertyDefinition.set = function proxySetter(val) {\n        this[sourceKey][key] = val;\n    };\n    Object.defineProperty(target, key, sharedPropertyDefinition);\n}\nfunction initState(vm) {\n    var opts = vm.$options;\n    if (opts.props)\n        initProps$1(vm, opts.props);\n    // Composition API\n    initSetup(vm);\n    if (opts.methods)\n        initMethods(vm, opts.methods);\n    if (opts.data) {\n        initData(vm);\n    }\n    else {\n        var ob = observe((vm._data = {}));\n        ob && ob.vmCount++;\n    }\n    if (opts.computed)\n        initComputed$1(vm, opts.computed);\n    if (opts.watch && opts.watch !== nativeWatch) {\n        initWatch(vm, opts.watch);\n    }\n}\nfunction initProps$1(vm, propsOptions) {\n    var propsData = vm.$options.propsData || {};\n    var props = (vm._props = shallowReactive({}));\n    // cache prop keys so that future props updates can iterate using Array\n    // instead of dynamic object key enumeration.\n    var keys = (vm.$options._propKeys = []);\n    var isRoot = !vm.$parent;\n    // root instance props should be converted\n    if (!isRoot) {\n        toggleObserving(false);\n    }\n    var _loop_1 = function (key) {\n        keys.push(key);\n        var value = validateProp(key, propsOptions, propsData, vm);\n        /* istanbul ignore else */\n        if (process.env.NODE_ENV !== 'production') {\n            var hyphenatedKey = hyphenate(key);\n            if (isReservedAttribute(hyphenatedKey) ||\n                config.isReservedAttr(hyphenatedKey)) {\n                warn(\"\\\"\".concat(hyphenatedKey, \"\\\" is a reserved attribute and cannot be used as component prop.\"), vm);\n            }\n            defineReactive(props, key, value, function () {\n                if (!isRoot && !isUpdatingChildComponent) {\n                    warn(\"Avoid mutating a prop directly since the value will be \" +\n                        \"overwritten whenever the parent component re-renders. \" +\n                        \"Instead, use a data or computed property based on the prop's \" +\n                        \"value. Prop being mutated: \\\"\".concat(key, \"\\\"\"), vm);\n                }\n            }, true /* shallow */);\n        }\n        else {\n            defineReactive(props, key, value, undefined, true /* shallow */);\n        }\n        // static props are already proxied on the component's prototype\n        // during Vue.extend(). We only need to proxy props defined at\n        // instantiation here.\n        if (!(key in vm)) {\n            proxy(vm, \"_props\", key);\n        }\n    };\n    for (var key in propsOptions) {\n        _loop_1(key);\n    }\n    toggleObserving(true);\n}\nfunction initData(vm) {\n    var data = vm.$options.data;\n    data = vm._data = isFunction(data) ? getData(data, vm) : data || {};\n    if (!isPlainObject(data)) {\n        data = {};\n        process.env.NODE_ENV !== 'production' &&\n            warn('data functions should return an object:\\n' +\n                'https://v2.vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);\n    }\n    // proxy data on instance\n    var keys = Object.keys(data);\n    var props = vm.$options.props;\n    var methods = vm.$options.methods;\n    var i = keys.length;\n    while (i--) {\n        var key = keys[i];\n        if (process.env.NODE_ENV !== 'production') {\n            if (methods && hasOwn(methods, key)) {\n                warn(\"Method \\\"\".concat(key, \"\\\" has already been defined as a data property.\"), vm);\n            }\n        }\n        if (props && hasOwn(props, key)) {\n            process.env.NODE_ENV !== 'production' &&\n                warn(\"The data property \\\"\".concat(key, \"\\\" is already declared as a prop. \") +\n                    \"Use prop default value instead.\", vm);\n        }\n        else if (!isReserved(key)) {\n            proxy(vm, \"_data\", key);\n        }\n    }\n    // observe data\n    var ob = observe(data);\n    ob && ob.vmCount++;\n}\nfunction getData(data, vm) {\n    // #7573 disable dep collection when invoking data getters\n    pushTarget();\n    try {\n        return data.call(vm, vm);\n    }\n    catch (e) {\n        handleError(e, vm, \"data()\");\n        return {};\n    }\n    finally {\n        popTarget();\n    }\n}\nvar computedWatcherOptions = { lazy: true };\nfunction initComputed$1(vm, computed) {\n    // $flow-disable-line\n    var watchers = (vm._computedWatchers = Object.create(null));\n    // computed properties are just getters during SSR\n    var isSSR = isServerRendering();\n    for (var key in computed) {\n        var userDef = computed[key];\n        var getter = isFunction(userDef) ? userDef : userDef.get;\n        if (process.env.NODE_ENV !== 'production' && getter == null) {\n            warn(\"Getter is missing for computed property \\\"\".concat(key, \"\\\".\"), vm);\n        }\n        if (!isSSR) {\n            // create internal watcher for the computed property.\n            watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);\n        }\n        // component-defined computed properties are already defined on the\n        // component prototype. We only need to define computed properties defined\n        // at instantiation here.\n        if (!(key in vm)) {\n            defineComputed(vm, key, userDef);\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            if (key in vm.$data) {\n                warn(\"The computed property \\\"\".concat(key, \"\\\" is already defined in data.\"), vm);\n            }\n            else if (vm.$options.props && key in vm.$options.props) {\n                warn(\"The computed property \\\"\".concat(key, \"\\\" is already defined as a prop.\"), vm);\n            }\n            else if (vm.$options.methods && key in vm.$options.methods) {\n                warn(\"The computed property \\\"\".concat(key, \"\\\" is already defined as a method.\"), vm);\n            }\n        }\n    }\n}\nfunction defineComputed(target, key, userDef) {\n    var shouldCache = !isServerRendering();\n    if (isFunction(userDef)) {\n        sharedPropertyDefinition.get = shouldCache\n            ? createComputedGetter(key)\n            : createGetterInvoker(userDef);\n        sharedPropertyDefinition.set = noop;\n    }\n    else {\n        sharedPropertyDefinition.get = userDef.get\n            ? shouldCache && userDef.cache !== false\n                ? createComputedGetter(key)\n                : createGetterInvoker(userDef.get)\n            : noop;\n        sharedPropertyDefinition.set = userDef.set || noop;\n    }\n    if (process.env.NODE_ENV !== 'production' && sharedPropertyDefinition.set === noop) {\n        sharedPropertyDefinition.set = function () {\n            warn(\"Computed property \\\"\".concat(key, \"\\\" was assigned to but it has no setter.\"), this);\n        };\n    }\n    Object.defineProperty(target, key, sharedPropertyDefinition);\n}\nfunction createComputedGetter(key) {\n    return function computedGetter() {\n        var watcher = this._computedWatchers && this._computedWatchers[key];\n        if (watcher) {\n            if (watcher.dirty) {\n                watcher.evaluate();\n            }\n            if (Dep.target) {\n                if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n                    Dep.target.onTrack({\n                        effect: Dep.target,\n                        target: this,\n                        type: \"get\" /* TrackOpTypes.GET */,\n                        key: key\n                    });\n                }\n                watcher.depend();\n            }\n            return watcher.value;\n        }\n    };\n}\nfunction createGetterInvoker(fn) {\n    return function computedGetter() {\n        return fn.call(this, this);\n    };\n}\nfunction initMethods(vm, methods) {\n    var props = vm.$options.props;\n    for (var key in methods) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (typeof methods[key] !== 'function') {\n                warn(\"Method \\\"\".concat(key, \"\\\" has type \\\"\").concat(typeof methods[key], \"\\\" in the component definition. \") +\n                    \"Did you reference the function correctly?\", vm);\n            }\n            if (props && hasOwn(props, key)) {\n                warn(\"Method \\\"\".concat(key, \"\\\" has already been defined as a prop.\"), vm);\n            }\n            if (key in vm && isReserved(key)) {\n                warn(\"Method \\\"\".concat(key, \"\\\" conflicts with an existing Vue instance method. \") +\n                    \"Avoid defining component methods that start with _ or $.\");\n            }\n        }\n        vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n    }\n}\nfunction initWatch(vm, watch) {\n    for (var key in watch) {\n        var handler = watch[key];\n        if (isArray(handler)) {\n            for (var i = 0; i < handler.length; i++) {\n                createWatcher(vm, key, handler[i]);\n            }\n        }\n        else {\n            createWatcher(vm, key, handler);\n        }\n    }\n}\nfunction createWatcher(vm, expOrFn, handler, options) {\n    if (isPlainObject(handler)) {\n        options = handler;\n        handler = handler.handler;\n    }\n    if (typeof handler === 'string') {\n        handler = vm[handler];\n    }\n    return vm.$watch(expOrFn, handler, options);\n}\nfunction stateMixin(Vue) {\n    // flow somehow has problems with directly declared definition object\n    // when using Object.defineProperty, so we have to procedurally build up\n    // the object here.\n    var dataDef = {};\n    dataDef.get = function () {\n        return this._data;\n    };\n    var propsDef = {};\n    propsDef.get = function () {\n        return this._props;\n    };\n    if (process.env.NODE_ENV !== 'production') {\n        dataDef.set = function () {\n            warn('Avoid replacing instance root $data. ' +\n                'Use nested data properties instead.', this);\n        };\n        propsDef.set = function () {\n            warn(\"$props is readonly.\", this);\n        };\n    }\n    Object.defineProperty(Vue.prototype, '$data', dataDef);\n    Object.defineProperty(Vue.prototype, '$props', propsDef);\n    Vue.prototype.$set = set;\n    Vue.prototype.$delete = del;\n    Vue.prototype.$watch = function (expOrFn, cb, options) {\n        var vm = this;\n        if (isPlainObject(cb)) {\n            return createWatcher(vm, expOrFn, cb, options);\n        }\n        options = options || {};\n        options.user = true;\n        var watcher = new Watcher(vm, expOrFn, cb, options);\n        if (options.immediate) {\n            var info = \"callback for immediate watcher \\\"\".concat(watcher.expression, \"\\\"\");\n            pushTarget();\n            invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\n            popTarget();\n        }\n        return function unwatchFn() {\n            watcher.teardown();\n        };\n    };\n}\n\nvar uid = 0;\nfunction initMixin$1(Vue) {\n    Vue.prototype._init = function (options) {\n        var vm = this;\n        // a uid\n        vm._uid = uid++;\n        var startTag, endTag;\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n            startTag = \"vue-perf-start:\".concat(vm._uid);\n            endTag = \"vue-perf-end:\".concat(vm._uid);\n            mark(startTag);\n        }\n        // a flag to mark this as a Vue instance without having to do instanceof\n        // check\n        vm._isVue = true;\n        // avoid instances from being observed\n        vm.__v_skip = true;\n        // effect scope\n        vm._scope = new EffectScope(true /* detached */);\n        // #13134 edge case where a child component is manually created during the\n        // render of a parent component\n        vm._scope.parent = undefined;\n        vm._scope._vm = true;\n        // merge options\n        if (options && options._isComponent) {\n            // optimize internal component instantiation\n            // since dynamic options merging is pretty slow, and none of the\n            // internal component options needs special treatment.\n            initInternalComponent(vm, options);\n        }\n        else {\n            vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);\n        }\n        /* istanbul ignore else */\n        if (process.env.NODE_ENV !== 'production') {\n            initProxy(vm);\n        }\n        else {\n            vm._renderProxy = vm;\n        }\n        // expose real self\n        vm._self = vm;\n        initLifecycle(vm);\n        initEvents(vm);\n        initRender(vm);\n        callHook$1(vm, 'beforeCreate', undefined, false /* setContext */);\n        initInjections(vm); // resolve injections before data/props\n        initState(vm);\n        initProvide(vm); // resolve provide after data/props\n        callHook$1(vm, 'created');\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n            vm._name = formatComponentName(vm, false);\n            mark(endTag);\n            measure(\"vue \".concat(vm._name, \" init\"), startTag, endTag);\n        }\n        if (vm.$options.el) {\n            vm.$mount(vm.$options.el);\n        }\n    };\n}\nfunction initInternalComponent(vm, options) {\n    var opts = (vm.$options = Object.create(vm.constructor.options));\n    // doing this because it's faster than dynamic enumeration.\n    var parentVnode = options._parentVnode;\n    opts.parent = options.parent;\n    opts._parentVnode = parentVnode;\n    var vnodeComponentOptions = parentVnode.componentOptions;\n    opts.propsData = vnodeComponentOptions.propsData;\n    opts._parentListeners = vnodeComponentOptions.listeners;\n    opts._renderChildren = vnodeComponentOptions.children;\n    opts._componentTag = vnodeComponentOptions.tag;\n    if (options.render) {\n        opts.render = options.render;\n        opts.staticRenderFns = options.staticRenderFns;\n    }\n}\nfunction resolveConstructorOptions(Ctor) {\n    var options = Ctor.options;\n    if (Ctor.super) {\n        var superOptions = resolveConstructorOptions(Ctor.super);\n        var cachedSuperOptions = Ctor.superOptions;\n        if (superOptions !== cachedSuperOptions) {\n            // super option changed,\n            // need to resolve new options.\n            Ctor.superOptions = superOptions;\n            // check if there are any late-modified/attached options (#4976)\n            var modifiedOptions = resolveModifiedOptions(Ctor);\n            // update base extend options\n            if (modifiedOptions) {\n                extend(Ctor.extendOptions, modifiedOptions);\n            }\n            options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n            if (options.name) {\n                options.components[options.name] = Ctor;\n            }\n        }\n    }\n    return options;\n}\nfunction resolveModifiedOptions(Ctor) {\n    var modified;\n    var latest = Ctor.options;\n    var sealed = Ctor.sealedOptions;\n    for (var key in latest) {\n        if (latest[key] !== sealed[key]) {\n            if (!modified)\n                modified = {};\n            modified[key] = latest[key];\n        }\n    }\n    return modified;\n}\n\nfunction Vue(options) {\n    if (process.env.NODE_ENV !== 'production' && !(this instanceof Vue)) {\n        warn('Vue is a constructor and should be called with the `new` keyword');\n    }\n    this._init(options);\n}\n//@ts-expect-error Vue has function type\ninitMixin$1(Vue);\n//@ts-expect-error Vue has function type\nstateMixin(Vue);\n//@ts-expect-error Vue has function type\neventsMixin(Vue);\n//@ts-expect-error Vue has function type\nlifecycleMixin(Vue);\n//@ts-expect-error Vue has function type\nrenderMixin(Vue);\n\nfunction initUse(Vue) {\n    Vue.use = function (plugin) {\n        var installedPlugins = this._installedPlugins || (this._installedPlugins = []);\n        if (installedPlugins.indexOf(plugin) > -1) {\n            return this;\n        }\n        // additional parameters\n        var args = toArray(arguments, 1);\n        args.unshift(this);\n        if (isFunction(plugin.install)) {\n            plugin.install.apply(plugin, args);\n        }\n        else if (isFunction(plugin)) {\n            plugin.apply(null, args);\n        }\n        installedPlugins.push(plugin);\n        return this;\n    };\n}\n\nfunction initMixin(Vue) {\n    Vue.mixin = function (mixin) {\n        this.options = mergeOptions(this.options, mixin);\n        return this;\n    };\n}\n\nfunction initExtend(Vue) {\n    /**\n     * Each instance constructor, including Vue, has a unique\n     * cid. This enables us to create wrapped \"child\n     * constructors\" for prototypal inheritance and cache them.\n     */\n    Vue.cid = 0;\n    var cid = 1;\n    /**\n     * Class inheritance\n     */\n    Vue.extend = function (extendOptions) {\n        extendOptions = extendOptions || {};\n        var Super = this;\n        var SuperId = Super.cid;\n        var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n        if (cachedCtors[SuperId]) {\n            return cachedCtors[SuperId];\n        }\n        var name = getComponentName(extendOptions) || getComponentName(Super.options);\n        if (process.env.NODE_ENV !== 'production' && name) {\n            validateComponentName(name);\n        }\n        var Sub = function VueComponent(options) {\n            this._init(options);\n        };\n        Sub.prototype = Object.create(Super.prototype);\n        Sub.prototype.constructor = Sub;\n        Sub.cid = cid++;\n        Sub.options = mergeOptions(Super.options, extendOptions);\n        Sub['super'] = Super;\n        // For props and computed properties, we define the proxy getters on\n        // the Vue instances at extension time, on the extended prototype. This\n        // avoids Object.defineProperty calls for each instance created.\n        if (Sub.options.props) {\n            initProps(Sub);\n        }\n        if (Sub.options.computed) {\n            initComputed(Sub);\n        }\n        // allow further extension/mixin/plugin usage\n        Sub.extend = Super.extend;\n        Sub.mixin = Super.mixin;\n        Sub.use = Super.use;\n        // create asset registers, so extended classes\n        // can have their private assets too.\n        ASSET_TYPES.forEach(function (type) {\n            Sub[type] = Super[type];\n        });\n        // enable recursive self-lookup\n        if (name) {\n            Sub.options.components[name] = Sub;\n        }\n        // keep a reference to the super options at extension time.\n        // later at instantiation we can check if Super's options have\n        // been updated.\n        Sub.superOptions = Super.options;\n        Sub.extendOptions = extendOptions;\n        Sub.sealedOptions = extend({}, Sub.options);\n        // cache constructor\n        cachedCtors[SuperId] = Sub;\n        return Sub;\n    };\n}\nfunction initProps(Comp) {\n    var props = Comp.options.props;\n    for (var key in props) {\n        proxy(Comp.prototype, \"_props\", key);\n    }\n}\nfunction initComputed(Comp) {\n    var computed = Comp.options.computed;\n    for (var key in computed) {\n        defineComputed(Comp.prototype, key, computed[key]);\n    }\n}\n\nfunction initAssetRegisters(Vue) {\n    /**\n     * Create asset registration methods.\n     */\n    ASSET_TYPES.forEach(function (type) {\n        // @ts-expect-error function is not exact same type\n        Vue[type] = function (id, definition) {\n            if (!definition) {\n                return this.options[type + 's'][id];\n            }\n            else {\n                /* istanbul ignore if */\n                if (process.env.NODE_ENV !== 'production' && type === 'component') {\n                    validateComponentName(id);\n                }\n                if (type === 'component' && isPlainObject(definition)) {\n                    // @ts-expect-error\n                    definition.name = definition.name || id;\n                    definition = this.options._base.extend(definition);\n                }\n                if (type === 'directive' && isFunction(definition)) {\n                    definition = { bind: definition, update: definition };\n                }\n                this.options[type + 's'][id] = definition;\n                return definition;\n            }\n        };\n    });\n}\n\nfunction _getComponentName(opts) {\n    return opts && (getComponentName(opts.Ctor.options) || opts.tag);\n}\nfunction matches(pattern, name) {\n    if (isArray(pattern)) {\n        return pattern.indexOf(name) > -1;\n    }\n    else if (typeof pattern === 'string') {\n        return pattern.split(',').indexOf(name) > -1;\n    }\n    else if (isRegExp(pattern)) {\n        return pattern.test(name);\n    }\n    /* istanbul ignore next */\n    return false;\n}\nfunction pruneCache(keepAliveInstance, filter) {\n    var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode;\n    for (var key in cache) {\n        var entry = cache[key];\n        if (entry) {\n            var name_1 = entry.name;\n            if (name_1 && !filter(name_1)) {\n                pruneCacheEntry(cache, key, keys, _vnode);\n            }\n        }\n    }\n    $vnode.componentOptions.children = undefined;\n}\nfunction pruneCacheEntry(cache, key, keys, current) {\n    var entry = cache[key];\n    if (entry && (!current || entry.tag !== current.tag)) {\n        // @ts-expect-error can be undefined\n        entry.componentInstance.$destroy();\n    }\n    cache[key] = null;\n    remove$2(keys, key);\n}\nvar patternTypes = [String, RegExp, Array];\n// TODO defineComponent\nvar KeepAlive = {\n    name: 'keep-alive',\n    abstract: true,\n    props: {\n        include: patternTypes,\n        exclude: patternTypes,\n        max: [String, Number]\n    },\n    methods: {\n        cacheVNode: function () {\n            var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache;\n            if (vnodeToCache) {\n                var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions;\n                cache[keyToCache] = {\n                    name: _getComponentName(componentOptions),\n                    tag: tag,\n                    componentInstance: componentInstance\n                };\n                keys.push(keyToCache);\n                // prune oldest entry\n                if (this.max && keys.length > parseInt(this.max)) {\n                    pruneCacheEntry(cache, keys[0], keys, this._vnode);\n                }\n                this.vnodeToCache = null;\n            }\n        }\n    },\n    created: function () {\n        this.cache = Object.create(null);\n        this.keys = [];\n    },\n    destroyed: function () {\n        for (var key in this.cache) {\n            pruneCacheEntry(this.cache, key, this.keys);\n        }\n    },\n    mounted: function () {\n        var _this = this;\n        this.cacheVNode();\n        this.$watch('include', function (val) {\n            pruneCache(_this, function (name) { return matches(val, name); });\n        });\n        this.$watch('exclude', function (val) {\n            pruneCache(_this, function (name) { return !matches(val, name); });\n        });\n    },\n    updated: function () {\n        this.cacheVNode();\n    },\n    render: function () {\n        var slot = this.$slots.default;\n        var vnode = getFirstComponentChild(slot);\n        var componentOptions = vnode && vnode.componentOptions;\n        if (componentOptions) {\n            // check pattern\n            var name_2 = _getComponentName(componentOptions);\n            var _a = this, include = _a.include, exclude = _a.exclude;\n            if (\n            // not included\n            (include && (!name_2 || !matches(include, name_2))) ||\n                // excluded\n                (exclude && name_2 && matches(exclude, name_2))) {\n                return vnode;\n            }\n            var _b = this, cache = _b.cache, keys = _b.keys;\n            var key = vnode.key == null\n                ? // same constructor may get registered as different local components\n                    // so cid alone is not enough (#3269)\n                    componentOptions.Ctor.cid +\n                        (componentOptions.tag ? \"::\".concat(componentOptions.tag) : '')\n                : vnode.key;\n            if (cache[key]) {\n                vnode.componentInstance = cache[key].componentInstance;\n                // make current key freshest\n                remove$2(keys, key);\n                keys.push(key);\n            }\n            else {\n                // delay setting the cache until update\n                this.vnodeToCache = vnode;\n                this.keyToCache = key;\n            }\n            // @ts-expect-error can vnode.data can be undefined\n            vnode.data.keepAlive = true;\n        }\n        return vnode || (slot && slot[0]);\n    }\n};\n\nvar builtInComponents = {\n    KeepAlive: KeepAlive\n};\n\nfunction initGlobalAPI(Vue) {\n    // config\n    var configDef = {};\n    configDef.get = function () { return config; };\n    if (process.env.NODE_ENV !== 'production') {\n        configDef.set = function () {\n            warn('Do not replace the Vue.config object, set individual fields instead.');\n        };\n    }\n    Object.defineProperty(Vue, 'config', configDef);\n    // exposed util methods.\n    // NOTE: these are not considered part of the public API - avoid relying on\n    // them unless you are aware of the risk.\n    Vue.util = {\n        warn: warn,\n        extend: extend,\n        mergeOptions: mergeOptions,\n        defineReactive: defineReactive\n    };\n    Vue.set = set;\n    Vue.delete = del;\n    Vue.nextTick = nextTick;\n    // 2.6 explicit observable API\n    Vue.observable = function (obj) {\n        observe(obj);\n        return obj;\n    };\n    Vue.options = Object.create(null);\n    ASSET_TYPES.forEach(function (type) {\n        Vue.options[type + 's'] = Object.create(null);\n    });\n    // this is used to identify the \"base\" constructor to extend all plain-object\n    // components with in Weex's multi-instance scenarios.\n    Vue.options._base = Vue;\n    extend(Vue.options.components, builtInComponents);\n    initUse(Vue);\n    initMixin(Vue);\n    initExtend(Vue);\n    initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\nObject.defineProperty(Vue.prototype, '$isServer', {\n    get: isServerRendering\n});\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n    get: function () {\n        /* istanbul ignore next */\n        return this.$vnode && this.$vnode.ssrContext;\n    }\n});\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n    value: FunctionalRenderContext\n});\nVue.version = version;\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n    return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||\n        (attr === 'selected' && tag === 'option') ||\n        (attr === 'checked' && tag === 'input') ||\n        (attr === 'muted' && tag === 'video'));\n};\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\nvar convertEnumeratedValue = function (key, value) {\n    return isFalsyAttrValue(value) || value === 'false'\n        ? 'false'\n        : // allow arbitrary string value for contenteditable\n            key === 'contenteditable' && isValidContentEditableValue(value)\n                ? value\n                : 'true';\n};\nvar isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n    'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n    'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n    'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n    'required,reversed,scoped,seamless,selected,sortable,' +\n    'truespeed,typemustmatch,visible');\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\nvar isXlink = function (name) {\n    return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';\n};\nvar getXlinkProp = function (name) {\n    return isXlink(name) ? name.slice(6, name.length) : '';\n};\nvar isFalsyAttrValue = function (val) {\n    return val == null || val === false;\n};\n\nfunction genClassForVnode(vnode) {\n    var data = vnode.data;\n    var parentNode = vnode;\n    var childNode = vnode;\n    while (isDef(childNode.componentInstance)) {\n        childNode = childNode.componentInstance._vnode;\n        if (childNode && childNode.data) {\n            data = mergeClassData(childNode.data, data);\n        }\n    }\n    // @ts-expect-error parentNode.parent not VNodeWithData\n    while (isDef((parentNode = parentNode.parent))) {\n        if (parentNode && parentNode.data) {\n            data = mergeClassData(data, parentNode.data);\n        }\n    }\n    return renderClass(data.staticClass, data.class);\n}\nfunction mergeClassData(child, parent) {\n    return {\n        staticClass: concat(child.staticClass, parent.staticClass),\n        class: isDef(child.class) ? [child.class, parent.class] : parent.class\n    };\n}\nfunction renderClass(staticClass, dynamicClass) {\n    if (isDef(staticClass) || isDef(dynamicClass)) {\n        return concat(staticClass, stringifyClass(dynamicClass));\n    }\n    /* istanbul ignore next */\n    return '';\n}\nfunction concat(a, b) {\n    return a ? (b ? a + ' ' + b : a) : b || '';\n}\nfunction stringifyClass(value) {\n    if (Array.isArray(value)) {\n        return stringifyArray(value);\n    }\n    if (isObject(value)) {\n        return stringifyObject(value);\n    }\n    if (typeof value === 'string') {\n        return value;\n    }\n    /* istanbul ignore next */\n    return '';\n}\nfunction stringifyArray(value) {\n    var res = '';\n    var stringified;\n    for (var i = 0, l = value.length; i < l; i++) {\n        if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') {\n            if (res)\n                res += ' ';\n            res += stringified;\n        }\n    }\n    return res;\n}\nfunction stringifyObject(value) {\n    var res = '';\n    for (var key in value) {\n        if (value[key]) {\n            if (res)\n                res += ' ';\n            res += key;\n        }\n    }\n    return res;\n}\n\nvar namespaceMap = {\n    svg: 'http://www.w3.org/2000/svg',\n    math: 'http://www.w3.org/1998/Math/MathML'\n};\nvar isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +\n    'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n    'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n    'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n    's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n    'embed,object,param,source,canvas,script,noscript,del,ins,' +\n    'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n    'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n    'output,progress,select,textarea,' +\n    'details,dialog,menu,menuitem,summary,' +\n    'content,element,shadow,template,blockquote,iframe,tfoot');\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n    'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n    'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);\nvar isReservedTag = function (tag) {\n    return isHTMLTag(tag) || isSVG(tag);\n};\nfunction getTagNamespace(tag) {\n    if (isSVG(tag)) {\n        return 'svg';\n    }\n    // basic support for MathML\n    // note it doesn't support other MathML elements being component roots\n    if (tag === 'math') {\n        return 'math';\n    }\n}\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement(tag) {\n    /* istanbul ignore if */\n    if (!inBrowser) {\n        return true;\n    }\n    if (isReservedTag(tag)) {\n        return false;\n    }\n    tag = tag.toLowerCase();\n    /* istanbul ignore if */\n    if (unknownElementCache[tag] != null) {\n        return unknownElementCache[tag];\n    }\n    var el = document.createElement(tag);\n    if (tag.indexOf('-') > -1) {\n        // https://stackoverflow.com/a/28210364/1070244\n        return (unknownElementCache[tag] =\n            el.constructor === window.HTMLUnknownElement ||\n                el.constructor === window.HTMLElement);\n    }\n    else {\n        return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()));\n    }\n}\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query(el) {\n    if (typeof el === 'string') {\n        var selected = document.querySelector(el);\n        if (!selected) {\n            process.env.NODE_ENV !== 'production' && warn('Cannot find element: ' + el);\n            return document.createElement('div');\n        }\n        return selected;\n    }\n    else {\n        return el;\n    }\n}\n\nfunction createElement(tagName, vnode) {\n    var elm = document.createElement(tagName);\n    if (tagName !== 'select') {\n        return elm;\n    }\n    // false or null will remove the attribute but undefined will not\n    if (vnode.data &&\n        vnode.data.attrs &&\n        vnode.data.attrs.multiple !== undefined) {\n        elm.setAttribute('multiple', 'multiple');\n    }\n    return elm;\n}\nfunction createElementNS(namespace, tagName) {\n    return document.createElementNS(namespaceMap[namespace], tagName);\n}\nfunction createTextNode(text) {\n    return document.createTextNode(text);\n}\nfunction createComment(text) {\n    return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n    parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n    node.removeChild(child);\n}\nfunction appendChild(node, child) {\n    node.appendChild(child);\n}\nfunction parentNode(node) {\n    return node.parentNode;\n}\nfunction nextSibling(node) {\n    return node.nextSibling;\n}\nfunction tagName(node) {\n    return node.tagName;\n}\nfunction setTextContent(node, text) {\n    node.textContent = text;\n}\nfunction setStyleScope(node, scopeId) {\n    node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  createElement: createElement,\n  createElementNS: createElementNS,\n  createTextNode: createTextNode,\n  createComment: createComment,\n  insertBefore: insertBefore,\n  removeChild: removeChild,\n  appendChild: appendChild,\n  parentNode: parentNode,\n  nextSibling: nextSibling,\n  tagName: tagName,\n  setTextContent: setTextContent,\n  setStyleScope: setStyleScope\n});\n\nvar ref = {\n    create: function (_, vnode) {\n        registerRef(vnode);\n    },\n    update: function (oldVnode, vnode) {\n        if (oldVnode.data.ref !== vnode.data.ref) {\n            registerRef(oldVnode, true);\n            registerRef(vnode);\n        }\n    },\n    destroy: function (vnode) {\n        registerRef(vnode, true);\n    }\n};\nfunction registerRef(vnode, isRemoval) {\n    var ref = vnode.data.ref;\n    if (!isDef(ref))\n        return;\n    var vm = vnode.context;\n    var refValue = vnode.componentInstance || vnode.elm;\n    var value = isRemoval ? null : refValue;\n    var $refsValue = isRemoval ? undefined : refValue;\n    if (isFunction(ref)) {\n        invokeWithErrorHandling(ref, vm, [value], vm, \"template ref function\");\n        return;\n    }\n    var isFor = vnode.data.refInFor;\n    var _isString = typeof ref === 'string' || typeof ref === 'number';\n    var _isRef = isRef(ref);\n    var refs = vm.$refs;\n    if (_isString || _isRef) {\n        if (isFor) {\n            var existing = _isString ? refs[ref] : ref.value;\n            if (isRemoval) {\n                isArray(existing) && remove$2(existing, refValue);\n            }\n            else {\n                if (!isArray(existing)) {\n                    if (_isString) {\n                        refs[ref] = [refValue];\n                        setSetupRef(vm, ref, refs[ref]);\n                    }\n                    else {\n                        ref.value = [refValue];\n                    }\n                }\n                else if (!existing.includes(refValue)) {\n                    existing.push(refValue);\n                }\n            }\n        }\n        else if (_isString) {\n            if (isRemoval && refs[ref] !== refValue) {\n                return;\n            }\n            refs[ref] = $refsValue;\n            setSetupRef(vm, ref, value);\n        }\n        else if (_isRef) {\n            if (isRemoval && ref.value !== refValue) {\n                return;\n            }\n            ref.value = value;\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn(\"Invalid template ref type: \".concat(typeof ref));\n        }\n    }\n}\nfunction setSetupRef(_a, key, val) {\n    var _setupState = _a._setupState;\n    if (_setupState && hasOwn(_setupState, key)) {\n        if (isRef(_setupState[key])) {\n            _setupState[key].value = val;\n        }\n        else {\n            _setupState[key] = val;\n        }\n    }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\nvar emptyNode = new VNode('', {}, []);\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\nfunction sameVnode(a, b) {\n    return (a.key === b.key &&\n        a.asyncFactory === b.asyncFactory &&\n        ((a.tag === b.tag &&\n            a.isComment === b.isComment &&\n            isDef(a.data) === isDef(b.data) &&\n            sameInputType(a, b)) ||\n            (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error))));\n}\nfunction sameInputType(a, b) {\n    if (a.tag !== 'input')\n        return true;\n    var i;\n    var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type;\n    var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type;\n    return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB));\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n    var i, key;\n    var map = {};\n    for (i = beginIdx; i <= endIdx; ++i) {\n        key = children[i].key;\n        if (isDef(key))\n            map[key] = i;\n    }\n    return map;\n}\nfunction createPatchFunction(backend) {\n    var i, j;\n    var cbs = {};\n    var modules = backend.modules, nodeOps = backend.nodeOps;\n    for (i = 0; i < hooks.length; ++i) {\n        cbs[hooks[i]] = [];\n        for (j = 0; j < modules.length; ++j) {\n            if (isDef(modules[j][hooks[i]])) {\n                cbs[hooks[i]].push(modules[j][hooks[i]]);\n            }\n        }\n    }\n    function emptyNodeAt(elm) {\n        return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);\n    }\n    function createRmCb(childElm, listeners) {\n        function remove() {\n            if (--remove.listeners === 0) {\n                removeNode(childElm);\n            }\n        }\n        remove.listeners = listeners;\n        return remove;\n    }\n    function removeNode(el) {\n        var parent = nodeOps.parentNode(el);\n        // element may have already been removed due to v-html / v-text\n        if (isDef(parent)) {\n            nodeOps.removeChild(parent, el);\n        }\n    }\n    function isUnknownElement(vnode, inVPre) {\n        return (!inVPre &&\n            !vnode.ns &&\n            !(config.ignoredElements.length &&\n                config.ignoredElements.some(function (ignore) {\n                    return isRegExp(ignore)\n                        ? ignore.test(vnode.tag)\n                        : ignore === vnode.tag;\n                })) &&\n            config.isUnknownElement(vnode.tag));\n    }\n    var creatingElmInVPre = 0;\n    function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {\n        if (isDef(vnode.elm) && isDef(ownerArray)) {\n            // This vnode was used in a previous render!\n            // now it's used as a new node, overwriting its elm would cause\n            // potential patch errors down the road when it's used as an insertion\n            // reference node. Instead, we clone the node on-demand before creating\n            // associated DOM element for it.\n            vnode = ownerArray[index] = cloneVNode(vnode);\n        }\n        vnode.isRootInsert = !nested; // for transition enter check\n        if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n            return;\n        }\n        var data = vnode.data;\n        var children = vnode.children;\n        var tag = vnode.tag;\n        if (isDef(tag)) {\n            if (process.env.NODE_ENV !== 'production') {\n                if (data && data.pre) {\n                    creatingElmInVPre++;\n                }\n                if (isUnknownElement(vnode, creatingElmInVPre)) {\n                    warn('Unknown custom element: <' +\n                        tag +\n                        '> - did you ' +\n                        'register the component correctly? For recursive components, ' +\n                        'make sure to provide the \"name\" option.', vnode.context);\n                }\n            }\n            vnode.elm = vnode.ns\n                ? nodeOps.createElementNS(vnode.ns, tag)\n                : nodeOps.createElement(tag, vnode);\n            setScope(vnode);\n            createChildren(vnode, children, insertedVnodeQueue);\n            if (isDef(data)) {\n                invokeCreateHooks(vnode, insertedVnodeQueue);\n            }\n            insert(parentElm, vnode.elm, refElm);\n            if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n                creatingElmInVPre--;\n            }\n        }\n        else if (isTrue(vnode.isComment)) {\n            vnode.elm = nodeOps.createComment(vnode.text);\n            insert(parentElm, vnode.elm, refElm);\n        }\n        else {\n            vnode.elm = nodeOps.createTextNode(vnode.text);\n            insert(parentElm, vnode.elm, refElm);\n        }\n    }\n    function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n        var i = vnode.data;\n        if (isDef(i)) {\n            var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n            if (isDef((i = i.hook)) && isDef((i = i.init))) {\n                i(vnode, false /* hydrating */);\n            }\n            // after calling the init hook, if the vnode is a child component\n            // it should've created a child instance and mounted it. the child\n            // component also has set the placeholder vnode's elm.\n            // in that case we can just return the element and be done.\n            if (isDef(vnode.componentInstance)) {\n                initComponent(vnode, insertedVnodeQueue);\n                insert(parentElm, vnode.elm, refElm);\n                if (isTrue(isReactivated)) {\n                    reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n                }\n                return true;\n            }\n        }\n    }\n    function initComponent(vnode, insertedVnodeQueue) {\n        if (isDef(vnode.data.pendingInsert)) {\n            insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n            vnode.data.pendingInsert = null;\n        }\n        vnode.elm = vnode.componentInstance.$el;\n        if (isPatchable(vnode)) {\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            setScope(vnode);\n        }\n        else {\n            // empty component root.\n            // skip all element-related modules except for ref (#3455)\n            registerRef(vnode);\n            // make sure to invoke the insert hook\n            insertedVnodeQueue.push(vnode);\n        }\n    }\n    function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n        var i;\n        // hack for #4339: a reactivated component with inner transition\n        // does not trigger because the inner node's created hooks are not called\n        // again. It's not ideal to involve module-specific logic in here but\n        // there doesn't seem to be a better way to do it.\n        var innerNode = vnode;\n        while (innerNode.componentInstance) {\n            innerNode = innerNode.componentInstance._vnode;\n            if (isDef((i = innerNode.data)) && isDef((i = i.transition))) {\n                for (i = 0; i < cbs.activate.length; ++i) {\n                    cbs.activate[i](emptyNode, innerNode);\n                }\n                insertedVnodeQueue.push(innerNode);\n                break;\n            }\n        }\n        // unlike a newly created component,\n        // a reactivated keep-alive component doesn't insert itself\n        insert(parentElm, vnode.elm, refElm);\n    }\n    function insert(parent, elm, ref) {\n        if (isDef(parent)) {\n            if (isDef(ref)) {\n                if (nodeOps.parentNode(ref) === parent) {\n                    nodeOps.insertBefore(parent, elm, ref);\n                }\n            }\n            else {\n                nodeOps.appendChild(parent, elm);\n            }\n        }\n    }\n    function createChildren(vnode, children, insertedVnodeQueue) {\n        if (isArray(children)) {\n            if (process.env.NODE_ENV !== 'production') {\n                checkDuplicateKeys(children);\n            }\n            for (var i_1 = 0; i_1 < children.length; ++i_1) {\n                createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1);\n            }\n        }\n        else if (isPrimitive(vnode.text)) {\n            nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n        }\n    }\n    function isPatchable(vnode) {\n        while (vnode.componentInstance) {\n            vnode = vnode.componentInstance._vnode;\n        }\n        return isDef(vnode.tag);\n    }\n    function invokeCreateHooks(vnode, insertedVnodeQueue) {\n        for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) {\n            cbs.create[i_2](emptyNode, vnode);\n        }\n        i = vnode.data.hook; // Reuse variable\n        if (isDef(i)) {\n            if (isDef(i.create))\n                i.create(emptyNode, vnode);\n            if (isDef(i.insert))\n                insertedVnodeQueue.push(vnode);\n        }\n    }\n    // set scope id attribute for scoped CSS.\n    // this is implemented as a special case to avoid the overhead\n    // of going through the normal attribute patching process.\n    function setScope(vnode) {\n        var i;\n        if (isDef((i = vnode.fnScopeId))) {\n            nodeOps.setStyleScope(vnode.elm, i);\n        }\n        else {\n            var ancestor = vnode;\n            while (ancestor) {\n                if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) {\n                    nodeOps.setStyleScope(vnode.elm, i);\n                }\n                ancestor = ancestor.parent;\n            }\n        }\n        // for slot content they should also get the scopeId from the host instance.\n        if (isDef((i = activeInstance)) &&\n            i !== vnode.context &&\n            i !== vnode.fnContext &&\n            isDef((i = i.$options._scopeId))) {\n            nodeOps.setStyleScope(vnode.elm, i);\n        }\n    }\n    function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n        for (; startIdx <= endIdx; ++startIdx) {\n            createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n        }\n    }\n    function invokeDestroyHook(vnode) {\n        var i, j;\n        var data = vnode.data;\n        if (isDef(data)) {\n            if (isDef((i = data.hook)) && isDef((i = i.destroy)))\n                i(vnode);\n            for (i = 0; i < cbs.destroy.length; ++i)\n                cbs.destroy[i](vnode);\n        }\n        if (isDef((i = vnode.children))) {\n            for (j = 0; j < vnode.children.length; ++j) {\n                invokeDestroyHook(vnode.children[j]);\n            }\n        }\n    }\n    function removeVnodes(vnodes, startIdx, endIdx) {\n        for (; startIdx <= endIdx; ++startIdx) {\n            var ch = vnodes[startIdx];\n            if (isDef(ch)) {\n                if (isDef(ch.tag)) {\n                    removeAndInvokeRemoveHook(ch);\n                    invokeDestroyHook(ch);\n                }\n                else {\n                    // Text node\n                    removeNode(ch.elm);\n                }\n            }\n        }\n    }\n    function removeAndInvokeRemoveHook(vnode, rm) {\n        if (isDef(rm) || isDef(vnode.data)) {\n            var i_3;\n            var listeners = cbs.remove.length + 1;\n            if (isDef(rm)) {\n                // we have a recursively passed down rm callback\n                // increase the listeners count\n                rm.listeners += listeners;\n            }\n            else {\n                // directly removing\n                rm = createRmCb(vnode.elm, listeners);\n            }\n            // recursively invoke hooks on child component root node\n            if (isDef((i_3 = vnode.componentInstance)) &&\n                isDef((i_3 = i_3._vnode)) &&\n                isDef(i_3.data)) {\n                removeAndInvokeRemoveHook(i_3, rm);\n            }\n            for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) {\n                cbs.remove[i_3](vnode, rm);\n            }\n            if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) {\n                i_3(vnode, rm);\n            }\n            else {\n                rm();\n            }\n        }\n        else {\n            removeNode(vnode.elm);\n        }\n    }\n    function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n        var oldStartIdx = 0;\n        var newStartIdx = 0;\n        var oldEndIdx = oldCh.length - 1;\n        var oldStartVnode = oldCh[0];\n        var oldEndVnode = oldCh[oldEndIdx];\n        var newEndIdx = newCh.length - 1;\n        var newStartVnode = newCh[0];\n        var newEndVnode = newCh[newEndIdx];\n        var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n        // removeOnly is a special flag used only by <transition-group>\n        // to ensure removed elements stay in correct relative positions\n        // during leaving transitions\n        var canMove = !removeOnly;\n        if (process.env.NODE_ENV !== 'production') {\n            checkDuplicateKeys(newCh);\n        }\n        while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n            if (isUndef(oldStartVnode)) {\n                oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n            }\n            else if (isUndef(oldEndVnode)) {\n                oldEndVnode = oldCh[--oldEndIdx];\n            }\n            else if (sameVnode(oldStartVnode, newStartVnode)) {\n                patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n                oldStartVnode = oldCh[++oldStartIdx];\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else if (sameVnode(oldEndVnode, newEndVnode)) {\n                patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n                oldEndVnode = oldCh[--oldEndIdx];\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldStartVnode, newEndVnode)) {\n                // Vnode moved right\n                patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n                canMove &&\n                    nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n                oldStartVnode = oldCh[++oldStartIdx];\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldEndVnode, newStartVnode)) {\n                // Vnode moved left\n                patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n                canMove &&\n                    nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n                oldEndVnode = oldCh[--oldEndIdx];\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else {\n                if (isUndef(oldKeyToIdx))\n                    oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n                idxInOld = isDef(newStartVnode.key)\n                    ? oldKeyToIdx[newStartVnode.key]\n                    : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n                if (isUndef(idxInOld)) {\n                    // New element\n                    createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n                }\n                else {\n                    vnodeToMove = oldCh[idxInOld];\n                    if (sameVnode(vnodeToMove, newStartVnode)) {\n                        patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n                        oldCh[idxInOld] = undefined;\n                        canMove &&\n                            nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n                    }\n                    else {\n                        // same key but different element. treat as new element\n                        createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n                    }\n                }\n                newStartVnode = newCh[++newStartIdx];\n            }\n        }\n        if (oldStartIdx > oldEndIdx) {\n            refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n            addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n        }\n        else if (newStartIdx > newEndIdx) {\n            removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n        }\n    }\n    function checkDuplicateKeys(children) {\n        var seenKeys = {};\n        for (var i_4 = 0; i_4 < children.length; i_4++) {\n            var vnode = children[i_4];\n            var key = vnode.key;\n            if (isDef(key)) {\n                if (seenKeys[key]) {\n                    warn(\"Duplicate keys detected: '\".concat(key, \"'. This may cause an update error.\"), vnode.context);\n                }\n                else {\n                    seenKeys[key] = true;\n                }\n            }\n        }\n    }\n    function findIdxInOld(node, oldCh, start, end) {\n        for (var i_5 = start; i_5 < end; i_5++) {\n            var c = oldCh[i_5];\n            if (isDef(c) && sameVnode(node, c))\n                return i_5;\n        }\n    }\n    function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {\n        if (oldVnode === vnode) {\n            return;\n        }\n        if (isDef(vnode.elm) && isDef(ownerArray)) {\n            // clone reused vnode\n            vnode = ownerArray[index] = cloneVNode(vnode);\n        }\n        var elm = (vnode.elm = oldVnode.elm);\n        if (isTrue(oldVnode.isAsyncPlaceholder)) {\n            if (isDef(vnode.asyncFactory.resolved)) {\n                hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n            }\n            else {\n                vnode.isAsyncPlaceholder = true;\n            }\n            return;\n        }\n        // reuse element for static trees.\n        // note we only do this if the vnode is cloned -\n        // if the new node is not cloned it means the render functions have been\n        // reset by the hot-reload-api and we need to do a proper re-render.\n        if (isTrue(vnode.isStatic) &&\n            isTrue(oldVnode.isStatic) &&\n            vnode.key === oldVnode.key &&\n            (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {\n            vnode.componentInstance = oldVnode.componentInstance;\n            return;\n        }\n        var i;\n        var data = vnode.data;\n        if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) {\n            i(oldVnode, vnode);\n        }\n        var oldCh = oldVnode.children;\n        var ch = vnode.children;\n        if (isDef(data) && isPatchable(vnode)) {\n            for (i = 0; i < cbs.update.length; ++i)\n                cbs.update[i](oldVnode, vnode);\n            if (isDef((i = data.hook)) && isDef((i = i.update)))\n                i(oldVnode, vnode);\n        }\n        if (isUndef(vnode.text)) {\n            if (isDef(oldCh) && isDef(ch)) {\n                if (oldCh !== ch)\n                    updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);\n            }\n            else if (isDef(ch)) {\n                if (process.env.NODE_ENV !== 'production') {\n                    checkDuplicateKeys(ch);\n                }\n                if (isDef(oldVnode.text))\n                    nodeOps.setTextContent(elm, '');\n                addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n            }\n            else if (isDef(oldCh)) {\n                removeVnodes(oldCh, 0, oldCh.length - 1);\n            }\n            else if (isDef(oldVnode.text)) {\n                nodeOps.setTextContent(elm, '');\n            }\n        }\n        else if (oldVnode.text !== vnode.text) {\n            nodeOps.setTextContent(elm, vnode.text);\n        }\n        if (isDef(data)) {\n            if (isDef((i = data.hook)) && isDef((i = i.postpatch)))\n                i(oldVnode, vnode);\n        }\n    }\n    function invokeInsertHook(vnode, queue, initial) {\n        // delay insert hooks for component root nodes, invoke them after the\n        // element is really inserted\n        if (isTrue(initial) && isDef(vnode.parent)) {\n            vnode.parent.data.pendingInsert = queue;\n        }\n        else {\n            for (var i_6 = 0; i_6 < queue.length; ++i_6) {\n                queue[i_6].data.hook.insert(queue[i_6]);\n            }\n        }\n    }\n    var hydrationBailed = false;\n    // list of modules that can skip create hook during hydration because they\n    // are already rendered on the client or has no need for initialization\n    // Note: style is excluded because it relies on initial clone for future\n    // deep updates (#7063).\n    var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n    // Note: this is a browser-only function so we can assume elms are DOM nodes.\n    function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {\n        var i;\n        var tag = vnode.tag, data = vnode.data, children = vnode.children;\n        inVPre = inVPre || (data && data.pre);\n        vnode.elm = elm;\n        if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n            vnode.isAsyncPlaceholder = true;\n            return true;\n        }\n        // assert node match\n        if (process.env.NODE_ENV !== 'production') {\n            if (!assertNodeMatch(elm, vnode, inVPre)) {\n                return false;\n            }\n        }\n        if (isDef(data)) {\n            if (isDef((i = data.hook)) && isDef((i = i.init)))\n                i(vnode, true /* hydrating */);\n            if (isDef((i = vnode.componentInstance))) {\n                // child component. it should have hydrated its own tree.\n                initComponent(vnode, insertedVnodeQueue);\n                return true;\n            }\n        }\n        if (isDef(tag)) {\n            if (isDef(children)) {\n                // empty element, allow client to pick up and populate children\n                if (!elm.hasChildNodes()) {\n                    createChildren(vnode, children, insertedVnodeQueue);\n                }\n                else {\n                    // v-html and domProps: innerHTML\n                    if (isDef((i = data)) &&\n                        isDef((i = i.domProps)) &&\n                        isDef((i = i.innerHTML))) {\n                        if (i !== elm.innerHTML) {\n                            /* istanbul ignore if */\n                            if (process.env.NODE_ENV !== 'production' &&\n                                typeof console !== 'undefined' &&\n                                !hydrationBailed) {\n                                hydrationBailed = true;\n                                console.warn('Parent: ', elm);\n                                console.warn('server innerHTML: ', i);\n                                console.warn('client innerHTML: ', elm.innerHTML);\n                            }\n                            return false;\n                        }\n                    }\n                    else {\n                        // iterate and compare children lists\n                        var childrenMatch = true;\n                        var childNode = elm.firstChild;\n                        for (var i_7 = 0; i_7 < children.length; i_7++) {\n                            if (!childNode ||\n                                !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) {\n                                childrenMatch = false;\n                                break;\n                            }\n                            childNode = childNode.nextSibling;\n                        }\n                        // if childNode is not null, it means the actual childNodes list is\n                        // longer than the virtual children list.\n                        if (!childrenMatch || childNode) {\n                            /* istanbul ignore if */\n                            if (process.env.NODE_ENV !== 'production' &&\n                                typeof console !== 'undefined' &&\n                                !hydrationBailed) {\n                                hydrationBailed = true;\n                                console.warn('Parent: ', elm);\n                                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n                            }\n                            return false;\n                        }\n                    }\n                }\n            }\n            if (isDef(data)) {\n                var fullInvoke = false;\n                for (var key in data) {\n                    if (!isRenderedModule(key)) {\n                        fullInvoke = true;\n                        invokeCreateHooks(vnode, insertedVnodeQueue);\n                        break;\n                    }\n                }\n                if (!fullInvoke && data['class']) {\n                    // ensure collecting deps for deep class bindings for future updates\n                    traverse(data['class']);\n                }\n            }\n        }\n        else if (elm.data !== vnode.text) {\n            elm.data = vnode.text;\n        }\n        return true;\n    }\n    function assertNodeMatch(node, vnode, inVPre) {\n        if (isDef(vnode.tag)) {\n            return (vnode.tag.indexOf('vue-component') === 0 ||\n                (!isUnknownElement(vnode, inVPre) &&\n                    vnode.tag.toLowerCase() ===\n                        (node.tagName && node.tagName.toLowerCase())));\n        }\n        else {\n            return node.nodeType === (vnode.isComment ? 8 : 3);\n        }\n    }\n    return function patch(oldVnode, vnode, hydrating, removeOnly) {\n        if (isUndef(vnode)) {\n            if (isDef(oldVnode))\n                invokeDestroyHook(oldVnode);\n            return;\n        }\n        var isInitialPatch = false;\n        var insertedVnodeQueue = [];\n        if (isUndef(oldVnode)) {\n            // empty mount (likely as component), create new root element\n            isInitialPatch = true;\n            createElm(vnode, insertedVnodeQueue);\n        }\n        else {\n            var isRealElement = isDef(oldVnode.nodeType);\n            if (!isRealElement && sameVnode(oldVnode, vnode)) {\n                // patch existing root node\n                patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n            }\n            else {\n                if (isRealElement) {\n                    // mounting to a real element\n                    // check if this is server-rendered content and if we can perform\n                    // a successful hydration.\n                    if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n                        oldVnode.removeAttribute(SSR_ATTR);\n                        hydrating = true;\n                    }\n                    if (isTrue(hydrating)) {\n                        if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n                            invokeInsertHook(vnode, insertedVnodeQueue, true);\n                            return oldVnode;\n                        }\n                        else if (process.env.NODE_ENV !== 'production') {\n                            warn('The client-side rendered virtual DOM tree is not matching ' +\n                                'server-rendered content. This is likely caused by incorrect ' +\n                                'HTML markup, for example nesting block-level elements inside ' +\n                                '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                                'full client-side render.');\n                        }\n                    }\n                    // either not server-rendered, or hydration failed.\n                    // create an empty node and replace it\n                    oldVnode = emptyNodeAt(oldVnode);\n                }\n                // replacing existing element\n                var oldElm = oldVnode.elm;\n                var parentElm = nodeOps.parentNode(oldElm);\n                // create new node\n                createElm(vnode, insertedVnodeQueue, \n                // extremely rare edge case: do not insert if old element is in a\n                // leaving transition. Only happens when combining transition +\n                // keep-alive + HOCs. (#4590)\n                oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm));\n                // update parent placeholder node element, recursively\n                if (isDef(vnode.parent)) {\n                    var ancestor = vnode.parent;\n                    var patchable = isPatchable(vnode);\n                    while (ancestor) {\n                        for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) {\n                            cbs.destroy[i_8](ancestor);\n                        }\n                        ancestor.elm = vnode.elm;\n                        if (patchable) {\n                            for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) {\n                                cbs.create[i_9](emptyNode, ancestor);\n                            }\n                            // #6513\n                            // invoke insert hooks that may have been merged by create hooks.\n                            // e.g. for directives that uses the \"inserted\" hook.\n                            var insert_1 = ancestor.data.hook.insert;\n                            if (insert_1.merged) {\n                                // start at index 1 to avoid re-invoking component mounted hook\n                                // clone insert hooks to avoid being mutated during iteration.\n                                // e.g. for customed directives under transition group.\n                                var cloned = insert_1.fns.slice(1);\n                                for (var i_10 = 0; i_10 < cloned.length; i_10++) {\n                                    cloned[i_10]();\n                                }\n                            }\n                        }\n                        else {\n                            registerRef(ancestor);\n                        }\n                        ancestor = ancestor.parent;\n                    }\n                }\n                // destroy old node\n                if (isDef(parentElm)) {\n                    removeVnodes([oldVnode], 0, 0);\n                }\n                else if (isDef(oldVnode.tag)) {\n                    invokeDestroyHook(oldVnode);\n                }\n            }\n        }\n        invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n        return vnode.elm;\n    };\n}\n\nvar directives = {\n    create: updateDirectives,\n    update: updateDirectives,\n    destroy: function unbindDirectives(vnode) {\n        // @ts-expect-error emptyNode is not VNodeWithData\n        updateDirectives(vnode, emptyNode);\n    }\n};\nfunction updateDirectives(oldVnode, vnode) {\n    if (oldVnode.data.directives || vnode.data.directives) {\n        _update(oldVnode, vnode);\n    }\n}\nfunction _update(oldVnode, vnode) {\n    var isCreate = oldVnode === emptyNode;\n    var isDestroy = vnode === emptyNode;\n    var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context);\n    var newDirs = normalizeDirectives(vnode.data.directives, vnode.context);\n    var dirsWithInsert = [];\n    var dirsWithPostpatch = [];\n    var key, oldDir, dir;\n    for (key in newDirs) {\n        oldDir = oldDirs[key];\n        dir = newDirs[key];\n        if (!oldDir) {\n            // new directive, bind\n            callHook(dir, 'bind', vnode, oldVnode);\n            if (dir.def && dir.def.inserted) {\n                dirsWithInsert.push(dir);\n            }\n        }\n        else {\n            // existing directive, update\n            dir.oldValue = oldDir.value;\n            dir.oldArg = oldDir.arg;\n            callHook(dir, 'update', vnode, oldVnode);\n            if (dir.def && dir.def.componentUpdated) {\n                dirsWithPostpatch.push(dir);\n            }\n        }\n    }\n    if (dirsWithInsert.length) {\n        var callInsert = function () {\n            for (var i = 0; i < dirsWithInsert.length; i++) {\n                callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n            }\n        };\n        if (isCreate) {\n            mergeVNodeHook(vnode, 'insert', callInsert);\n        }\n        else {\n            callInsert();\n        }\n    }\n    if (dirsWithPostpatch.length) {\n        mergeVNodeHook(vnode, 'postpatch', function () {\n            for (var i = 0; i < dirsWithPostpatch.length; i++) {\n                callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n            }\n        });\n    }\n    if (!isCreate) {\n        for (key in oldDirs) {\n            if (!newDirs[key]) {\n                // no longer present, unbind\n                callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n            }\n        }\n    }\n}\nvar emptyModifiers = Object.create(null);\nfunction normalizeDirectives(dirs, vm) {\n    var res = Object.create(null);\n    if (!dirs) {\n        // $flow-disable-line\n        return res;\n    }\n    var i, dir;\n    for (i = 0; i < dirs.length; i++) {\n        dir = dirs[i];\n        if (!dir.modifiers) {\n            // $flow-disable-line\n            dir.modifiers = emptyModifiers;\n        }\n        res[getRawDirName(dir)] = dir;\n        if (vm._setupState && vm._setupState.__sfc) {\n            var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);\n            if (typeof setupDef === 'function') {\n                dir.def = {\n                    bind: setupDef,\n                    update: setupDef,\n                };\n            }\n            else {\n                dir.def = setupDef;\n            }\n        }\n        dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);\n    }\n    // $flow-disable-line\n    return res;\n}\nfunction getRawDirName(dir) {\n    return (dir.rawName || \"\".concat(dir.name, \".\").concat(Object.keys(dir.modifiers || {}).join('.')));\n}\nfunction callHook(dir, hook, vnode, oldVnode, isDestroy) {\n    var fn = dir.def && dir.def[hook];\n    if (fn) {\n        try {\n            fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n        }\n        catch (e) {\n            handleError(e, vnode.context, \"directive \".concat(dir.name, \" \").concat(hook, \" hook\"));\n        }\n    }\n}\n\nvar baseModules = [ref, directives];\n\nfunction updateAttrs(oldVnode, vnode) {\n    var opts = vnode.componentOptions;\n    if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n        return;\n    }\n    if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n        return;\n    }\n    var key, cur, old;\n    var elm = vnode.elm;\n    var oldAttrs = oldVnode.data.attrs || {};\n    var attrs = vnode.data.attrs || {};\n    // clone observed objects, as the user probably wants to mutate it\n    if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) {\n        attrs = vnode.data.attrs = extend({}, attrs);\n    }\n    for (key in attrs) {\n        cur = attrs[key];\n        old = oldAttrs[key];\n        if (old !== cur) {\n            setAttr(elm, key, cur, vnode.data.pre);\n        }\n    }\n    // #4391: in IE9, setting type can reset value for input[type=radio]\n    // #6666: IE/Edge forces progress value down to 1 before setting a max\n    /* istanbul ignore if */\n    if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n        setAttr(elm, 'value', attrs.value);\n    }\n    for (key in oldAttrs) {\n        if (isUndef(attrs[key])) {\n            if (isXlink(key)) {\n                elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n            }\n            else if (!isEnumeratedAttr(key)) {\n                elm.removeAttribute(key);\n            }\n        }\n    }\n}\nfunction setAttr(el, key, value, isInPre) {\n    if (isInPre || el.tagName.indexOf('-') > -1) {\n        baseSetAttr(el, key, value);\n    }\n    else if (isBooleanAttr(key)) {\n        // set attribute for blank value\n        // e.g. <option disabled>Select one</option>\n        if (isFalsyAttrValue(value)) {\n            el.removeAttribute(key);\n        }\n        else {\n            // technically allowfullscreen is a boolean attribute for <iframe>,\n            // but Flash expects a value of \"true\" when used on <embed> tag\n            value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;\n            el.setAttribute(key, value);\n        }\n    }\n    else if (isEnumeratedAttr(key)) {\n        el.setAttribute(key, convertEnumeratedValue(key, value));\n    }\n    else if (isXlink(key)) {\n        if (isFalsyAttrValue(value)) {\n            el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n        }\n        else {\n            el.setAttributeNS(xlinkNS, key, value);\n        }\n    }\n    else {\n        baseSetAttr(el, key, value);\n    }\n}\nfunction baseSetAttr(el, key, value) {\n    if (isFalsyAttrValue(value)) {\n        el.removeAttribute(key);\n    }\n    else {\n        // #7138: IE10 & 11 fires input event when setting placeholder on\n        // <textarea>... block the first input event and remove the blocker\n        // immediately.\n        /* istanbul ignore if */\n        if (isIE &&\n            !isIE9 &&\n            el.tagName === 'TEXTAREA' &&\n            key === 'placeholder' &&\n            value !== '' &&\n            !el.__ieph) {\n            var blocker_1 = function (e) {\n                e.stopImmediatePropagation();\n                el.removeEventListener('input', blocker_1);\n            };\n            el.addEventListener('input', blocker_1);\n            // $flow-disable-line\n            el.__ieph = true; /* IE placeholder patched */\n        }\n        el.setAttribute(key, value);\n    }\n}\nvar attrs = {\n    create: updateAttrs,\n    update: updateAttrs\n};\n\nfunction updateClass(oldVnode, vnode) {\n    var el = vnode.elm;\n    var data = vnode.data;\n    var oldData = oldVnode.data;\n    if (isUndef(data.staticClass) &&\n        isUndef(data.class) &&\n        (isUndef(oldData) ||\n            (isUndef(oldData.staticClass) && isUndef(oldData.class)))) {\n        return;\n    }\n    var cls = genClassForVnode(vnode);\n    // handle transition classes\n    var transitionClass = el._transitionClasses;\n    if (isDef(transitionClass)) {\n        cls = concat(cls, stringifyClass(transitionClass));\n    }\n    // set the class\n    if (cls !== el._prevClass) {\n        el.setAttribute('class', cls);\n        el._prevClass = cls;\n    }\n}\nvar klass = {\n    create: updateClass,\n    update: updateClass\n};\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents(on) {\n    /* istanbul ignore if */\n    if (isDef(on[RANGE_TOKEN])) {\n        // IE input[type=range] only supports `change` event\n        var event_1 = isIE ? 'change' : 'input';\n        on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []);\n        delete on[RANGE_TOKEN];\n    }\n    // This was originally intended to fix #4521 but no longer necessary\n    // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n    /* istanbul ignore if */\n    if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n        on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n        delete on[CHECKBOX_RADIO_TOKEN];\n    }\n}\nvar target;\nfunction createOnceHandler(event, handler, capture) {\n    var _target = target; // save current target element in closure\n    return function onceHandler() {\n        var res = handler.apply(null, arguments);\n        if (res !== null) {\n            remove(event, onceHandler, capture, _target);\n        }\n    };\n}\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\nfunction add(name, handler, capture, passive) {\n    // async edge case #6566: inner click event triggers patch, event handler\n    // attached to outer element during patch, and triggered again. This\n    // happens because browsers fire microtask ticks between event propagation.\n    // the solution is simple: we save the timestamp when a handler is attached,\n    // and the handler would only fire if the event passed to it was fired\n    // AFTER it was attached.\n    if (useMicrotaskFix) {\n        var attachedTimestamp_1 = currentFlushTimestamp;\n        var original_1 = handler;\n        //@ts-expect-error\n        handler = original_1._wrapper = function (e) {\n            if (\n            // no bubbling, should always fire.\n            // this is just a safety net in case event.timeStamp is unreliable in\n            // certain weird environments...\n            e.target === e.currentTarget ||\n                // event is fired after handler attachment\n                e.timeStamp >= attachedTimestamp_1 ||\n                // bail for environments that have buggy event.timeStamp implementations\n                // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n                // #9681 QtWebEngine event.timeStamp is negative value\n                e.timeStamp <= 0 ||\n                // #9448 bail if event is fired in another document in a multi-page\n                // electron/nw.js app, since event.timeStamp will be using a different\n                // starting reference\n                e.target.ownerDocument !== document) {\n                return original_1.apply(this, arguments);\n            }\n        };\n    }\n    target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture);\n}\nfunction remove(name, handler, capture, _target) {\n    (_target || target).removeEventListener(name, \n    //@ts-expect-error\n    handler._wrapper || handler, capture);\n}\nfunction updateDOMListeners(oldVnode, vnode) {\n    if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n        return;\n    }\n    var on = vnode.data.on || {};\n    var oldOn = oldVnode.data.on || {};\n    // vnode is empty when removing all listeners,\n    // and use old vnode dom element\n    target = vnode.elm || oldVnode.elm;\n    normalizeEvents(on);\n    updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context);\n    target = undefined;\n}\nvar events = {\n    create: updateDOMListeners,\n    update: updateDOMListeners,\n    // @ts-expect-error emptyNode has actually data\n    destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); }\n};\n\nvar svgContainer;\nfunction updateDOMProps(oldVnode, vnode) {\n    if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n        return;\n    }\n    var key, cur;\n    var elm = vnode.elm;\n    var oldProps = oldVnode.data.domProps || {};\n    var props = vnode.data.domProps || {};\n    // clone observed objects, as the user probably wants to mutate it\n    if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) {\n        props = vnode.data.domProps = extend({}, props);\n    }\n    for (key in oldProps) {\n        if (!(key in props)) {\n            elm[key] = '';\n        }\n    }\n    for (key in props) {\n        cur = props[key];\n        // ignore children if the node has textContent or innerHTML,\n        // as these will throw away existing DOM nodes and cause removal errors\n        // on subsequent patches (#3360)\n        if (key === 'textContent' || key === 'innerHTML') {\n            if (vnode.children)\n                vnode.children.length = 0;\n            if (cur === oldProps[key])\n                continue;\n            // #6601 work around Chrome version <= 55 bug where single textNode\n            // replaced by innerHTML/textContent retains its parentNode property\n            if (elm.childNodes.length === 1) {\n                elm.removeChild(elm.childNodes[0]);\n            }\n        }\n        if (key === 'value' && elm.tagName !== 'PROGRESS') {\n            // store value as _value as well since\n            // non-string values will be stringified\n            elm._value = cur;\n            // avoid resetting cursor position when value is the same\n            var strCur = isUndef(cur) ? '' : String(cur);\n            if (shouldUpdateValue(elm, strCur)) {\n                elm.value = strCur;\n            }\n        }\n        else if (key === 'innerHTML' &&\n            isSVG(elm.tagName) &&\n            isUndef(elm.innerHTML)) {\n            // IE doesn't support innerHTML for SVG elements\n            svgContainer = svgContainer || document.createElement('div');\n            svgContainer.innerHTML = \"<svg>\".concat(cur, \"</svg>\");\n            var svg = svgContainer.firstChild;\n            while (elm.firstChild) {\n                elm.removeChild(elm.firstChild);\n            }\n            while (svg.firstChild) {\n                elm.appendChild(svg.firstChild);\n            }\n        }\n        else if (\n        // skip the update if old and new VDOM state is the same.\n        // `value` is handled separately because the DOM value may be temporarily\n        // out of sync with VDOM state due to focus, composition and modifiers.\n        // This  #4521 by skipping the unnecessary `checked` update.\n        cur !== oldProps[key]) {\n            // some property updates can throw\n            // e.g. `value` on <progress> w/ non-finite value\n            try {\n                elm[key] = cur;\n            }\n            catch (e) { }\n        }\n    }\n}\nfunction shouldUpdateValue(elm, checkVal) {\n    return (\n    //@ts-expect-error\n    !elm.composing &&\n        (elm.tagName === 'OPTION' ||\n            isNotInFocusAndDirty(elm, checkVal) ||\n            isDirtyWithModifiers(elm, checkVal)));\n}\nfunction isNotInFocusAndDirty(elm, checkVal) {\n    // return true when textbox (.number and .trim) loses focus and its value is\n    // not equal to the updated value\n    var notInFocus = true;\n    // #6157\n    // work around IE bug when accessing document.activeElement in an iframe\n    try {\n        notInFocus = document.activeElement !== elm;\n    }\n    catch (e) { }\n    return notInFocus && elm.value !== checkVal;\n}\nfunction isDirtyWithModifiers(elm, newVal) {\n    var value = elm.value;\n    var modifiers = elm._vModifiers; // injected by v-model runtime\n    if (isDef(modifiers)) {\n        if (modifiers.number) {\n            return toNumber(value) !== toNumber(newVal);\n        }\n        if (modifiers.trim) {\n            return value.trim() !== newVal.trim();\n        }\n    }\n    return value !== newVal;\n}\nvar domProps = {\n    create: updateDOMProps,\n    update: updateDOMProps\n};\n\nvar parseStyleText = cached(function (cssText) {\n    var res = {};\n    var listDelimiter = /;(?![^(]*\\))/g;\n    var propertyDelimiter = /:(.+)/;\n    cssText.split(listDelimiter).forEach(function (item) {\n        if (item) {\n            var tmp = item.split(propertyDelimiter);\n            tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n        }\n    });\n    return res;\n});\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData(data) {\n    var style = normalizeStyleBinding(data.style);\n    // static style is pre-processed into an object during compilation\n    // and is always a fresh object, so it's safe to merge into it\n    return data.staticStyle ? extend(data.staticStyle, style) : style;\n}\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding(bindingStyle) {\n    if (Array.isArray(bindingStyle)) {\n        return toObject(bindingStyle);\n    }\n    if (typeof bindingStyle === 'string') {\n        return parseStyleText(bindingStyle);\n    }\n    return bindingStyle;\n}\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle(vnode, checkChild) {\n    var res = {};\n    var styleData;\n    if (checkChild) {\n        var childNode = vnode;\n        while (childNode.componentInstance) {\n            childNode = childNode.componentInstance._vnode;\n            if (childNode &&\n                childNode.data &&\n                (styleData = normalizeStyleData(childNode.data))) {\n                extend(res, styleData);\n            }\n        }\n    }\n    if ((styleData = normalizeStyleData(vnode.data))) {\n        extend(res, styleData);\n    }\n    var parentNode = vnode;\n    // @ts-expect-error parentNode.parent not VNodeWithData\n    while ((parentNode = parentNode.parent)) {\n        if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n            extend(res, styleData);\n        }\n    }\n    return res;\n}\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n    /* istanbul ignore if */\n    if (cssVarRE.test(name)) {\n        el.style.setProperty(name, val);\n    }\n    else if (importantRE.test(val)) {\n        el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n    }\n    else {\n        var normalizedName = normalize(name);\n        if (Array.isArray(val)) {\n            // Support values array created by autoprefixer, e.g.\n            // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n            // Set them one by one, and the browser will only set those it can recognize\n            for (var i = 0, len = val.length; i < len; i++) {\n                el.style[normalizedName] = val[i];\n            }\n        }\n        else {\n            el.style[normalizedName] = val;\n        }\n    }\n};\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n    emptyStyle = emptyStyle || document.createElement('div').style;\n    prop = camelize(prop);\n    if (prop !== 'filter' && prop in emptyStyle) {\n        return prop;\n    }\n    var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n    for (var i = 0; i < vendorNames.length; i++) {\n        var name_1 = vendorNames[i] + capName;\n        if (name_1 in emptyStyle) {\n            return name_1;\n        }\n    }\n});\nfunction updateStyle(oldVnode, vnode) {\n    var data = vnode.data;\n    var oldData = oldVnode.data;\n    if (isUndef(data.staticStyle) &&\n        isUndef(data.style) &&\n        isUndef(oldData.staticStyle) &&\n        isUndef(oldData.style)) {\n        return;\n    }\n    var cur, name;\n    var el = vnode.elm;\n    var oldStaticStyle = oldData.staticStyle;\n    var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n    // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n    var oldStyle = oldStaticStyle || oldStyleBinding;\n    var style = normalizeStyleBinding(vnode.data.style) || {};\n    // store normalized style under a different key for next diff\n    // make sure to clone it if it's reactive, since the user likely wants\n    // to mutate it.\n    vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;\n    var newStyle = getStyle(vnode, true);\n    for (name in oldStyle) {\n        if (isUndef(newStyle[name])) {\n            setProp(el, name, '');\n        }\n    }\n    for (name in newStyle) {\n        cur = newStyle[name];\n        // ie9 setting to null has no effect, must use empty string\n        setProp(el, name, cur == null ? '' : cur);\n    }\n}\nvar style = {\n    create: updateStyle,\n    update: updateStyle\n};\n\nvar whitespaceRE = /\\s+/;\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass(el, cls) {\n    /* istanbul ignore if */\n    if (!cls || !(cls = cls.trim())) {\n        return;\n    }\n    /* istanbul ignore else */\n    if (el.classList) {\n        if (cls.indexOf(' ') > -1) {\n            cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n        }\n        else {\n            el.classList.add(cls);\n        }\n    }\n    else {\n        var cur = \" \".concat(el.getAttribute('class') || '', \" \");\n        if (cur.indexOf(' ' + cls + ' ') < 0) {\n            el.setAttribute('class', (cur + cls).trim());\n        }\n    }\n}\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass(el, cls) {\n    /* istanbul ignore if */\n    if (!cls || !(cls = cls.trim())) {\n        return;\n    }\n    /* istanbul ignore else */\n    if (el.classList) {\n        if (cls.indexOf(' ') > -1) {\n            cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n        }\n        else {\n            el.classList.remove(cls);\n        }\n        if (!el.classList.length) {\n            el.removeAttribute('class');\n        }\n    }\n    else {\n        var cur = \" \".concat(el.getAttribute('class') || '', \" \");\n        var tar = ' ' + cls + ' ';\n        while (cur.indexOf(tar) >= 0) {\n            cur = cur.replace(tar, ' ');\n        }\n        cur = cur.trim();\n        if (cur) {\n            el.setAttribute('class', cur);\n        }\n        else {\n            el.removeAttribute('class');\n        }\n    }\n}\n\nfunction resolveTransition(def) {\n    if (!def) {\n        return;\n    }\n    /* istanbul ignore else */\n    if (typeof def === 'object') {\n        var res = {};\n        if (def.css !== false) {\n            extend(res, autoCssTransition(def.name || 'v'));\n        }\n        extend(res, def);\n        return res;\n    }\n    else if (typeof def === 'string') {\n        return autoCssTransition(def);\n    }\n}\nvar autoCssTransition = cached(function (name) {\n    return {\n        enterClass: \"\".concat(name, \"-enter\"),\n        enterToClass: \"\".concat(name, \"-enter-to\"),\n        enterActiveClass: \"\".concat(name, \"-enter-active\"),\n        leaveClass: \"\".concat(name, \"-leave\"),\n        leaveToClass: \"\".concat(name, \"-leave-to\"),\n        leaveActiveClass: \"\".concat(name, \"-leave-active\")\n    };\n});\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n    /* istanbul ignore if */\n    if (window.ontransitionend === undefined &&\n        window.onwebkittransitionend !== undefined) {\n        transitionProp = 'WebkitTransition';\n        transitionEndEvent = 'webkitTransitionEnd';\n    }\n    if (window.onanimationend === undefined &&\n        window.onwebkitanimationend !== undefined) {\n        animationProp = 'WebkitAnimation';\n        animationEndEvent = 'webkitAnimationEnd';\n    }\n}\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n    ? window.requestAnimationFrame\n        ? window.requestAnimationFrame.bind(window)\n        : setTimeout\n    : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); };\nfunction nextFrame(fn) {\n    raf(function () {\n        // @ts-expect-error\n        raf(fn);\n    });\n}\nfunction addTransitionClass(el, cls) {\n    var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n    if (transitionClasses.indexOf(cls) < 0) {\n        transitionClasses.push(cls);\n        addClass(el, cls);\n    }\n}\nfunction removeTransitionClass(el, cls) {\n    if (el._transitionClasses) {\n        remove$2(el._transitionClasses, cls);\n    }\n    removeClass(el, cls);\n}\nfunction whenTransitionEnds(el, expectedType, cb) {\n    var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount;\n    if (!type)\n        return cb();\n    var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n    var ended = 0;\n    var end = function () {\n        el.removeEventListener(event, onEnd);\n        cb();\n    };\n    var onEnd = function (e) {\n        if (e.target === el) {\n            if (++ended >= propCount) {\n                end();\n            }\n        }\n    };\n    setTimeout(function () {\n        if (ended < propCount) {\n            end();\n        }\n    }, timeout + 1);\n    el.addEventListener(event, onEnd);\n}\nvar transformRE = /\\b(transform|all)(,|$)/;\nfunction getTransitionInfo(el, expectedType) {\n    var styles = window.getComputedStyle(el);\n    // JSDOM may return undefined for transition properties\n    var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n    var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n    var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n    var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n    var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n    var animationTimeout = getTimeout(animationDelays, animationDurations);\n    var type;\n    var timeout = 0;\n    var propCount = 0;\n    /* istanbul ignore if */\n    if (expectedType === TRANSITION) {\n        if (transitionTimeout > 0) {\n            type = TRANSITION;\n            timeout = transitionTimeout;\n            propCount = transitionDurations.length;\n        }\n    }\n    else if (expectedType === ANIMATION) {\n        if (animationTimeout > 0) {\n            type = ANIMATION;\n            timeout = animationTimeout;\n            propCount = animationDurations.length;\n        }\n    }\n    else {\n        timeout = Math.max(transitionTimeout, animationTimeout);\n        type =\n            timeout > 0\n                ? transitionTimeout > animationTimeout\n                    ? TRANSITION\n                    : ANIMATION\n                : null;\n        propCount = type\n            ? type === TRANSITION\n                ? transitionDurations.length\n                : animationDurations.length\n            : 0;\n    }\n    var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);\n    return {\n        type: type,\n        timeout: timeout,\n        propCount: propCount,\n        hasTransform: hasTransform\n    };\n}\nfunction getTimeout(delays, durations) {\n    /* istanbul ignore next */\n    while (delays.length < durations.length) {\n        delays = delays.concat(delays);\n    }\n    return Math.max.apply(null, durations.map(function (d, i) {\n        return toMs(d) + toMs(delays[i]);\n    }));\n}\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs(s) {\n    return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n\nfunction enter(vnode, toggleDisplay) {\n    var el = vnode.elm;\n    // call leave callback now\n    if (isDef(el._leaveCb)) {\n        el._leaveCb.cancelled = true;\n        el._leaveCb();\n    }\n    var data = resolveTransition(vnode.data.transition);\n    if (isUndef(data)) {\n        return;\n    }\n    /* istanbul ignore if */\n    if (isDef(el._enterCb) || el.nodeType !== 1) {\n        return;\n    }\n    var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration;\n    // activeInstance will always be the <transition> component managing this\n    // transition. One edge case to check is when the <transition> is placed\n    // as the root node of a child component. In that case we need to check\n    // <transition>'s parent for appear check.\n    var context = activeInstance;\n    var transitionNode = activeInstance.$vnode;\n    while (transitionNode && transitionNode.parent) {\n        context = transitionNode.context;\n        transitionNode = transitionNode.parent;\n    }\n    var isAppear = !context._isMounted || !vnode.isRootInsert;\n    if (isAppear && !appear && appear !== '') {\n        return;\n    }\n    var startClass = isAppear && appearClass ? appearClass : enterClass;\n    var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;\n    var toClass = isAppear && appearToClass ? appearToClass : enterToClass;\n    var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;\n    var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter;\n    var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;\n    var enterCancelledHook = isAppear\n        ? appearCancelled || enterCancelled\n        : enterCancelled;\n    var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);\n    if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n        checkDuration(explicitEnterDuration, 'enter', vnode);\n    }\n    var expectsCSS = css !== false && !isIE9;\n    var userWantsControl = getHookArgumentsLength(enterHook);\n    var cb = (el._enterCb = once(function () {\n        if (expectsCSS) {\n            removeTransitionClass(el, toClass);\n            removeTransitionClass(el, activeClass);\n        }\n        // @ts-expect-error\n        if (cb.cancelled) {\n            if (expectsCSS) {\n                removeTransitionClass(el, startClass);\n            }\n            enterCancelledHook && enterCancelledHook(el);\n        }\n        else {\n            afterEnterHook && afterEnterHook(el);\n        }\n        el._enterCb = null;\n    }));\n    if (!vnode.data.show) {\n        // remove pending leave element on enter by injecting an insert hook\n        mergeVNodeHook(vnode, 'insert', function () {\n            var parent = el.parentNode;\n            var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n            if (pendingNode &&\n                pendingNode.tag === vnode.tag &&\n                pendingNode.elm._leaveCb) {\n                pendingNode.elm._leaveCb();\n            }\n            enterHook && enterHook(el, cb);\n        });\n    }\n    // start enter transition\n    beforeEnterHook && beforeEnterHook(el);\n    if (expectsCSS) {\n        addTransitionClass(el, startClass);\n        addTransitionClass(el, activeClass);\n        nextFrame(function () {\n            removeTransitionClass(el, startClass);\n            // @ts-expect-error\n            if (!cb.cancelled) {\n                addTransitionClass(el, toClass);\n                if (!userWantsControl) {\n                    if (isValidDuration(explicitEnterDuration)) {\n                        setTimeout(cb, explicitEnterDuration);\n                    }\n                    else {\n                        whenTransitionEnds(el, type, cb);\n                    }\n                }\n            }\n        });\n    }\n    if (vnode.data.show) {\n        toggleDisplay && toggleDisplay();\n        enterHook && enterHook(el, cb);\n    }\n    if (!expectsCSS && !userWantsControl) {\n        cb();\n    }\n}\nfunction leave(vnode, rm) {\n    var el = vnode.elm;\n    // call enter callback now\n    if (isDef(el._enterCb)) {\n        el._enterCb.cancelled = true;\n        el._enterCb();\n    }\n    var data = resolveTransition(vnode.data.transition);\n    if (isUndef(data) || el.nodeType !== 1) {\n        return rm();\n    }\n    /* istanbul ignore if */\n    if (isDef(el._leaveCb)) {\n        return;\n    }\n    var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration;\n    var expectsCSS = css !== false && !isIE9;\n    var userWantsControl = getHookArgumentsLength(leave);\n    var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);\n    if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n        checkDuration(explicitLeaveDuration, 'leave', vnode);\n    }\n    var cb = (el._leaveCb = once(function () {\n        if (el.parentNode && el.parentNode._pending) {\n            el.parentNode._pending[vnode.key] = null;\n        }\n        if (expectsCSS) {\n            removeTransitionClass(el, leaveToClass);\n            removeTransitionClass(el, leaveActiveClass);\n        }\n        // @ts-expect-error\n        if (cb.cancelled) {\n            if (expectsCSS) {\n                removeTransitionClass(el, leaveClass);\n            }\n            leaveCancelled && leaveCancelled(el);\n        }\n        else {\n            rm();\n            afterLeave && afterLeave(el);\n        }\n        el._leaveCb = null;\n    }));\n    if (delayLeave) {\n        delayLeave(performLeave);\n    }\n    else {\n        performLeave();\n    }\n    function performLeave() {\n        // the delayed leave may have already been cancelled\n        // @ts-expect-error\n        if (cb.cancelled) {\n            return;\n        }\n        // record leaving element\n        if (!vnode.data.show && el.parentNode) {\n            (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] =\n                vnode;\n        }\n        beforeLeave && beforeLeave(el);\n        if (expectsCSS) {\n            addTransitionClass(el, leaveClass);\n            addTransitionClass(el, leaveActiveClass);\n            nextFrame(function () {\n                removeTransitionClass(el, leaveClass);\n                // @ts-expect-error\n                if (!cb.cancelled) {\n                    addTransitionClass(el, leaveToClass);\n                    if (!userWantsControl) {\n                        if (isValidDuration(explicitLeaveDuration)) {\n                            setTimeout(cb, explicitLeaveDuration);\n                        }\n                        else {\n                            whenTransitionEnds(el, type, cb);\n                        }\n                    }\n                }\n            });\n        }\n        leave && leave(el, cb);\n        if (!expectsCSS && !userWantsControl) {\n            cb();\n        }\n    }\n}\n// only used in dev mode\nfunction checkDuration(val, name, vnode) {\n    if (typeof val !== 'number') {\n        warn(\"<transition> explicit \".concat(name, \" duration is not a valid number - \") +\n            \"got \".concat(JSON.stringify(val), \".\"), vnode.context);\n    }\n    else if (isNaN(val)) {\n        warn(\"<transition> explicit \".concat(name, \" duration is NaN - \") +\n            'the duration expression might be incorrect.', vnode.context);\n    }\n}\nfunction isValidDuration(val) {\n    return typeof val === 'number' && !isNaN(val);\n}\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength(fn) {\n    if (isUndef(fn)) {\n        return false;\n    }\n    // @ts-expect-error\n    var invokerFns = fn.fns;\n    if (isDef(invokerFns)) {\n        // invoker\n        return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);\n    }\n    else {\n        // @ts-expect-error\n        return (fn._length || fn.length) > 1;\n    }\n}\nfunction _enter(_, vnode) {\n    if (vnode.data.show !== true) {\n        enter(vnode);\n    }\n}\nvar transition = inBrowser\n    ? {\n        create: _enter,\n        activate: _enter,\n        remove: function (vnode, rm) {\n            /* istanbul ignore else */\n            if (vnode.data.show !== true) {\n                // @ts-expect-error\n                leave(vnode, rm);\n            }\n            else {\n                rm();\n            }\n        }\n    }\n    : {};\n\nvar platformModules = [attrs, klass, events, domProps, style, transition];\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n/* istanbul ignore if */\nif (isIE9) {\n    // http://www.matts411.com/post/internet-explorer-9-oninput/\n    document.addEventListener('selectionchange', function () {\n        var el = document.activeElement;\n        // @ts-expect-error\n        if (el && el.vmodel) {\n            trigger(el, 'input');\n        }\n    });\n}\nvar directive = {\n    inserted: function (el, binding, vnode, oldVnode) {\n        if (vnode.tag === 'select') {\n            // #6903\n            if (oldVnode.elm && !oldVnode.elm._vOptions) {\n                mergeVNodeHook(vnode, 'postpatch', function () {\n                    directive.componentUpdated(el, binding, vnode);\n                });\n            }\n            else {\n                setSelected(el, binding, vnode.context);\n            }\n            el._vOptions = [].map.call(el.options, getValue);\n        }\n        else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n            el._vModifiers = binding.modifiers;\n            if (!binding.modifiers.lazy) {\n                el.addEventListener('compositionstart', onCompositionStart);\n                el.addEventListener('compositionend', onCompositionEnd);\n                // Safari < 10.2 & UIWebView doesn't fire compositionend when\n                // switching focus before confirming composition choice\n                // this also fixes the issue where some browsers e.g. iOS Chrome\n                // fires \"change\" instead of \"input\" on autocomplete.\n                el.addEventListener('change', onCompositionEnd);\n                /* istanbul ignore if */\n                if (isIE9) {\n                    el.vmodel = true;\n                }\n            }\n        }\n    },\n    componentUpdated: function (el, binding, vnode) {\n        if (vnode.tag === 'select') {\n            setSelected(el, binding, vnode.context);\n            // in case the options rendered by v-for have changed,\n            // it's possible that the value is out-of-sync with the rendered options.\n            // detect such cases and filter out values that no longer has a matching\n            // option in the DOM.\n            var prevOptions_1 = el._vOptions;\n            var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue));\n            if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) {\n                // trigger change event if\n                // no matching option found for at least one value\n                var needReset = el.multiple\n                    ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); })\n                    : binding.value !== binding.oldValue &&\n                        hasNoMatchingOption(binding.value, curOptions_1);\n                if (needReset) {\n                    trigger(el, 'change');\n                }\n            }\n        }\n    }\n};\nfunction setSelected(el, binding, vm) {\n    actuallySetSelected(el, binding, vm);\n    /* istanbul ignore if */\n    if (isIE || isEdge) {\n        setTimeout(function () {\n            actuallySetSelected(el, binding, vm);\n        }, 0);\n    }\n}\nfunction actuallySetSelected(el, binding, vm) {\n    var value = binding.value;\n    var isMultiple = el.multiple;\n    if (isMultiple && !Array.isArray(value)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn(\"<select multiple v-model=\\\"\".concat(binding.expression, \"\\\"> \") +\n                \"expects an Array value for its binding, but got \".concat(Object.prototype.toString\n                    .call(value)\n                    .slice(8, -1)), vm);\n        return;\n    }\n    var selected, option;\n    for (var i = 0, l = el.options.length; i < l; i++) {\n        option = el.options[i];\n        if (isMultiple) {\n            selected = looseIndexOf(value, getValue(option)) > -1;\n            if (option.selected !== selected) {\n                option.selected = selected;\n            }\n        }\n        else {\n            if (looseEqual(getValue(option), value)) {\n                if (el.selectedIndex !== i) {\n                    el.selectedIndex = i;\n                }\n                return;\n            }\n        }\n    }\n    if (!isMultiple) {\n        el.selectedIndex = -1;\n    }\n}\nfunction hasNoMatchingOption(value, options) {\n    return options.every(function (o) { return !looseEqual(o, value); });\n}\nfunction getValue(option) {\n    return '_value' in option ? option._value : option.value;\n}\nfunction onCompositionStart(e) {\n    e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n    // prevent triggering an input event for no reason\n    if (!e.target.composing)\n        return;\n    e.target.composing = false;\n    trigger(e.target, 'input');\n}\nfunction trigger(el, type) {\n    var e = document.createEvent('HTMLEvents');\n    e.initEvent(type, true, true);\n    el.dispatchEvent(e);\n}\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode(vnode) {\n    // @ts-expect-error\n    return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n        ? locateNode(vnode.componentInstance._vnode)\n        : vnode;\n}\nvar show = {\n    bind: function (el, _a, vnode) {\n        var value = _a.value;\n        vnode = locateNode(vnode);\n        var transition = vnode.data && vnode.data.transition;\n        var originalDisplay = (el.__vOriginalDisplay =\n            el.style.display === 'none' ? '' : el.style.display);\n        if (value && transition) {\n            vnode.data.show = true;\n            enter(vnode, function () {\n                el.style.display = originalDisplay;\n            });\n        }\n        else {\n            el.style.display = value ? originalDisplay : 'none';\n        }\n    },\n    update: function (el, _a, vnode) {\n        var value = _a.value, oldValue = _a.oldValue;\n        /* istanbul ignore if */\n        if (!value === !oldValue)\n            return;\n        vnode = locateNode(vnode);\n        var transition = vnode.data && vnode.data.transition;\n        if (transition) {\n            vnode.data.show = true;\n            if (value) {\n                enter(vnode, function () {\n                    el.style.display = el.__vOriginalDisplay;\n                });\n            }\n            else {\n                leave(vnode, function () {\n                    el.style.display = 'none';\n                });\n            }\n        }\n        else {\n            el.style.display = value ? el.__vOriginalDisplay : 'none';\n        }\n    },\n    unbind: function (el, binding, vnode, oldVnode, isDestroy) {\n        if (!isDestroy) {\n            el.style.display = el.__vOriginalDisplay;\n        }\n    }\n};\n\nvar platformDirectives = {\n    model: directive,\n    show: show\n};\n\n// Provides transition support for a single element/component.\nvar transitionProps = {\n    name: String,\n    appear: Boolean,\n    css: Boolean,\n    mode: String,\n    type: String,\n    enterClass: String,\n    leaveClass: String,\n    enterToClass: String,\n    leaveToClass: String,\n    enterActiveClass: String,\n    leaveActiveClass: String,\n    appearClass: String,\n    appearActiveClass: String,\n    appearToClass: String,\n    duration: [Number, String, Object]\n};\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild(vnode) {\n    var compOptions = vnode && vnode.componentOptions;\n    if (compOptions && compOptions.Ctor.options.abstract) {\n        return getRealChild(getFirstComponentChild(compOptions.children));\n    }\n    else {\n        return vnode;\n    }\n}\nfunction extractTransitionData(comp) {\n    var data = {};\n    var options = comp.$options;\n    // props\n    for (var key in options.propsData) {\n        data[key] = comp[key];\n    }\n    // events.\n    // extract listeners and pass them directly to the transition methods\n    var listeners = options._parentListeners;\n    for (var key in listeners) {\n        data[camelize(key)] = listeners[key];\n    }\n    return data;\n}\nfunction placeholder(h, rawChild) {\n    // @ts-expect-error\n    if (/\\d-keep-alive$/.test(rawChild.tag)) {\n        return h('keep-alive', {\n            props: rawChild.componentOptions.propsData\n        });\n    }\n}\nfunction hasParentTransition(vnode) {\n    while ((vnode = vnode.parent)) {\n        if (vnode.data.transition) {\n            return true;\n        }\n    }\n}\nfunction isSameChild(child, oldChild) {\n    return oldChild.key === child.key && oldChild.tag === child.tag;\n}\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\nvar isVShowDirective = function (d) { return d.name === 'show'; };\nvar Transition = {\n    name: 'transition',\n    props: transitionProps,\n    abstract: true,\n    render: function (h) {\n        var _this = this;\n        var children = this.$slots.default;\n        if (!children) {\n            return;\n        }\n        // filter out text nodes (possible whitespaces)\n        children = children.filter(isNotTextNode);\n        /* istanbul ignore if */\n        if (!children.length) {\n            return;\n        }\n        // warn multiple elements\n        if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n            warn('<transition> can only be used on a single element. Use ' +\n                '<transition-group> for lists.', this.$parent);\n        }\n        var mode = this.mode;\n        // warn invalid mode\n        if (process.env.NODE_ENV !== 'production' && mode && mode !== 'in-out' && mode !== 'out-in') {\n            warn('invalid <transition> mode: ' + mode, this.$parent);\n        }\n        var rawChild = children[0];\n        // if this is a component root node and the component's\n        // parent container node also has transition, skip.\n        if (hasParentTransition(this.$vnode)) {\n            return rawChild;\n        }\n        // apply transition data to child\n        // use getRealChild() to ignore abstract components e.g. keep-alive\n        var child = getRealChild(rawChild);\n        /* istanbul ignore if */\n        if (!child) {\n            return rawChild;\n        }\n        if (this._leaving) {\n            return placeholder(h, rawChild);\n        }\n        // ensure a key that is unique to the vnode type and to this transition\n        // component instance. This key will be used to remove pending leaving nodes\n        // during entering.\n        var id = \"__transition-\".concat(this._uid, \"-\");\n        child.key =\n            child.key == null\n                ? child.isComment\n                    ? id + 'comment'\n                    : id + child.tag\n                : isPrimitive(child.key)\n                    ? String(child.key).indexOf(id) === 0\n                        ? child.key\n                        : id + child.key\n                    : child.key;\n        var data = ((child.data || (child.data = {})).transition =\n            extractTransitionData(this));\n        var oldRawChild = this._vnode;\n        var oldChild = getRealChild(oldRawChild);\n        // mark v-show\n        // so that the transition module can hand over the control to the directive\n        if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n            child.data.show = true;\n        }\n        if (oldChild &&\n            oldChild.data &&\n            !isSameChild(child, oldChild) &&\n            !isAsyncPlaceholder(oldChild) &&\n            // #6687 component root is a comment node\n            !(oldChild.componentInstance &&\n                oldChild.componentInstance._vnode.isComment)) {\n            // replace old child transition data with fresh one\n            // important for dynamic transitions!\n            var oldData = (oldChild.data.transition = extend({}, data));\n            // handle transition mode\n            if (mode === 'out-in') {\n                // return placeholder node and queue update when leave finishes\n                this._leaving = true;\n                mergeVNodeHook(oldData, 'afterLeave', function () {\n                    _this._leaving = false;\n                    _this.$forceUpdate();\n                });\n                return placeholder(h, rawChild);\n            }\n            else if (mode === 'in-out') {\n                if (isAsyncPlaceholder(child)) {\n                    return oldRawChild;\n                }\n                var delayedLeave_1;\n                var performLeave = function () {\n                    delayedLeave_1();\n                };\n                mergeVNodeHook(data, 'afterEnter', performLeave);\n                mergeVNodeHook(data, 'enterCancelled', performLeave);\n                mergeVNodeHook(oldData, 'delayLeave', function (leave) {\n                    delayedLeave_1 = leave;\n                });\n            }\n        }\n        return rawChild;\n    }\n};\n\n// Provides transition support for list items.\nvar props = extend({\n    tag: String,\n    moveClass: String\n}, transitionProps);\ndelete props.mode;\nvar TransitionGroup = {\n    props: props,\n    beforeMount: function () {\n        var _this = this;\n        var update = this._update;\n        this._update = function (vnode, hydrating) {\n            var restoreActiveInstance = setActiveInstance(_this);\n            // force removing pass\n            _this.__patch__(_this._vnode, _this.kept, false, // hydrating\n            true // removeOnly (!important, avoids unnecessary moves)\n            );\n            _this._vnode = _this.kept;\n            restoreActiveInstance();\n            update.call(_this, vnode, hydrating);\n        };\n    },\n    render: function (h) {\n        var tag = this.tag || this.$vnode.data.tag || 'span';\n        var map = Object.create(null);\n        var prevChildren = (this.prevChildren = this.children);\n        var rawChildren = this.$slots.default || [];\n        var children = (this.children = []);\n        var transitionData = extractTransitionData(this);\n        for (var i = 0; i < rawChildren.length; i++) {\n            var c = rawChildren[i];\n            if (c.tag) {\n                if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n                    children.push(c);\n                    map[c.key] = c;\n                    (c.data || (c.data = {})).transition = transitionData;\n                }\n                else if (process.env.NODE_ENV !== 'production') {\n                    var opts = c.componentOptions;\n                    var name_1 = opts\n                        ? getComponentName(opts.Ctor.options) || opts.tag || ''\n                        : c.tag;\n                    warn(\"<transition-group> children must be keyed: <\".concat(name_1, \">\"));\n                }\n            }\n        }\n        if (prevChildren) {\n            var kept = [];\n            var removed = [];\n            for (var i = 0; i < prevChildren.length; i++) {\n                var c = prevChildren[i];\n                c.data.transition = transitionData;\n                // @ts-expect-error .getBoundingClientRect is not typed in Node\n                c.data.pos = c.elm.getBoundingClientRect();\n                if (map[c.key]) {\n                    kept.push(c);\n                }\n                else {\n                    removed.push(c);\n                }\n            }\n            this.kept = h(tag, null, kept);\n            this.removed = removed;\n        }\n        return h(tag, null, children);\n    },\n    updated: function () {\n        var children = this.prevChildren;\n        var moveClass = this.moveClass || (this.name || 'v') + '-move';\n        if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n            return;\n        }\n        // we divide the work into three loops to avoid mixing DOM reads and writes\n        // in each iteration - which helps prevent layout thrashing.\n        children.forEach(callPendingCbs);\n        children.forEach(recordPosition);\n        children.forEach(applyTranslation);\n        // force reflow to put everything in position\n        // assign to this to avoid being removed in tree-shaking\n        // $flow-disable-line\n        this._reflow = document.body.offsetHeight;\n        children.forEach(function (c) {\n            if (c.data.moved) {\n                var el_1 = c.elm;\n                var s = el_1.style;\n                addTransitionClass(el_1, moveClass);\n                s.transform = s.WebkitTransform = s.transitionDuration = '';\n                el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) {\n                    if (e && e.target !== el_1) {\n                        return;\n                    }\n                    if (!e || /transform$/.test(e.propertyName)) {\n                        el_1.removeEventListener(transitionEndEvent, cb);\n                        el_1._moveCb = null;\n                        removeTransitionClass(el_1, moveClass);\n                    }\n                }));\n            }\n        });\n    },\n    methods: {\n        hasMove: function (el, moveClass) {\n            /* istanbul ignore if */\n            if (!hasTransition) {\n                return false;\n            }\n            /* istanbul ignore if */\n            if (this._hasMove) {\n                return this._hasMove;\n            }\n            // Detect whether an element with the move class applied has\n            // CSS transitions. Since the element may be inside an entering\n            // transition at this very moment, we make a clone of it and remove\n            // all other transition classes applied to ensure only the move class\n            // is applied.\n            var clone = el.cloneNode();\n            if (el._transitionClasses) {\n                el._transitionClasses.forEach(function (cls) {\n                    removeClass(clone, cls);\n                });\n            }\n            addClass(clone, moveClass);\n            clone.style.display = 'none';\n            this.$el.appendChild(clone);\n            var info = getTransitionInfo(clone);\n            this.$el.removeChild(clone);\n            return (this._hasMove = info.hasTransform);\n        }\n    }\n};\nfunction callPendingCbs(c) {\n    /* istanbul ignore if */\n    if (c.elm._moveCb) {\n        c.elm._moveCb();\n    }\n    /* istanbul ignore if */\n    if (c.elm._enterCb) {\n        c.elm._enterCb();\n    }\n}\nfunction recordPosition(c) {\n    c.data.newPos = c.elm.getBoundingClientRect();\n}\nfunction applyTranslation(c) {\n    var oldPos = c.data.pos;\n    var newPos = c.data.newPos;\n    var dx = oldPos.left - newPos.left;\n    var dy = oldPos.top - newPos.top;\n    if (dx || dy) {\n        c.data.moved = true;\n        var s = c.elm.style;\n        s.transform = s.WebkitTransform = \"translate(\".concat(dx, \"px,\").concat(dy, \"px)\");\n        s.transitionDuration = '0s';\n    }\n}\n\nvar platformComponents = {\n    Transition: Transition,\n    TransitionGroup: TransitionGroup\n};\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n// public mount method\nVue.prototype.$mount = function (el, hydrating) {\n    el = el && inBrowser ? query(el) : undefined;\n    return mountComponent(this, el, hydrating);\n};\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n    setTimeout(function () {\n        if (config.devtools) {\n            if (devtools) {\n                devtools.emit('init', Vue);\n            }\n            else if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n                // @ts-expect-error\n                console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\\n' +\n                    'https://github.com/vuejs/vue-devtools');\n            }\n        }\n        if (process.env.NODE_ENV !== 'production' &&\n            process.env.NODE_ENV !== 'test' &&\n            config.productionTip !== false &&\n            typeof console !== 'undefined') {\n            // @ts-expect-error\n            console[console.info ? 'info' : 'log'](\"You are running Vue in development mode.\\n\" +\n                \"Make sure to turn on production mode when deploying for production.\\n\" +\n                \"See more tips at https://vuejs.org/guide/deployment.html\");\n        }\n    }, 0);\n}\n\nexport { EffectScope, computed, customRef, Vue as default, defineAsyncComponent, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, h, inject, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, mergeDefaults, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, proxyRefs, reactive, readonly, ref$1 as ref, set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useListeners, useSlots, version, watch, watchEffect, watchPostEffect, watchSyncEffect };\n","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n  var version = Number(Vue.version.split('.')[0]);\n\n  if (version >= 2) {\n    Vue.mixin({ beforeCreate: vuexInit });\n  } else {\n    // override init and inject vuex init procedure\n    // for 1.x backwards compatibility.\n    var _init = Vue.prototype._init;\n    Vue.prototype._init = function (options) {\n      if ( options === void 0 ) options = {};\n\n      options.init = options.init\n        ? [vuexInit].concat(options.init)\n        : vuexInit;\n      _init.call(this, options);\n    };\n  }\n\n  /**\n   * Vuex init hook, injected into each instances init hooks list.\n   */\n\n  function vuexInit () {\n    var options = this.$options;\n    // store injection\n    if (options.store) {\n      this.$store = typeof options.store === 'function'\n        ? options.store()\n        : options.store;\n    } else if (options.parent && options.parent.$store) {\n      this.$store = options.parent.$store;\n    }\n  }\n}\n\nvar target = typeof window !== 'undefined'\n  ? window\n  : typeof global !== 'undefined'\n    ? global\n    : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n  if (!devtoolHook) { return }\n\n  store._devtoolHook = devtoolHook;\n\n  devtoolHook.emit('vuex:init', store);\n\n  devtoolHook.on('vuex:travel-to-state', function (targetState) {\n    store.replaceState(targetState);\n  });\n\n  store.subscribe(function (mutation, state) {\n    devtoolHook.emit('vuex:mutation', mutation, state);\n  }, { prepend: true });\n\n  store.subscribeAction(function (action, state) {\n    devtoolHook.emit('vuex:action', action, state);\n  }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n  return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n  if ( cache === void 0 ) cache = [];\n\n  // just return if obj is immutable value\n  if (obj === null || typeof obj !== 'object') {\n    return obj\n  }\n\n  // if obj is hit, it is in circular structure\n  var hit = find(cache, function (c) { return c.original === obj; });\n  if (hit) {\n    return hit.copy\n  }\n\n  var copy = Array.isArray(obj) ? [] : {};\n  // put the copy into cache at first\n  // because we want to refer it in recursive deepCopy\n  cache.push({\n    original: obj,\n    copy: copy\n  });\n\n  Object.keys(obj).forEach(function (key) {\n    copy[key] = deepCopy(obj[key], cache);\n  });\n\n  return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n  Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n  return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n  if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n  return function () {\n    return fn(arg)\n  }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n  this.runtime = runtime;\n  // Store some children item\n  this._children = Object.create(null);\n  // Store the origin module object which passed by programmer\n  this._rawModule = rawModule;\n  var rawState = rawModule.state;\n\n  // Store the origin module's state\n  this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n  return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n  this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n  delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n  return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n  return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n  this._rawModule.namespaced = rawModule.namespaced;\n  if (rawModule.actions) {\n    this._rawModule.actions = rawModule.actions;\n  }\n  if (rawModule.mutations) {\n    this._rawModule.mutations = rawModule.mutations;\n  }\n  if (rawModule.getters) {\n    this._rawModule.getters = rawModule.getters;\n  }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n  forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n  if (this._rawModule.getters) {\n    forEachValue(this._rawModule.getters, fn);\n  }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n  if (this._rawModule.actions) {\n    forEachValue(this._rawModule.actions, fn);\n  }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n  if (this._rawModule.mutations) {\n    forEachValue(this._rawModule.mutations, fn);\n  }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n  // register root module (Vuex.Store options)\n  this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n  return path.reduce(function (module, key) {\n    return module.getChild(key)\n  }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n  var module = this.root;\n  return path.reduce(function (namespace, key) {\n    module = module.getChild(key);\n    return namespace + (module.namespaced ? key + '/' : '')\n  }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n  update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n    var this$1 = this;\n    if ( runtime === void 0 ) runtime = true;\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assertRawModule(path, rawModule);\n  }\n\n  var newModule = new Module(rawModule, runtime);\n  if (path.length === 0) {\n    this.root = newModule;\n  } else {\n    var parent = this.get(path.slice(0, -1));\n    parent.addChild(path[path.length - 1], newModule);\n  }\n\n  // register nested modules\n  if (rawModule.modules) {\n    forEachValue(rawModule.modules, function (rawChildModule, key) {\n      this$1.register(path.concat(key), rawChildModule, runtime);\n    });\n  }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n  var parent = this.get(path.slice(0, -1));\n  var key = path[path.length - 1];\n  var child = parent.getChild(key);\n\n  if (!child) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.warn(\n        \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n        \"not registered\"\n      );\n    }\n    return\n  }\n\n  if (!child.runtime) {\n    return\n  }\n\n  parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n  var parent = this.get(path.slice(0, -1));\n  var key = path[path.length - 1];\n\n  if (parent) {\n    return parent.hasChild(key)\n  }\n\n  return false\n};\n\nfunction update (path, targetModule, newModule) {\n  if ((process.env.NODE_ENV !== 'production')) {\n    assertRawModule(path, newModule);\n  }\n\n  // update target module\n  targetModule.update(newModule);\n\n  // update nested modules\n  if (newModule.modules) {\n    for (var key in newModule.modules) {\n      if (!targetModule.getChild(key)) {\n        if ((process.env.NODE_ENV !== 'production')) {\n          console.warn(\n            \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n            'manual reload is needed'\n          );\n        }\n        return\n      }\n      update(\n        path.concat(key),\n        targetModule.getChild(key),\n        newModule.modules[key]\n      );\n    }\n  }\n}\n\nvar functionAssert = {\n  assert: function (value) { return typeof value === 'function'; },\n  expected: 'function'\n};\n\nvar objectAssert = {\n  assert: function (value) { return typeof value === 'function' ||\n    (typeof value === 'object' && typeof value.handler === 'function'); },\n  expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n  getters: functionAssert,\n  mutations: functionAssert,\n  actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n  Object.keys(assertTypes).forEach(function (key) {\n    if (!rawModule[key]) { return }\n\n    var assertOptions = assertTypes[key];\n\n    forEachValue(rawModule[key], function (value, type) {\n      assert(\n        assertOptions.assert(value),\n        makeAssertionMessage(path, key, type, value, assertOptions.expected)\n      );\n    });\n  });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n  var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n  if (path.length > 0) {\n    buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n  }\n  buf += \" is \" + (JSON.stringify(value)) + \".\";\n  return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #731\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n    assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n    assert(this instanceof Store, \"store must be called with the new operator.\");\n  }\n\n  var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n  var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n  // store internal state\n  this._committing = false;\n  this._actions = Object.create(null);\n  this._actionSubscribers = [];\n  this._mutations = Object.create(null);\n  this._wrappedGetters = Object.create(null);\n  this._modules = new ModuleCollection(options);\n  this._modulesNamespaceMap = Object.create(null);\n  this._subscribers = [];\n  this._watcherVM = new Vue();\n  this._makeLocalGettersCache = Object.create(null);\n\n  // bind commit and dispatch to self\n  var store = this;\n  var ref = this;\n  var dispatch = ref.dispatch;\n  var commit = ref.commit;\n  this.dispatch = function boundDispatch (type, payload) {\n    return dispatch.call(store, type, payload)\n  };\n  this.commit = function boundCommit (type, payload, options) {\n    return commit.call(store, type, payload, options)\n  };\n\n  // strict mode\n  this.strict = strict;\n\n  var state = this._modules.root.state;\n\n  // init root module.\n  // this also recursively registers all sub-modules\n  // and collects all module getters inside this._wrappedGetters\n  installModule(this, state, [], this._modules.root);\n\n  // initialize the store vm, which is responsible for the reactivity\n  // (also registers _wrappedGetters as computed properties)\n  resetStoreVM(this, state);\n\n  // apply plugins\n  plugins.forEach(function (plugin) { return plugin(this$1); });\n\n  var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n  if (useDevtools) {\n    devtoolPlugin(this);\n  }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n  return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(false, \"use store.replaceState() to explicit replace store state.\");\n  }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n    var this$1 = this;\n\n  // check object-style commit\n  var ref = unifyObjectStyle(_type, _payload, _options);\n    var type = ref.type;\n    var payload = ref.payload;\n    var options = ref.options;\n\n  var mutation = { type: type, payload: payload };\n  var entry = this._mutations[type];\n  if (!entry) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] unknown mutation type: \" + type));\n    }\n    return\n  }\n  this._withCommit(function () {\n    entry.forEach(function commitIterator (handler) {\n      handler(payload);\n    });\n  });\n\n  this._subscribers\n    .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n    .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n  if (\n    (process.env.NODE_ENV !== 'production') &&\n    options && options.silent\n  ) {\n    console.warn(\n      \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n      'Use the filter functionality in the vue-devtools'\n    );\n  }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n    var this$1 = this;\n\n  // check object-style dispatch\n  var ref = unifyObjectStyle(_type, _payload);\n    var type = ref.type;\n    var payload = ref.payload;\n\n  var action = { type: type, payload: payload };\n  var entry = this._actions[type];\n  if (!entry) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] unknown action type: \" + type));\n    }\n    return\n  }\n\n  try {\n    this._actionSubscribers\n      .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n      .filter(function (sub) { return sub.before; })\n      .forEach(function (sub) { return sub.before(action, this$1.state); });\n  } catch (e) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.warn(\"[vuex] error in before action subscribers: \");\n      console.error(e);\n    }\n  }\n\n  var result = entry.length > 1\n    ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n    : entry[0](payload);\n\n  return new Promise(function (resolve, reject) {\n    result.then(function (res) {\n      try {\n        this$1._actionSubscribers\n          .filter(function (sub) { return sub.after; })\n          .forEach(function (sub) { return sub.after(action, this$1.state); });\n      } catch (e) {\n        if ((process.env.NODE_ENV !== 'production')) {\n          console.warn(\"[vuex] error in after action subscribers: \");\n          console.error(e);\n        }\n      }\n      resolve(res);\n    }, function (error) {\n      try {\n        this$1._actionSubscribers\n          .filter(function (sub) { return sub.error; })\n          .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n      } catch (e) {\n        if ((process.env.NODE_ENV !== 'production')) {\n          console.warn(\"[vuex] error in error action subscribers: \");\n          console.error(e);\n        }\n      }\n      reject(error);\n    });\n  })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n  return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n  var subs = typeof fn === 'function' ? { before: fn } : fn;\n  return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n    var this$1 = this;\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n  }\n  return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n    var this$1 = this;\n\n  this._withCommit(function () {\n    this$1._vm._data.$$state = state;\n  });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n    if ( options === void 0 ) options = {};\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n    assert(path.length > 0, 'cannot register the root module by using registerModule.');\n  }\n\n  this._modules.register(path, rawModule);\n  installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n  // reset store to update getters...\n  resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n    var this$1 = this;\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n  }\n\n  this._modules.unregister(path);\n  this._withCommit(function () {\n    var parentState = getNestedState(this$1.state, path.slice(0, -1));\n    Vue.delete(parentState, path[path.length - 1]);\n  });\n  resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n  if (typeof path === 'string') { path = [path]; }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n  }\n\n  return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n  this._modules.update(newOptions);\n  resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n  var committing = this._committing;\n  this._committing = true;\n  fn();\n  this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n  if (subs.indexOf(fn) < 0) {\n    options && options.prepend\n      ? subs.unshift(fn)\n      : subs.push(fn);\n  }\n  return function () {\n    var i = subs.indexOf(fn);\n    if (i > -1) {\n      subs.splice(i, 1);\n    }\n  }\n}\n\nfunction resetStore (store, hot) {\n  store._actions = Object.create(null);\n  store._mutations = Object.create(null);\n  store._wrappedGetters = Object.create(null);\n  store._modulesNamespaceMap = Object.create(null);\n  var state = store.state;\n  // init all modules\n  installModule(store, state, [], store._modules.root, true);\n  // reset vm\n  resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n  var oldVm = store._vm;\n\n  // bind store public getters\n  store.getters = {};\n  // reset local getters cache\n  store._makeLocalGettersCache = Object.create(null);\n  var wrappedGetters = store._wrappedGetters;\n  var computed = {};\n  forEachValue(wrappedGetters, function (fn, key) {\n    // use computed to leverage its lazy-caching mechanism\n    // direct inline function use will lead to closure preserving oldVm.\n    // using partial to return function with only arguments preserved in closure environment.\n    computed[key] = partial(fn, store);\n    Object.defineProperty(store.getters, key, {\n      get: function () { return store._vm[key]; },\n      enumerable: true // for local getters\n    });\n  });\n\n  // use a Vue instance to store the state tree\n  // suppress warnings just in case the user has added\n  // some funky global mixins\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  store._vm = new Vue({\n    data: {\n      $$state: state\n    },\n    computed: computed\n  });\n  Vue.config.silent = silent;\n\n  // enable strict mode for new vm\n  if (store.strict) {\n    enableStrictMode(store);\n  }\n\n  if (oldVm) {\n    if (hot) {\n      // dispatch changes in all subscribed watchers\n      // to force getter re-evaluation for hot reloading.\n      store._withCommit(function () {\n        oldVm._data.$$state = null;\n      });\n    }\n    Vue.nextTick(function () { return oldVm.$destroy(); });\n  }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n  var isRoot = !path.length;\n  var namespace = store._modules.getNamespace(path);\n\n  // register in namespace map\n  if (module.namespaced) {\n    if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n    }\n    store._modulesNamespaceMap[namespace] = module;\n  }\n\n  // set state\n  if (!isRoot && !hot) {\n    var parentState = getNestedState(rootState, path.slice(0, -1));\n    var moduleName = path[path.length - 1];\n    store._withCommit(function () {\n      if ((process.env.NODE_ENV !== 'production')) {\n        if (moduleName in parentState) {\n          console.warn(\n            (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n          );\n        }\n      }\n      Vue.set(parentState, moduleName, module.state);\n    });\n  }\n\n  var local = module.context = makeLocalContext(store, namespace, path);\n\n  module.forEachMutation(function (mutation, key) {\n    var namespacedType = namespace + key;\n    registerMutation(store, namespacedType, mutation, local);\n  });\n\n  module.forEachAction(function (action, key) {\n    var type = action.root ? key : namespace + key;\n    var handler = action.handler || action;\n    registerAction(store, type, handler, local);\n  });\n\n  module.forEachGetter(function (getter, key) {\n    var namespacedType = namespace + key;\n    registerGetter(store, namespacedType, getter, local);\n  });\n\n  module.forEachChild(function (child, key) {\n    installModule(store, rootState, path.concat(key), child, hot);\n  });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n  var noNamespace = namespace === '';\n\n  var local = {\n    dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n          console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      return store.dispatch(type, payload)\n    },\n\n    commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n          console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      store.commit(type, payload, options);\n    }\n  };\n\n  // getters and state object must be gotten lazily\n  // because they will be changed by vm update\n  Object.defineProperties(local, {\n    getters: {\n      get: noNamespace\n        ? function () { return store.getters; }\n        : function () { return makeLocalGetters(store, namespace); }\n    },\n    state: {\n      get: function () { return getNestedState(store.state, path); }\n    }\n  });\n\n  return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n  if (!store._makeLocalGettersCache[namespace]) {\n    var gettersProxy = {};\n    var splitPos = namespace.length;\n    Object.keys(store.getters).forEach(function (type) {\n      // skip if the target getter is not match this namespace\n      if (type.slice(0, splitPos) !== namespace) { return }\n\n      // extract local getter type\n      var localType = type.slice(splitPos);\n\n      // Add a port to the getters proxy.\n      // Define as getter property because\n      // we do not want to evaluate the getters in this time.\n      Object.defineProperty(gettersProxy, localType, {\n        get: function () { return store.getters[type]; },\n        enumerable: true\n      });\n    });\n    store._makeLocalGettersCache[namespace] = gettersProxy;\n  }\n\n  return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n  var entry = store._mutations[type] || (store._mutations[type] = []);\n  entry.push(function wrappedMutationHandler (payload) {\n    handler.call(store, local.state, payload);\n  });\n}\n\nfunction registerAction (store, type, handler, local) {\n  var entry = store._actions[type] || (store._actions[type] = []);\n  entry.push(function wrappedActionHandler (payload) {\n    var res = handler.call(store, {\n      dispatch: local.dispatch,\n      commit: local.commit,\n      getters: local.getters,\n      state: local.state,\n      rootGetters: store.getters,\n      rootState: store.state\n    }, payload);\n    if (!isPromise(res)) {\n      res = Promise.resolve(res);\n    }\n    if (store._devtoolHook) {\n      return res.catch(function (err) {\n        store._devtoolHook.emit('vuex:error', err);\n        throw err\n      })\n    } else {\n      return res\n    }\n  });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n  if (store._wrappedGetters[type]) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] duplicate getter key: \" + type));\n    }\n    return\n  }\n  store._wrappedGetters[type] = function wrappedGetter (store) {\n    return rawGetter(\n      local.state, // local state\n      local.getters, // local getters\n      store.state, // root state\n      store.getters // root getters\n    )\n  };\n}\n\nfunction enableStrictMode (store) {\n  store._vm.$watch(function () { return this._data.$$state }, function () {\n    if ((process.env.NODE_ENV !== 'production')) {\n      assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n    }\n  }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n  return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n  if (isObject(type) && type.type) {\n    options = payload;\n    payload = type;\n    type = type.type;\n  }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n  }\n\n  return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n  if (Vue && _Vue === Vue) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error(\n        '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n      );\n    }\n    return\n  }\n  Vue = _Vue;\n  applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n    console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(states).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedState () {\n      var state = this.$store.state;\n      var getters = this.$store.getters;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n        if (!module) {\n          return\n        }\n        state = module.context.state;\n        getters = module.context.getters;\n      }\n      return typeof val === 'function'\n        ? val.call(this, state, getters)\n        : state[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n    console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(mutations).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedMutation () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // Get the commit method from store\n      var commit = this.$store.commit;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n        if (!module) {\n          return\n        }\n        commit = module.context.commit;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [commit].concat(args))\n        : commit.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n    console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(getters).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    // The namespace has been mutated by normalizeNamespace\n    val = namespace + val;\n    res[key] = function mappedGetter () {\n      if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n        return\n      }\n      if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n        console.error((\"[vuex] unknown getter: \" + val));\n        return\n      }\n      return this.$store.getters[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n    console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(actions).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedAction () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // get dispatch function from store\n      var dispatch = this.$store.dispatch;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n        if (!module) {\n          return\n        }\n        dispatch = module.context.dispatch;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [dispatch].concat(args))\n        : dispatch.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n  mapState: mapState.bind(null, namespace),\n  mapGetters: mapGetters.bind(null, namespace),\n  mapMutations: mapMutations.bind(null, namespace),\n  mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n  if (!isValidMap(map)) {\n    return []\n  }\n  return Array.isArray(map)\n    ? map.map(function (key) { return ({ key: key, val: key }); })\n    : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n  return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n  return function (namespace, map) {\n    if (typeof namespace !== 'string') {\n      map = namespace;\n      namespace = '';\n    } else if (namespace.charAt(namespace.length - 1) !== '/') {\n      namespace += '/';\n    }\n    return fn(namespace, map)\n  }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n  var module = store._modulesNamespaceMap[namespace];\n  if ((process.env.NODE_ENV !== 'production') && !module) {\n    console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n  }\n  return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n  if ( ref === void 0 ) ref = {};\n  var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n  var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n  var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n  var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n  var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n  var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n  var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n  var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n  var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n  return function (store) {\n    var prevState = deepCopy(store.state);\n\n    if (typeof logger === 'undefined') {\n      return\n    }\n\n    if (logMutations) {\n      store.subscribe(function (mutation, state) {\n        var nextState = deepCopy(state);\n\n        if (filter(mutation, prevState, nextState)) {\n          var formattedTime = getFormattedTime();\n          var formattedMutation = mutationTransformer(mutation);\n          var message = \"mutation \" + (mutation.type) + formattedTime;\n\n          startMessage(logger, message, collapsed);\n          logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n          logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n          logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n          endMessage(logger);\n        }\n\n        prevState = nextState;\n      });\n    }\n\n    if (logActions) {\n      store.subscribeAction(function (action, state) {\n        if (actionFilter(action, state)) {\n          var formattedTime = getFormattedTime();\n          var formattedAction = actionTransformer(action);\n          var message = \"action \" + (action.type) + formattedTime;\n\n          startMessage(logger, message, collapsed);\n          logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n          endMessage(logger);\n        }\n      });\n    }\n  }\n}\n\nfunction startMessage (logger, message, collapsed) {\n  var startMessage = collapsed\n    ? logger.groupCollapsed\n    : logger.group;\n\n  // render\n  try {\n    startMessage.call(logger, message);\n  } catch (e) {\n    logger.log(message);\n  }\n}\n\nfunction endMessage (logger) {\n  try {\n    logger.groupEnd();\n  } catch (e) {\n    logger.log('—— log end ——');\n  }\n}\n\nfunction getFormattedTime () {\n  var time = new Date();\n  return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n  return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n  return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n  Store: Store,\n  install: install,\n  version: '3.6.2',\n  mapState: mapState,\n  mapMutations: mapMutations,\n  mapGetters: mapGetters,\n  mapActions: mapActions,\n  createNamespacedHelpers: createNamespacedHelpers,\n  createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeMax = Math.max,\n    nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = merge;\n","/**\n * @param {string} key string to settify, e.g. 'varName'\n * @returns {string} settified string, e.g. 'setVarName'\n */\nfunction settify (key) {\n    return `set${key[0].toUpperCase()}${key.slice(1)}`\n}\n\n/**\n * Returns an object of simple mutations for a state object, where\n * simple means that they will just replace an entry for any key.\n * For example, given a state object {key: value}, an object\n * {setKey: (state, payload) => state[key] = payload} will be returned.\n * This is useful to avoid writing basic operations.\n * @param {Object} state state to generate mutations for\n * @returns {Object.<String, Function>} object of mutations\n */\nexport function generateSimpleMutations (state) {\n    return Object.keys(state)\n        .reduce((acc, key) => {\n            return {\n                ...acc,\n                [settify(key)]: (moduleState, payload) => {\n                    moduleState[key] = payload;\n                }\n            };\n        }, {});\n}\n\n/**\n * Returns an object of simple getters for a state object, where\n * simple means that they will just return an entry for any key.\n * For example, given a state object {key: value}, an object\n * {key: state => state[key]} will be returned.\n * This is useful to avoid writing basic operations.\n * @param {Object} state state to generate getters for\n * @returns {Object.<String, Function>} object of getters\n */\nexport function generateSimpleGetters (state) {\n    return Object.keys(state)\n        .reduce((acc, key) => ({\n            ...acc,\n            [key]: s => s[key]\n        }), {});\n}\n\n/**\n * Generator to use vuex variables as v-model. Used analoguous to vuex helper functions, e.g.\n * you may use `getSetGenerator(['varName'])` or `getSetGenerator('moduleName', ['varName'])`\n * to create `this.varName` in vue component that may then be used as a v-model.\n * @param {(String|String[])} prefixOrNames Either store prefix (module names '/'-separated) or ...\n * @param {?String[]} names Array of names to generate v-model-like computed-usable property for.\n *                          Mustn't be set if prefixOrNames is String[].\n * @returns {Array} Array of get-settable objects\n */\n export function getSetGenerator (prefixOrNames, names) {\n    const prefix = typeof prefixOrNames === 'string' ? `${prefixOrNames}/` : ''\n    const reducable = typeof prefixOrNames === 'string' ? names : prefixOrNames\n\n    return reducable.reduce((acc, curr) => {\n        acc[curr] = {\n            get() {\n                return this.$store.getters[`${prefix}${curr}`]\n            },\n            set(value) {\n                this.$store.commit(\n                    `${prefix}${settify(curr)}`,\n                    value\n                )\n            },\n        }\n        return acc\n    }, {})\n}\n","export default () => {}\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n};\nconst makeString = object => {\n  if (object == null) return '';\n  return '' + object;\n};\nconst copy = (a, s, t) => {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n  const stack = !isString(path) ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper(object)) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper(object)) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n};\nconst setPath = (object, path, newValue) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nconst escape = data => {\n  if (isString(data)) {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n};\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n};\nconst deepFind = function (obj, path) {\n  let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n};\nconst getCleanedCode = code => code && code.replace('_', '-');\n\nconst consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return this.forward(args, 'log', '', true);\n  }\n  warn() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return this.forward(args, 'warn', '', true);\n  }\n  error() {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n    return this.forward(args, 'error', '');\n  }\n  deprecate() {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  emit(event) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(_ref => {\n        let [observer, numTimesAdded] = _ref;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(_ref2 => {\n        let [observer, numTimesAdded] = _ref2;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer.apply(observer, [event, ...args]);\n        }\n      });\n    }\n  }\n}\n\nclass ResourceStore extends EventEmitter {\n  constructor(data) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (isString(key) && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.indexOf('.') > -1) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || !isString(key)) return result;\n    return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value) {\n    let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      silent: false\n    };\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n      silent: false\n    };\n    for (const m in resources) {\n      if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n      silent: false,\n      skipCopy: false\n    };\n    let path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    if (this.options.compatibilityAPI === 'v1') return {\n      ...{},\n      ...this.getResource(lng, ns)\n    };\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    if (key === undefined || key === null) {\n      return false;\n    }\n    const resolved = this.resolve(key, options);\n    return resolved && resolved.res !== undefined;\n  }\n  extractFromKey(key, options) {\n    let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let namespaces = options.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces: isString(namespaces) ? [namespaces] : namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    return {\n      key,\n      namespaces: isString(namespaces) ? [namespaces] : namespaces\n    };\n  }\n  translate(keys, options, lastKey) {\n    if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n      options = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof options === 'object') options = {\n      ...options\n    };\n    if (!options) options = {};\n    if (keys === undefined || keys === null) return '';\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], options);\n    const namespace = namespaces[namespaces.length - 1];\n    const lng = options.lng || this.language;\n    const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng && lng.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(options)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(options)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, options);\n    let res = resolved && resolved.res;\n    const resUsedKey = resolved && resolved.usedKey || key;\n    const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n    const resType = Object.prototype.toString.apply(res);\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const handleAsObject = !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\n    if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(res))) {\n      if (!options.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n          ...options,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(options);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = Array.isArray(res);\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in res) {\n          if (Object.prototype.hasOwnProperty.call(res, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            copy[m] = this.translate(deepKey, {\n              ...options,\n              ...{\n                joinArrays: false,\n                ns: namespaces\n              }\n            });\n            if (copy[m] === deepKey) copy[m] = res[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, options, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      const needsPluralHandling = options.count !== undefined && !isString(options.count);\n      const hasDefaultValue = Translator.hasDefaultValue(options);\n      const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n      const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n        ordinal: false\n      }) : '';\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...options,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n        } else {\n          lngs.push(options.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n          } else if (this.backendConnector && this.backendConnector.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, options);\n              if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, options, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        if (this.options.compatibilityAPI !== 'v1') {\n          res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n        } else {\n          res = this.options.parseMissingKeyHandler(res);\n        }\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(options);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, options, resolved, lastKey) {\n    var _this = this;\n    if (this.i18nFormat && this.i18nFormat.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...options\n      }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!options.skipInterpolation) {\n      if (options.interpolation) this.interpolator.init({\n        ...options,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...options.interpolation\n          }\n        }\n      });\n      const skipOnVariables = isString(res) && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = options.replace && !isString(options.replace) ? options.replace : options;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, options.lng || this.language || resolved.usedLng, options);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) options.nest = false;\n      }\n      if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = this.language || resolved.usedLng;\n      if (options.nest !== false) res = this.interpolator.nest(res, function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (lastKey && lastKey[0] === args[0] && !options.context) {\n          _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return _this.translate(...args, key);\n      }, options);\n      if (options.interpolation) this.interpolator.reset();\n    }\n    const postProcess = options.postProcess || this.options.postProcess;\n    const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n    if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(options)\n        },\n        ...options\n      } : options, this);\n    }\n    return res;\n  }\n  resolve(keys) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (isString(keys)) keys = [keys];\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, options);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = options.count !== undefined && !isString(options.count);\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const needsContextHandling = options.context !== undefined && (isString(options.context) || typeof options.context === 'number') && options.context !== '';\n      const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n          checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              finalKeys.push(key + pluralSuffix);\n              if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                finalKeys.push(contextKey + pluralSuffix);\n                if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, options);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && !isString(options.replace);\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data.count = options.count;\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nconst capitalize = string => string.charAt(0).toUpperCase() + string.slice(1);\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (isString(code) && code.indexOf('-') > -1) {\n      if (typeof Intl !== 'undefined' && typeof Intl.getCanonicalLocales !== 'undefined') {\n        try {\n          let formattedCode = Intl.getCanonicalLocales(code)[0];\n          if (formattedCode && this.options.lowerCaseLng) {\n            formattedCode = formattedCode.toLowerCase();\n          }\n          if (formattedCode) return formattedCode;\n        } catch (e) {}\n      }\n      const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n      let p = code.split('-');\n      if (this.options.lowerCaseLng) {\n        p = p.map(part => part.toLowerCase());\n      } else if (p.length === 2) {\n        p[0] = p[0].toLowerCase();\n        p[1] = p[1].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n      } else if (p.length === 3) {\n        p[0] = p[0].toLowerCase();\n        if (p[1].length === 2) p[1] = p[1].toUpperCase();\n        if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n      }\n      return p.join('-');\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return supportedLng;\n          if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n          if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n          if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (isString(fallbacks)) fallbacks = [fallbacks];\n    if (Array.isArray(fallbacks)) return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (isString(code)) {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n    });\n    return codes;\n  }\n}\n\nlet sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nlet _rulesPluralsTypes = {\n  1: n => Number(n > 1),\n  2: n => Number(n != 1),\n  3: n => 0,\n  4: n => Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2),\n  5: n => Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5),\n  6: n => Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2),\n  7: n => Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2),\n  8: n => Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3),\n  9: n => Number(n >= 2),\n  10: n => Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4),\n  11: n => Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3),\n  12: n => Number(n % 10 != 1 || n % 100 == 11),\n  13: n => Number(n !== 0),\n  14: n => Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3),\n  15: n => Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2),\n  16: n => Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2),\n  17: n => Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1),\n  18: n => Number(n == 0 ? 0 : n == 1 ? 1 : 2),\n  19: n => Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3),\n  20: n => Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2),\n  21: n => Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0),\n  22: n => Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3)\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nconst createRules = () => {\n  const rules = {};\n  sets.forEach(set => {\n    set.lngs.forEach(l => {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n};\nclass PluralResolver {\n  constructor(languageUtils) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n      this.options.compatibilityJSON = 'v3';\n      this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n    }\n    this.rules = createRules();\n    this.pluralRulesCache = {};\n  }\n  addRule(lng, obj) {\n    this.rules[lng] = obj;\n  }\n  clearCache() {\n    this.pluralRulesCache = {};\n  }\n  getRule(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (this.shouldUseIntlApi()) {\n      const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n      const type = options.ordinal ? 'ordinal' : 'cardinal';\n      const cacheKey = JSON.stringify({\n        cleanedCode,\n        type\n      });\n      if (cacheKey in this.pluralRulesCache) {\n        return this.pluralRulesCache[cacheKey];\n      }\n      let rule;\n      try {\n        rule = new Intl.PluralRules(cleanedCode, {\n          type\n        });\n      } catch (err) {\n        if (!code.match(/-|_/)) return;\n        const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n        rule = this.getRule(lngPart, options);\n      }\n      this.pluralRulesCache[cacheKey] = rule;\n      return rule;\n    }\n    return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n  }\n  needsPlural(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (this.shouldUseIntlApi()) {\n      return rule && rule.resolvedOptions().pluralCategories.length > 1;\n    }\n    return rule && rule.numbers.length > 1;\n  }\n  getPluralFormsOfKey(code, key) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (!rule) {\n      return [];\n    }\n    if (this.shouldUseIntlApi()) {\n      return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n    }\n    return rule.numbers.map(number => this.getSuffix(code, number, options));\n  }\n  getSuffix(code, count) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    const rule = this.getRule(code, options);\n    if (rule) {\n      if (this.shouldUseIntlApi()) {\n        return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n      }\n      return this.getSuffixRetroCompatible(rule, count);\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return '';\n  }\n  getSuffixRetroCompatible(rule, count) {\n    const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n    let suffix = rule.numbers[idx];\n    if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      if (suffix === 2) {\n        suffix = 'plural';\n      } else if (suffix === 1) {\n        suffix = '';\n      }\n    }\n    const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n    if (this.options.compatibilityJSON === 'v1') {\n      if (suffix === 1) return '';\n      if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n      return returnSuffix();\n    } else if (this.options.compatibilityJSON === 'v2') {\n      return returnSuffix();\n    } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      return returnSuffix();\n    }\n    return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n  }\n  shouldUseIntlApi() {\n    return !nonIntlVersions.includes(this.options.compatibilityJSON);\n  }\n}\n\nconst deepFindWithDefaults = function (data, defaultData, key) {\n  let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n  let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && isString(key)) {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options.interpolation && options.interpolation.format || (value => value);\n    this.init(options);\n  }\n  init() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const {\n      escape: escape$1,\n      escapeValue,\n      useRawValueToEscape,\n      prefix,\n      prefixEscaped,\n      suffix,\n      suffixEscaped,\n      formatSeparator,\n      unescapeSuffix,\n      unescapePrefix,\n      nestingPrefix,\n      nestingPrefixEscaped,\n      nestingSuffix,\n      nestingSuffixEscaped,\n      nestingOptionsSeparator,\n      maxReplaces,\n      alwaysFormat\n    } = options.interpolation;\n    this.escape = escape$1 !== undefined ? escape$1 : escape;\n    this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n    this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n    this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n    this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n    this.formatSeparator = formatSeparator || ',';\n    this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n    this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n    this.maxReplaces = maxReplaces || 1000;\n    this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp && existingRegExp.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    const handleFormat = key => {\n      if (key.indexOf(this.formatSeparator) < 0) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => regexSafe(val)\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = isString(temp) ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (!isString(value) && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], safeValue);\n        if (skipOnVariables) {\n          todo.regex.lastIndex += value.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let match;\n    let value;\n    let clonedOptions;\n    const handleHasOptions = (key, inheritedOptions) => {\n      const sep = this.nestingOptionsSeparator;\n      if (key.indexOf(sep) < 0) return key;\n      const c = key.split(new RegExp(`${sep}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n      return key;\n    };\n    while (match = this.nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      let doReduce = false;\n      if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n        const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n        match[1] = r.shift();\n        formatters = r;\n        doReduce = true;\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && !isString(value)) return value;\n      if (!isString(value)) value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (doReduce) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  }\n}\n\nconst parseFormatStr = formatStr => {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (opt) {\n          const [key, ...rest] = opt.split(':');\n          const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n          const trimmedKey = key.trim();\n          if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n          if (val === 'false') formatOptions[trimmedKey] = false;\n          if (val === 'true') formatOptions[trimmedKey] = true;\n          if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n        }\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n};\nconst createCachedFormatter = fn => {\n  const cache = {};\n  return (val, lng, options) => {\n    let optForCache = options;\n    if (options && options.interpolationkey && options.formatParams && options.formatParams[options.interpolationkey] && options[options.interpolationkey]) {\n      optForCache = {\n        ...optForCache,\n        [options.interpolationkey]: undefined\n      };\n    }\n    const key = lng + JSON.stringify(optForCache);\n    let formatter = cache[key];\n    if (!formatter) {\n      formatter = fn(getCleanedCode(lng), options);\n      cache[key] = formatter;\n    }\n    return formatter(val);\n  };\n};\nclass Formatter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.formats = {\n      number: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n    this.init(options);\n  }\n  init(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    this.formatSeparator = options.interpolation.formatSeparator || ',';\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const formats = format.split(this.formatSeparator);\n    if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n      const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n      formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n    }\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nconst removePending = (q, name) => {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n};\nclass Connector extends EventEmitter {\n  constructor(backend, store, services) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    if (this.backend && this.backend.init) {\n      this.backend.init(services, options.backend, options);\n    }\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (!err && data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    if (err && data) this.state[name] = 0;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName) {\n    let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n    let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n    let callback = arguments.length > 5 ? arguments[5] : undefined;\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let callback = arguments.length > 3 ? arguments[3] : undefined;\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n    if (isString(namespaces)) namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name) {\n    let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n    let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n    if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend && this.backend.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nconst get = () => ({\n  debug: false,\n  initImmediate: true,\n  ns: ['translation'],\n  defaultNS: ['translation'],\n  fallbackLng: ['dev'],\n  fallbackNS: false,\n  supportedLngs: false,\n  nonExplicitSupportedLngs: false,\n  load: 'all',\n  preload: false,\n  simplifyPluralSuffix: true,\n  keySeparator: '.',\n  nsSeparator: ':',\n  pluralSeparator: '_',\n  contextSeparator: '_',\n  partialBundledLanguages: false,\n  saveMissing: false,\n  updateMissing: false,\n  saveMissingTo: 'fallback',\n  saveMissingPlurals: true,\n  missingKeyHandler: false,\n  missingInterpolationHandler: false,\n  postProcess: false,\n  postProcessPassResolved: false,\n  returnNull: false,\n  returnEmptyString: true,\n  returnObjects: false,\n  joinArrays: false,\n  returnedObjectHandler: false,\n  parseMissingKeyHandler: false,\n  appendNamespaceToMissingKey: false,\n  appendNamespaceToCIMode: false,\n  overloadTranslationOptionHandler: args => {\n    let ret = {};\n    if (typeof args[1] === 'object') ret = args[1];\n    if (isString(args[1])) ret.defaultValue = args[1];\n    if (isString(args[2])) ret.tDescription = args[2];\n    if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n      const options = args[3] || args[2];\n      Object.keys(options).forEach(key => {\n        ret[key] = options[key];\n      });\n    }\n    return ret;\n  },\n  interpolation: {\n    escapeValue: true,\n    format: value => value,\n    prefix: '{{',\n    suffix: '}}',\n    formatSeparator: ',',\n    unescapePrefix: '-',\n    nestingPrefix: '$t(',\n    nestingSuffix: ')',\n    nestingOptionsSeparator: ',',\n    maxReplaces: 1000,\n    skipOnVariables: true\n  }\n});\nconst transformOptions = options => {\n  if (isString(options.ns)) options.ns = [options.ns];\n  if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n  if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n};\nclass I18n extends EventEmitter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initImmediate) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init() {\n    var _this = this;\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    this.isInitializing = true;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n      if (isString(options.ns)) {\n        options.defaultNS = options.ns;\n      } else if (options.ns.indexOf('translation') < 0) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    if (this.options.compatibilityAPI !== 'v1') {\n      this.options.interpolation = {\n        ...defOpts.interpolation,\n        ...this.options.interpolation\n      };\n    }\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    const createClassOnDemand = ClassOrObject => {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    };\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else if (typeof Intl !== 'undefined') {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator,\n        compatibilityJSON: this.options.compatibilityJSON,\n        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n      });\n      if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n        s.formatter = createClassOnDemand(formatter);\n        s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', function (event) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        _this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', function (event) {\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        _this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = function () {\n        return _this.store[fcName](...arguments);\n      };\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = function () {\n        _this.store[fcName](...arguments);\n        return _this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        this.isInitializing = false;\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initImmediate) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language) {\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    let usedCallback = callback;\n    const usedLng = isString(language) ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      if (this.options.preload) {\n        this.options.preload.forEach(l => append(l));\n      }\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'function') {\n      callback = lngs;\n      lngs = undefined;\n    }\n    if (typeof ns === 'function') {\n      callback = ns;\n      ns = undefined;\n    }\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].indexOf(l) > -1) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n  }\n  changeLanguage(lng, callback) {\n    var _this2 = this;\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        setLngProps(l);\n        this.translator.changeLanguage(l);\n        this.isLanguageChangingTo = undefined;\n        this.emit('languageChanged', l);\n        this.logger.log('languageChanged', l);\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve(function () {\n        return _this2.t(...arguments);\n      });\n      if (callback) callback(err, function () {\n        return _this2.t(...arguments);\n      });\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const l = isString(lngs) ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix) {\n    var _this3 = this;\n    const fixedT = function (key, opts) {\n      let options;\n      if (typeof opts !== 'object') {\n        for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n          rest[_key3 - 2] = arguments[_key3];\n        }\n        options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        options = {\n          ...opts\n        };\n      }\n      options.lng = options.lng || fixedT.lng;\n      options.lngs = options.lngs || fixedT.lngs;\n      options.ns = options.ns || fixedT.ns;\n      if (options.keyPrefix !== '') options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const keySeparator = _this3.options.keySeparator || '.';\n      let resultKey;\n      if (options.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n      } else {\n        resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return _this3.t(resultKey, options);\n    };\n    if (isString(lng)) {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t() {\n    return this.translator && this.translator.translate(...arguments);\n  }\n  exists() {\n    return this.translator && this.translator.exists(...arguments);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 0 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (isString(ns)) ns = [ns];\n    ns.forEach(n => {\n      if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (isString(lngs)) lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n    return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    return new I18n(options, callback);\n  }\n  cloneInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      clone.store = new ResourceStore(this.store.data, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', function (event) {\n      for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        args[_key4 - 1] = arguments[_key4];\n      }\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import { Feature, Map } from 'ol'\nimport VectorLayer from 'ol/layer/Vector'\nimport VectorSource from 'ol/source/Vector'\n\n// returns feature if it's a cluster feature, or the cluster the feature is in.\nexport default function (map: Map, feature: Feature, layerId: string): Feature {\n  if (feature.get('features')) {\n    return feature\n  }\n\n  const layer = map\n    .getLayers()\n    .getArray()\n    .find((layer) => layer.get('id') === feature.get(layerId))\n\n  if (!(layer instanceof VectorLayer)) {\n    throw new Error(\n      `@polar/lib-get-cluster: The layer with the id ${layerId} either does not exist or is not a VectorLayer.`\n    )\n  }\n\n  // If the layer can be found, it has a source\n  const cluster = (layer.getSource() as VectorSource)\n    .getFeatures()\n    .find((candidate: Feature) => candidate.get('features').includes(feature))\n\n  if (!(cluster instanceof Feature)) {\n    throw new Error(\n      '@polar/lib-get-cluster: No cluster could be found for the given feature.'\n    )\n  }\n  // The given feature should be the last in the array, as it the one \"above\" all thus added last\n  cluster.set('features', [\n    ...cluster.get('features').filter((f: Feature) => f !== feature),\n    feature,\n  ])\n  // true = silent change (prevents cluster recomputation & rerender)\n  cluster.set(layerId, feature.get(layerId), true)\n  return cluster\n}\n","import { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport { rawLayerList } from '@masterportal/masterportalapi'\nimport { Module } from 'vuex'\nimport WMSCapabilities from 'ol/format/WMSCapabilities'\n\nconst parser = new WMSCapabilities()\n\nexport interface CoreCapabilitiesState {\n  /**\n   * maps a layer id to its GetCapabilities xml return value;\n   * null if an error happened\n   */\n  capabilities: Record<string, string | null>\n}\n\nconst getInitialState = (): CoreCapabilitiesState => ({\n  capabilities: {},\n})\n\nexport const CapabilitiesModule: Module<CoreCapabilitiesState, object> = {\n  namespaced: true,\n  state: getInitialState(),\n  actions: {\n    loadCapabilities({ commit, getters }, id: string) {\n      const previous = getters.capabilities[id]\n      if (typeof previous !== 'undefined' && previous !== null) {\n        console.warn(\n          `@polar/core: Re-fired loadCapabilities on id '${id}' albeit the GetCapabilities have already been successfully fetched. No re-fetch will occur.`\n        )\n        return\n      }\n\n      // block access to prevent duplicate requests\n      commit('addCapabilities', { id, string: null })\n\n      const service = rawLayerList.getLayerWhere({ id })\n      if (!service || !service.url || !service.version || !service.typ) {\n        console.error(\n          `@polar/core: Missing data for service '${service}' with id '${id}'.`\n        )\n        return\n      }\n\n      const capabilitiesUrl = `${service.url}?service=${service.typ}&version=${service.version}&request=GetCapabilities`\n\n      fetch(capabilitiesUrl)\n        .then((response) => response.text())\n        .then((string) => commit('addCapabilities', { id, string }))\n        .catch((e) => {\n          console.error(\n            `@polar/core: Capabilities from ${capabilitiesUrl} could not be fetched.`,\n            e\n          )\n          commit('addCapabilities', { id, string: null })\n        })\n    },\n  },\n  mutations: {\n    addCapabilities(state, { id, string }) {\n      state.capabilities[id] = string\n    },\n  },\n  getters: {\n    ...generateSimpleGetters(getInitialState()),\n    wmsCapabilitiesAsJsonById:\n      (state: CoreCapabilitiesState) =>\n      (id: string): object | null => {\n        const xml = state.capabilities[id]\n        if (xml) {\n          try {\n            const json = parser.read(xml)\n            return json\n          } catch (e) {\n            console.error(\n              `@polar/core: Error reading xml '${xml}' for id '${id}'.`,\n              e\n            )\n          }\n        }\n        return null\n      },\n  },\n}\n","/**\n * @module ol/interaction/Draw\n */\nimport Feature from '../Feature.js';\nimport MapBrowserEvent from '../MapBrowserEvent.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {\n  distance,\n  squaredDistance as squaredCoordinateDistance,\n} from '../coordinate.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {\n  always,\n  never,\n  noModifierKeys,\n  shiftKeyOnly,\n} from '../events/condition.js';\nimport {\n  boundingExtent,\n  getBottomLeft,\n  getBottomRight,\n  getTopLeft,\n  getTopRight,\n} from '../extent.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport Circle from '../geom/Circle.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon, {fromCircle, makeRegular} from '../geom/Polygon.js';\nimport {getStrideForLayout} from '../geom/SimpleGeometry.js';\nimport VectorLayer from '../layer/Vector.js';\nimport {clamp, squaredDistance, toFixed} from '../math.js';\nimport {fromUserCoordinate, getUserProjection} from '../proj.js';\nimport VectorSource from '../source/Vector.js';\nimport {createEditingStyle} from '../style/Style.js';\nimport PointerInteraction from './Pointer.js';\nimport InteractionProperty from './Property.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../geom/Geometry.js\").Type} type Geometry type of\n * the geometries being drawn with this instance.\n * @property {number} [clickTolerance=6] The maximum distance in pixels between\n * \"down\" and \"up\" for a \"up\" event to be considered a \"click\" event and\n * actually add a point/vertex to the geometry being drawn.  The default of `6`\n * was chosen for the draw interaction to behave correctly on mouse as well as\n * on touch devices.\n * @property {import(\"../Collection.js\").default<Feature>} [features]\n * Destination collection for the drawn features.\n * @property {VectorSource} [source] Destination source for\n * the drawn features.\n * @property {number} [dragVertexDelay=500] Delay in milliseconds after pointerdown\n * before the current vertex can be dragged to its exact position.\n * @property {number} [snapTolerance=12] Pixel distance for snapping to the\n * drawing finish. Must be greater than `0`.\n * @property {boolean} [stopClick=false] Stop click, singleclick, and\n * doubleclick events from firing during drawing.\n * @property {number} [maxPoints] The number of points that can be drawn before\n * a polygon ring or line string is finished. By default there is no\n * restriction.\n * @property {number} [minPoints] The number of points that must be drawn\n * before a polygon ring or line string can be finished. Default is `3` for\n * polygon rings and `2` for line strings.\n * @property {import(\"../events/condition.js\").Condition} [finishCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether the drawing can be finished. Not used when drawing\n * POINT or MULTI_POINT geometries.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike} [style]\n * Style for sketch features. The draw interaction can have up to three sketch features, depending on the mode.\n * It will always contain a feature with a `Point` geometry that corresponds to the current cursor position.\n * If the mode is `LineString` or `Polygon`, and there is at least one drawn point, it will also contain a feature with\n * a `LineString` geometry that corresponds to the line between the already drawn points and the current cursor position.\n * If the mode is `Polygon`, and there is at least one drawn point, it will also contain a feature with a `Polygon`\n * geometry that corresponds to the polygon between the already drawn points and the current cursor position\n * (note that this polygon has only two points if only one point is drawn).\n * If the mode is `Circle`, and there is one point drawn, it will also contain a feature with a `Circle` geometry whose\n * center is the drawn point and the radius is determined by the distance between the drawn point and the cursor.\n * @property {GeometryFunction} [geometryFunction]\n * Function that is called when a geometry's coordinates are updated.\n * @property {string} [geometryName] Geometry name to use for features created\n * by the draw interaction.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default {@link module:ol/events/condition.noModifierKeys}, i.e. a click,\n * adds a vertex or deactivates freehand drawing.\n * @property {boolean} [freehand=false] Operate in freehand mode for lines,\n * polygons, and circles.  This makes the interaction always operate in freehand\n * mode and takes precedence over any `freehandCondition` option.\n * @property {import(\"../events/condition.js\").Condition} [freehandCondition]\n * Condition that activates freehand drawing for lines and polygons. This\n * function takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and\n * returns a boolean to indicate whether that event should be handled. The\n * default is {@link module:ol/events/condition.shiftKeyOnly}, meaning that the\n * Shift key activates freehand drawing.\n * @property {boolean|import(\"../events/condition.js\").Condition} [trace=false] Trace a portion of another geometry.\n * Ignored when in freehand mode.\n * @property {VectorSource} [traceSource] Source for features to trace.  If tracing is active and a `traceSource` is\n * not provided, the interaction's `source` will be used.  Tracing requires that the interaction is configured with\n * either a `traceSource` or a `source`.\n * @property {boolean} [wrapX=false] Wrap the world horizontally on the sketch\n * overlay.\n * @property {import(\"../geom/Geometry.js\").GeometryLayout} [geometryLayout='XY'] Layout of the\n * feature geometries created by the draw interaction.\n */\n\n/**\n * Coordinate type when drawing points.\n * @typedef {import(\"../coordinate.js\").Coordinate} PointCoordType\n */\n\n/**\n * Coordinate type when drawing lines.\n * @typedef {Array<import(\"../coordinate.js\").Coordinate>} LineCoordType\n */\n\n/**\n * Coordinate type when drawing polygons.\n * @typedef {Array<Array<import(\"../coordinate.js\").Coordinate>>} PolyCoordType\n */\n\n/**\n * Types used for drawing coordinates.\n * @typedef {PointCoordType|LineCoordType|PolyCoordType} SketchCoordType\n */\n\n/**\n * @typedef {Object} TraceState\n * @property {boolean} active Tracing active.\n * @property {import(\"../pixel.js\").Pixel} [startPx] The initially clicked pixel location.\n * @property {Array<TraceTarget>} [targets] Targets available for tracing.\n * @property {number} [targetIndex] The index of the currently traced target.  A value of -1 indicates\n * that no trace target is active.\n */\n\n/**\n * @typedef {Object} TraceTarget\n * @property {Array<import(\"../coordinate.js\").Coordinate>} coordinates Target coordinates.\n * @property {boolean} ring The target coordinates are a linear ring.\n * @property {number} startIndex The index of first traced coordinate.  A fractional index represents an\n * edge intersection.  Index values for rings will wrap (may be negative or larger than coordinates length).\n * @property {number} endIndex The index of last traced coordinate.  Details from startIndex also apply here.\n */\n\n/**\n * Function that takes an array of coordinates and an optional existing geometry\n * and a projection as arguments, and returns a geometry. The optional existing\n * geometry is the geometry that is returned when the function is called without\n * a second argument.\n * @typedef {function(!SketchCoordType, import(\"../geom/SimpleGeometry.js\").default,\n *     import(\"../proj/Projection.js\").default):\n *     import(\"../geom/SimpleGeometry.js\").default} GeometryFunction\n */\n\n/**\n * @typedef {'Point' | 'LineString' | 'Polygon' | 'Circle'} Mode\n * Draw mode.  This collapses multi-part geometry types with their single-part\n * cousins.\n */\n\n/**\n * @enum {string}\n */\nconst DrawEventType = {\n  /**\n   * Triggered upon feature draw start\n   * @event DrawEvent#drawstart\n   * @api\n   */\n  DRAWSTART: 'drawstart',\n  /**\n   * Triggered upon feature draw end\n   * @event DrawEvent#drawend\n   * @api\n   */\n  DRAWEND: 'drawend',\n  /**\n   * Triggered upon feature draw abortion\n   * @event DrawEvent#drawabort\n   * @api\n   */\n  DRAWABORT: 'drawabort',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Draw~Draw} instances are\n * instances of this type.\n */\nexport class DrawEvent extends Event {\n  /**\n   * @param {DrawEventType} type Type.\n   * @param {Feature} feature The feature drawn.\n   */\n  constructor(type, feature) {\n    super(type);\n\n    /**\n     * The feature being drawn.\n     * @type {Feature}\n     * @api\n     */\n    this.feature = feature;\n  }\n}\n\n/**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The coordinate.\n * @param {Array<Feature>} features The candidate features.\n * @return {Array<TraceTarget>} The trace targets.\n */\nfunction getTraceTargets(coordinate, features) {\n  /**\n   * @type {Array<TraceTarget>}\n   */\n  const targets = [];\n\n  for (let i = 0; i < features.length; ++i) {\n    const feature = features[i];\n    const geometry = feature.getGeometry();\n    appendGeometryTraceTargets(coordinate, geometry, targets);\n  }\n\n  return targets;\n}\n\n/**\n * @param {import(\"../coordinate.js\").Coordinate} a One coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} b Another coordinate.\n * @return {number} The squared distance between the two coordinates.\n */\nfunction getSquaredDistance(a, b) {\n  return squaredDistance(a[0], a[1], b[0], b[1]);\n}\n\n/**\n * @param {LineCoordType} coordinates The ring coordinates.\n * @param {number} index The index.  May be wrapped.\n * @return {import(\"../coordinate.js\").Coordinate} The coordinate.\n */\nfunction getCoordinate(coordinates, index) {\n  const count = coordinates.length;\n  if (index < 0) {\n    return coordinates[index + count];\n  }\n  if (index >= count) {\n    return coordinates[index - count];\n  }\n  return coordinates[index];\n}\n\n/**\n * Get the cumulative squared distance along a ring path.  The end index index may be \"wrapped\" and it may\n * be less than the start index to indicate the direction of travel.  The start and end index may have\n * a fractional part to indicate a point between two coordinates.\n * @param {LineCoordType} coordinates Ring coordinates.\n * @param {number} startIndex The start index.\n * @param {number} endIndex The end index.\n * @return {number} The cumulative squared distance along the ring path.\n */\nfunction getCumulativeSquaredDistance(coordinates, startIndex, endIndex) {\n  let lowIndex, highIndex;\n  if (startIndex < endIndex) {\n    lowIndex = startIndex;\n    highIndex = endIndex;\n  } else {\n    lowIndex = endIndex;\n    highIndex = startIndex;\n  }\n  const lowWholeIndex = Math.ceil(lowIndex);\n  const highWholeIndex = Math.floor(highIndex);\n\n  if (lowWholeIndex > highWholeIndex) {\n    // both start and end are on the same segment\n    const start = interpolateCoordinate(coordinates, lowIndex);\n    const end = interpolateCoordinate(coordinates, highIndex);\n    return getSquaredDistance(start, end);\n  }\n\n  let sd = 0;\n\n  if (lowIndex < lowWholeIndex) {\n    const start = interpolateCoordinate(coordinates, lowIndex);\n    const end = getCoordinate(coordinates, lowWholeIndex);\n    sd += getSquaredDistance(start, end);\n  }\n\n  if (highWholeIndex < highIndex) {\n    const start = getCoordinate(coordinates, highWholeIndex);\n    const end = interpolateCoordinate(coordinates, highIndex);\n    sd += getSquaredDistance(start, end);\n  }\n\n  for (let i = lowWholeIndex; i < highWholeIndex - 1; ++i) {\n    const start = getCoordinate(coordinates, i);\n    const end = getCoordinate(coordinates, i + 1);\n    sd += getSquaredDistance(start, end);\n  }\n\n  return sd;\n}\n\n/**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The coordinate.\n * @param {import(\"../geom/Geometry.js\").default} geometry The candidate geometry.\n * @param {Array<TraceTarget>} targets The trace targets.\n */\nfunction appendGeometryTraceTargets(coordinate, geometry, targets) {\n  if (geometry instanceof LineString) {\n    appendTraceTarget(coordinate, geometry.getCoordinates(), false, targets);\n    return;\n  }\n  if (geometry instanceof MultiLineString) {\n    const coordinates = geometry.getCoordinates();\n    for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n      appendTraceTarget(coordinate, coordinates[i], false, targets);\n    }\n    return;\n  }\n  if (geometry instanceof Polygon) {\n    const coordinates = geometry.getCoordinates();\n    for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n      appendTraceTarget(coordinate, coordinates[i], true, targets);\n    }\n    return;\n  }\n  if (geometry instanceof MultiPolygon) {\n    const polys = geometry.getCoordinates();\n    for (let i = 0, ii = polys.length; i < ii; ++i) {\n      const coordinates = polys[i];\n      for (let j = 0, jj = coordinates.length; j < jj; ++j) {\n        appendTraceTarget(coordinate, coordinates[j], true, targets);\n      }\n    }\n    return;\n  }\n  if (geometry instanceof GeometryCollection) {\n    const geometries = geometry.getGeometries();\n    for (let i = 0; i < geometries.length; ++i) {\n      appendGeometryTraceTargets(coordinate, geometries[i], targets);\n    }\n    return;\n  }\n  // other types cannot be traced\n}\n\n/**\n * @typedef {Object} TraceTargetUpdateInfo\n * @property {number} index The new target index.\n * @property {number} endIndex The new segment end index.\n */\n\n/**\n * @type {TraceTargetUpdateInfo}\n */\nconst sharedUpdateInfo = {index: -1, endIndex: NaN};\n\n/**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The coordinate.\n * @param {TraceState} traceState The trace state.\n * @param {import(\"../Map.js\").default} map The map.\n * @param {number} snapTolerance The snap tolerance.\n * @return {TraceTargetUpdateInfo} Information about the new trace target.  The returned\n * object is reused between calls and must not be modified by the caller.\n */\nfunction getTraceTargetUpdate(coordinate, traceState, map, snapTolerance) {\n  const x = coordinate[0];\n  const y = coordinate[1];\n\n  let closestTargetDistance = Infinity;\n\n  let newTargetIndex = -1;\n  let newEndIndex = NaN;\n\n  for (\n    let targetIndex = 0;\n    targetIndex < traceState.targets.length;\n    ++targetIndex\n  ) {\n    const target = traceState.targets[targetIndex];\n    const coordinates = target.coordinates;\n\n    let minSegmentDistance = Infinity;\n    let endIndex;\n    for (\n      let coordinateIndex = 0;\n      coordinateIndex < coordinates.length - 1;\n      ++coordinateIndex\n    ) {\n      const start = coordinates[coordinateIndex];\n      const end = coordinates[coordinateIndex + 1];\n      const rel = getPointSegmentRelationship(x, y, start, end);\n      if (rel.squaredDistance < minSegmentDistance) {\n        minSegmentDistance = rel.squaredDistance;\n        endIndex = coordinateIndex + rel.along;\n      }\n    }\n\n    if (minSegmentDistance < closestTargetDistance) {\n      closestTargetDistance = minSegmentDistance;\n      if (target.ring && traceState.targetIndex === targetIndex) {\n        // same target, maintain the same trace direction\n        if (target.endIndex > target.startIndex) {\n          // forward trace\n          if (endIndex < target.startIndex) {\n            endIndex += coordinates.length;\n          }\n        } else if (target.endIndex < target.startIndex) {\n          // reverse trace\n          if (endIndex > target.startIndex) {\n            endIndex -= coordinates.length;\n          }\n        }\n      }\n      newEndIndex = endIndex;\n      newTargetIndex = targetIndex;\n    }\n  }\n\n  const newTarget = traceState.targets[newTargetIndex];\n  let considerBothDirections = newTarget.ring;\n  if (traceState.targetIndex === newTargetIndex && considerBothDirections) {\n    // only consider switching trace direction if close to the start\n    const newCoordinate = interpolateCoordinate(\n      newTarget.coordinates,\n      newEndIndex,\n    );\n    const pixel = map.getPixelFromCoordinate(newCoordinate);\n    if (distance(pixel, traceState.startPx) > snapTolerance) {\n      considerBothDirections = false;\n    }\n  }\n\n  if (considerBothDirections) {\n    const coordinates = newTarget.coordinates;\n    const count = coordinates.length;\n    const startIndex = newTarget.startIndex;\n    const endIndex = newEndIndex;\n    if (startIndex < endIndex) {\n      const forwardDistance = getCumulativeSquaredDistance(\n        coordinates,\n        startIndex,\n        endIndex,\n      );\n      const reverseDistance = getCumulativeSquaredDistance(\n        coordinates,\n        startIndex,\n        endIndex - count,\n      );\n      if (reverseDistance < forwardDistance) {\n        newEndIndex -= count;\n      }\n    } else {\n      const reverseDistance = getCumulativeSquaredDistance(\n        coordinates,\n        startIndex,\n        endIndex,\n      );\n      const forwardDistance = getCumulativeSquaredDistance(\n        coordinates,\n        startIndex,\n        endIndex + count,\n      );\n      if (forwardDistance < reverseDistance) {\n        newEndIndex += count;\n      }\n    }\n  }\n\n  sharedUpdateInfo.index = newTargetIndex;\n  sharedUpdateInfo.endIndex = newEndIndex;\n  return sharedUpdateInfo;\n}\n\n/**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The clicked coordinate.\n * @param {Array<import(\"../coordinate.js\").Coordinate>} coordinates The geometry component coordinates.\n * @param {boolean} ring The coordinates represent a linear ring.\n * @param {Array<TraceTarget>} targets The trace targets.\n */\nfunction appendTraceTarget(coordinate, coordinates, ring, targets) {\n  const x = coordinate[0];\n  const y = coordinate[1];\n  for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n    const start = coordinates[i];\n    const end = coordinates[i + 1];\n    const rel = getPointSegmentRelationship(x, y, start, end);\n    if (rel.squaredDistance === 0) {\n      const index = i + rel.along;\n      targets.push({\n        coordinates: coordinates,\n        ring: ring,\n        startIndex: index,\n        endIndex: index,\n      });\n      return;\n    }\n  }\n}\n\n/**\n * @typedef {Object} PointSegmentRelationship\n * @property {number} along The closest point expressed as a fraction along the segment length.\n * @property {number} squaredDistance The squared distance of the point to the segment.\n */\n\n/**\n * @type {PointSegmentRelationship}\n */\nconst sharedRel = {along: 0, squaredDistance: 0};\n\n/**\n * @param {number} x The point x.\n * @param {number} y The point y.\n * @param {import(\"../coordinate.js\").Coordinate} start The segment start.\n * @param {import(\"../coordinate.js\").Coordinate} end The segment end.\n * @return {PointSegmentRelationship} The point segment relationship.  The returned object is\n * shared between calls and must not be modified by the caller.\n */\nfunction getPointSegmentRelationship(x, y, start, end) {\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  let along = 0;\n  let px = x1;\n  let py = y1;\n  if (dx !== 0 || dy !== 0) {\n    along = clamp(((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy), 0, 1);\n    px += dx * along;\n    py += dy * along;\n  }\n\n  sharedRel.along = along;\n  sharedRel.squaredDistance = toFixed(squaredDistance(x, y, px, py), 10);\n  return sharedRel;\n}\n\n/**\n * @param {LineCoordType} coordinates The coordinates.\n * @param {number} index The index.  May be fractional and may wrap.\n * @return {import(\"../coordinate.js\").Coordinate} The interpolated coordinate.\n */\nfunction interpolateCoordinate(coordinates, index) {\n  const count = coordinates.length;\n\n  let startIndex = Math.floor(index);\n  const along = index - startIndex;\n  if (startIndex >= count) {\n    startIndex -= count;\n  } else if (startIndex < 0) {\n    startIndex += count;\n  }\n\n  let endIndex = startIndex + 1;\n  if (endIndex >= count) {\n    endIndex -= count;\n  }\n\n  const start = coordinates[startIndex];\n  const x0 = start[0];\n  const y0 = start[1];\n  const end = coordinates[endIndex];\n  const dx = end[0] - x0;\n  const dy = end[1] - y0;\n\n  return [x0 + dx * along, y0 + dy * along];\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'drawabort'|'drawend'|'drawstart', DrawEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'drawabort'|'drawend'|'drawstart', Return>} DrawOnSignature\n */\n\n/**\n * @classdesc\n * Interaction for drawing feature geometries.\n *\n * @fires DrawEvent\n * @api\n */\nclass Draw extends PointerInteraction {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n      options\n    );\n    if (!pointerOptions.stopDown) {\n      pointerOptions.stopDown = FALSE;\n    }\n\n    super(pointerOptions);\n\n    /***\n     * @type {DrawOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {DrawOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {DrawOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.shouldHandle_ = false;\n\n    /**\n     * @type {import(\"../pixel.js\").Pixel}\n     * @private\n     */\n    this.downPx_ = null;\n\n    /**\n     * @type {ReturnType<typeof setTimeout>}\n     * @private\n     */\n    this.downTimeout_;\n\n    /**\n     * @type {number|undefined}\n     * @private\n     */\n    this.lastDragTime_;\n\n    /**\n     * Pointer type of the last pointermove event\n     * @type {string}\n     * @private\n     */\n    this.pointerType_;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.freehand_ = false;\n\n    /**\n     * Target source for drawn features.\n     * @type {VectorSource|null}\n     * @private\n     */\n    this.source_ = options.source ? options.source : null;\n\n    /**\n     * Target collection for drawn features.\n     * @type {import(\"../Collection.js\").default<Feature>|null}\n     * @private\n     */\n    this.features_ = options.features ? options.features : null;\n\n    /**\n     * Pixel distance for snapping.\n     * @type {number}\n     * @private\n     */\n    this.snapTolerance_ = options.snapTolerance ? options.snapTolerance : 12;\n\n    /**\n     * Geometry type.\n     * @type {import(\"../geom/Geometry.js\").Type}\n     * @private\n     */\n    this.type_ = /** @type {import(\"../geom/Geometry.js\").Type} */ (\n      options.type\n    );\n\n    /**\n     * Drawing mode (derived from geometry type.\n     * @type {Mode}\n     * @private\n     */\n    this.mode_ = getMode(this.type_);\n\n    /**\n     * Stop click, singleclick, and doubleclick events from firing during drawing.\n     * Default is `false`.\n     * @type {boolean}\n     * @private\n     */\n    this.stopClick_ = !!options.stopClick;\n\n    /**\n     * The number of points that must be drawn before a polygon ring or line\n     * string can be finished.  The default is 3 for polygon rings and 2 for\n     * line strings.\n     * @type {number}\n     * @private\n     */\n    this.minPoints_ = options.minPoints\n      ? options.minPoints\n      : this.mode_ === 'Polygon'\n        ? 3\n        : 2;\n\n    /**\n     * The number of points that can be drawn before a polygon ring or line string\n     * is finished. The default is no restriction.\n     * @type {number}\n     * @private\n     */\n    this.maxPoints_ =\n      this.mode_ === 'Circle'\n        ? 2\n        : options.maxPoints\n          ? options.maxPoints\n          : Infinity;\n\n    /**\n     * A function to decide if a potential finish coordinate is permissible\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.finishCondition_ = options.finishCondition\n      ? options.finishCondition\n      : TRUE;\n\n    /**\n     * @private\n     * @type {import(\"../geom/Geometry.js\").GeometryLayout}\n     */\n    this.geometryLayout_ = options.geometryLayout\n      ? options.geometryLayout\n      : 'XY';\n\n    let geometryFunction = options.geometryFunction;\n    if (!geometryFunction) {\n      const mode = this.mode_;\n      if (mode === 'Circle') {\n        /**\n         * @param {!LineCoordType} coordinates The coordinates.\n         * @param {import(\"../geom/SimpleGeometry.js\").default|undefined} geometry Optional geometry.\n         * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n         * @return {import(\"../geom/SimpleGeometry.js\").default} A geometry.\n         */\n        geometryFunction = (coordinates, geometry, projection) => {\n          const circle = geometry\n            ? /** @type {Circle} */ (geometry)\n            : new Circle([NaN, NaN]);\n          const center = fromUserCoordinate(coordinates[0], projection);\n          const squaredLength = squaredCoordinateDistance(\n            center,\n            fromUserCoordinate(coordinates[coordinates.length - 1], projection),\n          );\n          circle.setCenterAndRadius(\n            center,\n            Math.sqrt(squaredLength),\n            this.geometryLayout_,\n          );\n          const userProjection = getUserProjection();\n          if (userProjection) {\n            circle.transform(projection, userProjection);\n          }\n          return circle;\n        };\n      } else {\n        let Constructor;\n        if (mode === 'Point') {\n          Constructor = Point;\n        } else if (mode === 'LineString') {\n          Constructor = LineString;\n        } else if (mode === 'Polygon') {\n          Constructor = Polygon;\n        }\n        /**\n         * @param {!LineCoordType} coordinates The coordinates.\n         * @param {import(\"../geom/SimpleGeometry.js\").default|undefined} geometry Optional geometry.\n         * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n         * @return {import(\"../geom/SimpleGeometry.js\").default} A geometry.\n         */\n        geometryFunction = (coordinates, geometry, projection) => {\n          if (geometry) {\n            if (mode === 'Polygon') {\n              if (coordinates[0].length) {\n                // Add a closing coordinate to match the first\n                geometry.setCoordinates(\n                  [coordinates[0].concat([coordinates[0][0]])],\n                  this.geometryLayout_,\n                );\n              } else {\n                geometry.setCoordinates([], this.geometryLayout_);\n              }\n            } else {\n              geometry.setCoordinates(coordinates, this.geometryLayout_);\n            }\n          } else {\n            geometry = new Constructor(coordinates, this.geometryLayout_);\n          }\n          return geometry;\n        };\n      }\n    }\n\n    /**\n     * @type {GeometryFunction}\n     * @private\n     */\n    this.geometryFunction_ = geometryFunction;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.dragVertexDelay_ =\n      options.dragVertexDelay !== undefined ? options.dragVertexDelay : 500;\n\n    /**\n     * Finish coordinate for the feature (first point for polygons, last point for\n     * linestrings).\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @private\n     */\n    this.finishCoordinate_ = null;\n\n    /**\n     * Sketch feature.\n     * @type {Feature<import('../geom/SimpleGeometry.js').default>}\n     * @private\n     */\n    this.sketchFeature_ = null;\n\n    /**\n     * Sketch point.\n     * @type {Feature<Point>}\n     * @private\n     */\n    this.sketchPoint_ = null;\n\n    /**\n     * Sketch coordinates. Used when drawing a line or polygon.\n     * @type {SketchCoordType}\n     * @private\n     */\n    this.sketchCoords_ = null;\n\n    /**\n     * Sketch line. Used when drawing polygon.\n     * @type {Feature<LineString>}\n     * @private\n     */\n    this.sketchLine_ = null;\n\n    /**\n     * Sketch line coordinates. Used when drawing a polygon or circle.\n     * @type {LineCoordType}\n     * @private\n     */\n    this.sketchLineCoords_ = null;\n\n    /**\n     * Squared tolerance for handling up events.  If the squared distance\n     * between a down and up event is greater than this tolerance, up events\n     * will not be handled.\n     * @type {number}\n     * @private\n     */\n    this.squaredClickTolerance_ = options.clickTolerance\n      ? options.clickTolerance * options.clickTolerance\n      : 36;\n\n    /**\n     * Draw overlay where our sketch features are drawn.\n     * @type {VectorLayer}\n     * @private\n     */\n    this.overlay_ = new VectorLayer({\n      source: new VectorSource({\n        useSpatialIndex: false,\n        wrapX: options.wrapX ? options.wrapX : false,\n      }),\n      style: options.style ? options.style : getDefaultStyleFunction(),\n      updateWhileInteracting: true,\n    });\n\n    /**\n     * Name of the geometry attribute for newly created features.\n     * @type {string|undefined}\n     * @private\n     */\n    this.geometryName_ = options.geometryName;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : noModifierKeys;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.freehandCondition_;\n    if (options.freehand) {\n      this.freehandCondition_ = always;\n    } else {\n      this.freehandCondition_ = options.freehandCondition\n        ? options.freehandCondition\n        : shiftKeyOnly;\n    }\n\n    /**\n     * @type {import(\"../events/condition.js\").Condition}\n     * @private\n     */\n    this.traceCondition_;\n    this.setTrace(options.trace || false);\n\n    /**\n     * @type {TraceState}\n     * @private\n     */\n    this.traceState_ = {active: false};\n\n    /**\n     * @type {VectorSource|null}\n     * @private\n     */\n    this.traceSource_ = options.traceSource || options.source || null;\n\n    this.addChangeListener(InteractionProperty.ACTIVE, this.updateState_);\n  }\n\n  /**\n   * Toggle tracing mode or set a tracing condition.\n   *\n   * @param {boolean|import(\"../events/condition.js\").Condition} trace A boolean to toggle tracing mode or an event\n   *     condition that will be checked when a feature is clicked to determine if tracing should be active.\n   */\n  setTrace(trace) {\n    let condition;\n    if (!trace) {\n      condition = never;\n    } else if (trace === true) {\n      condition = always;\n    } else {\n      condition = trace;\n    }\n    this.traceCondition_ = condition;\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(\"../Map.js\").default} map Map.\n   * @override\n   */\n  setMap(map) {\n    super.setMap(map);\n    this.updateState_();\n  }\n\n  /**\n   * Get the overlay layer that this interaction renders sketch features to.\n   * @return {VectorLayer} Overlay layer.\n   * @api\n   */\n  getOverlay() {\n    return this.overlay_;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may actually draw or finish the drawing.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @api\n   * @override\n   */\n  handleEvent(event) {\n    if (event.originalEvent.type === EventType.CONTEXTMENU) {\n      // Avoid context menu for long taps when drawing on mobile\n      event.originalEvent.preventDefault();\n    }\n    this.freehand_ = this.mode_ !== 'Point' && this.freehandCondition_(event);\n    let move = event.type === MapBrowserEventType.POINTERMOVE;\n    let pass = true;\n    if (\n      !this.freehand_ &&\n      this.lastDragTime_ &&\n      event.type === MapBrowserEventType.POINTERDRAG\n    ) {\n      const now = Date.now();\n      if (now - this.lastDragTime_ >= this.dragVertexDelay_) {\n        this.downPx_ = event.pixel;\n        this.shouldHandle_ = !this.freehand_;\n        move = true;\n      } else {\n        this.lastDragTime_ = undefined;\n      }\n      if (this.shouldHandle_ && this.downTimeout_ !== undefined) {\n        clearTimeout(this.downTimeout_);\n        this.downTimeout_ = undefined;\n      }\n    }\n    if (\n      this.freehand_ &&\n      event.type === MapBrowserEventType.POINTERDRAG &&\n      this.sketchFeature_ !== null\n    ) {\n      this.addToDrawing_(event.coordinate);\n      pass = false;\n    } else if (\n      this.freehand_ &&\n      event.type === MapBrowserEventType.POINTERDOWN\n    ) {\n      pass = false;\n    } else if (move && this.getPointerCount() < 2) {\n      pass = event.type === MapBrowserEventType.POINTERMOVE;\n      if (pass && this.freehand_) {\n        this.handlePointerMove_(event);\n        if (this.shouldHandle_) {\n          // Avoid page scrolling when freehand drawing on mobile\n          event.originalEvent.preventDefault();\n        }\n      } else if (\n        event.originalEvent.pointerType === 'mouse' ||\n        (event.type === MapBrowserEventType.POINTERDRAG &&\n          this.downTimeout_ === undefined)\n      ) {\n        this.handlePointerMove_(event);\n      }\n    } else if (event.type === MapBrowserEventType.DBLCLICK) {\n      pass = false;\n    }\n\n    return super.handleEvent(event) && pass;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(event) {\n    this.shouldHandle_ = !this.freehand_;\n\n    if (this.freehand_) {\n      this.downPx_ = event.pixel;\n      if (!this.finishCoordinate_) {\n        this.startDrawing_(event.coordinate);\n      }\n      return true;\n    }\n\n    if (!this.condition_(event)) {\n      this.lastDragTime_ = undefined;\n      return false;\n    }\n\n    this.lastDragTime_ = Date.now();\n    this.downTimeout_ = setTimeout(() => {\n      this.handlePointerMove_(\n        new MapBrowserEvent(\n          MapBrowserEventType.POINTERMOVE,\n          event.map,\n          event.originalEvent,\n          false,\n          event.frameState,\n        ),\n      );\n    }, this.dragVertexDelay_);\n    this.downPx_ = event.pixel;\n    return true;\n  }\n\n  /**\n   * @private\n   */\n  deactivateTrace_() {\n    this.traceState_ = {active: false};\n  }\n\n  /**\n   * Activate or deactivate trace state based on a browser event.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @private\n   */\n  toggleTraceState_(event) {\n    if (!this.traceSource_ || !this.traceCondition_(event)) {\n      return;\n    }\n\n    if (this.traceState_.active) {\n      this.deactivateTrace_();\n      return;\n    }\n\n    const map = this.getMap();\n    const lowerLeft = map.getCoordinateFromPixel([\n      event.pixel[0] - this.snapTolerance_,\n      event.pixel[1] + this.snapTolerance_,\n    ]);\n    const upperRight = map.getCoordinateFromPixel([\n      event.pixel[0] + this.snapTolerance_,\n      event.pixel[1] - this.snapTolerance_,\n    ]);\n    const extent = boundingExtent([lowerLeft, upperRight]);\n    const features = this.traceSource_.getFeaturesInExtent(extent);\n    if (features.length === 0) {\n      return;\n    }\n\n    const targets = getTraceTargets(event.coordinate, features);\n    if (targets.length) {\n      this.traceState_ = {\n        active: true,\n        startPx: event.pixel.slice(),\n        targets: targets,\n        targetIndex: -1,\n      };\n    }\n  }\n\n  /**\n   * @param {TraceTarget} target The trace target.\n   * @param {number} endIndex The new end index of the trace.\n   * @private\n   */\n  addOrRemoveTracedCoordinates_(target, endIndex) {\n    // three cases to handle:\n    //  1. traced in the same direction and points need adding\n    //  2. traced in the same direction and points need removing\n    //  3. traced in a new direction\n    const previouslyForward = target.startIndex <= target.endIndex;\n    const currentlyForward = target.startIndex <= endIndex;\n    if (previouslyForward === currentlyForward) {\n      // same direction\n      if (\n        (previouslyForward && endIndex > target.endIndex) ||\n        (!previouslyForward && endIndex < target.endIndex)\n      ) {\n        // case 1 - add new points\n        this.addTracedCoordinates_(target, target.endIndex, endIndex);\n      } else if (\n        (previouslyForward && endIndex < target.endIndex) ||\n        (!previouslyForward && endIndex > target.endIndex)\n      ) {\n        // case 2 - remove old points\n        this.removeTracedCoordinates_(endIndex, target.endIndex);\n      }\n    } else {\n      // case 3 - remove old points, add new points\n      this.removeTracedCoordinates_(target.startIndex, target.endIndex);\n      this.addTracedCoordinates_(target, target.startIndex, endIndex);\n    }\n  }\n\n  /**\n   * @param {number} fromIndex The start index.\n   * @param {number} toIndex The end index.\n   * @private\n   */\n  removeTracedCoordinates_(fromIndex, toIndex) {\n    if (fromIndex === toIndex) {\n      return;\n    }\n\n    let remove = 0;\n    if (fromIndex < toIndex) {\n      const start = Math.ceil(fromIndex);\n      let end = Math.floor(toIndex);\n      if (end === toIndex) {\n        end -= 1;\n      }\n      remove = end - start + 1;\n    } else {\n      const start = Math.floor(fromIndex);\n      let end = Math.ceil(toIndex);\n      if (end === toIndex) {\n        end += 1;\n      }\n      remove = start - end + 1;\n    }\n\n    if (remove > 0) {\n      this.removeLastPoints_(remove);\n    }\n  }\n\n  /**\n   * @param {TraceTarget} target The trace target.\n   * @param {number} fromIndex The start index.\n   * @param {number} toIndex The end index.\n   * @private\n   */\n  addTracedCoordinates_(target, fromIndex, toIndex) {\n    if (fromIndex === toIndex) {\n      return;\n    }\n\n    const coordinates = [];\n    if (fromIndex < toIndex) {\n      // forward trace\n      const start = Math.ceil(fromIndex);\n      let end = Math.floor(toIndex);\n      if (end === toIndex) {\n        // if end is snapped to a vertex, it will be added later\n        end -= 1;\n      }\n      for (let i = start; i <= end; ++i) {\n        coordinates.push(getCoordinate(target.coordinates, i));\n      }\n    } else {\n      // reverse trace\n      const start = Math.floor(fromIndex);\n      let end = Math.ceil(toIndex);\n      if (end === toIndex) {\n        end += 1;\n      }\n      for (let i = start; i >= end; --i) {\n        coordinates.push(getCoordinate(target.coordinates, i));\n      }\n    }\n    if (coordinates.length) {\n      this.appendCoordinates(coordinates);\n    }\n  }\n\n  /**\n   * Update the trace.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @private\n   */\n  updateTrace_(event) {\n    const traceState = this.traceState_;\n    if (!traceState.active) {\n      return;\n    }\n\n    if (traceState.targetIndex === -1) {\n      // check if we are ready to pick a target\n      if (distance(traceState.startPx, event.pixel) < this.snapTolerance_) {\n        return;\n      }\n    }\n\n    const updatedTraceTarget = getTraceTargetUpdate(\n      event.coordinate,\n      traceState,\n      this.getMap(),\n      this.snapTolerance_,\n    );\n\n    if (traceState.targetIndex !== updatedTraceTarget.index) {\n      // target changed\n      if (traceState.targetIndex !== -1) {\n        // remove points added during previous trace\n        const oldTarget = traceState.targets[traceState.targetIndex];\n        this.removeTracedCoordinates_(oldTarget.startIndex, oldTarget.endIndex);\n      }\n      // add points for the new target\n      const newTarget = traceState.targets[updatedTraceTarget.index];\n      this.addTracedCoordinates_(\n        newTarget,\n        newTarget.startIndex,\n        updatedTraceTarget.endIndex,\n      );\n    } else {\n      // target stayed the same\n      const target = traceState.targets[traceState.targetIndex];\n      this.addOrRemoveTracedCoordinates_(target, updatedTraceTarget.endIndex);\n    }\n\n    // modify the state with updated info\n    traceState.targetIndex = updatedTraceTarget.index;\n    const target = traceState.targets[traceState.targetIndex];\n    target.endIndex = updatedTraceTarget.endIndex;\n\n    // update event coordinate and pixel to match end point of final segment\n    const coordinate = interpolateCoordinate(\n      target.coordinates,\n      target.endIndex,\n    );\n    const pixel = this.getMap().getPixelFromCoordinate(coordinate);\n    event.coordinate = coordinate;\n    event.pixel = [Math.round(pixel[0]), Math.round(pixel[1])];\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(event) {\n    let pass = true;\n\n    if (this.getPointerCount() === 0) {\n      if (this.downTimeout_) {\n        clearTimeout(this.downTimeout_);\n        this.downTimeout_ = undefined;\n      }\n\n      this.handlePointerMove_(event);\n      const tracing = this.traceState_.active;\n      this.toggleTraceState_(event);\n\n      if (this.shouldHandle_) {\n        const startingToDraw = !this.finishCoordinate_;\n        if (startingToDraw) {\n          this.startDrawing_(event.coordinate);\n        }\n        if (!startingToDraw && this.freehand_) {\n          this.finishDrawing();\n        } else if (\n          !this.freehand_ &&\n          (!startingToDraw || this.mode_ === 'Point')\n        ) {\n          if (this.atFinish_(event.pixel, tracing)) {\n            if (this.finishCondition_(event)) {\n              this.finishDrawing();\n            }\n          } else {\n            this.addToDrawing_(event.coordinate);\n          }\n        }\n        pass = false;\n      } else if (this.freehand_) {\n        this.abortDrawing();\n      }\n    }\n\n    if (!pass && this.stopClick_) {\n      event.preventDefault();\n    }\n    return pass;\n  }\n\n  /**\n   * Handle move events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event A move event.\n   * @private\n   */\n  handlePointerMove_(event) {\n    this.pointerType_ = event.originalEvent.pointerType;\n    if (\n      this.downPx_ &&\n      ((!this.freehand_ && this.shouldHandle_) ||\n        (this.freehand_ && !this.shouldHandle_))\n    ) {\n      const downPx = this.downPx_;\n      const clickPx = event.pixel;\n      const dx = downPx[0] - clickPx[0];\n      const dy = downPx[1] - clickPx[1];\n      const squaredDistance = dx * dx + dy * dy;\n      this.shouldHandle_ = this.freehand_\n        ? squaredDistance > this.squaredClickTolerance_\n        : squaredDistance <= this.squaredClickTolerance_;\n      if (!this.shouldHandle_) {\n        return;\n      }\n    }\n\n    if (!this.finishCoordinate_) {\n      this.createOrUpdateSketchPoint_(event.coordinate.slice());\n      return;\n    }\n\n    this.updateTrace_(event);\n    this.modifyDrawing_(event.coordinate);\n  }\n\n  /**\n   * Determine if an event is within the snapping tolerance of the start coord.\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @param {boolean} [tracing] Drawing in trace mode (only stop if at the starting point).\n   * @return {boolean} The event is within the snapping tolerance of the start.\n   * @private\n   */\n  atFinish_(pixel, tracing) {\n    let at = false;\n    if (this.sketchFeature_) {\n      let potentiallyDone = false;\n      let potentiallyFinishCoordinates = [this.finishCoordinate_];\n      const mode = this.mode_;\n      if (mode === 'Point') {\n        at = true;\n      } else if (mode === 'Circle') {\n        at = this.sketchCoords_.length === 2;\n      } else if (mode === 'LineString') {\n        potentiallyDone =\n          !tracing && this.sketchCoords_.length > this.minPoints_;\n      } else if (mode === 'Polygon') {\n        const sketchCoords = /** @type {PolyCoordType} */ (this.sketchCoords_);\n        potentiallyDone = sketchCoords[0].length > this.minPoints_;\n        potentiallyFinishCoordinates = [\n          sketchCoords[0][0],\n          sketchCoords[0][sketchCoords[0].length - 2],\n        ];\n        if (tracing) {\n          potentiallyFinishCoordinates = [sketchCoords[0][0]];\n        } else {\n          potentiallyFinishCoordinates = [\n            sketchCoords[0][0],\n            sketchCoords[0][sketchCoords[0].length - 2],\n          ];\n        }\n      }\n      if (potentiallyDone) {\n        const map = this.getMap();\n        for (let i = 0, ii = potentiallyFinishCoordinates.length; i < ii; i++) {\n          const finishCoordinate = potentiallyFinishCoordinates[i];\n          const finishPixel = map.getPixelFromCoordinate(finishCoordinate);\n          const dx = pixel[0] - finishPixel[0];\n          const dy = pixel[1] - finishPixel[1];\n          const snapTolerance = this.freehand_ ? 1 : this.snapTolerance_;\n          at = Math.sqrt(dx * dx + dy * dy) <= snapTolerance;\n          if (at) {\n            this.finishCoordinate_ = finishCoordinate;\n            break;\n          }\n        }\n      }\n    }\n    return at;\n  }\n\n  /**\n   * @param {import(\"../coordinate\").Coordinate} coordinates Coordinate.\n   * @private\n   */\n  createOrUpdateSketchPoint_(coordinates) {\n    if (!this.sketchPoint_) {\n      this.sketchPoint_ = new Feature(new Point(coordinates));\n      this.updateSketchFeatures_();\n    } else {\n      const sketchPointGeom = this.sketchPoint_.getGeometry();\n      sketchPointGeom.setCoordinates(coordinates);\n    }\n  }\n\n  /**\n   * @param {import(\"../geom/Polygon.js\").default} geometry Polygon geometry.\n   * @private\n   */\n  createOrUpdateCustomSketchLine_(geometry) {\n    if (!this.sketchLine_) {\n      this.sketchLine_ = new Feature();\n    }\n    const ring = geometry.getLinearRing(0);\n    let sketchLineGeom = this.sketchLine_.getGeometry();\n    if (!sketchLineGeom) {\n      sketchLineGeom = new LineString(\n        ring.getFlatCoordinates(),\n        ring.getLayout(),\n      );\n      this.sketchLine_.setGeometry(sketchLineGeom);\n    } else {\n      sketchLineGeom.setFlatCoordinates(\n        ring.getLayout(),\n        ring.getFlatCoordinates(),\n      );\n      sketchLineGeom.changed();\n    }\n  }\n\n  /**\n   * Start the drawing.\n   * @param {import(\"../coordinate.js\").Coordinate} start Start coordinate.\n   * @private\n   */\n  startDrawing_(start) {\n    const projection = this.getMap().getView().getProjection();\n    const stride = getStrideForLayout(this.geometryLayout_);\n    while (start.length < stride) {\n      start.push(0);\n    }\n    this.finishCoordinate_ = start;\n    if (this.mode_ === 'Point') {\n      this.sketchCoords_ = start.slice();\n    } else if (this.mode_ === 'Polygon') {\n      this.sketchCoords_ = [[start.slice(), start.slice()]];\n      this.sketchLineCoords_ = this.sketchCoords_[0];\n    } else {\n      this.sketchCoords_ = [start.slice(), start.slice()];\n    }\n    if (this.sketchLineCoords_) {\n      this.sketchLine_ = new Feature(new LineString(this.sketchLineCoords_));\n    }\n    const geometry = this.geometryFunction_(\n      this.sketchCoords_,\n      undefined,\n      projection,\n    );\n    this.sketchFeature_ = new Feature();\n    if (this.geometryName_) {\n      this.sketchFeature_.setGeometryName(this.geometryName_);\n    }\n    this.sketchFeature_.setGeometry(geometry);\n    this.updateSketchFeatures_();\n    this.dispatchEvent(\n      new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_),\n    );\n  }\n\n  /**\n   * Modify the drawing.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @private\n   */\n  modifyDrawing_(coordinate) {\n    const map = this.getMap();\n    const geometry = this.sketchFeature_.getGeometry();\n    const projection = map.getView().getProjection();\n    const stride = getStrideForLayout(this.geometryLayout_);\n    let coordinates, last;\n    while (coordinate.length < stride) {\n      coordinate.push(0);\n    }\n    if (this.mode_ === 'Point') {\n      last = this.sketchCoords_;\n    } else if (this.mode_ === 'Polygon') {\n      coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_)[0];\n      last = coordinates[coordinates.length - 1];\n      if (this.atFinish_(map.getPixelFromCoordinate(coordinate))) {\n        // snap to finish\n        coordinate = this.finishCoordinate_.slice();\n      }\n    } else {\n      coordinates = this.sketchCoords_;\n      last = coordinates[coordinates.length - 1];\n    }\n    last[0] = coordinate[0];\n    last[1] = coordinate[1];\n    this.geometryFunction_(\n      /** @type {!LineCoordType} */ (this.sketchCoords_),\n      geometry,\n      projection,\n    );\n    if (this.sketchPoint_) {\n      const sketchPointGeom = this.sketchPoint_.getGeometry();\n      sketchPointGeom.setCoordinates(coordinate);\n    }\n    if (geometry.getType() === 'Polygon' && this.mode_ !== 'Polygon') {\n      this.createOrUpdateCustomSketchLine_(/** @type {Polygon} */ (geometry));\n    } else if (this.sketchLineCoords_) {\n      const sketchLineGeom = this.sketchLine_.getGeometry();\n      sketchLineGeom.setCoordinates(this.sketchLineCoords_);\n    }\n    this.updateSketchFeatures_();\n  }\n\n  /**\n   * Add a new coordinate to the drawing.\n   * @param {!PointCoordType} coordinate Coordinate\n   * @return {Feature<import(\"../geom/SimpleGeometry.js\").default>} The sketch feature.\n   * @private\n   */\n  addToDrawing_(coordinate) {\n    const geometry = this.sketchFeature_.getGeometry();\n    const projection = this.getMap().getView().getProjection();\n    let done;\n    let coordinates;\n    const mode = this.mode_;\n    if (mode === 'LineString' || mode === 'Circle') {\n      this.finishCoordinate_ = coordinate.slice();\n      coordinates = /** @type {LineCoordType} */ (this.sketchCoords_);\n      if (coordinates.length >= this.maxPoints_) {\n        if (this.freehand_) {\n          coordinates.pop();\n        } else {\n          done = true;\n        }\n      }\n      coordinates.push(coordinate.slice());\n      this.geometryFunction_(coordinates, geometry, projection);\n    } else if (mode === 'Polygon') {\n      coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_)[0];\n      if (coordinates.length >= this.maxPoints_) {\n        if (this.freehand_) {\n          coordinates.pop();\n        } else {\n          done = true;\n        }\n      }\n      coordinates.push(coordinate.slice());\n      if (done) {\n        this.finishCoordinate_ = coordinates[0];\n      }\n      this.geometryFunction_(this.sketchCoords_, geometry, projection);\n    }\n    this.createOrUpdateSketchPoint_(coordinate.slice());\n    this.updateSketchFeatures_();\n    if (done) {\n      return this.finishDrawing();\n    }\n    return this.sketchFeature_;\n  }\n\n  /**\n   * @param {number} n The number of points to remove.\n   */\n  removeLastPoints_(n) {\n    if (!this.sketchFeature_) {\n      return;\n    }\n    const geometry = this.sketchFeature_.getGeometry();\n    const projection = this.getMap().getView().getProjection();\n    const mode = this.mode_;\n    for (let i = 0; i < n; ++i) {\n      let coordinates;\n      if (mode === 'LineString' || mode === 'Circle') {\n        coordinates = /** @type {LineCoordType} */ (this.sketchCoords_);\n        coordinates.splice(-2, 1);\n        if (coordinates.length >= 2) {\n          this.finishCoordinate_ = coordinates[coordinates.length - 2].slice();\n          const finishCoordinate = this.finishCoordinate_.slice();\n          coordinates[coordinates.length - 1] = finishCoordinate;\n          this.createOrUpdateSketchPoint_(finishCoordinate);\n        }\n        this.geometryFunction_(coordinates, geometry, projection);\n        if (geometry.getType() === 'Polygon' && this.sketchLine_) {\n          this.createOrUpdateCustomSketchLine_(\n            /** @type {Polygon} */ (geometry),\n          );\n        }\n      } else if (mode === 'Polygon') {\n        coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_)[0];\n        coordinates.splice(-2, 1);\n        const sketchLineGeom = this.sketchLine_.getGeometry();\n        if (coordinates.length >= 2) {\n          const finishCoordinate = coordinates[coordinates.length - 2].slice();\n          coordinates[coordinates.length - 1] = finishCoordinate;\n          this.createOrUpdateSketchPoint_(finishCoordinate);\n        }\n        sketchLineGeom.setCoordinates(coordinates);\n        this.geometryFunction_(this.sketchCoords_, geometry, projection);\n      }\n\n      if (coordinates.length === 1) {\n        this.abortDrawing();\n        break;\n      }\n    }\n\n    this.updateSketchFeatures_();\n  }\n\n  /**\n   * Remove last point of the feature currently being drawn. Does not do anything when\n   * drawing POINT or MULTI_POINT geometries.\n   * @api\n   */\n  removeLastPoint() {\n    this.removeLastPoints_(1);\n  }\n\n  /**\n   * Stop drawing and add the sketch feature to the target layer.\n   * The {@link module:ol/interaction/Draw~DrawEventType.DRAWEND} event is\n   * dispatched before inserting the feature.\n   * @return {Feature<import(\"../geom/SimpleGeometry.js\").default>|null} The drawn feature.\n   * @api\n   */\n  finishDrawing() {\n    const sketchFeature = this.abortDrawing_();\n    if (!sketchFeature) {\n      return null;\n    }\n    let coordinates = this.sketchCoords_;\n    const geometry = sketchFeature.getGeometry();\n    const projection = this.getMap().getView().getProjection();\n    if (this.mode_ === 'LineString') {\n      // remove the redundant last point\n      coordinates.pop();\n      this.geometryFunction_(coordinates, geometry, projection);\n    } else if (this.mode_ === 'Polygon') {\n      // remove the redundant last point in ring\n      /** @type {PolyCoordType} */ (coordinates)[0].pop();\n      this.geometryFunction_(coordinates, geometry, projection);\n      coordinates = geometry.getCoordinates();\n    }\n\n    // cast multi-part geometries\n    if (this.type_ === 'MultiPoint') {\n      sketchFeature.setGeometry(\n        new MultiPoint([/** @type {PointCoordType} */ (coordinates)]),\n      );\n    } else if (this.type_ === 'MultiLineString') {\n      sketchFeature.setGeometry(\n        new MultiLineString([/** @type {LineCoordType} */ (coordinates)]),\n      );\n    } else if (this.type_ === 'MultiPolygon') {\n      sketchFeature.setGeometry(\n        new MultiPolygon([/** @type {PolyCoordType} */ (coordinates)]),\n      );\n    }\n\n    // First dispatch event to allow full set up of feature\n    this.dispatchEvent(new DrawEvent(DrawEventType.DRAWEND, sketchFeature));\n\n    // Then insert feature\n    if (this.features_) {\n      this.features_.push(sketchFeature);\n    }\n    if (this.source_) {\n      this.source_.addFeature(sketchFeature);\n    }\n    return sketchFeature;\n  }\n\n  /**\n   * Stop drawing without adding the sketch feature to the target layer.\n   * @return {Feature<import(\"../geom/SimpleGeometry.js\").default>|null} The sketch feature (or null if none).\n   * @private\n   */\n  abortDrawing_() {\n    this.finishCoordinate_ = null;\n    const sketchFeature = this.sketchFeature_;\n    this.sketchFeature_ = null;\n    this.sketchPoint_ = null;\n    this.sketchLine_ = null;\n    this.overlay_.getSource().clear(true);\n    this.deactivateTrace_();\n    return sketchFeature;\n  }\n\n  /**\n   * Stop drawing without adding the sketch feature to the target layer.\n   * @api\n   */\n  abortDrawing() {\n    const sketchFeature = this.abortDrawing_();\n    if (sketchFeature) {\n      this.dispatchEvent(new DrawEvent(DrawEventType.DRAWABORT, sketchFeature));\n    }\n  }\n\n  /**\n   * Append coordinates to the end of the geometry that is currently being drawn.\n   * This can be used when drawing LineStrings or Polygons. Coordinates will\n   * either be appended to the current LineString or the outer ring of the current\n   * Polygon. If no geometry is being drawn, a new one will be created.\n   * @param {!LineCoordType} coordinates Linear coordinates to be appended to\n   * the coordinate array.\n   * @api\n   */\n  appendCoordinates(coordinates) {\n    const mode = this.mode_;\n    const newDrawing = !this.sketchFeature_;\n    if (newDrawing) {\n      this.startDrawing_(coordinates[0]);\n    }\n    /** @type {LineCoordType} */\n    let sketchCoords;\n    if (mode === 'LineString' || mode === 'Circle') {\n      sketchCoords = /** @type {LineCoordType} */ (this.sketchCoords_);\n    } else if (mode === 'Polygon') {\n      sketchCoords =\n        this.sketchCoords_ && this.sketchCoords_.length\n          ? /** @type {PolyCoordType} */ (this.sketchCoords_)[0]\n          : [];\n    } else {\n      return;\n    }\n\n    if (newDrawing) {\n      sketchCoords.shift();\n    }\n\n    // Remove last coordinate from sketch drawing (this coordinate follows cursor position)\n    sketchCoords.pop();\n\n    // Append coordinate list\n    for (let i = 0; i < coordinates.length; i++) {\n      this.addToDrawing_(coordinates[i]);\n    }\n\n    const ending = coordinates[coordinates.length - 1];\n    // Duplicate last coordinate for sketch drawing (cursor position)\n    this.sketchFeature_ = this.addToDrawing_(ending);\n    this.modifyDrawing_(ending);\n  }\n\n  /**\n   * Initiate draw mode by starting from an existing geometry which will\n   * receive new additional points. This only works on features with\n   * `LineString` geometries, where the interaction will extend lines by adding\n   * points to the end of the coordinates array.\n   * This will change the original feature, instead of drawing a copy.\n   *\n   * The function will dispatch a `drawstart` event.\n   *\n   * @param {!Feature<LineString>} feature Feature to be extended.\n   * @api\n   */\n  extend(feature) {\n    const geometry = feature.getGeometry();\n    const lineString = geometry;\n    this.sketchFeature_ = feature;\n    this.sketchCoords_ = lineString.getCoordinates();\n    const last = this.sketchCoords_[this.sketchCoords_.length - 1];\n    this.finishCoordinate_ = last.slice();\n    this.sketchCoords_.push(last.slice());\n    this.sketchPoint_ = new Feature(new Point(last));\n    this.updateSketchFeatures_();\n    this.dispatchEvent(\n      new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_),\n    );\n  }\n\n  /**\n   * Redraw the sketch features.\n   * @private\n   */\n  updateSketchFeatures_() {\n    const sketchFeatures = [];\n    if (this.sketchFeature_) {\n      sketchFeatures.push(this.sketchFeature_);\n    }\n    if (this.sketchLine_) {\n      sketchFeatures.push(this.sketchLine_);\n    }\n    if (this.sketchPoint_) {\n      sketchFeatures.push(this.sketchPoint_);\n    }\n    const overlaySource = this.overlay_.getSource();\n    overlaySource.clear(true);\n    overlaySource.addFeatures(sketchFeatures);\n  }\n\n  /**\n   * @private\n   */\n  updateState_() {\n    const map = this.getMap();\n    const active = this.getActive();\n    if (!map || !active) {\n      this.abortDrawing();\n    }\n    this.overlay_.setMap(active ? map : null);\n  }\n}\n\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n  const styles = createEditingStyle();\n  return function (feature, resolution) {\n    return styles[feature.getGeometry().getType()];\n  };\n}\n\n/**\n * Create a `geometryFunction` for `type: 'Circle'` that will create a regular\n * polygon with a user specified number of sides and start angle instead of a\n * {@link import(\"../geom/Circle.js\").Circle} geometry.\n * @param {number} [sides] Number of sides of the regular polygon.\n *     Default is 32.\n * @param {number} [angle] Angle of the first point in counter-clockwise\n *     radians. 0 means East.\n *     Default is the angle defined by the heading from the center of the\n *     regular polygon to the current pointer position.\n * @return {GeometryFunction} Function that draws a polygon.\n * @api\n */\nexport function createRegularPolygon(sides, angle) {\n  return function (coordinates, geometry, projection) {\n    const center = fromUserCoordinate(\n      /** @type {LineCoordType} */ (coordinates)[0],\n      projection,\n    );\n    const end = fromUserCoordinate(\n      /** @type {LineCoordType} */ (coordinates)[coordinates.length - 1],\n      projection,\n    );\n    const radius = Math.sqrt(squaredCoordinateDistance(center, end));\n    geometry = geometry || fromCircle(new Circle(center), sides);\n\n    let internalAngle = angle;\n    if (!angle && angle !== 0) {\n      const x = end[0] - center[0];\n      const y = end[1] - center[1];\n      internalAngle = Math.atan2(y, x);\n    }\n    makeRegular(\n      /** @type {Polygon} */ (geometry),\n      center,\n      radius,\n      internalAngle,\n    );\n\n    const userProjection = getUserProjection();\n    if (userProjection) {\n      geometry.transform(projection, userProjection);\n    }\n    return geometry;\n  };\n}\n\n/**\n * Create a `geometryFunction` that will create a box-shaped polygon (aligned\n * with the coordinate system axes).  Use this with the draw interaction and\n * `type: 'Circle'` to return a box instead of a circle geometry.\n * @return {GeometryFunction} Function that draws a box-shaped polygon.\n * @api\n */\nexport function createBox() {\n  return function (coordinates, geometry, projection) {\n    const extent = boundingExtent(\n      /** @type {LineCoordType} */ ([\n        coordinates[0],\n        coordinates[coordinates.length - 1],\n      ]).map(function (coordinate) {\n        return fromUserCoordinate(coordinate, projection);\n      }),\n    );\n    const boxCoordinates = [\n      [\n        getBottomLeft(extent),\n        getBottomRight(extent),\n        getTopRight(extent),\n        getTopLeft(extent),\n        getBottomLeft(extent),\n      ],\n    ];\n    if (geometry) {\n      geometry.setCoordinates(boxCoordinates);\n    } else {\n      geometry = new Polygon(boxCoordinates);\n    }\n    const userProjection = getUserProjection();\n    if (userProjection) {\n      geometry.transform(projection, userProjection);\n    }\n    return geometry;\n  };\n}\n\n/**\n * Get the drawing mode.  The mode for multi-part geometries is the same as for\n * their single-part cousins.\n * @param {import(\"../geom/Geometry.js\").Type} type Geometry type.\n * @return {Mode} Drawing mode.\n */\nfunction getMode(type) {\n  switch (type) {\n    case 'Point':\n    case 'MultiPoint':\n      return 'Point';\n    case 'LineString':\n    case 'MultiLineString':\n      return 'LineString';\n    case 'Polygon':\n    case 'MultiPolygon':\n      return 'Polygon';\n    case 'Circle':\n      return 'Circle';\n    default:\n      throw new Error('Invalid type: ' + type);\n  }\n}\n\nexport default Draw;\n","/**\n * @module ol/interaction/Modify\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Feature from '../Feature.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {equals} from '../array.js';\nimport {\n  closestOnSegment,\n  distance as coordinateDistance,\n  equals as coordinatesEqual,\n  squaredDistance as squaredCoordinateDistance,\n  squaredDistanceToSegment,\n} from '../coordinate.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {\n  altKeyOnly,\n  always,\n  primaryAction,\n  singleClick,\n} from '../events/condition.js';\nimport {\n  boundingExtent,\n  buffer as bufferExtent,\n  createOrUpdateFromCoordinate as createExtent,\n} from '../extent.js';\nimport Point from '../geom/Point.js';\nimport {fromCircle} from '../geom/Polygon.js';\nimport VectorLayer from '../layer/Vector.js';\nimport {\n  fromUserCoordinate,\n  fromUserExtent,\n  getUserProjection,\n  toUserCoordinate,\n  toUserExtent,\n} from '../proj.js';\nimport VectorSource from '../source/Vector.js';\nimport VectorEventType from '../source/VectorEventType.js';\nimport RBush from '../structs/RBush.js';\nimport {createEditingStyle} from '../style/Style.js';\nimport {getUid} from '../util.js';\nimport PointerInteraction from './Pointer.js';\n\n/**\n * The segment index assigned to a circle's center when\n * breaking up a circle into ModifySegmentDataType segments.\n * @type {number}\n */\nconst CIRCLE_CENTER_INDEX = 0;\n\n/**\n * The segment index assigned to a circle's circumference when\n * breaking up a circle into ModifySegmentDataType segments.\n * @type {number}\n */\nconst CIRCLE_CIRCUMFERENCE_INDEX = 1;\n\nconst tempExtent = [0, 0, 0, 0];\nconst tempSegment = [];\n\n/**\n * @enum {string}\n */\nconst ModifyEventType = {\n  /**\n   * Triggered upon feature modification start\n   * @event ModifyEvent#modifystart\n   * @api\n   */\n  MODIFYSTART: 'modifystart',\n  /**\n   * Triggered upon feature modification end\n   * @event ModifyEvent#modifyend\n   * @api\n   */\n  MODIFYEND: 'modifyend',\n};\n\n/**\n * @typedef {Object} SegmentData\n * @property {Array<number>} [depth] Depth.\n * @property {Feature} feature Feature.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} [index] Index.\n * @property {Array<Array<number>>} segment Segment.\n * @property {Array<SegmentData>} [featureSegments] FeatureSegments.\n */\n\n/**\n * @typedef {[SegmentData, number]} DragSegment\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event will be considered to add or move a\n * vertex to the sketch. Default is\n * {@link module:ol/events/condition.primaryAction}.\n * @property {import(\"../events/condition.js\").Condition} [deleteCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. By default,\n * {@link module:ol/events/condition.singleClick} with\n * {@link module:ol/events/condition.altKeyOnly} results in a vertex deletion.\n * @property {import(\"../events/condition.js\").Condition} [insertVertexCondition] A\n * function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and\n * returns a boolean to indicate whether a new vertex should be added to the sketch\n * features. Default is {@link module:ol/events/condition.always}.\n * @property {number} [pixelTolerance=10] Pixel tolerance for considering the\n * pointer close enough to a segment or vertex for editing.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike} [style]\n * Style used for the modification point or vertex. For linestrings and polygons, this will\n * be the affected vertex, for circles a point along the circle, and for points the actual\n * point. If not configured, the default edit style is used (see {@link module:ol/style/Style~Style}).\n * When using a style function, the point feature passed to the function will have an `existing` property -\n * indicating whether there is an existing vertex underneath or not, a `features`\n * property - an array whose entries are the features that are being modified, and a `geometries`\n * property - an array whose entries are the geometries that are being modified. Both arrays are\n * in the same order. The `geometries` are only useful when modifying geometry collections, where\n * the geometry will be the particular geometry from the collection that is being modified.\n * @property {VectorSource} [source] The vector source with\n * features to modify.  If a vector source is not provided, a feature collection\n * must be provided with the `features` option.\n * @property {boolean|import(\"../layer/BaseVector\").default} [hitDetection] When configured, point\n * features will be considered for modification based on their visual appearance, instead of being within\n * the `pixelTolerance` from the pointer location. When a {@link module:ol/layer/BaseVector~BaseVectorLayer} is\n * provided, only the rendered representation of the features on that layer will be considered.\n * @property {Collection<Feature>} [features]\n * The features the interaction works on.  If a feature collection is not\n * provided, a vector source must be provided with the `source` option.\n * @property {boolean} [wrapX=false] Wrap the world horizontally on the sketch\n * overlay.\n * @property {boolean} [snapToPointer=!hitDetection] The vertex, point or segment being modified snaps to the\n * pointer coordinate when clicked within the `pixelTolerance`.\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Modify~Modify} instances are\n * instances of this type.\n */\nexport class ModifyEvent extends Event {\n  /**\n   * @param {ModifyEventType} type Type.\n   * @param {Collection<Feature>} features\n   * The features modified.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent\n   * Associated {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n   */\n  constructor(type, features, mapBrowserEvent) {\n    super(type);\n\n    /**\n     * The features being modified.\n     * @type {Collection<Feature>}\n     * @api\n     */\n    this.features = features;\n\n    /**\n     * Associated {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @api\n     */\n    this.mapBrowserEvent = mapBrowserEvent;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'modifyend'|'modifystart', ModifyEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'modifyend'|'modifystart', Return>} ModifyOnSignature\n */\n\n/**\n * @classdesc\n * Interaction for modifying feature geometries.  To modify features that have\n * been added to an existing source, construct the modify interaction with the\n * `source` option.  If you want to modify features in a collection (for example,\n * the collection used by a select interaction), construct the interaction with\n * the `features` option.  The interaction must be constructed with either a\n * `source` or `features` option.\n *\n * Cartesian distance from the pointer is used to determine the features that\n * will be modified. This means that geometries will only be considered for\n * modification when they are within the configured `pixelTolerance`. For point\n * geometries, the `hitDetection` option can be used to match their visual\n * appearance.\n *\n * By default, the interaction will allow deletion of vertices when the `alt`\n * key is pressed.  To configure the interaction with a different condition\n * for deletion, use the `deleteCondition` option.\n * @fires ModifyEvent\n * @api\n */\nclass Modify extends PointerInteraction {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    super(/** @type {import(\"./Pointer.js\").Options} */ (options));\n\n    /***\n     * @type {ModifyOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ModifyOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ModifyOnSignature<void>}\n     */\n    this.un;\n\n    /** @private */\n    this.boundHandleFeatureChange_ = this.handleFeatureChange_.bind(this);\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : primaryAction;\n\n    /**\n     * @private\n     * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n     * @return {boolean} Combined condition result.\n     */\n    this.defaultDeleteCondition_ = function (mapBrowserEvent) {\n      return altKeyOnly(mapBrowserEvent) && singleClick(mapBrowserEvent);\n    };\n\n    /**\n     * @type {import(\"../events/condition.js\").Condition}\n     * @private\n     */\n    this.deleteCondition_ = options.deleteCondition\n      ? options.deleteCondition\n      : this.defaultDeleteCondition_;\n\n    /**\n     * @type {import(\"../events/condition.js\").Condition}\n     * @private\n     */\n    this.insertVertexCondition_ = options.insertVertexCondition\n      ? options.insertVertexCondition\n      : always;\n\n    /**\n     * Editing vertex.\n     * @type {Feature<Point>}\n     * @private\n     */\n    this.vertexFeature_ = null;\n\n    /**\n     * Segments intersecting {@link this.vertexFeature_} by segment uid.\n     * @type {Object<string, boolean>}\n     * @private\n     */\n    this.vertexSegments_ = null;\n\n    /**\n     * @type {import(\"../pixel.js\").Pixel}\n     * @private\n     */\n    this.lastPixel_ = [0, 0];\n\n    /**\n     * Tracks if the next `singleclick` event should be ignored to prevent\n     * accidental deletion right after vertex creation.\n     * @type {boolean}\n     * @private\n     */\n    this.ignoreNextSingleClick_ = false;\n\n    /**\n     * @type {Collection<Feature>}\n     * @private\n     */\n    this.featuresBeingModified_ = null;\n\n    /**\n     * Segment RTree for each layer\n     * @type {RBush<SegmentData>}\n     * @private\n     */\n    this.rBush_ = new RBush();\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.pixelTolerance_ =\n      options.pixelTolerance !== undefined ? options.pixelTolerance : 10;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.snappedToVertex_ = false;\n\n    /**\n     * Indicate whether the interaction is currently changing a feature's\n     * coordinates.\n     * @type {boolean}\n     * @private\n     */\n    this.changingFeature_ = false;\n\n    /**\n     * @type {Array<DragSegment>}\n     * @private\n     */\n    this.dragSegments_ = [];\n\n    /**\n     * Draw overlay where sketch features are drawn.\n     * @type {VectorLayer}\n     * @private\n     */\n    this.overlay_ = new VectorLayer({\n      source: new VectorSource({\n        useSpatialIndex: false,\n        wrapX: !!options.wrapX,\n      }),\n      style: options.style ? options.style : getDefaultStyleFunction(),\n      updateWhileAnimating: true,\n      updateWhileInteracting: true,\n    });\n\n    /**\n     * @const\n     * @private\n     * @type {!Object<string, function(Feature, import(\"../geom/Geometry.js\").default): void>}\n     */\n    this.SEGMENT_WRITERS_ = {\n      'Point': this.writePointGeometry_.bind(this),\n      'LineString': this.writeLineStringGeometry_.bind(this),\n      'LinearRing': this.writeLineStringGeometry_.bind(this),\n      'Polygon': this.writePolygonGeometry_.bind(this),\n      'MultiPoint': this.writeMultiPointGeometry_.bind(this),\n      'MultiLineString': this.writeMultiLineStringGeometry_.bind(this),\n      'MultiPolygon': this.writeMultiPolygonGeometry_.bind(this),\n      'Circle': this.writeCircleGeometry_.bind(this),\n      'GeometryCollection': this.writeGeometryCollectionGeometry_.bind(this),\n    };\n\n    /**\n     * @type {VectorSource}\n     * @private\n     */\n    this.source_ = null;\n\n    /**\n     * @type {boolean|import(\"../layer/BaseVector\").default}\n     * @private\n     */\n    this.hitDetection_ = null;\n\n    /** @type {Collection<Feature>} */\n    let features;\n    if (options.features) {\n      features = options.features;\n    } else if (options.source) {\n      this.source_ = options.source;\n      features = new Collection(this.source_.getFeatures());\n      this.source_.addEventListener(\n        VectorEventType.ADDFEATURE,\n        this.handleSourceAdd_.bind(this),\n      );\n      this.source_.addEventListener(\n        VectorEventType.REMOVEFEATURE,\n        this.handleSourceRemove_.bind(this),\n      );\n    }\n    if (!features) {\n      throw new Error(\n        'The modify interaction requires features, a source or a layer',\n      );\n    }\n    if (options.hitDetection) {\n      this.hitDetection_ = options.hitDetection;\n    }\n\n    /**\n     * @type {Collection<Feature>}\n     * @private\n     */\n    this.features_ = features;\n\n    this.features_.forEach(this.addFeature_.bind(this));\n    this.features_.addEventListener(\n      CollectionEventType.ADD,\n      this.handleFeatureAdd_.bind(this),\n    );\n    this.features_.addEventListener(\n      CollectionEventType.REMOVE,\n      this.handleFeatureRemove_.bind(this),\n    );\n\n    /**\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @private\n     */\n    this.lastPointerEvent_ = null;\n\n    /**\n     * Delta (x, y in map units) between matched rtree vertex and pointer vertex.\n     * @type {Array<number>}\n     * @private\n     */\n    this.delta_ = [0, 0];\n\n    /**\n     * @private\n     */\n    this.snapToPointer_ =\n      options.snapToPointer === undefined\n        ? !this.hitDetection_\n        : options.snapToPointer;\n  }\n\n  /**\n   * @param {Feature} feature Feature.\n   * @private\n   */\n  addFeature_(feature) {\n    const geometry = feature.getGeometry();\n    if (geometry) {\n      const writer = this.SEGMENT_WRITERS_[geometry.getType()];\n      if (writer) {\n        writer(feature, geometry);\n      }\n    }\n    const map = this.getMap();\n    if (map && map.isRendered() && this.getActive()) {\n      this.handlePointerAtPixel_(map.getCoordinateFromPixel(this.lastPixel_));\n    }\n    feature.addEventListener(EventType.CHANGE, this.boundHandleFeatureChange_);\n  }\n\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Map browser event.\n   * @param {Array<SegmentData>} segments The segments subject to modification.\n   * @private\n   */\n  willModifyFeatures_(evt, segments) {\n    if (!this.featuresBeingModified_) {\n      this.featuresBeingModified_ = new Collection();\n      const features = this.featuresBeingModified_.getArray();\n      for (let i = 0, ii = segments.length; i < ii; ++i) {\n        const feature = segments[i].feature;\n        if (feature && !features.includes(feature)) {\n          this.featuresBeingModified_.push(feature);\n        }\n      }\n      if (this.featuresBeingModified_.getLength() === 0) {\n        this.featuresBeingModified_ = null;\n      } else {\n        this.dispatchEvent(\n          new ModifyEvent(\n            ModifyEventType.MODIFYSTART,\n            this.featuresBeingModified_,\n            evt,\n          ),\n        );\n      }\n    }\n  }\n\n  /**\n   * @param {Feature} feature Feature.\n   * @private\n   */\n  removeFeature_(feature) {\n    this.removeFeatureSegmentData_(feature);\n    // Remove the vertex feature if the collection of candidate features is empty.\n    if (this.vertexFeature_ && this.features_.getLength() === 0) {\n      this.overlay_.getSource().removeFeature(this.vertexFeature_);\n      this.vertexFeature_ = null;\n    }\n    feature.removeEventListener(\n      EventType.CHANGE,\n      this.boundHandleFeatureChange_,\n    );\n  }\n\n  /**\n   * @param {Feature} feature Feature.\n   * @private\n   */\n  removeFeatureSegmentData_(feature) {\n    const rBush = this.rBush_;\n    /** @type {Array<SegmentData>} */\n    const nodesToRemove = [];\n    rBush.forEach(\n      /**\n       * @param {SegmentData} node RTree node.\n       */\n      function (node) {\n        if (feature === node.feature) {\n          nodesToRemove.push(node);\n        }\n      },\n    );\n    for (let i = nodesToRemove.length - 1; i >= 0; --i) {\n      const nodeToRemove = nodesToRemove[i];\n      for (let j = this.dragSegments_.length - 1; j >= 0; --j) {\n        if (this.dragSegments_[j][0] === nodeToRemove) {\n          this.dragSegments_.splice(j, 1);\n        }\n      }\n      rBush.remove(nodeToRemove);\n    }\n  }\n\n  /**\n   * Activate or deactivate the interaction.\n   * @param {boolean} active Active.\n   * @observable\n   * @api\n   * @override\n   */\n  setActive(active) {\n    if (this.vertexFeature_ && !active) {\n      this.overlay_.getSource().removeFeature(this.vertexFeature_);\n      this.vertexFeature_ = null;\n    }\n    super.setActive(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(\"../Map.js\").default} map Map.\n   * @override\n   */\n  setMap(map) {\n    this.overlay_.setMap(map);\n    super.setMap(map);\n  }\n\n  /**\n   * Get the overlay layer that this interaction renders the modification point or vertex to.\n   * @return {VectorLayer} Overlay layer.\n   * @api\n   */\n  getOverlay() {\n    return this.overlay_;\n  }\n\n  /**\n   * @param {import(\"../source/Vector.js\").VectorSourceEvent} event Event.\n   * @private\n   */\n  handleSourceAdd_(event) {\n    if (event.feature) {\n      this.features_.push(event.feature);\n    }\n  }\n\n  /**\n   * @param {import(\"../source/Vector.js\").VectorSourceEvent} event Event.\n   * @private\n   */\n  handleSourceRemove_(event) {\n    if (event.feature) {\n      this.features_.remove(event.feature);\n    }\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<Feature>} evt Event.\n   * @private\n   */\n  handleFeatureAdd_(evt) {\n    this.addFeature_(evt.element);\n  }\n\n  /**\n   * @param {import(\"../events/Event.js\").default} evt Event.\n   * @private\n   */\n  handleFeatureChange_(evt) {\n    if (!this.changingFeature_) {\n      const feature = /** @type {Feature} */ (evt.target);\n      this.removeFeature_(feature);\n      this.addFeature_(feature);\n    }\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<Feature>} evt Event.\n   * @private\n   */\n  handleFeatureRemove_(evt) {\n    this.removeFeature_(evt.element);\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {Point} geometry Geometry.\n   * @private\n   */\n  writePointGeometry_(feature, geometry) {\n    const coordinates = geometry.getCoordinates();\n\n    /** @type {SegmentData} */\n    const segmentData = {\n      feature: feature,\n      geometry: geometry,\n      segment: [coordinates, coordinates],\n    };\n\n    this.rBush_.insert(geometry.getExtent(), segmentData);\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n   * @private\n   */\n  writeMultiPointGeometry_(feature, geometry) {\n    const points = geometry.getCoordinates();\n    for (let i = 0, ii = points.length; i < ii; ++i) {\n      const coordinates = points[i];\n\n      /** @type {SegmentData} */\n      const segmentData = {\n        feature: feature,\n        geometry: geometry,\n        depth: [i],\n        index: i,\n        segment: [coordinates, coordinates],\n      };\n\n      this.rBush_.insert(geometry.getExtent(), segmentData);\n    }\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n   * @private\n   */\n  writeLineStringGeometry_(feature, geometry) {\n    const coordinates = geometry.getCoordinates();\n    for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n      const segment = coordinates.slice(i, i + 2);\n\n      /** @type {SegmentData} */\n      const segmentData = {\n        feature: feature,\n        geometry: geometry,\n        index: i,\n        segment: segment,\n      };\n\n      this.rBush_.insert(boundingExtent(segment), segmentData);\n    }\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n   * @private\n   */\n  writeMultiLineStringGeometry_(feature, geometry) {\n    const lines = geometry.getCoordinates();\n    for (let j = 0, jj = lines.length; j < jj; ++j) {\n      const coordinates = lines[j];\n      for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n        const segment = coordinates.slice(i, i + 2);\n\n        /** @type {SegmentData} */\n        const segmentData = {\n          feature: feature,\n          geometry: geometry,\n          depth: [j],\n          index: i,\n          segment: segment,\n        };\n\n        this.rBush_.insert(boundingExtent(segment), segmentData);\n      }\n    }\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n   * @private\n   */\n  writePolygonGeometry_(feature, geometry) {\n    const rings = geometry.getCoordinates();\n    for (let j = 0, jj = rings.length; j < jj; ++j) {\n      const coordinates = rings[j];\n      for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n        const segment = coordinates.slice(i, i + 2);\n\n        /** @type {SegmentData} */\n        const segmentData = {\n          feature: feature,\n          geometry: geometry,\n          depth: [j],\n          index: i,\n          segment: segment,\n        };\n\n        this.rBush_.insert(boundingExtent(segment), segmentData);\n      }\n    }\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n   * @private\n   */\n  writeMultiPolygonGeometry_(feature, geometry) {\n    const polygons = geometry.getCoordinates();\n    for (let k = 0, kk = polygons.length; k < kk; ++k) {\n      const rings = polygons[k];\n      for (let j = 0, jj = rings.length; j < jj; ++j) {\n        const coordinates = rings[j];\n        for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n          const segment = coordinates.slice(i, i + 2);\n\n          /** @type {SegmentData} */\n          const segmentData = {\n            feature: feature,\n            geometry: geometry,\n            depth: [j, k],\n            index: i,\n            segment: segment,\n          };\n\n          this.rBush_.insert(boundingExtent(segment), segmentData);\n        }\n      }\n    }\n  }\n\n  /**\n   * We convert a circle into two segments.  The segment at index\n   * {@link CIRCLE_CENTER_INDEX} is the\n   * circle's center (a point).  The segment at index\n   * {@link CIRCLE_CIRCUMFERENCE_INDEX} is\n   * the circumference, and is not a line segment.\n   *\n   * @param {Feature} feature Feature.\n   * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n   * @private\n   */\n  writeCircleGeometry_(feature, geometry) {\n    const coordinates = geometry.getCenter();\n\n    /** @type {SegmentData} */\n    const centerSegmentData = {\n      feature: feature,\n      geometry: geometry,\n      index: CIRCLE_CENTER_INDEX,\n      segment: [coordinates, coordinates],\n    };\n\n    /** @type {SegmentData} */\n    const circumferenceSegmentData = {\n      feature: feature,\n      geometry: geometry,\n      index: CIRCLE_CIRCUMFERENCE_INDEX,\n      segment: [coordinates, coordinates],\n    };\n\n    const featureSegments = [centerSegmentData, circumferenceSegmentData];\n    centerSegmentData.featureSegments = featureSegments;\n    circumferenceSegmentData.featureSegments = featureSegments;\n    this.rBush_.insert(createExtent(coordinates), centerSegmentData);\n    let circleGeometry = /** @type {import(\"../geom/Geometry.js\").default} */ (\n      geometry\n    );\n    const userProjection = getUserProjection();\n    if (userProjection && this.getMap()) {\n      const projection = this.getMap().getView().getProjection();\n      circleGeometry = circleGeometry\n        .clone()\n        .transform(userProjection, projection);\n      circleGeometry = fromCircle(\n        /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry),\n      ).transform(projection, userProjection);\n    }\n    this.rBush_.insert(circleGeometry.getExtent(), circumferenceSegmentData);\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n   * @private\n   */\n  writeGeometryCollectionGeometry_(feature, geometry) {\n    const geometries = geometry.getGeometriesArray();\n    for (let i = 0; i < geometries.length; ++i) {\n      const geometry = geometries[i];\n      const writer = this.SEGMENT_WRITERS_[geometry.getType()];\n      writer(feature, geometry);\n    }\n  }\n\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n   * @param {Array<Feature>} features The features being modified.\n   * @param {Array<import(\"../geom/SimpleGeometry.js\").default>} geometries The geometries being modified.\n   * @param {boolean} existing The vertex represents an existing vertex.\n   * @return {Feature} Vertex feature.\n   * @private\n   */\n  createOrUpdateVertexFeature_(coordinates, features, geometries, existing) {\n    let vertexFeature = this.vertexFeature_;\n    if (!vertexFeature) {\n      vertexFeature = new Feature(new Point(coordinates));\n      this.vertexFeature_ = vertexFeature;\n      this.overlay_.getSource().addFeature(vertexFeature);\n    } else {\n      const geometry = vertexFeature.getGeometry();\n      geometry.setCoordinates(coordinates);\n    }\n    vertexFeature.set('features', features);\n    vertexFeature.set('geometries', geometries);\n    vertexFeature.set('existing', existing);\n    return vertexFeature;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may modify the geometry.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!mapBrowserEvent.originalEvent) {\n      return true;\n    }\n    this.lastPointerEvent_ = mapBrowserEvent;\n\n    let handled;\n    if (\n      !mapBrowserEvent.map.getView().getInteracting() &&\n      mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE &&\n      !this.handlingDownUpSequence\n    ) {\n      this.handlePointerMove_(mapBrowserEvent);\n    }\n    if (this.vertexFeature_ && this.deleteCondition_(mapBrowserEvent)) {\n      if (\n        mapBrowserEvent.type != MapBrowserEventType.SINGLECLICK ||\n        !this.ignoreNextSingleClick_\n      ) {\n        handled = this.removePoint();\n      } else {\n        handled = true;\n      }\n    }\n\n    if (mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK) {\n      this.ignoreNextSingleClick_ = false;\n    }\n\n    return super.handleEvent(mapBrowserEvent) && !handled;\n  }\n\n  findInsertVerticesAndUpdateDragSegments_(pixelCoordinate) {\n    this.handlePointerAtPixel_(pixelCoordinate);\n    this.dragSegments_.length = 0;\n    this.featuresBeingModified_ = null;\n    const vertexFeature = this.vertexFeature_;\n    if (!vertexFeature) {\n      return;\n    }\n\n    const projection = this.getMap().getView().getProjection();\n    const insertVertices = [];\n    const vertex = vertexFeature.getGeometry().getCoordinates();\n    const vertexExtent = boundingExtent([vertex]);\n    const segmentDataMatches = this.rBush_.getInExtent(vertexExtent);\n    const componentSegments = {};\n    segmentDataMatches.sort(compareIndexes);\n    for (let i = 0, ii = segmentDataMatches.length; i < ii; ++i) {\n      const segmentDataMatch = segmentDataMatches[i];\n      const segment = segmentDataMatch.segment;\n      let uid = getUid(segmentDataMatch.geometry);\n      const depth = segmentDataMatch.depth;\n      if (depth) {\n        uid += '-' + depth.join('-'); // separate feature components\n      }\n      if (!componentSegments[uid]) {\n        componentSegments[uid] = new Array(2);\n      }\n\n      if (\n        segmentDataMatch.geometry.getType() === 'Circle' &&\n        segmentDataMatch.index === CIRCLE_CIRCUMFERENCE_INDEX\n      ) {\n        const closestVertex = closestOnSegmentData(\n          pixelCoordinate,\n          segmentDataMatch,\n          projection,\n        );\n        if (\n          coordinatesEqual(closestVertex, vertex) &&\n          !componentSegments[uid][0]\n        ) {\n          this.dragSegments_.push([segmentDataMatch, 0]);\n          componentSegments[uid][0] = segmentDataMatch;\n        }\n        continue;\n      }\n\n      if (coordinatesEqual(segment[0], vertex) && !componentSegments[uid][0]) {\n        this.dragSegments_.push([segmentDataMatch, 0]);\n        componentSegments[uid][0] = segmentDataMatch;\n        continue;\n      }\n\n      if (coordinatesEqual(segment[1], vertex) && !componentSegments[uid][1]) {\n        if (\n          componentSegments[uid][0] &&\n          componentSegments[uid][0].index === 0\n        ) {\n          let coordinates = segmentDataMatch.geometry.getCoordinates();\n          switch (segmentDataMatch.geometry.getType()) {\n            // prevent dragging closed linestrings by the connecting node\n            case 'LineString':\n            case 'MultiLineString':\n              continue;\n            // if dragging the first vertex of a polygon, ensure the other segment\n            // belongs to the closing vertex of the linear ring\n            case 'MultiPolygon':\n              coordinates = coordinates[depth[1]];\n            /* falls through */\n            case 'Polygon':\n              if (segmentDataMatch.index !== coordinates[depth[0]].length - 2) {\n                continue;\n              }\n              break;\n            default:\n            // pass\n          }\n        }\n\n        this.dragSegments_.push([segmentDataMatch, 1]);\n        componentSegments[uid][1] = segmentDataMatch;\n        continue;\n      }\n\n      if (\n        getUid(segment) in this.vertexSegments_ &&\n        !componentSegments[uid][0] &&\n        !componentSegments[uid][1]\n      ) {\n        insertVertices.push(segmentDataMatch);\n      }\n    }\n\n    return insertVertices;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n   * @override\n   */\n  handleDragEvent(evt) {\n    this.ignoreNextSingleClick_ = false;\n    this.willModifyFeatures_(\n      evt,\n      this.dragSegments_.map(([segment]) => segment),\n    );\n\n    const vertex = [\n      evt.coordinate[0] + this.delta_[0],\n      evt.coordinate[1] + this.delta_[1],\n    ];\n    const features = [];\n    const geometries = [];\n    for (let i = 0, ii = this.dragSegments_.length; i < ii; ++i) {\n      const dragSegment = this.dragSegments_[i];\n      const segmentData = dragSegment[0];\n      const feature = segmentData.feature;\n      if (!features.includes(feature)) {\n        features.push(feature);\n      }\n      const geometry = segmentData.geometry;\n      if (!geometries.includes(geometry)) {\n        geometries.push(geometry);\n      }\n      const depth = segmentData.depth;\n      let coordinates;\n      const segment = segmentData.segment;\n      const index = dragSegment[1];\n\n      while (vertex.length < geometry.getStride()) {\n        vertex.push(segment[index][vertex.length]);\n      }\n\n      switch (geometry.getType()) {\n        case 'Point':\n          coordinates = vertex;\n          segment[0] = vertex;\n          segment[1] = vertex;\n          break;\n        case 'MultiPoint':\n          coordinates = geometry.getCoordinates();\n          coordinates[segmentData.index] = vertex;\n          segment[0] = vertex;\n          segment[1] = vertex;\n          break;\n        case 'LineString':\n          coordinates = geometry.getCoordinates();\n          coordinates[segmentData.index + index] = vertex;\n          segment[index] = vertex;\n          break;\n        case 'MultiLineString':\n          coordinates = geometry.getCoordinates();\n          coordinates[depth[0]][segmentData.index + index] = vertex;\n          segment[index] = vertex;\n          break;\n        case 'Polygon':\n          coordinates = geometry.getCoordinates();\n          coordinates[depth[0]][segmentData.index + index] = vertex;\n          segment[index] = vertex;\n          break;\n        case 'MultiPolygon':\n          coordinates = geometry.getCoordinates();\n          coordinates[depth[1]][depth[0]][segmentData.index + index] = vertex;\n          segment[index] = vertex;\n          break;\n        case 'Circle':\n          const circle = /** @type {import(\"../geom/Circle.js\").default} */ (\n            geometry\n          );\n          segment[0] = vertex;\n          segment[1] = vertex;\n          if (segmentData.index === CIRCLE_CENTER_INDEX) {\n            this.changingFeature_ = true;\n            circle.setCenter(vertex);\n            this.changingFeature_ = false;\n          } else {\n            // We're dragging the circle's circumference:\n            this.changingFeature_ = true;\n            const projection = evt.map.getView().getProjection();\n            let radius = coordinateDistance(\n              fromUserCoordinate(circle.getCenter(), projection),\n              fromUserCoordinate(vertex, projection),\n            );\n            const userProjection = getUserProjection();\n            if (userProjection) {\n              const circleGeometry = circle\n                .clone()\n                .transform(userProjection, projection);\n              circleGeometry.setRadius(radius);\n              radius = circleGeometry\n                .transform(projection, userProjection)\n                .getRadius();\n            }\n            circle.setRadius(radius);\n            this.changingFeature_ = false;\n          }\n          break;\n        default:\n        // pass\n      }\n\n      if (coordinates) {\n        this.setGeometryCoordinates_(geometry, coordinates);\n      }\n    }\n    this.createOrUpdateVertexFeature_(vertex, features, geometries, true);\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(evt) {\n    if (!this.condition_(evt)) {\n      return false;\n    }\n    const pixelCoordinate = evt.coordinate;\n    const insertVertices =\n      this.findInsertVerticesAndUpdateDragSegments_(pixelCoordinate);\n\n    if (insertVertices?.length && this.insertVertexCondition_(evt)) {\n      this.willModifyFeatures_(evt, insertVertices);\n\n      if (this.vertexFeature_) {\n        const vertex = this.vertexFeature_.getGeometry().getCoordinates();\n        for (let j = insertVertices.length - 1; j >= 0; --j) {\n          this.insertVertex_(insertVertices[j], vertex);\n        }\n        this.ignoreNextSingleClick_ = true;\n      }\n    }\n\n    return !!this.vertexFeature_;\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(evt) {\n    for (let i = this.dragSegments_.length - 1; i >= 0; --i) {\n      const segmentData = this.dragSegments_[i][0];\n      const geometry = segmentData.geometry;\n      if (geometry.getType() === 'Circle') {\n        const circle = /** @type {import(\"../geom/Circle.js\").default} */ (\n          geometry\n        );\n        // Update a circle object in the R* bush:\n        const coordinates = circle.getCenter();\n        const centerSegmentData = segmentData.featureSegments[0];\n        const circumferenceSegmentData = segmentData.featureSegments[1];\n        centerSegmentData.segment[0] = coordinates;\n        centerSegmentData.segment[1] = coordinates;\n        circumferenceSegmentData.segment[0] = coordinates;\n        circumferenceSegmentData.segment[1] = coordinates;\n        this.rBush_.update(createExtent(coordinates), centerSegmentData);\n        /** @type {import(\"../geom/Circle.js\").default | import(\"../geom/Polygon.js\").default} */\n        let circleGeometry = circle;\n        const userProjection = getUserProjection();\n        if (userProjection) {\n          const projection = evt.map.getView().getProjection();\n          circleGeometry = circleGeometry\n            .clone()\n            .transform(userProjection, projection);\n          circleGeometry = fromCircle(circleGeometry).transform(\n            projection,\n            userProjection,\n          );\n        }\n        this.rBush_.update(\n          circleGeometry.getExtent(),\n          circumferenceSegmentData,\n        );\n      } else {\n        this.rBush_.update(boundingExtent(segmentData.segment), segmentData);\n      }\n    }\n    if (this.featuresBeingModified_) {\n      this.dispatchEvent(\n        new ModifyEvent(\n          ModifyEventType.MODIFYEND,\n          this.featuresBeingModified_,\n          evt,\n        ),\n      );\n      this.featuresBeingModified_ = null;\n    }\n    return false;\n  }\n\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n   * @private\n   */\n  handlePointerMove_(evt) {\n    this.lastPixel_ = evt.pixel;\n    this.handlePointerAtPixel_(evt.coordinate);\n  }\n\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} pixelCoordinate The pixel Coordinate.\n   * @private\n   */\n  handlePointerAtPixel_(pixelCoordinate) {\n    const map = this.getMap();\n    const pixel = map.getPixelFromCoordinate(pixelCoordinate);\n    const projection = map.getView().getProjection();\n    const sortByDistance = function (a, b) {\n      return (\n        projectedDistanceToSegmentDataSquared(pixelCoordinate, a, projection) -\n        projectedDistanceToSegmentDataSquared(pixelCoordinate, b, projection)\n      );\n    };\n\n    /** @type {Array<SegmentData>|undefined} */\n    let nodes;\n    /** @type {Point|undefined} */\n    let hitPointGeometry;\n    if (this.hitDetection_) {\n      const layerFilter =\n        typeof this.hitDetection_ === 'object'\n          ? (layer) => layer === this.hitDetection_\n          : undefined;\n      map.forEachFeatureAtPixel(\n        pixel,\n        (feature, layer, geometry) => {\n          if (geometry && geometry.getType() === 'Point') {\n            geometry = new Point(\n              toUserCoordinate(geometry.getCoordinates(), projection),\n            );\n          }\n          const geom = geometry || feature.getGeometry();\n\n          if (\n            geom &&\n            geom.getType() === 'Point' &&\n            feature instanceof Feature &&\n            this.features_.getArray().includes(feature)\n          ) {\n            hitPointGeometry = /** @type {Point} */ (geom);\n            const coordinate = /** @type {Point} */ (feature.getGeometry())\n              .getFlatCoordinates()\n              .slice(0, 2);\n            nodes = [\n              {\n                feature,\n                geometry: hitPointGeometry,\n                segment: [coordinate, coordinate],\n              },\n            ];\n          }\n          return true;\n        },\n        {layerFilter},\n      );\n    }\n    if (!nodes) {\n      const viewExtent = fromUserExtent(\n        createExtent(pixelCoordinate, tempExtent),\n        projection,\n      );\n      const buffer = map.getView().getResolution() * this.pixelTolerance_;\n      const box = toUserExtent(\n        bufferExtent(viewExtent, buffer, tempExtent),\n        projection,\n      );\n      nodes = this.rBush_.getInExtent(box);\n    }\n\n    if (nodes && nodes.length > 0) {\n      const node = nodes.sort(sortByDistance)[0];\n      const closestSegment = node.segment;\n      let vertex = closestOnSegmentData(pixelCoordinate, node, projection);\n      const vertexPixel = map.getPixelFromCoordinate(vertex);\n      let dist = coordinateDistance(pixel, vertexPixel);\n      if (hitPointGeometry || dist <= this.pixelTolerance_) {\n        /** @type {Object<string, boolean>} */\n        const vertexSegments = {};\n        vertexSegments[getUid(closestSegment)] = true;\n\n        if (!this.snapToPointer_) {\n          this.delta_[0] = vertex[0] - pixelCoordinate[0];\n          this.delta_[1] = vertex[1] - pixelCoordinate[1];\n        }\n        if (\n          node.geometry.getType() === 'Circle' &&\n          node.index === CIRCLE_CIRCUMFERENCE_INDEX\n        ) {\n          this.snappedToVertex_ = true;\n          this.createOrUpdateVertexFeature_(\n            vertex,\n            [node.feature],\n            [node.geometry],\n            this.snappedToVertex_,\n          );\n        } else {\n          const pixel1 = map.getPixelFromCoordinate(closestSegment[0]);\n          const pixel2 = map.getPixelFromCoordinate(closestSegment[1]);\n          const squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);\n          const squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);\n          dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));\n          this.snappedToVertex_ = dist <= this.pixelTolerance_;\n          // Stop and cleanup overlay vertex feature if a segment was hit and new vertex creation is not allowed by the insertVertexCondition\n          if (\n            !this.snappedToVertex_ &&\n            !this.insertVertexCondition_(this.lastPointerEvent_)\n          ) {\n            if (this.vertexFeature_) {\n              this.overlay_.getSource().removeFeature(this.vertexFeature_);\n              this.vertexFeature_ = null;\n            }\n            return;\n          }\n          if (this.snappedToVertex_) {\n            vertex =\n              squaredDist1 > squaredDist2\n                ? closestSegment[1]\n                : closestSegment[0];\n          }\n          this.createOrUpdateVertexFeature_(\n            vertex,\n            [node.feature],\n            [node.geometry],\n            this.snappedToVertex_,\n          );\n          const geometries = {};\n          geometries[getUid(node.geometry)] = true;\n          for (let i = 1, ii = nodes.length; i < ii; ++i) {\n            const segment = nodes[i].segment;\n            if (\n              (coordinatesEqual(closestSegment[0], segment[0]) &&\n                coordinatesEqual(closestSegment[1], segment[1])) ||\n              (coordinatesEqual(closestSegment[0], segment[1]) &&\n                coordinatesEqual(closestSegment[1], segment[0]))\n            ) {\n              const geometryUid = getUid(nodes[i].geometry);\n              if (!(geometryUid in geometries)) {\n                geometries[geometryUid] = true;\n                vertexSegments[getUid(segment)] = true;\n              }\n            } else {\n              break;\n            }\n          }\n        }\n\n        this.vertexSegments_ = vertexSegments;\n        return;\n      }\n    }\n    if (this.vertexFeature_) {\n      this.overlay_.getSource().removeFeature(this.vertexFeature_);\n      this.vertexFeature_ = null;\n    }\n  }\n\n  /**\n   * @param {SegmentData} segmentData Segment data.\n   * @param {import(\"../coordinate.js\").Coordinate} vertex Vertex.\n   * @return {boolean} A vertex was inserted.\n   * @private\n   */\n  insertVertex_(segmentData, vertex) {\n    const segment = segmentData.segment;\n    const feature = segmentData.feature;\n    const geometry = segmentData.geometry;\n    const depth = segmentData.depth;\n    const index = segmentData.index;\n    let coordinates;\n\n    while (vertex.length < geometry.getStride()) {\n      vertex.push(0);\n    }\n\n    switch (geometry.getType()) {\n      case 'MultiLineString':\n        coordinates = geometry.getCoordinates();\n        coordinates[depth[0]].splice(index + 1, 0, vertex);\n        break;\n      case 'Polygon':\n        coordinates = geometry.getCoordinates();\n        coordinates[depth[0]].splice(index + 1, 0, vertex);\n        break;\n      case 'MultiPolygon':\n        coordinates = geometry.getCoordinates();\n        coordinates[depth[1]][depth[0]].splice(index + 1, 0, vertex);\n        break;\n      case 'LineString':\n        coordinates = geometry.getCoordinates();\n        coordinates.splice(index + 1, 0, vertex);\n        break;\n      default:\n        return false;\n    }\n\n    this.setGeometryCoordinates_(geometry, coordinates);\n    const rTree = this.rBush_;\n    rTree.remove(segmentData);\n    this.updateSegmentIndices_(geometry, index, depth, 1);\n\n    /** @type {SegmentData} */\n    const newSegmentData = {\n      segment: [segment[0], vertex],\n      feature: feature,\n      geometry: geometry,\n      depth: depth,\n      index: index,\n    };\n\n    rTree.insert(boundingExtent(newSegmentData.segment), newSegmentData);\n    this.dragSegments_.push([newSegmentData, 1]);\n\n    /** @type {SegmentData} */\n    const newSegmentData2 = {\n      segment: [vertex, segment[1]],\n      feature: feature,\n      geometry: geometry,\n      depth: depth,\n      index: index + 1,\n    };\n\n    rTree.insert(boundingExtent(newSegmentData2.segment), newSegmentData2);\n    this.dragSegments_.push([newSegmentData2, 0]);\n    return true;\n  }\n\n  updatePointer_(coordinate) {\n    if (coordinate) {\n      this.findInsertVerticesAndUpdateDragSegments_(coordinate);\n    }\n    return this.vertexFeature_?.getGeometry().getCoordinates();\n  }\n\n  /**\n   * Get the current pointer position.\n   * @return {import(\"../coordinate.js\").Coordinate | null} The current pointer coordinate.\n   */\n  getPoint() {\n    const coordinate = this.vertexFeature_?.getGeometry().getCoordinates();\n    if (!coordinate) {\n      return null;\n    }\n    return toUserCoordinate(\n      coordinate,\n      this.getMap().getView().getProjection(),\n    );\n  }\n\n  /**\n   * Check if a point can be removed from the current linestring or polygon at the current\n   * pointer position.\n   * @return {boolean} A point can be deleted at the current pointer position.\n   * @api\n   */\n  canRemovePoint() {\n    if (!this.vertexFeature_) {\n      return false;\n    }\n    if (\n      this.vertexFeature_\n        .get('geometries')\n        .every(\n          (geometry) =>\n            geometry.getType() === 'Circle' ||\n            geometry.getType().endsWith('Point'),\n        )\n    ) {\n      return false;\n    }\n    const coordinate = this.vertexFeature_.getGeometry().getCoordinates();\n    const segments = this.rBush_.getInExtent(boundingExtent([coordinate]));\n    return segments.some(\n      ({segment}) =>\n        coordinatesEqual(segment[0], coordinate) ||\n        coordinatesEqual(segment[1], coordinate),\n    );\n  }\n\n  /**\n   * Removes the vertex currently being pointed from the current linestring or polygon.\n   * @param {import('../coordinate.js').Coordinate} [coordinate] If provided, the pointer\n   * will be set to the provided coordinate. If not, the current pointer coordinate will be used.\n   * @return {boolean} True when a vertex was removed.\n   * @api\n   */\n  removePoint(coordinate) {\n    if (coordinate) {\n      coordinate = fromUserCoordinate(\n        coordinate,\n        this.getMap().getView().getProjection(),\n      );\n      this.updatePointer_(coordinate);\n    }\n    if (\n      !this.lastPointerEvent_ ||\n      (this.lastPointerEvent_ &&\n        this.lastPointerEvent_.type != MapBrowserEventType.POINTERDRAG)\n    ) {\n      const evt = this.lastPointerEvent_;\n      this.willModifyFeatures_(\n        evt,\n        this.dragSegments_.map(([segment]) => segment),\n      );\n      const removed = this.removeVertex_();\n      if (this.featuresBeingModified_) {\n        this.dispatchEvent(\n          new ModifyEvent(\n            ModifyEventType.MODIFYEND,\n            this.featuresBeingModified_,\n            evt,\n          ),\n        );\n      }\n\n      this.featuresBeingModified_ = null;\n      return removed;\n    }\n    return false;\n  }\n\n  /**\n   * Removes a vertex from all matching features.\n   * @return {boolean} True when a vertex was removed.\n   * @private\n   */\n  removeVertex_() {\n    const dragSegments = this.dragSegments_;\n    const segmentsByFeature = {};\n    let deleted = false;\n    let component, coordinates, dragSegment, geometry, i, index, left;\n    let newIndex, right, segmentData, uid;\n    for (i = dragSegments.length - 1; i >= 0; --i) {\n      dragSegment = dragSegments[i];\n      segmentData = dragSegment[0];\n      uid = getUid(segmentData.feature);\n      if (segmentData.depth) {\n        // separate feature components\n        uid += '-' + segmentData.depth.join('-');\n      }\n      if (!(uid in segmentsByFeature)) {\n        segmentsByFeature[uid] = {};\n      }\n      if (dragSegment[1] === 0) {\n        segmentsByFeature[uid].right = segmentData;\n        segmentsByFeature[uid].index = segmentData.index;\n      } else if (dragSegment[1] == 1) {\n        segmentsByFeature[uid].left = segmentData;\n        segmentsByFeature[uid].index = segmentData.index + 1;\n      }\n    }\n    for (uid in segmentsByFeature) {\n      right = segmentsByFeature[uid].right;\n      left = segmentsByFeature[uid].left;\n      index = segmentsByFeature[uid].index;\n      newIndex = index - 1;\n      if (left !== undefined) {\n        segmentData = left;\n      } else {\n        segmentData = right;\n      }\n      if (newIndex < 0) {\n        newIndex = 0;\n      }\n      geometry = segmentData.geometry;\n      coordinates = geometry.getCoordinates();\n      component = coordinates;\n      deleted = false;\n      switch (geometry.getType()) {\n        case 'MultiLineString':\n          if (coordinates[segmentData.depth[0]].length > 2) {\n            coordinates[segmentData.depth[0]].splice(index, 1);\n            deleted = true;\n          }\n          break;\n        case 'LineString':\n          if (coordinates.length > 2) {\n            coordinates.splice(index, 1);\n            deleted = true;\n          }\n          break;\n        case 'MultiPolygon':\n          component = component[segmentData.depth[1]];\n        /* falls through */\n        case 'Polygon':\n          component = component[segmentData.depth[0]];\n          if (component.length > 4) {\n            if (index == component.length - 1) {\n              index = 0;\n            }\n            component.splice(index, 1);\n            deleted = true;\n            if (index === 0) {\n              // close the ring again\n              component.pop();\n              component.push(component[0]);\n              newIndex = component.length - 1;\n            }\n          }\n          break;\n        default:\n        // pass\n      }\n\n      if (deleted) {\n        this.setGeometryCoordinates_(geometry, coordinates);\n        const segments = [];\n        if (left !== undefined) {\n          this.rBush_.remove(left);\n          segments.push(left.segment[0]);\n        }\n        if (right !== undefined) {\n          this.rBush_.remove(right);\n          segments.push(right.segment[1]);\n        }\n        if (left !== undefined && right !== undefined) {\n          /** @type {SegmentData} */\n          const newSegmentData = {\n            depth: segmentData.depth,\n            feature: segmentData.feature,\n            geometry: segmentData.geometry,\n            index: newIndex,\n            segment: segments,\n          };\n\n          this.rBush_.insert(\n            boundingExtent(newSegmentData.segment),\n            newSegmentData,\n          );\n        }\n        this.updateSegmentIndices_(geometry, index, segmentData.depth, -1);\n        if (this.vertexFeature_) {\n          this.overlay_.getSource().removeFeature(this.vertexFeature_);\n          this.vertexFeature_ = null;\n        }\n        dragSegments.length = 0;\n      }\n    }\n    return deleted;\n  }\n\n  /**\n   * Check if a point can be inserted to the current linestring or polygon at the current\n   * pointer position.\n   * @return {boolean} A point can be inserted at the current pointer position.\n   * @api\n   */\n  canInsertPoint() {\n    if (!this.vertexFeature_) {\n      return false;\n    }\n    if (\n      this.vertexFeature_\n        .get('geometries')\n        .every(\n          (geometry) =>\n            geometry.getType() === 'Circle' ||\n            geometry.getType().endsWith('Point'),\n        )\n    ) {\n      return false;\n    }\n    const coordinate = this.vertexFeature_.getGeometry().getCoordinates();\n    const segments = this.rBush_.getInExtent(boundingExtent([coordinate]));\n    return segments.some(\n      ({segment}) =>\n        !(\n          coordinatesEqual(segment[0], coordinate) ||\n          coordinatesEqual(segment[1], coordinate)\n        ),\n    );\n  }\n\n  /**\n   * Inserts the vertex currently being pointed to the current linestring or polygon.\n   * @param {import('../coordinate.js').Coordinate} [coordinate] If provided, the pointer\n   * will be set to the provided coordinate. If not, the current pointer coordinate will be used.\n   * @return {boolean} A vertex was inserted.\n   * @api\n   */\n  insertPoint(coordinate) {\n    const pixelCoordinate = coordinate\n      ? fromUserCoordinate(coordinate, this.getMap().getView().getProjection())\n      : this.vertexFeature_?.getGeometry().getCoordinates();\n    if (!pixelCoordinate) {\n      return false;\n    }\n    const insertVertices =\n      this.findInsertVerticesAndUpdateDragSegments_(pixelCoordinate);\n    return insertVertices.reduce(\n      (prev, segmentData) =>\n        prev || this.insertVertex_(segmentData, pixelCoordinate),\n      false,\n    );\n  }\n\n  /**\n   * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n   * @param {Array} coordinates Coordinates.\n   * @private\n   */\n  setGeometryCoordinates_(geometry, coordinates) {\n    this.changingFeature_ = true;\n    geometry.setCoordinates(coordinates);\n    this.changingFeature_ = false;\n  }\n\n  /**\n   * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n   * @param {number} index Index.\n   * @param {Array<number>|undefined} depth Depth.\n   * @param {number} delta Delta (1 or -1).\n   * @private\n   */\n  updateSegmentIndices_(geometry, index, depth, delta) {\n    this.rBush_.forEachInExtent(\n      geometry.getExtent(),\n      function (segmentDataMatch) {\n        if (\n          segmentDataMatch.geometry === geometry &&\n          (depth === undefined ||\n            segmentDataMatch.depth === undefined ||\n            equals(segmentDataMatch.depth, depth)) &&\n          segmentDataMatch.index > index\n        ) {\n          segmentDataMatch.index += delta;\n        }\n      },\n    );\n  }\n}\n\n/**\n * @param {SegmentData} a The first segment data.\n * @param {SegmentData} b The second segment data.\n * @return {number} The difference in indexes.\n */\nfunction compareIndexes(a, b) {\n  return a.index - b.index;\n}\n\n/**\n * Returns the distance from a point to a line segment.\n *\n * @param {import(\"../coordinate.js\").Coordinate} pointCoordinates The coordinates of the point from\n *        which to calculate the distance.\n * @param {SegmentData} segmentData The object describing the line\n *        segment we are calculating the distance to.\n * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n * @return {number} The square of the distance between a point and a line segment.\n */\nfunction projectedDistanceToSegmentDataSquared(\n  pointCoordinates,\n  segmentData,\n  projection,\n) {\n  const geometry = segmentData.geometry;\n\n  if (geometry.getType() === 'Circle') {\n    let circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (\n      geometry\n    );\n\n    if (segmentData.index === CIRCLE_CIRCUMFERENCE_INDEX) {\n      const userProjection = getUserProjection();\n      if (userProjection) {\n        circleGeometry = circleGeometry\n          .clone()\n          .transform(userProjection, projection);\n      }\n      const distanceToCenterSquared = squaredCoordinateDistance(\n        circleGeometry.getCenter(),\n        fromUserCoordinate(pointCoordinates, projection),\n      );\n      const distanceToCircumference =\n        Math.sqrt(distanceToCenterSquared) - circleGeometry.getRadius();\n      return distanceToCircumference * distanceToCircumference;\n    }\n  }\n\n  const coordinate = fromUserCoordinate(pointCoordinates, projection);\n  tempSegment[0] = fromUserCoordinate(segmentData.segment[0], projection);\n  tempSegment[1] = fromUserCoordinate(segmentData.segment[1], projection);\n  return squaredDistanceToSegment(coordinate, tempSegment);\n}\n\n/**\n * Returns the point closest to a given line segment.\n *\n * @param {import(\"../coordinate.js\").Coordinate} pointCoordinates The point to which a closest point\n *        should be found.\n * @param {SegmentData} segmentData The object describing the line\n *        segment which should contain the closest point.\n * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n * @return {import(\"../coordinate.js\").Coordinate} The point closest to the specified line segment.\n */\nfunction closestOnSegmentData(pointCoordinates, segmentData, projection) {\n  const geometry = segmentData.geometry;\n\n  if (\n    geometry.getType() === 'Circle' &&\n    segmentData.index === CIRCLE_CIRCUMFERENCE_INDEX\n  ) {\n    let circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (\n      geometry\n    );\n    const userProjection = getUserProjection();\n    if (userProjection) {\n      circleGeometry = circleGeometry\n        .clone()\n        .transform(userProjection, projection);\n    }\n    return toUserCoordinate(\n      circleGeometry.getClosestPoint(\n        fromUserCoordinate(pointCoordinates, projection),\n      ),\n      projection,\n    );\n  }\n  const coordinate = fromUserCoordinate(pointCoordinates, projection);\n  tempSegment[0] = fromUserCoordinate(segmentData.segment[0], projection);\n  tempSegment[1] = fromUserCoordinate(segmentData.segment[1], projection);\n  return toUserCoordinate(\n    closestOnSegment(coordinate, tempSegment),\n    projection,\n  );\n}\n\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n  const style = createEditingStyle();\n  return function (feature, resolution) {\n    return style['Point'];\n  };\n}\n\nexport default Modify;\n","/**\n * @module ol/interaction/Select\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Feature from '../Feature.js';\nimport {extend} from '../array.js';\nimport Event from '../events/Event.js';\nimport {never, shiftKeyOnly, singleClick} from '../events/condition.js';\nimport {TRUE} from '../functions.js';\nimport VectorLayer from '../layer/Vector.js';\nimport {clear} from '../obj.js';\nimport {createEditingStyle} from '../style/Style.js';\nimport {getUid} from '../util.js';\nimport Interaction from './Interaction.js';\n\n/**\n * @enum {string}\n */\nconst SelectEventType = {\n  /**\n   * Triggered when feature(s) has been (de)selected.\n   * @event SelectEvent#select\n   * @api\n   */\n  SELECT: 'select',\n};\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} and returns `true` if the feature may be\n * selected or `false` otherwise.\n * @typedef {function(import(\"../Feature.js\").default, import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>):boolean} FilterFunction\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [addCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default, this is {@link module:ol/events/condition.never}. Use this if you\n * want to use different events for add and remove instead of `toggle`.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. This is the event\n * for the selected features as a whole. By default, this is\n * {@link module:ol/events/condition.singleClick}. Clicking on a feature selects that\n * feature and removes any that were in the selection. Clicking outside any\n * feature removes all from the selection.\n * See `toggle`, `add`, `remove` options for adding/removing extra features to/\n * from the selection.\n * @property {Array<import(\"../layer/Layer.js\").default>|function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean} [layers]\n * A list of layers from which features should be selected. Alternatively, a\n * filter function can be provided. The function will be called for each layer\n * in the map and should return `true` for layers that you want to be\n * selectable. If the option is absent, all visible layers will be considered\n * selectable.\n * @property {import(\"../style/Style.js\").StyleLike|null} [style]\n * Style for the selected features. By default the default edit style is used\n * (see {@link module:ol/style/Style~Style}). Set to `null` if this interaction should not apply\n * any style changes for selected features.\n * If set to a falsey value, the selected feature's style will not change.\n * @property {import(\"../events/condition.js\").Condition} [removeCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default, this is {@link module:ol/events/condition.never}. Use this if you\n * want to use different events for add and remove instead of `toggle`.\n * @property {import(\"../events/condition.js\").Condition} [toggleCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. This is in addition\n * to the `condition` event. By default,\n * {@link module:ol/events/condition.shiftKeyOnly}, i.e. pressing `shift` as\n * well as the `condition` event, adds that feature to the current selection if\n * it is not currently selected, and removes it if it is. See `add` and `remove`\n * if you want to use different events instead of a toggle.\n * @property {boolean} [multi=false] A boolean that determines if the default\n * behaviour should select only single features or all (overlapping) features at\n * the clicked map position. The default of `false` means single select.\n * @property {Collection<Feature>} [features]\n * Collection where the interaction will place selected features. Optional. If\n * not set the interaction will create a collection. In any case the collection\n * used by the interaction is returned by\n * {@link module:ol/interaction/Select~Select#getFeatures}.\n * @property {FilterFunction} [filter] A function\n * that takes a {@link module:ol/Feature~Feature} and a\n * {@link module:ol/layer/Layer~Layer} and returns `true` if the feature may be\n * selected or `false` otherwise.\n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels inside\n * the radius around the given position will be checked for features.\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Select~Select} instances are instances of\n * this type.\n */\nexport class SelectEvent extends Event {\n  /**\n   * @param {SelectEventType} type The event type.\n   * @param {Array<import(\"../Feature.js\").default>} selected Selected features.\n   * @param {Array<import(\"../Feature.js\").default>} deselected Deselected features.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Associated\n   *     {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n   */\n  constructor(type, selected, deselected, mapBrowserEvent) {\n    super(type);\n\n    /**\n     * Selected features array.\n     * @type {Array<import(\"../Feature.js\").default>}\n     * @api\n     */\n    this.selected = selected;\n\n    /**\n     * Deselected features array.\n     * @type {Array<import(\"../Feature.js\").default>}\n     * @api\n     */\n    this.deselected = deselected;\n\n    /**\n     * Associated {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @api\n     */\n    this.mapBrowserEvent = mapBrowserEvent;\n  }\n}\n\n/**\n * Original feature styles to reset to when features are no longer selected.\n * @type {Object<number, import(\"../style/Style.js\").default|Array<import(\"../style/Style.js\").default>|import(\"../style/Style.js\").StyleFunction>}\n */\nconst originalFeatureStyles = {};\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'select', SelectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'select', Return>} SelectOnSignature\n */\n\n/**\n * @classdesc\n * Interaction for selecting vector features. By default, selected features are\n * styled differently, so this interaction can be used for visual highlighting,\n * as well as selecting features for other actions, such as modification or\n * output. There are three ways of controlling which features are selected:\n * using the browser event as defined by the `condition` and optionally the\n * `toggle`, `add`/`remove`, and `multi` options; a `layers` filter; and a\n * further feature filter using the `filter` option.\n *\n * @fires SelectEvent\n * @api\n */\nclass Select extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {SelectOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {SelectOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {SelectOnSignature<void>}\n     */\n    this.un;\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     */\n    this.boundAddFeature_ = this.addFeature_.bind(this);\n\n    /**\n     * @private\n     */\n    this.boundRemoveFeature_ = this.removeFeature_.bind(this);\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : singleClick;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.addCondition_ = options.addCondition ? options.addCondition : never;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.removeCondition_ = options.removeCondition\n      ? options.removeCondition\n      : never;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.toggleCondition_ = options.toggleCondition\n      ? options.toggleCondition\n      : shiftKeyOnly;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.multi_ = options.multi ? options.multi : false;\n\n    /**\n     * @private\n     * @type {FilterFunction}\n     */\n    this.filter_ = options.filter ? options.filter : TRUE;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0;\n\n    /**\n     * @private\n     * @type {import(\"../style/Style.js\").default|Array<import(\"../style/Style.js\").default>|import(\"../style/Style.js\").StyleFunction|null}\n     */\n    this.style_ =\n      options.style !== undefined ? options.style : getDefaultStyleFunction();\n\n    /**\n     * @private\n     * @type {Collection<Feature>}\n     */\n    this.features_ = options.features || new Collection();\n\n    /** @type {function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean} */\n    let layerFilter;\n    if (options.layers) {\n      if (typeof options.layers === 'function') {\n        layerFilter = options.layers;\n      } else {\n        const layers = options.layers;\n        layerFilter = function (layer) {\n          return layers.includes(layer);\n        };\n      }\n    } else {\n      layerFilter = TRUE;\n    }\n\n    /**\n     * @private\n     * @type {function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean}\n     */\n    this.layerFilter_ = layerFilter;\n\n    /**\n     * An association between selected feature (key)\n     * and layer (value)\n     * @private\n     * @type {Object<string, import(\"../layer/Layer.js\").default>}\n     */\n    this.featureLayerAssociation_ = {};\n  }\n\n  /**\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"../layer/Layer.js\").default} layer Layer.\n   * @private\n   */\n  addFeatureLayerAssociation_(feature, layer) {\n    this.featureLayerAssociation_[getUid(feature)] = layer;\n  }\n\n  /**\n   * Get the selected features.\n   * @return {Collection<Feature>} Features collection.\n   * @api\n   */\n  getFeatures() {\n    return this.features_;\n  }\n\n  /**\n   * Returns the Hit-detection tolerance.\n   * @return {number} Hit tolerance in pixels.\n   * @api\n   */\n  getHitTolerance() {\n    return this.hitTolerance_;\n  }\n\n  /**\n   * Returns the associated {@link module:ol/layer/Vector~VectorLayer vector layer} of\n   * a selected feature.\n   * @param {import(\"../Feature.js\").default} feature Feature\n   * @return {import('../layer/Vector.js').default} Layer.\n   * @api\n   */\n  getLayer(feature) {\n    return /** @type {import('../layer/Vector.js').default} */ (\n      this.featureLayerAssociation_[getUid(feature)]\n    );\n  }\n\n  /**\n   * Hit-detection tolerance. Pixels inside the radius around the given position\n   * will be checked for features.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @api\n   */\n  setHitTolerance(hitTolerance) {\n    this.hitTolerance_ = hitTolerance;\n  }\n\n  /**\n   * Remove the interaction from its current map, if any,  and attach it to a new\n   * map, if any. Pass `null` to just remove the interaction from the current map.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @api\n   * @override\n   */\n  setMap(map) {\n    const currentMap = this.getMap();\n    if (currentMap && this.style_) {\n      this.features_.forEach(this.restorePreviousStyle_.bind(this));\n    }\n    super.setMap(map);\n    if (map) {\n      this.features_.addEventListener(\n        CollectionEventType.ADD,\n        this.boundAddFeature_,\n      );\n      this.features_.addEventListener(\n        CollectionEventType.REMOVE,\n        this.boundRemoveFeature_,\n      );\n\n      if (this.style_) {\n        this.features_.forEach(this.applySelectedStyle_.bind(this));\n      }\n    } else {\n      this.features_.removeEventListener(\n        CollectionEventType.ADD,\n        this.boundAddFeature_,\n      );\n      this.features_.removeEventListener(\n        CollectionEventType.REMOVE,\n        this.boundRemoveFeature_,\n      );\n    }\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<Feature>} evt Event.\n   * @private\n   */\n  addFeature_(evt) {\n    const feature = evt.element;\n    if (this.style_) {\n      this.applySelectedStyle_(feature);\n    }\n    if (!this.getLayer(feature)) {\n      const layer = /** @type {VectorLayer} */ (\n        this.getMap()\n          .getAllLayers()\n          .find(function (layer) {\n            if (\n              layer instanceof VectorLayer &&\n              layer.getSource() &&\n              layer.getSource().hasFeature(feature)\n            ) {\n              return layer;\n            }\n          })\n      );\n      if (layer) {\n        this.addFeatureLayerAssociation_(feature, layer);\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<Feature>} evt Event.\n   * @private\n   */\n  removeFeature_(evt) {\n    if (this.style_) {\n      this.restorePreviousStyle_(evt.element);\n    }\n  }\n\n  /**\n   * @return {import(\"../style/Style.js\").StyleLike|null} Select style.\n   */\n  getStyle() {\n    return this.style_;\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @private\n   */\n  applySelectedStyle_(feature) {\n    const key = getUid(feature);\n    if (!(key in originalFeatureStyles)) {\n      originalFeatureStyles[key] = feature.getStyle();\n    }\n    feature.setStyle(this.style_);\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @private\n   */\n  restorePreviousStyle_(feature) {\n    const interactions = this.getMap().getInteractions().getArray();\n    for (let i = interactions.length - 1; i >= 0; --i) {\n      const interaction = interactions[i];\n      if (\n        interaction !== this &&\n        interaction instanceof Select &&\n        interaction.getStyle() &&\n        interaction.getFeatures().getArray().lastIndexOf(feature) !== -1\n      ) {\n        feature.setStyle(interaction.getStyle());\n        return;\n      }\n    }\n\n    const key = getUid(feature);\n    feature.setStyle(originalFeatureStyles[key]);\n    delete originalFeatureStyles[key];\n  }\n\n  /**\n   * @param {Feature} feature Feature.\n   * @private\n   */\n  removeFeatureLayerAssociation_(feature) {\n    delete this.featureLayerAssociation_[getUid(feature)];\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may change the\n   * selected state of features.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!this.condition_(mapBrowserEvent)) {\n      return true;\n    }\n    const add = this.addCondition_(mapBrowserEvent);\n    const remove = this.removeCondition_(mapBrowserEvent);\n    const toggle = this.toggleCondition_(mapBrowserEvent);\n    const set = !add && !remove && !toggle;\n    const map = mapBrowserEvent.map;\n    const features = this.getFeatures();\n\n    /**\n     * @type {Array<Feature>}\n     */\n    const deselected = [];\n\n    /**\n     * @type {Array<Feature>}\n     */\n    const selected = [];\n\n    if (set) {\n      // Replace the currently selected feature(s) with the feature(s) at the\n      // pixel, or clear the selected feature(s) if there is no feature at\n      // the pixel.\n      clear(this.featureLayerAssociation_);\n      map.forEachFeatureAtPixel(\n        mapBrowserEvent.pixel,\n        /**\n         * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n         * @param {import(\"../layer/Layer.js\").default} layer Layer.\n         * @return {boolean|undefined} Continue to iterate over the features.\n         */\n        (feature, layer) => {\n          if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n            return;\n          }\n          this.addFeatureLayerAssociation_(feature, layer);\n          selected.push(feature);\n          return !this.multi_;\n        },\n        {\n          layerFilter: this.layerFilter_,\n          hitTolerance: this.hitTolerance_,\n        },\n      );\n      for (let i = features.getLength() - 1; i >= 0; --i) {\n        const feature = features.item(i);\n        const index = selected.indexOf(feature);\n        if (index > -1) {\n          // feature is already selected\n          selected.splice(index, 1);\n        } else {\n          features.remove(feature);\n          deselected.push(feature);\n        }\n      }\n      if (selected.length !== 0) {\n        features.extend(selected);\n      }\n    } else {\n      // Modify the currently selected feature(s).\n      map.forEachFeatureAtPixel(\n        mapBrowserEvent.pixel,\n        /**\n         * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n         * @param {import(\"../layer/Layer.js\").default} layer Layer.\n         * @return {boolean|undefined} Continue to iterate over the features.\n         */\n        (feature, layer) => {\n          if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n            return;\n          }\n          if ((add || toggle) && !features.getArray().includes(feature)) {\n            this.addFeatureLayerAssociation_(feature, layer);\n            selected.push(feature);\n          } else if (\n            (remove || toggle) &&\n            features.getArray().includes(feature)\n          ) {\n            deselected.push(feature);\n            this.removeFeatureLayerAssociation_(feature);\n          }\n          return !this.multi_;\n        },\n        {\n          layerFilter: this.layerFilter_,\n          hitTolerance: this.hitTolerance_,\n        },\n      );\n      for (let j = deselected.length - 1; j >= 0; --j) {\n        features.remove(deselected[j]);\n      }\n      features.extend(selected);\n    }\n    if (selected.length > 0 || deselected.length > 0) {\n      this.dispatchEvent(\n        new SelectEvent(\n          SelectEventType.SELECT,\n          selected,\n          deselected,\n          mapBrowserEvent,\n        ),\n      );\n    }\n    return true;\n  }\n}\n\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n  const styles = createEditingStyle();\n  extend(styles['Polygon'], styles['LineString']);\n  extend(styles['GeometryCollection'], styles['LineString']);\n\n  return function (feature) {\n    if (!feature.getGeometry()) {\n      return null;\n    }\n    return styles[feature.getGeometry().getType()];\n  };\n}\n\nexport default Select;\n","/**\n * @module ol/events/SnapEvent\n */\nimport Event from './Event.js';\n\n/**\n * @enum {string}\n */\nexport const SnapEventType = {\n  /**\n   * Triggered upon snapping to vertex or edge\n   * @event SnapEvent#snap\n   * @api\n   */\n  SNAP: 'snap',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Snap~Snap} instances are instances of this\n */\nexport class SnapEvent extends Event {\n  /**\n   * @param {SnapEventType} type Type.\n   * @param {Object} options Options.\n   * @param {import(\"../coordinate.js\").Coordinate} options.vertex The snapped vertex.\n   * @param {import(\"../coordinate.js\").Coordinate} options.vertexPixel The pixel of the snapped vertex.\n   * @param {import(\"../Feature.js\").default} options.feature The feature being snapped.\n   * @param {Array<import(\"../coordinate.js\").Coordinate>|null} options.segment Segment, or `null` if snapped to a vertex.\n   */\n  constructor(type, options) {\n    super(type);\n    /**\n     * The Map coordinate of the snapped point.\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @api\n     */\n    this.vertex = options.vertex;\n    /**\n     * The Map pixel of the snapped point.\n     * @type {Array<number>&Array<number>}\n     * @api\n     */\n    this.vertexPixel = options.vertexPixel;\n    /**\n     * The feature closest to the snapped point.\n     * @type {import(\"../Feature.js\").default<import(\"../geom/Geometry.js\").default>}\n     * @api\n     */\n    this.feature = options.feature;\n    /**\n     * The segment closest to the snapped point, if snapped to a segment.\n     * @type {Array<import(\"../coordinate.js\").Coordinate>|null}\n     * @api\n     */\n    this.segment = options.segment;\n  }\n}\n","/**\n * @module ol/interaction/Snap\n */\nimport CollectionEventType from '../CollectionEventType.js';\nimport {\n  closestOnCircle,\n  closestOnSegment,\n  squaredDistance,\n} from '../coordinate.js';\nimport EventType from '../events/EventType.js';\nimport {SnapEvent, SnapEventType} from '../events/SnapEvent.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {boundingExtent, buffer, createEmpty} from '../extent.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {fromCircle} from '../geom/Polygon.js';\nimport {\n  fromUserCoordinate,\n  getUserProjection,\n  toUserCoordinate,\n  toUserExtent,\n} from '../proj.js';\nimport VectorEventType from '../source/VectorEventType.js';\nimport RBush from '../structs/RBush.js';\nimport {getUid} from '../util.js';\nimport PointerInteraction from './Pointer.js';\n\n/**\n * @typedef {Object} Result\n * @property {import(\"../coordinate.js\").Coordinate|null} vertex Vertex.\n * @property {import(\"../pixel.js\").Pixel|null} vertexPixel VertexPixel.\n * @property {import(\"../Feature.js\").default|null} feature Feature.\n * @property {Array<import(\"../coordinate.js\").Coordinate>|null} segment Segment, or `null` if snapped to a vertex.\n */\n\n/**\n * @typedef {Object} SegmentData\n * @property {import(\"../Feature.js\").default} feature Feature.\n * @property {Array<import(\"../coordinate.js\").Coordinate>} segment Segment.\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../Collection.js\").default<import(\"../Feature.js\").default>} [features] Snap to these features. Either this option or source should be provided.\n * @property {boolean} [edge=true] Snap to edges.\n * @property {boolean} [vertex=true] Snap to vertices.\n * @property {number} [pixelTolerance=10] Pixel tolerance for considering the pointer close enough to a segment or\n * vertex for snapping.\n * @property {import(\"../source/Vector.js\").default} [source] Snap to features from this source. Either this option or features should be provided\n */\n\n/**\n * @param  {import(\"../source/Vector.js\").VectorSourceEvent|import(\"../Collection.js\").CollectionEvent<import(\"../Feature.js\").default>} evt Event.\n * @return {import(\"../Feature.js\").default|null} Feature.\n */\nfunction getFeatureFromEvent(evt) {\n  if (\n    /** @type {import(\"../source/Vector.js\").VectorSourceEvent} */ (evt).feature\n  ) {\n    return /** @type {import(\"../source/Vector.js\").VectorSourceEvent} */ (evt)\n      .feature;\n  }\n  if (\n    /** @type {import(\"../Collection.js\").CollectionEvent<import(\"../Feature.js\").default>} */ (\n      evt\n    ).element\n  ) {\n    return /** @type {import(\"../Collection.js\").CollectionEvent<import(\"../Feature.js\").default>} */ (\n      evt\n    ).element;\n  }\n  return null;\n}\n\nconst tempSegment = [];\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'snap', SnapEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'snap', Return>} SnapOnSignature\n */\n\n/**\n * @classdesc\n * Handles snapping of vector features while modifying or drawing them.  The\n * features can come from a {@link module:ol/source/Vector~VectorSource} or {@link module:ol/Collection~Collection}\n * Any interaction object that allows the user to interact\n * with the features using the mouse can benefit from the snapping, as long\n * as it is added before.\n *\n * The snap interaction modifies map browser event `coordinate` and `pixel`\n * properties to force the snap to occur to any interaction that uses them.\n *\n * Example:\n *\n *     import Snap from 'ol/interaction/Snap.js';\n *\n *     const snap = new Snap({\n *       source: source\n *     });\n *\n *     map.addInteraction(snap);\n *\n * @fires SnapEvent\n * @api\n */\nclass Snap extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n      options\n    );\n\n    if (!pointerOptions.handleDownEvent) {\n      pointerOptions.handleDownEvent = TRUE;\n    }\n\n    if (!pointerOptions.stopDown) {\n      pointerOptions.stopDown = FALSE;\n    }\n\n    super(pointerOptions);\n\n    /***\n     * @type {SnapOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {SnapOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {SnapOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {import(\"../source/Vector.js\").default|null}\n     * @private\n     */\n    this.source_ = options.source ? options.source : null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.vertex_ = options.vertex !== undefined ? options.vertex : true;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.edge_ = options.edge !== undefined ? options.edge : true;\n\n    /**\n     * @type {import(\"../Collection.js\").default<import(\"../Feature.js\").default>|null}\n     * @private\n     */\n    this.features_ = options.features ? options.features : null;\n\n    /**\n     * @type {Array<import(\"../events.js\").EventsKey>}\n     * @private\n     */\n    this.featuresListenerKeys_ = [];\n\n    /**\n     * @type {Object<string, import(\"../events.js\").EventsKey>}\n     * @private\n     */\n    this.featureChangeListenerKeys_ = {};\n\n    /**\n     * Extents are preserved so indexed segment can be quickly removed\n     * when its feature geometry changes\n     * @type {Object<string, import(\"../extent.js\").Extent>}\n     * @private\n     */\n    this.indexedFeaturesExtents_ = {};\n\n    /**\n     * If a feature geometry changes while a pointer drag|move event occurs, the\n     * feature doesn't get updated right away.  It will be at the next 'pointerup'\n     * event fired.\n     * @type {!Object<string, import(\"../Feature.js\").default>}\n     * @private\n     */\n    this.pendingFeatures_ = {};\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.pixelTolerance_ =\n      options.pixelTolerance !== undefined ? options.pixelTolerance : 10;\n\n    /**\n     * Segment RTree for each layer\n     * @type {import(\"../structs/RBush.js\").default<SegmentData>}\n     * @private\n     */\n    this.rBush_ = new RBush();\n\n    /**\n     * @const\n     * @private\n     * @type {Object<string, function(Array<Array<import('../coordinate.js').Coordinate>>, import(\"../geom/Geometry.js\").default): void>}\n     */\n    this.GEOMETRY_SEGMENTERS_ = {\n      'Point': this.segmentPointGeometry_.bind(this),\n      'LineString': this.segmentLineStringGeometry_.bind(this),\n      'LinearRing': this.segmentLineStringGeometry_.bind(this),\n      'Polygon': this.segmentPolygonGeometry_.bind(this),\n      'MultiPoint': this.segmentMultiPointGeometry_.bind(this),\n      'MultiLineString': this.segmentMultiLineStringGeometry_.bind(this),\n      'MultiPolygon': this.segmentMultiPolygonGeometry_.bind(this),\n      'GeometryCollection': this.segmentGeometryCollectionGeometry_.bind(this),\n      'Circle': this.segmentCircleGeometry_.bind(this),\n    };\n  }\n\n  /**\n   * Add a feature to the collection of features that we may snap to.\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {boolean} [register] Whether to listen to the feature change or not\n   *     Defaults to `true`.\n   * @api\n   */\n  addFeature(feature, register) {\n    register = register !== undefined ? register : true;\n    const feature_uid = getUid(feature);\n    const geometry = feature.getGeometry();\n    if (geometry) {\n      const segmenter = this.GEOMETRY_SEGMENTERS_[geometry.getType()];\n      if (segmenter) {\n        this.indexedFeaturesExtents_[feature_uid] =\n          geometry.getExtent(createEmpty());\n        const segments =\n          /** @type {Array<Array<import('../coordinate.js').Coordinate>>} */ ([]);\n        segmenter(segments, geometry);\n        if (segments.length === 1) {\n          this.rBush_.insert(boundingExtent(segments[0]), {\n            feature: feature,\n            segment: segments[0],\n          });\n        } else if (segments.length > 1) {\n          const extents = segments.map((s) => boundingExtent(s));\n          const segmentsData = segments.map((segment) => ({\n            feature: feature,\n            segment: segment,\n          }));\n          this.rBush_.load(extents, segmentsData);\n        }\n      }\n    }\n\n    if (register) {\n      this.featureChangeListenerKeys_[feature_uid] = listen(\n        feature,\n        EventType.CHANGE,\n        this.handleFeatureChange_,\n        this,\n      );\n    }\n  }\n\n  /**\n   * @return {import(\"../Collection.js\").default<import(\"../Feature.js\").default>|Array<import(\"../Feature.js\").default>} Features.\n   * @private\n   */\n  getFeatures_() {\n    /** @type {import(\"../Collection.js\").default<import(\"../Feature.js\").default>|Array<import(\"../Feature.js\").default>} */\n    let features;\n    if (this.features_) {\n      features = this.features_;\n    } else if (this.source_) {\n      features = this.source_.getFeatures();\n    }\n    return features;\n  }\n\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @api\n   * @override\n   */\n  handleEvent(evt) {\n    const result = this.snapTo(evt.pixel, evt.coordinate, evt.map);\n    if (result) {\n      evt.coordinate = result.vertex.slice(0, 2);\n      evt.pixel = result.vertexPixel;\n      this.dispatchEvent(\n        new SnapEvent(SnapEventType.SNAP, {\n          vertex: evt.coordinate,\n          vertexPixel: evt.pixel,\n          feature: result.feature,\n          segment: result.segment,\n        }),\n      );\n    }\n    return super.handleEvent(evt);\n  }\n\n  /**\n   * @param {import(\"../source/Vector.js\").VectorSourceEvent|import(\"../Collection.js\").CollectionEvent<import(\"../Feature.js\").default>} evt Event.\n   * @private\n   */\n  handleFeatureAdd_(evt) {\n    const feature = getFeatureFromEvent(evt);\n    if (feature) {\n      this.addFeature(feature);\n    }\n  }\n\n  /**\n   * @param {import(\"../source/Vector.js\").VectorSourceEvent|import(\"../Collection.js\").CollectionEvent<import(\"../Feature.js\").default>} evt Event.\n   * @private\n   */\n  handleFeatureRemove_(evt) {\n    const feature = getFeatureFromEvent(evt);\n    if (feature) {\n      this.removeFeature(feature);\n    }\n  }\n\n  /**\n   * @param {import(\"../events/Event.js\").default} evt Event.\n   * @private\n   */\n  handleFeatureChange_(evt) {\n    const feature = /** @type {import(\"../Feature.js\").default} */ (evt.target);\n    if (this.handlingDownUpSequence) {\n      const uid = getUid(feature);\n      if (!(uid in this.pendingFeatures_)) {\n        this.pendingFeatures_[uid] = feature;\n      }\n    } else {\n      this.updateFeature_(feature);\n    }\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(evt) {\n    const featuresToUpdate = Object.values(this.pendingFeatures_);\n    if (featuresToUpdate.length) {\n      featuresToUpdate.forEach(this.updateFeature_.bind(this));\n      this.pendingFeatures_ = {};\n    }\n    return false;\n  }\n\n  /**\n   * Remove a feature from the collection of features that we may snap to.\n   * @param {import(\"../Feature.js\").default} feature Feature\n   * @param {boolean} [unlisten] Whether to unlisten to the feature change\n   *     or not. Defaults to `true`.\n   * @api\n   */\n  removeFeature(feature, unlisten) {\n    const unregister = unlisten !== undefined ? unlisten : true;\n    const feature_uid = getUid(feature);\n    const extent = this.indexedFeaturesExtents_[feature_uid];\n    if (extent) {\n      const rBush = this.rBush_;\n      const nodesToRemove = [];\n      rBush.forEachInExtent(extent, function (node) {\n        if (feature === node.feature) {\n          nodesToRemove.push(node);\n        }\n      });\n      for (let i = nodesToRemove.length - 1; i >= 0; --i) {\n        rBush.remove(nodesToRemove[i]);\n      }\n    }\n\n    if (unregister) {\n      unlistenByKey(this.featureChangeListenerKeys_[feature_uid]);\n      delete this.featureChangeListenerKeys_[feature_uid];\n    }\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(\"../Map.js\").default} map Map.\n   * @override\n   */\n  setMap(map) {\n    const currentMap = this.getMap();\n    const keys = this.featuresListenerKeys_;\n    const features = /** @type {Array<import(\"../Feature.js\").default>} */ (\n      this.getFeatures_()\n    );\n\n    if (currentMap) {\n      keys.forEach(unlistenByKey);\n      keys.length = 0;\n      this.rBush_.clear();\n      Object.values(this.featureChangeListenerKeys_).forEach(unlistenByKey);\n      this.featureChangeListenerKeys_ = {};\n    }\n    super.setMap(map);\n\n    if (map) {\n      if (this.features_) {\n        keys.push(\n          listen(\n            this.features_,\n            CollectionEventType.ADD,\n            this.handleFeatureAdd_,\n            this,\n          ),\n          listen(\n            this.features_,\n            CollectionEventType.REMOVE,\n            this.handleFeatureRemove_,\n            this,\n          ),\n        );\n      } else if (this.source_) {\n        keys.push(\n          listen(\n            this.source_,\n            VectorEventType.ADDFEATURE,\n            this.handleFeatureAdd_,\n            this,\n          ),\n          listen(\n            this.source_,\n            VectorEventType.REMOVEFEATURE,\n            this.handleFeatureRemove_,\n            this,\n          ),\n        );\n      }\n      features.forEach((feature) => this.addFeature(feature));\n    }\n  }\n\n  /**\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel\n   * @param {import(\"../coordinate.js\").Coordinate} pixelCoordinate Coordinate\n   * @param {import(\"../Map.js\").default} map Map.\n   * @return {Result|null} Snap result\n   */\n  snapTo(pixel, pixelCoordinate, map) {\n    const projection = map.getView().getProjection();\n    const projectedCoordinate = fromUserCoordinate(pixelCoordinate, projection);\n\n    const box = toUserExtent(\n      buffer(\n        boundingExtent([projectedCoordinate]),\n        map.getView().getResolution() * this.pixelTolerance_,\n      ),\n      projection,\n    );\n\n    const segments = this.rBush_.getInExtent(box);\n    const segmentsLength = segments.length;\n    if (segmentsLength === 0) {\n      return null;\n    }\n\n    let closestVertex;\n    let minSquaredDistance = Infinity;\n    let closestFeature;\n    let closestSegment = null;\n\n    const squaredPixelTolerance = this.pixelTolerance_ * this.pixelTolerance_;\n    const getResult = () => {\n      if (closestVertex) {\n        const vertexPixel = map.getPixelFromCoordinate(closestVertex);\n        const squaredPixelDistance = squaredDistance(pixel, vertexPixel);\n        if (squaredPixelDistance <= squaredPixelTolerance) {\n          return {\n            vertex: closestVertex,\n            vertexPixel: [\n              Math.round(vertexPixel[0]),\n              Math.round(vertexPixel[1]),\n            ],\n            feature: closestFeature,\n            segment: closestSegment,\n          };\n        }\n      }\n      return null;\n    };\n\n    if (this.vertex_) {\n      for (let i = 0; i < segmentsLength; ++i) {\n        const segmentData = segments[i];\n        if (segmentData.feature.getGeometry().getType() !== 'Circle') {\n          segmentData.segment.forEach((vertex) => {\n            const tempVertexCoord = fromUserCoordinate(vertex, projection);\n            const delta = squaredDistance(projectedCoordinate, tempVertexCoord);\n            if (delta < minSquaredDistance) {\n              closestVertex = vertex;\n              minSquaredDistance = delta;\n              closestFeature = segmentData.feature;\n            }\n          });\n        }\n      }\n      const result = getResult();\n      if (result) {\n        return result;\n      }\n    }\n\n    if (this.edge_) {\n      for (let i = 0; i < segmentsLength; ++i) {\n        let vertex = null;\n        const segmentData = segments[i];\n        if (segmentData.feature.getGeometry().getType() === 'Circle') {\n          let circleGeometry = segmentData.feature.getGeometry();\n          const userProjection = getUserProjection();\n          if (userProjection) {\n            circleGeometry = circleGeometry\n              .clone()\n              .transform(userProjection, projection);\n          }\n          vertex = closestOnCircle(\n            projectedCoordinate,\n            /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry),\n          );\n        } else {\n          const [segmentStart, segmentEnd] = segmentData.segment;\n          // points have only one coordinate\n          if (segmentEnd) {\n            tempSegment[0] = fromUserCoordinate(segmentStart, projection);\n            tempSegment[1] = fromUserCoordinate(segmentEnd, projection);\n            vertex = closestOnSegment(projectedCoordinate, tempSegment);\n          }\n        }\n        if (vertex) {\n          const delta = squaredDistance(projectedCoordinate, vertex);\n          if (delta < minSquaredDistance) {\n            closestVertex = toUserCoordinate(vertex, projection);\n            closestSegment =\n              segmentData.feature.getGeometry().getType() === 'Circle'\n                ? null\n                : segmentData.segment;\n            minSquaredDistance = delta;\n            closestFeature = segmentData.feature;\n          }\n        }\n      }\n\n      const result = getResult();\n      if (result) {\n        return result;\n      }\n    }\n\n    return null;\n  }\n\n  /**\n   * @param {import(\"../Feature.js\").default} feature Feature\n   * @private\n   */\n  updateFeature_(feature) {\n    this.removeFeature(feature, false);\n    this.addFeature(feature, false);\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentCircleGeometry_(segments, geometry) {\n    const projection = this.getMap().getView().getProjection();\n    let circleGeometry = geometry;\n    const userProjection = getUserProjection();\n    if (userProjection) {\n      circleGeometry = circleGeometry\n        .clone()\n        .transform(userProjection, projection);\n    }\n    const polygon = fromCircle(circleGeometry);\n    if (userProjection) {\n      polygon.transform(projection, userProjection);\n    }\n    const coordinates = polygon.getCoordinates()[0];\n    for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n      segments.push(coordinates.slice(i, i + 2));\n    }\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentGeometryCollectionGeometry_(segments, geometry) {\n    const geometries = geometry.getGeometriesArray();\n    for (let i = 0; i < geometries.length; ++i) {\n      const segmenter = this.GEOMETRY_SEGMENTERS_[geometries[i].getType()];\n      if (segmenter) {\n        segmenter(segments, geometries[i]);\n      }\n    }\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentLineStringGeometry_(segments, geometry) {\n    const coordinates = geometry.getCoordinates();\n    for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n      segments.push(coordinates.slice(i, i + 2));\n    }\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentMultiLineStringGeometry_(segments, geometry) {\n    const lines = geometry.getCoordinates();\n    for (let j = 0, jj = lines.length; j < jj; ++j) {\n      const coordinates = lines[j];\n      for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n        segments.push(coordinates.slice(i, i + 2));\n      }\n    }\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentMultiPointGeometry_(segments, geometry) {\n    geometry.getCoordinates().forEach((point) => {\n      segments.push([point]);\n    });\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentMultiPolygonGeometry_(segments, geometry) {\n    const polygons = geometry.getCoordinates();\n    for (let k = 0, kk = polygons.length; k < kk; ++k) {\n      const rings = polygons[k];\n      for (let j = 0, jj = rings.length; j < jj; ++j) {\n        const coordinates = rings[j];\n        for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n          segments.push(coordinates.slice(i, i + 2));\n        }\n      }\n    }\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentPointGeometry_(segments, geometry) {\n    segments.push([geometry.getCoordinates()]);\n  }\n\n  /**\n   * @param {Array<Array<import('../coordinate.js').Coordinate>>} segments Segments\n   * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n   * @private\n   */\n  segmentPolygonGeometry_(segments, geometry) {\n    const rings = geometry.getCoordinates();\n    for (let j = 0, jj = rings.length; j < jj; ++j) {\n      const coordinates = rings[j];\n      for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n        segments.push(coordinates.slice(i, i + 2));\n      }\n    }\n  }\n}\n\nexport default Snap;\n","/**\n * @module ol/interaction/Translate\n */\nimport Collection from '../Collection.js';\nimport Feature from '../Feature.js';\nimport Event from '../events/Event.js';\nimport {always} from '../events/condition.js';\nimport {TRUE} from '../functions.js';\nimport {fromUserCoordinate, getUserProjection} from '../proj.js';\nimport PointerInteraction from './Pointer.js';\nimport InteractionProperty from './Property.js';\n\n/**\n * @enum {string}\n */\nconst TranslateEventType = {\n  /**\n   * Triggered upon feature translation start.\n   * @event TranslateEvent#translatestart\n   * @api\n   */\n  TRANSLATESTART: 'translatestart',\n  /**\n   * Triggered upon feature translation.\n   * @event TranslateEvent#translating\n   * @api\n   */\n  TRANSLATING: 'translating',\n  /**\n   * Triggered upon feature translation end.\n   * @event TranslateEvent#translateend\n   * @api\n   */\n  TRANSLATEEND: 'translateend',\n};\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} or\n * {@link module:ol/render/Feature~RenderFeature} and a\n * {@link module:ol/layer/Layer~Layer} and returns `true` if the feature may be\n * translated or `false` otherwise.\n * @typedef {function(Feature, import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>):boolean} FilterFunction\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.always}.\n * @property {Collection<Feature>} [features] Features contained in this collection will be able to be translated together.\n * @property {Array<import(\"../layer/Layer.js\").default>|function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean} [layers] A list of layers from which features should be\n * translated. Alternatively, a filter function can be provided. The\n * function will be called for each layer in the map and should return\n * `true` for layers that you want to be translatable. If the option is\n * absent, all visible layers will be considered translatable.\n * Not used if `features` is provided.\n * @property {FilterFunction} [filter] A function\n * that takes a {@link module:ol/Feature~Feature} and an\n * {@link module:ol/layer/Layer~Layer} and returns `true` if the feature may be\n * translated or `false` otherwise. Not used if `features` is provided.\n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels inside the radius around the given position\n * will be checked for features.\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Translate~Translate} instances\n * are instances of this type.\n */\nexport class TranslateEvent extends Event {\n  /**\n   * @param {TranslateEventType} type Type.\n   * @param {Collection<Feature>} features The features translated.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} startCoordinate The original coordinates before.translation started\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   */\n  constructor(type, features, coordinate, startCoordinate, mapBrowserEvent) {\n    super(type);\n\n    /**\n     * The features being translated.\n     * @type {Collection<Feature>}\n     * @api\n     */\n    this.features = features;\n\n    /**\n     * The coordinate of the drag event.\n     * @const\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @api\n     */\n    this.coordinate = coordinate;\n\n    /**\n     * The coordinate of the start position before translation started.\n     * @const\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @api\n     */\n    this.startCoordinate = startCoordinate;\n\n    /**\n     * Associated {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @api\n     */\n    this.mapBrowserEvent = mapBrowserEvent;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'translateend'|'translatestart'|'translating', TranslateEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'translateend'|'translatestart'|'translating', Return>} TranslateOnSignature\n */\n\n/**\n * @classdesc\n * Interaction for translating (moving) features.\n * If you want to translate multiple features in a single action (for example,\n * the collection used by a select interaction), construct the interaction with\n * the `features` option.\n *\n * @fires TranslateEvent\n * @api\n */\nclass Translate extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(/** @type {import(\"./Pointer.js\").Options} */ (options));\n\n    /***\n     * @type {TranslateOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {TranslateOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {TranslateOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * The last position we translated to.\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @private\n     */\n    this.lastCoordinate_ = null;\n\n    /**\n     * The start position before translation started.\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @private\n     */\n    this.startCoordinate_ = null;\n\n    /**\n     * @type {Collection<Feature>|null}\n     * @private\n     */\n    this.features_ = options.features !== undefined ? options.features : null;\n\n    /** @type {function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean} */\n    let layerFilter;\n    if (options.layers && !this.features_) {\n      if (typeof options.layers === 'function') {\n        layerFilter = options.layers;\n      } else {\n        const layers = options.layers;\n        layerFilter = function (layer) {\n          return layers.includes(layer);\n        };\n      }\n    } else {\n      layerFilter = TRUE;\n    }\n\n    /**\n     * @private\n     * @type {function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean}\n     */\n    this.layerFilter_ = layerFilter;\n\n    /**\n     * @private\n     * @type {FilterFunction}\n     */\n    this.filter_ = options.filter && !this.features_ ? options.filter : TRUE;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : always;\n\n    /**\n     * @type {Feature}\n     * @private\n     */\n    this.lastFeature_ = null;\n\n    this.addChangeListener(\n      InteractionProperty.ACTIVE,\n      this.handleActiveChanged_,\n    );\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(event) {\n    if (!event.originalEvent || !this.condition_(event)) {\n      return false;\n    }\n    this.lastFeature_ = this.featuresAtPixel_(event.pixel, event.map);\n    if (!this.lastCoordinate_ && this.lastFeature_) {\n      this.startCoordinate_ = event.coordinate;\n      this.lastCoordinate_ = event.coordinate;\n      this.handleMoveEvent(event);\n\n      const features = this.features_ || new Collection([this.lastFeature_]);\n\n      this.dispatchEvent(\n        new TranslateEvent(\n          TranslateEventType.TRANSLATESTART,\n          features,\n          event.coordinate,\n          this.startCoordinate_,\n          event,\n        ),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(event) {\n    if (this.lastCoordinate_) {\n      this.lastCoordinate_ = null;\n      this.handleMoveEvent(event);\n\n      const features = this.features_ || new Collection([this.lastFeature_]);\n\n      this.dispatchEvent(\n        new TranslateEvent(\n          TranslateEventType.TRANSLATEEND,\n          features,\n          event.coordinate,\n          this.startCoordinate_,\n          event,\n        ),\n      );\n      // cleanup\n      this.startCoordinate_ = null;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @override\n   */\n  handleDragEvent(event) {\n    if (this.lastCoordinate_) {\n      const newCoordinate = event.coordinate;\n      const projection = event.map.getView().getProjection();\n\n      const newViewCoordinate = fromUserCoordinate(newCoordinate, projection);\n      const lastViewCoordinate = fromUserCoordinate(\n        this.lastCoordinate_,\n        projection,\n      );\n      const deltaX = newViewCoordinate[0] - lastViewCoordinate[0];\n      const deltaY = newViewCoordinate[1] - lastViewCoordinate[1];\n\n      const features = this.features_ || new Collection([this.lastFeature_]);\n      const userProjection = getUserProjection();\n\n      features.forEach(function (feature) {\n        const geom = feature.getGeometry();\n        if (userProjection) {\n          geom.transform(userProjection, projection);\n          geom.translate(deltaX, deltaY);\n          geom.transform(projection, userProjection);\n        } else {\n          geom.translate(deltaX, deltaY);\n        }\n        feature.setGeometry(geom);\n      });\n\n      this.lastCoordinate_ = newCoordinate;\n\n      this.dispatchEvent(\n        new TranslateEvent(\n          TranslateEventType.TRANSLATING,\n          features,\n          newCoordinate,\n          this.startCoordinate_,\n          event,\n        ),\n      );\n    }\n  }\n\n  /**\n   * Handle pointer move events.\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @override\n   */\n  handleMoveEvent(event) {\n    const elem = event.map.getViewport();\n\n    // Change the cursor to grab/grabbing if hovering any of the features managed\n    // by the interaction\n    if (this.featuresAtPixel_(event.pixel, event.map)) {\n      elem.classList.remove(this.lastCoordinate_ ? 'ol-grab' : 'ol-grabbing');\n      elem.classList.add(this.lastCoordinate_ ? 'ol-grabbing' : 'ol-grab');\n    } else {\n      elem.classList.remove('ol-grab', 'ol-grabbing');\n    }\n  }\n\n  /**\n   * Tests to see if the given coordinates intersects any of our selected\n   * features.\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel coordinate to test for intersection.\n   * @param {import(\"../Map.js\").default} map Map to test the intersection on.\n   * @return {Feature} Returns the feature found at the specified pixel\n   * coordinates.\n   * @private\n   */\n  featuresAtPixel_(pixel, map) {\n    return map.forEachFeatureAtPixel(\n      pixel,\n      (feature, layer) => {\n        if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n          return undefined;\n        }\n        if (this.features_ && !this.features_.getArray().includes(feature)) {\n          return undefined;\n        }\n        return feature;\n      },\n      {\n        layerFilter: this.layerFilter_,\n        hitTolerance: this.hitTolerance_,\n      },\n    );\n  }\n\n  /**\n   * Returns the Hit-detection tolerance.\n   * @return {number} Hit tolerance in pixels.\n   * @api\n   */\n  getHitTolerance() {\n    return this.hitTolerance_;\n  }\n\n  /**\n   * Hit-detection tolerance. Pixels inside the radius around the given position\n   * will be checked for features.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @api\n   */\n  setHitTolerance(hitTolerance) {\n    this.hitTolerance_ = hitTolerance;\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(\"../Map.js\").default} map Map.\n   * @override\n   */\n  setMap(map) {\n    const oldMap = this.getMap();\n    super.setMap(map);\n    this.updateState_(oldMap);\n  }\n\n  /**\n   * @private\n   */\n  handleActiveChanged_() {\n    this.updateState_(null);\n  }\n\n  /**\n   * @param {import(\"../Map.js\").default} oldMap Old map.\n   * @private\n   */\n  updateState_(oldMap) {\n    let map = this.getMap();\n    const active = this.getActive();\n    if (!map || !active) {\n      map = map || oldMap;\n      if (map) {\n        const elem = map.getViewport();\n        elem.classList.remove('ol-grab', 'ol-grabbing');\n      }\n    }\n  }\n}\n\nexport default Translate;\n","import { platformModifierKeyOnly } from 'ol/events/condition'\nimport { DragPan, MouseWheelZoom } from 'ol/interaction.js'\n\n/**\n * Desktop:\n * - LeftHold: Pan\n * - CTRL + Mousewheel: Zoom\n * - Mousewheel: Scroll page\n *\n * Mobile:\n * - 1 finger: Scroll page\n * - 2 fingers: Zoom/Pan\n *\n * @param hasWindowSize - Whether the client is being rendered in the same size as the window.\n * @param hasSmallScreen - Whether the user utilizes a device with a small screen.\n */\nexport function createPanAndZoomInteractions(\n  hasWindowSize: boolean,\n  hasSmallScreen: boolean\n) {\n  if (hasWindowSize) {\n    return [new DragPan(), new MouseWheelZoom()]\n  }\n  return [\n    new DragPan({\n      condition: function () {\n        // @ts-expect-error | As the DragPan is added to the interactions of the map, the 'this' context of the condition function should always be defined.\n        return hasSmallScreen ? this.getPointerCount() > 1 : true\n      },\n    }),\n    new MouseWheelZoom({\n      condition: platformModifierKeyOnly,\n    }),\n  ]\n}\n","export const SMALL_DISPLAY_HEIGHT = 480\nexport const SMALL_DISPLAY_WIDTH = 768\n","import Style from 'ol/style/Style'\nimport { Feature } from 'ol'\n\nexport const InvisibleStyle = new Style()\nexport const isInvisible = (feature: Feature): boolean =>\n  feature.getStyle() === InvisibleStyle\nexport const isVisible = (feature: Feature): boolean =>\n  feature.getStyle() !== InvisibleStyle\n","// adapting rules to match original file\n/* eslint-disable tsdoc/syntax */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { MasterportalapiPolygonFillHatch } from '@polar/lib-custom-types'\n\n/*\n * Polygon hatches from @masterportal/masterportalapi@2.31.0.\n * Small adaptations have been made to fit markers.\n * Licensed under MIT by Freie und Hansestadt Hamburg, Landesbetrieb Geoinformation und Vermessung.\n * Project: https://bitbucket.org/geowerkstatt-hamburg/masterportalapi\n * NOTE we can replace this file with a direct import after updating\n *      to a version supporting this feature, hence only minimal adaptation\n */\n\n// pattern library – default draw instructions as described in style.json.md\nconst diagonal = {\n  draw: [\n    {\n      type: 'line',\n      parameters: [\n        [1, -0.5],\n        [-0.5, 1],\n      ],\n    },\n    {\n      type: 'line',\n      parameters: [\n        [1.5, 0],\n        [0, 1.5],\n      ],\n    },\n  ],\n}\nconst zigLine = {\n  draw: [\n    {\n      type: 'line',\n      parameters: [\n        [0, -0.25],\n        [0.75, 0.5],\n        [0, 1.25],\n      ],\n    },\n  ],\n}\nconst namedHatches = {\n  diagonal,\n  'zig-line': zigLine,\n  'diagonal-right': { ...diagonal, rotate: 90 },\n  'zig-line-horizontal': { ...zigLine, rotate: 90 },\n  rectangle: {\n    draw: [\n      {\n        type: 'rect',\n        parameters: [\n          [0.125, 0.125, 0.25, 0.25],\n          [0.625, 0.625, 0.25, 0.25],\n        ],\n      },\n    ],\n  },\n  triangle: {\n    draw: [\n      {\n        type: 'line',\n        parameters: [\n          [0.25, 0],\n          [0.5, 0.5],\n          [0, 0.5],\n          [0.25, 0],\n        ],\n      },\n      {\n        type: 'line',\n        parameters: [\n          [0.75, 0.5],\n          [1, 1],\n          [0.5, 1],\n          [0.75, 0.5],\n        ],\n      },\n    ],\n  },\n  diamond: {\n    draw: [\n      {\n        type: 'line',\n        parameters: [\n          [0.25, 0],\n          [0.5, 0.25],\n          [0.25, 0.5],\n          [0, 0.25],\n          [0.25, 0],\n        ],\n      },\n      {\n        type: 'line',\n        parameters: [\n          [0.75, 0.5],\n          [1, 0.75],\n          [0.75, 1],\n          [0.5, 0.75],\n          [0.75, 0.5],\n        ],\n      },\n    ],\n  },\n  circle: {\n    draw: [\n      {\n        type: 'arc',\n        parameters: [\n          0.25,\n          0.25,\n          ({ size, lineWidth }) => (size - 2 * lineWidth) / 4,\n        ],\n      },\n      {\n        type: 'arc',\n        parameters: [\n          0.75,\n          0.75,\n          ({ size, lineWidth }) => (size - 2 * lineWidth) / 4,\n        ],\n      },\n    ],\n  },\n}\n\n/**\n * Determines the absolute position of a relative segment coordinate.\n * @param {Number} size side length of context\n * @returns {Function} gets absolute position in context (x or y)\n */\nfunction makeCalculateAbsolutePosition(size) {\n  return (relativePosition) => relativePosition * size\n}\n\n/**\n * Draws a singular draw instruction to context, i.e., a single line, rect, or arc.\n * @param {CanvasRenderingContext2D} context draw context\n * @param {Number} size side length of context\n * @param {Object} segment draw segment, i.e. a singular draw instruction\n * @param {('rect'|'line'|'arc')} segment.type what kind of segment it is\n * @param {Array} segment.parameters type-specific parameters, see style.json.md\n * @returns {void} side-effect on context\n */\nfunction drawSegment(context, size, { type, parameters }) {\n  const calculateAbsolutePosition = makeCalculateAbsolutePosition(size)\n\n  context.beginPath()\n\n  if (type === 'rect') {\n    parameters.forEach((rect) =>\n      context.rect(...rect.map(calculateAbsolutePosition))\n    )\n  } else if (type === 'line') {\n    const [start, ...waypoints] = parameters\n\n    context.moveTo(...start.map(calculateAbsolutePosition))\n    waypoints.forEach((waypoint) =>\n      context.lineTo(...waypoint.map(calculateAbsolutePosition))\n    )\n  } else if (type === 'arc') {\n    const [x, y, getRadiusOrRadius, startAngle, endAngle, counterclockwise] =\n      parameters\n    const radius =\n      typeof getRadiusOrRadius === 'function'\n        ? getRadiusOrRadius({ size, lineWidth: context.lineWidth })\n        : getRadiusOrRadius\n\n    context.arc(\n      makeCalculateAbsolutePosition(size)(x),\n      makeCalculateAbsolutePosition(size)(y),\n      radius,\n      // default to full circle\n      startAngle || 0,\n      endAngle || 2 * Math.PI,\n      counterclockwise || false\n    )\n  } else {\n    console.error(\n      `@polar/core: Unknown segment type \"${type}\". Skipping segment.`\n    )\n\n    return\n  }\n\n  context.stroke()\n}\n\n/**\n * Rotates a given context of side length \"size\" by \"degrees\" around its center.\n * Normally, rotation would happen based on the top left corner.\n * @param {CanvasRenderingContext2D} context draw context\n * @param {Number} size side length of context\n * @param {Number} [degrees=90] degrees to rotate context by\n * @returns {void} side-effect on context\n */\nfunction rotateContextCenter(context, size, degrees = 90) {\n  const halfSize = 0.5 * size\n\n  context.translate(halfSize, halfSize)\n  context.rotate(degrees * (Math.PI / 180))\n  context.translate(-halfSize, -halfSize)\n}\n\n/**\n * Draws a hatch pattern to the context element.\n * @param {CanvasRenderingContext2D} context draw context\n * @param {Number} size side length of context\n * @param {((\"diagonal\"|\"zig-line\"|\"diagonal-right\"|\"zig-line-horizontal\"|\"rectangle\"|\"triangle\"|\"diamond\"|\"circle\")|Object)} pattern Name of pattern library object, or draw instructions as described in style.json.md\n * @returns {void} side-effect on context\n */\nfunction drawHatch(context, size, pattern) {\n  const hatchDefinition =\n    typeof pattern === 'string' ? namedHatches[pattern] : pattern\n\n  if (hatchDefinition) {\n    const { draw, rotate } = hatchDefinition\n\n    if (draw) {\n      draw.forEach((segment) => drawSegment(context, size, segment))\n    }\n\n    if (rotate) {\n      rotateContextCenter(context, size, rotate)\n    }\n  } else {\n    console.error(\n      `@polar/core: Unknown polygon style \"${pattern}\". Skipping hatching.`\n    )\n  }\n}\n\n/**\n * Generates a polygon fill pattern.\n * @param {object} params parameters as defined in style.json.md#Polygon.polygonFillHatch\n * @returns {HTMLCanvasElement} contains polygon fill pattern\n */\nexport function getPolygonFillHatch({\n  pattern = 'diagonal',\n  size = 30,\n  lineWidth = 10,\n  backgroundColor = [0, 0, 0, 1],\n  patternColor = [255, 255, 255, 1],\n}: MasterportalapiPolygonFillHatch): HTMLCanvasElement {\n  const canvas = document.createElement('canvas')\n  const context = canvas.getContext('2d') as CanvasRenderingContext2D\n\n  canvas.width = size\n  canvas.height = size\n\n  context.fillStyle = `rgba(${backgroundColor.join(',')})`\n  context.fillRect(0, 0, canvas.width, canvas.height)\n\n  context.lineWidth = lineWidth\n  context.strokeStyle = `rgba(${patternColor.join(',')})`\n\n  drawHatch(context, size, pattern)\n\n  context.fillStyle = context.createPattern(canvas, 'repeat') as CanvasPattern\n\n  return canvas\n}\n","import Style from 'ol/style/Style'\nimport Icon from 'ol/style/Icon'\nimport { MarkerStyle } from '@polar/lib-custom-types'\nimport { getPolygonFillHatch } from './hatches'\n\ntype GetMarkerFunction = (style: MarkerStyle, multi: boolean) => Style\n\n// these have been measured to fit once and influence marker size\nconst imgSize: [number, number] = [26, 36]\nconst imgSizeMulti: [number, number] = [40, 36]\n\nconst defaultStroke = '#FFFFFF'\nconst defaultStrokeWidth = '2'\n\nconst defaultFill = '#005CA9'\nconst defaultHoverFill = '#7B1045'\nconst defaultSelectionFill = '#679100'\nconst defaultUnselectableFill = '#333333'\n\nconst prefix = 'data:image/svg+xml,'\n\nconst getImagePattern = (fill: Exclude<MarkerStyle['fill'], undefined>) =>\n  typeof fill === 'string'\n    ? ''\n    : `<defs>\n    <pattern id=\"img\" patternUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"${\n      fill.size || 30\n    }\" height=\"${fill.size || 30}\">\n      <image href=\"${getPolygonFillHatch(fill).toDataURL()}\" width=\"${\n        fill.size || 30\n      }\" height=\"${fill.size || 30}\"/>\n    </pattern>\n  </defs>`\n\n/* Path of marker svg used in this file copied and adapted from\n * @masterportal/masterportalapi/public/marker.svg. */\n\nconst makeMarker = ({\n  fill = defaultFill,\n  size = imgSize,\n  stroke = defaultStroke,\n  strokeWidth = defaultStrokeWidth,\n}: MarkerStyle) =>\n  `${prefix}${encodeURIComponent(`\n<svg width=\"${size[0]}\" height=\"${\n    size[1]\n  }\" viewBox=\"0 0 30 43\" xmlns=\"http://www.w3.org/2000/svg\">\n  <title>DB6C494E-88E8-49F1-89CE-97CBEC3A5240</title>\n  ${getImagePattern(fill)}\n  <path\n    d=\"M14.584 1C7.101 1 1 7.101 1 14.584c0 8.103 7.865 20.448 11.63 25.93a2.36 2.36 0 0 0 3.908 0c3.766-5.482 11.63-17.922 11.63-25.93C28.168 7.054 22.068 1 14.584 1z\"\n    stroke=\"${stroke}\"\n    stroke-width=\"${strokeWidth}\"\n    fill=\"${typeof fill === 'string' ? fill : 'url(#img)'}\"\n    fill-rule=\"nonzero\"\n  />\n</svg>\n`)}`\n\nconst makeMultiMarker = ({\n  clusterSize = imgSizeMulti,\n  fill = defaultFill,\n  stroke = defaultStroke,\n  strokeWidth = defaultStrokeWidth,\n}: MarkerStyle) =>\n  `${prefix}${encodeURIComponent(`\n<svg width=\"${clusterSize[0]}\" height=\"${\n    clusterSize[1]\n  }\" viewBox=\"0 0 30 43\" xmlns=\"http://www.w3.org/2000/svg\">\n  <title>0A6F4952-4A5A-4E86-88E4-4B3D2EA1E3DF</title>\n  ${getImagePattern(fill)}\n  <g stroke=\"${stroke}\" stroke-width=\"${strokeWidth}\" fill=\"${\n    typeof fill === 'string' ? fill : 'url(#img)'\n  }\" fill-rule=\"nonzero\">\n    <path d=\"M22.584 1C15.101 1 9 7.101 9 14.584c0 8.103 7.865 20.448 11.63 25.93a2.36 2.36 0 0 0 3.908 0c3.766-5.482 11.63-17.922 11.63-25.93C36.168 7.054 30.068 1 22.584 1z\"/>\n    <path d=\"M18.584 1C11.101 1 5 7.101 5 14.584c0 8.103 7.865 20.448 11.63 25.93a2.36 2.36 0 0 0 3.908 0c3.766-5.482 11.63-17.922 11.63-25.93C32.168 7.054 26.068 1 18.584 1z\"/>\n    <path d=\"M14.584 1C7.101 1 1 7.101 1 14.584c0 8.103 7.865 20.448 11.63 25.93a2.36 2.36 0 0 0 3.908 0c3.766-5.482 11.63-17.922 11.63-25.93C28.168 7.054 22.068 1 14.584 1z\"/>\n  </g>\n</svg>\n`)}`\n\n// center bottom of marker 📍 is intended to show the spot\nconst anchor = [0.5, 1]\n\n/**\n * The map became a little laggy due to constant re-generation of styles.\n * This memoization function optimises this issue by reusing styles.\n * */\nconst memoizeStyle = (getMarker: GetMarkerFunction): GetMarkerFunction => {\n  const singleCache = new Map()\n  const multiCache = new Map()\n  return (style, multi) => {\n    const cache = multi ? multiCache : singleCache\n    if (cache.has(style)) {\n      return cache.get(style)\n    }\n    const markerStyle = getMarker(style, multi)\n    cache.set(style, markerStyle)\n    if (cache.size > 1000) {\n      console.warn(\n        `@polar/core: 1000+ styles have been created. This is possibly a memory leak. Please mind that the methods exported by this module are memoized. You *may* be calling the methods with constantly newly generated objects, or maybe there's just a lot of styles.`\n      )\n    }\n    return markerStyle\n  }\n}\n\nconst getStyleFunction =\n  (fallbackFill: string): GetMarkerFunction =>\n  (style, multi = false) =>\n    new Style({\n      image: new Icon({\n        src: (multi ? makeMultiMarker : makeMarker)({\n          fill: fallbackFill,\n          ...style,\n        }),\n        anchor,\n      }),\n    })\n\nexport const getDefaultStyle = memoizeStyle(getStyleFunction(defaultFill))\n\nexport const getHoveredStyle = memoizeStyle(getStyleFunction(defaultHoverFill))\n\nexport const getSelectedStyle = memoizeStyle(\n  getStyleFunction(defaultSelectionFill)\n)\n\nexport const getUnselectableStyle = memoizeStyle(\n  getStyleFunction(defaultUnselectableFill)\n)\n","import { Feature, Map } from 'ol'\nimport { createEmpty, extend } from 'ol/extent'\n\nexport const resolveClusterClick = (map: Map, feature: Feature) => {\n  const features: Feature[] = feature.get('features')\n\n  const extent = createEmpty()\n  features.forEach((feature) =>\n    extend(extent, feature.getGeometry()?.getExtent() || [])\n  )\n\n  map.getView().fit(extent, {\n    duration: 400,\n    padding: [80, 30, 80, 30],\n  })\n}\n","import { Feature, Map } from 'ol'\nimport Cluster from 'ol/source/Cluster'\nimport VectorLayer from 'ol/layer/Vector'\nimport VectorSource from 'ol/source/Vector'\n\n// key `_gfiLayerId` required for GFI plugin interconnection\nexport const setLayerId = (map: Map, feature: Feature): void => {\n  if (feature.get('_gfiLayerId')) {\n    return\n  }\n  const layerId = map\n    .getLayers()\n    .getArray()\n    .find((layer) => {\n      if (layer instanceof VectorLayer) {\n        let step: VectorLayer | VectorSource | Cluster<Feature> = layer\n        while (step instanceof VectorLayer || step instanceof Cluster) {\n          // @ts-expect-error | Clusters in masterportalapi always have a source.\n          step = step.getSource()\n          // @ts-expect-error | It's not a vector layer anymore.\n          if (step.hasFeature(feature)) {\n            return true\n          }\n        }\n        return Boolean(step?.hasFeature?.(feature))\n      }\n      return false\n    })\n    ?.get('id')\n  if (layerId) {\n    feature.set('_gfiLayerId', layerId, true)\n  }\n}\n","import { Feature, MapBrowserEvent } from 'ol'\nimport {\n  CoreGetters,\n  CoreState,\n  ExtendedMasterportalapiMarkers,\n  MarkerStyle,\n  PolarActionContext,\n  PolarStore,\n} from '@polar/lib-custom-types'\nimport RenderFeature from 'ol/render/Feature'\nimport { isVisible } from '@polar/lib-invisible-style'\nimport VectorLayer from 'ol/layer/Vector'\nimport BaseLayer from 'ol/layer/Base'\nimport getCluster from '@polar/lib-get-cluster'\nimport {\n  getHoveredStyle,\n  getSelectedStyle,\n  getUnselectableStyle,\n} from '../../../utils/markers'\nimport { resolveClusterClick } from '../../../utils/resolveClusterClick'\nimport { setLayerId } from './setLayerId'\n\ninterface UpdateSelectionPayload {\n  feature: Feature | null\n  centerOnFeature?: boolean\n}\n\nlet lastClickEvent: MapBrowserEvent<MouseEvent> | null = null\n\n// local copies\nlet hovered: Feature | null = null\nlet selected: Feature | null = null\nlet localSelectionStyle: MarkerStyle = {}\n\nexport function updateSelection(\n  {\n    dispatch,\n    rootGetters: { map, configuration },\n  }: PolarActionContext<CoreState, CoreGetters>,\n  { feature, centerOnFeature = false }: UpdateSelectionPayload\n) {\n  if (!configuration.extendedMasterportalapiMarkers) {\n    console.error(\n      `@polar/core: The action 'updateSelection' can only be used if 'extendedMasterportalapiMarkers' has been configured.`\n    )\n    return\n  }\n  selected?.setStyle(undefined)\n  selected = null\n\n  if (feature === null) {\n    return\n  }\n\n  const selectedCluster = getCluster(map, feature, '_gfiLayerId')\n\n  selectedCluster.setStyle(\n    getSelectedStyle(\n      localSelectionStyle,\n      selectedCluster.get('features')?.length > 1\n    )\n  )\n\n  selected = selectedCluster\n  if (centerOnFeature) {\n    dispatch('centerOnFeature', selected)\n  }\n}\n\nexport function useExtendedMasterportalapiMarkers(\n  this: PolarStore<CoreState, CoreGetters>,\n  { commit, dispatch, getters }: PolarActionContext<CoreState, CoreGetters>,\n  {\n    hoverStyle = {},\n    selectionStyle = {},\n    unselectableStyle = {},\n    isSelectable = () => true,\n    layers,\n    clusterClickZoom = false,\n    dispatchOnMapSelect,\n  }: ExtendedMasterportalapiMarkers\n) {\n  localSelectionStyle = selectionStyle\n  const { map } = getters\n\n  const layerFilter = (layer: BaseLayer): boolean =>\n    layers.includes(layer.get('id'))\n\n  map\n    .getLayers()\n    .getArray()\n    .filter(layerFilter)\n    .forEach((layer) => {\n      // only vector layers reach this\n      const source = (layer as VectorLayer).getSource()\n      if (source !== null) {\n        // @ts-expect-error | Undocumented hook.\n        source.geometryFunction =\n          // prevents features from jumping due to invisible features \"pulling\"\n          (feature: Feature) =>\n            isVisible(feature) ? feature.getGeometry() : null\n      }\n      const originalStyleFunction = (layer as VectorLayer).getStyle()\n      ;(layer as VectorLayer).setStyle((feature) => {\n        if (\n          typeof isSelectable === 'undefined' ||\n          isSelectable(feature as Feature)\n        ) {\n          // @ts-expect-error | always is a function due to masterportalapi design\n          return originalStyleFunction(feature)\n        }\n        return getUnselectableStyle(\n          unselectableStyle,\n          feature.get('features').length > 1\n        )\n      })\n    })\n\n  // // // STORE EVENT HANDLING\n\n  this.watch(\n    () => getters.hovered,\n    (feature: Feature | null) => {\n      if (hovered !== null && hovered !== selected) {\n        hovered.setStyle(undefined)\n        hovered = null\n      }\n      if (feature !== null && feature !== selected) {\n        hovered = feature\n        const isMultiFeature = hovered.get('features')?.length > 1\n        hovered.setStyle(getHoveredStyle(hoverStyle, isMultiFeature))\n      }\n    }\n  )\n\n  // // // MAP EVENT HANDLING\n\n  // on zoom change, re-select since cluster was updated\n  let lastZoom = map.getView().getZoom()\n  map.on('moveend', function () {\n    const zoom = map.getView().getZoom()\n    if (zoom !== lastZoom) {\n      lastZoom = zoom\n      if (selected) {\n        const baseFeature = selected.get('features')?.[0] || selected\n        setLayerId(map, baseFeature)\n        dispatch('updateSelection', { feature: baseFeature })\n      }\n    }\n  })\n\n  map.on('pointermove', function (event) {\n    const feature = map.getFeaturesAtPixel(event.pixel, { layerFilter })[0]\n    if (feature === selected || feature instanceof RenderFeature) {\n      return\n    }\n    if (hovered !== null && hovered !== selected) {\n      hovered.setStyle(undefined)\n      hovered = null\n      commit('setHovered', hovered)\n    }\n    if (!feature || !isSelectable(feature)) {\n      return\n    }\n    const isMultiFeature = feature.get('features')?.length > 1\n    setLayerId(map, feature)\n    hovered = feature\n    commit('setHovered', hovered)\n    feature.setStyle(getHoveredStyle(hoverStyle, isMultiFeature))\n  })\n\n  map.on('click', function (event) {\n    if (selected !== null) {\n      selected.setStyle(undefined)\n      selected = null\n      commit('setSelected', selected)\n      dispatch('updateSelection', { feature: selected })\n    }\n    const feature = map.getFeaturesAtPixel(event.pixel, { layerFilter })[0]\n    if (\n      !feature ||\n      feature instanceof RenderFeature ||\n      !isSelectable(feature)\n    ) {\n      return\n    }\n    const isMultiFeature = feature.get('features')?.length > 1\n    lastClickEvent = event\n    event.stopPropagation()\n    if (\n      clusterClickZoom &&\n      isMultiFeature &&\n      map.getView().getZoom() !== map.getView().getMaxZoom()\n    ) {\n      resolveClusterClick(map, feature)\n    } else {\n      setLayerId(map, feature)\n      selected = feature\n      if (dispatchOnMapSelect) {\n        dispatch(...dispatchOnMapSelect)\n      }\n      hovered?.setStyle?.(undefined)\n      hovered = null\n      commit('setHovered', null)\n      commit('setSelected', selected)\n      selected.setStyle(getSelectedStyle(localSelectionStyle, isMultiFeature))\n      dispatch('updateSelection', { feature: selected, centerOnFeature: true })\n      dispatch('centerOnFeature', selected)\n    }\n  })\n\n  /* click leads to singlelick; if an element is selected, to not let other\n   * plugins pick it up, something was already done with it */\n  map.on('singleclick', function (event) {\n    if (event?.originalEvent === lastClickEvent?.originalEvent) {\n      event.stopPropagation()\n    }\n  })\n}\n","import {\n  CoreGetters,\n  CoreState,\n  PolarActionContext,\n} from '@polar/lib-custom-types'\n\nexport function addInterceptor(\n  { getters }: PolarActionContext<CoreState, CoreGetters>,\n  secureServiceUrlRegex: string\n) {\n  const { fetch: originalFetch } = window\n\n  // If interceptors for XMLHttpRequest or axios are needed, add them here\n  window.fetch = (resource, originalConfig) => {\n    let config = originalConfig\n\n    if (\n      getters.oidcToken &&\n      typeof resource === 'string' &&\n      resource.match(secureServiceUrlRegex)\n    ) {\n      config = {\n        ...originalConfig,\n        headers: {\n          // eslint-disable-next-line @typescript-eslint/naming-convention\n          Authorization: `Bearer ${getters.oidcToken}`,\n          ...originalConfig?.headers,\n        },\n      }\n    }\n\n    return originalFetch(resource, config)\n  }\n}\n","import i18next from 'i18next'\nimport { ping } from '@masterportal/masterportalapi'\nimport {\n  CoreGetters,\n  CoreState,\n  PolarActionContext,\n  PolarError,\n  PolarStore,\n} from '@polar/lib-custom-types'\nimport { ServiceAvailabilityCheck } from '../../types'\n\nexport default function (\n  this: PolarStore<CoreState, CoreGetters>,\n  { commit, state, getters }: PolarActionContext<CoreState, CoreGetters>\n) {\n  state.configuration.layerConf\n    .map(\n      (service): ServiceAvailabilityCheck => ({\n        ping: ping(service),\n        service,\n      })\n    )\n    .forEach(({ ping, service }) =>\n      ping\n        .then((statusCode) => {\n          if (statusCode !== 200) {\n            // NOTE more output channels? make configurable.\n            if (this.hasModule(['plugin', 'toast'])) {\n              this.dispatch('plugin/toast/addToast', {\n                type: 'warning',\n                // @ts-expect-error | t seems to be mistyped https://www.i18next.com/translation-function/interpolation#basic\n                text: i18next.t('error.serviceUnavailable', {\n                  serviceId: service.id,\n                  serviceName: service.name,\n                }),\n              })\n            }\n            // always print status code for debugging purposes\n            console.error(\n              `@polar/core: Ping to \"${service.id}\" returned \"${statusCode}\".`\n            )\n            // always add to error log for listener purposes\n            commit('setErrors', [\n              ...getters.errors,\n              {\n                type: 'connection',\n                statusCode,\n                text: `Ping to \"${service.id}\" returned \"${statusCode}\".`,\n              } as PolarError,\n            ])\n          }\n        })\n        .catch((e) => console.error('@polar/core', e))\n    )\n}\n","// console is a vital feature for this\n/* eslint-disable no-console */\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport merge from 'lodash.merge'\nimport {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport noop from '@repositoryname/noop'\nimport i18next from 'i18next'\nimport {\n  CoreState,\n  MapConfig,\n  MoveHandleActionButton,\n  MoveHandleProperties,\n  PluginContainer,\n  PolarError,\n} from '@polar/lib-custom-types'\nimport { Interaction } from 'ol/interaction'\nimport { Feature, Map } from 'ol'\nimport { Point } from 'ol/geom'\nimport { easeOut } from 'ol/easing'\nimport getCluster from '@polar/lib-get-cluster'\nimport { CapabilitiesModule } from '../storeModules/capabilities'\nimport { createPanAndZoomInteractions } from '../utils/interactions'\nimport { SMALL_DISPLAY_HEIGHT, SMALL_DISPLAY_WIDTH } from '../utils/constants'\nimport {\n  updateSelection,\n  useExtendedMasterportalapiMarkers,\n} from './actions/useExtendedMasterportalapiMarkers'\nimport { addInterceptor } from './actions/addInterceptor'\nimport checkServiceAvailability from './actions/checkServiceAvailability'\n\n// @ts-expect-error | 'TS2339: Property 'env' does not exist on type 'ImportMeta'.' - It does since we're using vite as a bundler.\nconst devMode = import.meta.env.DEV\n\nconst mutationLogger = (store) => {\n  if (devMode) {\n    console.log('DEV MODE DETECTED - VUEX LOGGING ENABLED')\n    store.subscribe(({ type, payload }) => {\n      let fixedPayload\n      // \"fix\" in the sense of \"screenshot\" – print doesn't change anymore\n      if (typeof payload === 'undefined') {\n        fixedPayload = undefined\n      } else {\n        try {\n          fixedPayload = JSON.parse(JSON.stringify(payload))\n        } catch (e) {\n          // e.g. cyclic objects can't be fixed\n          fixedPayload = payload\n        }\n      }\n      console.log(`Mutation: '${type}'; Payload:`, fixedPayload)\n    })\n  }\n}\n\nVue.use(Vuex)\n\nconst getInitialState = (): CoreState => ({\n  map: 1,\n  clientHeight: 0,\n  clientWidth: 0,\n  components: 1,\n  center: null,\n  hovered: 1,\n  moveHandle: 1,\n  moveHandleActionButton: 1,\n  selected: 1,\n  zoomLevel: 0,\n  // @ts-expect-error | Required values are set in utils/createMap/index.ts\n  configuration: {\n    layers: [],\n    layerConf: [],\n    startCenter: [0, 0],\n  },\n  hasSmallDisplay: false,\n  errors: [],\n  language: '',\n  mapHasDimensions: false,\n  oidcToken: '',\n})\n\nexport const makeStore = (mapConfiguration: MapConfig) => {\n  /*\n   * NOTE: The following variables are used to store complex information\n   * retrievable from the store without actually adding them to the store.\n   * The reason is that complex objects, possibly containing circle references,\n   * put a lot of work to the Vuex store to make them reactive, whilst gaining\n   * nothing in return. The Vuex store should only be used to store simple\n   * information.\n   *\n   * To still use the power of Vuex in this regard, this hack is applied.\n   * Please note that no child item of map/components is reactive at all.\n   * They must be set via setter to let getters toggle through.\n   * This is intended.\n   */\n  let map: null | Map = null\n  let hovered: null | Feature = null\n  let moveHandle: MoveHandleProperties | null = null\n  let moveHandleActionButton: MoveHandleActionButton | null = null\n  let selected: null | Feature = null\n  let components: PluginContainer[] = []\n  let interactions: Interaction[] = []\n\n  const setCenter = ({ map }) =>\n    store.commit('setCenter', map.getView().getCenter())\n  const setZoom = ({ map }) =>\n    store.commit('setZoomLevel', map.getView().getZoom())\n\n  const store = new Store({\n    state: getInitialState(),\n    plugins: [mutationLogger], // vuex plugins, not polar plugins\n    modules: {\n      capabilities: CapabilitiesModule,\n      /* reserved for plugins */\n      plugin: {\n        namespaced: true,\n      },\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      // hack: deliver map (outside vuex) based on counter; see NOTE above\n      map: (state) => {\n        noop(state.map)\n        return map\n      },\n      moveHandle: (state) => {\n        noop(state.moveHandle)\n        return moveHandle\n      },\n      moveHandleActionButton: (state) => {\n        noop(state.moveHandleActionButton)\n        return moveHandleActionButton\n      },\n      hovered: (state) => {\n        noop(state.hovered)\n        return hovered\n      },\n      selected: (state) => {\n        noop(state.selected)\n        return selected\n      },\n      selectedCoordinates: (state) => {\n        noop(state.selected)\n        return selected === null\n          ? null\n          : (selected.getGeometry() as Point).getCoordinates()\n      },\n      // hack: deliver components (outside vuex) based on counter; see NOTE above\n      components: (state) => {\n        noop(state.components)\n        return components\n      },\n      // TODO: Both will possibly be updated with different breakpoints\n      hasSmallHeight: (state) => state.clientHeight <= SMALL_DISPLAY_HEIGHT,\n      hasSmallWidth: (state) => state.clientWidth <= SMALL_DISPLAY_WIDTH,\n      hasWindowSize(state) {\n        return (\n          window.innerHeight === state.clientHeight &&\n          window.innerWidth === state.clientWidth\n        )\n      },\n      deviceIsHorizontal: (_, getters) =>\n        getters.hasSmallHeight && getters.hasWindowSize,\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n      setMap: (state, payload) => {\n        if (map) {\n          map.un('moveend', setCenter)\n          map.un('moveend', setZoom)\n        }\n        map = payload\n        if (map) {\n          map.on('moveend', setCenter)\n          map.on('moveend', setZoom)\n          setCenter({ map })\n          setZoom({ map })\n        }\n        // NOTE: hack: don't put map in vuex (complex object); see NOTE above\n        state.map = state.map + 1\n      },\n      setHovered: (state, payload) => {\n        if (payload === null || payload.get('features')) {\n          hovered = payload\n        } else if (map !== null) {\n          // nested features are invisible and hence unfit for styling\n          hovered = getCluster(map, payload, '_gfiLayerId')\n        }\n        state.hovered = state.hovered + 1\n      },\n      setMoveHandle: (state, payload: MoveHandleProperties | null) => {\n        moveHandle = payload\n        state.moveHandle += 1\n      },\n      setMoveHandleActionButton: (\n        state,\n        payload: MoveHandleActionButton | null\n      ) => {\n        moveHandleActionButton = payload\n        state.moveHandleActionButton += 1\n      },\n      setSelected: (state, payload) => {\n        selected = payload\n        state.selected = state.selected + 1\n      },\n      setComponents: (state, payload) => {\n        components = payload\n        // NOTE: hack: don't put components in vuex (complex objects); see NOTE above\n        state.components = state.components + 1\n      },\n      addError: (state, error: PolarError) => {\n        state.errors.push(error)\n      },\n    },\n    actions: {\n      addInterceptor,\n      checkServiceAvailability,\n      addComponent({ state, commit, dispatch }, component: PluginContainer) {\n        const { locales, language, name, options, storeModule } = component\n\n        /* configuration merge – \"options\" are from client-code, \"configuration\"\n         * is from mapConfiguration object and thus overrides */\n        commit('setConfiguration', {\n          ...state.configuration,\n          [name]: merge({}, options, state.configuration[name] || {}),\n        })\n\n        // if a store module exists, register it to plugin module namespace\n        if (storeModule) {\n          this.registerModule(['plugin', name], storeModule)\n          const setupActionName = `plugin/${name}/setupModule`\n          // @ts-expect-error | It's not defined on the interface but accessible and needed here.\n          const setupActionExists = Object.keys(this._actions).includes(\n            setupActionName\n          )\n\n          if (setupActionExists) {\n            dispatch(setupActionName, options)\n          }\n        }\n        if (locales ?? language) {\n          // NOTE: If somehow needed later, add the namespace to the Locale as well\n          ;(locales ?? language).forEach((lng) => {\n            i18next.addResourceBundle(lng.type, 'common', lng.resources, true)\n          })\n        }\n        if (state.configuration[name].displayComponent) {\n          commit('setComponents', [...components, component])\n\n          if (!state.configuration[name].layoutTag) {\n            console.warn(\n              `@polar/core: Component \"${name}\" was registered as visible ('displayComponent' had a truthy value), but no 'layoutTag' was associated. This may be an error in configuration and will lead to the component not being visible in the UI.`\n            )\n          }\n        }\n      },\n      centerOnFeature({ rootGetters: { map } }, feature: Feature) {\n        map.getView().animate({\n          center: (feature.getGeometry() as Point).getCoordinates(),\n          duration: 400,\n          easing: easeOut,\n        })\n      },\n      updateDragAndZoomInteractions({ getters }) {\n        interactions.forEach((i) => getters.map.removeInteraction(i))\n        interactions = createPanAndZoomInteractions(\n          getters.hasWindowSize,\n          window.innerHeight <= SMALL_DISPLAY_HEIGHT ||\n            window.innerWidth <= SMALL_DISPLAY_WIDTH\n        )\n        interactions.forEach((i) => getters.map.addInteraction(i))\n      },\n      useExtendedMasterportalapiMarkers,\n      updateSelection,\n    },\n  })\n  i18next.on('languageChanged', (language) => {\n    store.commit('setLanguage', language)\n  })\n\n  store.commit('setConfiguration', mapConfiguration)\n  if (mapConfiguration.oidcToken) {\n    // copied to a separate spot for usage as it's changable data at run-time\n    store.commit('setOidcToken', mapConfiguration.oidcToken)\n  }\n  if (mapConfiguration.secureServiceUrlRegex) {\n    store.dispatch('addInterceptor', mapConfiguration.secureServiceUrlRegex)\n  }\n\n  return store\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vuetify\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"Vuetify\"] = factory(root[\"Vue\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_vue__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./src/components/VAlert/VAlert.sass\":\n/*!*******************************************!*\\\n  !*** ./src/components/VAlert/VAlert.sass ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VAlert/VAlert.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VAlert/VAlert.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAlert_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAlert.sass */ \"./src/components/VAlert/VAlert.sass\");\n/* harmony import */ var _VAlert_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VAlert_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_transitionable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/transitionable */ \"./src/mixins/transitionable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n\n // Mixins\n\n\n\n // Utilities\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_transitionable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-alert',\n  props: {\n    border: {\n      type: String,\n      validator: function validator(val) {\n        return ['top', 'right', 'bottom', 'left'].includes(val);\n      }\n    },\n    closeLabel: {\n      type: String,\n      default: '$vuetify.close'\n    },\n    coloredBorder: Boolean,\n    dense: Boolean,\n    dismissible: Boolean,\n    closeIcon: {\n      type: String,\n      default: '$cancel'\n    },\n    icon: {\n      default: '',\n      type: [Boolean, String],\n      validator: function validator(val) {\n        return typeof val === 'string' || val === false;\n      }\n    },\n    outlined: Boolean,\n    prominent: Boolean,\n    text: Boolean,\n    type: {\n      type: String,\n      validator: function validator(val) {\n        return ['info', 'error', 'success', 'warning'].includes(val);\n      }\n    },\n    value: {\n      type: Boolean,\n      default: true\n    }\n  },\n  computed: {\n    __cachedBorder: function __cachedBorder() {\n      var _a;\n\n      if (!this.border) return null;\n      var data = {\n        staticClass: 'v-alert__border',\n        class: (_a = {}, _a[\"v-alert__border--\" + this.border] = true, _a)\n      };\n\n      if (this.coloredBorder) {\n        data = this.setBackgroundColor(this.computedColor, data);\n        data.class['v-alert__border--has-color'] = true;\n      }\n\n      return this.$createElement('div', data);\n    },\n    __cachedDismissible: function __cachedDismissible() {\n      var _this = this;\n\n      if (!this.dismissible) return null;\n      var color = this.iconColor;\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        staticClass: 'v-alert__dismissible',\n        props: {\n          color: color,\n          icon: true,\n          small: true\n        },\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.closeLabel)\n        },\n        on: {\n          click: function click() {\n            return _this.isActive = false;\n          }\n        }\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        props: {\n          color: color\n        }\n      }, this.closeIcon)]);\n    },\n    __cachedIcon: function __cachedIcon() {\n      if (!this.computedIcon) return null;\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        staticClass: 'v-alert__icon',\n        props: {\n          color: this.iconColor\n        }\n      }, this.computedIcon);\n    },\n    classes: function classes() {\n      var classes = __assign(__assign({}, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-alert--border': Boolean(this.border),\n        'v-alert--dense': this.dense,\n        'v-alert--outlined': this.outlined,\n        'v-alert--prominent': this.prominent,\n        'v-alert--text': this.text\n      });\n\n      if (this.border) {\n        classes[\"v-alert--border-\" + this.border] = true;\n      }\n\n      return classes;\n    },\n    computedColor: function computedColor() {\n      return this.color || this.type;\n    },\n    computedIcon: function computedIcon() {\n      if (this.icon === false) return false;\n      if (typeof this.icon === 'string' && this.icon) return this.icon;\n      if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false;\n      return \"$\" + this.type;\n    },\n    hasColoredIcon: function hasColoredIcon() {\n      return this.hasText || Boolean(this.border) && this.coloredBorder;\n    },\n    hasText: function hasText() {\n      return this.text || this.outlined;\n    },\n    iconColor: function iconColor() {\n      return this.hasColoredIcon ? this.computedColor : undefined;\n    },\n    isDark: function isDark() {\n      if (this.type && !this.coloredBorder && !this.outlined) return true;\n      return _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.computed.isDark.call(this);\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('outline')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"breaking\"])('outline', 'outlined', this);\n    }\n  },\n  methods: {\n    genWrapper: function genWrapper() {\n      var children = [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getSlot\"])(this, 'prepend') || this.__cachedIcon, this.genContent(), this.__cachedBorder, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getSlot\"])(this, 'append'), this.$scopedSlots.close ? this.$scopedSlots.close({\n        toggle: this.toggle\n      }) : this.__cachedDismissible];\n      var data = {\n        staticClass: 'v-alert__wrapper'\n      };\n      return this.$createElement('div', data, children);\n    },\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-alert__content'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getSlot\"])(this));\n    },\n    genAlert: function genAlert() {\n      var data = {\n        staticClass: 'v-alert',\n        attrs: {\n          role: 'alert'\n        },\n        on: this.listeners$,\n        class: this.classes,\n        style: this.styles,\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }]\n      };\n\n      if (!this.coloredBorder) {\n        var setColor = this.hasText ? this.setTextColor : this.setBackgroundColor;\n        data = setColor(this.computedColor, data);\n      }\n\n      return this.$createElement('div', data, [this.genWrapper()]);\n    },\n\n    /** @public */\n    toggle: function toggle() {\n      this.isActive = !this.isActive;\n    }\n  },\n  render: function render(h) {\n    var render = this.genAlert();\n    if (!this.transition) return render;\n    return h('transition', {\n      props: {\n        name: this.transition,\n        origin: this.origin,\n        mode: this.mode\n      }\n    }, [render]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAlert/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/components/VAlert/index.ts ***!\n  \\****************************************/\n/*! exports provided: VAlert, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAlert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAlert */ \"./src/components/VAlert/VAlert.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAlert\", function() { return _VAlert__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAlert__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VApp/VApp.sass\":\n/*!***************************************!*\\\n  !*** ./src/components/VApp/VApp.sass ***!\n  \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VApp/VApp.ts\":\n/*!*************************************!*\\\n  !*** ./src/components/VApp/VApp.ts ***!\n  \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VApp_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VApp.sass */ \"./src/components/VApp/VApp.sass\");\n/* harmony import */ var _VApp_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VApp_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n  name: 'v-app',\n  props: {\n    dark: {\n      type: Boolean,\n      default: undefined\n    },\n    id: {\n      type: String,\n      default: 'app'\n    },\n    light: {\n      type: Boolean,\n      default: undefined\n    }\n  },\n  computed: {\n    isDark: function isDark() {\n      return this.$vuetify.theme.dark;\n    }\n  },\n  beforeCreate: function beforeCreate() {\n    if (!this.$vuetify || this.$vuetify === this.$root) {\n      throw new Error('Vuetify is not properly initialized, see https://v2.vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object');\n    }\n  },\n  render: function render(h) {\n    var wrapper = h('div', {\n      staticClass: 'v-application--wrap'\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n    return h('div', {\n      staticClass: 'v-application',\n      class: __assign({\n        'v-application--is-rtl': this.$vuetify.rtl,\n        'v-application--is-ltr': !this.$vuetify.rtl\n      }, this.themeClasses),\n      attrs: {\n        'data-app': true\n      },\n      domProps: {\n        id: this.id\n      }\n    }, [wrapper]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VApp/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VApp/index.ts ***!\n  \\**************************************/\n/*! exports provided: VApp, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VApp */ \"./src/components/VApp/VApp.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VApp\", function() { return _VApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VAppBar/VAppBar.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VAppBar/VAppBar.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VAppBar/VAppBar.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VAppBar/VAppBar.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAppBar_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAppBar.sass */ \"./src/components/VAppBar/VAppBar.sass\");\n/* harmony import */ var _VAppBar_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VAppBar_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VToolbar/VToolbar */ \"./src/components/VToolbar/VToolbar.ts\");\n/* harmony import */ var _directives_scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/scroll */ \"./src/directives/scroll/index.ts\");\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable/index.ts\");\n/* harmony import */ var _mixins_scrollable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/scrollable */ \"./src/mixins/scrollable/index.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Directives\n\n // Mixins\n\n\n\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_scrollable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('top', ['clippedLeft', 'clippedRight', 'computedHeight', 'invertedScroll', 'isExtended', 'isProminent', 'value']));\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-app-bar',\n  directives: {\n    Scroll: _directives_scroll__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  provide: function provide() {\n    return {\n      VAppBar: this\n    };\n  },\n  props: {\n    clippedLeft: Boolean,\n    clippedRight: Boolean,\n    collapseOnScroll: Boolean,\n    elevateOnScroll: Boolean,\n    fadeImgOnScroll: Boolean,\n    hideOnScroll: Boolean,\n    invertedScroll: Boolean,\n    scrollOffScreen: Boolean,\n    shrinkOnScroll: Boolean,\n    value: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: function data() {\n    return {\n      isActive: this.value\n    };\n  },\n  computed: {\n    applicationProperty: function applicationProperty() {\n      return !this.bottom ? 'top' : 'bottom';\n    },\n    canScroll: function canScroll() {\n      return _mixins_scrollable__WEBPACK_IMPORTED_MODULE_4__[\"default\"].options.computed.canScroll.call(this) && (this.invertedScroll || this.elevateOnScroll || this.hideOnScroll || this.collapseOnScroll || this.isBooted || // If falsy, user has provided an\n      // explicit value which should\n      // overwrite anything we do\n      !this.value);\n    },\n    classes: function classes() {\n      return __assign(__assign({}, _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n        'v-app-bar': true,\n        'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n        'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n        'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n        'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n        'v-app-bar--hide-shadow': this.hideShadow,\n        'v-app-bar--is-scrolled': this.currentScroll > 0,\n        'v-app-bar--shrink-on-scroll': this.shrinkOnScroll\n      });\n    },\n    scrollRatio: function scrollRatio() {\n      var threshold = this.computedScrollThreshold;\n      return Math.max((threshold - this.currentScroll) / threshold, 0);\n    },\n    computedContentHeight: function computedContentHeight() {\n      if (!this.shrinkOnScroll) return _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.computedContentHeight.call(this);\n      var min = this.dense ? 48 : 56;\n      var max = this.computedOriginalHeight;\n      return min + (max - min) * this.scrollRatio;\n    },\n    computedFontSize: function computedFontSize() {\n      if (!this.isProminent) return undefined;\n      var min = 1.25;\n      var max = 1.5;\n      return min + (max - min) * this.scrollRatio;\n    },\n    computedLeft: function computedLeft() {\n      if (!this.app || this.clippedLeft) return 0;\n      return this.$vuetify.application.left;\n    },\n    computedMarginTop: function computedMarginTop() {\n      if (!this.app) return 0;\n      return this.$vuetify.application.bar;\n    },\n    computedOpacity: function computedOpacity() {\n      if (!this.fadeImgOnScroll) return undefined;\n      return this.scrollRatio;\n    },\n    computedOriginalHeight: function computedOriginalHeight() {\n      var height = _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.computedContentHeight.call(this);\n      if (this.isExtended) height += parseInt(this.extensionHeight);\n      return height;\n    },\n    computedRight: function computedRight() {\n      if (!this.app || this.clippedRight) return 0;\n      return this.$vuetify.application.right;\n    },\n    computedScrollThreshold: function computedScrollThreshold() {\n      if (this.scrollThreshold) return Number(this.scrollThreshold);\n      return this.computedOriginalHeight - (this.dense ? 48 : 56);\n    },\n    computedTransform: function computedTransform() {\n      if (!this.canScroll || this.elevateOnScroll && this.currentScroll === 0 && this.isActive) return 0;\n      if (this.isActive) return 0;\n      var scrollOffScreen = this.scrollOffScreen ? this.computedHeight : this.computedContentHeight;\n      return this.bottom ? scrollOffScreen : -scrollOffScreen;\n    },\n    hideShadow: function hideShadow() {\n      if (this.elevateOnScroll && this.isExtended) {\n        return this.currentScroll < this.computedScrollThreshold;\n      }\n\n      if (this.elevateOnScroll) {\n        return this.currentScroll === 0 || this.computedTransform < 0;\n      }\n\n      return (!this.isExtended || this.scrollOffScreen) && this.computedTransform !== 0;\n    },\n    isCollapsed: function isCollapsed() {\n      if (!this.collapseOnScroll) {\n        return _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.isCollapsed.call(this);\n      }\n\n      return this.currentScroll > 0;\n    },\n    isProminent: function isProminent() {\n      return _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.isProminent.call(this) || this.shrinkOnScroll;\n    },\n    styles: function styles() {\n      return __assign(__assign({}, _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this)), {\n        fontSize: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.computedFontSize, 'rem'),\n        marginTop: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.computedMarginTop),\n        transform: \"translateY(\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.computedTransform) + \")\",\n        left: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.computedLeft),\n        right: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.computedRight)\n      });\n    }\n  },\n  watch: {\n    canScroll: 'onScroll',\n    computedTransform: function computedTransform() {\n      // Normally we do not want the v-app-bar\n      // to update the application top value\n      // to avoid screen jump. However, in\n      // this situation, we must so that\n      // the clipped drawer can update\n      // its top value when scrolled\n      if (!this.canScroll || !this.clippedLeft && !this.clippedRight) return;\n      this.callUpdate();\n    },\n    invertedScroll: function invertedScroll(val) {\n      this.isActive = !val || this.currentScroll !== 0;\n    },\n    hideOnScroll: function hideOnScroll(val) {\n      this.isActive = !val || this.currentScroll < this.computedScrollThreshold;\n    }\n  },\n  created: function created() {\n    if (this.invertedScroll) this.isActive = false;\n  },\n  methods: {\n    genBackground: function genBackground() {\n      var render = _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genBackground.call(this);\n      render.data = this._b(render.data || {}, render.tag, {\n        style: {\n          opacity: this.computedOpacity\n        }\n      });\n      return render;\n    },\n    updateApplication: function updateApplication() {\n      return this.invertedScroll ? 0 : this.computedHeight + this.computedTransform;\n    },\n    thresholdMet: function thresholdMet() {\n      if (this.invertedScroll) {\n        this.isActive = this.currentScroll > this.computedScrollThreshold;\n        return;\n      }\n\n      if (this.hideOnScroll) {\n        this.isActive = this.isScrollingUp || this.currentScroll < this.computedScrollThreshold;\n      }\n\n      if (this.currentThreshold < this.computedScrollThreshold) return;\n      this.savedScroll = this.currentScroll;\n    }\n  },\n  render: function render(h) {\n    var render = _VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.render.call(this, h);\n    render.data = render.data || {};\n\n    if (this.canScroll) {\n      render.data.directives = render.data.directives || [];\n      render.data.directives.push({\n        arg: this.scrollTarget,\n        name: 'scroll',\n        value: this.onScroll\n      });\n    }\n\n    return render;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAppBar/VAppBarNavIcon.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VAppBar/VAppBarNavIcon.ts ***!\n  \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VBtn_VBtn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VBtn/VBtn */ \"./src/components/VBtn/VBtn.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Components\n\n\n\n // Types\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend({\n  name: 'v-app-bar-nav-icon',\n  functional: true,\n  render: function render(h, _a) {\n    var slots = _a.slots,\n        listeners = _a.listeners,\n        props = _a.props,\n        data = _a.data;\n    var d = Object.assign(data, {\n      staticClass: (\"v-app-bar__nav-icon \" + (data.staticClass || '')).trim(),\n      props: __assign(__assign({}, props), {\n        icon: true\n      }),\n      on: listeners\n    });\n    var defaultSlot = slots().default;\n    return h(_VBtn_VBtn__WEBPACK_IMPORTED_MODULE_1__[\"default\"], d, defaultSlot || [h(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], '$menu')]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAppBar/VAppBarTitle.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VAppBar/VAppBarTitle.ts ***!\n  \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _services_goto_easing_patterns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/goto/easing-patterns */ \"./src/services/goto/easing-patterns.ts\");\n// Mixins\n // Utilities\n\n\n\nvar base = Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])('VAppBar', 'v-app-bar-title', 'v-app-bar');\n/* harmony default export */ __webpack_exports__[\"default\"] = (base.extend().extend({\n  name: 'v-app-bar-title',\n  data: function data() {\n    return {\n      contentWidth: 0,\n      left: 0,\n      width: 0\n    };\n  },\n  watch: {\n    '$vuetify.breakpoint.width': 'updateDimensions'\n  },\n  computed: {\n    styles: function styles() {\n      if (!this.contentWidth) return {};\n      var min = this.width;\n      var max = this.contentWidth;\n      var ratio = Object(_services_goto_easing_patterns__WEBPACK_IMPORTED_MODULE_2__[\"easeInOutCubic\"])(Math.min(1, this.VAppBar.scrollRatio * 1.5));\n      return {\n        width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(min + (max - min) * ratio),\n        visibility: this.VAppBar.scrollRatio ? 'visible' : 'hidden'\n      };\n    }\n  },\n  mounted: function mounted() {\n    this.updateDimensions();\n  },\n  methods: {\n    updateDimensions: function updateDimensions() {\n      var dimensions = this.$refs.placeholder.getBoundingClientRect();\n      this.width = dimensions.width;\n      this.left = dimensions.left;\n      this.contentWidth = this.$refs.content.scrollWidth;\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      class: 'v-toolbar__title v-app-bar-title'\n    }, [h('div', {\n      class: 'v-app-bar-title__content',\n      style: this.styles,\n      ref: 'content'\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getSlot\"])(this)), h('div', {\n      class: 'v-app-bar-title__placeholder',\n      style: {\n        visibility: this.VAppBar.scrollRatio ? 'hidden' : 'visible'\n      },\n      ref: 'placeholder'\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getSlot\"])(this))]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAppBar/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VAppBar/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VAppBar, VAppBarNavIcon, VAppBarTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAppBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAppBar */ \"./src/components/VAppBar/VAppBar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAppBar\", function() { return _VAppBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VAppBarNavIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VAppBarNavIcon */ \"./src/components/VAppBar/VAppBarNavIcon.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAppBarNavIcon\", function() { return _VAppBarNavIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VAppBarTitle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VAppBarTitle */ \"./src/components/VAppBar/VAppBarTitle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAppBarTitle\", function() { return _VAppBarTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VAppBar: _VAppBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VAppBarNavIcon: _VAppBarNavIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VAppBarTitle: _VAppBarTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VAutocomplete/VAutocomplete.sass\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VAutocomplete/VAutocomplete.sass ***!\n  \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VAutocomplete/VAutocomplete.ts\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VAutocomplete/VAutocomplete.ts ***!\n  \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAutocomplete_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAutocomplete.sass */ \"./src/components/VAutocomplete/VAutocomplete.sass\");\n/* harmony import */ var _VAutocomplete_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VAutocomplete_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.ts\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n\n // Utilities\n\n\n\n\nvar defaultMenuProps = __assign(__assign({}, _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"defaultMenuProps\"]), {\n  offsetY: true,\n  offsetOverflow: true,\n  transition: false\n});\n/* @vue/component */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-autocomplete',\n  props: {\n    autoSelectFirst: {\n      type: Boolean,\n      default: false\n    },\n    filter: {\n      type: Function,\n      default: function _default(item, queryText, itemText) {\n        return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1;\n      }\n    },\n    hideNoData: Boolean,\n    menuProps: {\n      type: _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.props.menuProps.type,\n      default: function _default() {\n        return defaultMenuProps;\n      }\n    },\n    noFilter: Boolean,\n    searchInput: {\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      lazySearch: this.searchInput\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-autocomplete': true,\n        'v-autocomplete--is-selecting-index': this.selectedIndex > -1\n      });\n    },\n    computedItems: function computedItems() {\n      return this.filteredItems;\n    },\n    selectedValues: function selectedValues() {\n      var _this = this;\n\n      return this.selectedItems.map(function (item) {\n        return _this.getValue(item);\n      });\n    },\n    hasDisplayedItems: function hasDisplayedItems() {\n      var _this = this;\n\n      return this.hideSelected ? this.filteredItems.some(function (item) {\n        return !_this.hasItem(item);\n      }) : this.filteredItems.length > 0;\n    },\n    currentRange: function currentRange() {\n      if (this.selectedItem == null) return 0;\n      return String(this.getText(this.selectedItem)).length;\n    },\n    filteredItems: function filteredItems() {\n      var _this = this;\n\n      if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems;\n      return this.allItems.filter(function (item) {\n        var value = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getPropertyFromItem\"])(item, _this.itemText);\n        var text = value != null ? String(value) : '';\n        return _this.filter(item, String(_this.internalSearch), text);\n      });\n    },\n    internalSearch: {\n      get: function get() {\n        return this.lazySearch;\n      },\n      set: function set(val) {\n        // emit update event only when the new\n        // search value is different from previous\n        if (this.lazySearch !== val) {\n          this.lazySearch = val;\n          this.$emit('update:search-input', val);\n        }\n      }\n    },\n    isAnyValueAllowed: function isAnyValueAllowed() {\n      return false;\n    },\n    isDirty: function isDirty() {\n      return this.searchIsDirty || this.selectedItems.length > 0;\n    },\n    isSearching: function isSearching() {\n      return this.multiple && this.searchIsDirty || this.searchIsDirty && this.internalSearch !== this.getText(this.selectedItem);\n    },\n    menuCanShow: function menuCanShow() {\n      if (!this.isFocused) return false;\n      return this.hasDisplayedItems || !this.hideNoData;\n    },\n    $_menuProps: function $_menuProps() {\n      var props = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.$_menuProps.call(this);\n      props.contentClass = (\"v-autocomplete__content \" + (props.contentClass || '')).trim();\n      return __assign(__assign({}, defaultMenuProps), props);\n    },\n    searchIsDirty: function searchIsDirty() {\n      return this.internalSearch != null && this.internalSearch !== '';\n    },\n    selectedItem: function selectedItem() {\n      var _this = this;\n\n      if (this.multiple) return null;\n      return this.selectedItems.find(function (i) {\n        return _this.valueComparator(_this.getValue(i), _this.getValue(_this.internalValue));\n      });\n    },\n    listData: function listData() {\n      var data = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.listData.call(this);\n      data.props = __assign(__assign({}, data.props), {\n        items: this.virtualizedItems,\n        noFilter: this.noFilter || !this.isSearching || !this.filteredItems.length,\n        searchInput: this.internalSearch\n      });\n      return data;\n    }\n  },\n  watch: {\n    filteredItems: 'onFilteredItemsChanged',\n    internalValue: 'setSearch',\n    isFocused: function isFocused(val) {\n      if (val) {\n        document.addEventListener('copy', this.onCopy);\n        this.$refs.input && this.$refs.input.select();\n      } else {\n        document.removeEventListener('copy', this.onCopy);\n        this.blur();\n        this.updateSelf();\n      }\n    },\n    isMenuActive: function isMenuActive(val) {\n      if (val || !this.hasSlot) return;\n      this.lazySearch = null;\n    },\n    items: function items(val, oldVal) {\n      // If we are focused, the menu\n      // is not active, hide no data is enabled,\n      // and items change\n      // User is probably async loading\n      // items, try to activate the menu\n      if (!(oldVal && oldVal.length) && this.hideNoData && this.isFocused && !this.isMenuActive && val.length) this.activateMenu();\n    },\n    searchInput: function searchInput(val) {\n      this.lazySearch = val;\n    },\n    internalSearch: 'onInternalSearchChanged',\n    itemText: 'updateSelf'\n  },\n  created: function created() {\n    this.setSearch();\n  },\n  destroyed: function destroyed() {\n    document.removeEventListener('copy', this.onCopy);\n  },\n  methods: {\n    onFilteredItemsChanged: function onFilteredItemsChanged(val, oldVal) {\n      var _this = this; // TODO: How is the watcher triggered\n      // for duplicate items? no idea\n\n\n      if (val === oldVal) return;\n\n      if (!this.autoSelectFirst) {\n        var preSelectedItem_1 = oldVal[this.$refs.menu.listIndex];\n\n        if (preSelectedItem_1) {\n          this.setMenuIndex(val.findIndex(function (i) {\n            return i === preSelectedItem_1;\n          }));\n        } else {\n          this.setMenuIndex(-1);\n        }\n\n        this.$emit('update:list-index', this.$refs.menu.listIndex);\n      }\n\n      this.$nextTick(function () {\n        if (!_this.internalSearch || val.length !== 1 && !_this.autoSelectFirst) return;\n\n        _this.$refs.menu.getTiles();\n\n        if (_this.autoSelectFirst && val.length) {\n          _this.setMenuIndex(0);\n\n          _this.$emit('update:list-index', _this.$refs.menu.listIndex);\n        }\n      });\n    },\n    onInternalSearchChanged: function onInternalSearchChanged() {\n      this.updateMenuDimensions();\n    },\n    updateMenuDimensions: function updateMenuDimensions() {\n      // Type from menuable is not making it through\n      this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions();\n    },\n    changeSelectedIndex: function changeSelectedIndex(keyCode) {\n      // Do not allow changing of selectedIndex\n      // when search is dirty\n      if (this.searchIsDirty) return;\n\n      if (this.multiple && keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].left) {\n        if (this.selectedIndex === -1) {\n          this.selectedIndex = this.selectedItems.length - 1;\n        } else {\n          this.selectedIndex--;\n        }\n      } else if (this.multiple && keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].right) {\n        if (this.selectedIndex >= this.selectedItems.length - 1) {\n          this.selectedIndex = -1;\n        } else {\n          this.selectedIndex++;\n        }\n      } else if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].backspace || keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].delete) {\n        this.deleteCurrentItem();\n      }\n    },\n    deleteCurrentItem: function deleteCurrentItem() {\n      var curIndex = this.selectedIndex;\n      var curItem = this.selectedItems[curIndex]; // Do nothing if input or item is disabled\n\n      if (!this.isInteractive || this.getDisabled(curItem)) return;\n      var lastIndex = this.selectedItems.length - 1; // Select the last item if\n      // there is no selection\n\n      if (this.selectedIndex === -1 && lastIndex !== 0) {\n        this.selectedIndex = lastIndex;\n        return;\n      }\n\n      var length = this.selectedItems.length;\n      var nextIndex = curIndex !== length - 1 ? curIndex : curIndex - 1;\n      var nextItem = this.selectedItems[nextIndex];\n\n      if (!nextItem) {\n        this.setValue(this.multiple ? [] : null);\n      } else {\n        this.selectItem(curItem);\n      }\n\n      this.selectedIndex = nextIndex;\n    },\n    clearableCallback: function clearableCallback() {\n      this.internalSearch = null;\n      _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.clearableCallback.call(this);\n    },\n    genInput: function genInput() {\n      var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genInput.call(this);\n      input.data = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(input.data, {\n        attrs: {\n          'aria-activedescendant': Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(this.$refs.menu, 'activeTile.id'),\n          autocomplete: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(input.data, 'attrs.autocomplete', 'off')\n        },\n        domProps: {\n          value: this.internalSearch\n        }\n      });\n      return input;\n    },\n    genInputSlot: function genInputSlot() {\n      var slot = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInputSlot.call(this);\n      slot.data.attrs.role = 'combobox';\n      return slot;\n    },\n    genSelections: function genSelections() {\n      return this.hasSlot || this.multiple ? _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genSelections.call(this) : [];\n    },\n    onClick: function onClick(e) {\n      if (!this.isInteractive) return;\n      this.selectedIndex > -1 ? this.selectedIndex = -1 : this.onFocus();\n      if (!this.isAppendInner(e.target)) this.activateMenu();\n    },\n    onInput: function onInput(e) {\n      if (this.selectedIndex > -1 || !e.target) return;\n      var target = e.target;\n      var value = target.value; // If typing and menu is not currently active\n\n      if (target.value) this.activateMenu();\n      if (!this.multiple && value === '') this.deleteCurrentItem();\n      this.internalSearch = value;\n      this.badInput = target.validity && target.validity.badInput;\n    },\n    onKeyDown: function onKeyDown(e) {\n      var keyCode = e.keyCode;\n\n      if (e.ctrlKey || ![_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].home, _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].end].includes(keyCode)) {\n        _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onKeyDown.call(this, e);\n      } // The ordering is important here\n      // allows new value to be updated\n      // and then moves the index to the\n      // proper location\n\n\n      this.changeSelectedIndex(keyCode);\n    },\n    onSpaceDown: function onSpaceDown(e) {},\n    onTabDown: function onTabDown(e) {\n      _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onTabDown.call(this, e);\n      this.updateSelf();\n    },\n    onUpDown: function onUpDown(e) {\n      // Prevent screen from scrolling\n      e.preventDefault(); // For autocomplete / combobox, cycling\n      // interfers with native up/down behavior\n      // instead activate the menu\n\n      this.activateMenu();\n    },\n    selectItem: function selectItem(item) {\n      _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.selectItem.call(this, item);\n      this.setSearch();\n    },\n    setSelectedItems: function setSelectedItems() {\n      _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setSelectedItems.call(this); // #4273 Don't replace if searching\n      // #4403 Don't replace if focused\n\n      if (!this.isFocused) this.setSearch();\n    },\n    setSearch: function setSearch() {\n      var _this = this; // Wait for nextTick so selectedItem\n      // has had time to update\n\n\n      this.$nextTick(function () {\n        if (!_this.multiple || !_this.internalSearch || !_this.isMenuActive) {\n          _this.internalSearch = !_this.selectedItems.length || _this.multiple || _this.hasSlot ? null : _this.getText(_this.selectedItem);\n        }\n      });\n    },\n    updateSelf: function updateSelf() {\n      if (!this.searchIsDirty && !this.internalValue) return;\n\n      if (!this.multiple && !this.valueComparator(this.internalSearch, this.getValue(this.internalValue))) {\n        this.setSearch();\n      }\n    },\n    hasItem: function hasItem(item) {\n      return this.selectedValues.indexOf(this.getValue(item)) > -1;\n    },\n    onCopy: function onCopy(event) {\n      var _a, _b;\n\n      if (this.selectedIndex === -1) return;\n      var currentItem = this.selectedItems[this.selectedIndex];\n      var currentItemText = this.getText(currentItem);\n      (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/plain', currentItemText);\n      (_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText);\n      event.preventDefault();\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAutocomplete/index.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VAutocomplete/index.ts ***!\n  \\***********************************************/\n/*! exports provided: VAutocomplete, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAutocomplete */ \"./src/components/VAutocomplete/VAutocomplete.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAutocomplete\", function() { return _VAutocomplete__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAutocomplete__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VAvatar/VAvatar.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VAvatar/VAvatar.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VAvatar/VAvatar.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VAvatar/VAvatar.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAvatar_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAvatar.sass */ \"./src/components/VAvatar/VAvatar.sass\");\n/* harmony import */ var _VAvatar_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VAvatar_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _mixins_roundable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/roundable */ \"./src/mixins/roundable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Mixins\n\n\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_measurable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_roundable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-avatar',\n  props: {\n    left: Boolean,\n    right: Boolean,\n    size: {\n      type: [Number, String],\n      default: 48\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-avatar--left': this.left,\n        'v-avatar--right': this.right\n      }, this.roundedClasses);\n    },\n    styles: function styles() {\n      return __assign({\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.size),\n        minWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.size),\n        width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.size)\n      }, this.measurableStyles);\n    }\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-avatar',\n      class: this.classes,\n      style: this.styles,\n      on: this.$listeners\n    };\n    return h('div', this.setBackgroundColor(this.color, data), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAvatar/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VAvatar/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VAvatar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAvatar */ \"./src/components/VAvatar/VAvatar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAvatar\", function() { return _VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBadge/VBadge.sass\":\n/*!*******************************************!*\\\n  !*** ./src/components/VBadge/VBadge.sass ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBadge/VBadge.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VBadge/VBadge.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBadge_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBadge.sass */ \"./src/components/VBadge/VBadge.sass\");\n/* harmony import */ var _VBadge_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBadge_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon_VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon/VIcon */ \"./src/components/VIcon/VIcon.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_transitionable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/transitionable */ \"./src/mixins/transitionable/index.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n\n\n\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object(_mixins_positionable__WEBPACK_IMPORTED_MODULE_6__[\"factory\"])(['left', 'bottom']), _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_transitionable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).extend({\n  name: 'v-badge',\n  props: {\n    avatar: Boolean,\n    bordered: Boolean,\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    content: {\n      required: false\n    },\n    dot: Boolean,\n    label: {\n      type: String,\n      default: '$vuetify.badge'\n    },\n    icon: String,\n    inline: Boolean,\n    offsetX: [Number, String],\n    offsetY: [Number, String],\n    overlap: Boolean,\n    tile: Boolean,\n    transition: {\n      type: String,\n      default: 'scale-rotate-transition'\n    },\n    value: {\n      default: true\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-badge--avatar': this.avatar,\n        'v-badge--bordered': this.bordered,\n        'v-badge--bottom': this.bottom,\n        'v-badge--dot': this.dot,\n        'v-badge--icon': this.icon != null,\n        'v-badge--inline': this.inline,\n        'v-badge--left': this.left,\n        'v-badge--overlap': this.overlap,\n        'v-badge--tile': this.tile\n      }, this.themeClasses);\n    },\n    computedBottom: function computedBottom() {\n      return this.bottom ? 'auto' : this.computedYOffset;\n    },\n    computedLeft: function computedLeft() {\n      if (this.isRtl) {\n        return this.left ? this.computedXOffset : 'auto';\n      }\n\n      return this.left ? 'auto' : this.computedXOffset;\n    },\n    computedRight: function computedRight() {\n      if (this.isRtl) {\n        return this.left ? 'auto' : this.computedXOffset;\n      }\n\n      return !this.left ? 'auto' : this.computedXOffset;\n    },\n    computedTop: function computedTop() {\n      return this.bottom ? this.computedYOffset : 'auto';\n    },\n    computedXOffset: function computedXOffset() {\n      return this.calcPosition(this.offsetX);\n    },\n    computedYOffset: function computedYOffset() {\n      return this.calcPosition(this.offsetY);\n    },\n    isRtl: function isRtl() {\n      return this.$vuetify.rtl;\n    },\n    // Default fallback if offsetX\n    // or offsetY are undefined.\n    offset: function offset() {\n      if (this.overlap) return this.dot ? 8 : 12;\n      return this.dot ? 2 : 4;\n    },\n    styles: function styles() {\n      if (this.inline) return {};\n      return {\n        bottom: this.computedBottom,\n        left: this.computedLeft,\n        right: this.computedRight,\n        top: this.computedTop\n      };\n    }\n  },\n  methods: {\n    calcPosition: function calcPosition(offset) {\n      return \"calc(100% - \" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(offset || this.offset) + \")\";\n    },\n    genBadge: function genBadge() {\n      var lang = this.$vuetify.lang;\n      var label = this.$attrs['aria-label'] || lang.t(this.label);\n      var data = this.setBackgroundColor(this.color, {\n        staticClass: 'v-badge__badge',\n        style: this.styles,\n        attrs: {\n          'aria-atomic': this.$attrs['aria-atomic'] || 'true',\n          'aria-label': label,\n          'aria-live': this.$attrs['aria-live'] || 'polite',\n          title: this.$attrs.title,\n          role: this.$attrs.role || 'status'\n        },\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }]\n      });\n      var badge = this.$createElement('span', data, [this.genBadgeContent()]);\n      if (!this.transition) return badge;\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition,\n          origin: this.origin,\n          mode: this.mode\n        }\n      }, [badge]);\n    },\n    genBadgeContent: function genBadgeContent() {\n      // Dot prop shows no content\n      if (this.dot) return undefined;\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this, 'badge');\n      if (slot) return slot;\n      if (this.content) return String(this.content);\n      if (this.icon) return this.$createElement(_VIcon_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.icon);\n      return undefined;\n    },\n    genBadgeWrapper: function genBadgeWrapper() {\n      return this.$createElement('span', {\n        staticClass: 'v-badge__wrapper'\n      }, [this.genBadge()]);\n    }\n  },\n  render: function render(h) {\n    var badge = [this.genBadgeWrapper()];\n    var children = [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this)];\n\n    var _a = this.$attrs,\n        _x = _a[\"aria-atomic\"],\n        _y = _a[\"aria-label\"],\n        _z = _a[\"aria-live\"],\n        role = _a.role,\n        title = _a.title,\n        attrs = __rest(_a, ['aria-atomic', 'aria-label', 'aria-live', \"role\", \"title\"]);\n\n    if (this.inline && this.left) children.unshift(badge);else children.push(badge);\n    return h('span', {\n      staticClass: 'v-badge',\n      attrs: attrs,\n      class: this.classes\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBadge/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/components/VBadge/index.ts ***!\n  \\****************************************/\n/*! exports provided: VBadge, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBadge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBadge */ \"./src/components/VBadge/VBadge.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBadge\", function() { return _VBadge__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBadge__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBanner/VBanner.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VBanner/VBanner.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBanner/VBanner.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VBanner/VBanner.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBanner_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBanner.sass */ \"./src/components/VBanner/VBanner.sass\");\n/* harmony import */ var _VBanner_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBanner_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VAvatar */ \"./src/components/VAvatar/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _mixins_mobile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/mobile */ \"./src/mixins/mobile/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n\n\n // Mixins\n\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_mobile__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-banner',\n  inheritAttrs: false,\n  props: {\n    app: Boolean,\n    icon: String,\n    iconColor: String,\n    singleLine: Boolean,\n    sticky: Boolean,\n    value: {\n      type: Boolean,\n      default: true\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-banner--has-icon': this.hasIcon,\n        'v-banner--is-mobile': this.isMobile,\n        'v-banner--single-line': this.singleLine,\n        'v-banner--sticky': this.isSticky\n      });\n    },\n    hasIcon: function hasIcon() {\n      return Boolean(this.icon || this.$slots.icon || this.$scopedSlots.icon);\n    },\n    isSticky: function isSticky() {\n      return this.sticky || this.app;\n    },\n    styles: function styles() {\n      var styles = __assign({}, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this));\n\n      if (this.isSticky) {\n        var top = !this.app ? 0 : this.$vuetify.application.bar + this.$vuetify.application.top;\n        styles.top = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(top);\n        styles.position = 'sticky';\n        styles.zIndex = 1;\n      }\n\n      return styles;\n    }\n  },\n  methods: {\n    /** @public */\n    toggle: function toggle() {\n      this.isActive = !this.isActive;\n    },\n    iconClick: function iconClick(e) {\n      this.$emit('click:icon', e);\n    },\n    genIcon: function genIcon() {\n      if (!this.hasIcon) return undefined;\n      var content;\n\n      if (this.icon) {\n        content = this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          props: {\n            color: this.iconColor,\n            size: 28\n          }\n        }, [this.icon]);\n      } else {\n        content = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this, 'icon');\n      }\n\n      return this.$createElement(_VAvatar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        staticClass: 'v-banner__icon',\n        props: {\n          color: this.color,\n          size: 40\n        },\n        on: {\n          click: this.iconClick\n        }\n      }, [content]);\n    },\n    genText: function genText() {\n      return this.$createElement('div', {\n        staticClass: 'v-banner__text'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this));\n    },\n    genActions: function genActions() {\n      var _this = this;\n\n      var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this, 'actions', {\n        dismiss: function dismiss() {\n          return _this.isActive = false;\n        }\n      });\n      if (!children) return undefined;\n      return this.$createElement('div', {\n        staticClass: 'v-banner__actions'\n      }, children);\n    },\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-banner__content'\n      }, [this.genIcon(), this.genText()]);\n    },\n    genWrapper: function genWrapper() {\n      return this.$createElement('div', {\n        staticClass: 'v-banner__wrapper'\n      }, [this.genContent(), this.genActions()]);\n    }\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-banner',\n      attrs: this.attrs$,\n      class: this.classes,\n      style: this.styles,\n      directives: [{\n        name: 'show',\n        value: this.isActive\n      }]\n    };\n    return h(_transitions__WEBPACK_IMPORTED_MODULE_4__[\"VExpandTransition\"], [h('div', this.outlined ? data : this.setBackgroundColor(this.color, data), [this.genWrapper()])]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBanner/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VBanner/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VBanner, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBanner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBanner */ \"./src/components/VBanner/VBanner.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBanner\", function() { return _VBanner__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBanner__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBottomNavigation/VBottomNavigation.sass\":\n/*!*****************************************************************!*\\\n  !*** ./src/components/VBottomNavigation/VBottomNavigation.sass ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBottomNavigation/VBottomNavigation.ts\":\n/*!***************************************************************!*\\\n  !*** ./src/components/VBottomNavigation/VBottomNavigation.ts ***!\n  \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBottomNavigation_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBottomNavigation.sass */ \"./src/components/VBottomNavigation/VBottomNavigation.sass\");\n/* harmony import */ var _VBottomNavigation_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBottomNavigation_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable/index.ts\");\n/* harmony import */ var _mixins_button_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/button-group */ \"./src/mixins/button-group/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/proxyable */ \"./src/mixins/proxyable/index.ts\");\n/* harmony import */ var _mixins_scrollable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/scrollable */ \"./src/mixins/scrollable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n\n\n\n\n\n // Utilities\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('bottom', ['height', 'inputValue']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_measurable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__[\"factory\"])('inputValue'), _mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_scrollable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-bottom-navigation',\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-btn--active'\n    },\n    backgroundColor: String,\n    grow: Boolean,\n    height: {\n      type: [Number, String],\n      default: 56\n    },\n    hideOnScroll: Boolean,\n    horizontal: Boolean,\n    inputValue: {\n      type: Boolean,\n      default: true\n    },\n    mandatory: Boolean,\n    shift: Boolean,\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n  data: function data() {\n    return {\n      isActive: this.inputValue\n    };\n  },\n  computed: {\n    canScroll: function canScroll() {\n      return _mixins_scrollable__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.computed.canScroll.call(this) && (this.hideOnScroll || !this.inputValue);\n    },\n    classes: function classes() {\n      return {\n        'v-bottom-navigation--absolute': this.absolute,\n        'v-bottom-navigation--grow': this.grow,\n        'v-bottom-navigation--fixed': !this.absolute && (this.app || this.fixed),\n        'v-bottom-navigation--horizontal': this.horizontal,\n        'v-bottom-navigation--shift': this.shift\n      };\n    },\n    styles: function styles() {\n      return __assign(__assign({}, this.measurableStyles), {\n        transform: this.isActive ? 'none' : 'translateY(100%)'\n      });\n    }\n  },\n  watch: {\n    canScroll: 'onScroll'\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('active')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"breaking\"])('active.sync', 'value or v-model', this);\n    }\n  },\n  methods: {\n    thresholdMet: function thresholdMet() {\n      if (this.hideOnScroll) {\n        this.isActive = !this.isScrollingUp || this.currentScroll > this.computedScrollThreshold;\n        this.$emit('update:input-value', this.isActive);\n      }\n\n      if (this.currentThreshold < this.computedScrollThreshold) return;\n      this.savedScroll = this.currentScroll;\n    },\n    updateApplication: function updateApplication() {\n      return this.$el ? this.$el.clientHeight : 0;\n    },\n    updateValue: function updateValue(val) {\n      this.$emit('change', val);\n    }\n  },\n  render: function render(h) {\n    var data = this.setBackgroundColor(this.backgroundColor, {\n      staticClass: 'v-bottom-navigation',\n      class: this.classes,\n      style: this.styles,\n      props: {\n        activeClass: this.activeClass,\n        mandatory: Boolean(this.mandatory || this.value !== undefined),\n        tag: this.tag,\n        value: this.internalValue\n      },\n      on: {\n        change: this.updateValue\n      }\n    });\n\n    if (this.canScroll) {\n      data.directives = data.directives || [];\n      data.directives.push({\n        arg: this.scrollTarget,\n        name: 'scroll',\n        value: this.onScroll\n      });\n    }\n\n    return h(_mixins_button_group__WEBPACK_IMPORTED_MODULE_2__[\"default\"], this.setTextColor(this.color, data), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBottomNavigation/index.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VBottomNavigation/index.ts ***!\n  \\***************************************************/\n/*! exports provided: VBottomNavigation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBottomNavigation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBottomNavigation */ \"./src/components/VBottomNavigation/VBottomNavigation.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomNavigation\", function() { return _VBottomNavigation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBottomNavigation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBottomSheet/VBottomSheet.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VBottomSheet/VBottomSheet.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBottomSheet/VBottomSheet.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VBottomSheet/VBottomSheet.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBottomSheet_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBottomSheet.sass */ \"./src/components/VBottomSheet/VBottomSheet.sass\");\n/* harmony import */ var _VBottomSheet_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBottomSheet_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VDialog/VDialog */ \"./src/components/VDialog/VDialog.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Extensions\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-bottom-sheet',\n  props: {\n    inset: Boolean,\n    maxWidth: [String, Number],\n    transition: {\n      type: String,\n      default: 'bottom-sheet-transition'\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-bottom-sheet': true,\n        'v-bottom-sheet--inset': this.inset\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBottomSheet/index.ts\":\n/*!**********************************************!*\\\n  !*** ./src/components/VBottomSheet/index.ts ***!\n  \\**********************************************/\n/*! exports provided: VBottomSheet, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBottomSheet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBottomSheet */ \"./src/components/VBottomSheet/VBottomSheet.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomSheet\", function() { return _VBottomSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBottomSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/VBreadcrumbs.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VBreadcrumbs/VBreadcrumbs.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/VBreadcrumbs.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VBreadcrumbs/VBreadcrumbs.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBreadcrumbs_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBreadcrumbs.sass */ \"./src/components/VBreadcrumbs/VBreadcrumbs.sass\");\n/* harmony import */ var _VBreadcrumbs_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBreadcrumbs_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VBreadcrumbsItem */ \"./src/components/VBreadcrumbs/VBreadcrumbsItem.ts\");\n/* harmony import */ var _VBreadcrumbsDivider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VBreadcrumbsDivider */ \"./src/components/VBreadcrumbs/VBreadcrumbsDivider.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n\n // Mixins\n\n // Utils\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-breadcrumbs',\n  props: {\n    divider: {\n      type: String,\n      default: '/'\n    },\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    large: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-breadcrumbs--large': this.large\n      }, this.themeClasses);\n    }\n  },\n  methods: {\n    genDivider: function genDivider() {\n      return this.$createElement(_VBreadcrumbsDivider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], this.$slots.divider ? this.$slots.divider : this.divider);\n    },\n    genItems: function genItems() {\n      var items = [];\n      var hasSlot = !!this.$scopedSlots.item;\n      var keys = [];\n\n      for (var i = 0; i < this.items.length; i++) {\n        var item = this.items[i];\n        keys.push(item.text);\n        if (hasSlot) items.push(this.$scopedSlots.item({\n          item: item\n        }));else items.push(this.$createElement(_VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n          key: keys.join('.'),\n          props: item\n        }, [item.text]));\n        if (i < this.items.length - 1) items.push(this.genDivider());\n      }\n\n      return items;\n    }\n  },\n  render: function render(h) {\n    var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this) || this.genItems();\n    return h('ul', {\n      staticClass: 'v-breadcrumbs',\n      class: this.classes\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/VBreadcrumbsDivider.ts\":\n/*!************************************************************!*\\\n  !*** ./src/components/VBreadcrumbs/VBreadcrumbsDivider.ts ***!\n  \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-breadcrumbs__divider', 'li'));\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/VBreadcrumbsItem.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VBreadcrumbs/VBreadcrumbsItem.ts ***!\n  \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_routable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n  name: 'v-breadcrumbs-item',\n  props: {\n    // In a breadcrumb, the currently\n    // active item should be dimmed\n    activeClass: {\n      type: String,\n      default: 'v-breadcrumbs__item--disabled'\n    },\n    ripple: {\n      type: [Boolean, Object],\n      default: false\n    }\n  },\n  computed: {\n    classes: function classes() {\n      var _a;\n\n      return _a = {\n        'v-breadcrumbs__item': true\n      }, _a[this.activeClass] = this.disabled, _a;\n    }\n  },\n  render: function render(h) {\n    var _a = this.generateRouteLink(),\n        tag = _a.tag,\n        data = _a.data;\n\n    return h('li', [h(tag, __assign(__assign({}, data), {\n      attrs: __assign(__assign({}, data.attrs), {\n        'aria-current': this.isActive && this.isLink ? 'page' : undefined\n      })\n    }), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this))]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/index.ts\":\n/*!**********************************************!*\\\n  !*** ./src/components/VBreadcrumbs/index.ts ***!\n  \\**********************************************/\n/*! exports provided: VBreadcrumbs, VBreadcrumbsItem, VBreadcrumbsDivider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBreadcrumbs */ \"./src/components/VBreadcrumbs/VBreadcrumbs.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbs\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VBreadcrumbsItem */ \"./src/components/VBreadcrumbs/VBreadcrumbsItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsItem\", function() { return _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VBreadcrumbsDivider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VBreadcrumbsDivider */ \"./src/components/VBreadcrumbs/VBreadcrumbsDivider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsDivider\", function() { return _VBreadcrumbsDivider__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VBreadcrumbs: _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VBreadcrumbsItem: _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VBreadcrumbsDivider: _VBreadcrumbsDivider__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VBtn/VBtn.sass\":\n/*!***************************************!*\\\n  !*** ./src/components/VBtn/VBtn.sass ***!\n  \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBtn/VBtn.ts\":\n/*!*************************************!*\\\n  !*** ./src/components/VBtn/VBtn.ts ***!\n  \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtn_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBtn.sass */ \"./src/components/VBtn/VBtn.sass\");\n/* harmony import */ var _VBtn_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBtn_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony import */ var _VProgressCircular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VProgressCircular */ \"./src/components/VProgressCircular/index.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable/index.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\n/* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/sizeable */ \"./src/mixins/sizeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n // Mixins\n\n\n\n\n\n\n // Utilities\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_positionable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_8__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_3__[\"factory\"])('btnToggle'), Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__[\"factory\"])('inputValue')\n/* @vue/component */\n);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-btn',\n  props: {\n    activeClass: {\n      type: String,\n      default: function _default() {\n        if (!this.btnToggle) return '';\n        return this.btnToggle.activeClass;\n      }\n    },\n    block: Boolean,\n    depressed: Boolean,\n    fab: Boolean,\n    icon: Boolean,\n    loading: Boolean,\n    outlined: Boolean,\n    plain: Boolean,\n    retainFocusOnClick: Boolean,\n    rounded: Boolean,\n    tag: {\n      type: String,\n      default: 'button'\n    },\n    text: Boolean,\n    tile: Boolean,\n    type: {\n      type: String,\n      default: 'button'\n    },\n    value: null\n  },\n  data: function data() {\n    return {\n      proxyClass: 'v-btn--active'\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign(__assign(__assign(__assign({\n        'v-btn': true\n      }, _mixins_routable__WEBPACK_IMPORTED_MODULE_7__[\"default\"].options.computed.classes.call(this)), {\n        'v-btn--absolute': this.absolute,\n        'v-btn--block': this.block,\n        'v-btn--bottom': this.bottom,\n        'v-btn--disabled': this.disabled,\n        'v-btn--is-elevated': this.isElevated,\n        'v-btn--fab': this.fab,\n        'v-btn--fixed': this.fixed,\n        'v-btn--has-bg': this.hasBg,\n        'v-btn--icon': this.icon,\n        'v-btn--left': this.left,\n        'v-btn--loading': this.loading,\n        'v-btn--outlined': this.outlined,\n        'v-btn--plain': this.plain,\n        'v-btn--right': this.right,\n        'v-btn--round': this.isRound,\n        'v-btn--rounded': this.rounded,\n        'v-btn--router': this.to,\n        'v-btn--text': this.text,\n        'v-btn--tile': this.tile,\n        'v-btn--top': this.top\n      }), this.themeClasses), this.groupClasses), this.elevationClasses), this.sizeableClasses);\n    },\n    computedElevation: function computedElevation() {\n      if (this.disabled) return undefined;\n      return _mixins_elevatable__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.computed.computedElevation.call(this);\n    },\n    computedRipple: function computedRipple() {\n      var _a;\n\n      var defaultRipple = this.icon || this.fab ? {\n        circle: true\n      } : true;\n      if (this.disabled) return false;else return (_a = this.ripple) !== null && _a !== void 0 ? _a : defaultRipple;\n    },\n    hasBg: function hasBg() {\n      return !this.text && !this.plain && !this.outlined && !this.icon;\n    },\n    isElevated: function isElevated() {\n      return Boolean(!this.icon && !this.text && !this.outlined && !this.depressed && !this.disabled && !this.plain && (this.elevation == null || Number(this.elevation) > 0));\n    },\n    isRound: function isRound() {\n      return Boolean(this.icon || this.fab);\n    },\n    styles: function styles() {\n      return __assign({}, this.measurableStyles);\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    var breakingProps = [['flat', 'text'], ['outline', 'outlined'], ['round', 'rounded']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(function (_a) {\n      var _b = __read(_a, 2),\n          original = _b[0],\n          replacement = _b[1];\n\n      if (_this.$attrs.hasOwnProperty(original)) Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"breaking\"])(original, replacement, _this);\n    });\n  },\n  methods: {\n    click: function click(e) {\n      // TODO: Remove this in v3\n      !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur();\n      this.$emit('click', e);\n      this.btnToggle && this.toggle();\n    },\n    genContent: function genContent() {\n      return this.$createElement('span', {\n        staticClass: 'v-btn__content'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"getSlot\"])(this));\n    },\n    genLoader: function genLoader() {\n      return this.$createElement('span', {\n        class: 'v-btn__loader'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"getSlot\"])(this, 'loader') || [this.$createElement(_VProgressCircular__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          indeterminate: true,\n          size: 23,\n          width: 2\n        }\n      })]);\n    }\n  },\n  render: function render(h) {\n    var children = [this.genContent(), this.loading && this.genLoader()];\n\n    var _a = this.generateRouteLink(),\n        tag = _a.tag,\n        data = _a.data;\n\n    var setColor = this.hasBg ? this.setBackgroundColor : this.setTextColor;\n\n    if (tag === 'button') {\n      data.attrs.type = this.type;\n      data.attrs.disabled = this.disabled;\n    }\n\n    data.attrs.value = ['string', 'number'].includes(_typeof(this.value)) ? this.value : JSON.stringify(this.value);\n    return h(tag, this.disabled ? data : setColor(this.color, data), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBtn/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VBtn/index.ts ***!\n  \\**************************************/\n/*! exports provided: VBtn, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBtn */ \"./src/components/VBtn/VBtn.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtn\", function() { return _VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBtnToggle/VBtnToggle.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VBtnToggle/VBtnToggle.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VBtnToggle/VBtnToggle.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VBtnToggle/VBtnToggle.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtnToggle_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBtnToggle.sass */ \"./src/components/VBtnToggle/VBtnToggle.sass\");\n/* harmony import */ var _VBtnToggle_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VBtnToggle_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_button_group__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/button-group */ \"./src/mixins/button-group/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_button_group__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-btn-toggle',\n  props: {\n    backgroundColor: String,\n    borderless: Boolean,\n    dense: Boolean,\n    group: Boolean,\n    rounded: Boolean,\n    shaped: Boolean,\n    tile: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign({}, _mixins_button_group__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-btn-toggle': true,\n        'v-btn-toggle--borderless': this.borderless,\n        'v-btn-toggle--dense': this.dense,\n        'v-btn-toggle--group': this.group,\n        'v-btn-toggle--rounded': this.rounded,\n        'v-btn-toggle--shaped': this.shaped,\n        'v-btn-toggle--tile': this.tile\n      }), this.themeClasses);\n    }\n  },\n  methods: {\n    genData: function genData() {\n      var data = this.setTextColor(this.color, __assign({}, _mixins_button_group__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genData.call(this)));\n      if (this.group) return data;\n      return this.setBackgroundColor(this.backgroundColor, data);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBtnToggle/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VBtnToggle/index.ts ***!\n  \\********************************************/\n/*! exports provided: VBtnToggle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtnToggle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBtnToggle */ \"./src/components/VBtnToggle/VBtnToggle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtnToggle\", function() { return _VBtnToggle__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBtnToggle__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendar.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VCalendar/VCalendar.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_calendar_with_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins/calendar-with-events */ \"./src/components/VCalendar/mixins/calendar-with-events.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n/* harmony import */ var _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VCalendarMonthly */ \"./src/components/VCalendar/VCalendarMonthly.ts\");\n/* harmony import */ var _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VCalendarDaily */ \"./src/components/VCalendar/VCalendarDaily.ts\");\n/* harmony import */ var _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VCalendarWeekly */ \"./src/components/VCalendar/VCalendarWeekly.ts\");\n/* harmony import */ var _VCalendarCategory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VCalendarCategory */ \"./src/components/VCalendar/VCalendarCategory.ts\");\n/* harmony import */ var _util_parser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/parser */ \"./src/components/VCalendar/util/parser.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Styles\n// import '../../stylus/components/_calendar-daily.styl'\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n // Util\n\n\n // Calendars\n\n\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_calendar_with_events__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'v-calendar',\n  props: __assign(__assign(__assign(__assign({}, _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].calendar), _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].weeks), _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].intervals), _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].category),\n  data: function data() {\n    return {\n      lastStart: null,\n      lastEnd: null\n    };\n  },\n  computed: {\n    parsedValue: function parsedValue() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"validateTimestamp\"])(this.value) ? Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(this.value, true) : this.parsedStart || this.times.today;\n    },\n    parsedCategoryDays: function parsedCategoryDays() {\n      return parseInt(this.categoryDays) || 1;\n    },\n    renderProps: function renderProps() {\n      var around = this.parsedValue;\n      var component = null;\n      var maxDays = this.maxDays;\n      var weekdays = this.parsedWeekdays;\n      var categories = this.parsedCategories;\n      var start = around;\n      var end = around;\n\n      switch (this.type) {\n        case 'month':\n          component = _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n          start = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getStartOfMonth\"])(around);\n          end = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getEndOfMonth\"])(around);\n          break;\n\n        case 'week':\n          component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n          start = this.getStartOfWeek(around);\n          end = this.getEndOfWeek(around);\n          maxDays = 7;\n          break;\n\n        case 'day':\n          component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n          maxDays = 1;\n          weekdays = [start.weekday];\n          break;\n\n        case '4day':\n          component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n          end = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(end), _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"nextDay\"], 3);\n          Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateFormatted\"])(end);\n          maxDays = 4;\n          weekdays = [start.weekday, (start.weekday + 1) % 7, (start.weekday + 2) % 7, (start.weekday + 3) % 7];\n          break;\n\n        case 'custom-weekly':\n          component = _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n          start = this.parsedStart || around;\n          end = this.parsedEnd;\n          break;\n\n        case 'custom-daily':\n          component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n          start = this.parsedStart || around;\n          end = this.parsedEnd;\n          break;\n\n        case 'category':\n          var days = this.parsedCategoryDays;\n          component = _VCalendarCategory__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n          end = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(end), _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"nextDay\"], days);\n          Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateFormatted\"])(end);\n          maxDays = days;\n          weekdays = [];\n\n          for (var i = 0; i < days; i++) {\n            weekdays.push((start.weekday + i) % 7);\n          }\n\n          categories = this.getCategoryList(categories);\n          break;\n\n        default:\n          throw new Error(this.type + ' is not a valid Calendar type');\n      }\n\n      return {\n        component: component,\n        start: start,\n        end: end,\n        maxDays: maxDays,\n        weekdays: weekdays,\n        categories: categories\n      };\n    },\n    eventWeekdays: function eventWeekdays() {\n      return this.renderProps.weekdays;\n    },\n    categoryMode: function categoryMode() {\n      return this.type === 'category';\n    },\n    title: function title() {\n      var _a = this.renderProps,\n          start = _a.start,\n          end = _a.end;\n      var spanYears = start.year !== end.year;\n      var spanMonths = spanYears || start.month !== end.month;\n\n      if (spanYears) {\n        return this.monthShortFormatter(start, true) + ' ' + start.year + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year;\n      }\n\n      if (spanMonths) {\n        return this.monthShortFormatter(start, true) + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year;\n      } else {\n        return this.monthLongFormatter(start, false) + ' ' + start.year;\n      }\n    },\n    monthLongFormatter: function monthLongFormatter() {\n      return this.getFormatter({\n        timeZone: 'UTC',\n        month: 'long'\n      });\n    },\n    monthShortFormatter: function monthShortFormatter() {\n      return this.getFormatter({\n        timeZone: 'UTC',\n        month: 'short'\n      });\n    },\n    parsedCategories: function parsedCategories() {\n      return Object(_util_parser__WEBPACK_IMPORTED_MODULE_7__[\"getParsedCategories\"])(this.categories, this.categoryText);\n    }\n  },\n  watch: {\n    renderProps: 'checkChange'\n  },\n  mounted: function mounted() {\n    this.updateEventVisibility();\n    this.checkChange();\n  },\n  updated: function updated() {\n    window.requestAnimationFrame(this.updateEventVisibility);\n  },\n  methods: {\n    checkChange: function checkChange() {\n      var _a = this,\n          lastStart = _a.lastStart,\n          lastEnd = _a.lastEnd;\n\n      var _b = this.renderProps,\n          start = _b.start,\n          end = _b.end;\n\n      if (!lastStart || !lastEnd || start.date !== lastStart.date || end.date !== lastEnd.date) {\n        this.lastStart = start;\n        this.lastEnd = end;\n        this.$emit('change', {\n          start: start,\n          end: end\n        });\n      }\n    },\n    move: function move(amount) {\n      if (amount === void 0) {\n        amount = 1;\n      }\n\n      var moved = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(this.parsedValue);\n      var forward = amount > 0;\n      var mover = forward ? _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"nextDay\"] : _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"prevDay\"];\n      var limit = forward ? _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"DAYS_IN_MONTH_MAX\"] : _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"DAY_MIN\"];\n      var times = forward ? amount : -amount;\n\n      while (--times >= 0) {\n        switch (this.type) {\n          case 'month':\n            moved.day = limit;\n            mover(moved);\n            break;\n\n          case 'week':\n            Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(moved, mover, _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"DAYS_IN_WEEK\"]);\n            break;\n\n          case 'day':\n            Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(moved, mover, 1);\n            break;\n\n          case '4day':\n            Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(moved, mover, 4);\n            break;\n\n          case 'category':\n            Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(moved, mover, this.parsedCategoryDays);\n            break;\n        }\n      }\n\n      Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateWeekday\"])(moved);\n      Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateFormatted\"])(moved);\n      Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateRelative\"])(moved, this.times.now);\n\n      if (this.value instanceof Date) {\n        this.$emit('input', Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"timestampToDate\"])(moved));\n      } else if (typeof this.value === 'number') {\n        this.$emit('input', Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"timestampToDate\"])(moved).getTime());\n      } else {\n        this.$emit('input', moved.date);\n      }\n\n      this.$emit('moved', moved);\n    },\n    next: function next(amount) {\n      if (amount === void 0) {\n        amount = 1;\n      }\n\n      this.move(amount);\n    },\n    prev: function prev(amount) {\n      if (amount === void 0) {\n        amount = 1;\n      }\n\n      this.move(-amount);\n    },\n    timeToY: function timeToY(time, clamp) {\n      if (clamp === void 0) {\n        clamp = true;\n      }\n\n      var c = this.$children[0];\n\n      if (c && c.timeToY) {\n        return c.timeToY(time, clamp);\n      } else {\n        return false;\n      }\n    },\n    timeDelta: function timeDelta(time) {\n      var c = this.$children[0];\n\n      if (c && c.timeDelta) {\n        return c.timeDelta(time);\n      } else {\n        return false;\n      }\n    },\n    minutesToPixels: function minutesToPixels(minutes) {\n      var c = this.$children[0];\n\n      if (c && c.minutesToPixels) {\n        return c.minutesToPixels(minutes);\n      } else {\n        return -1;\n      }\n    },\n    scrollToTime: function scrollToTime(time) {\n      var c = this.$children[0];\n\n      if (c && c.scrollToTime) {\n        return c.scrollToTime(time);\n      } else {\n        return false;\n      }\n    },\n    parseTimestamp: function parseTimestamp(input, required) {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(input, required, this.times.now);\n    },\n    timestampToDate: function timestampToDate(timestamp) {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"timestampToDate\"])(timestamp);\n    },\n    getCategoryList: function getCategoryList(categories) {\n      var _this = this;\n\n      if (!this.noEvents) {\n        var categoryMap_1 = categories.reduce(function (map, category, index) {\n          if (_typeof(category) === 'object' && category.categoryName) map[category.categoryName] = {\n            index: index,\n            count: 0\n          };else if (typeof category === 'string') map[category] = {\n            index: index,\n            count: 0\n          };\n          return map;\n        }, {});\n\n        if (!this.categoryHideDynamic || !this.categoryShowAll) {\n          var categoryLength_1 = categories.length;\n          this.parsedEvents.forEach(function (ev) {\n            var category = ev.category;\n\n            if (typeof category !== 'string') {\n              category = _this.categoryForInvalid;\n            }\n\n            if (!category) {\n              return;\n            }\n\n            if (category in categoryMap_1) {\n              categoryMap_1[category].count++;\n            } else if (!_this.categoryHideDynamic) {\n              categoryMap_1[category] = {\n                index: categoryLength_1++,\n                count: 1\n              };\n            }\n          });\n        }\n\n        if (!this.categoryShowAll) {\n          for (var category in categoryMap_1) {\n            if (categoryMap_1[category].count === 0) {\n              delete categoryMap_1[category];\n            }\n          }\n        }\n\n        categories = categories.filter(function (category) {\n          if (_typeof(category) === 'object' && category.categoryName) {\n            return categoryMap_1.hasOwnProperty(category.categoryName);\n          } else if (typeof category === 'string') {\n            return categoryMap_1.hasOwnProperty(category);\n          }\n\n          return false;\n        });\n      }\n\n      return categories;\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var _a = this.renderProps,\n        start = _a.start,\n        end = _a.end,\n        maxDays = _a.maxDays,\n        component = _a.component,\n        weekdays = _a.weekdays,\n        categories = _a.categories;\n    return h(component, {\n      staticClass: 'v-calendar',\n      class: {\n        'v-calendar-events': !this.noEvents\n      },\n      props: __assign(__assign({}, this.$props), {\n        start: start.date,\n        end: end.date,\n        maxDays: maxDays,\n        weekdays: weekdays,\n        categories: categories\n      }),\n      attrs: {\n        role: 'grid'\n      },\n      directives: [{\n        modifiers: {\n          quiet: true\n        },\n        name: 'resize',\n        value: this.updateEventVisibility\n      }],\n      on: __assign(__assign({}, this.$listeners), {\n        'click:date': function clickDate(day, e) {\n          if (_this.$listeners.input) {\n            _this.$emit('input', day.date);\n          }\n\n          if (_this.$listeners['click:date']) {\n            _this.$emit('click:date', day, e);\n          }\n        }\n      }),\n      scopedSlots: this.getScopedSlots()\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarCategory.sass\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarCategory.sass ***!\n  \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarCategory.ts\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarCategory.ts ***!\n  \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCalendarCategory_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCalendarCategory.sass */ \"./src/components/VCalendar/VCalendarCategory.sass\");\n/* harmony import */ var _VCalendarCategory_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCalendarCategory_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCalendarDaily */ \"./src/components/VCalendar/VCalendarDaily.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/parser */ \"./src/components/VCalendar/util/parser.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Mixins\n\n // Util\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-calendar-category',\n  props: _util_props__WEBPACK_IMPORTED_MODULE_3__[\"default\"].category,\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-calendar-daily': true,\n        'v-calendar-category': true\n      }, this.themeClasses);\n    },\n    parsedCategories: function parsedCategories() {\n      return Object(_util_parser__WEBPACK_IMPORTED_MODULE_4__[\"getParsedCategories\"])(this.categories, this.categoryText);\n    }\n  },\n  methods: {\n    genDayHeader: function genDayHeader(day, index) {\n      var _this = this;\n\n      var data = {\n        staticClass: 'v-calendar-category__columns'\n      };\n\n      var scope = __assign(__assign({\n        week: this.days\n      }, day), {\n        index: index\n      });\n\n      var children = this.parsedCategories.map(function (category) {\n        return _this.genDayHeaderCategory(day, _this.getCategoryScope(scope, category));\n      });\n      return [this.$createElement('div', data, children)];\n    },\n    getCategoryScope: function getCategoryScope(scope, category) {\n      var cat = _typeof(category) === 'object' && category && category.categoryName === this.categoryForInvalid ? null : category;\n      return __assign(__assign({}, scope), {\n        category: cat\n      });\n    },\n    genDayHeaderCategory: function genDayHeaderCategory(day, scope) {\n      var _this = this;\n\n      var headerTitle = _typeof(scope.category) === 'object' ? scope.category.categoryName : scope.category;\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-category__column-header',\n        on: this.getDefaultMouseEventHandlers(':day-category', function (e) {\n          return _this.getCategoryScope(_this.getSlotScope(day), scope.category);\n        })\n      }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this, 'category', scope) || this.genDayHeaderCategoryTitle(headerTitle), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this, 'day-header', scope)]);\n    },\n    genDayHeaderCategoryTitle: function genDayHeaderCategoryTitle(categoryName) {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-category__category'\n      }, categoryName === null ? this.categoryForInvalid : categoryName);\n    },\n    genDays: function genDays() {\n      var _this = this;\n\n      var days = [];\n      this.days.forEach(function (d, j) {\n        var day = new Array(_this.parsedCategories.length || 1);\n        day.fill(d);\n        days.push.apply(days, __spreadArray([], __read(day.map(function (v, i) {\n          return _this.genDay(v, j, i);\n        })), false));\n      });\n      return days;\n    },\n    genDay: function genDay(day, index, categoryIndex) {\n      var _this = this;\n\n      var category = this.parsedCategories[categoryIndex];\n      return this.$createElement('div', {\n        key: day.date + '-' + categoryIndex,\n        staticClass: 'v-calendar-daily__day',\n        class: this.getRelativeClasses(day),\n        on: this.getDefaultMouseEventHandlers(':time', function (e) {\n          return _this.getSlotScope(_this.getTimestampAtEvent(e, day));\n        })\n      }, __spreadArray(__spreadArray([], __read(this.genDayIntervals(index, category)), false), __read(this.genDayBody(day, category)), false));\n    },\n    genDayIntervals: function genDayIntervals(index, category) {\n      var _this = this;\n\n      return this.intervals[index].map(function (v) {\n        return _this.genDayInterval(v, category);\n      });\n    },\n    genDayInterval: function genDayInterval(interval, category) {\n      var _this = this;\n\n      var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(this.intervalHeight);\n      var styler = this.intervalStyle || this.intervalStyleDefault;\n      var data = {\n        key: interval.time,\n        staticClass: 'v-calendar-daily__day-interval',\n        style: __assign({\n          height: height\n        }, styler(__assign(__assign({}, interval), {\n          category: category\n        })))\n      };\n      var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this, 'interval', function () {\n        return _this.getCategoryScope(_this.getSlotScope(interval), category);\n      });\n      return this.$createElement('div', data, children);\n    },\n    genDayBody: function genDayBody(day, category) {\n      var data = {\n        staticClass: 'v-calendar-category__columns'\n      };\n      var children = [this.genDayBodyCategory(day, category)];\n      return [this.$createElement('div', data, children)];\n    },\n    genDayBodyCategory: function genDayBodyCategory(day, category) {\n      var _this = this;\n\n      var data = {\n        staticClass: 'v-calendar-category__column',\n        on: this.getDefaultMouseEventHandlers(':time-category', function (e) {\n          return _this.getCategoryScope(_this.getSlotScope(_this.getTimestampAtEvent(e, day)), category);\n        })\n      };\n      var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this, 'day-body', function () {\n        return _this.getCategoryScope(_this.getSlotScope(day), category);\n      });\n      return this.$createElement('div', data, children);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarDaily.sass\":\n/*!******************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarDaily.sass ***!\n  \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarDaily.ts\":\n/*!****************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarDaily.ts ***!\n  \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCalendarDaily_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCalendarDaily.sass */ \"./src/components/VCalendar/VCalendarDaily.sass\");\n/* harmony import */ var _VCalendarDaily_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCalendarDaily_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _mixins_calendar_with_intervals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mixins/calendar-with-intervals */ \"./src/components/VCalendar/mixins/calendar-with-intervals.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Directives\n\n // Components\n\n // Mixins\n\n // Util\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_calendar_with_intervals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].extend({\n  name: 'v-calendar-daily',\n  directives: {\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  data: function data() {\n    return {\n      scrollPush: 0\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-calendar-daily': true\n      }, this.themeClasses);\n    }\n  },\n  mounted: function mounted() {\n    this.init();\n  },\n  methods: {\n    init: function init() {\n      this.$nextTick(this.onResize);\n    },\n    onResize: function onResize() {\n      this.scrollPush = this.getScrollPush();\n    },\n    getScrollPush: function getScrollPush() {\n      var area = this.$refs.scrollArea;\n      var pane = this.$refs.pane;\n      return area && pane ? area.offsetWidth - pane.offsetWidth : 0;\n    },\n    genHead: function genHead() {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-daily__head',\n        style: {\n          marginRight: this.scrollPush + 'px'\n        }\n      }, __spreadArray([this.genHeadIntervals()], __read(this.genHeadDays()), false));\n    },\n    genHeadIntervals: function genHeadIntervals() {\n      var width = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.intervalWidth);\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-daily__intervals-head',\n        style: {\n          width: width\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'interval-header'));\n    },\n    genHeadDays: function genHeadDays() {\n      return this.days.map(this.genHeadDay);\n    },\n    genHeadDay: function genHeadDay(day, index) {\n      var _this = this;\n\n      return this.$createElement('div', {\n        key: day.date,\n        staticClass: 'v-calendar-daily_head-day',\n        class: this.getRelativeClasses(day),\n        on: this.getDefaultMouseEventHandlers(':day', function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, _this.getSlotScope(day));\n        })\n      }, __spreadArray([this.genHeadWeekday(day), this.genHeadDayLabel(day)], __read(this.genDayHeader(day, index)), false));\n    },\n    genDayHeader: function genDayHeader(day, index) {\n      var _this = this;\n\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'day-header', function () {\n        return __assign(__assign({\n          week: _this.days\n        }, day), {\n          index: index\n        });\n      }) || [];\n    },\n    genHeadWeekday: function genHeadWeekday(day) {\n      var color = day.present ? this.color : undefined;\n      return this.$createElement('div', this.setTextColor(color, {\n        staticClass: 'v-calendar-daily_head-weekday'\n      }), this.weekdayFormatter(day, this.shortWeekdays));\n    },\n    genHeadDayLabel: function genHeadDayLabel(day) {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-daily_head-day-label'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'day-label-header', day) || [this.genHeadDayButton(day)]);\n    },\n    genHeadDayButton: function genHeadDayButton(day) {\n      var color = day.present ? this.color : 'transparent';\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          color: color,\n          fab: true,\n          depressed: true\n        },\n        on: this.getMouseEventHandlers({\n          'click:date': {\n            event: 'click',\n            stop: true\n          },\n          'contextmenu:date': {\n            event: 'contextmenu',\n            stop: true,\n            prevent: true,\n            result: false\n          }\n        }, function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, day);\n        })\n      }, this.dayFormatter(day, false));\n    },\n    genBody: function genBody() {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-daily__body'\n      }, [this.genScrollArea()]);\n    },\n    genScrollArea: function genScrollArea() {\n      return this.$createElement('div', {\n        ref: 'scrollArea',\n        staticClass: 'v-calendar-daily__scroll-area'\n      }, [this.genPane()]);\n    },\n    genPane: function genPane() {\n      return this.$createElement('div', {\n        ref: 'pane',\n        staticClass: 'v-calendar-daily__pane',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.bodyHeight)\n        }\n      }, [this.genDayContainer()]);\n    },\n    genDayContainer: function genDayContainer() {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-daily__day-container'\n      }, __spreadArray([this.genBodyIntervals()], __read(this.genDays()), false));\n    },\n    genDays: function genDays() {\n      return this.days.map(this.genDay);\n    },\n    genDay: function genDay(day, index) {\n      var _this = this;\n\n      return this.$createElement('div', {\n        key: day.date,\n        staticClass: 'v-calendar-daily__day',\n        class: this.getRelativeClasses(day),\n        on: this.getDefaultMouseEventHandlers(':time', function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, _this.getSlotScope(_this.getTimestampAtEvent(nativeEvent, day)));\n        })\n      }, __spreadArray(__spreadArray([], __read(this.genDayIntervals(index)), false), __read(this.genDayBody(day)), false));\n    },\n    genDayBody: function genDayBody(day) {\n      var _this = this;\n\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'day-body', function () {\n        return _this.getSlotScope(day);\n      }) || [];\n    },\n    genDayIntervals: function genDayIntervals(index) {\n      return this.intervals[index].map(this.genDayInterval);\n    },\n    genDayInterval: function genDayInterval(interval) {\n      var _this = this;\n\n      var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.intervalHeight);\n      var styler = this.intervalStyle || this.intervalStyleDefault;\n      var data = {\n        key: interval.time,\n        staticClass: 'v-calendar-daily__day-interval',\n        style: __assign({\n          height: height\n        }, styler(interval))\n      };\n      var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'interval', function () {\n        return _this.getSlotScope(interval);\n      });\n      return this.$createElement('div', data, children);\n    },\n    genBodyIntervals: function genBodyIntervals() {\n      var _this = this;\n\n      var width = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.intervalWidth);\n      var data = {\n        staticClass: 'v-calendar-daily__intervals-body',\n        style: {\n          width: width\n        },\n        on: this.getDefaultMouseEventHandlers(':interval', function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, _this.getTimestampAtEvent(nativeEvent, _this.parsedStart));\n        })\n      };\n      return this.$createElement('div', data, this.genIntervalLabels());\n    },\n    genIntervalLabels: function genIntervalLabels() {\n      if (!this.intervals.length) return null;\n      return this.intervals[0].map(this.genIntervalLabel);\n    },\n    genIntervalLabel: function genIntervalLabel(interval) {\n      var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.intervalHeight);\n      var short = this.shortIntervals;\n      var shower = this.showIntervalLabel || this.showIntervalLabelDefault;\n      var show = shower(interval);\n      var label = show ? this.intervalFormatter(interval, short) : undefined;\n      return this.$createElement('div', {\n        key: interval.time,\n        staticClass: 'v-calendar-daily__interval',\n        style: {\n          height: height\n        }\n      }, [this.$createElement('div', {\n        staticClass: 'v-calendar-daily__interval-text'\n      }, label)]);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      class: this.classes,\n      on: {\n        dragstart: function dragstart(e) {\n          e.preventDefault();\n        }\n      },\n      directives: [{\n        modifiers: {\n          quiet: true\n        },\n        name: 'resize',\n        value: this.onResize\n      }]\n    }, [!this.hideHeader ? this.genHead() : '', this.genBody()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarMonthly.ts\":\n/*!******************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarMonthly.ts ***!\n  \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCalendarWeekly_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCalendarWeekly.sass */ \"./src/components/VCalendar/VCalendarWeekly.sass\");\n/* harmony import */ var _VCalendarWeekly_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCalendarWeekly_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCalendarWeekly */ \"./src/components/VCalendar/VCalendarWeekly.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n// Styles\n // Mixins\n\n // Util\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-calendar-monthly',\n  computed: {\n    staticClass: function staticClass() {\n      return 'v-calendar-monthly v-calendar-weekly';\n    },\n    parsedStart: function parsedStart() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getStartOfMonth\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(this.start, true));\n    },\n    parsedEnd: function parsedEnd() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getEndOfMonth\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(this.end, true));\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarWeekly.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarWeekly.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarWeekly.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VCalendar/VCalendarWeekly.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCalendarWeekly_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCalendarWeekly.sass */ \"./src/components/VCalendar/VCalendarWeekly.sass\");\n/* harmony import */ var _VCalendarWeekly_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCalendarWeekly_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _mixins_calendar_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mixins/calendar-base */ \"./src/components/VCalendar/mixins/calendar-base.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/dateTimeUtils */ \"./src/util/dateTimeUtils.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n // Util\n\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_calendar_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n  name: 'v-calendar-weekly',\n  props: _util_props__WEBPACK_IMPORTED_MODULE_5__[\"default\"].weeks,\n  computed: {\n    staticClass: function staticClass() {\n      return 'v-calendar-weekly';\n    },\n    classes: function classes() {\n      return this.themeClasses;\n    },\n    parsedMinWeeks: function parsedMinWeeks() {\n      return parseInt(this.minWeeks);\n    },\n    days: function days() {\n      var minDays = this.parsedMinWeeks * this.parsedWeekdays.length;\n      var start = this.getStartOfWeek(this.parsedStart);\n      var end = this.getEndOfWeek(this.parsedEnd);\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"createDayList\"])(start, end, this.times.today, this.weekdaySkips, Number.MAX_SAFE_INTEGER, minDays);\n    },\n    todayWeek: function todayWeek() {\n      var today = this.times.today;\n      var start = this.getStartOfWeek(today);\n      var end = this.getEndOfWeek(today);\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"createDayList\"])(start, end, today, this.weekdaySkips, this.parsedWeekdays.length, this.parsedWeekdays.length);\n    },\n    monthFormatter: function monthFormatter() {\n      if (this.monthFormat) {\n        return this.monthFormat;\n      }\n\n      var longOptions = {\n        timeZone: 'UTC',\n        month: 'long'\n      };\n      var shortOptions = {\n        timeZone: 'UTC',\n        month: 'short'\n      };\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.currentLocale, function (_tms, short) {\n        return short ? shortOptions : longOptions;\n      });\n    }\n  },\n  methods: {\n    isOutside: function isOutside(day) {\n      var dayIdentifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"getDayIdentifier\"])(day);\n      return dayIdentifier < Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"getDayIdentifier\"])(this.parsedStart) || dayIdentifier > Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"getDayIdentifier\"])(this.parsedEnd);\n    },\n    genHead: function genHead() {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-weekly__head',\n        attrs: {\n          role: 'row'\n        }\n      }, this.genHeadDays());\n    },\n    genHeadDays: function genHeadDays() {\n      var header = this.todayWeek.map(this.genHeadDay);\n\n      if (this.showWeek) {\n        header.unshift(this.$createElement('div', {\n          staticClass: 'v-calendar-weekly__head-weeknumber'\n        }));\n      }\n\n      return header;\n    },\n    genHeadDay: function genHeadDay(day, index) {\n      var outside = this.isOutside(this.days[index]);\n      var color = day.present ? this.color : undefined;\n      return this.$createElement('div', this.setTextColor(color, {\n        key: day.date,\n        staticClass: 'v-calendar-weekly__head-weekday',\n        class: this.getRelativeClasses(day, outside),\n        attrs: {\n          role: 'columnheader'\n        }\n      }), this.weekdayFormatter(day, this.shortWeekdays));\n    },\n    genWeeks: function genWeeks() {\n      var days = this.days;\n      var weekDays = this.parsedWeekdays.length;\n      var weeks = [];\n\n      for (var i = 0; i < days.length; i += weekDays) {\n        weeks.push(this.genWeek(days.slice(i, i + weekDays), this.getWeekNumber(days[i])));\n      }\n\n      return weeks;\n    },\n    genWeek: function genWeek(week, weekNumber) {\n      var _this = this;\n\n      var weekNodes = week.map(function (day, index) {\n        return _this.genDay(day, index, week);\n      });\n\n      if (this.showWeek) {\n        weekNodes.unshift(this.genWeekNumber(weekNumber));\n      }\n\n      return this.$createElement('div', {\n        key: week[0].date,\n        staticClass: 'v-calendar-weekly__week',\n        attrs: {\n          role: 'row'\n        }\n      }, weekNodes);\n    },\n    getWeekNumber: function getWeekNumber(determineDay) {\n      return Object(_util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_4__[\"weekNumber\"])(determineDay.year, determineDay.month - 1, determineDay.day, this.parsedWeekdays[0], parseInt(this.localeFirstDayOfYear));\n    },\n    genWeekNumber: function genWeekNumber(weekNumber) {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-weekly__weeknumber'\n      }, [this.$createElement('small', String(weekNumber))]);\n    },\n    genDay: function genDay(day, index, week) {\n      var outside = this.isOutside(day);\n      return this.$createElement('div', {\n        key: day.date,\n        staticClass: 'v-calendar-weekly__day',\n        class: this.getRelativeClasses(day, outside),\n        attrs: {\n          role: 'cell'\n        },\n        on: this.getDefaultMouseEventHandlers(':day', function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, day);\n        })\n      }, __spreadArray([this.genDayLabel(day)], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'day', function () {\n        return __assign({\n          outside: outside,\n          index: index,\n          week: week\n        }, day);\n      }) || []), false));\n    },\n    genDayLabel: function genDayLabel(day) {\n      return this.$createElement('div', {\n        staticClass: 'v-calendar-weekly__day-label'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'day-label', day) || [this.genDayLabelButton(day)]);\n    },\n    genDayLabelButton: function genDayLabelButton(day) {\n      var color = day.present ? this.color : 'transparent';\n      var hasMonth = day.day === 1 && this.showMonthOnFirst;\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          color: color,\n          fab: true,\n          depressed: true,\n          small: true\n        },\n        on: this.getMouseEventHandlers({\n          'click:date': {\n            event: 'click',\n            stop: true\n          },\n          'contextmenu:date': {\n            event: 'contextmenu',\n            stop: true,\n            prevent: true,\n            result: false\n          }\n        }, function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, day);\n        })\n      }, hasMonth ? this.monthFormatter(day, this.shortMonths) + ' ' + this.dayFormatter(day, false) : this.dayFormatter(day, false));\n    },\n    genDayMonth: function genDayMonth(day) {\n      var color = day.present ? this.color : undefined;\n      return this.$createElement('div', this.setTextColor(color, {\n        staticClass: 'v-calendar-weekly__day-month'\n      }), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'day-month', day) || this.monthFormatter(day, this.shortMonths));\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: this.staticClass,\n      class: this.classes,\n      on: {\n        dragstart: function dragstart(e) {\n          e.preventDefault();\n        }\n      }\n    }, __spreadArray([!this.hideHeader ? this.genHead() : ''], __read(this.genWeeks()), false));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VCalendar/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VCalendar, VCalendarCategory, VCalendarDaily, VCalendarWeekly, VCalendarMonthly, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCalendar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCalendar */ \"./src/components/VCalendar/VCalendar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendar\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCalendarDaily */ \"./src/components/VCalendar/VCalendarDaily.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarDaily\", function() { return _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VCalendarWeekly */ \"./src/components/VCalendar/VCalendarWeekly.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarWeekly\", function() { return _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VCalendarMonthly */ \"./src/components/VCalendar/VCalendarMonthly.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarMonthly\", function() { return _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VCalendarCategory__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VCalendarCategory */ \"./src/components/VCalendar/VCalendarCategory.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarCategory\", function() { return _VCalendarCategory__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VCalendar: _VCalendar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VCalendarCategory: _VCalendarCategory__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n    VCalendarDaily: _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VCalendarWeekly: _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VCalendarMonthly: _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/calendar-base.ts\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VCalendar/mixins/calendar-base.ts ***!\n  \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_localable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../mixins/localable */ \"./src/mixins/localable/index.ts\");\n/* harmony import */ var _mixins_mouse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../mixins/mouse */ \"./src/mixins/mouse/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _times__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./times */ \"./src/components/VCalendar/mixins/times.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n// Mixins\n\n\n\n\n\n // Directives\n\n // Util\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_localable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_mouse__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _times__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'calendar-base',\n  directives: {\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  },\n  props: _util_props__WEBPACK_IMPORTED_MODULE_7__[\"default\"].base,\n  computed: {\n    parsedWeekdays: function parsedWeekdays() {\n      return Array.isArray(this.weekdays) ? this.weekdays : (this.weekdays || '').split(',').map(function (x) {\n        return parseInt(x, 10);\n      });\n    },\n    weekdaySkips: function weekdaySkips() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"getWeekdaySkips\"])(this.parsedWeekdays);\n    },\n    weekdaySkipsReverse: function weekdaySkipsReverse() {\n      var reversed = this.weekdaySkips.slice();\n      reversed.reverse();\n      return reversed;\n    },\n    parsedStart: function parsedStart() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"parseTimestamp\"])(this.start, true);\n    },\n    parsedEnd: function parsedEnd() {\n      var start = this.parsedStart;\n      var end = this.end ? Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"parseTimestamp\"])(this.end) || start : start;\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"getTimestampIdentifier\"])(end) < Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"getTimestampIdentifier\"])(start) ? start : end;\n    },\n    days: function days() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"createDayList\"])(this.parsedStart, this.parsedEnd, this.times.today, this.weekdaySkips);\n    },\n    dayFormatter: function dayFormatter() {\n      if (this.dayFormat) {\n        return this.dayFormat;\n      }\n\n      var options = {\n        timeZone: 'UTC',\n        day: 'numeric'\n      };\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"createNativeLocaleFormatter\"])(this.currentLocale, function (_tms, _short) {\n        return options;\n      });\n    },\n    weekdayFormatter: function weekdayFormatter() {\n      if (this.weekdayFormat) {\n        return this.weekdayFormat;\n      }\n\n      var longOptions = {\n        timeZone: 'UTC',\n        weekday: 'long'\n      };\n      var shortOptions = {\n        timeZone: 'UTC',\n        weekday: 'short'\n      };\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"createNativeLocaleFormatter\"])(this.currentLocale, function (_tms, short) {\n        return short ? shortOptions : longOptions;\n      });\n    }\n  },\n  methods: {\n    getRelativeClasses: function getRelativeClasses(timestamp, outside) {\n      if (outside === void 0) {\n        outside = false;\n      }\n\n      return {\n        'v-present': timestamp.present,\n        'v-past': timestamp.past,\n        'v-future': timestamp.future,\n        'v-outside': outside\n      };\n    },\n    getStartOfWeek: function getStartOfWeek(timestamp) {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"getStartOfWeek\"])(timestamp, this.parsedWeekdays, this.times.today);\n    },\n    getEndOfWeek: function getEndOfWeek(timestamp) {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"getEndOfWeek\"])(timestamp, this.parsedWeekdays, this.times.today);\n    },\n    getFormatter: function getFormatter(options) {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_8__[\"createNativeLocaleFormatter\"])(this.locale, function (_tms, _short) {\n        return options;\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/calendar-with-events.sass\":\n/*!*******************************************************************!*\\\n  !*** ./src/components/VCalendar/mixins/calendar-with-events.sass ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/calendar-with-events.ts\":\n/*!*****************************************************************!*\\\n  !*** ./src/components/VCalendar/mixins/calendar-with-events.ts ***!\n  \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calendar_with_events_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calendar-with-events.sass */ \"./src/components/VCalendar/mixins/calendar-with-events.sass\");\n/* harmony import */ var _calendar_with_events_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_calendar_with_events_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _calendar_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./calendar-base */ \"./src/components/VCalendar/mixins/calendar-base.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _modes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modes */ \"./src/components/VCalendar/modes/index.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n/* harmony import */ var _util_events__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/events */ \"./src/components/VCalendar/util/events.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Directives\n\n // Mixins\n\n // Util\n\n\n\n\n\nvar WIDTH_FULL = 100;\nvar WIDTH_START = 95;\nvar MINUTES_IN_DAY = 1440;\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_calendar_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n  name: 'calendar-with-events',\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  props: __assign(__assign(__assign({}, _util_props__WEBPACK_IMPORTED_MODULE_3__[\"default\"].events), _util_props__WEBPACK_IMPORTED_MODULE_3__[\"default\"].calendar), _util_props__WEBPACK_IMPORTED_MODULE_3__[\"default\"].category),\n  computed: {\n    noEvents: function noEvents() {\n      return this.events.length === 0;\n    },\n    parsedEvents: function parsedEvents() {\n      return this.events.map(this.parseEvent);\n    },\n    parsedEventOverlapThreshold: function parsedEventOverlapThreshold() {\n      return parseInt(this.eventOverlapThreshold);\n    },\n    eventTimedFunction: function eventTimedFunction() {\n      var _this = this;\n\n      return typeof this.eventTimed === 'function' ? this.eventTimed : function (event) {\n        return !!event[_this.eventTimed];\n      };\n    },\n    eventCategoryFunction: function eventCategoryFunction() {\n      var _this = this;\n\n      return typeof this.eventCategory === 'function' ? this.eventCategory : function (event) {\n        return event[_this.eventCategory];\n      };\n    },\n    eventTextColorFunction: function eventTextColorFunction() {\n      var _this = this;\n\n      return typeof this.eventTextColor === 'function' ? this.eventTextColor : function () {\n        return _this.eventTextColor;\n      };\n    },\n    eventNameFunction: function eventNameFunction() {\n      var _this = this;\n\n      return typeof this.eventName === 'function' ? this.eventName : function (event, timedEvent) {\n        return event.input[_this.eventName] || '';\n      };\n    },\n    eventModeFunction: function eventModeFunction() {\n      return typeof this.eventOverlapMode === 'function' ? this.eventOverlapMode : _modes__WEBPACK_IMPORTED_MODULE_4__[\"CalendarEventOverlapModes\"][this.eventOverlapMode];\n    },\n    eventWeekdays: function eventWeekdays() {\n      return this.parsedWeekdays;\n    },\n    categoryMode: function categoryMode() {\n      return this.type === 'category';\n    }\n  },\n  methods: {\n    eventColorFunction: function eventColorFunction(e) {\n      return typeof this.eventColor === 'function' ? this.eventColor(e) : e.color || this.eventColor;\n    },\n    parseEvent: function parseEvent(input, index) {\n      if (index === void 0) {\n        index = 0;\n      }\n\n      return Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"parseEvent\"])(input, index, this.eventStart, this.eventEnd, this.eventTimedFunction(input), this.categoryMode ? this.eventCategoryFunction(input) : false);\n    },\n    formatTime: function formatTime(withTime, ampm) {\n      var formatter = this.getFormatter({\n        timeZone: 'UTC',\n        hour: 'numeric',\n        minute: withTime.minute > 0 ? 'numeric' : undefined\n      });\n      return formatter(withTime, true);\n    },\n    updateEventVisibility: function updateEventVisibility() {\n      if (this.noEvents || !this.eventMore) {\n        return;\n      }\n\n      var eventHeight = this.eventHeight;\n      var eventsMap = this.getEventsMap();\n\n      for (var date in eventsMap) {\n        var _a = eventsMap[date],\n            parent = _a.parent,\n            events = _a.events,\n            more = _a.more;\n\n        if (!more) {\n          break;\n        }\n\n        var parentBounds = parent.getBoundingClientRect();\n        var last = events.length - 1;\n        var eventsSorted = events.map(function (event) {\n          return {\n            event: event,\n            bottom: event.getBoundingClientRect().bottom\n          };\n        }).sort(function (a, b) {\n          return a.bottom - b.bottom;\n        });\n        var hidden = 0;\n\n        for (var i = 0; i <= last; i++) {\n          var bottom = eventsSorted[i].bottom;\n          var hide = i === last ? bottom > parentBounds.bottom : bottom + eventHeight > parentBounds.bottom;\n\n          if (hide) {\n            eventsSorted[i].event.style.display = 'none';\n            hidden++;\n          }\n        }\n\n        if (hidden) {\n          more.style.display = '';\n          more.innerHTML = this.$vuetify.lang.t(this.eventMoreText, hidden);\n        } else {\n          more.style.display = 'none';\n        }\n      }\n    },\n    getEventsMap: function getEventsMap() {\n      var eventsMap = {};\n      var elements = this.$refs.events;\n\n      if (!elements || !elements.forEach) {\n        return eventsMap;\n      }\n\n      elements.forEach(function (el) {\n        var date = el.getAttribute('data-date');\n\n        if (el.parentElement && date) {\n          if (!(date in eventsMap)) {\n            eventsMap[date] = {\n              parent: el.parentElement,\n              more: null,\n              events: []\n            };\n          }\n\n          if (el.getAttribute('data-more')) {\n            eventsMap[date].more = el;\n          } else {\n            eventsMap[date].events.push(el);\n            el.style.display = '';\n          }\n        }\n      });\n      return eventsMap;\n    },\n    genDayEvent: function genDayEvent(_a, day) {\n      var event = _a.event;\n      var eventHeight = this.eventHeight;\n      var eventMarginBottom = this.eventMarginBottom;\n      var dayIdentifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(day);\n      var week = day.week;\n      var start = dayIdentifier === event.startIdentifier;\n      var end = dayIdentifier === event.endIdentifier;\n      var width = WIDTH_START;\n\n      if (!this.categoryMode) {\n        for (var i = day.index + 1; i < week.length; i++) {\n          var weekdayIdentifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(week[i]);\n\n          if (event.endIdentifier >= weekdayIdentifier) {\n            width += WIDTH_FULL;\n            end = end || weekdayIdentifier === event.endIdentifier;\n          } else {\n            end = true;\n            break;\n          }\n        }\n      }\n\n      var scope = {\n        eventParsed: event,\n        day: day,\n        start: start,\n        end: end,\n        timed: false\n      };\n      return this.genEvent(event, scope, false, {\n        staticClass: 'v-event',\n        class: {\n          'v-event-start': start,\n          'v-event-end': end\n        },\n        style: {\n          height: eventHeight + \"px\",\n          width: width + \"%\",\n          'margin-bottom': eventMarginBottom + \"px\"\n        },\n        attrs: {\n          'data-date': day.date\n        },\n        key: event.index,\n        ref: 'events',\n        refInFor: true\n      });\n    },\n    genTimedEvent: function genTimedEvent(_a, day) {\n      var event = _a.event,\n          left = _a.left,\n          width = _a.width;\n\n      if (day.timeDelta(event.end) < 0 || day.timeDelta(event.start) >= 1 || Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"isEventHiddenOn\"])(event, day)) {\n        return false;\n      }\n\n      var dayIdentifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(day);\n      var start = event.startIdentifier >= dayIdentifier;\n      var end = event.endIdentifier > dayIdentifier;\n      var top = start ? day.timeToY(event.start) : 0;\n      var bottom = end ? day.timeToY(MINUTES_IN_DAY) : day.timeToY(event.end);\n      var height = Math.max(this.eventHeight, bottom - top);\n      var scope = {\n        eventParsed: event,\n        day: day,\n        start: start,\n        end: end,\n        timed: true\n      };\n      return this.genEvent(event, scope, true, {\n        staticClass: 'v-event-timed',\n        style: {\n          top: top + \"px\",\n          height: height + \"px\",\n          left: left + \"%\",\n          width: width + \"%\"\n        }\n      });\n    },\n    genEvent: function genEvent(event, scopeInput, timedEvent, data) {\n      var _this = this;\n\n      var _a;\n\n      var slot = this.$scopedSlots.event;\n      var text = this.eventTextColorFunction(event.input);\n      var background = this.eventColorFunction(event.input);\n      var overlapsNoon = event.start.hour < 12 && event.end.hour >= 12;\n      var singline = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"diffMinutes\"])(event.start, event.end) <= this.parsedEventOverlapThreshold;\n      var formatTime = this.formatTime;\n\n      var timeSummary = function timeSummary() {\n        return formatTime(event.start, overlapsNoon) + ' - ' + formatTime(event.end, true);\n      };\n\n      var eventSummary = function eventSummary() {\n        var name = _this.eventNameFunction(event, timedEvent);\n\n        if (event.start.hasTime) {\n          if (timedEvent) {\n            var time = timeSummary();\n            var delimiter = singline ? ', ' : _this.$createElement('br');\n            return _this.$createElement('span', {\n              staticClass: 'v-event-summary'\n            }, [_this.$createElement('strong', [name]), delimiter, time]);\n          } else {\n            var time = formatTime(event.start, true);\n            return _this.$createElement('span', {\n              staticClass: 'v-event-summary'\n            }, [_this.$createElement('strong', [time]), ' ', name]);\n          }\n        }\n\n        return _this.$createElement('span', {\n          staticClass: 'v-event-summary'\n        }, [name]);\n      };\n\n      var scope = __assign(__assign({}, scopeInput), {\n        event: event.input,\n        outside: scopeInput.day.outside,\n        singline: singline,\n        overlapsNoon: overlapsNoon,\n        formatTime: formatTime,\n        timeSummary: timeSummary,\n        eventSummary: eventSummary\n      });\n\n      return this.$createElement('div', this.setTextColor(text, this.setBackgroundColor(background, __assign({\n        on: this.getDefaultMouseEventHandlers(':event', function (nativeEvent) {\n          return __assign(__assign({}, scope), {\n            nativeEvent: nativeEvent\n          });\n        }),\n        directives: [{\n          name: 'ripple',\n          value: (_a = this.eventRipple) !== null && _a !== void 0 ? _a : true\n        }]\n      }, data))), slot ? slot(scope) : [this.genName(eventSummary)]);\n    },\n    genName: function genName(eventSummary) {\n      return this.$createElement('div', {\n        staticClass: 'pl-1'\n      }, [eventSummary()]);\n    },\n    genPlaceholder: function genPlaceholder(day) {\n      var height = this.eventHeight + this.eventMarginBottom;\n      return this.$createElement('div', {\n        style: {\n          height: height + \"px\"\n        },\n        attrs: {\n          'data-date': day.date\n        },\n        ref: 'events',\n        refInFor: true\n      });\n    },\n    genMore: function genMore(day) {\n      var _a;\n\n      var eventHeight = this.eventHeight;\n      var eventMarginBottom = this.eventMarginBottom;\n      return this.$createElement('div', {\n        staticClass: 'v-event-more pl-1',\n        class: {\n          'v-outside': day.outside\n        },\n        attrs: {\n          'data-date': day.date,\n          'data-more': 1\n        },\n        directives: [{\n          name: 'ripple',\n          value: (_a = this.eventRipple) !== null && _a !== void 0 ? _a : true\n        }],\n        on: this.getDefaultMouseEventHandlers(':more', function (nativeEvent) {\n          return __assign({\n            nativeEvent: nativeEvent\n          }, day);\n        }),\n        style: {\n          display: 'none',\n          height: eventHeight + \"px\",\n          'margin-bottom': eventMarginBottom + \"px\"\n        },\n        ref: 'events',\n        refInFor: true\n      });\n    },\n    getVisibleEvents: function getVisibleEvents() {\n      var start = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(this.days[0]);\n      var end = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(this.days[this.days.length - 1]);\n      return this.parsedEvents.filter(function (event) {\n        return Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"isEventOverlapping\"])(event, start, end);\n      });\n    },\n    isEventForCategory: function isEventForCategory(event, category) {\n      return !this.categoryMode || _typeof(category) === 'object' && category.categoryName && category.categoryName === event.category || typeof event.category === 'string' && category === event.category || typeof event.category !== 'string' && category === null;\n    },\n    getEventsForDay: function getEventsForDay(day) {\n      var identifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(day);\n      var firstWeekday = this.eventWeekdays[0];\n      return this.parsedEvents.filter(function (event) {\n        return Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"isEventStart\"])(event, day, identifier, firstWeekday);\n      });\n    },\n    getEventsForDayAll: function getEventsForDayAll(day) {\n      var _this = this;\n\n      var identifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(day);\n      var firstWeekday = this.eventWeekdays[0];\n      return this.parsedEvents.filter(function (event) {\n        return event.allDay && (_this.categoryMode ? Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"isEventOn\"])(event, identifier) : Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"isEventStart\"])(event, day, identifier, firstWeekday)) && _this.isEventForCategory(event, day.category);\n      });\n    },\n    getEventsForDayTimed: function getEventsForDayTimed(day) {\n      var _this = this;\n\n      var identifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_5__[\"getDayIdentifier\"])(day);\n      return this.parsedEvents.filter(function (event) {\n        return !event.allDay && Object(_util_events__WEBPACK_IMPORTED_MODULE_6__[\"isEventOn\"])(event, identifier) && _this.isEventForCategory(event, day.category);\n      });\n    },\n    getScopedSlots: function getScopedSlots() {\n      var _this = this;\n\n      if (this.noEvents) {\n        return __assign({}, this.$scopedSlots);\n      }\n\n      var mode = this.eventModeFunction(this.parsedEvents, this.eventWeekdays[0], this.parsedEventOverlapThreshold);\n\n      var isNode = function isNode(input) {\n        return !!input;\n      };\n\n      var getSlotChildren = function getSlotChildren(day, getter, mapper, timed) {\n        var events = getter(day);\n        var visuals = mode(day, events, timed, _this.categoryMode);\n\n        if (timed) {\n          return visuals.map(function (visual) {\n            return mapper(visual, day);\n          }).filter(isNode);\n        }\n\n        var children = [];\n        visuals.forEach(function (visual, index) {\n          while (children.length < visual.column) {\n            children.push(_this.genPlaceholder(day));\n          }\n\n          var mapped = mapper(visual, day);\n\n          if (mapped) {\n            children.push(mapped);\n          }\n        });\n        return children;\n      };\n\n      var slots = this.$scopedSlots;\n      var slotDay = slots.day;\n      var slotDayHeader = slots['day-header'];\n      var slotDayBody = slots['day-body'];\n      return __assign(__assign({}, slots), {\n        day: function day(_day) {\n          var children = getSlotChildren(_day, _this.getEventsForDay, _this.genDayEvent, false);\n\n          if (children && children.length > 0 && _this.eventMore) {\n            children.push(_this.genMore(_day));\n          }\n\n          if (slotDay) {\n            var slot = slotDay(_day);\n\n            if (slot) {\n              children = children ? children.concat(slot) : slot;\n            }\n          }\n\n          return children;\n        },\n        'day-header': function dayHeader(day) {\n          var children = getSlotChildren(day, _this.getEventsForDayAll, _this.genDayEvent, false);\n\n          if (slotDayHeader) {\n            var slot = slotDayHeader(day);\n\n            if (slot) {\n              children = children ? children.concat(slot) : slot;\n            }\n          }\n\n          return children;\n        },\n        'day-body': function dayBody(day) {\n          var events = getSlotChildren(day, _this.getEventsForDayTimed, _this.genTimedEvent, true);\n          var children = [_this.$createElement('div', {\n            staticClass: 'v-event-timed-container'\n          }, events)];\n\n          if (slotDayBody) {\n            var slot = slotDayBody(day);\n\n            if (slot) {\n              children = children.concat(slot);\n            }\n          }\n\n          return children;\n        }\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/calendar-with-intervals.ts\":\n/*!********************************************************************!*\\\n  !*** ./src/components/VCalendar/mixins/calendar-with-intervals.ts ***!\n  \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calendar_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calendar-base */ \"./src/components/VCalendar/mixins/calendar-base.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n// Mixins\n // Util\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_calendar_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'calendar-with-intervals',\n  props: _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].intervals,\n  computed: {\n    parsedFirstInterval: function parsedFirstInterval() {\n      return parseInt(this.firstInterval);\n    },\n    parsedIntervalMinutes: function parsedIntervalMinutes() {\n      return parseInt(this.intervalMinutes);\n    },\n    parsedIntervalCount: function parsedIntervalCount() {\n      return parseInt(this.intervalCount);\n    },\n    parsedIntervalHeight: function parsedIntervalHeight() {\n      return parseFloat(this.intervalHeight);\n    },\n    parsedFirstTime: function parsedFirstTime() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTime\"])(this.firstTime);\n    },\n    firstMinute: function firstMinute() {\n      var time = this.parsedFirstTime;\n      return time !== false && time >= 0 && time <= _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"MINUTES_IN_DAY\"] ? time : this.parsedFirstInterval * this.parsedIntervalMinutes;\n    },\n    bodyHeight: function bodyHeight() {\n      return this.parsedIntervalCount * this.parsedIntervalHeight;\n    },\n    days: function days() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"createDayList\"])(this.parsedStart, this.parsedEnd, this.times.today, this.weekdaySkips, this.maxDays);\n    },\n    intervals: function intervals() {\n      var days = this.days;\n      var first = this.firstMinute;\n      var minutes = this.parsedIntervalMinutes;\n      var count = this.parsedIntervalCount;\n      var now = this.times.now;\n      return days.map(function (d) {\n        return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"createIntervalList\"])(d, first, minutes, count, now);\n      });\n    },\n    intervalFormatter: function intervalFormatter() {\n      if (this.intervalFormat) {\n        return this.intervalFormat;\n      }\n\n      var longOptions = {\n        timeZone: 'UTC',\n        hour: '2-digit',\n        minute: '2-digit'\n      };\n      var shortOptions = {\n        timeZone: 'UTC',\n        hour: 'numeric',\n        minute: '2-digit'\n      };\n      var shortHourOptions = {\n        timeZone: 'UTC',\n        hour: 'numeric'\n      };\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"createNativeLocaleFormatter\"])(this.currentLocale, function (tms, short) {\n        return short ? tms.minute === 0 ? shortHourOptions : shortOptions : longOptions;\n      });\n    }\n  },\n  methods: {\n    showIntervalLabelDefault: function showIntervalLabelDefault(interval) {\n      var first = this.intervals[0][0];\n      var isFirst = first.hour === interval.hour && first.minute === interval.minute;\n      return !isFirst;\n    },\n    intervalStyleDefault: function intervalStyleDefault(_interval) {\n      return undefined;\n    },\n    getTimestampAtEvent: function getTimestampAtEvent(e, day) {\n      var timestamp = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(day);\n      var bounds = e.currentTarget.getBoundingClientRect();\n      var baseMinutes = this.firstMinute;\n      var touchEvent = e;\n      var mouseEvent = e;\n      var touches = touchEvent.changedTouches || touchEvent.touches;\n      var clientY = touches && touches[0] ? touches[0].clientY : mouseEvent.clientY;\n      var addIntervals = (clientY - bounds.top) / this.parsedIntervalHeight;\n      var addMinutes = Math.floor(addIntervals * this.parsedIntervalMinutes);\n      var minutes = baseMinutes + addMinutes;\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateMinutes\"])(timestamp, minutes, this.times.now);\n    },\n    getSlotScope: function getSlotScope(timestamp) {\n      var scope = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(timestamp);\n      scope.timeToY = this.timeToY;\n      scope.timeDelta = this.timeDelta;\n      scope.minutesToPixels = this.minutesToPixels;\n      scope.week = this.days;\n      return scope;\n    },\n    scrollToTime: function scrollToTime(time) {\n      var y = this.timeToY(time);\n      var pane = this.$refs.scrollArea;\n\n      if (y === false || !pane) {\n        return false;\n      }\n\n      pane.scrollTop = y;\n      return true;\n    },\n    minutesToPixels: function minutesToPixels(minutes) {\n      return minutes / this.parsedIntervalMinutes * this.parsedIntervalHeight;\n    },\n    timeToY: function timeToY(time, clamp) {\n      if (clamp === void 0) {\n        clamp = true;\n      }\n\n      var y = this.timeDelta(time);\n\n      if (y !== false) {\n        y *= this.bodyHeight;\n\n        if (clamp) {\n          if (y < 0) {\n            y = 0;\n          }\n\n          if (y > this.bodyHeight) {\n            y = this.bodyHeight;\n          }\n        }\n      }\n\n      return y;\n    },\n    timeDelta: function timeDelta(time) {\n      var minutes = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTime\"])(time);\n\n      if (minutes === false) {\n        return false;\n      }\n\n      var min = this.firstMinute;\n      var gap = this.parsedIntervalCount * this.parsedIntervalMinutes;\n      return (minutes - min) / gap;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/times.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VCalendar/mixins/times.ts ***!\n  \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'times',\n  props: {\n    now: {\n      type: String,\n      validator: _util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"validateTimestamp\"]\n    }\n  },\n  data: function data() {\n    return {\n      times: {\n        now: Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseTimestamp\"])('0000-00-00 00:00', true),\n        today: Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseTimestamp\"])('0000-00-00', true)\n      }\n    };\n  },\n  computed: {\n    parsedNow: function parsedNow() {\n      return this.now ? Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseTimestamp\"])(this.now, true) : null;\n    }\n  },\n  watch: {\n    parsedNow: 'updateTimes'\n  },\n  created: function created() {\n    this.updateTimes();\n    this.setPresent();\n  },\n  methods: {\n    setPresent: function setPresent() {\n      this.times.now.present = this.times.today.present = true;\n      this.times.now.past = this.times.today.past = false;\n      this.times.now.future = this.times.today.future = false;\n    },\n    updateTimes: function updateTimes() {\n      var now = this.parsedNow || this.getNow();\n      this.updateDay(now, this.times.now);\n      this.updateTime(now, this.times.now);\n      this.updateDay(now, this.times.today);\n    },\n    getNow: function getNow() {\n      return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseDate\"])(new Date());\n    },\n    updateDay: function updateDay(now, target) {\n      if (now.date !== target.date) {\n        target.year = now.year;\n        target.month = now.month;\n        target.day = now.day;\n        target.weekday = now.weekday;\n        target.date = now.date;\n      }\n    },\n    updateTime: function updateTime(now, target) {\n      if (now.time !== target.time) {\n        target.hour = now.hour;\n        target.minute = now.minute;\n        target.time = now.time;\n      }\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/modes/column.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VCalendar/modes/column.ts ***!\n  \\**************************************************/\n/*! exports provided: column */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"column\", function() { return column; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./src/components/VCalendar/modes/common.ts\");\n\nvar FULL_WIDTH = 100;\nvar column = function column(events, firstWeekday, overlapThreshold) {\n  var handler = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getOverlapGroupHandler\"])(firstWeekday);\n  return function (day, dayEvents, timed, reset) {\n    var visuals = handler.getVisuals(day, dayEvents, timed, reset);\n\n    if (timed) {\n      visuals.forEach(function (visual) {\n        visual.left = visual.column * FULL_WIDTH / visual.columnCount;\n        visual.width = FULL_WIDTH / visual.columnCount;\n      });\n    }\n\n    return visuals;\n  };\n};\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/modes/common.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VCalendar/modes/common.ts ***!\n  \\**************************************************/\n/*! exports provided: getVisuals, hasOverlap, setColumnCount, getRange, getDayRange, getNormalizedRange, getOpenGroup, getOverlapGroupHandler */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisuals\", function() { return _getVisuals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOverlap\", function() { return hasOverlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setColumnCount\", function() { return setColumnCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRange\", function() { return getRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDayRange\", function() { return getDayRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNormalizedRange\", function() { return getNormalizedRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOpenGroup\", function() { return getOpenGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOverlapGroupHandler\", function() { return getOverlapGroupHandler; });\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\nvar MILLIS_IN_DAY = 86400000;\n\nfunction _getVisuals(events, minStart) {\n  if (minStart === void 0) {\n    minStart = 0;\n  }\n\n  var visuals = events.map(function (event) {\n    return {\n      event: event,\n      columnCount: 0,\n      column: 0,\n      left: 0,\n      width: 100\n    };\n  });\n  visuals.sort(function (a, b) {\n    return Math.max(minStart, a.event.startTimestampIdentifier) - Math.max(minStart, b.event.startTimestampIdentifier) || b.event.endTimestampIdentifier - a.event.endTimestampIdentifier;\n  });\n  return visuals;\n}\n\n\nfunction hasOverlap(s0, e0, s1, e1, exclude) {\n  if (exclude === void 0) {\n    exclude = true;\n  }\n\n  return exclude ? !(s0 >= e1 || e0 <= s1) : !(s0 > e1 || e0 < s1);\n}\nfunction setColumnCount(groups) {\n  groups.forEach(function (group) {\n    group.visuals.forEach(function (groupVisual) {\n      groupVisual.columnCount = groups.length;\n    });\n  });\n}\nfunction getRange(event) {\n  return [event.startTimestampIdentifier, event.endTimestampIdentifier];\n}\nfunction getDayRange(event) {\n  return [event.startIdentifier, event.endIdentifier];\n}\nfunction getNormalizedRange(event, dayStart) {\n  return [Math.max(dayStart, event.startTimestampIdentifier), Math.min(dayStart + MILLIS_IN_DAY, event.endTimestampIdentifier)];\n}\nfunction getOpenGroup(groups, start, end, timed) {\n  for (var i = 0; i < groups.length; i++) {\n    var group = groups[i];\n    var intersected = false;\n\n    if (hasOverlap(start, end, group.start, group.end, timed)) {\n      for (var k = 0; k < group.visuals.length; k++) {\n        var groupVisual = group.visuals[k];\n\n        var _a = __read(timed ? getRange(groupVisual.event) : getDayRange(groupVisual.event), 2),\n            groupStart = _a[0],\n            groupEnd = _a[1];\n\n        if (hasOverlap(start, end, groupStart, groupEnd, timed)) {\n          intersected = true;\n          break;\n        }\n      }\n    }\n\n    if (!intersected) {\n      return i;\n    }\n  }\n\n  return -1;\n}\nfunction getOverlapGroupHandler(firstWeekday) {\n  var handler = {\n    groups: [],\n    min: -1,\n    max: -1,\n    reset: function reset() {\n      handler.groups = [];\n      handler.min = handler.max = -1;\n    },\n    getVisuals: function getVisuals(day, dayEvents, timed, reset) {\n      if (reset === void 0) {\n        reset = false;\n      }\n\n      if (day.weekday === firstWeekday || reset) {\n        handler.reset();\n      }\n\n      var dayStart = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"getTimestampIdentifier\"])(day);\n\n      var visuals = _getVisuals(dayEvents, dayStart);\n\n      visuals.forEach(function (visual) {\n        var _a = __read(timed ? getRange(visual.event) : getDayRange(visual.event), 2),\n            start = _a[0],\n            end = _a[1];\n\n        if (handler.groups.length > 0 && !hasOverlap(start, end, handler.min, handler.max, timed)) {\n          setColumnCount(handler.groups);\n          handler.reset();\n        }\n\n        var targetGroup = getOpenGroup(handler.groups, start, end, timed);\n\n        if (targetGroup === -1) {\n          targetGroup = handler.groups.length;\n          handler.groups.push({\n            start: start,\n            end: end,\n            visuals: []\n          });\n        }\n\n        var target = handler.groups[targetGroup];\n        target.visuals.push(visual);\n        target.start = Math.min(target.start, start);\n        target.end = Math.max(target.end, end);\n        visual.column = targetGroup;\n\n        if (handler.min === -1) {\n          handler.min = start;\n          handler.max = end;\n        } else {\n          handler.min = Math.min(handler.min, start);\n          handler.max = Math.max(handler.max, end);\n        }\n      });\n      setColumnCount(handler.groups);\n\n      if (timed) {\n        handler.reset();\n      }\n\n      return visuals;\n    }\n  };\n  return handler;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/modes/index.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VCalendar/modes/index.ts ***!\n  \\*************************************************/\n/*! exports provided: CalendarEventOverlapModes */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CalendarEventOverlapModes\", function() { return CalendarEventOverlapModes; });\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stack */ \"./src/components/VCalendar/modes/stack.ts\");\n/* harmony import */ var _column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./column */ \"./src/components/VCalendar/modes/column.ts\");\n\n\nvar CalendarEventOverlapModes = {\n  stack: _stack__WEBPACK_IMPORTED_MODULE_0__[\"stack\"],\n  column: _column__WEBPACK_IMPORTED_MODULE_1__[\"column\"]\n};\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/modes/stack.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VCalendar/modes/stack.ts ***!\n  \\*************************************************/\n/*! exports provided: stack */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stack\", function() { return stack; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./src/components/VCalendar/modes/common.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\n\nvar FULL_WIDTH = 100;\nvar DEFAULT_OFFSET = 5;\nvar WIDTH_MULTIPLIER = 1.7;\n/**\n * Variation of column mode where events can be stacked. The priority of this\n * mode is to stack events together taking up the least amount of space while\n * trying to ensure the content of the event is always visible as well as its\n * start and end. A sibling column has intersecting event content and must be\n * placed beside each other. Non-sibling columns are offset by 5% from the\n * previous column. The width is scaled by 1.7 so the events overlap and\n * whitespace is reduced. If there is a hole in columns the event width is\n * scaled up so it intersects with the next column. The columns have equal\n * width in the space they are given. If the event doesn't have any to the\n * right of it that intersect with it's content it's right side is extended\n * to the right side.\n */\n\nvar stack = function stack(events, firstWeekday, overlapThreshold) {\n  var handler = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getOverlapGroupHandler\"])(firstWeekday); // eslint-disable-next-line max-statements\n\n  return function (day, dayEvents, timed, reset) {\n    var e_1, _a, e_2, _b, e_3, _c;\n\n    if (!timed) {\n      return handler.getVisuals(day, dayEvents, timed, reset);\n    }\n\n    var dayStart = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"getTimestampIdentifier\"])(day);\n    var visuals = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getVisuals\"])(dayEvents, dayStart);\n    var groups = getGroups(visuals, dayStart);\n\n    try {\n      for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {\n        var group = groups_1_1.value;\n        var nodes = [];\n\n        try {\n          for (var _d = (e_2 = void 0, __values(group.visuals)), _e = _d.next(); !_e.done; _e = _d.next()) {\n            var visual = _e.value;\n            var child = getNode(visual, dayStart);\n            var index = getNextIndex(child, nodes);\n\n            if (index === false) {\n              var parent = getParent(child, nodes);\n\n              if (parent) {\n                child.parent = parent;\n                child.sibling = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold));\n                child.index = parent.index + 1;\n                parent.children.push(child);\n              }\n            } else {\n              var _f = __read(getOverlappingRange(child, nodes, index - 1, index - 1), 1),\n                  parent = _f[0];\n\n              var children = getOverlappingRange(child, nodes, index + 1, index + nodes.length, true);\n              child.children = children;\n              child.index = index;\n\n              if (parent) {\n                child.parent = parent;\n                child.sibling = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold));\n                parent.children.push(child);\n              }\n\n              try {\n                for (var children_1 = (e_3 = void 0, __values(children)), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n                  var grand = children_1_1.value;\n\n                  if (grand.parent === parent) {\n                    grand.parent = child;\n                  }\n\n                  var grandNext = grand.index - child.index <= 1;\n\n                  if (grandNext && child.sibling && Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(child.start, addTime(child.start, overlapThreshold), grand.start, grand.end)) {\n                    grand.sibling = true;\n                  }\n                }\n              } catch (e_3_1) {\n                e_3 = {\n                  error: e_3_1\n                };\n              } finally {\n                try {\n                  if (children_1_1 && !children_1_1.done && (_c = children_1.return)) _c.call(children_1);\n                } finally {\n                  if (e_3) throw e_3.error;\n                }\n              }\n            }\n\n            nodes.push(child);\n          }\n        } catch (e_2_1) {\n          e_2 = {\n            error: e_2_1\n          };\n        } finally {\n          try {\n            if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n          } finally {\n            if (e_2) throw e_2.error;\n          }\n        }\n\n        calculateBounds(nodes, overlapThreshold);\n      }\n    } catch (e_1_1) {\n      e_1 = {\n        error: e_1_1\n      };\n    } finally {\n      try {\n        if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);\n      } finally {\n        if (e_1) throw e_1.error;\n      }\n    }\n\n    visuals.sort(function (a, b) {\n      return a.left - b.left || a.event.startTimestampIdentifier - b.event.startTimestampIdentifier;\n    });\n    return visuals;\n  };\n};\n\nfunction calculateBounds(nodes, overlapThreshold) {\n  var e_4, _a;\n\n  try {\n    for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n      var node = nodes_1_1.value;\n      var visual = node.visual,\n          parent = node.parent;\n      var columns = getMaxChildIndex(node) + 1;\n      var spaceLeft = parent ? parent.visual.left : 0;\n      var spaceWidth = FULL_WIDTH - spaceLeft;\n      var offset = Math.min(DEFAULT_OFFSET, FULL_WIDTH / columns);\n      var columnWidthMultiplier = getColumnWidthMultiplier(node, nodes);\n      var columnOffset = spaceWidth / (columns - node.index + 1);\n      var columnWidth = spaceWidth / (columns - node.index + (node.sibling ? 1 : 0)) * columnWidthMultiplier;\n\n      if (parent) {\n        visual.left = node.sibling ? spaceLeft + columnOffset : spaceLeft + offset;\n      }\n\n      visual.width = hasFullWidth(node, nodes, overlapThreshold) ? FULL_WIDTH - visual.left : Math.min(FULL_WIDTH - visual.left, columnWidth * WIDTH_MULTIPLIER);\n    }\n  } catch (e_4_1) {\n    e_4 = {\n      error: e_4_1\n    };\n  } finally {\n    try {\n      if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n    } finally {\n      if (e_4) throw e_4.error;\n    }\n  }\n}\n\nfunction getColumnWidthMultiplier(node, nodes) {\n  if (!node.children.length) {\n    return 1;\n  }\n\n  var maxColumn = node.index + nodes.length;\n  var minColumn = node.children.reduce(function (min, c) {\n    return Math.min(min, c.index);\n  }, maxColumn);\n  return minColumn - node.index;\n}\n\nfunction getOverlappingIndices(node, nodes) {\n  var e_5, _a;\n\n  var indices = [];\n\n  try {\n    for (var nodes_2 = __values(nodes), nodes_2_1 = nodes_2.next(); !nodes_2_1.done; nodes_2_1 = nodes_2.next()) {\n      var other = nodes_2_1.value;\n\n      if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(node.start, node.end, other.start, other.end)) {\n        indices.push(other.index);\n      }\n    }\n  } catch (e_5_1) {\n    e_5 = {\n      error: e_5_1\n    };\n  } finally {\n    try {\n      if (nodes_2_1 && !nodes_2_1.done && (_a = nodes_2.return)) _a.call(nodes_2);\n    } finally {\n      if (e_5) throw e_5.error;\n    }\n  }\n\n  return indices;\n}\n\nfunction getNextIndex(node, nodes) {\n  var indices = getOverlappingIndices(node, nodes);\n  indices.sort();\n\n  for (var i = 0; i < indices.length; i++) {\n    if (i < indices[i]) {\n      return i;\n    }\n  }\n\n  return false;\n}\n\nfunction getOverlappingRange(node, nodes, indexMin, indexMax, returnFirstColumn) {\n  var e_6, _a;\n\n  if (returnFirstColumn === void 0) {\n    returnFirstColumn = false;\n  }\n\n  var overlapping = [];\n\n  try {\n    for (var nodes_3 = __values(nodes), nodes_3_1 = nodes_3.next(); !nodes_3_1.done; nodes_3_1 = nodes_3.next()) {\n      var other = nodes_3_1.value;\n\n      if (other.index >= indexMin && other.index <= indexMax && Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(node.start, node.end, other.start, other.end)) {\n        overlapping.push(other);\n      }\n    }\n  } catch (e_6_1) {\n    e_6 = {\n      error: e_6_1\n    };\n  } finally {\n    try {\n      if (nodes_3_1 && !nodes_3_1.done && (_a = nodes_3.return)) _a.call(nodes_3);\n    } finally {\n      if (e_6) throw e_6.error;\n    }\n  }\n\n  if (returnFirstColumn && overlapping.length > 0) {\n    var first_1 = overlapping.reduce(function (min, n) {\n      return Math.min(min, n.index);\n    }, overlapping[0].index);\n    return overlapping.filter(function (n) {\n      return n.index === first_1;\n    });\n  }\n\n  return overlapping;\n}\n\nfunction getParent(node, nodes) {\n  var e_7, _a;\n\n  var parent = null;\n\n  try {\n    for (var nodes_4 = __values(nodes), nodes_4_1 = nodes_4.next(); !nodes_4_1.done; nodes_4_1 = nodes_4.next()) {\n      var other = nodes_4_1.value;\n\n      if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(node.start, node.end, other.start, other.end) && (parent === null || other.index > parent.index)) {\n        parent = other;\n      }\n    }\n  } catch (e_7_1) {\n    e_7 = {\n      error: e_7_1\n    };\n  } finally {\n    try {\n      if (nodes_4_1 && !nodes_4_1.done && (_a = nodes_4.return)) _a.call(nodes_4);\n    } finally {\n      if (e_7) throw e_7.error;\n    }\n  }\n\n  return parent;\n}\n\nfunction hasFullWidth(node, nodes, overlapThreshold) {\n  var e_8, _a;\n\n  try {\n    for (var nodes_5 = __values(nodes), nodes_5_1 = nodes_5.next(); !nodes_5_1.done; nodes_5_1 = nodes_5.next()) {\n      var other = nodes_5_1.value;\n\n      if (other !== node && other.index > node.index && Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(node.start, addTime(node.start, overlapThreshold), other.start, other.end)) {\n        return false;\n      }\n    }\n  } catch (e_8_1) {\n    e_8 = {\n      error: e_8_1\n    };\n  } finally {\n    try {\n      if (nodes_5_1 && !nodes_5_1.done && (_a = nodes_5.return)) _a.call(nodes_5);\n    } finally {\n      if (e_8) throw e_8.error;\n    }\n  }\n\n  return true;\n}\n\nfunction getGroups(visuals, dayStart) {\n  var e_9, _a, e_10, _b;\n\n  var groups = [];\n\n  try {\n    for (var visuals_1 = __values(visuals), visuals_1_1 = visuals_1.next(); !visuals_1_1.done; visuals_1_1 = visuals_1.next()) {\n      var visual = visuals_1_1.value;\n\n      var _c = __read(Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getNormalizedRange\"])(visual.event, dayStart), 2),\n          start = _c[0],\n          end = _c[1];\n\n      var added = false;\n\n      try {\n        for (var groups_2 = (e_10 = void 0, __values(groups)), groups_2_1 = groups_2.next(); !groups_2_1.done; groups_2_1 = groups_2.next()) {\n          var group = groups_2_1.value;\n\n          if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"hasOverlap\"])(start, end, group.start, group.end)) {\n            group.visuals.push(visual);\n            group.end = Math.max(group.end, end);\n            added = true;\n            break;\n          }\n        }\n      } catch (e_10_1) {\n        e_10 = {\n          error: e_10_1\n        };\n      } finally {\n        try {\n          if (groups_2_1 && !groups_2_1.done && (_b = groups_2.return)) _b.call(groups_2);\n        } finally {\n          if (e_10) throw e_10.error;\n        }\n      }\n\n      if (!added) {\n        groups.push({\n          start: start,\n          end: end,\n          visuals: [visual]\n        });\n      }\n    }\n  } catch (e_9_1) {\n    e_9 = {\n      error: e_9_1\n    };\n  } finally {\n    try {\n      if (visuals_1_1 && !visuals_1_1.done && (_a = visuals_1.return)) _a.call(visuals_1);\n    } finally {\n      if (e_9) throw e_9.error;\n    }\n  }\n\n  return groups;\n}\n\nfunction getNode(visual, dayStart) {\n  var _a = __read(Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getNormalizedRange\"])(visual.event, dayStart), 2),\n      start = _a[0],\n      end = _a[1];\n\n  return {\n    parent: null,\n    sibling: true,\n    index: 0,\n    visual: visual,\n    start: start,\n    end: end,\n    children: []\n  };\n}\n\nfunction getMaxChildIndex(node) {\n  var e_11, _a;\n\n  var max = node.index;\n\n  try {\n    for (var _b = __values(node.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n      var child = _c.value;\n      var childMax = getMaxChildIndex(child);\n\n      if (childMax > max) {\n        max = childMax;\n      }\n    }\n  } catch (e_11_1) {\n    e_11 = {\n      error: e_11_1\n    };\n  } finally {\n    try {\n      if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n    } finally {\n      if (e_11) throw e_11.error;\n    }\n  }\n\n  return max;\n}\n\nfunction addTime(identifier, minutes) {\n  var removeMinutes = identifier % 100;\n  var totalMinutes = removeMinutes + minutes;\n  var addHours = Math.floor(totalMinutes / 60);\n  var addMinutes = totalMinutes % 60;\n  return identifier - removeMinutes + addHours * 100 + addMinutes;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/util/events.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VCalendar/util/events.ts ***!\n  \\*************************************************/\n/*! exports provided: parseEvent, isEventOn, isEventHiddenOn, isEventStart, isEventOverlapping */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseEvent\", function() { return parseEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEventOn\", function() { return isEventOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEventHiddenOn\", function() { return isEventHiddenOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEventStart\", function() { return isEventStart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEventOverlapping\", function() { return isEventOverlapping; });\n/* harmony import */ var _timestamp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n\nfunction parseEvent(input, index, startProperty, endProperty, timed, category) {\n  if (timed === void 0) {\n    timed = false;\n  }\n\n  if (category === void 0) {\n    category = false;\n  }\n\n  var startInput = input[startProperty];\n  var endInput = input[endProperty];\n  var startParsed = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"parseTimestamp\"])(startInput, true);\n  var endParsed = endInput ? Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"parseTimestamp\"])(endInput, true) : startParsed;\n  var start = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"isTimedless\"])(startInput) ? Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"updateHasTime\"])(startParsed, timed) : startParsed;\n  var end = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"isTimedless\"])(endInput) ? Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"updateHasTime\"])(endParsed, timed) : endParsed;\n  var startIdentifier = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"getDayIdentifier\"])(start);\n  var startTimestampIdentifier = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"getTimestampIdentifier\"])(start);\n  var endIdentifier = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"getDayIdentifier\"])(end);\n  var endOffset = start.hasTime ? 0 : 2359;\n  var endTimestampIdentifier = Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"getTimestampIdentifier\"])(end) + endOffset;\n  var allDay = !start.hasTime;\n  return {\n    input: input,\n    start: start,\n    startIdentifier: startIdentifier,\n    startTimestampIdentifier: startTimestampIdentifier,\n    end: end,\n    endIdentifier: endIdentifier,\n    endTimestampIdentifier: endTimestampIdentifier,\n    allDay: allDay,\n    index: index,\n    category: category\n  };\n}\nfunction isEventOn(event, dayIdentifier) {\n  return dayIdentifier >= event.startIdentifier && dayIdentifier <= event.endIdentifier;\n}\nfunction isEventHiddenOn(event, day) {\n  return event.end.time === '00:00' && event.end.date === day.date && event.start.date !== day.date;\n}\nfunction isEventStart(event, day, dayIdentifier, firstWeekday) {\n  return dayIdentifier === event.startIdentifier || firstWeekday === day.weekday && isEventOn(event, dayIdentifier);\n}\nfunction isEventOverlapping(event, startIdentifier, endIdentifier) {\n  return startIdentifier <= event.endIdentifier && endIdentifier >= event.startIdentifier;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/util/parser.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VCalendar/util/parser.ts ***!\n  \\*************************************************/\n/*! exports provided: parsedCategoryText, getParsedCategories */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsedCategoryText\", function() { return parsedCategoryText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getParsedCategories\", function() { return getParsedCategories; });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nfunction parsedCategoryText(category, categoryText) {\n  return typeof categoryText === 'string' && _typeof(category) === 'object' && category ? category[categoryText] : typeof categoryText === 'function' ? categoryText(category) : category;\n}\nfunction getParsedCategories(categories, categoryText) {\n  if (typeof categories === 'string') return categories.split(/\\s*,\\s/);\n\n  if (Array.isArray(categories)) {\n    return categories.map(function (category) {\n      if (typeof category === 'string') return category;\n      var categoryName = typeof category.categoryName === 'string' ? category.categoryName : parsedCategoryText(category, categoryText);\n      return __assign(__assign({}, category), {\n        categoryName: categoryName\n      });\n    });\n  }\n\n  return [];\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/util/props.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VCalendar/util/props.ts ***!\n  \\************************************************/\n/*! exports provided: default, validateNumber, validateWeekdays */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateNumber\", function() { return validateNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateWeekdays\", function() { return validateWeekdays; });\n/* harmony import */ var _timestamp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n/* harmony import */ var _modes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modes */ \"./src/components/VCalendar/modes/index.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  base: {\n    start: {\n      type: [String, Number, Date],\n      validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTimestamp\"],\n      default: function _default() {\n        return Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"parseDate\"])(new Date()).date;\n      }\n    },\n    end: {\n      type: [String, Number, Date],\n      validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTimestamp\"]\n    },\n    weekdays: {\n      type: [Array, String],\n      default: function _default() {\n        return [0, 1, 2, 3, 4, 5, 6];\n      },\n      validate: validateWeekdays\n    },\n    hideHeader: {\n      type: Boolean\n    },\n    shortWeekdays: {\n      type: Boolean,\n      default: true\n    },\n    weekdayFormat: {\n      type: Function,\n      default: null\n    },\n    dayFormat: {\n      type: Function,\n      default: null\n    }\n  },\n  intervals: {\n    maxDays: {\n      type: Number,\n      default: 7\n    },\n    shortIntervals: {\n      type: Boolean,\n      default: true\n    },\n    intervalHeight: {\n      type: [Number, String],\n      default: 48,\n      validate: validateNumber\n    },\n    intervalWidth: {\n      type: [Number, String],\n      default: 60,\n      validate: validateNumber\n    },\n    intervalMinutes: {\n      type: [Number, String],\n      default: 60,\n      validate: validateNumber\n    },\n    firstInterval: {\n      type: [Number, String],\n      default: 0,\n      validate: validateNumber\n    },\n    firstTime: {\n      type: [Number, String, Object],\n      validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTime\"]\n    },\n    intervalCount: {\n      type: [Number, String],\n      default: 24,\n      validate: validateNumber\n    },\n    intervalFormat: {\n      type: Function,\n      default: null\n    },\n    intervalStyle: {\n      type: Function,\n      default: null\n    },\n    showIntervalLabel: {\n      type: Function,\n      default: null\n    }\n  },\n  weeks: {\n    localeFirstDayOfYear: {\n      type: [String, Number],\n      default: 0\n    },\n    minWeeks: {\n      validate: validateNumber,\n      default: 1\n    },\n    shortMonths: {\n      type: Boolean,\n      default: true\n    },\n    showMonthOnFirst: {\n      type: Boolean,\n      default: true\n    },\n    showWeek: Boolean,\n    monthFormat: {\n      type: Function,\n      default: null\n    }\n  },\n  calendar: {\n    type: {\n      type: String,\n      default: 'month'\n    },\n    value: {\n      type: [String, Number, Date],\n      validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTimestamp\"]\n    }\n  },\n  category: {\n    categories: {\n      type: [Array, String],\n      default: ''\n    },\n    categoryText: {\n      type: [String, Function]\n    },\n    categoryHideDynamic: {\n      type: Boolean\n    },\n    categoryShowAll: {\n      type: Boolean\n    },\n    categoryForInvalid: {\n      type: String,\n      default: ''\n    },\n    categoryDays: {\n      type: [Number, String],\n      default: 1,\n      validate: function validate(x) {\n        return isFinite(parseInt(x)) && parseInt(x) > 0;\n      }\n    }\n  },\n  events: {\n    events: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    eventStart: {\n      type: String,\n      default: 'start'\n    },\n    eventEnd: {\n      type: String,\n      default: 'end'\n    },\n    eventTimed: {\n      type: [String, Function],\n      default: 'timed'\n    },\n    eventCategory: {\n      type: [String, Function],\n      default: 'category'\n    },\n    eventHeight: {\n      type: Number,\n      default: 20\n    },\n    eventColor: {\n      type: [String, Function],\n      default: 'primary'\n    },\n    eventTextColor: {\n      type: [String, Function],\n      default: 'white'\n    },\n    eventName: {\n      type: [String, Function],\n      default: 'name'\n    },\n    eventOverlapThreshold: {\n      type: [String, Number],\n      default: 60\n    },\n    eventOverlapMode: {\n      type: [String, Function],\n      default: 'stack',\n      validate: function validate(mode) {\n        return mode in _modes__WEBPACK_IMPORTED_MODULE_1__[\"CalendarEventOverlapModes\"] || typeof mode === 'function';\n      }\n    },\n    eventMore: {\n      type: Boolean,\n      default: true\n    },\n    eventMoreText: {\n      type: String,\n      default: '$vuetify.calendar.moreEvents'\n    },\n    eventRipple: {\n      type: [Boolean, Object],\n      default: null\n    },\n    eventMarginBottom: {\n      type: Number,\n      default: 1\n    }\n  }\n});\nfunction validateNumber(input) {\n  return isFinite(parseInt(input));\n}\nfunction validateWeekdays(input) {\n  if (typeof input === 'string') {\n    input = input.split(',');\n  }\n\n  if (Array.isArray(input)) {\n    var ints = input.map(function (x) {\n      return parseInt(x);\n    });\n\n    if (ints.length > _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"DAYS_IN_WEEK\"] || ints.length === 0) {\n      return false;\n    }\n\n    var visited = {};\n    var wrapped = false;\n\n    for (var i = 0; i < ints.length; i++) {\n      var x = ints[i];\n\n      if (!isFinite(x) || x < 0 || x >= _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"DAYS_IN_WEEK\"]) {\n        return false;\n      }\n\n      if (i > 0) {\n        var d = x - ints[i - 1];\n\n        if (d < 0) {\n          if (wrapped) {\n            return false;\n          }\n\n          wrapped = true;\n        } else if (d === 0) {\n          return false;\n        }\n      }\n\n      if (visited[x]) {\n        return false;\n      }\n\n      visited[x] = true;\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/util/timestamp.ts\":\n/*!****************************************************!*\\\n  !*** ./src/components/VCalendar/util/timestamp.ts ***!\n  \\****************************************************/\n/*! exports provided: PARSE_REGEX, PARSE_TIME, DAYS_IN_MONTH, DAYS_IN_MONTH_LEAP, DAYS_IN_MONTH_MIN, DAYS_IN_MONTH_MAX, MONTH_MAX, MONTH_MIN, DAY_MIN, DAYS_IN_WEEK, MINUTES_IN_HOUR, MINUTE_MAX, MINUTES_IN_DAY, HOURS_IN_DAY, HOUR_MAX, FIRST_HOUR, OFFSET_YEAR, OFFSET_MONTH, OFFSET_HOUR, OFFSET_TIME, getStartOfWeek, getEndOfWeek, getStartOfMonth, getEndOfMonth, validateTime, parseTime, validateTimestamp, parseTimestamp, parseDate, getDayIdentifier, getTimeIdentifier, getTimestampIdentifier, updateRelative, isTimedless, updateHasTime, updateMinutes, updateWeekday, updateFormatted, getWeekday, daysInMonth, copyTimestamp, padNumber, getDate, getTime, nextMinutes, nextDay, prevDay, relativeDays, diffMinutes, findWeekday, getWeekdaySkips, timestampToDate, createDayList, createIntervalList, createNativeLocaleFormatter */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PARSE_REGEX\", function() { return PARSE_REGEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PARSE_TIME\", function() { return PARSE_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH\", function() { return DAYS_IN_MONTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH_LEAP\", function() { return DAYS_IN_MONTH_LEAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH_MIN\", function() { return DAYS_IN_MONTH_MIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH_MAX\", function() { return DAYS_IN_MONTH_MAX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH_MAX\", function() { return MONTH_MAX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH_MIN\", function() { return MONTH_MIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAY_MIN\", function() { return DAY_MIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_WEEK\", function() { return DAYS_IN_WEEK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTES_IN_HOUR\", function() { return MINUTES_IN_HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTE_MAX\", function() { return MINUTE_MAX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTES_IN_DAY\", function() { return MINUTES_IN_DAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOURS_IN_DAY\", function() { return HOURS_IN_DAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOUR_MAX\", function() { return HOUR_MAX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FIRST_HOUR\", function() { return FIRST_HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OFFSET_YEAR\", function() { return OFFSET_YEAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OFFSET_MONTH\", function() { return OFFSET_MONTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OFFSET_HOUR\", function() { return OFFSET_HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OFFSET_TIME\", function() { return OFFSET_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStartOfWeek\", function() { return getStartOfWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEndOfWeek\", function() { return getEndOfWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStartOfMonth\", function() { return getStartOfMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEndOfMonth\", function() { return getEndOfMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateTime\", function() { return validateTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTime\", function() { return parseTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateTimestamp\", function() { return validateTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTimestamp\", function() { return parseTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDate\", function() { return parseDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDayIdentifier\", function() { return getDayIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeIdentifier\", function() { return getTimeIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimestampIdentifier\", function() { return getTimestampIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateRelative\", function() { return updateRelative; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTimedless\", function() { return isTimedless; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateHasTime\", function() { return updateHasTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateMinutes\", function() { return updateMinutes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateWeekday\", function() { return updateWeekday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateFormatted\", function() { return updateFormatted; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getWeekday\", function() { return getWeekday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"daysInMonth\", function() { return daysInMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copyTimestamp\", function() { return copyTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"padNumber\", function() { return padNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDate\", function() { return getDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTime\", function() { return getTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextMinutes\", function() { return nextMinutes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextDay\", function() { return nextDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prevDay\", function() { return prevDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"relativeDays\", function() { return relativeDays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"diffMinutes\", function() { return diffMinutes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findWeekday\", function() { return findWeekday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getWeekdaySkips\", function() { return getWeekdaySkips; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timestampToDate\", function() { return timestampToDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDayList\", function() { return createDayList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createIntervalList\", function() { return createIntervalList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNativeLocaleFormatter\", function() { return createNativeLocaleFormatter; });\n/* harmony import */ var _util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/dateTimeUtils */ \"./src/util/dateTimeUtils.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\nvar PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/;\nvar PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/;\nvar DAYS_IN_MONTH = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_MIN = 28;\nvar DAYS_IN_MONTH_MAX = 31;\nvar MONTH_MAX = 12;\nvar MONTH_MIN = 1;\nvar DAY_MIN = 1;\nvar DAYS_IN_WEEK = 7;\nvar MINUTES_IN_HOUR = 60;\nvar MINUTE_MAX = 59;\nvar MINUTES_IN_DAY = 24 * 60;\nvar HOURS_IN_DAY = 24;\nvar HOUR_MAX = 23;\nvar FIRST_HOUR = 0;\nvar OFFSET_YEAR = 10000;\nvar OFFSET_MONTH = 100;\nvar OFFSET_HOUR = 100;\nvar OFFSET_TIME = 10000;\nfunction getStartOfWeek(timestamp, weekdays, today) {\n  var start = copyTimestamp(timestamp);\n  findWeekday(start, weekdays[0], prevDay);\n  updateFormatted(start);\n\n  if (today) {\n    updateRelative(start, today, start.hasTime);\n  }\n\n  return start;\n}\nfunction getEndOfWeek(timestamp, weekdays, today) {\n  var end = copyTimestamp(timestamp);\n  findWeekday(end, weekdays[weekdays.length - 1]);\n  updateFormatted(end);\n\n  if (today) {\n    updateRelative(end, today, end.hasTime);\n  }\n\n  return end;\n}\nfunction getStartOfMonth(timestamp) {\n  var start = copyTimestamp(timestamp);\n  start.day = DAY_MIN;\n  updateWeekday(start);\n  updateFormatted(start);\n  return start;\n}\nfunction getEndOfMonth(timestamp) {\n  var end = copyTimestamp(timestamp);\n  end.day = daysInMonth(end.year, end.month);\n  updateWeekday(end);\n  updateFormatted(end);\n  return end;\n}\nfunction validateTime(input) {\n  return typeof input === 'number' && isFinite(input) || !!PARSE_TIME.exec(input) || _typeof(input) === 'object' && isFinite(input.hour) && isFinite(input.minute);\n}\nfunction parseTime(input) {\n  if (typeof input === 'number') {\n    // when a number is given, it's minutes since 12:00am\n    return input;\n  } else if (typeof input === 'string') {\n    // when a string is given, it's a hh:mm:ss format where seconds are optional\n    var parts = PARSE_TIME.exec(input);\n\n    if (!parts) {\n      return false;\n    }\n\n    return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0);\n  } else if (_typeof(input) === 'object') {\n    // when an object is given, it must have hour and minute\n    if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n      return false;\n    }\n\n    return input.hour * 60 + input.minute;\n  } else {\n    // unsupported type\n    return false;\n  }\n}\nfunction validateTimestamp(input) {\n  return typeof input === 'number' && isFinite(input) || typeof input === 'string' && !!PARSE_REGEX.exec(input) || input instanceof Date;\n}\nfunction parseTimestamp(input, required, now) {\n  if (required === void 0) {\n    required = false;\n  }\n\n  if (typeof input === 'number' && isFinite(input)) {\n    input = new Date(input);\n  }\n\n  if (input instanceof Date) {\n    var date = parseDate(input);\n\n    if (now) {\n      updateRelative(date, now, date.hasTime);\n    }\n\n    return date;\n  }\n\n  if (typeof input !== 'string') {\n    if (required) {\n      throw new Error(input + \" is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.\");\n    }\n\n    return null;\n  } // YYYY-MM-DD hh:mm:ss\n\n\n  var parts = PARSE_REGEX.exec(input);\n\n  if (!parts) {\n    if (required) {\n      throw new Error(input + \" is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.\");\n    }\n\n    return null;\n  }\n\n  var timestamp = {\n    date: input,\n    time: '',\n    year: parseInt(parts[1]),\n    month: parseInt(parts[2]),\n    day: parseInt(parts[4]) || 1,\n    hour: parseInt(parts[6]) || 0,\n    minute: parseInt(parts[8]) || 0,\n    weekday: 0,\n    hasDay: !!parts[4],\n    hasTime: !!(parts[6] && parts[8]),\n    past: false,\n    present: false,\n    future: false\n  };\n  updateWeekday(timestamp);\n  updateFormatted(timestamp);\n\n  if (now) {\n    updateRelative(timestamp, now, timestamp.hasTime);\n  }\n\n  return timestamp;\n}\nfunction parseDate(date) {\n  return updateFormatted({\n    date: '',\n    time: '',\n    year: date.getFullYear(),\n    month: date.getMonth() + 1,\n    day: date.getDate(),\n    weekday: date.getDay(),\n    hour: date.getHours(),\n    minute: date.getMinutes(),\n    hasDay: true,\n    hasTime: true,\n    past: false,\n    present: true,\n    future: false\n  });\n}\nfunction getDayIdentifier(timestamp) {\n  return timestamp.year * OFFSET_YEAR + timestamp.month * OFFSET_MONTH + timestamp.day;\n}\nfunction getTimeIdentifier(timestamp) {\n  return timestamp.hour * OFFSET_HOUR + timestamp.minute;\n}\nfunction getTimestampIdentifier(timestamp) {\n  return getDayIdentifier(timestamp) * OFFSET_TIME + getTimeIdentifier(timestamp);\n}\nfunction updateRelative(timestamp, now, time) {\n  if (time === void 0) {\n    time = false;\n  }\n\n  var a = getDayIdentifier(now);\n  var b = getDayIdentifier(timestamp);\n  var present = a === b;\n\n  if (timestamp.hasTime && time && present) {\n    a = getTimeIdentifier(now);\n    b = getTimeIdentifier(timestamp);\n    present = a === b;\n  }\n\n  timestamp.past = b < a;\n  timestamp.present = present;\n  timestamp.future = b > a;\n  return timestamp;\n}\nfunction isTimedless(input) {\n  return input instanceof Date || typeof input === 'number' && isFinite(input);\n}\nfunction updateHasTime(timestamp, hasTime, now) {\n  if (timestamp.hasTime !== hasTime) {\n    timestamp.hasTime = hasTime;\n\n    if (!hasTime) {\n      timestamp.hour = HOUR_MAX;\n      timestamp.minute = MINUTE_MAX;\n      timestamp.time = getTime(timestamp);\n    }\n\n    if (now) {\n      updateRelative(timestamp, now, timestamp.hasTime);\n    }\n  }\n\n  return timestamp;\n}\nfunction updateMinutes(timestamp, minutes, now) {\n  timestamp.hasTime = true;\n  timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR);\n  timestamp.minute = minutes % MINUTES_IN_HOUR;\n  timestamp.time = getTime(timestamp);\n\n  if (now) {\n    updateRelative(timestamp, now, true);\n  }\n\n  return timestamp;\n}\nfunction updateWeekday(timestamp) {\n  timestamp.weekday = getWeekday(timestamp);\n  return timestamp;\n}\nfunction updateFormatted(timestamp) {\n  timestamp.time = getTime(timestamp);\n  timestamp.date = getDate(timestamp);\n  return timestamp;\n}\nfunction getWeekday(timestamp) {\n  if (timestamp.hasDay) {\n    var _ = Math.floor;\n    var k = timestamp.day;\n    var m = (timestamp.month + 9) % MONTH_MAX + 1;\n\n    var C = _(timestamp.year / 100);\n\n    var Y = timestamp.year % 100 - (timestamp.month <= 2 ? 1 : 0);\n    return ((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7 + 7) % 7;\n  }\n\n  return timestamp.weekday;\n}\nfunction daysInMonth(year, month) {\n  return Object(_util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_0__[\"isLeapYear\"])(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month];\n}\nfunction copyTimestamp(timestamp) {\n  var date = timestamp.date,\n      time = timestamp.time,\n      year = timestamp.year,\n      month = timestamp.month,\n      day = timestamp.day,\n      weekday = timestamp.weekday,\n      hour = timestamp.hour,\n      minute = timestamp.minute,\n      hasDay = timestamp.hasDay,\n      hasTime = timestamp.hasTime,\n      past = timestamp.past,\n      present = timestamp.present,\n      future = timestamp.future;\n  return {\n    date: date,\n    time: time,\n    year: year,\n    month: month,\n    day: day,\n    weekday: weekday,\n    hour: hour,\n    minute: minute,\n    hasDay: hasDay,\n    hasTime: hasTime,\n    past: past,\n    present: present,\n    future: future\n  };\n}\nfunction padNumber(x, length) {\n  var padded = String(x);\n\n  while (padded.length < length) {\n    padded = '0' + padded;\n  }\n\n  return padded;\n}\nfunction getDate(timestamp) {\n  var str = padNumber(timestamp.year, 4) + \"-\" + padNumber(timestamp.month, 2);\n  if (timestamp.hasDay) str += \"-\" + padNumber(timestamp.day, 2);\n  return str;\n}\nfunction getTime(timestamp) {\n  if (!timestamp.hasTime) {\n    return '';\n  }\n\n  return padNumber(timestamp.hour, 2) + \":\" + padNumber(timestamp.minute, 2);\n}\nfunction nextMinutes(timestamp, minutes) {\n  timestamp.minute += minutes;\n\n  while (timestamp.minute > MINUTES_IN_HOUR) {\n    timestamp.minute -= MINUTES_IN_HOUR;\n    timestamp.hour++;\n\n    if (timestamp.hour >= HOURS_IN_DAY) {\n      nextDay(timestamp);\n      timestamp.hour = FIRST_HOUR;\n    }\n  }\n\n  return timestamp;\n}\nfunction nextDay(timestamp) {\n  timestamp.day++;\n  timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK;\n\n  if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n    timestamp.day = DAY_MIN;\n    timestamp.month++;\n\n    if (timestamp.month > MONTH_MAX) {\n      timestamp.month = MONTH_MIN;\n      timestamp.year++;\n    }\n  }\n\n  return timestamp;\n}\nfunction prevDay(timestamp) {\n  timestamp.day--;\n  timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK;\n\n  if (timestamp.day < DAY_MIN) {\n    timestamp.month--;\n\n    if (timestamp.month < MONTH_MIN) {\n      timestamp.year--;\n      timestamp.month = MONTH_MAX;\n    }\n\n    timestamp.day = daysInMonth(timestamp.year, timestamp.month);\n  }\n\n  return timestamp;\n}\nfunction relativeDays(timestamp, mover, days) {\n  if (mover === void 0) {\n    mover = nextDay;\n  }\n\n  if (days === void 0) {\n    days = 1;\n  }\n\n  while (--days >= 0) {\n    mover(timestamp);\n  }\n\n  return timestamp;\n}\nfunction diffMinutes(min, max) {\n  var Y = (max.year - min.year) * 525600;\n  var M = (max.month - min.month) * 43800;\n  var D = (max.day - min.day) * 1440;\n  var h = (max.hour - min.hour) * 60;\n  var m = max.minute - min.minute;\n  return Y + M + D + h + m;\n}\nfunction findWeekday(timestamp, weekday, mover, maxDays) {\n  if (mover === void 0) {\n    mover = nextDay;\n  }\n\n  if (maxDays === void 0) {\n    maxDays = 6;\n  }\n\n  while (timestamp.weekday !== weekday && --maxDays >= 0) {\n    mover(timestamp);\n  }\n\n  return timestamp;\n}\nfunction getWeekdaySkips(weekdays) {\n  var skips = [1, 1, 1, 1, 1, 1, 1];\n  var filled = [0, 0, 0, 0, 0, 0, 0];\n\n  for (var i = 0; i < weekdays.length; i++) {\n    filled[weekdays[i]] = 1;\n  }\n\n  for (var k = 0; k < DAYS_IN_WEEK; k++) {\n    var skip = 1;\n\n    for (var j = 1; j < DAYS_IN_WEEK; j++) {\n      var next = (k + j) % DAYS_IN_WEEK;\n\n      if (filled[next]) {\n        break;\n      }\n\n      skip++;\n    }\n\n    skips[k] = filled[k] * skip;\n  }\n\n  return skips;\n}\nfunction timestampToDate(timestamp) {\n  var time = padNumber(timestamp.hour, 2) + \":\" + padNumber(timestamp.minute, 2);\n  var date = timestamp.date;\n  return new Date(date + \"T\" + time + \":00+00:00\");\n}\nfunction createDayList(start, end, now, weekdaySkips, max, min) {\n  if (max === void 0) {\n    max = 42;\n  }\n\n  if (min === void 0) {\n    min = 0;\n  }\n\n  var stop = getDayIdentifier(end);\n  var days = [];\n  var current = copyTimestamp(start);\n  var currentIdentifier = 0;\n  var stopped = currentIdentifier === stop;\n\n  if (stop < getDayIdentifier(start)) {\n    throw new Error('End date is earlier than start date.');\n  }\n\n  while ((!stopped || days.length < min) && days.length < max) {\n    currentIdentifier = getDayIdentifier(current);\n    stopped = stopped || currentIdentifier === stop;\n\n    if (weekdaySkips[current.weekday] === 0) {\n      current = nextDay(current);\n      continue;\n    }\n\n    var day = copyTimestamp(current);\n    updateFormatted(day);\n    updateRelative(day, now);\n    days.push(day);\n    current = relativeDays(current, nextDay, weekdaySkips[current.weekday]);\n  }\n\n  if (!days.length) throw new Error('No dates found using specified start date, end date, and weekdays.');\n  return days;\n}\nfunction createIntervalList(timestamp, first, minutes, count, now) {\n  var intervals = [];\n\n  for (var i = 0; i < count; i++) {\n    var mins = first + i * minutes;\n    var int = copyTimestamp(timestamp);\n    intervals.push(updateMinutes(int, mins, now));\n  }\n\n  return intervals;\n}\nfunction createNativeLocaleFormatter(locale, getOptions) {\n  var emptyFormatter = function emptyFormatter(_t, _s) {\n    return '';\n  };\n\n  if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n    return emptyFormatter;\n  }\n\n  return function (timestamp, short) {\n    try {\n      var intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short));\n      return intlFormatter.format(timestampToDate(timestamp));\n    } catch (e) {\n      return '';\n    }\n  };\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCard/VCard.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VCard/VCard.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCard/VCard.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VCard/VCard.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCard_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCard.sass */ \"./src/components/VCard/VCard.sass\");\n/* harmony import */ var _VCard_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCard_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony import */ var _mixins_loadable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/loadable */ \"./src/mixins/loadable/index.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Mixins\n\n\n // Helpers\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_loadable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n  name: 'v-card',\n  props: {\n    flat: Boolean,\n    hover: Boolean,\n    img: String,\n    link: Boolean,\n    loaderHeight: {\n      type: [Number, String],\n      default: 4\n    },\n    raised: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign({\n        'v-card': true\n      }, _mixins_routable__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.classes.call(this)), {\n        'v-card--flat': this.flat,\n        'v-card--hover': this.hover,\n        'v-card--link': this.isClickable,\n        'v-card--loading': this.loading,\n        'v-card--disabled': this.disabled,\n        'v-card--raised': this.raised\n      }), _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this));\n    },\n    styles: function styles() {\n      var style = __assign({}, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this));\n\n      if (this.img) {\n        style.background = \"url(\\\"\" + this.img + \"\\\") center center / cover no-repeat\";\n      }\n\n      return style;\n    }\n  },\n  methods: {\n    genProgress: function genProgress() {\n      var render = _mixins_loadable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genProgress.call(this);\n      if (!render) return null;\n      return this.$createElement('div', {\n        staticClass: 'v-card__progress',\n        key: 'progress'\n      }, [render]);\n    }\n  },\n  render: function render(h) {\n    var _a = this.generateRouteLink(),\n        tag = _a.tag,\n        data = _a.data;\n\n    data.style = this.styles;\n\n    if (this.isClickable) {\n      data.attrs = data.attrs || {};\n      data.attrs.tabindex = 0;\n    }\n\n    return h(tag, this.setBackgroundColor(this.color, data), [this.genProgress(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this)]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCard/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VCard/index.ts ***!\n  \\***************************************/\n/*! exports provided: VCard, VCardActions, VCardSubtitle, VCardText, VCardTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCardActions\", function() { return VCardActions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCardSubtitle\", function() { return VCardSubtitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCardText\", function() { return VCardText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCardTitle\", function() { return VCardTitle; });\n/* harmony import */ var _VCard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCard */ \"./src/components/VCard/VCard.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCard\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\nvar VCardActions = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('v-card__actions');\nvar VCardSubtitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('v-card__subtitle');\nvar VCardText = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('v-card__text');\nvar VCardTitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('v-card__title');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VCard: _VCard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VCardActions: VCardActions,\n    VCardSubtitle: VCardSubtitle,\n    VCardText: VCardText,\n    VCardTitle: VCardTitle\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/VCarousel.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VCarousel/VCarousel.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/VCarousel.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VCarousel/VCarousel.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCarousel_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCarousel.sass */ \"./src/components/VCarousel/VCarousel.sass\");\n/* harmony import */ var _VCarousel_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCarousel_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VWindow/VWindow */ \"./src/components/VWindow/VWindow.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VProgressLinear__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VProgressLinear */ \"./src/components/VProgressLinear/index.ts\");\n/* harmony import */ var _mixins_button_group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/button-group */ \"./src/mixins/button-group/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n\n\n // Mixins\n// TODO: Move this into core components v2.0\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-carousel',\n  props: {\n    continuous: {\n      type: Boolean,\n      default: true\n    },\n    cycle: Boolean,\n    delimiterIcon: {\n      type: String,\n      default: '$delimiter'\n    },\n    height: {\n      type: [Number, String],\n      default: 500\n    },\n    hideDelimiters: Boolean,\n    hideDelimiterBackground: Boolean,\n    interval: {\n      type: [Number, String],\n      default: 6000,\n      validator: function validator(value) {\n        return value > 0;\n      }\n    },\n    mandatory: {\n      type: Boolean,\n      default: true\n    },\n    progress: Boolean,\n    progressColor: String,\n    showArrows: {\n      type: Boolean,\n      default: true\n    },\n    verticalDelimiters: {\n      type: String,\n      default: undefined\n    }\n  },\n  // pass down the parent's theme\n  provide: function provide() {\n    return {\n      parentTheme: this.theme\n    };\n  },\n  data: function data() {\n    return {\n      internalHeight: this.height,\n      slideTimeout: undefined\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-carousel': true,\n        'v-carousel--hide-delimiter-background': this.hideDelimiterBackground,\n        'v-carousel--vertical-delimiters': this.isVertical\n      });\n    },\n    isDark: function isDark() {\n      return this.dark || !this.light;\n    },\n    isVertical: function isVertical() {\n      return this.verticalDelimiters != null;\n    }\n  },\n  watch: {\n    internalValue: 'restartTimeout',\n    interval: 'restartTimeout',\n    height: function height(val, oldVal) {\n      if (val === oldVal || !val) return;\n      this.internalHeight = val;\n    },\n    cycle: function cycle(val) {\n      if (val) {\n        this.restartTimeout();\n      } else {\n        clearTimeout(this.slideTimeout);\n        this.slideTimeout = undefined;\n      }\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('hide-controls')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"breaking\"])('hide-controls', ':show-arrows=\"false\"', this);\n    }\n  },\n  mounted: function mounted() {\n    this.startTimeout();\n  },\n  methods: {\n    genControlIcons: function genControlIcons() {\n      if (this.isVertical) return null;\n      return _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genControlIcons.call(this);\n    },\n    genDelimiters: function genDelimiters() {\n      return this.$createElement('div', {\n        staticClass: 'v-carousel__controls',\n        style: {\n          left: this.verticalDelimiters === 'left' && this.isVertical ? 0 : 'auto',\n          right: this.verticalDelimiters === 'right' ? 0 : 'auto'\n        }\n      }, [this.genItems()]);\n    },\n    genItems: function genItems() {\n      var _this = this;\n\n      var length = this.items.length;\n      var children = [];\n\n      for (var i = 0; i < length; i++) {\n        var child = this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n          staticClass: 'v-carousel__controls__item',\n          attrs: {\n            'aria-label': this.$vuetify.lang.t('$vuetify.carousel.ariaLabel.delimiter', i + 1, length)\n          },\n          props: {\n            icon: true,\n            small: true,\n            value: this.getValue(this.items[i], i)\n          },\n          key: i\n        }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          props: {\n            size: 18\n          }\n        }, this.delimiterIcon)]);\n        children.push(child);\n      }\n\n      return this.$createElement(_mixins_button_group__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n        props: {\n          value: this.internalValue,\n          mandatory: this.mandatory\n        },\n        on: {\n          change: function change(val) {\n            _this.internalValue = val;\n          }\n        }\n      }, children);\n    },\n    genProgress: function genProgress() {\n      return this.$createElement(_VProgressLinear__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n        staticClass: 'v-carousel__progress',\n        props: {\n          color: this.progressColor,\n          value: (this.internalIndex + 1) / this.items.length * 100\n        }\n      });\n    },\n    restartTimeout: function restartTimeout() {\n      this.slideTimeout && clearTimeout(this.slideTimeout);\n      this.slideTimeout = undefined;\n      window.requestAnimationFrame(this.startTimeout);\n    },\n    startTimeout: function startTimeout() {\n      if (!this.cycle) return;\n      this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000);\n    }\n  },\n  render: function render(h) {\n    var render = _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.render.call(this, h);\n    render.data.style = \"height: \" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"convertToUnit\"])(this.height) + \";\";\n    /* istanbul ignore else */\n\n    if (!this.hideDelimiters) {\n      render.children.push(this.genDelimiters());\n    }\n    /* istanbul ignore else */\n\n\n    if (this.progress || this.progressColor) {\n      render.children.push(this.genProgress());\n    }\n\n    return render;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/VCarouselItem.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VCarousel/VCarouselItem.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VWindow/VWindowItem */ \"./src/components/VWindow/VWindowItem.ts\");\n/* harmony import */ var _VImg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VImg */ \"./src/components/VImg/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Extensions\n\n\n // Components\n\n // Utilities\n\n\n\n // Types\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-carousel-item',\n  inject: {\n    parentTheme: {\n      default: {\n        isDark: false\n      }\n    }\n  },\n  // pass down the parent's theme\n  provide: function provide() {\n    return {\n      theme: this.parentTheme\n    };\n  },\n  inheritAttrs: false,\n  methods: {\n    genDefaultSlot: function genDefaultSlot() {\n      return [this.$createElement(_VImg__WEBPACK_IMPORTED_MODULE_1__[\"VImg\"], {\n        staticClass: 'v-carousel__item',\n        props: __assign(__assign({}, this.$attrs), {\n          height: this.windowGroup.internalHeight\n        }),\n        on: this.$listeners,\n        scopedSlots: {\n          placeholder: this.$scopedSlots.placeholder\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this))];\n    },\n    genWindowItem: function genWindowItem() {\n      var _a = this.generateRouteLink(),\n          tag = _a.tag,\n          data = _a.data;\n\n      data.staticClass = 'v-window-item';\n      data.directives.push({\n        name: 'show',\n        value: this.isActive\n      });\n      return this.$createElement(tag, data, this.genDefaultSlot());\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VCarousel/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VCarousel, VCarouselItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCarousel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCarousel */ \"./src/components/VCarousel/VCarousel.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarousel\", function() { return _VCarousel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VCarouselItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCarouselItem */ \"./src/components/VCarousel/VCarouselItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselItem\", function() { return _VCarouselItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VCarousel: _VCarousel__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VCarouselItem: _VCarouselItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/VCheckbox.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VCheckbox/VCheckbox.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/VCheckbox.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VCheckbox/VCheckbox.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCheckbox_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCheckbox.sass */ \"./src/components/VCheckbox/VCheckbox.sass\");\n/* harmony import */ var _VCheckbox_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCheckbox_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../styles/components/_selection-controls.sass */ \"./src/styles/components/_selection-controls.sass\");\n/* harmony import */ var _styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _mixins_selectable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/selectable */ \"./src/mixins/selectable/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}; // Styles\n\n\n\n // Components\n\n\n // Mixins\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_selectable__WEBPACK_IMPORTED_MODULE_4__[\"default\"].extend({\n  name: 'v-checkbox',\n  props: {\n    indeterminate: Boolean,\n    indeterminateIcon: {\n      type: String,\n      default: '$checkboxIndeterminate'\n    },\n    offIcon: {\n      type: String,\n      default: '$checkboxOff'\n    },\n    onIcon: {\n      type: String,\n      default: '$checkboxOn'\n    }\n  },\n  data: function data() {\n    return {\n      inputIndeterminate: this.indeterminate\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.classes.call(this)), {\n        'v-input--selection-controls': true,\n        'v-input--checkbox': true,\n        'v-input--indeterminate': this.inputIndeterminate\n      });\n    },\n    computedIcon: function computedIcon() {\n      if (this.inputIndeterminate) {\n        return this.indeterminateIcon;\n      } else if (this.isActive) {\n        return this.onIcon;\n      } else {\n        return this.offIcon;\n      }\n    },\n    // Do not return undefined if disabled,\n    // according to spec, should still show\n    // a color when disabled and active\n    validationState: function validationState() {\n      if (this.isDisabled && !this.inputIndeterminate) return undefined;\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor !== null) return this.computedColor;\n      return undefined;\n    }\n  },\n  watch: {\n    indeterminate: function indeterminate(val) {\n      var _this = this; // https://github.com/vuetifyjs/vuetify/issues/8270\n\n\n      this.$nextTick(function () {\n        return _this.inputIndeterminate = val;\n      });\n    },\n    inputIndeterminate: function inputIndeterminate(val) {\n      this.$emit('update:indeterminate', val);\n    },\n    isActive: function isActive() {\n      if (!this.indeterminate) return;\n      this.inputIndeterminate = false;\n    }\n  },\n  methods: {\n    genCheckbox: function genCheckbox() {\n      var _a = this.attrs$,\n          title = _a.title,\n          checkboxAttrs = __rest(_a, [\"title\"]);\n\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], this.setTextColor(this.validationState, {\n        props: {\n          dense: this.dense,\n          dark: this.dark,\n          light: this.light\n        }\n      }), this.computedIcon), this.genInput('checkbox', __assign(__assign({}, checkboxAttrs), {\n        'aria-checked': this.inputIndeterminate ? 'mixed' : this.isActive.toString()\n      })), this.genRipple(this.setTextColor(this.rippleState))]);\n    },\n    genDefaultSlot: function genDefaultSlot() {\n      return [this.genCheckbox(), this.genLabel()];\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/VSimpleCheckbox.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VCheckbox/VSimpleCheckbox.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/VSimpleCheckbox.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VCheckbox/VSimpleCheckbox.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSimpleCheckbox_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSimpleCheckbox.sass */ \"./src/components/VCheckbox/VSimpleCheckbox.sass\");\n/* harmony import */ var _VSimpleCheckbox_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSimpleCheckbox_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n\n // Mixins\n\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend({\n  name: 'v-simple-checkbox',\n  functional: true,\n  directives: {\n    Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  props: __assign(__assign(__assign({}, _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"].options.props), _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.props), {\n    disabled: Boolean,\n    ripple: {\n      type: Boolean,\n      default: true\n    },\n    value: Boolean,\n    indeterminate: Boolean,\n    indeterminateIcon: {\n      type: String,\n      default: '$checkboxIndeterminate'\n    },\n    onIcon: {\n      type: String,\n      default: '$checkboxOn'\n    },\n    offIcon: {\n      type: String,\n      default: '$checkboxOff'\n    }\n  }),\n  render: function render(h, _a) {\n    var props = _a.props,\n        data = _a.data,\n        listeners = _a.listeners;\n    var children = [];\n    var icon = props.offIcon;\n    if (props.indeterminate) icon = props.indeterminateIcon;else if (props.value) icon = props.onIcon;\n    children.push(h(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"VIcon\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"].options.methods.setTextColor(props.value && props.color, {\n      props: {\n        disabled: props.disabled,\n        dark: props.dark,\n        light: props.light\n      }\n    }), icon));\n\n    if (props.ripple && !props.disabled) {\n      var ripple = h('div', _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"].options.methods.setTextColor(props.color, {\n        staticClass: 'v-input--selection-controls__ripple',\n        directives: [{\n          def: _directives_ripple__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n          name: 'ripple',\n          value: {\n            center: true\n          }\n        }]\n      }));\n      children.push(ripple);\n    }\n\n    return h('div', Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(data, {\n      class: {\n        'v-simple-checkbox': true,\n        'v-simple-checkbox--disabled': props.disabled\n      },\n      on: {\n        click: function click(e) {\n          e.stopPropagation();\n\n          if (data.on && data.on.input && !props.disabled) {\n            Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"wrapInArray\"])(data.on.input).forEach(function (f) {\n              return f(!props.value);\n            });\n          }\n        }\n      }\n    }), [h('div', {\n      staticClass: 'v-input--selection-controls__input'\n    }, children)]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VCheckbox/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VCheckbox, VSimpleCheckbox, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCheckbox */ \"./src/components/VCheckbox/VCheckbox.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCheckbox\", function() { return _VCheckbox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VSimpleCheckbox */ \"./src/components/VCheckbox/VSimpleCheckbox.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSimpleCheckbox\", function() { return _VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VCheckbox: _VCheckbox__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VSimpleCheckbox: _VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VChip/VChip.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VChip/VChip.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VChip/VChip.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VChip/VChip.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VChip_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VChip.sass */ \"./src/components/VChip/VChip.sass\");\n/* harmony import */ var _VChip_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VChip_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\n/* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../mixins/sizeable */ \"./src/mixins/sizeable/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Styles\n\n\n\n // Components\n\n\n // Mixins\n\n\n\n\n\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_5__[\"factory\"])('chipGroup'), Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__[\"factory\"])('inputValue')).extend({\n  name: 'v-chip',\n  props: {\n    active: {\n      type: Boolean,\n      default: true\n    },\n    activeClass: {\n      type: String,\n      default: function _default() {\n        if (!this.chipGroup) return '';\n        return this.chipGroup.activeClass;\n      }\n    },\n    close: Boolean,\n    closeIcon: {\n      type: String,\n      default: '$delete'\n    },\n    closeLabel: {\n      type: String,\n      default: '$vuetify.close'\n    },\n    disabled: Boolean,\n    draggable: Boolean,\n    filter: Boolean,\n    filterIcon: {\n      type: String,\n      default: '$complete'\n    },\n    label: Boolean,\n    link: Boolean,\n    outlined: Boolean,\n    pill: Boolean,\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    textColor: String,\n    value: null\n  },\n  data: function data() {\n    return {\n      proxyClass: 'v-chip--active'\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign(__assign(__assign({\n        'v-chip': true\n      }, _mixins_routable__WEBPACK_IMPORTED_MODULE_8__[\"default\"].options.computed.classes.call(this)), {\n        'v-chip--clickable': this.isClickable,\n        'v-chip--disabled': this.disabled,\n        'v-chip--draggable': this.draggable,\n        'v-chip--label': this.label,\n        'v-chip--link': this.isLink,\n        'v-chip--no-color': !this.color,\n        'v-chip--outlined': this.outlined,\n        'v-chip--pill': this.pill,\n        'v-chip--removable': this.hasClose\n      }), this.themeClasses), this.sizeableClasses), this.groupClasses);\n    },\n    hasClose: function hasClose() {\n      return Boolean(this.close);\n    },\n    isClickable: function isClickable() {\n      return Boolean(_mixins_routable__WEBPACK_IMPORTED_MODULE_8__[\"default\"].options.computed.isClickable.call(this) || this.chipGroup);\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    var breakingProps = [['outline', 'outlined'], ['selected', 'input-value'], ['value', 'active'], ['@input', '@active.sync']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(function (_a) {\n      var _b = __read(_a, 2),\n          original = _b[0],\n          replacement = _b[1];\n\n      if (_this.$attrs.hasOwnProperty(original)) Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"breaking\"])(original, replacement, _this);\n    });\n  },\n  methods: {\n    click: function click(e) {\n      this.$emit('click', e);\n      this.chipGroup && this.toggle();\n    },\n    genFilter: function genFilter() {\n      var children = [];\n\n      if (this.isActive) {\n        children.push(this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          staticClass: 'v-chip__filter',\n          props: {\n            left: true\n          }\n        }, this.filterIcon));\n      }\n\n      return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_2__[\"VExpandXTransition\"], children);\n    },\n    genClose: function genClose() {\n      var _this = this;\n\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        staticClass: 'v-chip__close',\n        props: {\n          right: true,\n          size: 18\n        },\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.closeLabel)\n        },\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n            e.preventDefault();\n\n            _this.$emit('click:close');\n\n            _this.$emit('update:active', false);\n          }\n        }\n      }, this.closeIcon);\n    },\n    genContent: function genContent() {\n      return this.$createElement('span', {\n        staticClass: 'v-chip__content'\n      }, [this.filter && this.genFilter(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"getSlot\"])(this), this.hasClose && this.genClose()]);\n    }\n  },\n  render: function render(h) {\n    var children = [this.genContent()];\n\n    var _a = this.generateRouteLink(),\n        tag = _a.tag,\n        data = _a.data;\n\n    data.attrs = __assign(__assign({}, data.attrs), {\n      draggable: this.draggable ? 'true' : undefined,\n      tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs.tabindex\n    });\n    data.directives.push({\n      name: 'show',\n      value: this.active\n    });\n    data = this.setBackgroundColor(this.color, data);\n    var color = this.textColor || this.outlined && this.color;\n    return h(tag, this.setTextColor(color, data), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VChip/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VChip/index.ts ***!\n  \\***************************************/\n/*! exports provided: VChip, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VChip */ \"./src/components/VChip/VChip.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VChip\", function() { return _VChip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VChip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VChipGroup/VChipGroup.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VChipGroup/VChipGroup.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VChipGroup/VChipGroup.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VChipGroup/VChipGroup.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VChipGroup_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VChipGroup.sass */ \"./src/components/VChipGroup/VChipGroup.sass\");\n/* harmony import */ var _VChipGroup_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VChipGroup_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSlideGroup/VSlideGroup */ \"./src/components/VSlideGroup/VSlideGroup.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Mixins\n\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseSlideGroup\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-chip-group',\n  provide: function provide() {\n    return {\n      chipGroup: this\n    };\n  },\n  props: {\n    column: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseSlideGroup\"].options.computed.classes.call(this)), {\n        'v-chip-group': true,\n        'v-chip-group--column': this.column\n      });\n    }\n  },\n  watch: {\n    column: function column(val) {\n      if (val) this.scrollOffset = 0;\n      this.$nextTick(this.onResize);\n    }\n  },\n  methods: {\n    genData: function genData() {\n      return this.setTextColor(this.color, __assign({}, _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseSlideGroup\"].options.methods.genData.call(this)));\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VChipGroup/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VChipGroup/index.ts ***!\n  \\********************************************/\n/*! exports provided: VChipGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VChipGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VChipGroup */ \"./src/components/VChipGroup/VChipGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VChipGroup\", function() { return _VChipGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VChipGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPicker.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPicker.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPicker.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPicker.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VColorPicker_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VColorPicker.sass */ \"./src/components/VColorPicker/VColorPicker.sass\");\n/* harmony import */ var _VColorPicker_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VColorPicker_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet/VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony import */ var _VColorPickerPreview__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VColorPickerPreview */ \"./src/components/VColorPicker/VColorPickerPreview.ts\");\n/* harmony import */ var _VColorPickerCanvas__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VColorPickerCanvas */ \"./src/components/VColorPicker/VColorPickerCanvas.ts\");\n/* harmony import */ var _VColorPickerEdit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VColorPickerEdit */ \"./src/components/VColorPicker/VColorPickerEdit.ts\");\n/* harmony import */ var _VColorPickerSwatches__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VColorPickerSwatches */ \"./src/components/VColorPicker/VColorPickerSwatches.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./src/components/VColorPicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n\n\n\n\n // Helpers\n\n\n\n // Mixins\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_mixins_elevatable__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_10__[\"default\"]).extend({\n  name: 'v-color-picker',\n  props: {\n    canvasHeight: {\n      type: [String, Number],\n      default: 150\n    },\n    disabled: Boolean,\n    dotSize: {\n      type: [Number, String],\n      default: 10\n    },\n    flat: Boolean,\n    hideCanvas: Boolean,\n    hideSliders: Boolean,\n    hideInputs: Boolean,\n    hideModeSwitch: Boolean,\n    mode: {\n      type: String,\n      default: 'rgba',\n      validator: function validator(v) {\n        return Object.keys(_VColorPickerEdit__WEBPACK_IMPORTED_MODULE_4__[\"modes\"]).includes(v);\n      }\n    },\n    showSwatches: Boolean,\n    swatches: Array,\n    swatchesMaxHeight: {\n      type: [Number, String],\n      default: 150\n    },\n    value: {\n      type: [Object, String]\n    },\n    width: {\n      type: [Number, String],\n      default: 300\n    }\n  },\n  data: function data() {\n    return {\n      internalValue: Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"fromRGBA\"])({\n        r: 255,\n        g: 0,\n        b: 0,\n        a: 1\n      })\n    };\n  },\n  computed: {\n    hideAlpha: function hideAlpha() {\n      if (!this.value) return false;\n      return !Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"hasAlpha\"])(this.value);\n    }\n  },\n  watch: {\n    value: {\n      handler: function handler(color) {\n        this.updateColor(Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"parseColor\"])(color, this.internalValue));\n      },\n      immediate: true\n    }\n  },\n  methods: {\n    updateColor: function updateColor(color) {\n      this.internalValue = color;\n      var value = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"extractColor\"])(this.internalValue, this.value);\n\n      if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"deepEqual\"])(value, this.value)) {\n        this.$emit('input', value);\n        this.$emit('update:color', this.internalValue);\n      }\n    },\n    genCanvas: function genCanvas() {\n      return this.$createElement(_VColorPickerCanvas__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        props: {\n          color: this.internalValue,\n          disabled: this.disabled,\n          dotSize: this.dotSize,\n          width: this.width,\n          height: this.canvasHeight\n        },\n        on: {\n          'update:color': this.updateColor\n        }\n      });\n    },\n    genControls: function genControls() {\n      return this.$createElement('div', {\n        staticClass: 'v-color-picker__controls'\n      }, [!this.hideSliders && this.genPreview(), !this.hideInputs && this.genEdit()]);\n    },\n    genEdit: function genEdit() {\n      var _this = this;\n\n      return this.$createElement(_VColorPickerEdit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n        props: {\n          color: this.internalValue,\n          disabled: this.disabled,\n          hideAlpha: this.hideAlpha,\n          hideModeSwitch: this.hideModeSwitch,\n          mode: this.mode\n        },\n        on: {\n          'update:color': this.updateColor,\n          'update:mode': function updateMode(v) {\n            return _this.$emit('update:mode', v);\n          }\n        }\n      });\n    },\n    genPreview: function genPreview() {\n      return this.$createElement(_VColorPickerPreview__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          color: this.internalValue,\n          disabled: this.disabled,\n          hideAlpha: this.hideAlpha\n        },\n        on: {\n          'update:color': this.updateColor\n        }\n      });\n    },\n    genSwatches: function genSwatches() {\n      return this.$createElement(_VColorPickerSwatches__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n        props: {\n          dark: this.dark,\n          light: this.light,\n          disabled: this.disabled,\n          swatches: this.swatches,\n          color: this.internalValue,\n          maxHeight: this.swatchesMaxHeight\n        },\n        on: {\n          'update:color': this.updateColor\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    return h(_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n      staticClass: 'v-color-picker',\n      class: __assign(__assign({\n        'v-color-picker--flat': this.flat\n      }, this.themeClasses), this.elevationClasses),\n      props: {\n        maxWidth: this.width\n      }\n    }, [!this.hideCanvas && this.genCanvas(), (!this.hideSliders || !this.hideInputs) && this.genControls(), this.showSwatches && this.genSwatches()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerCanvas.sass\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerCanvas.sass ***!\n  \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerCanvas.ts\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerCanvas.ts ***!\n  \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VColorPickerCanvas_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VColorPickerCanvas.sass */ \"./src/components/VColorPicker/VColorPickerCanvas.sass\");\n/* harmony import */ var _VColorPickerCanvas_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VColorPickerCanvas_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./src/components/VColorPicker/util/index.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n// Styles\n // Helpers\n\n\n // Types\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_3___default.a.extend({\n  name: 'v-color-picker-canvas',\n  props: {\n    color: {\n      type: Object,\n      default: function _default() {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"fromRGBA\"])({\n          r: 255,\n          g: 0,\n          b: 0,\n          a: 1\n        });\n      }\n    },\n    disabled: Boolean,\n    dotSize: {\n      type: [Number, String],\n      default: 10\n    },\n    height: {\n      type: [Number, String],\n      default: 150\n    },\n    width: {\n      type: [Number, String],\n      default: 300\n    }\n  },\n  data: function data() {\n    return {\n      boundingRect: {\n        width: 0,\n        height: 0,\n        left: 0,\n        top: 0\n      }\n    };\n  },\n  computed: {\n    dot: function dot() {\n      if (!this.color) return {\n        x: 0,\n        y: 0\n      };\n      return {\n        x: this.color.hsva.s * parseInt(this.width, 10),\n        y: (1 - this.color.hsva.v) * parseInt(this.height, 10)\n      };\n    }\n  },\n  watch: {\n    'color.hue': 'updateCanvas'\n  },\n  mounted: function mounted() {\n    this.updateCanvas();\n  },\n  methods: {\n    emitColor: function emitColor(x, y) {\n      var _a = this.boundingRect,\n          left = _a.left,\n          top = _a.top,\n          width = _a.width,\n          height = _a.height;\n      this.$emit('update:color', Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"fromHSVA\"])({\n        h: this.color.hue,\n        s: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"clamp\"])(x - left, 0, width) / width,\n        v: 1 - Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"clamp\"])(y - top, 0, height) / height,\n        a: this.color.alpha\n      }));\n    },\n    updateCanvas: function updateCanvas() {\n      if (!this.color) return;\n      var canvas = this.$refs.canvas;\n      var ctx = canvas.getContext('2d');\n      if (!ctx) return;\n      var saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\n      saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)'); // white\n\n      saturationGradient.addColorStop(1, \"hsla(\" + this.color.hue + \", 100%, 50%, 1)\");\n      ctx.fillStyle = saturationGradient;\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n      var valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height);\n      valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)'); // transparent\n\n      valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)'); // black\n\n      ctx.fillStyle = valueGradient;\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n    },\n    handleClick: function handleClick(e) {\n      if (this.disabled) return;\n      this.boundingRect = this.$el.getBoundingClientRect();\n      this.emitColor(e.clientX, e.clientY);\n    },\n    handleMouseDown: function handleMouseDown(e) {\n      // To prevent selection while moving cursor\n      e.preventDefault();\n      if (this.disabled) return;\n      this.boundingRect = this.$el.getBoundingClientRect();\n      window.addEventListener('mousemove', this.handleMouseMove);\n      window.addEventListener('mouseup', this.handleMouseUp);\n    },\n    handleMouseMove: function handleMouseMove(e) {\n      if (this.disabled) return;\n      this.emitColor(e.clientX, e.clientY);\n    },\n    handleMouseUp: function handleMouseUp() {\n      window.removeEventListener('mousemove', this.handleMouseMove);\n      window.removeEventListener('mouseup', this.handleMouseUp);\n    },\n    genCanvas: function genCanvas() {\n      return this.$createElement('canvas', {\n        ref: 'canvas',\n        attrs: {\n          width: this.width,\n          height: this.height\n        }\n      });\n    },\n    genDot: function genDot() {\n      var radius = parseInt(this.dotSize, 10) / 2;\n      var x = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.dot.x - radius);\n      var y = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.dot.y - radius);\n      return this.$createElement('div', {\n        staticClass: 'v-color-picker__canvas-dot',\n        class: {\n          'v-color-picker__canvas-dot--disabled': this.disabled\n        },\n        style: {\n          width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.dotSize),\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.dotSize),\n          transform: \"translate(\" + x + \", \" + y + \")\"\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-color-picker__canvas',\n      style: {\n        width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.width),\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.height)\n      },\n      on: {\n        click: this.handleClick,\n        mousedown: this.handleMouseDown\n      }\n    }, [this.genCanvas(), this.genDot()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerEdit.sass\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerEdit.sass ***!\n  \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerEdit.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerEdit.ts ***!\n  \\*********************************************************/\n/*! exports provided: modes, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"modes\", function() { return modes; });\n/* harmony import */ var _VColorPickerEdit_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VColorPickerEdit.sass */ \"./src/components/VColorPicker/VColorPickerEdit.sass\");\n/* harmony import */ var _VColorPickerEdit_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VColorPickerEdit_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _util_colorUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/colorUtils */ \"./src/util/colorUtils.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./src/components/VColorPicker/util/index.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Styles\n\n\n // Components\n\n\n // Helpers\n\n // Types\n\n\n\nvar modes = {\n  rgba: {\n    inputs: [['r', 255, 'int'], ['g', 255, 'int'], ['b', 255, 'int'], ['a', 1, 'float']],\n    from: _util__WEBPACK_IMPORTED_MODULE_5__[\"fromRGBA\"]\n  },\n  hsla: {\n    inputs: [['h', 360, 'int'], ['s', 1, 'float'], ['l', 1, 'float'], ['a', 1, 'float']],\n    from: _util__WEBPACK_IMPORTED_MODULE_5__[\"fromHSLA\"]\n  },\n  hexa: {\n    from: _util__WEBPACK_IMPORTED_MODULE_5__[\"fromHexa\"]\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_4___default.a.extend({\n  name: 'v-color-picker-edit',\n  props: {\n    color: Object,\n    disabled: Boolean,\n    hideAlpha: Boolean,\n    hideModeSwitch: Boolean,\n    mode: {\n      type: String,\n      default: 'rgba',\n      validator: function validator(v) {\n        return Object.keys(modes).includes(v);\n      }\n    }\n  },\n  data: function data() {\n    return {\n      modes: modes,\n      internalMode: this.mode\n    };\n  },\n  computed: {\n    currentMode: function currentMode() {\n      return this.modes[this.internalMode];\n    }\n  },\n  watch: {\n    mode: function mode(_mode) {\n      this.internalMode = _mode;\n    }\n  },\n  created: function created() {\n    this.internalMode = this.mode;\n  },\n  methods: {\n    getValue: function getValue(v, type) {\n      if (type === 'float') return Math.round(v * 100) / 100;else if (type === 'int') return Math.round(v);else return 0;\n    },\n    parseValue: function parseValue(v, type) {\n      if (type === 'float') return parseFloat(v);else if (type === 'int') return parseInt(v, 10) || 0;else return 0;\n    },\n    changeMode: function changeMode() {\n      var modes = Object.keys(this.modes);\n      var index = modes.indexOf(this.internalMode);\n      var newMode = modes[(index + 1) % modes.length];\n      this.internalMode = newMode;\n      this.$emit('update:mode', newMode);\n    },\n    genInput: function genInput(target, attrs, value, on) {\n      return this.$createElement('div', {\n        staticClass: 'v-color-picker__input'\n      }, [this.$createElement('input', {\n        key: target,\n        attrs: attrs,\n        domProps: {\n          value: value\n        },\n        on: on\n      }), this.$createElement('span', target.toUpperCase())]);\n    },\n    genInputs: function genInputs() {\n      var _this = this;\n\n      if (this.internalMode === 'hexa') {\n        var hex = this.color.hexa;\n        var value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex;\n        return this.genInput('hex', {\n          maxlength: this.hideAlpha ? 7 : 9,\n          disabled: this.disabled\n        }, value, {\n          change: function change(e) {\n            var el = e.target;\n\n            _this.$emit('update:color', _this.currentMode.from(Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_3__[\"parseHex\"])(el.value)));\n          }\n        });\n      } else {\n        var inputs = this.hideAlpha ? this.currentMode.inputs.slice(0, -1) : this.currentMode.inputs;\n        return inputs.map(function (_a) {\n          var _b = __read(_a, 3),\n              target = _b[0],\n              max = _b[1],\n              type = _b[2];\n\n          var value = _this.color[_this.internalMode];\n          return _this.genInput(target, {\n            type: 'number',\n            min: 0,\n            max: max,\n            step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,\n            disabled: _this.disabled\n          }, _this.getValue(value[target], type), {\n            input: function input(e) {\n              var _a;\n\n              var el = e.target;\n\n              var newVal = _this.parseValue(el.value || '0', type);\n\n              _this.$emit('update:color', _this.currentMode.from(Object.assign({}, value, (_a = {}, _a[target] = newVal, _a)), _this.color.alpha));\n            }\n          });\n        });\n      }\n    },\n    genSwitch: function genSwitch() {\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          small: true,\n          icon: true,\n          disabled: this.disabled\n        },\n        on: {\n          click: this.changeMode\n        }\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], '$unfold')]);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-color-picker__edit'\n    }, [this.genInputs(), !this.hideModeSwitch && this.genSwitch()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerPreview.sass\":\n/*!**************************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerPreview.sass ***!\n  \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerPreview.ts\":\n/*!************************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerPreview.ts ***!\n  \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VColorPickerPreview_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VColorPickerPreview.sass */ \"./src/components/VColorPicker/VColorPickerPreview.sass\");\n/* harmony import */ var _VColorPickerPreview_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VColorPickerPreview_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSlider_VSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSlider/VSlider */ \"./src/components/VSlider/VSlider.ts\");\n/* harmony import */ var _util_colorUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/colorUtils */ \"./src/util/colorUtils.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./src/components/VColorPicker/util/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n // Utilities\n\n // Types\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_3___default.a.extend({\n  name: 'v-color-picker-preview',\n  props: {\n    color: Object,\n    disabled: Boolean,\n    hideAlpha: Boolean\n  },\n  methods: {\n    genAlpha: function genAlpha() {\n      var _this = this;\n\n      return this.genTrack({\n        staticClass: 'v-color-picker__alpha',\n        props: {\n          thumbColor: 'grey lighten-2',\n          hideDetails: true,\n          value: this.color.alpha,\n          step: 0,\n          min: 0,\n          max: 1\n        },\n        style: {\n          backgroundImage: this.disabled ? undefined : \"linear-gradient(to \" + (this.$vuetify.rtl ? 'left' : 'right') + \", transparent, \" + Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_2__[\"RGBtoCSS\"])(this.color.rgba) + \")\"\n        },\n        on: {\n          input: function input(val) {\n            return _this.color.alpha !== val && _this.$emit('update:color', Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"fromHSVA\"])(__assign(__assign({}, _this.color.hsva), {\n              a: val\n            })));\n          }\n        }\n      });\n    },\n    genSliders: function genSliders() {\n      return this.$createElement('div', {\n        staticClass: 'v-color-picker__sliders'\n      }, [this.genHue(), !this.hideAlpha && this.genAlpha()]);\n    },\n    genDot: function genDot() {\n      return this.$createElement('div', {\n        staticClass: 'v-color-picker__dot'\n      }, [this.$createElement('div', {\n        style: {\n          background: Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_2__[\"RGBAtoCSS\"])(this.color.rgba)\n        }\n      })]);\n    },\n    genHue: function genHue() {\n      var _this = this;\n\n      return this.genTrack({\n        staticClass: 'v-color-picker__hue',\n        props: {\n          thumbColor: 'grey lighten-2',\n          hideDetails: true,\n          value: this.color.hue,\n          step: 0,\n          min: 0,\n          max: 360\n        },\n        on: {\n          input: function input(val) {\n            return _this.color.hue !== val && _this.$emit('update:color', Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"fromHSVA\"])(__assign(__assign({}, _this.color.hsva), {\n              h: val\n            })));\n          }\n        }\n      });\n    },\n    genTrack: function genTrack(options) {\n      return this.$createElement(_VSlider_VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"], __assign(__assign({\n        class: 'v-color-picker__track'\n      }, options), {\n        props: __assign({\n          disabled: this.disabled\n        }, options.props)\n      }));\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-color-picker__preview',\n      class: {\n        'v-color-picker__preview--hide-alpha': this.hideAlpha\n      }\n    }, [this.genDot(), this.genSliders()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerSwatches.sass\":\n/*!***************************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerSwatches.sass ***!\n  \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/VColorPickerSwatches.ts\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VColorPicker/VColorPickerSwatches.ts ***!\n  \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VColorPickerSwatches_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VColorPickerSwatches.sass */ \"./src/components/VColorPicker/VColorPickerSwatches.sass\");\n/* harmony import */ var _VColorPickerSwatches_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VColorPickerSwatches_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _util_colors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/colors */ \"./src/util/colors.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./src/components/VColorPicker/util/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_colorUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/colorUtils */ \"./src/util/colorUtils.ts\");\n// Styles\n // Components\n\n // Helpers\n\n\n\n\n\n\n\n\nfunction parseDefaultColors(colors) {\n  return Object.keys(colors).map(function (key) {\n    var color = colors[key];\n    return color.base ? [color.base, color.darken4, color.darken3, color.darken2, color.darken1, color.lighten1, color.lighten2, color.lighten3, color.lighten4, color.lighten5] : [color.black, color.white, color.transparent];\n  });\n}\n\nvar white = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"fromHex\"])('#FFFFFF').rgba;\nvar black = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"fromHex\"])('#000000').rgba;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-color-picker-swatches',\n  props: {\n    swatches: {\n      type: Array,\n      default: function _default() {\n        return parseDefaultColors(_util_colors__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n      }\n    },\n    disabled: Boolean,\n    color: Object,\n    maxWidth: [Number, String],\n    maxHeight: [Number, String]\n  },\n  methods: {\n    genColor: function genColor(color) {\n      var _this = this;\n\n      var content = this.$createElement('div', {\n        style: {\n          background: color\n        }\n      }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(this.color, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"parseColor\"])(color, null)) && this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          small: true,\n          dark: Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_7__[\"contrastRatio\"])(this.color.rgba, white) > 2 && this.color.alpha > 0.5,\n          light: Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_7__[\"contrastRatio\"])(this.color.rgba, black) > 2 && this.color.alpha > 0.5\n        }\n      }, '$success')]);\n      return this.$createElement('div', {\n        staticClass: 'v-color-picker__color',\n        on: {\n          // TODO: Less hacky way of catching transparent\n          click: function click() {\n            return _this.disabled || _this.$emit('update:color', Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"fromHex\"])(color === 'transparent' ? '#00000000' : color));\n          }\n        }\n      }, [content]);\n    },\n    genSwatches: function genSwatches() {\n      var _this = this;\n\n      return this.swatches.map(function (swatch) {\n        var colors = swatch.map(_this.genColor);\n        return _this.$createElement('div', {\n          staticClass: 'v-color-picker__swatch'\n        }, colors);\n      });\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-color-picker__swatches',\n      style: {\n        maxWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.maxWidth),\n        maxHeight: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.maxHeight)\n      }\n    }, [this.$createElement('div', this.genSwatches())]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/index.ts\":\n/*!**********************************************!*\\\n  !*** ./src/components/VColorPicker/index.ts ***!\n  \\**********************************************/\n/*! exports provided: VColorPicker, VColorPickerSwatches, VColorPickerCanvas, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VColorPicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VColorPicker */ \"./src/components/VColorPicker/VColorPicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VColorPicker\", function() { return _VColorPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VColorPickerSwatches__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VColorPickerSwatches */ \"./src/components/VColorPicker/VColorPickerSwatches.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VColorPickerSwatches\", function() { return _VColorPickerSwatches__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VColorPickerCanvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VColorPickerCanvas */ \"./src/components/VColorPicker/VColorPickerCanvas.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VColorPickerCanvas\", function() { return _VColorPickerCanvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VColorPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VColorPicker/util/index.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VColorPicker/util/index.ts ***!\n  \\***************************************************/\n/*! exports provided: fromHSVA, fromHSLA, fromRGBA, fromHexa, fromHex, parseColor, extractColor, hasAlpha */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromHSVA\", function() { return fromHSVA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromHSLA\", function() { return fromHSLA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRGBA\", function() { return fromRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromHexa\", function() { return fromHexa; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromHex\", function() { return fromHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseColor\", function() { return parseColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractColor\", function() { return extractColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasAlpha\", function() { return hasAlpha; });\n/* harmony import */ var _util_colorUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/colorUtils */ \"./src/util/colorUtils.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}; // Utilities\n\n\n\nfunction fromHSVA(hsva) {\n  hsva = __assign({}, hsva);\n  var hexa = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoHex\"])(hsva);\n  var hsla = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoHSLA\"])(hsva);\n  var rgba = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoRGBA\"])(hsva);\n  return {\n    alpha: hsva.a,\n    hex: hexa.substr(0, 7),\n    hexa: hexa,\n    hsla: hsla,\n    hsva: hsva,\n    hue: hsva.h,\n    rgba: rgba\n  };\n}\nfunction fromHSLA(hsla) {\n  var hsva = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSLAtoHSVA\"])(hsla);\n  var hexa = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoHex\"])(hsva);\n  var rgba = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoRGBA\"])(hsva);\n  return {\n    alpha: hsva.a,\n    hex: hexa.substr(0, 7),\n    hexa: hexa,\n    hsla: hsla,\n    hsva: hsva,\n    hue: hsva.h,\n    rgba: rgba\n  };\n}\nfunction fromRGBA(rgba) {\n  var hsva = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"RGBAtoHSVA\"])(rgba);\n  var hexa = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"RGBAtoHex\"])(rgba);\n  var hsla = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoHSLA\"])(hsva);\n  return {\n    alpha: hsva.a,\n    hex: hexa.substr(0, 7),\n    hexa: hexa,\n    hsla: hsla,\n    hsva: hsva,\n    hue: hsva.h,\n    rgba: rgba\n  };\n}\nfunction fromHexa(hexa) {\n  var hsva = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HexToHSVA\"])(hexa);\n  var hsla = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoHSLA\"])(hsva);\n  var rgba = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"HSVAtoRGBA\"])(hsva);\n  return {\n    alpha: hsva.a,\n    hex: hexa.substr(0, 7),\n    hexa: hexa,\n    hsla: hsla,\n    hsva: hsva,\n    hue: hsva.h,\n    rgba: rgba\n  };\n}\nfunction fromHex(hex) {\n  return fromHexa(Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"parseHex\"])(hex));\n}\n\nfunction has(obj, key) {\n  return key.every(function (k) {\n    return obj.hasOwnProperty(k);\n  });\n}\n\nfunction parseColor(color, oldColor) {\n  if (!color) return fromRGBA({\n    r: 255,\n    g: 0,\n    b: 0,\n    a: 1\n  });\n\n  if (typeof color === 'string') {\n    if (color === 'transparent') return fromHexa('#00000000');\n    var hex = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"parseHex\"])(color);\n    if (oldColor && hex === oldColor.hexa) return oldColor;else return fromHexa(hex);\n  }\n\n  if (_typeof(color) === 'object') {\n    if (color.hasOwnProperty('alpha')) return color;\n    var a = color.hasOwnProperty('a') ? parseFloat(color.a) : 1;\n\n    if (has(color, ['r', 'g', 'b'])) {\n      if (oldColor && color === oldColor.rgba) return oldColor;else return fromRGBA(__assign(__assign({}, color), {\n        a: a\n      }));\n    } else if (has(color, ['h', 's', 'l'])) {\n      if (oldColor && color === oldColor.hsla) return oldColor;else return fromHSLA(__assign(__assign({}, color), {\n        a: a\n      }));\n    } else if (has(color, ['h', 's', 'v'])) {\n      if (oldColor && color === oldColor.hsva) return oldColor;else return fromHSVA(__assign(__assign({}, color), {\n        a: a\n      }));\n    }\n  }\n\n  return fromRGBA({\n    r: 255,\n    g: 0,\n    b: 0,\n    a: 1\n  });\n}\n\nfunction stripAlpha(color, stripAlpha) {\n  if (stripAlpha) {\n    var a = color.a,\n        rest = __rest(color, [\"a\"]);\n\n    return rest;\n  }\n\n  return color;\n}\n\nfunction extractColor(color, input) {\n  if (input == null) return color;\n\n  if (typeof input === 'string') {\n    return input.length === 7 ? color.hex : color.hexa;\n  }\n\n  if (_typeof(input) === 'object') {\n    var shouldStrip = typeof input.a === 'number' && input.a === 0 ? !!input.a : !input.a;\n    if (has(input, ['r', 'g', 'b'])) return stripAlpha(color.rgba, shouldStrip);else if (has(input, ['h', 's', 'l'])) return stripAlpha(color.hsla, shouldStrip);else if (has(input, ['h', 's', 'v'])) return stripAlpha(color.hsva, shouldStrip);\n  }\n\n  return color;\n}\nfunction hasAlpha(color) {\n  if (!color) return false;\n\n  if (typeof color === 'string') {\n    return color.length > 7;\n  }\n\n  if (_typeof(color) === 'object') {\n    return has(color, ['a']) || has(color, ['alpha']);\n  }\n\n  return false;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCombobox/VCombobox.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VCombobox/VCombobox.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAutocomplete_VAutocomplete_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VAutocomplete/VAutocomplete.sass */ \"./src/components/VAutocomplete/VAutocomplete.sass\");\n/* harmony import */ var _VAutocomplete_VAutocomplete_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VAutocomplete_VAutocomplete_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.ts\");\n/* harmony import */ var _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VAutocomplete/VAutocomplete */ \"./src/components/VAutocomplete/VAutocomplete.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n\n // Utils\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n  name: 'v-combobox',\n  props: {\n    delimiters: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    returnObject: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: function data() {\n    return {\n      editingIndex: -1\n    };\n  },\n  computed: {\n    computedCounterValue: function computedCounterValue() {\n      return this.multiple ? this.selectedItems.length : (this.internalSearch || '').toString().length;\n    },\n    hasSlot: function hasSlot() {\n      return _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.hasSlot.call(this) || this.multiple;\n    },\n    isAnyValueAllowed: function isAnyValueAllowed() {\n      return true;\n    },\n    menuCanShow: function menuCanShow() {\n      if (!this.isFocused) return false;\n      return this.hasDisplayedItems || !!this.$slots['no-data'] && !this.hideNoData;\n    },\n    searchIsDirty: function searchIsDirty() {\n      return this.internalSearch != null;\n    }\n  },\n  methods: {\n    onInternalSearchChanged: function onInternalSearchChanged(val) {\n      if (val && this.multiple && this.delimiters.length) {\n        var delimiter = this.delimiters.find(function (d) {\n          return val.endsWith(d);\n        });\n\n        if (delimiter != null) {\n          this.internalSearch = val.slice(0, val.length - delimiter.length);\n          this.updateTags();\n        }\n      }\n\n      this.updateMenuDimensions();\n    },\n    genInput: function genInput() {\n      var input = _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genInput.call(this);\n      delete input.data.attrs.name;\n      input.data.on.paste = this.onPaste;\n      return input;\n    },\n    genChipSelection: function genChipSelection(item, index) {\n      var _this = this;\n\n      var chip = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genChipSelection.call(this, item, index); // Allow user to update an existing value\n\n      if (this.multiple) {\n        chip.componentOptions.listeners = __assign(__assign({}, chip.componentOptions.listeners), {\n          dblclick: function dblclick() {\n            _this.editingIndex = index;\n            _this.internalSearch = _this.getText(item);\n            _this.selectedIndex = -1;\n          }\n        });\n      }\n\n      return chip;\n    },\n    onChipInput: function onChipInput(item) {\n      _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onChipInput.call(this, item);\n      this.editingIndex = -1;\n    },\n    // Requires a manual definition\n    // to overwrite removal in v-autocomplete\n    onEnterDown: function onEnterDown(e) {\n      e.preventDefault(); // If has menu index, let v-select-list handle\n\n      if (this.getMenuIndex() > -1) return;\n      this.$nextTick(this.updateSelf);\n    },\n    onKeyDown: function onKeyDown(e) {\n      var keyCode = e.keyCode;\n\n      if (e.ctrlKey || ![_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].home, _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].end].includes(keyCode)) {\n        _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onKeyDown.call(this, e);\n      } // If user is at selection index of 0\n      // create a new tag\n\n\n      if (this.multiple && keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].left && this.$refs.input.selectionStart === 0) {\n        this.updateSelf();\n      } else if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].enter) {\n        this.onEnterDown(e);\n      } // The ordering is important here\n      // allows new value to be updated\n      // and then moves the index to the\n      // proper location\n\n\n      this.changeSelectedIndex(keyCode);\n    },\n    onTabDown: function onTabDown(e) {\n      // When adding tags, if searching and\n      // there is not a filtered options,\n      // add the value to the tags list\n      if (this.multiple && this.internalSearch && this.getMenuIndex() === -1) {\n        e.preventDefault();\n        e.stopPropagation();\n        return this.updateTags();\n      }\n\n      _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.onTabDown.call(this, e);\n    },\n    selectItem: function selectItem(item) {\n      // Currently only supports items:<string[]>\n      if (this.editingIndex > -1) {\n        this.updateEditing();\n      } else {\n        _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.selectItem.call(this, item); // if selected item contains search value,\n        // remove the search string\n\n        if (this.internalSearch && this.multiple && this.getText(item).toLocaleLowerCase().includes(this.internalSearch.toLocaleLowerCase())) {\n          this.internalSearch = null;\n        }\n      }\n    },\n    setSelectedItems: function setSelectedItems() {\n      if (this.internalValue == null || this.internalValue === '') {\n        this.selectedItems = [];\n      } else {\n        this.selectedItems = this.multiple ? this.internalValue : [this.internalValue];\n      }\n    },\n    setValue: function setValue(value) {\n      _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setValue.call(this, value === undefined ? this.internalSearch : value);\n    },\n    updateEditing: function updateEditing() {\n      var _this = this;\n\n      var value = this.internalValue.slice();\n      var index = this.selectedItems.findIndex(function (item) {\n        return _this.getText(item) === _this.internalSearch;\n      }); // If user enters a duplicate text on chip edit,\n      // don't add it, move it to the end of the list\n\n      if (index > -1) {\n        var item = _typeof(value[index]) === 'object' ? Object.assign({}, value[index]) : value[index];\n        value.splice(index, 1);\n        value.push(item);\n      } else {\n        value[this.editingIndex] = this.internalSearch;\n      }\n\n      this.setValue(value);\n      this.editingIndex = -1;\n      this.internalSearch = null;\n    },\n    updateCombobox: function updateCombobox() {\n      // If search is not dirty, do nothing\n      if (!this.searchIsDirty) return; // The internal search is not matching\n      // the internal value, update the input\n\n      if (this.internalSearch !== this.getText(this.internalValue)) this.setValue(); // Reset search if using slot to avoid a double input\n\n      var isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips;\n      if (isUsingSlot) this.internalSearch = null;\n    },\n    updateSelf: function updateSelf() {\n      this.multiple ? this.updateTags() : this.updateCombobox();\n    },\n    updateTags: function updateTags() {\n      var _this = this;\n\n      var menuIndex = this.getMenuIndex(); // If the user is not searching\n      // and no menu item is selected\n      // or if the search is empty\n      // do nothing\n\n      if (menuIndex < 0 && !this.searchIsDirty || !this.internalSearch) return;\n\n      if (this.editingIndex > -1) {\n        return this.updateEditing();\n      }\n\n      var index = this.selectedItems.findIndex(function (item) {\n        return _this.internalSearch === _this.getText(item);\n      }); // If the duplicate item is an object,\n      // copy it, so that it can be added again later\n\n      var itemToSelect = index > -1 && _typeof(this.selectedItems[index]) === 'object' ? Object.assign({}, this.selectedItems[index]) : this.internalSearch; // If it already exists, do nothing\n      // this might need to change to bring\n      // the duplicated item to the last entered\n\n      if (index > -1) {\n        var internalValue = this.internalValue.slice();\n        internalValue.splice(index, 1);\n        this.setValue(internalValue);\n      } // If menu index is greater than 1\n      // the selection is handled elsewhere\n      // TODO: find out where\n\n\n      if (menuIndex > -1) return this.internalSearch = null;\n      this.selectItem(itemToSelect);\n      this.internalSearch = null;\n    },\n    onPaste: function onPaste(event) {\n      var _a;\n\n      this.$emit('paste', event);\n      if (!this.multiple || this.searchIsDirty) return;\n      var pastedItemText = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/vnd.vuetify.autocomplete.item+plain');\n\n      if (pastedItemText && this.findExistingIndex(pastedItemText) === -1) {\n        event.preventDefault();\n        _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.selectItem.call(this, pastedItemText);\n      }\n    },\n    clearableCallback: function clearableCallback() {\n      this.editingIndex = -1;\n      _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.clearableCallback.call(this);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCombobox/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VCombobox/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VCombobox, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCombobox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCombobox */ \"./src/components/VCombobox/VCombobox.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCombobox\", function() { return _VCombobox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCombobox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VContent/VContent.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VContent/VContent.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMain_VMain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VMain/VMain */ \"./src/components/VMain/VMain.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Extensions\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VMain_VMain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'v-main',\n  created: function created() {\n    Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"deprecate\"])('v-content', 'v-main', this);\n  },\n  render: function render(h) {\n    // Add the legacy class names\n    var node = _VMain_VMain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.render.call(this, h);\n    node.data.staticClass += ' v-content';\n    node.children[0].data.staticClass += ' v-content__wrap';\n    return h(node.tag, node.data, node.children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VContent/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VContent/index.ts ***!\n  \\******************************************/\n/*! exports provided: VContent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VContent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VContent */ \"./src/components/VContent/VContent.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContent\", function() { return _VContent__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VContent__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VCounter/VCounter.sass\":\n/*!***********************************************!*\\\n  !*** ./src/components/VCounter/VCounter.sass ***!\n  \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VCounter/VCounter.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VCounter/VCounter.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCounter_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCounter.sass */ \"./src/components/VCounter/VCounter.sass\");\n/* harmony import */ var _VCounter_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VCounter_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n  name: 'v-counter',\n  functional: true,\n  props: {\n    value: {\n      type: [Number, String],\n      default: ''\n    },\n    max: [Number, String]\n  },\n  render: function render(h, ctx) {\n    var props = ctx.props;\n    var max = parseInt(props.max, 10);\n    var value = parseInt(props.value, 10);\n    var content = max ? value + \" / \" + max : String(props.value);\n    var isGreater = max && value > max;\n    return h('div', {\n      staticClass: 'v-counter',\n      class: __assign({\n        'error--text': isGreater\n      }, Object(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"functionalThemeClasses\"])(ctx))\n    }, content);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCounter/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VCounter/index.ts ***!\n  \\******************************************/\n/*! exports provided: VCounter, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCounter */ \"./src/components/VCounter/VCounter.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCounter\", function() { return _VCounter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCounter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VData/VData.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VData/VData.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Helpers\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n  name: 'v-data',\n  inheritAttrs: false,\n  props: {\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    options: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    sortBy: {\n      type: [String, Array]\n    },\n    sortDesc: {\n      type: [Boolean, Array]\n    },\n    customSort: {\n      type: Function,\n      default: _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"sortItems\"]\n    },\n    mustSort: Boolean,\n    multiSort: Boolean,\n    page: {\n      type: Number,\n      default: 1\n    },\n    itemsPerPage: {\n      type: Number,\n      default: 10\n    },\n    groupBy: {\n      type: [String, Array],\n      default: function _default() {\n        return [];\n      }\n    },\n    groupDesc: {\n      type: [Boolean, Array],\n      default: function _default() {\n        return [];\n      }\n    },\n    customGroup: {\n      type: Function,\n      default: _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"groupItems\"]\n    },\n    locale: {\n      type: String,\n      default: 'en-US'\n    },\n    disableSort: Boolean,\n    disablePagination: Boolean,\n    disableFiltering: Boolean,\n    search: String,\n    customFilter: {\n      type: Function,\n      default: _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"searchItems\"]\n    },\n    serverItemsLength: {\n      type: Number,\n      default: -1\n    }\n  },\n  data: function data() {\n    var _a, _b;\n\n    var internalOptions = {\n      page: this.page,\n      itemsPerPage: this.itemsPerPage,\n      sortBy: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(this.sortBy),\n      sortDesc: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(this.sortDesc),\n      groupBy: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(this.groupBy),\n      groupDesc: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(this.groupDesc),\n      mustSort: this.mustSort,\n      multiSort: this.multiSort\n    };\n\n    if (this.options) {\n      internalOptions = Object.assign(internalOptions, this.options);\n    }\n\n    var sortBy = internalOptions.sortBy,\n        sortDesc = internalOptions.sortDesc,\n        groupBy = internalOptions.groupBy,\n        groupDesc = internalOptions.groupDesc;\n    var sortDiff = sortBy.length - sortDesc.length;\n    var groupDiff = groupBy.length - groupDesc.length;\n\n    if (sortDiff > 0) {\n      (_a = internalOptions.sortDesc).push.apply(_a, __spreadArray([], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"fillArray\"])(sortDiff, false)), false));\n    }\n\n    if (groupDiff > 0) {\n      (_b = internalOptions.groupDesc).push.apply(_b, __spreadArray([], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"fillArray\"])(groupDiff, false)), false));\n    }\n\n    return {\n      internalOptions: internalOptions\n    };\n  },\n  computed: {\n    itemsLength: function itemsLength() {\n      return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length;\n    },\n    pageCount: function pageCount() {\n      return this.internalOptions.itemsPerPage <= 0 ? 1 : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage);\n    },\n    pageStart: function pageStart() {\n      if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0;\n      return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage;\n    },\n    pageStop: function pageStop() {\n      if (this.internalOptions.itemsPerPage === -1) return this.itemsLength;\n      if (!this.items.length) return 0;\n      return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage);\n    },\n    isGrouped: function isGrouped() {\n      return !!this.internalOptions.groupBy.length;\n    },\n    pagination: function pagination() {\n      return {\n        page: this.internalOptions.page,\n        itemsPerPage: this.internalOptions.itemsPerPage,\n        pageStart: this.pageStart,\n        pageStop: this.pageStop,\n        pageCount: this.pageCount,\n        itemsLength: this.itemsLength\n      };\n    },\n    filteredItems: function filteredItems() {\n      var items = this.items.slice();\n\n      if (!this.disableFiltering && this.serverItemsLength <= 0) {\n        items = this.customFilter(items, this.search);\n      }\n\n      return items;\n    },\n    computedItems: function computedItems() {\n      var items = this.filteredItems.slice();\n\n      if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n        items = this.sortItems(items);\n      }\n\n      if (!this.disablePagination && this.serverItemsLength <= 0) {\n        items = this.paginateItems(items);\n      }\n\n      return items;\n    },\n    groupedItems: function groupedItems() {\n      return this.isGrouped ? this.groupItems(this.computedItems) : null;\n    },\n    scopedProps: function scopedProps() {\n      return {\n        sort: this.sort,\n        sortArray: this.sortArray,\n        group: this.group,\n        items: this.computedItems,\n        options: this.internalOptions,\n        updateOptions: this.updateOptions,\n        pagination: this.pagination,\n        groupedItems: this.groupedItems,\n        originalItemsLength: this.items.length\n      };\n    },\n    computedOptions: function computedOptions() {\n      return __assign({}, this.options);\n    }\n  },\n  watch: {\n    computedOptions: {\n      handler: function handler(options, old) {\n        if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(options, old)) return;\n        this.updateOptions(options);\n      },\n      deep: true,\n      immediate: true\n    },\n    internalOptions: {\n      handler: function handler(options, old) {\n        if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(options, old)) return;\n        this.$emit('update:options', options);\n      },\n      deep: true,\n      immediate: true\n    },\n    page: function page(_page) {\n      this.updateOptions({\n        page: _page\n      });\n    },\n    'internalOptions.page': function internalOptionsPage(page) {\n      this.$emit('update:page', page);\n    },\n    itemsPerPage: function itemsPerPage(_itemsPerPage) {\n      this.updateOptions({\n        itemsPerPage: _itemsPerPage\n      });\n    },\n    'internalOptions.itemsPerPage': function internalOptionsItemsPerPage(itemsPerPage) {\n      this.$emit('update:items-per-page', itemsPerPage);\n    },\n    sortBy: function sortBy(_sortBy) {\n      this.updateOptions({\n        sortBy: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(_sortBy)\n      });\n    },\n    'internalOptions.sortBy': function internalOptionsSortBy(sortBy, old) {\n      !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0]);\n    },\n    sortDesc: function sortDesc(_sortDesc) {\n      this.updateOptions({\n        sortDesc: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(_sortDesc)\n      });\n    },\n    'internalOptions.sortDesc': function internalOptionsSortDesc(sortDesc, old) {\n      !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0]);\n    },\n    groupBy: function groupBy(_groupBy) {\n      this.updateOptions({\n        groupBy: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(_groupBy)\n      });\n    },\n    'internalOptions.groupBy': function internalOptionsGroupBy(groupBy, old) {\n      !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0]);\n    },\n    groupDesc: function groupDesc(_groupDesc) {\n      this.updateOptions({\n        groupDesc: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(_groupDesc)\n      });\n    },\n    'internalOptions.groupDesc': function internalOptionsGroupDesc(groupDesc, old) {\n      !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0]);\n    },\n    multiSort: function multiSort(_multiSort) {\n      this.updateOptions({\n        multiSort: _multiSort\n      });\n    },\n    'internalOptions.multiSort': function internalOptionsMultiSort(multiSort) {\n      this.$emit('update:multi-sort', multiSort);\n    },\n    mustSort: function mustSort(_mustSort) {\n      this.updateOptions({\n        mustSort: _mustSort\n      });\n    },\n    'internalOptions.mustSort': function internalOptionsMustSort(mustSort) {\n      this.$emit('update:must-sort', mustSort);\n    },\n    pageCount: {\n      handler: function handler(pageCount) {\n        this.$emit('page-count', pageCount);\n      },\n      immediate: true\n    },\n    computedItems: {\n      handler: function handler(computedItems) {\n        this.$emit('current-items', computedItems);\n      },\n      immediate: true\n    },\n    pagination: {\n      handler: function handler(pagination, old) {\n        if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(pagination, old)) return;\n        this.$emit('pagination', this.pagination);\n      },\n      immediate: true\n    }\n  },\n  methods: {\n    toggle: function toggle(key, oldBy, oldDesc, page, mustSort, multiSort) {\n      var by = oldBy.slice();\n      var desc = oldDesc.slice();\n      var byIndex = by.findIndex(function (k) {\n        return k === key;\n      });\n\n      if (byIndex < 0) {\n        if (!multiSort) {\n          by = [];\n          desc = [];\n        }\n\n        by.push(key);\n        desc.push(false);\n      } else if (byIndex >= 0 && !desc[byIndex]) {\n        desc[byIndex] = true;\n      } else if (!mustSort) {\n        by.splice(byIndex, 1);\n        desc.splice(byIndex, 1);\n      } else {\n        desc[byIndex] = false;\n      } // Reset page to 1 if sortBy or sortDesc have changed\n\n\n      if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(by, oldBy) || !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"deepEqual\"])(desc, oldDesc)) {\n        page = 1;\n      }\n\n      return {\n        by: by,\n        desc: desc,\n        page: page\n      };\n    },\n    group: function group(key) {\n      var _a = this.toggle(key, this.internalOptions.groupBy, this.internalOptions.groupDesc, this.internalOptions.page, true, false),\n          groupBy = _a.by,\n          groupDesc = _a.desc,\n          page = _a.page;\n\n      this.updateOptions({\n        groupBy: groupBy,\n        groupDesc: groupDesc,\n        page: page\n      });\n    },\n    sort: function sort(key) {\n      if (Array.isArray(key)) return this.sortArray(key);\n\n      var _a = this.toggle(key, this.internalOptions.sortBy, this.internalOptions.sortDesc, this.internalOptions.page, this.internalOptions.mustSort, this.internalOptions.multiSort),\n          sortBy = _a.by,\n          sortDesc = _a.desc,\n          page = _a.page;\n\n      this.updateOptions({\n        sortBy: sortBy,\n        sortDesc: sortDesc,\n        page: page\n      });\n    },\n    sortArray: function sortArray(sortBy) {\n      var _this = this;\n\n      var sortDesc = sortBy.map(function (s) {\n        var i = _this.internalOptions.sortBy.findIndex(function (k) {\n          return k === s;\n        });\n\n        return i > -1 ? _this.internalOptions.sortDesc[i] : false;\n      });\n      this.updateOptions({\n        sortBy: sortBy,\n        sortDesc: sortDesc\n      });\n    },\n    updateOptions: function updateOptions(options) {\n      this.internalOptions = __assign(__assign(__assign({}, this.internalOptions), options), {\n        page: this.serverItemsLength < 0 ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount)) : options.page || this.internalOptions.page\n      });\n    },\n    sortItems: function sortItems(items) {\n      var sortBy = [];\n      var sortDesc = [];\n\n      if (!this.disableSort) {\n        sortBy = this.internalOptions.sortBy;\n        sortDesc = this.internalOptions.sortDesc;\n      }\n\n      if (this.internalOptions.groupBy.length) {\n        sortBy = __spreadArray(__spreadArray([], __read(this.internalOptions.groupBy), false), __read(sortBy), false);\n        sortDesc = __spreadArray(__spreadArray([], __read(this.internalOptions.groupDesc), false), __read(sortDesc), false);\n      }\n\n      return this.customSort(items, sortBy, sortDesc, this.locale);\n    },\n    groupItems: function groupItems(items) {\n      return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc);\n    },\n    paginateItems: function paginateItems(items) {\n      // Make sure we don't try to display non-existant page if items suddenly change\n      // TODO: Could possibly move this to pageStart/pageStop?\n      if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n        this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1; // Prevent NaN\n      }\n\n      return items.slice(this.pageStart, this.pageStop);\n    }\n  },\n  render: function render() {\n    return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VData/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VData/index.ts ***!\n  \\***************************************/\n/*! exports provided: VData, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VData__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VData */ \"./src/components/VData/VData.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VData\", function() { return _VData__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VData__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VDataIterator/VDataFooter.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VDataIterator/VDataFooter.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDataIterator/VDataFooter.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VDataIterator/VDataFooter.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDataFooter_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDataFooter.sass */ \"./src/components/VDataIterator/VDataFooter.sass\");\n/* harmony import */ var _VDataFooter_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDataFooter_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n // Components\n\n\n\n // Types\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_4___default.a.extend({\n  name: 'v-data-footer',\n  props: {\n    options: {\n      type: Object,\n      required: true\n    },\n    pagination: {\n      type: Object,\n      required: true\n    },\n    itemsPerPageOptions: {\n      type: Array,\n      default: function _default() {\n        return [5, 10, 15, -1];\n      }\n    },\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    firstIcon: {\n      type: String,\n      default: '$first'\n    },\n    lastIcon: {\n      type: String,\n      default: '$last'\n    },\n    itemsPerPageText: {\n      type: String,\n      default: '$vuetify.dataFooter.itemsPerPageText'\n    },\n    itemsPerPageAllText: {\n      type: String,\n      default: '$vuetify.dataFooter.itemsPerPageAll'\n    },\n    showFirstLastPage: Boolean,\n    showCurrentPage: Boolean,\n    disablePagination: Boolean,\n    disableItemsPerPage: Boolean,\n    pageText: {\n      type: String,\n      default: '$vuetify.dataFooter.pageText'\n    }\n  },\n  computed: {\n    disableNextPageIcon: function disableNextPageIcon() {\n      return this.options.itemsPerPage <= 0 || this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength || this.pagination.pageStop < 0;\n    },\n    computedDataItemsPerPageOptions: function computedDataItemsPerPageOptions() {\n      var _this = this;\n\n      return this.itemsPerPageOptions.map(function (option) {\n        if (_typeof(option) === 'object') return option;else return _this.genDataItemsPerPageOption(option);\n      });\n    }\n  },\n  methods: {\n    updateOptions: function updateOptions(obj) {\n      this.$emit('update:options', Object.assign({}, this.options, obj));\n    },\n    onFirstPage: function onFirstPage() {\n      this.updateOptions({\n        page: 1\n      });\n    },\n    onPreviousPage: function onPreviousPage() {\n      this.updateOptions({\n        page: this.options.page - 1\n      });\n    },\n    onNextPage: function onNextPage() {\n      this.updateOptions({\n        page: this.options.page + 1\n      });\n    },\n    onLastPage: function onLastPage() {\n      this.updateOptions({\n        page: this.pagination.pageCount\n      });\n    },\n    onChangeItemsPerPage: function onChangeItemsPerPage(itemsPerPage) {\n      this.updateOptions({\n        itemsPerPage: itemsPerPage,\n        page: 1\n      });\n    },\n    genDataItemsPerPageOption: function genDataItemsPerPageOption(option) {\n      return {\n        text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n        value: option\n      };\n    },\n    genItemsPerPageSelect: function genItemsPerPageSelect() {\n      var value = this.options.itemsPerPage;\n      var computedIPPO = this.computedDataItemsPerPageOptions;\n      if (computedIPPO.length <= 1) return null;\n      if (!computedIPPO.find(function (ippo) {\n        return ippo.value === value;\n      })) value = computedIPPO[0];\n      return this.$createElement('div', {\n        staticClass: 'v-data-footer__select'\n      }, [this.$vuetify.lang.t(this.itemsPerPageText), this.$createElement(_VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.itemsPerPageText)\n        },\n        props: {\n          disabled: this.disableItemsPerPage,\n          items: computedIPPO,\n          value: value,\n          hideDetails: true,\n          auto: true,\n          minWidth: '75px'\n        },\n        on: {\n          input: this.onChangeItemsPerPage\n        }\n      })]);\n    },\n    genPaginationInfo: function genPaginationInfo() {\n      var children = ['–'];\n      var itemsLength = this.pagination.itemsLength;\n      var pageStart = this.pagination.pageStart;\n      var pageStop = this.pagination.pageStop;\n\n      if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n        pageStart = this.pagination.pageStart + 1;\n        pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0 ? itemsLength : this.pagination.pageStop;\n        children = this.$scopedSlots['page-text'] ? [this.$scopedSlots['page-text']({\n          pageStart: pageStart,\n          pageStop: pageStop,\n          itemsLength: itemsLength\n        })] : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)];\n      } else if (this.$scopedSlots['page-text']) {\n        children = [this.$scopedSlots['page-text']({\n          pageStart: pageStart,\n          pageStop: pageStop,\n          itemsLength: itemsLength\n        })];\n      }\n\n      return this.$createElement('div', {\n        class: 'v-data-footer__pagination'\n      }, children);\n    },\n    genIcon: function genIcon(click, disabled, label, icon) {\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        props: {\n          disabled: disabled || this.disablePagination,\n          icon: true,\n          text: true // dark: this.dark, // TODO: add mixin\n          // light: this.light // TODO: add mixin\n\n        },\n        on: {\n          click: click\n        },\n        attrs: {\n          'aria-label': label // TODO: Localization\n\n        }\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], icon)]);\n    },\n    genIcons: function genIcons() {\n      var before = [];\n      var after = [];\n      before.push(this.genIcon(this.onPreviousPage, this.options.page === 1, this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'), this.$vuetify.rtl ? this.nextIcon : this.prevIcon));\n      after.push(this.genIcon(this.onNextPage, this.disableNextPageIcon, this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'), this.$vuetify.rtl ? this.prevIcon : this.nextIcon));\n\n      if (this.showFirstLastPage) {\n        before.unshift(this.genIcon(this.onFirstPage, this.options.page === 1, this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'), this.$vuetify.rtl ? this.lastIcon : this.firstIcon));\n        after.push(this.genIcon(this.onLastPage, this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1, this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'), this.$vuetify.rtl ? this.firstIcon : this.lastIcon));\n      }\n\n      return [this.$createElement('div', {\n        staticClass: 'v-data-footer__icons-before'\n      }, before), this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]), this.$createElement('div', {\n        staticClass: 'v-data-footer__icons-after'\n      }, after)];\n    }\n  },\n  render: function render() {\n    return this.$createElement('div', {\n      staticClass: 'v-data-footer'\n    }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'prepend'), this.genItemsPerPageSelect(), this.genPaginationInfo(), this.genIcons()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataIterator/VDataIterator.ts\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VDataIterator/VDataIterator.ts ***!\n  \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VData__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VData */ \"./src/components/VData/index.ts\");\n/* harmony import */ var _VDataFooter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDataFooter */ \"./src/components/VDataIterator/VDataFooter.ts\");\n/* harmony import */ var _mixins_mobile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/mobile */ \"./src/mixins/mobile/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Components\n\n\n\n // Mixins\n\n\n // Helpers\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_mobile__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-data-iterator',\n  props: __assign(__assign({}, _VData__WEBPACK_IMPORTED_MODULE_0__[\"VData\"].options.props), {\n    itemKey: {\n      type: String,\n      default: 'id'\n    },\n    value: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    singleSelect: Boolean,\n    expanded: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    mobileBreakpoint: __assign(__assign({}, _mixins_mobile__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.props.mobileBreakpoint), {\n      default: 600\n    }),\n    singleExpand: Boolean,\n    loading: [Boolean, String],\n    noResultsText: {\n      type: String,\n      default: '$vuetify.dataIterator.noResultsText'\n    },\n    noDataText: {\n      type: String,\n      default: '$vuetify.noDataText'\n    },\n    loadingText: {\n      type: String,\n      default: '$vuetify.dataIterator.loadingText'\n    },\n    hideDefaultFooter: Boolean,\n    footerProps: Object,\n    selectableKey: {\n      type: String,\n      default: 'isSelectable'\n    }\n  }),\n  data: function data() {\n    return {\n      selection: {},\n      expansion: {},\n      internalCurrentItems: [],\n      shiftKeyDown: false,\n      lastEntry: -1\n    };\n  },\n  computed: {\n    everyItem: function everyItem() {\n      var _this = this;\n\n      return !!this.selectableItems.length && this.selectableItems.every(function (i) {\n        return _this.isSelected(i);\n      });\n    },\n    someItems: function someItems() {\n      var _this = this;\n\n      return this.selectableItems.some(function (i) {\n        return _this.isSelected(i);\n      });\n    },\n    sanitizedFooterProps: function sanitizedFooterProps() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"camelizeObjectKeys\"])(this.footerProps);\n    },\n    selectableItems: function selectableItems() {\n      var _this = this;\n\n      return this.internalCurrentItems.filter(function (item) {\n        return _this.isSelectable(item);\n      });\n    }\n  },\n  watch: {\n    value: {\n      handler: function handler(value) {\n        var _this = this;\n\n        this.selection = value.reduce(function (selection, item) {\n          selection[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, _this.itemKey)] = item;\n          return selection;\n        }, {});\n      },\n      immediate: true\n    },\n    selection: function selection(value, old) {\n      if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"deepEqual\"])(Object.keys(value), Object.keys(old))) return;\n      this.$emit('input', Object.values(value));\n    },\n    expanded: {\n      handler: function handler(value) {\n        var _this = this;\n\n        this.expansion = value.reduce(function (expansion, item) {\n          expansion[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, _this.itemKey)] = true;\n          return expansion;\n        }, {});\n      },\n      immediate: true\n    },\n    expansion: function expansion(value, old) {\n      var _this = this;\n\n      if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"deepEqual\"])(value, old)) return;\n      var keys = Object.keys(value).filter(function (k) {\n        return value[k];\n      });\n      var expanded = !keys.length ? [] : this.items.filter(function (i) {\n        return keys.includes(String(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(i, _this.itemKey)));\n      });\n      this.$emit('update:expanded', expanded);\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    var breakingProps = [['disable-initial-sort', 'sort-by'], ['filter', 'custom-filter'], ['pagination', 'options'], ['total-items', 'server-items-length'], ['hide-actions', 'hide-default-footer'], ['rows-per-page-items', 'footer-props.items-per-page-options'], ['rows-per-page-text', 'footer-props.items-per-page-text'], ['prev-icon', 'footer-props.prev-icon'], ['next-icon', 'footer-props.next-icon']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(function (_a) {\n      var _b = __read(_a, 2),\n          original = _b[0],\n          replacement = _b[1];\n\n      if (_this.$attrs.hasOwnProperty(original)) Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"breaking\"])(original, replacement, _this);\n    });\n    var removedProps = ['expand', 'content-class', 'content-props', 'content-tag'];\n    /* istanbul ignore next */\n\n    removedProps.forEach(function (prop) {\n      if (_this.$attrs.hasOwnProperty(prop)) Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"removed\"])(prop);\n    });\n  },\n  mounted: function mounted() {\n    window.addEventListener('keydown', this.onKeyDown);\n    window.addEventListener('keyup', this.onKeyUp);\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('keydown', this.onKeyDown);\n    window.removeEventListener('keyup', this.onKeyUp);\n  },\n  methods: {\n    onKeyDown: function onKeyDown(e) {\n      this.shiftKeyDown = e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"keyCodes\"].shift || e.shiftKey;\n    },\n    onKeyUp: function onKeyUp(e) {\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"keyCodes\"].shift || !e.shiftKey) {\n        this.shiftKeyDown = false;\n      }\n    },\n    toggleSelectAll: function toggleSelectAll(value) {\n      var selection = Object.assign({}, this.selection);\n\n      for (var i = 0; i < this.selectableItems.length; i++) {\n        var item = this.selectableItems[i];\n        if (!this.isSelectable(item)) continue;\n        var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey);\n        if (value) selection[key] = item;else delete selection[key];\n      }\n\n      this.selection = selection;\n      this.$emit('toggle-select-all', {\n        items: this.internalCurrentItems,\n        value: value\n      });\n    },\n    isSelectable: function isSelectable(item) {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.selectableKey) !== false;\n    },\n    isSelected: function isSelected(item) {\n      return !!this.selection[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey)] || false;\n    },\n    select: function select(item, value, emit) {\n      var _this = this;\n\n      if (value === void 0) {\n        value = true;\n      }\n\n      if (emit === void 0) {\n        emit = true;\n      }\n\n      if (!this.isSelectable(item)) return;\n      var selection = this.singleSelect ? {} : Object.assign({}, this.selection);\n      var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey);\n      if (value) selection[key] = item;else delete selection[key];\n      var index = this.selectableItems.findIndex(function (x) {\n        return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(x, _this.itemKey) === key;\n      });\n      if (this.lastEntry === -1) this.lastEntry = index;else if (this.shiftKeyDown && !this.singleSelect && emit) {\n        var lastEntryKey = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.selectableItems[this.lastEntry], this.itemKey);\n        var lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey));\n        this.multipleSelect(lastEntryKeySelected, emit, selection, index);\n      }\n      this.lastEntry = index;\n\n      if (this.singleSelect && emit) {\n        var keys = Object.keys(this.selection);\n        var old = keys.length && Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.selection[keys[0]], this.itemKey);\n        old && old !== key && this.$emit('item-selected', {\n          item: this.selection[old],\n          value: false\n        });\n      }\n\n      this.selection = selection;\n      emit && this.$emit('item-selected', {\n        item: item,\n        value: value\n      });\n    },\n    multipleSelect: function multipleSelect(value, emit, selection, index) {\n      if (value === void 0) {\n        value = true;\n      }\n\n      if (emit === void 0) {\n        emit = true;\n      }\n\n      var start = index < this.lastEntry ? index : this.lastEntry;\n      var end = index < this.lastEntry ? this.lastEntry : index;\n\n      for (var i = start; i <= end; i++) {\n        var currentItem = this.selectableItems[i];\n        var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(currentItem, this.itemKey);\n        if (value) selection[key] = currentItem;else delete selection[key];\n        emit && this.$emit('item-selected', {\n          currentItem: currentItem,\n          value: value\n        });\n      }\n    },\n    isExpanded: function isExpanded(item) {\n      return this.expansion[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey)] || false;\n    },\n    expand: function expand(item, value) {\n      if (value === void 0) {\n        value = true;\n      }\n\n      var expansion = this.singleExpand ? {} : Object.assign({}, this.expansion);\n      var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey);\n      if (value) expansion[key] = true;else delete expansion[key];\n      this.expansion = expansion;\n      this.$emit('item-expanded', {\n        item: item,\n        value: value\n      });\n    },\n    createItemProps: function createItemProps(item, index) {\n      var _this = this;\n\n      return {\n        item: item,\n        index: index,\n        select: function select(v) {\n          return _this.select(item, v);\n        },\n        isSelected: this.isSelected(item),\n        expand: function expand(v) {\n          return _this.expand(item, v);\n        },\n        isExpanded: this.isExpanded(item),\n        isMobile: this.isMobile\n      };\n    },\n    genEmptyWrapper: function genEmptyWrapper(content) {\n      return this.$createElement('div', content);\n    },\n    genEmpty: function genEmpty(originalItemsLength, filteredItemsLength) {\n      if (originalItemsLength === 0 && this.loading) {\n        var loading = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'loading') || this.$vuetify.lang.t(this.loadingText);\n        return this.genEmptyWrapper(loading);\n      } else if (originalItemsLength === 0) {\n        var noData = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'noData') || this.$vuetify.lang.t(this.noDataText);\n        return this.genEmptyWrapper(noData);\n      } else if (filteredItemsLength === 0) {\n        var noResults = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'noResults') || this.$vuetify.lang.t(this.noResultsText);\n        return this.genEmptyWrapper(noResults);\n      }\n\n      return null;\n    },\n    genItems: function genItems(props) {\n      var _this = this;\n\n      var empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength);\n      if (empty) return [empty];\n\n      if (this.$scopedSlots.default) {\n        return this.$scopedSlots.default(__assign(__assign({}, props), {\n          isSelected: this.isSelected,\n          select: this.select,\n          isExpanded: this.isExpanded,\n          isMobile: this.isMobile,\n          expand: this.expand\n        }));\n      }\n\n      if (this.$scopedSlots.item) {\n        return props.items.map(function (item, index) {\n          return _this.$scopedSlots.item(_this.createItemProps(item, index));\n        });\n      }\n\n      return [];\n    },\n    genFooter: function genFooter(props) {\n      if (this.hideDefaultFooter) return null;\n      var data = {\n        props: __assign(__assign({}, this.sanitizedFooterProps), {\n          options: props.options,\n          pagination: props.pagination\n        }),\n        on: {\n          'update:options': function updateOptions(value) {\n            return props.updateOptions(value);\n          }\n        }\n      };\n      var scopedSlots = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getPrefixedScopedSlots\"])('footer.', this.$scopedSlots);\n      return this.$createElement(_VDataFooter__WEBPACK_IMPORTED_MODULE_1__[\"default\"], __assign({\n        scopedSlots: scopedSlots\n      }, data));\n    },\n    genDefaultScopedSlot: function genDefaultScopedSlot(props) {\n      var outerProps = __assign(__assign({}, props), {\n        someItems: this.someItems,\n        everyItem: this.everyItem,\n        toggleSelectAll: this.toggleSelectAll\n      });\n\n      return this.$createElement('div', {\n        staticClass: 'v-data-iterator'\n      }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'header', outerProps, true), this.genItems(props), this.genFooter(props), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'footer', outerProps, true)]);\n    }\n  },\n  render: function render() {\n    var _this = this;\n\n    return this.$createElement(_VData__WEBPACK_IMPORTED_MODULE_0__[\"VData\"], {\n      props: this.$props,\n      on: {\n        'update:options': function updateOptions(v, old) {\n          return !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"deepEqual\"])(v, old) && _this.$emit('update:options', v);\n        },\n        'update:page': function updatePage(v) {\n          return _this.$emit('update:page', v);\n        },\n        'update:items-per-page': function updateItemsPerPage(v) {\n          return _this.$emit('update:items-per-page', v);\n        },\n        'update:sort-by': function updateSortBy(v) {\n          return _this.$emit('update:sort-by', v);\n        },\n        'update:sort-desc': function updateSortDesc(v) {\n          return _this.$emit('update:sort-desc', v);\n        },\n        'update:group-by': function updateGroupBy(v) {\n          return _this.$emit('update:group-by', v);\n        },\n        'update:group-desc': function updateGroupDesc(v) {\n          return _this.$emit('update:group-desc', v);\n        },\n        pagination: function pagination(v, old) {\n          return !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"deepEqual\"])(v, old) && _this.$emit('pagination', v);\n        },\n        'current-items': function currentItems(v) {\n          _this.internalCurrentItems = v;\n\n          _this.$emit('current-items', v);\n        },\n        'page-count': function pageCount(v) {\n          return _this.$emit('page-count', v);\n        }\n      },\n      scopedSlots: {\n        default: this.genDefaultScopedSlot\n      }\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataIterator/index.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VDataIterator/index.ts ***!\n  \\***********************************************/\n/*! exports provided: VDataIterator, VDataFooter, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDataIterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDataIterator */ \"./src/components/VDataIterator/VDataIterator.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataIterator\", function() { return _VDataIterator__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VDataFooter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDataFooter */ \"./src/components/VDataIterator/VDataFooter.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataFooter\", function() { return _VDataFooter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VDataIterator: _VDataIterator__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VDataFooter: _VDataFooter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/MobileRow.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VDataTable/MobileRow.ts ***!\n  \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'row',\n  functional: true,\n  props: {\n    headers: Array,\n    hideDefaultHeader: Boolean,\n    index: Number,\n    item: Object,\n    rtl: Boolean\n  },\n  render: function render(h, _a) {\n    var props = _a.props,\n        slots = _a.slots,\n        data = _a.data;\n    var computedSlots = slots();\n    var columns = props.headers.map(function (header) {\n      var classes = {\n        'v-data-table__mobile-row': true\n      };\n      var children = [];\n      var value = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(props.item, header.value);\n      var slotName = header.value;\n      var scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName];\n      var regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName];\n\n      if (scopedSlot) {\n        children.push(scopedSlot({\n          item: props.item,\n          isMobile: true,\n          header: header,\n          index: props.index,\n          value: value\n        }));\n      } else if (regularSlot) {\n        children.push(regularSlot);\n      } else {\n        children.push(value == null ? value : String(value));\n      }\n\n      var mobileRowChildren = [h('div', {\n        staticClass: 'v-data-table__mobile-row__cell'\n      }, children)];\n\n      if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n        mobileRowChildren.unshift(h('div', {\n          staticClass: 'v-data-table__mobile-row__header'\n        }, [header.text]));\n      }\n\n      return h('td', {\n        class: classes\n      }, mobileRowChildren);\n    });\n    return h('tr', __assign(__assign({}, data), {\n      staticClass: 'v-data-table__mobile-table-row'\n    }), columns);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/Row.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VDataTable/Row.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Types\n\n\n // Utils\n\n\n\nfunction needsTd(slot) {\n  var _a;\n\n  return slot.length !== 1 || !['td', 'th'].includes((_a = slot[0]) === null || _a === void 0 ? void 0 : _a.tag);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'row',\n  functional: true,\n  props: {\n    headers: Array,\n    index: Number,\n    item: Object,\n    rtl: Boolean\n  },\n  render: function render(h, _a) {\n    var props = _a.props,\n        slots = _a.slots,\n        data = _a.data;\n    var computedSlots = slots();\n    var columns = props.headers.map(function (header) {\n      var children = [];\n      var value = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(props.item, header.value);\n      var slotName = header.value;\n      var scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName];\n      var regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName];\n\n      if (scopedSlot) {\n        children.push.apply(children, __spreadArray([], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"wrapInArray\"])(scopedSlot({\n          item: props.item,\n          isMobile: false,\n          header: header,\n          index: props.index,\n          value: value\n        }))), false));\n      } else if (regularSlot) {\n        children.push.apply(children, __spreadArray([], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"wrapInArray\"])(regularSlot)), false));\n      } else {\n        children.push(value == null ? value : String(value));\n      }\n\n      var textAlign = \"text-\" + (header.align || 'start');\n      return needsTd(children) ? h('td', {\n        class: [textAlign, header.cellClass, {\n          'v-data-table__divider': header.divider\n        }]\n      }, children) : children;\n    });\n    return h('tr', data, columns);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/RowGroup.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VDataTable/RowGroup.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'row-group',\n  functional: true,\n  props: {\n    value: {\n      type: Boolean,\n      default: true\n    },\n    headerClass: {\n      type: String,\n      default: 'v-row-group__header'\n    },\n    contentClass: String,\n    summaryClass: {\n      type: String,\n      default: 'v-row-group__summary'\n    }\n  },\n  render: function render(h, _a) {\n    var slots = _a.slots,\n        props = _a.props;\n    var computedSlots = slots();\n    var children = [];\n\n    if (computedSlots['column.header']) {\n      children.push(h('tr', {\n        staticClass: props.headerClass\n      }, computedSlots['column.header']));\n    } else if (computedSlots['row.header']) {\n      children.push.apply(children, __spreadArray([], __read(computedSlots['row.header']), false));\n    }\n\n    if (computedSlots['row.content'] && props.value) children.push.apply(children, __spreadArray([], __read(computedSlots['row.content']), false));\n\n    if (computedSlots['column.summary']) {\n      children.push(h('tr', {\n        staticClass: props.summaryClass\n      }, computedSlots['column.summary']));\n    } else if (computedSlots['row.summary']) {\n      children.push.apply(children, __spreadArray([], __read(computedSlots['row.summary']), false));\n    }\n\n    return children;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTable.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VDataTable/VDataTable.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTable.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VDataTable/VDataTable.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDataTable_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDataTable.sass */ \"./src/components/VDataTable/VDataTable.sass\");\n/* harmony import */ var _VDataTable_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDataTable_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VData */ \"./src/components/VData/index.ts\");\n/* harmony import */ var _VDataIterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VDataIterator */ \"./src/components/VDataIterator/index.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VDataTableHeader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VDataTableHeader */ \"./src/components/VDataTable/VDataTableHeader.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _Row__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Row */ \"./src/components/VDataTable/Row.ts\");\n/* harmony import */ var _RowGroup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./RowGroup */ \"./src/components/VDataTable/RowGroup.ts\");\n/* harmony import */ var _VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../VCheckbox/VSimpleCheckbox */ \"./src/components/VCheckbox/VSimpleCheckbox.ts\");\n/* harmony import */ var _VSimpleTable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./VSimpleTable */ \"./src/components/VDataTable/VSimpleTable.ts\");\n/* harmony import */ var _MobileRow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./MobileRow */ \"./src/components/VDataTable/MobileRow.ts\");\n/* harmony import */ var _mixins_loadable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../mixins/loadable */ \"./src/mixins/loadable/index.ts\");\n/* harmony import */ var _mixins_mouse__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../mixins/mouse */ \"./src/mixins/mouse/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n // Components\n\n\n\n\n // import VVirtualTable from './VVirtualTable'\n\n\n\n\n\n\n // Mixins\n\n\n // Directives\n\n // Helpers\n\n\n\n\n\n\nfunction filterFn(item, search, filter) {\n  return function (header) {\n    var value = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getObjectValueByPath\"])(item, header.value);\n    return header.filter ? header.filter(value, search, item) : filter(value, search, item);\n  };\n}\n\nfunction searchTableItems(items, search, headersWithCustomFilters, headersWithoutCustomFilters, customFilter, filterMode) {\n  search = typeof search === 'string' ? search.trim() : null;\n\n  if (filterMode === 'union') {\n    // If the `search` property is empty and there are no custom filters in use, there is nothing to do.\n    if (!(search && headersWithoutCustomFilters.length) && !headersWithCustomFilters.length) return items;\n    return items.filter(function (item) {\n      // Headers with custom filters are evaluated whether or not a search term has been provided.\n      if (headersWithCustomFilters.length && headersWithCustomFilters.every(filterFn(item, search, _util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"defaultFilter\"]))) {\n        return true;\n      } // Otherwise, the `search` property is used to filter columns without a custom filter.\n\n\n      return search && headersWithoutCustomFilters.some(filterFn(item, search, customFilter));\n    });\n  } else if (filterMode === 'intersection') {\n    return items.filter(function (item) {\n      // Headers with custom filters are evaluated whether or not a search term has been provided.\n      // We need to match every filter to be included in the results.\n      var matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, _util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"defaultFilter\"])); // Headers without custom filters are only filtered by the `search` property if it is defined.\n      // We only need a single column to match the search term to be included in the results.\n\n      var matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter));\n      return matchesColumnFilters && matchesSearchTerm;\n    });\n  } else {\n    return items;\n  }\n}\n/* @vue/component */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_VDataIterator__WEBPACK_IMPORTED_MODULE_2__[\"VDataIterator\"], _mixins_loadable__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _mixins_mouse__WEBPACK_IMPORTED_MODULE_12__[\"default\"]).extend({\n  name: 'v-data-table',\n  // https://github.com/vuejs/vue/issues/6872\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n  },\n  props: {\n    headers: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    showSelect: Boolean,\n    checkboxColor: String,\n    showExpand: Boolean,\n    showGroupBy: Boolean,\n    // TODO: Fix\n    // virtualRows: Boolean,\n    height: [Number, String],\n    hideDefaultHeader: Boolean,\n    caption: String,\n    dense: Boolean,\n    headerProps: Object,\n    calculateWidths: Boolean,\n    fixedHeader: Boolean,\n    headersLength: Number,\n    expandIcon: {\n      type: String,\n      default: '$expand'\n    },\n    customFilter: {\n      type: Function,\n      default: _util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"defaultFilter\"]\n    },\n    filterMode: {\n      type: String,\n      default: 'intersection'\n    },\n    itemClass: {\n      type: [String, Function],\n      default: function _default() {\n        return '';\n      }\n    },\n    itemStyle: {\n      type: [String, Function],\n      default: function _default() {\n        return '';\n      }\n    },\n    loaderHeight: {\n      type: [Number, String],\n      default: 4\n    }\n  },\n  data: function data() {\n    return {\n      internalGroupBy: [],\n      openCache: {},\n      widths: []\n    };\n  },\n  computed: {\n    computedHeaders: function computedHeaders() {\n      var _this = this;\n\n      if (!this.headers) return [];\n      var headers = this.headers.filter(function (h) {\n        return h.value === undefined || !_this.internalGroupBy.find(function (v) {\n          return v === h.value;\n        });\n      });\n      var defaultHeader = {\n        text: '',\n        sortable: false,\n        width: '1px'\n      };\n\n      if (this.showSelect) {\n        var index = headers.findIndex(function (h) {\n          return h.value === 'data-table-select';\n        });\n        if (index < 0) headers.unshift(__assign(__assign({}, defaultHeader), {\n          value: 'data-table-select'\n        }));else headers.splice(index, 1, __assign(__assign({}, defaultHeader), headers[index]));\n      }\n\n      if (this.showExpand) {\n        var index = headers.findIndex(function (h) {\n          return h.value === 'data-table-expand';\n        });\n        if (index < 0) headers.unshift(__assign(__assign({}, defaultHeader), {\n          value: 'data-table-expand'\n        }));else headers.splice(index, 1, __assign(__assign({}, defaultHeader), headers[index]));\n      }\n\n      return headers;\n    },\n    colspanAttrs: function colspanAttrs() {\n      return this.isMobile ? undefined : {\n        colspan: this.headersLength || this.computedHeaders.length\n      };\n    },\n    columnSorters: function columnSorters() {\n      return this.computedHeaders.reduce(function (acc, header) {\n        if (header.sort) acc[header.value] = header.sort;\n        return acc;\n      }, {});\n    },\n    headersWithCustomFilters: function headersWithCustomFilters() {\n      return this.headers.filter(function (header) {\n        return header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true);\n      });\n    },\n    headersWithoutCustomFilters: function headersWithoutCustomFilters() {\n      return this.headers.filter(function (header) {\n        return !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true);\n      });\n    },\n    sanitizedHeaderProps: function sanitizedHeaderProps() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"camelizeObjectKeys\"])(this.headerProps);\n    },\n    computedItemsPerPage: function computedItemsPerPage() {\n      var itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage;\n      var itemsPerPageOptions = this.sanitizedFooterProps.itemsPerPageOptions;\n\n      if (itemsPerPageOptions && !itemsPerPageOptions.find(function (item) {\n        return typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage;\n      })) {\n        var firstOption = itemsPerPageOptions[0];\n        return _typeof(firstOption) === 'object' ? firstOption.value : firstOption;\n      }\n\n      return itemsPerPage;\n    },\n    groupByText: function groupByText() {\n      var _this = this;\n\n      var _a, _b, _c;\n\n      return (_c = (_b = (_a = this.headers) === null || _a === void 0 ? void 0 : _a.find(function (header) {\n        var _a;\n\n        return header.value === ((_a = _this.internalGroupBy) === null || _a === void 0 ? void 0 : _a[0]);\n      })) === null || _b === void 0 ? void 0 : _b.text) !== null && _c !== void 0 ? _c : '';\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    var breakingProps = [['sort-icon', 'header-props.sort-icon'], ['hide-headers', 'hide-default-header'], ['select-all', 'show-select']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(function (_a) {\n      var _b = __read(_a, 2),\n          original = _b[0],\n          replacement = _b[1];\n\n      if (_this.$attrs.hasOwnProperty(original)) Object(_util_console__WEBPACK_IMPORTED_MODULE_16__[\"breaking\"])(original, replacement, _this);\n    });\n  },\n  mounted: function mounted() {\n    // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n    //   const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n    //   if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n    // }\n    if (this.calculateWidths) {\n      window.addEventListener('resize', this.calcWidths);\n      this.calcWidths();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (this.calculateWidths) {\n      window.removeEventListener('resize', this.calcWidths);\n    }\n  },\n  methods: {\n    calcWidths: function calcWidths() {\n      this.widths = Array.from(this.$el.querySelectorAll('th')).map(function (e) {\n        return e.clientWidth;\n      });\n    },\n    customFilterWithColumns: function customFilterWithColumns(items, search) {\n      return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter, this.filterMode);\n    },\n    customSortWithHeaders: function customSortWithHeaders(items, sortBy, sortDesc, locale) {\n      return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters);\n    },\n    createItemProps: function createItemProps(item, index) {\n      var _this = this;\n\n      var data = __assign(__assign({}, _VDataIterator__WEBPACK_IMPORTED_MODULE_2__[\"VDataIterator\"].options.methods.createItemProps.call(this, item, index)), {\n        headers: this.computedHeaders\n      });\n\n      return __assign(__assign({}, data), {\n        attrs: {\n          class: {\n            'v-data-table__selected': data.isSelected\n          }\n        },\n        on: __assign(__assign({}, this.getDefaultMouseEventHandlers(':row', function () {\n          return data;\n        }, true)), {\n          // TODO: the first argument should be the event, and the second argument should be data,\n          // but this is a breaking change so it's for v3\n          click: function click(event) {\n            return _this.$emit('click:row', item, data, event);\n          }\n        })\n      });\n    },\n    genCaption: function genCaption(props) {\n      if (this.caption) return [this.$createElement('caption', [this.caption])];\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlot\"])(this, 'caption', props, true);\n    },\n    genColgroup: function genColgroup(props) {\n      var _this = this;\n\n      return this.$createElement('colgroup', this.computedHeaders.map(function (header) {\n        return _this.$createElement('col', {\n          class: {\n            divider: header.divider\n          }\n        });\n      }));\n    },\n    genLoading: function genLoading() {\n      var th = this.$createElement('th', {\n        staticClass: 'column',\n        attrs: this.colspanAttrs\n      }, [this.genProgress()]);\n      var tr = this.$createElement('tr', {\n        staticClass: 'v-data-table__progress'\n      }, [th]);\n      return this.$createElement('thead', [tr]);\n    },\n    genHeaders: function genHeaders(props) {\n      var data = {\n        props: __assign(__assign({}, this.sanitizedHeaderProps), {\n          headers: this.computedHeaders,\n          options: props.options,\n          mobile: this.isMobile,\n          showGroupBy: this.showGroupBy,\n          checkboxColor: this.checkboxColor,\n          someItems: this.someItems,\n          everyItem: this.everyItem,\n          singleSelect: this.singleSelect,\n          disableSort: this.disableSort\n        }),\n        on: {\n          sort: props.sort,\n          group: props.group,\n          'toggle-select-all': this.toggleSelectAll\n        }\n      }; // TODO: rename to 'head'? (thead, tbody, tfoot)\n\n      var children = [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlot\"])(this, 'header', __assign(__assign({}, data), {\n        isMobile: this.isMobile\n      }))];\n\n      if (!this.hideDefaultHeader) {\n        var scopedSlots = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getPrefixedScopedSlots\"])('header.', this.$scopedSlots);\n        children.push(this.$createElement(_VDataTableHeader__WEBPACK_IMPORTED_MODULE_4__[\"default\"], __assign(__assign({}, data), {\n          scopedSlots: scopedSlots\n        })));\n      }\n\n      if (this.loading) children.push(this.genLoading());\n      return children;\n    },\n    genEmptyWrapper: function genEmptyWrapper(content) {\n      return this.$createElement('tr', {\n        staticClass: 'v-data-table__empty-wrapper'\n      }, [this.$createElement('td', {\n        attrs: this.colspanAttrs\n      }, content)]);\n    },\n    genItems: function genItems(items, props) {\n      var empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength);\n      if (empty) return [empty];\n      return props.groupedItems ? this.genGroupedRows(props.groupedItems, props) : this.genRows(items, props);\n    },\n    genGroupedRows: function genGroupedRows(groupedItems, props) {\n      var _this = this;\n\n      return groupedItems.map(function (group) {\n        if (!_this.openCache.hasOwnProperty(group.name)) _this.$set(_this.openCache, group.name, true);\n\n        if (_this.$scopedSlots.group) {\n          return _this.$scopedSlots.group({\n            group: group.name,\n            options: props.options,\n            isMobile: _this.isMobile,\n            items: group.items,\n            headers: _this.computedHeaders\n          });\n        } else {\n          return _this.genDefaultGroupedRow(group.name, group.items, props);\n        }\n      });\n    },\n    genDefaultGroupedRow: function genDefaultGroupedRow(group, items, props) {\n      var _this = this;\n\n      var isOpen = !!this.openCache[group];\n      var children = [this.$createElement('template', {\n        slot: 'row.content'\n      }, this.genRows(items, props))];\n\n      var toggleFn = function toggleFn() {\n        return _this.$set(_this.openCache, group, !_this.openCache[group]);\n      };\n\n      var removeFn = function removeFn() {\n        return props.updateOptions({\n          groupBy: [],\n          groupDesc: []\n        });\n      };\n\n      if (this.$scopedSlots['group.header']) {\n        children.unshift(this.$createElement('template', {\n          slot: 'column.header'\n        }, [this.$scopedSlots['group.header']({\n          group: group,\n          groupBy: props.options.groupBy,\n          isMobile: this.isMobile,\n          items: items,\n          headers: this.computedHeaders,\n          isOpen: isOpen,\n          toggle: toggleFn,\n          remove: removeFn\n        })]));\n      } else {\n        var toggle = this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          staticClass: 'ma-0',\n          props: {\n            icon: true,\n            small: true\n          },\n          on: {\n            click: toggleFn\n          }\n        }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_5__[\"default\"], [isOpen ? '$minus' : '$plus'])]);\n        var remove = this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          staticClass: 'ma-0',\n          props: {\n            icon: true,\n            small: true\n          },\n          on: {\n            click: removeFn\n          }\n        }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_5__[\"default\"], ['$close'])]);\n        var column = this.$createElement('td', {\n          staticClass: 'text-start',\n          attrs: this.colspanAttrs\n        }, [toggle, this.groupByText + \": \" + group, remove]);\n        children.unshift(this.$createElement('template', {\n          slot: 'column.header'\n        }, [column]));\n      }\n\n      if (this.$scopedSlots['group.summary']) {\n        children.push(this.$createElement('template', {\n          slot: 'column.summary'\n        }, [this.$scopedSlots['group.summary']({\n          group: group,\n          groupBy: props.options.groupBy,\n          isMobile: this.isMobile,\n          items: items,\n          headers: this.computedHeaders,\n          isOpen: isOpen,\n          toggle: toggleFn\n        })]));\n      }\n\n      return this.$createElement(_RowGroup__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n        key: group,\n        props: {\n          value: isOpen\n        }\n      }, children);\n    },\n    genRows: function genRows(items, props) {\n      return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props);\n    },\n    genScopedRows: function genScopedRows(items, props) {\n      var rows = [];\n\n      for (var i = 0; i < items.length; i++) {\n        var item = items[i];\n        rows.push(this.$scopedSlots.item(__assign(__assign({}, this.createItemProps(item, i)), {\n          isMobile: this.isMobile\n        })));\n\n        if (this.isExpanded(item)) {\n          rows.push(this.$scopedSlots['expanded-item']({\n            headers: this.computedHeaders,\n            isMobile: this.isMobile,\n            index: i,\n            item: item\n          }));\n        }\n      }\n\n      return rows;\n    },\n    genDefaultRows: function genDefaultRows(items, props) {\n      var _this = this;\n\n      return this.$scopedSlots['expanded-item'] ? items.map(function (item, index) {\n        return _this.genDefaultExpandedRow(item, index);\n      }) : items.map(function (item, index) {\n        return _this.genDefaultSimpleRow(item, index);\n      });\n    },\n    genDefaultExpandedRow: function genDefaultExpandedRow(item, index) {\n      var isExpanded = this.isExpanded(item);\n      var classes = {\n        'v-data-table__expanded v-data-table__expanded__row': isExpanded\n      };\n      var headerRow = this.genDefaultSimpleRow(item, index, classes);\n      var expandedRow = this.$createElement('tr', {\n        staticClass: 'v-data-table__expanded v-data-table__expanded__content'\n      }, [this.$scopedSlots['expanded-item']({\n        headers: this.computedHeaders,\n        isMobile: this.isMobile,\n        item: item\n      })]);\n      return this.$createElement(_RowGroup__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n        props: {\n          value: isExpanded\n        }\n      }, [this.$createElement('template', {\n        slot: 'row.header'\n      }, [headerRow]), this.$createElement('template', {\n        slot: 'row.content'\n      }, [expandedRow])]);\n    },\n    genDefaultSimpleRow: function genDefaultSimpleRow(item, index, classes) {\n      var _this = this;\n\n      if (classes === void 0) {\n        classes = {};\n      }\n\n      var scopedSlots = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getPrefixedScopedSlots\"])('item.', this.$scopedSlots);\n      var data = this.createItemProps(item, index);\n\n      if (this.showSelect) {\n        var slot_1 = scopedSlots['data-table-select'];\n        scopedSlots['data-table-select'] = slot_1 ? function () {\n          return slot_1(__assign(__assign({}, data), {\n            isMobile: _this.isMobile\n          }));\n        } : function () {\n          var _a;\n\n          return _this.$createElement(_VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n            staticClass: 'v-data-table__checkbox',\n            props: {\n              value: data.isSelected,\n              disabled: !_this.isSelectable(item),\n              color: (_a = _this.checkboxColor) !== null && _a !== void 0 ? _a : ''\n            },\n            on: {\n              input: function input(val) {\n                return data.select(val);\n              }\n            }\n          });\n        };\n      }\n\n      if (this.showExpand) {\n        var slot_2 = scopedSlots['data-table-expand'];\n        scopedSlots['data-table-expand'] = slot_2 ? function () {\n          return slot_2(data);\n        } : function () {\n          return _this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n            staticClass: 'v-data-table__expand-icon',\n            class: {\n              'v-data-table__expand-icon--active': data.isExpanded\n            },\n            on: {\n              click: function click(e) {\n                e.stopPropagation();\n                data.expand(!data.isExpanded);\n              }\n            }\n          }, [_this.expandIcon]);\n        };\n      }\n\n      return this.$createElement(this.isMobile ? _MobileRow__WEBPACK_IMPORTED_MODULE_10__[\"default\"] : _Row__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n        key: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getObjectValueByPath\"])(item, this.itemKey),\n        class: Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_17__[\"mergeClasses\"])(__assign(__assign({}, classes), {\n          'v-data-table__selected': data.isSelected\n        }), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getPropertyFromItem\"])(item, this.itemClass)),\n        style: Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_17__[\"mergeStyles\"])({}, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getPropertyFromItem\"])(item, this.itemStyle)),\n        props: {\n          headers: this.computedHeaders,\n          hideDefaultHeader: this.hideDefaultHeader,\n          index: index,\n          item: item,\n          rtl: this.$vuetify.rtl\n        },\n        scopedSlots: scopedSlots,\n        on: data.on\n      });\n    },\n    genBody: function genBody(props) {\n      var data = __assign(__assign({}, props), {\n        expand: this.expand,\n        headers: this.computedHeaders,\n        isExpanded: this.isExpanded,\n        isMobile: this.isMobile,\n        isSelected: this.isSelected,\n        select: this.select\n      });\n\n      if (this.$scopedSlots.body) {\n        return this.$scopedSlots.body(data);\n      }\n\n      return this.$createElement('tbody', [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlot\"])(this, 'body.prepend', data, true), this.genItems(props.items, props), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlot\"])(this, 'body.append', data, true)]);\n    },\n    genFoot: function genFoot(props) {\n      var _a, _b;\n\n      return (_b = (_a = this.$scopedSlots).foot) === null || _b === void 0 ? void 0 : _b.call(_a, props);\n    },\n    genFooters: function genFooters(props) {\n      var data = {\n        props: __assign({\n          options: props.options,\n          pagination: props.pagination,\n          itemsPerPageText: '$vuetify.dataTable.itemsPerPageText'\n        }, this.sanitizedFooterProps),\n        on: {\n          'update:options': function updateOptions(value) {\n            return props.updateOptions(value);\n          }\n        },\n        widths: this.widths,\n        headers: this.computedHeaders\n      };\n      var children = [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlot\"])(this, 'footer', data, true)];\n\n      if (!this.hideDefaultFooter) {\n        children.push(this.$createElement(_VDataIterator__WEBPACK_IMPORTED_MODULE_2__[\"VDataFooter\"], __assign(__assign({}, data), {\n          scopedSlots: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getPrefixedScopedSlots\"])('footer.', this.$scopedSlots)\n        })));\n      }\n\n      return children;\n    },\n    genDefaultScopedSlot: function genDefaultScopedSlot(props) {\n      var simpleProps = {\n        height: this.height,\n        fixedHeader: this.fixedHeader,\n        dense: this.dense\n      }; // if (this.virtualRows) {\n      //   return this.$createElement(VVirtualTable, {\n      //     props: Object.assign(simpleProps, {\n      //       items: props.items,\n      //       height: this.height,\n      //       rowHeight: this.dense ? 24 : 48,\n      //       headerHeight: this.dense ? 32 : 48,\n      //       // TODO: expose rest of props from virtual table?\n      //     }),\n      //     scopedSlots: {\n      //       items: ({ items }) => this.genItems(items, props) as any,\n      //     },\n      //   }, [\n      //     this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n      //     this.proxySlot('bottom', this.genFooters(props)),\n      //   ])\n      // }\n\n      return this.$createElement(_VSimpleTable__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n        props: simpleProps,\n        class: {\n          'v-data-table--mobile': this.isMobile,\n          'v-data-table--selectable': this.showSelect\n        }\n      }, [this.proxySlot('top', Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlot\"])(this, 'top', __assign(__assign({}, props), {\n        isMobile: this.isMobile\n      }), true)), this.genCaption(props), this.genColgroup(props), this.genHeaders(props), this.genBody(props), this.genFoot(props), this.proxySlot('bottom', this.genFooters(props))]);\n    },\n    proxySlot: function proxySlot(slot, content) {\n      return this.$createElement('template', {\n        slot: slot\n      }, content);\n    }\n  },\n  render: function render() {\n    var _this = this;\n\n    return this.$createElement(_VData__WEBPACK_IMPORTED_MODULE_1__[\"VData\"], {\n      props: __assign(__assign({}, this.$props), {\n        customFilter: this.customFilterWithColumns,\n        customSort: this.customSortWithHeaders,\n        itemsPerPage: this.computedItemsPerPage\n      }),\n      on: {\n        'update:options': function updateOptions(v, old) {\n          _this.internalGroupBy = v.groupBy || [];\n          !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"deepEqual\"])(v, old) && _this.$emit('update:options', v);\n        },\n        'update:page': function updatePage(v) {\n          return _this.$emit('update:page', v);\n        },\n        'update:items-per-page': function updateItemsPerPage(v) {\n          return _this.$emit('update:items-per-page', v);\n        },\n        'update:sort-by': function updateSortBy(v) {\n          return _this.$emit('update:sort-by', v);\n        },\n        'update:sort-desc': function updateSortDesc(v) {\n          return _this.$emit('update:sort-desc', v);\n        },\n        'update:group-by': function updateGroupBy(v) {\n          return _this.$emit('update:group-by', v);\n        },\n        'update:group-desc': function updateGroupDesc(v) {\n          return _this.$emit('update:group-desc', v);\n        },\n        pagination: function pagination(v, old) {\n          return !Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"deepEqual\"])(v, old) && _this.$emit('pagination', v);\n        },\n        'current-items': function currentItems(v) {\n          _this.internalCurrentItems = v;\n\n          _this.$emit('current-items', v);\n        },\n        'page-count': function pageCount(v) {\n          return _this.$emit('page-count', v);\n        }\n      },\n      scopedSlots: {\n        default: this.genDefaultScopedSlot\n      }\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTableHeader.sass\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VDataTable/VDataTableHeader.sass ***!\n  \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTableHeader.ts\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VDataTable/VDataTableHeader.ts ***!\n  \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDataTableHeader_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDataTableHeader.sass */ \"./src/components/VDataTable/VDataTableHeader.sass\");\n/* harmony import */ var _VDataTableHeader_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDataTableHeader_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VDataTableHeaderMobile__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDataTableHeaderMobile */ \"./src/components/VDataTable/VDataTableHeaderMobile.ts\");\n/* harmony import */ var _VDataTableHeaderDesktop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VDataTableHeaderDesktop */ \"./src/components/VDataTable/VDataTableHeaderDesktop.ts\");\n/* harmony import */ var _mixins_header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mixins/header */ \"./src/components/VDataTable/mixins/header.ts\");\n/* harmony import */ var _util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/dedupeModelListeners */ \"./src/util/dedupeModelListeners.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/rebuildFunctionalSlots */ \"./src/util/rebuildFunctionalSlots.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_7__);\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n\n // Mixins\n\n // Utilities\n\n\n\n // Types\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_7___default.a.extend({\n  name: 'v-data-table-header',\n  functional: true,\n  props: __assign(__assign({}, _mixins_header__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.props), {\n    mobile: Boolean\n  }),\n  render: function render(h, _a) {\n    var props = _a.props,\n        data = _a.data,\n        slots = _a.slots;\n    Object(_util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(data);\n    var children = Object(_util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots(), h);\n    data = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(data, {\n      props: props\n    });\n\n    if (props.mobile) {\n      return h(_VDataTableHeaderMobile__WEBPACK_IMPORTED_MODULE_1__[\"default\"], data, children);\n    } else {\n      return h(_VDataTableHeaderDesktop__WEBPACK_IMPORTED_MODULE_2__[\"default\"], data, children);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTableHeaderDesktop.ts\":\n/*!**************************************************************!*\\\n  !*** ./src/components/VDataTable/VDataTableHeaderDesktop.ts ***!\n  \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mixins/header */ \"./src/components/VDataTable/mixins/header.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_header__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n  name: 'v-data-table-header-desktop',\n  methods: {\n    genGroupByToggle: function genGroupByToggle(header) {\n      var _this = this;\n\n      return this.$createElement('span', {\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n\n            _this.$emit('group', header.value);\n          }\n        }\n      }, ['group']);\n    },\n    getAria: function getAria(beingSorted, isDesc) {\n      var _this = this;\n\n      var $t = function $t(key) {\n        return _this.$vuetify.lang.t(\"$vuetify.dataTable.ariaLabel.\" + key);\n      };\n\n      var ariaSort = 'none';\n      var ariaLabel = [$t('sortNone'), $t('activateAscending')];\n\n      if (!beingSorted) {\n        return {\n          ariaSort: ariaSort,\n          ariaLabel: ariaLabel.join(' ')\n        };\n      }\n\n      if (isDesc) {\n        ariaSort = 'descending';\n        ariaLabel = [$t('sortDescending'), $t(this.options.mustSort ? 'activateAscending' : 'activateNone')];\n      } else {\n        ariaSort = 'ascending';\n        ariaLabel = [$t('sortAscending'), $t('activateDescending')];\n      }\n\n      return {\n        ariaSort: ariaSort,\n        ariaLabel: ariaLabel.join(' ')\n      };\n    },\n    genHeader: function genHeader(header) {\n      var _this = this;\n\n      var data = {\n        attrs: {\n          role: 'columnheader',\n          scope: 'col',\n          'aria-label': header.text || ''\n        },\n        style: {\n          width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(header.width),\n          minWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(header.width)\n        },\n        class: __spreadArray(__spreadArray([\"text-\" + (header.align || 'start')], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"wrapInArray\"])(header.class)), false), [header.divider && 'v-data-table__divider'], false),\n        on: {}\n      };\n      var children = [];\n\n      if (header.value === 'data-table-select' && !this.singleSelect) {\n        return this.$createElement('th', data, [this.genSelectAll()]);\n      }\n\n      children.push(this.$scopedSlots.hasOwnProperty(header.value) ? this.$scopedSlots[header.value]({\n        header: header\n      }) : this.$createElement('span', [header.text]));\n\n      if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n        data.on.click = function () {\n          return _this.$emit('sort', header.value);\n        };\n\n        var sortIndex = this.options.sortBy.findIndex(function (k) {\n          return k === header.value;\n        });\n        var beingSorted = sortIndex >= 0;\n        var isDesc = this.options.sortDesc[sortIndex];\n        data.class.push('sortable');\n\n        var _a = this.getAria(beingSorted, isDesc),\n            ariaLabel = _a.ariaLabel,\n            ariaSort = _a.ariaSort;\n\n        data.attrs['aria-label'] += \"\" + (header.text ? ': ' : '') + ariaLabel;\n        data.attrs['aria-sort'] = ariaSort;\n\n        if (beingSorted) {\n          data.class.push('active');\n          data.class.push(isDesc ? 'desc' : 'asc');\n        }\n\n        if (header.align === 'end') children.unshift(this.genSortIcon());else children.push(this.genSortIcon());\n\n        if (this.options.multiSort && beingSorted) {\n          children.push(this.$createElement('span', {\n            class: 'v-data-table-header__sort-badge'\n          }, [String(sortIndex + 1)]));\n        }\n      }\n\n      if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header));\n      return this.$createElement('th', data, children);\n    }\n  },\n  render: function render() {\n    var _this = this;\n\n    return this.$createElement('thead', {\n      staticClass: 'v-data-table-header'\n    }, [this.$createElement('tr', this.headers.map(function (header) {\n      return _this.genHeader(header);\n    }))]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTableHeaderMobile.ts\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VDataTable/VDataTableHeaderMobile.ts ***!\n  \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.ts\");\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VChip */ \"./src/components/VChip/index.ts\");\n/* harmony import */ var _mixins_header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mixins/header */ \"./src/components/VDataTable/mixins/header.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_header__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-data-table-header-mobile',\n  props: {\n    sortByText: {\n      type: String,\n      default: '$vuetify.dataTable.sortBy'\n    }\n  },\n  methods: {\n    genSortChip: function genSortChip(props) {\n      var _this = this;\n\n      var children = [props.item.text];\n      var sortIndex = this.options.sortBy.findIndex(function (k) {\n        return k === props.item.value;\n      });\n      var beingSorted = sortIndex >= 0;\n      var isDesc = this.options.sortDesc[sortIndex];\n      children.push(this.$createElement('div', {\n        staticClass: 'v-chip__close',\n        class: {\n          sortable: true,\n          active: beingSorted,\n          asc: beingSorted && !isDesc,\n          desc: beingSorted && isDesc\n        }\n      }, [this.genSortIcon()]));\n      return this.$createElement(_VChip__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        staticClass: 'sortable',\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n\n            _this.$emit('sort', props.item.value);\n          }\n        }\n      }, children);\n    },\n    genSortSelect: function genSortSelect(items) {\n      var _this = this;\n\n      return this.$createElement(_VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          label: this.$vuetify.lang.t(this.sortByText),\n          items: items,\n          hideDetails: true,\n          multiple: this.options.multiSort,\n          value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n          menuProps: {\n            closeOnContentClick: true\n          }\n        },\n        on: {\n          change: function change(v) {\n            return _this.$emit('sort', v);\n          }\n        },\n        scopedSlots: {\n          selection: function selection(props) {\n            return _this.genSortChip(props);\n          }\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var children = [];\n    var header = this.headers.find(function (h) {\n      return h.value === 'data-table-select';\n    });\n\n    if (header && !this.singleSelect) {\n      children.push(this.$createElement('div', {\n        class: __spreadArray(['v-data-table-header-mobile__select'], __read(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"wrapInArray\"])(header.class)), false),\n        attrs: {\n          width: header.width\n        }\n      }, [this.genSelectAll()]));\n    }\n\n    var sortHeaders = this.headers.filter(function (h) {\n      return h.sortable !== false && h.value !== 'data-table-select';\n    }).map(function (h) {\n      return {\n        text: h.text,\n        value: h.value\n      };\n    });\n\n    if (!this.disableSort && sortHeaders.length) {\n      children.push(this.genSortSelect(sortHeaders));\n    }\n\n    var th = children.length ? h('th', [h('div', {\n      staticClass: 'v-data-table-header-mobile__wrapper'\n    }, children)]) : undefined;\n    var tr = h('tr', [th]);\n    return h('thead', {\n      staticClass: 'v-data-table-header v-data-table-header-mobile'\n    }, [tr]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VEditDialog.sass\":\n/*!****************************************************!*\\\n  !*** ./src/components/VDataTable/VEditDialog.sass ***!\n  \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VEditDialog.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VDataTable/VEditDialog.ts ***!\n  \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VEditDialog_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VEditDialog.sass */ \"./src/components/VDataTable/VEditDialog.sass\");\n/* harmony import */ var _VEditDialog_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VEditDialog_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/returnable */ \"./src/mixins/returnable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VMenu */ \"./src/components/VMenu/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Styles\n // Mixins\n\n\n // Utils\n\n // Component\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_returnable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-edit-dialog',\n  props: {\n    cancelText: {\n      default: 'Cancel'\n    },\n    large: Boolean,\n    eager: Boolean,\n    persistent: Boolean,\n    saveText: {\n      default: 'Save'\n    },\n    transition: {\n      type: String,\n      default: 'slide-x-reverse-transition'\n    }\n  },\n  data: function data() {\n    return {\n      isActive: false\n    };\n  },\n  watch: {\n    isActive: function isActive(val) {\n      if (val) {\n        this.$emit('open');\n        setTimeout(this.focus, 50); // Give DOM time to paint\n      } else {\n        this.$emit('close');\n      }\n    }\n  },\n  methods: {\n    cancel: function cancel() {\n      this.isActive = false;\n      this.$emit('cancel');\n    },\n    focus: function focus() {\n      var input = this.$refs.content.querySelector('input');\n      input && input.focus();\n    },\n    genButton: function genButton(fn, text) {\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n        props: {\n          text: true,\n          color: 'primary',\n          light: true\n        },\n        on: {\n          click: fn\n        }\n      }, text);\n    },\n    genActions: function genActions() {\n      var _this = this;\n\n      return this.$createElement('div', {\n        class: 'v-small-dialog__actions'\n      }, [this.genButton(this.cancel, this.cancelText), this.genButton(function () {\n        _this.save(_this.returnValue);\n\n        _this.$emit('save');\n      }, this.saveText)]);\n    },\n    genContent: function genContent() {\n      var _this = this;\n\n      return this.$createElement('div', {\n        staticClass: 'v-small-dialog__content',\n        on: {\n          keydown: function keydown(e) {\n            e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].esc && _this.cancel();\n\n            if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].enter) {\n              _this.save(_this.returnValue);\n\n              _this.$emit('save');\n            }\n          }\n        },\n        ref: 'content'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'input'));\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    return h(_VMenu__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n      staticClass: 'v-small-dialog',\n      class: this.themeClasses,\n      props: {\n        contentClass: 'v-small-dialog__menu-content',\n        transition: this.transition,\n        origin: 'top right',\n        right: true,\n        value: this.isActive,\n        closeOnClick: !this.persistent,\n        closeOnContentClick: false,\n        eager: this.eager,\n        light: this.light,\n        dark: this.dark\n      },\n      on: {\n        input: function input(val) {\n          return _this.isActive = val;\n        }\n      },\n      scopedSlots: {\n        activator: function activator(_a) {\n          var on = _a.on;\n          return h('div', {\n            staticClass: 'v-small-dialog__activator',\n            on: on\n          }, [h('span', {\n            staticClass: 'v-small-dialog__activator__content'\n          }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(_this))]);\n        }\n      }\n    }, [this.genContent(), this.large ? this.genActions() : null]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VSimpleTable.sass\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VDataTable/VSimpleTable.sass ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VSimpleTable.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VDataTable/VSimpleTable.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSimpleTable_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSimpleTable.sass */ \"./src/components/VDataTable/VSimpleTable.sass\");\n/* harmony import */ var _VSimpleTable_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSimpleTable_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-simple-table',\n  props: {\n    dense: Boolean,\n    fixedHeader: Boolean,\n    height: [Number, String]\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-data-table--dense': this.dense,\n        'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n        'v-data-table--fixed-header': this.fixedHeader,\n        'v-data-table--has-top': !!this.$slots.top,\n        'v-data-table--has-bottom': !!this.$slots.bottom\n      }, this.themeClasses);\n    }\n  },\n  methods: {\n    genWrapper: function genWrapper() {\n      return this.$slots.wrapper || this.$createElement('div', {\n        staticClass: 'v-data-table__wrapper',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"convertToUnit\"])(this.height)\n        }\n      }, [this.$createElement('table', Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getSlot\"])(this))]);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-data-table',\n      class: this.classes\n    }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getSlot\"])(this, 'top'), this.genWrapper(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getSlot\"])(this, 'bottom')]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VVirtualTable.sass\":\n/*!******************************************************!*\\\n  !*** ./src/components/VDataTable/VVirtualTable.sass ***!\n  \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VVirtualTable.ts\":\n/*!****************************************************!*\\\n  !*** ./src/components/VDataTable/VVirtualTable.ts ***!\n  \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VVirtualTable_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VVirtualTable.sass */ \"./src/components/VDataTable/VVirtualTable.sass\");\n/* harmony import */ var _VVirtualTable_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VVirtualTable_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSimpleTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VSimpleTable */ \"./src/components/VDataTable/VSimpleTable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n // Components\n\n\n // Utiltiies\n\n // Types\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_VSimpleTable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-virtual-table',\n  props: {\n    chunkSize: {\n      type: Number,\n      default: 25\n    },\n    headerHeight: {\n      type: Number,\n      default: 48\n    },\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    rowHeight: {\n      type: Number,\n      default: 48\n    }\n  },\n  data: function data() {\n    return {\n      scrollTop: 0,\n      oldChunk: 0,\n      scrollDebounce: null,\n      invalidateCache: false\n    };\n  },\n  computed: {\n    itemsLength: function itemsLength() {\n      return this.items.length;\n    },\n    totalHeight: function totalHeight() {\n      return this.itemsLength * this.rowHeight + this.headerHeight;\n    },\n    topIndex: function topIndex() {\n      return Math.floor(this.scrollTop / this.rowHeight);\n    },\n    chunkIndex: function chunkIndex() {\n      return Math.floor(this.topIndex / this.chunkSize);\n    },\n    startIndex: function startIndex() {\n      return Math.max(0, this.chunkIndex * this.chunkSize - this.chunkSize);\n    },\n    offsetTop: function offsetTop() {\n      return Math.max(0, this.startIndex * this.rowHeight);\n    },\n    stopIndex: function stopIndex() {\n      return Math.min(this.startIndex + this.chunkSize * 3, this.itemsLength);\n    },\n    offsetBottom: function offsetBottom() {\n      return Math.max(0, (this.itemsLength - this.stopIndex - this.startIndex) * this.rowHeight);\n    }\n  },\n  watch: {\n    chunkIndex: function chunkIndex(newValue, oldValue) {\n      this.oldChunk = oldValue;\n    },\n    items: function items() {\n      this.cachedItems = null;\n      this.$refs.table.scrollTop = 0;\n    }\n  },\n  created: function created() {\n    this.cachedItems = null;\n  },\n  mounted: function mounted() {\n    this.scrollDebounce = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"debounce\"])(this.onScroll, 50);\n    this.$refs.table.addEventListener('scroll', this.scrollDebounce, {\n      passive: true\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.$refs.table.removeEventListener('scroll', this.scrollDebounce);\n  },\n  methods: {\n    createStyleHeight: function createStyleHeight(height) {\n      return {\n        height: height + \"px\"\n      };\n    },\n    genBody: function genBody() {\n      if (this.cachedItems === null || this.chunkIndex !== this.oldChunk) {\n        this.cachedItems = this.genItems();\n        this.oldChunk = this.chunkIndex;\n      }\n\n      return this.$createElement('tbody', [this.$createElement('tr', {\n        style: this.createStyleHeight(this.offsetTop)\n      }), this.cachedItems, this.$createElement('tr', {\n        style: this.createStyleHeight(this.offsetBottom)\n      })]);\n    },\n    genItems: function genItems() {\n      return this.$scopedSlots.items({\n        items: this.items.slice(this.startIndex, this.stopIndex)\n      });\n    },\n    onScroll: function onScroll(e) {\n      var target = e.target;\n      this.scrollTop = target.scrollTop;\n    },\n    genTable: function genTable() {\n      return this.$createElement('div', {\n        ref: 'table',\n        staticClass: 'v-virtual-table__table'\n      }, [this.$createElement('table', [this.$slots['body.before'], this.genBody(), this.$slots['body.after']])]);\n    },\n    genWrapper: function genWrapper() {\n      return this.$createElement('div', {\n        staticClass: 'v-virtual-table__wrapper',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.height)\n        }\n      }, [this.genTable()]);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-data-table v-virtual-table',\n      class: this.classes\n    }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'top'), this.genWrapper(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'bottom')]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VDataTable/index.ts ***!\n  \\********************************************/\n/*! exports provided: VDataTable, VEditDialog, VTableOverflow, VDataTableHeader, VSimpleTable, VVirtualTable, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTableOverflow\", function() { return VTableOverflow; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VDataTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDataTable */ \"./src/components/VDataTable/VDataTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataTable\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VDataTableHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VDataTableHeader */ \"./src/components/VDataTable/VDataTableHeader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataTableHeader\", function() { return _VDataTableHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VEditDialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VEditDialog */ \"./src/components/VDataTable/VEditDialog.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VEditDialog\", function() { return _VEditDialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VSimpleTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VSimpleTable */ \"./src/components/VDataTable/VSimpleTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSimpleTable\", function() { return _VSimpleTable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _VVirtualTable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VVirtualTable */ \"./src/components/VDataTable/VVirtualTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VVirtualTable\", function() { return _VVirtualTable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\nvar VTableOverflow = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-table__overflow');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VDataTable: _VDataTable__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VDataTableHeader: _VDataTableHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VEditDialog: _VEditDialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VTableOverflow: VTableOverflow,\n    VSimpleTable: _VSimpleTable__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n    VVirtualTable: _VVirtualTable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/mixins/header.ts\":\n/*!****************************************************!*\\\n  !*** ./src/components/VDataTable/mixins/header.ts ***!\n  \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../VCheckbox/VSimpleCheckbox */ \"./src/components/VCheckbox/VSimpleCheckbox.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])().extend({\n  // https://github.com/vuejs/vue/issues/6872\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  props: {\n    headers: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    options: {\n      type: Object,\n      default: function _default() {\n        return {\n          page: 1,\n          itemsPerPage: 10,\n          sortBy: [],\n          sortDesc: [],\n          groupBy: [],\n          groupDesc: [],\n          multiSort: false,\n          mustSort: false\n        };\n      }\n    },\n    checkboxColor: String,\n    sortIcon: {\n      type: String,\n      default: '$sort'\n    },\n    everyItem: Boolean,\n    someItems: Boolean,\n    showGroupBy: Boolean,\n    singleSelect: Boolean,\n    disableSort: Boolean\n  },\n  methods: {\n    genSelectAll: function genSelectAll() {\n      var _this = this;\n\n      var _a;\n\n      var data = {\n        props: {\n          value: this.everyItem,\n          indeterminate: !this.everyItem && this.someItems,\n          color: (_a = this.checkboxColor) !== null && _a !== void 0 ? _a : ''\n        },\n        on: {\n          input: function input(v) {\n            return _this.$emit('toggle-select-all', v);\n          }\n        }\n      };\n\n      if (this.$scopedSlots['data-table-select']) {\n        return this.$scopedSlots['data-table-select'](data);\n      }\n\n      return this.$createElement(_VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], __assign({\n        staticClass: 'v-data-table__checkbox'\n      }, data));\n    },\n    genSortIcon: function genSortIcon() {\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n        staticClass: 'v-data-table-header__icon',\n        props: {\n          size: 18\n        }\n      }, [this.sortIcon]);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePicker.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePicker.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePickerTitle */ \"./src/components/VDatePicker/VDatePickerTitle.ts\");\n/* harmony import */ var _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDatePickerHeader */ \"./src/components/VDatePicker/VDatePickerHeader.ts\");\n/* harmony import */ var _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VDatePickerDateTable */ \"./src/components/VDatePicker/VDatePickerDateTable.ts\");\n/* harmony import */ var _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VDatePickerMonthTable */ \"./src/components/VDatePicker/VDatePickerMonthTable.ts\");\n/* harmony import */ var _VDatePickerYears__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VDatePickerYears */ \"./src/components/VDatePicker/VDatePickerYears.ts\");\n/* harmony import */ var _mixins_localable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/localable */ \"./src/mixins/localable/index.ts\");\n/* harmony import */ var _mixins_picker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/picker */ \"./src/mixins/picker/index.ts\");\n/* harmony import */ var _util_isDateAllowed__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/isDateAllowed */ \"./src/components/VDatePicker/util/isDateAllowed.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VCalendar_util_timestamp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../VCalendar/util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Components\n\n\n\n\n\n\n // Mixins\n\n\n // Utils\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_localable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_picker__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-date-picker',\n  props: {\n    activePicker: String,\n    allowedDates: Function,\n    // Function formatting the day in date picker table\n    dayFormat: Function,\n    disabled: Boolean,\n    events: {\n      type: [Array, Function, Object],\n      default: function _default() {\n        return null;\n      }\n    },\n    eventColor: {\n      type: [Array, Function, Object, String],\n      default: function _default() {\n        return 'warning';\n      }\n    },\n    firstDayOfWeek: {\n      type: [String, Number],\n      default: 0\n    },\n    // Function formatting the tableDate in the day/month table header\n    headerDateFormat: Function,\n    localeFirstDayOfYear: {\n      type: [String, Number],\n      default: 0\n    },\n    max: String,\n    min: String,\n    // Function formatting month in the months table\n    monthFormat: Function,\n    multiple: Boolean,\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    nextMonthAriaLabel: {\n      type: String,\n      default: '$vuetify.datePicker.nextMonthAriaLabel'\n    },\n    nextYearAriaLabel: {\n      type: String,\n      default: '$vuetify.datePicker.nextYearAriaLabel'\n    },\n    pickerDate: String,\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    prevMonthAriaLabel: {\n      type: String,\n      default: '$vuetify.datePicker.prevMonthAriaLabel'\n    },\n    prevYearAriaLabel: {\n      type: String,\n      default: '$vuetify.datePicker.prevYearAriaLabel'\n    },\n    range: Boolean,\n    reactive: Boolean,\n    readonly: Boolean,\n    scrollable: Boolean,\n    showCurrent: {\n      type: [Boolean, String],\n      default: true\n    },\n    selectedItemsText: {\n      type: String,\n      default: '$vuetify.datePicker.itemsSelected'\n    },\n    showAdjacentMonths: Boolean,\n    showWeek: Boolean,\n    // Function formatting currently selected date in the picker title\n    titleDateFormat: Function,\n    type: {\n      type: String,\n      default: 'date',\n      validator: function validator(type) {\n        return ['date', 'month'].includes(type);\n      } // TODO: year\n\n    },\n    value: [Array, String],\n    weekdayFormat: Function,\n    // Function formatting the year in table header and pickup title\n    yearFormat: Function,\n    yearIcon: String\n  },\n  data: function data() {\n    var _this = this;\n\n    var now = new Date();\n    return {\n      internalActivePicker: this.type.toUpperCase(),\n      inputDay: null,\n      inputMonth: null,\n      inputYear: null,\n      isReversing: false,\n      now: now,\n      // tableDate is a string in 'YYYY' / 'YYYY-M' format (leading zero for month is not required)\n      tableDate: function () {\n        if (_this.pickerDate) {\n          return _this.pickerDate;\n        }\n\n        var multipleValue = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"wrapInArray\"])(_this.value);\n        var date = multipleValue[multipleValue.length - 1] || (typeof _this.showCurrent === 'string' ? _this.showCurrent : now.getFullYear() + \"-\" + (now.getMonth() + 1));\n        return Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(date, _this.type === 'date' ? 'month' : 'year');\n      }()\n    };\n  },\n  computed: {\n    multipleValue: function multipleValue() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"wrapInArray\"])(this.value);\n    },\n    isMultiple: function isMultiple() {\n      return this.multiple || this.range;\n    },\n    lastValue: function lastValue() {\n      return this.isMultiple ? this.multipleValue[this.multipleValue.length - 1] : this.value;\n    },\n    selectedMonths: function selectedMonths() {\n      if (!this.value || this.type === 'month') {\n        return this.value;\n      } else if (this.isMultiple) {\n        return this.multipleValue.map(function (val) {\n          return val.substr(0, 7);\n        });\n      } else {\n        return this.value.substr(0, 7);\n      }\n    },\n    current: function current() {\n      if (this.showCurrent === true) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.now.getFullYear() + \"-\" + (this.now.getMonth() + 1) + \"-\" + this.now.getDate(), this.type);\n      }\n\n      return this.showCurrent || null;\n    },\n    inputDate: function inputDate() {\n      return this.type === 'date' ? this.inputYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.inputMonth + 1) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.inputDay) : this.inputYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.inputMonth + 1);\n    },\n    tableMonth: function tableMonth() {\n      return Number((this.pickerDate || this.tableDate).split('-')[1]) - 1;\n    },\n    tableYear: function tableYear() {\n      return Number((this.pickerDate || this.tableDate).split('-')[0]);\n    },\n    minMonth: function minMonth() {\n      return this.min ? Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.min, 'month') : null;\n    },\n    maxMonth: function maxMonth() {\n      return this.max ? Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.max, 'month') : null;\n    },\n    minYear: function minYear() {\n      return this.min ? Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.min, 'year') : null;\n    },\n    maxYear: function maxYear() {\n      return this.max ? Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.max, 'year') : null;\n    },\n    formatters: function formatters() {\n      return {\n        year: this.yearFormat || Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n          year: 'numeric',\n          timeZone: 'UTC'\n        }, {\n          length: 4\n        }),\n        titleDate: this.titleDateFormat || (this.isMultiple ? this.defaultTitleMultipleDateFormatter : this.defaultTitleDateFormatter)\n      };\n    },\n    defaultTitleMultipleDateFormatter: function defaultTitleMultipleDateFormatter() {\n      var _this = this;\n\n      return function (dates) {\n        if (!dates.length) {\n          return '-';\n        }\n\n        if (dates.length === 1) {\n          return _this.defaultTitleDateFormatter(dates[0]);\n        }\n\n        return _this.$vuetify.lang.t(_this.selectedItemsText, dates.length);\n      };\n    },\n    defaultTitleDateFormatter: function defaultTitleDateFormatter() {\n      var titleFormats = {\n        year: {\n          year: 'numeric',\n          timeZone: 'UTC'\n        },\n        month: {\n          month: 'long',\n          timeZone: 'UTC'\n        },\n        date: {\n          weekday: 'short',\n          month: 'short',\n          day: 'numeric',\n          timeZone: 'UTC'\n        }\n      };\n      var titleDateFormatter = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"createNativeLocaleFormatter\"])(this.currentLocale, titleFormats[this.type], {\n        start: 0,\n        length: {\n          date: 10,\n          month: 7,\n          year: 4\n        }[this.type]\n      });\n\n      var landscapeFormatter = function landscapeFormatter(date) {\n        return titleDateFormatter(date).replace(/([^\\d\\s])([\\d])/g, function (match, nonDigit, digit) {\n          return nonDigit + \" \" + digit;\n        }).replace(', ', ',<br>');\n      };\n\n      return this.landscape ? landscapeFormatter : titleDateFormatter;\n    }\n  },\n  watch: {\n    internalActivePicker: {\n      immediate: true,\n      handler: function handler(val) {\n        this.$emit('update:active-picker', val);\n      }\n    },\n    activePicker: function activePicker(val) {\n      this.internalActivePicker = val;\n    },\n    tableDate: function tableDate(val, prev) {\n      // Make a ISO 8601 strings from val and prev for comparision, otherwise it will incorrectly\n      // compare for example '2000-9' and '2000-10'\n      var sanitizeType = this.type === 'month' ? 'year' : 'month';\n      this.isReversing = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(val, sanitizeType) < Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(prev, sanitizeType);\n      this.$emit('update:picker-date', val);\n    },\n    pickerDate: function pickerDate(val) {\n      if (val) {\n        this.tableDate = val;\n      } else if (this.lastValue && this.type === 'date') {\n        this.tableDate = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.lastValue, 'month');\n      } else if (this.lastValue && this.type === 'month') {\n        this.tableDate = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.lastValue, 'year');\n      }\n    },\n    value: function value(newValue, oldValue) {\n      this.checkMultipleProp();\n      this.setInputDate();\n\n      if (!this.isMultiple && this.value && !this.pickerDate || this.isMultiple && this.multipleValue.length && (!oldValue || !oldValue.length) && !this.pickerDate) {\n        this.tableDate = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.inputDate, this.type === 'month' ? 'year' : 'month');\n      }\n    },\n    type: function type(_type) {\n      this.internalActivePicker = _type.toUpperCase();\n\n      if (this.value && this.value.length) {\n        var output = this.multipleValue.map(function (val) {\n          return Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(val, _type);\n        }).filter(this.isDateAllowed);\n        this.$emit('input', this.isMultiple ? output : output[0]);\n      }\n    }\n  },\n  created: function created() {\n    this.checkMultipleProp();\n\n    if (this.pickerDate !== this.tableDate) {\n      this.$emit('update:picker-date', this.tableDate);\n    }\n\n    this.setInputDate();\n  },\n  methods: {\n    emitInput: function emitInput(newInput) {\n      if (this.range) {\n        if (this.multipleValue.length !== 1) {\n          this.$emit('input', [newInput]);\n        } else {\n          var output_1 = [this.multipleValue[0], newInput];\n          this.$emit('input', output_1);\n          this.$emit('change', output_1);\n        }\n\n        return;\n      }\n\n      var output = this.multiple ? this.multipleValue.indexOf(newInput) === -1 ? this.multipleValue.concat([newInput]) : this.multipleValue.filter(function (x) {\n        return x !== newInput;\n      }) : newInput;\n      this.$emit('input', output);\n      this.multiple || this.$emit('change', newInput);\n    },\n    checkMultipleProp: function checkMultipleProp() {\n      if (this.value == null) return;\n      var valueType = this.value.constructor.name;\n      var expected = this.isMultiple ? 'Array' : 'String';\n\n      if (valueType !== expected) {\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_11__[\"consoleWarn\"])(\"Value must be \" + (this.isMultiple ? 'an' : 'a') + \" \" + expected + \", got \" + valueType, this);\n      }\n    },\n    isDateAllowed: function isDateAllowed(value) {\n      return Object(_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(value, this.min, this.max, this.allowedDates);\n    },\n    yearClick: function yearClick(value) {\n      this.inputYear = value;\n\n      if (this.type === 'month') {\n        this.tableDate = \"\" + value;\n      } else {\n        this.tableDate = value + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])((this.tableMonth || 0) + 1);\n      }\n\n      this.internalActivePicker = 'MONTH';\n\n      if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n        this.$emit('input', this.inputDate);\n      }\n    },\n    monthClick: function monthClick(value) {\n      var _a = __read(value.split('-'), 2),\n          year = _a[0],\n          month = _a[1];\n\n      this.inputYear = parseInt(year, 10);\n      this.inputMonth = parseInt(month, 10) - 1;\n\n      if (this.type === 'date') {\n        if (this.inputDay) {\n          this.inputDay = Math.min(this.inputDay, Object(_VCalendar_util_timestamp__WEBPACK_IMPORTED_MODULE_10__[\"daysInMonth\"])(this.inputYear, this.inputMonth + 1));\n        }\n\n        this.tableDate = value;\n        this.internalActivePicker = 'DATE';\n\n        if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n          this.$emit('input', this.inputDate);\n        }\n      } else {\n        this.emitInput(this.inputDate);\n      }\n    },\n    dateClick: function dateClick(value) {\n      var _a = __read(value.split('-'), 3),\n          year = _a[0],\n          month = _a[1],\n          day = _a[2];\n\n      this.inputYear = parseInt(year, 10);\n      this.inputMonth = parseInt(month, 10) - 1;\n      this.inputDay = parseInt(day, 10);\n      this.emitInput(this.inputDate);\n    },\n    genPickerTitle: function genPickerTitle() {\n      var _this = this;\n\n      return this.$createElement(_VDatePickerTitle__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n        props: {\n          date: this.value ? this.formatters.titleDate(this.isMultiple ? this.multipleValue : this.value) : '',\n          disabled: this.disabled,\n          readonly: this.readonly,\n          selectingYear: this.internalActivePicker === 'YEAR',\n          year: this.formatters.year(this.multipleValue.length ? \"\" + this.inputYear : this.tableDate),\n          yearIcon: this.yearIcon,\n          value: this.multipleValue[0]\n        },\n        slot: 'title',\n        on: {\n          'update:selecting-year': function updateSelectingYear(value) {\n            return _this.internalActivePicker = value ? 'YEAR' : _this.type.toUpperCase();\n          }\n        }\n      });\n    },\n    genTableHeader: function genTableHeader() {\n      var _this = this;\n\n      return this.$createElement(_VDatePickerHeader__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          nextIcon: this.nextIcon,\n          color: this.color,\n          dark: this.dark,\n          disabled: this.disabled,\n          format: this.headerDateFormat,\n          light: this.light,\n          locale: this.locale,\n          min: this.internalActivePicker === 'DATE' ? this.minMonth : this.minYear,\n          max: this.internalActivePicker === 'DATE' ? this.maxMonth : this.maxYear,\n          nextAriaLabel: this.internalActivePicker === 'DATE' ? this.nextMonthAriaLabel : this.nextYearAriaLabel,\n          prevAriaLabel: this.internalActivePicker === 'DATE' ? this.prevMonthAriaLabel : this.prevYearAriaLabel,\n          prevIcon: this.prevIcon,\n          readonly: this.readonly,\n          value: this.internalActivePicker === 'DATE' ? Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.tableYear, 4) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.tableMonth + 1) : \"\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.tableYear, 4)\n        },\n        on: {\n          toggle: function toggle() {\n            return _this.internalActivePicker = _this.internalActivePicker === 'DATE' ? 'MONTH' : 'YEAR';\n          },\n          input: function input(value) {\n            return _this.tableDate = value;\n          }\n        }\n      });\n    },\n    genDateTable: function genDateTable() {\n      var _this = this;\n\n      return this.$createElement(_VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          allowedDates: this.allowedDates,\n          color: this.color,\n          current: this.current,\n          dark: this.dark,\n          disabled: this.disabled,\n          events: this.events,\n          eventColor: this.eventColor,\n          firstDayOfWeek: this.firstDayOfWeek,\n          format: this.dayFormat,\n          light: this.light,\n          locale: this.locale,\n          localeFirstDayOfYear: this.localeFirstDayOfYear,\n          min: this.min,\n          max: this.max,\n          range: this.range,\n          readonly: this.readonly,\n          scrollable: this.scrollable,\n          showAdjacentMonths: this.showAdjacentMonths,\n          showWeek: this.showWeek,\n          tableDate: Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.tableYear, 4) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.tableMonth + 1),\n          value: this.value,\n          weekdayFormat: this.weekdayFormat\n        },\n        ref: 'table',\n        on: __assign({\n          input: this.dateClick,\n          'update:table-date': function updateTableDate(value) {\n            return _this.tableDate = value;\n          }\n        }, Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"createItemTypeListeners\"])(this, ':date'))\n      });\n    },\n    genMonthTable: function genMonthTable() {\n      var _this = this;\n\n      return this.$createElement(_VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        props: {\n          allowedDates: this.type === 'month' ? this.allowedDates : null,\n          color: this.color,\n          current: this.current ? Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"sanitizeDateString\"])(this.current, 'month') : null,\n          dark: this.dark,\n          disabled: this.disabled,\n          events: this.type === 'month' ? this.events : null,\n          eventColor: this.type === 'month' ? this.eventColor : null,\n          format: this.monthFormat,\n          light: this.light,\n          locale: this.locale,\n          min: this.minMonth,\n          max: this.maxMonth,\n          range: this.range,\n          readonly: this.readonly && this.type === 'month',\n          scrollable: this.scrollable,\n          value: this.selectedMonths,\n          tableDate: \"\" + Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"pad\"])(this.tableYear, 4)\n        },\n        ref: 'table',\n        on: __assign({\n          input: this.monthClick,\n          'update:table-date': function updateTableDate(value) {\n            return _this.tableDate = value;\n          }\n        }, Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"createItemTypeListeners\"])(this, ':month'))\n      });\n    },\n    genYears: function genYears() {\n      return this.$createElement(_VDatePickerYears__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n        props: {\n          color: this.color,\n          format: this.yearFormat,\n          locale: this.locale,\n          min: this.minYear,\n          max: this.maxYear,\n          value: this.tableYear\n        },\n        on: __assign({\n          input: this.yearClick\n        }, Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"createItemTypeListeners\"])(this, ':year'))\n      });\n    },\n    genPickerBody: function genPickerBody() {\n      var children = this.internalActivePicker === 'YEAR' ? [this.genYears()] : [this.genTableHeader(), this.internalActivePicker === 'DATE' ? this.genDateTable() : this.genMonthTable()];\n      return this.$createElement('div', {\n        key: this.internalActivePicker\n      }, children);\n    },\n    setInputDate: function setInputDate() {\n      if (this.lastValue) {\n        var array = this.lastValue.split('-');\n        this.inputYear = parseInt(array[0], 10);\n        this.inputMonth = parseInt(array[1], 10) - 1;\n\n        if (this.type === 'date') {\n          this.inputDay = parseInt(array[2], 10);\n        }\n      } else {\n        this.inputYear = this.inputYear || this.now.getFullYear();\n        this.inputMonth = this.inputMonth == null ? this.inputMonth : this.now.getMonth();\n        this.inputDay = this.inputDay || this.now.getDate();\n      }\n    }\n  },\n  render: function render() {\n    return this.genPicker('v-picker--date');\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerDateTable.ts\":\n/*!************************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerDateTable.ts ***!\n  \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins/date-picker-table */ \"./src/components/VDatePicker/mixins/date-picker-table.ts\");\n/* harmony import */ var _util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/dateTimeUtils */ \"./src/util/dateTimeUtils.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n // Utils\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-date-picker-date-table',\n  props: {\n    firstDayOfWeek: {\n      type: [String, Number],\n      default: 0\n    },\n    localeFirstDayOfYear: {\n      type: [String, Number],\n      default: 0\n    },\n    showAdjacentMonths: Boolean,\n    showWeek: Boolean,\n    weekdayFormat: Function\n  },\n  computed: {\n    formatter: function formatter() {\n      return this.format || Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n        day: 'numeric',\n        timeZone: 'UTC'\n      }, {\n        start: 8,\n        length: 2\n      });\n    },\n    weekdayFormatter: function weekdayFormatter() {\n      return this.weekdayFormat || Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n        weekday: 'narrow',\n        timeZone: 'UTC'\n      });\n    },\n    weekDays: function weekDays() {\n      var _this = this;\n\n      var first = parseInt(this.firstDayOfWeek, 10);\n      return this.weekdayFormatter ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"createRange\"])(7).map(function (i) {\n        return _this.weekdayFormatter(\"2017-01-\" + (first + i + 15));\n      }) // 2017-01-15 is Sunday\n      : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"createRange\"])(7).map(function (i) {\n        return ['S', 'M', 'T', 'W', 'T', 'F', 'S'][(i + first) % 7];\n      });\n    }\n  },\n  methods: {\n    calculateTableDate: function calculateTableDate(delta) {\n      return Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"monthChange\"])(this.tableDate, Math.sign(delta || 1));\n    },\n    genTHead: function genTHead() {\n      var _this = this;\n\n      var days = this.weekDays.map(function (day) {\n        return _this.$createElement('th', day);\n      });\n\n      if (this.showWeek) {\n        days.unshift(this.$createElement('th'));\n      }\n\n      return this.$createElement('thead', this.genTR(days));\n    },\n    // Returns number of the days from the firstDayOfWeek to the first day of the current month\n    weekDaysBeforeFirstDayOfTheMonth: function weekDaysBeforeFirstDayOfTheMonth() {\n      var firstDayOfTheMonth = new Date(this.displayedYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(this.displayedMonth + 1) + \"-01T00:00:00+00:00\");\n      var weekDay = firstDayOfTheMonth.getUTCDay();\n      return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7;\n    },\n    getWeekNumber: function getWeekNumber(dayInMonth) {\n      return Object(_util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_1__[\"weekNumber\"])(this.displayedYear, this.displayedMonth, dayInMonth, parseInt(this.firstDayOfWeek), parseInt(this.localeFirstDayOfYear));\n    },\n    genWeekNumber: function genWeekNumber(weekNumber) {\n      return this.$createElement('td', [this.$createElement('small', {\n        staticClass: 'v-date-picker-table--date__week'\n      }, String(weekNumber).padStart(2, '0'))]);\n    },\n    // eslint-disable-next-line max-statements\n    genTBody: function genTBody() {\n      var children = [];\n      var daysInMonth = new Date(this.displayedYear, this.displayedMonth + 1, 0).getDate();\n      var rows = [];\n      var day = this.weekDaysBeforeFirstDayOfTheMonth();\n\n      if (this.showWeek) {\n        rows.push(this.genWeekNumber(this.getWeekNumber(1)));\n      }\n\n      var prevMonthYear = this.displayedMonth ? this.displayedYear : this.displayedYear - 1;\n      var prevMonth = (this.displayedMonth + 11) % 12;\n      var firstDayFromPreviousMonth = new Date(this.displayedYear, this.displayedMonth, 0).getDate();\n      var cellsInRow = this.showWeek ? 8 : 7;\n\n      while (day--) {\n        var date = prevMonthYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(prevMonth + 1) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(firstDayFromPreviousMonth - day);\n        rows.push(this.$createElement('td', this.showAdjacentMonths ? [this.genButton(date, true, 'date', this.formatter, true)] : []));\n      }\n\n      for (day = 1; day <= daysInMonth; day++) {\n        var date = this.displayedYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(this.displayedMonth + 1) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(day);\n        rows.push(this.$createElement('td', [this.genButton(date, true, 'date', this.formatter)]));\n\n        if (rows.length % cellsInRow === 0) {\n          children.push(this.genTR(rows));\n          rows = [];\n\n          if (this.showWeek && (day < daysInMonth || this.showAdjacentMonths)) {\n            rows.push(this.genWeekNumber(this.getWeekNumber(day + 7)));\n          }\n        }\n      }\n\n      var nextMonthYear = this.displayedMonth === 11 ? this.displayedYear + 1 : this.displayedYear;\n      var nextMonth = (this.displayedMonth + 1) % 12;\n      var nextMonthDay = 1;\n\n      while (rows.length < cellsInRow) {\n        var date = nextMonthYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(nextMonth + 1) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(nextMonthDay++);\n        rows.push(this.$createElement('td', this.showAdjacentMonths ? [this.genButton(date, true, 'date', this.formatter, true)] : []));\n      }\n\n      if (rows.length) {\n        children.push(this.genTR(rows));\n      }\n\n      return this.$createElement('tbody', children);\n    },\n    genTR: function genTR(children) {\n      return [this.$createElement('tr', children)];\n    }\n  },\n  render: function render() {\n    return this.genTable('v-date-picker-table v-date-picker-table--date', [this.genTHead(), this.genTBody()], this.calculateTableDate);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerHeader.sass\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerHeader.sass ***!\n  \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerHeader.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerHeader.ts ***!\n  \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePickerHeader_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePickerHeader.sass */ \"./src/components/VDatePicker/VDatePickerHeader.sass\");\n/* harmony import */ var _VDatePickerHeader_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDatePickerHeader_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_localable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/localable */ \"./src/mixins/localable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n // Components\n\n\n // Mixins\n\n\n\n // Utils\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_localable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-date-picker-header',\n  props: {\n    disabled: Boolean,\n    format: Function,\n    min: String,\n    max: String,\n    nextAriaLabel: String,\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    prevAriaLabel: String,\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    readonly: Boolean,\n    value: {\n      type: [Number, String],\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      isReversing: false\n    };\n  },\n  computed: {\n    formatter: function formatter() {\n      if (this.format) {\n        return this.format;\n      } else if (String(this.value).split('-')[1]) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n          month: 'long',\n          year: 'numeric',\n          timeZone: 'UTC'\n        }, {\n          length: 7\n        });\n      } else {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n          year: 'numeric',\n          timeZone: 'UTC'\n        }, {\n          length: 4\n        });\n      }\n    }\n  },\n  watch: {\n    value: function value(newVal, oldVal) {\n      this.isReversing = newVal < oldVal;\n    }\n  },\n  methods: {\n    genBtn: function genBtn(change) {\n      var _this = this;\n\n      var ariaLabelId = change > 0 ? this.nextAriaLabel : this.prevAriaLabel;\n      var ariaLabel = ariaLabelId ? this.$vuetify.lang.t(ariaLabelId) : undefined;\n      var disabled = this.disabled || change < 0 && this.min && this.calculateChange(change) < this.min || change > 0 && this.max && this.calculateChange(change) > this.max;\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        attrs: {\n          'aria-label': ariaLabel\n        },\n        props: {\n          dark: this.dark,\n          disabled: disabled,\n          icon: true,\n          light: this.light\n        },\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n\n            _this.$emit('input', _this.calculateChange(change));\n          }\n        }\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], change < 0 === !this.$vuetify.rtl ? this.prevIcon : this.nextIcon)]);\n    },\n    calculateChange: function calculateChange(sign) {\n      var _a = __read(String(this.value).split('-').map(Number), 2),\n          year = _a[0],\n          month = _a[1];\n\n      if (month == null) {\n        return \"\" + (year + sign);\n      } else {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"monthChange\"])(String(this.value), sign);\n      }\n    },\n    genHeader: function genHeader() {\n      var _this = this;\n\n      var color = !this.disabled && (this.color || 'accent');\n      var header = this.$createElement('div', this.setTextColor(color, {\n        key: String(this.value)\n      }), [this.$createElement('button', {\n        attrs: {\n          type: 'button'\n        },\n        on: {\n          click: function click() {\n            return _this.$emit('toggle');\n          }\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this) || [this.formatter(String(this.value))])]);\n      var transition = this.$createElement('transition', {\n        props: {\n          name: this.isReversing === !this.$vuetify.rtl ? 'tab-reverse-transition' : 'tab-transition'\n        }\n      }, [header]);\n      return this.$createElement('div', {\n        staticClass: 'v-date-picker-header__value',\n        class: {\n          'v-date-picker-header__value--disabled': this.disabled\n        }\n      }, [transition]);\n    }\n  },\n  render: function render() {\n    return this.$createElement('div', {\n      staticClass: 'v-date-picker-header',\n      class: __assign({\n        'v-date-picker-header--disabled': this.disabled\n      }, this.themeClasses)\n    }, [this.genBtn(-1), this.genHeader(), this.genBtn(+1)]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerMonthTable.ts\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerMonthTable.ts ***!\n  \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins/date-picker-table */ \"./src/components/VDatePicker/mixins/date-picker-table.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n // Utils\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-date-picker-month-table',\n  computed: {\n    formatter: function formatter() {\n      return this.format || Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n        month: 'short',\n        timeZone: 'UTC'\n      }, {\n        start: 5,\n        length: 2\n      });\n    }\n  },\n  methods: {\n    calculateTableDate: function calculateTableDate(delta) {\n      return \"\" + (parseInt(this.tableDate, 10) + Math.sign(delta || 1));\n    },\n    genTBody: function genTBody() {\n      var _this = this;\n\n      var children = [];\n      var cols = Array(3).fill(null);\n      var rows = 12 / cols.length;\n\n      var _loop_1 = function _loop_1(row) {\n        var tds = cols.map(function (_, col) {\n          var month = row * cols.length + col;\n          var date = _this.displayedYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"pad\"])(month + 1);\n          return _this.$createElement('td', {\n            key: month\n          }, [_this.genButton(date, false, 'month', _this.formatter)]);\n        });\n        children.push(this_1.$createElement('tr', {\n          key: row\n        }, tds));\n      };\n\n      var this_1 = this;\n\n      for (var row = 0; row < rows; row++) {\n        _loop_1(row);\n      }\n\n      return this.$createElement('tbody', children);\n    }\n  },\n  render: function render() {\n    return this.genTable('v-date-picker-table v-date-picker-table--month', [this.genTBody()], this.calculateTableDate);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerTable.sass\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerTable.sass ***!\n  \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerTitle.sass\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerTitle.sass ***!\n  \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerTitle.ts\":\n/*!********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerTitle.ts ***!\n  \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePickerTitle_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePickerTitle.sass */ \"./src/components/VDatePicker/VDatePickerTitle.sass\");\n/* harmony import */ var _VDatePickerTitle_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDatePickerTitle_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_picker_button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/picker-button */ \"./src/mixins/picker-button/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n // Components\n\n // Mixins\n\n // Utils\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_picker_button__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-date-picker-title',\n  props: {\n    date: {\n      type: String,\n      default: ''\n    },\n    disabled: Boolean,\n    readonly: Boolean,\n    selectingYear: Boolean,\n    value: {\n      type: String\n    },\n    year: {\n      type: [Number, String],\n      default: ''\n    },\n    yearIcon: {\n      type: String\n    }\n  },\n  data: function data() {\n    return {\n      isReversing: false\n    };\n  },\n  computed: {\n    computedTransition: function computedTransition() {\n      return this.isReversing ? 'picker-reverse-transition' : 'picker-transition';\n    }\n  },\n  watch: {\n    value: function value(val, prev) {\n      this.isReversing = val < prev;\n    }\n  },\n  methods: {\n    genYearIcon: function genYearIcon() {\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          dark: true\n        }\n      }, this.yearIcon);\n    },\n    getYearBtn: function getYearBtn() {\n      return this.genPickerButton('selectingYear', true, [String(this.year), this.yearIcon ? this.genYearIcon() : null], false, 'v-date-picker-title__year');\n    },\n    genTitleText: function genTitleText() {\n      return this.$createElement('transition', {\n        props: {\n          name: this.computedTransition\n        }\n      }, [this.$createElement('div', {\n        domProps: {\n          innerHTML: this.date || '&nbsp;'\n        },\n        key: this.value\n      })]);\n    },\n    genTitleDate: function genTitleDate() {\n      return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date');\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-date-picker-title',\n      class: {\n        'v-date-picker-title--disabled': this.disabled\n      }\n    }, [this.getYearBtn(), this.genTitleDate()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerYears.sass\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerYears.sass ***!\n  \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerYears.ts\":\n/*!********************************************************!*\\\n  !*** ./src/components/VDatePicker/VDatePickerYears.ts ***!\n  \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePickerYears_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePickerYears.sass */ \"./src/components/VDatePicker/VDatePickerYears.sass\");\n/* harmony import */ var _VDatePickerYears_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDatePickerYears_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_localable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/localable */ \"./src/mixins/localable/index.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n // Mixins\n\n\n // Utils\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_localable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-date-picker-years',\n  props: {\n    format: Function,\n    min: [Number, String],\n    max: [Number, String],\n    readonly: Boolean,\n    value: [Number, String]\n  },\n  data: function data() {\n    return {\n      defaultColor: 'primary'\n    };\n  },\n  computed: {\n    formatter: function formatter() {\n      return this.format || Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"createNativeLocaleFormatter\"])(this.currentLocale, {\n        year: 'numeric',\n        timeZone: 'UTC'\n      }, {\n        length: 4\n      });\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    setTimeout(function () {\n      var activeItem = _this.$el.getElementsByClassName('active')[0];\n\n      if (activeItem) {\n        _this.$el.scrollTop = activeItem.offsetTop - _this.$el.offsetHeight / 2 + activeItem.offsetHeight / 2;\n      } else if (_this.min && !_this.max) {\n        _this.$el.scrollTop = _this.$el.scrollHeight;\n      } else if (!_this.min && _this.max) {\n        _this.$el.scrollTop = 0;\n      } else {\n        _this.$el.scrollTop = _this.$el.scrollHeight / 2 - _this.$el.offsetHeight / 2;\n      }\n    });\n  },\n  methods: {\n    genYearItem: function genYearItem(year) {\n      var _this = this;\n\n      var formatted = this.formatter(\"\" + year);\n      var active = parseInt(this.value, 10) === year;\n      var color = active && (this.color || 'primary');\n      return this.$createElement('li', this.setTextColor(color, {\n        key: year,\n        class: {\n          active: active\n        },\n        on: Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_4__[\"mergeListeners\"])({\n          click: function click() {\n            return _this.$emit('input', year);\n          }\n        }, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"createItemTypeNativeListeners\"])(this, ':year', year))\n      }), formatted);\n    },\n    genYearItems: function genYearItems() {\n      var children = [];\n      var selectedYear = this.value ? parseInt(this.value, 10) : new Date().getFullYear();\n      var maxYear = this.max ? parseInt(this.max, 10) : selectedYear + 100;\n      var minYear = Math.min(maxYear, this.min ? parseInt(this.min, 10) : selectedYear - 100);\n\n      for (var year = maxYear; year >= minYear; year--) {\n        children.push(this.genYearItem(year));\n      }\n\n      return children;\n    }\n  },\n  render: function render() {\n    return this.$createElement('ul', {\n      staticClass: 'v-date-picker-years',\n      ref: 'years'\n    }, this.genYearItems());\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VDatePicker/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VDatePicker, VDatePickerTitle, VDatePickerHeader, VDatePickerDateTable, VDatePickerMonthTable, VDatePickerYears, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePicker */ \"./src/components/VDatePicker/VDatePicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePicker\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDatePickerTitle */ \"./src/components/VDatePicker/VDatePickerTitle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerTitle\", function() { return _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VDatePickerHeader */ \"./src/components/VDatePicker/VDatePickerHeader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerHeader\", function() { return _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VDatePickerDateTable */ \"./src/components/VDatePicker/VDatePickerDateTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerDateTable\", function() { return _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VDatePickerMonthTable */ \"./src/components/VDatePicker/VDatePickerMonthTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerMonthTable\", function() { return _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VDatePickerYears */ \"./src/components/VDatePicker/VDatePickerYears.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerYears\", function() { return _VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VDatePicker: _VDatePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VDatePickerTitle: _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VDatePickerHeader: _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VDatePickerDateTable: _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VDatePickerMonthTable: _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n    VDatePickerYears: _VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/mixins/date-picker-table.ts\":\n/*!****************************************************************!*\\\n  !*** ./src/components/VDatePicker/mixins/date-picker-table.ts ***!\n  \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePickerTable_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VDatePickerTable.sass */ \"./src/components/VDatePicker/VDatePickerTable.sass\");\n/* harmony import */ var _VDatePickerTable_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDatePickerTable_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../directives/touch */ \"./src/directives/touch/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_localable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../mixins/localable */ \"./src/mixins/localable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_isDateAllowed__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/isDateAllowed */ \"./src/components/VDatePicker/util/isDateAllowed.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n // Directives\n\n // Mixins\n\n\n\n // Utils\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_localable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n/* @vue/component */\n).extend({\n  directives: {\n    Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  props: {\n    allowedDates: Function,\n    current: String,\n    disabled: Boolean,\n    format: Function,\n    events: {\n      type: [Array, Function, Object],\n      default: function _default() {\n        return null;\n      }\n    },\n    eventColor: {\n      type: [Array, Function, Object, String],\n      default: function _default() {\n        return 'warning';\n      }\n    },\n    min: String,\n    max: String,\n    range: Boolean,\n    readonly: Boolean,\n    scrollable: Boolean,\n    tableDate: {\n      type: String,\n      required: true\n    },\n    value: [String, Array]\n  },\n  data: function data() {\n    return {\n      isReversing: false,\n      wheelThrottle: null\n    };\n  },\n  computed: {\n    computedTransition: function computedTransition() {\n      return this.isReversing === !this.$vuetify.rtl ? 'tab-reverse-transition' : 'tab-transition';\n    },\n    displayedMonth: function displayedMonth() {\n      return Number(this.tableDate.split('-')[1]) - 1;\n    },\n    displayedYear: function displayedYear() {\n      return Number(this.tableDate.split('-')[0]);\n    }\n  },\n  watch: {\n    tableDate: function tableDate(newVal, oldVal) {\n      this.isReversing = newVal < oldVal;\n    }\n  },\n  mounted: function mounted() {\n    this.wheelThrottle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"throttle\"])(this.wheel, 250);\n  },\n  methods: {\n    genButtonClasses: function genButtonClasses(isAllowed, isFloating, isSelected, isCurrent, isFirst, isLast) {\n      return __assign({\n        'v-size--default': !isFloating,\n        'v-date-picker-table__current': isCurrent,\n        'v-btn--active': isSelected,\n        'v-btn--flat': !isAllowed || this.disabled,\n        'v-btn--text': isSelected === isCurrent,\n        'v-btn--rounded': isFloating,\n        'v-btn--disabled': !isAllowed || this.disabled,\n        'v-btn--outlined': isCurrent && !isSelected,\n        'v-date-picker--first-in-range': isFirst,\n        'v-date-picker--last-in-range': isLast\n      }, this.themeClasses);\n    },\n    genButtonEvents: function genButtonEvents(value, isAllowed, mouseEventType) {\n      var _this = this;\n\n      if (this.disabled) return undefined;\n      return Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_7__[\"mergeListeners\"])({\n        click: function click() {\n          if (isAllowed && !_this.readonly) _this.$emit('input', value);\n        }\n      }, Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"createItemTypeNativeListeners\"])(this, \":\" + mouseEventType, value));\n    },\n    genButton: function genButton(value, isFloating, mouseEventType, formatter, isOtherMonth) {\n      if (isOtherMonth === void 0) {\n        isOtherMonth = false;\n      }\n\n      var isAllowed = Object(_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(value, this.min, this.max, this.allowedDates);\n      var isSelected = this.isSelected(value) && isAllowed;\n      var isCurrent = value === this.current;\n      var setColor = isSelected ? this.setBackgroundColor : this.setTextColor;\n      var color = (isSelected || isCurrent) && (this.color || 'accent');\n      var isFirst = false;\n      var isLast = false;\n\n      if (this.range && !!this.value && Array.isArray(this.value)) {\n        isFirst = value === this.value[0];\n        isLast = value === this.value[this.value.length - 1];\n      }\n\n      return this.$createElement('button', setColor(color, {\n        staticClass: 'v-btn',\n        class: this.genButtonClasses(isAllowed && !isOtherMonth, isFloating, isSelected, isCurrent, isFirst, isLast),\n        attrs: {\n          type: 'button'\n        },\n        domProps: {\n          disabled: this.disabled || !isAllowed || isOtherMonth\n        },\n        on: this.genButtonEvents(value, isAllowed, mouseEventType)\n      }), [this.$createElement('div', {\n        staticClass: 'v-btn__content'\n      }, [formatter(value)]), this.genEvents(value)]);\n    },\n    getEventColors: function getEventColors(date) {\n      var arrayize = function arrayize(v) {\n        return Array.isArray(v) ? v : [v];\n      };\n\n      var eventData;\n      var eventColors = [];\n\n      if (Array.isArray(this.events)) {\n        eventData = this.events.includes(date);\n      } else if (this.events instanceof Function) {\n        eventData = this.events(date) || false;\n      } else if (this.events) {\n        eventData = this.events[date] || false;\n      } else {\n        eventData = false;\n      }\n\n      if (!eventData) {\n        return [];\n      } else if (eventData !== true) {\n        eventColors = arrayize(eventData);\n      } else if (typeof this.eventColor === 'string') {\n        eventColors = [this.eventColor];\n      } else if (typeof this.eventColor === 'function') {\n        eventColors = arrayize(this.eventColor(date));\n      } else if (Array.isArray(this.eventColor)) {\n        eventColors = this.eventColor;\n      } else {\n        eventColors = arrayize(this.eventColor[date]);\n      }\n\n      return eventColors.filter(function (v) {\n        return v;\n      });\n    },\n    genEvents: function genEvents(date) {\n      var _this = this;\n\n      var eventColors = this.getEventColors(date);\n      return eventColors.length ? this.$createElement('div', {\n        staticClass: 'v-date-picker-table__events'\n      }, eventColors.map(function (color) {\n        return _this.$createElement('div', _this.setBackgroundColor(color));\n      })) : null;\n    },\n    isValidScroll: function isValidScroll(value, calculateTableDate) {\n      var tableDate = calculateTableDate(value); // tableDate is 'YYYY-MM' for DateTable and 'YYYY' for MonthTable\n\n      var sanitizeType = tableDate.split('-').length === 1 ? 'year' : 'month';\n      return value < 0 && (this.min ? tableDate >= Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"sanitizeDateString\"])(this.min, sanitizeType) : true) || value > 0 && (this.max ? tableDate <= Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"sanitizeDateString\"])(this.max, sanitizeType) : true);\n    },\n    wheel: function wheel(e, calculateTableDate) {\n      this.$emit('update:table-date', calculateTableDate(e.deltaY));\n    },\n    touch: function touch(value, calculateTableDate) {\n      this.$emit('update:table-date', calculateTableDate(value));\n    },\n    genTable: function genTable(staticClass, children, calculateTableDate) {\n      var _this = this;\n\n      var transition = this.$createElement('transition', {\n        props: {\n          name: this.computedTransition\n        }\n      }, [this.$createElement('table', {\n        key: this.tableDate\n      }, children)]);\n      var touchDirective = {\n        name: 'touch',\n        value: {\n          left: function left(e) {\n            return e.offsetX < -15 && _this.isValidScroll(1, calculateTableDate) && _this.touch(1, calculateTableDate);\n          },\n          right: function right(e) {\n            return e.offsetX > 15 && _this.isValidScroll(-1, calculateTableDate) && _this.touch(-1, calculateTableDate);\n          }\n        }\n      };\n      return this.$createElement('div', {\n        staticClass: staticClass,\n        class: __assign({\n          'v-date-picker-table--disabled': this.disabled\n        }, this.themeClasses),\n        on: !this.disabled && this.scrollable ? {\n          wheel: function wheel(e) {\n            e.preventDefault();\n\n            if (_this.isValidScroll(e.deltaY, calculateTableDate)) {\n              _this.wheelThrottle(e, calculateTableDate);\n            }\n          }\n        } : undefined,\n        directives: [touchDirective]\n      }, [transition]);\n    },\n    isSelected: function isSelected(value) {\n      if (Array.isArray(this.value)) {\n        if (this.range && this.value.length === 2) {\n          var _a = __read(__spreadArray([], __read(this.value), false).sort(), 2),\n              from = _a[0],\n              to = _a[1];\n\n          return from <= value && value <= to;\n        } else {\n          return this.value.indexOf(value) !== -1;\n        }\n      }\n\n      return value === this.value;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/createNativeLocaleFormatter.ts\":\n/*!************************************************************************!*\\\n  !*** ./src/components/VDatePicker/util/createNativeLocaleFormatter.ts ***!\n  \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\n\nfunction createNativeLocaleFormatter(locale, options, substrOptions) {\n  if (substrOptions === void 0) {\n    substrOptions = {\n      start: 0,\n      length: 0\n    };\n  }\n\n  var makeIsoString = function makeIsoString(dateString) {\n    var _a = __read(dateString.trim().split(' ')[0].split('-'), 3),\n        year = _a[0],\n        month = _a[1],\n        date = _a[2];\n\n    return [Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(year, 4), Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(month || 1), Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(date || 1)].join('-');\n  };\n\n  try {\n    var intlFormatter_1 = new Intl.DateTimeFormat(locale || undefined, options);\n    return function (dateString) {\n      return intlFormatter_1.format(new Date(makeIsoString(dateString) + \"T00:00:00+00:00\"));\n    };\n  } catch (e) {\n    return substrOptions.start || substrOptions.length ? function (dateString) {\n      return makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length);\n    } : undefined;\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createNativeLocaleFormatter);\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/eventHelpers.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VDatePicker/util/eventHelpers.ts ***!\n  \\*********************************************************/\n/*! exports provided: createItemTypeNativeListeners, createItemTypeListeners */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createItemTypeNativeListeners\", function() { return createItemTypeNativeListeners; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createItemTypeListeners\", function() { return createItemTypeListeners; });\nfunction createItemTypeNativeListeners(instance, itemTypeSuffix, value) {\n  return Object.keys(instance.$listeners).reduce(function (on, eventName) {\n    if (eventName.endsWith(itemTypeSuffix)) {\n      on[eventName.slice(0, -itemTypeSuffix.length)] = function (event) {\n        return instance.$emit(eventName, value, event);\n      };\n    }\n\n    return on;\n  }, {});\n}\nfunction createItemTypeListeners(instance, itemTypeSuffix) {\n  return Object.keys(instance.$listeners).reduce(function (on, eventName) {\n    if (eventName.endsWith(itemTypeSuffix)) {\n      on[eventName] = instance.$listeners[eventName];\n    }\n\n    return on;\n  }, {});\n}\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/index.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VDatePicker/util/index.ts ***!\n  \\**************************************************/\n/*! exports provided: createItemTypeListeners, createItemTypeNativeListeners, createNativeLocaleFormatter, monthChange, sanitizeDateString, pad */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _eventHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./eventHelpers */ \"./src/components/VDatePicker/util/eventHelpers.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createItemTypeListeners\", function() { return _eventHelpers__WEBPACK_IMPORTED_MODULE_0__[\"createItemTypeListeners\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createItemTypeNativeListeners\", function() { return _eventHelpers__WEBPACK_IMPORTED_MODULE_0__[\"createItemTypeNativeListeners\"]; });\n\n/* harmony import */ var _createNativeLocaleFormatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createNativeLocaleFormatter */ \"./src/components/VDatePicker/util/createNativeLocaleFormatter.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createNativeLocaleFormatter\", function() { return _createNativeLocaleFormatter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _monthChange__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./monthChange */ \"./src/components/VDatePicker/util/monthChange.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"monthChange\", function() { return _monthChange__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _sanitizeDateString__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sanitizeDateString */ \"./src/components/VDatePicker/util/sanitizeDateString.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sanitizeDateString\", function() { return _sanitizeDateString__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return _pad__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/isDateAllowed.ts\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VDatePicker/util/isDateAllowed.ts ***!\n  \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isDateAllowed; });\nfunction isDateAllowed(date, min, max, allowedFn) {\n  return (!allowedFn || allowedFn(date)) && (!min || date >= min.substr(0, 10)) && (!max || date <= max);\n}\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/monthChange.ts\":\n/*!********************************************************!*\\\n  !*** ./src/components/VDatePicker/util/monthChange.ts ***!\n  \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\n/**\n * @param {String} value YYYY-MM format\n * @param {Number} sign -1 or +1\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value, sign) {\n  var _a = __read(value.split('-').map(Number), 2),\n      year = _a[0],\n      month = _a[1];\n\n  if (month + sign === 0) {\n    return year - 1 + \"-12\";\n  } else if (month + sign === 13) {\n    return year + 1 + \"-01\";\n  } else {\n    return year + \"-\" + Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(month + sign);\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/pad.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VDatePicker/util/pad.ts ***!\n  \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar padStart = function padStart(string, targetLength, padString) {\n  targetLength = targetLength >> 0;\n  string = String(string);\n  padString = String(padString);\n\n  if (string.length > targetLength) {\n    return String(string);\n  }\n\n  targetLength = targetLength - string.length;\n\n  if (targetLength > padString.length) {\n    padString += padString.repeat(targetLength / padString.length);\n  }\n\n  return padString.slice(0, targetLength) + String(string);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (n, length) {\n  if (length === void 0) {\n    length = 2;\n  }\n\n  return padStart(n, length, '0');\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/sanitizeDateString.ts\":\n/*!***************************************************************!*\\\n  !*** ./src/components/VDatePicker/util/sanitizeDateString.ts ***!\n  \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (dateString, type) {\n  var _a = __read(dateString.split('-'), 3),\n      year = _a[0],\n      _b = _a[1],\n      month = _b === void 0 ? 1 : _b,\n      _c = _a[2],\n      date = _c === void 0 ? 1 : _c;\n\n  return (year + \"-\" + Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(month) + \"-\" + Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(date)).substr(0, {\n    date: 10,\n    month: 7,\n    year: 4\n  }[type]);\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDialog/VDialog.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VDialog/VDialog.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDialog/VDialog.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VDialog/VDialog.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDialog_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDialog.sass */ \"./src/components/VDialog/VDialog.sass\");\n/* harmony import */ var _VDialog_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDialog_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VThemeProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VThemeProvider */ \"./src/components/VThemeProvider/index.ts\");\n/* harmony import */ var _mixins_activatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/activatable */ \"./src/mixins/activatable/index.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent/index.ts\");\n/* harmony import */ var _mixins_detachable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/detachable */ \"./src/mixins/detachable/index.ts\");\n/* harmony import */ var _mixins_overlayable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/overlayable */ \"./src/mixins/overlayable/index.ts\");\n/* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/returnable */ \"./src/mixins/returnable/index.ts\");\n/* harmony import */ var _mixins_stackable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/stackable */ \"./src/mixins/stackable/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n\n\n\n\n\n // Directives\n\n // Helpers\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(_mixins_dependent__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_detachable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_overlayable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_returnable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_stackable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_activatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-dialog',\n  directives: {\n    ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n  },\n  props: {\n    dark: Boolean,\n    disabled: Boolean,\n    fullscreen: Boolean,\n    light: Boolean,\n    maxWidth: [String, Number],\n    noClickAnimation: Boolean,\n    origin: {\n      type: String,\n      default: 'center center'\n    },\n    persistent: Boolean,\n    retainFocus: {\n      type: Boolean,\n      default: true\n    },\n    scrollable: Boolean,\n    transition: {\n      type: [String, Boolean],\n      default: 'dialog-transition'\n    },\n    width: [String, Number]\n  },\n  data: function data() {\n    return {\n      activatedBy: null,\n      animate: false,\n      animateTimeout: -1,\n      stackMinZIndex: 200,\n      previousActiveElement: null\n    };\n  },\n  computed: {\n    classes: function classes() {\n      var _a;\n\n      return _a = {}, _a[(\"v-dialog \" + this.contentClass).trim()] = true, _a['v-dialog--active'] = this.isActive, _a['v-dialog--persistent'] = this.persistent, _a['v-dialog--fullscreen'] = this.fullscreen, _a['v-dialog--scrollable'] = this.scrollable, _a['v-dialog--animated'] = this.animate, _a;\n    },\n    contentClasses: function contentClasses() {\n      return {\n        'v-dialog__content': true,\n        'v-dialog__content--active': this.isActive\n      };\n    },\n    hasActivator: function hasActivator() {\n      return Boolean(!!this.$slots.activator || !!this.$scopedSlots.activator);\n    }\n  },\n  watch: {\n    isActive: function isActive(val) {\n      var _a;\n\n      if (val) {\n        this.show();\n        this.hideScroll();\n      } else {\n        this.removeOverlay();\n        this.unbind();\n        (_a = this.previousActiveElement) === null || _a === void 0 ? void 0 : _a.focus();\n      }\n    },\n    fullscreen: function fullscreen(val) {\n      if (!this.isActive) return;\n\n      if (val) {\n        this.hideScroll();\n        this.removeOverlay(false);\n      } else {\n        this.showScroll();\n        this.genOverlay();\n      }\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('full-width')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"removed\"])('full-width', this);\n    }\n  },\n  beforeMount: function beforeMount() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      _this.isBooted = _this.isActive;\n      _this.isActive && _this.show();\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (typeof window !== 'undefined') this.unbind();\n  },\n  methods: {\n    animateClick: function animateClick() {\n      var _this = this;\n\n      this.animate = false; // Needed for when clicking very fast\n      // outside of the dialog\n\n      this.$nextTick(function () {\n        _this.animate = true;\n        window.clearTimeout(_this.animateTimeout);\n        _this.animateTimeout = window.setTimeout(function () {\n          return _this.animate = false;\n        }, 150);\n      });\n    },\n    closeConditional: function closeConditional(e) {\n      var target = e.target; // Ignore the click if the dialog is closed or destroyed,\n      // if it was on an element inside the content,\n      // if it was dragged onto the overlay (#6969),\n      // or if this isn't the topmost dialog (#9907)\n\n      return !(this._isDestroyed || !this.isActive || this.$refs.content.contains(target) || this.overlay && target && !this.overlay.$el.contains(target)) && this.activeZIndex >= this.getMaxZIndex();\n    },\n    hideScroll: function hideScroll() {\n      if (this.fullscreen) {\n        document.documentElement.classList.add('overflow-y-hidden');\n      } else {\n        _mixins_overlayable__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.methods.hideScroll.call(this);\n      }\n    },\n    show: function show() {\n      var _this = this;\n\n      !this.fullscreen && !this.hideOverlay && this.genOverlay(); // Double nextTick to wait for lazy content to be generated\n\n      this.$nextTick(function () {\n        _this.$nextTick(function () {\n          var _a, _b;\n\n          if (!((_a = _this.$refs.dialog) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {\n            _this.previousActiveElement = document.activeElement;\n            (_b = _this.$refs.dialog) === null || _b === void 0 ? void 0 : _b.focus();\n          }\n\n          _this.bind();\n        });\n      });\n    },\n    bind: function bind() {\n      window.addEventListener('focusin', this.onFocusin);\n    },\n    unbind: function unbind() {\n      window.removeEventListener('focusin', this.onFocusin);\n    },\n    onClickOutside: function onClickOutside(e) {\n      this.$emit('click:outside', e);\n\n      if (this.persistent) {\n        this.noClickAnimation || this.animateClick();\n      } else {\n        this.isActive = false;\n      }\n    },\n    onKeydown: function onKeydown(e) {\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"keyCodes\"].esc && !this.getOpenDependents().length) {\n        if (!this.persistent) {\n          this.isActive = false;\n          var activator_1 = this.getActivator();\n          this.$nextTick(function () {\n            return activator_1 && activator_1.focus();\n          });\n        } else if (!this.noClickAnimation) {\n          this.animateClick();\n        }\n      }\n\n      this.$emit('keydown', e);\n    },\n    // On focus change, wrap focus to stay inside the dialog\n    // https://github.com/vuetifyjs/vuetify/issues/6892\n    onFocusin: function onFocusin(e) {\n      if (!e || !this.retainFocus) return;\n      var target = e.target;\n\n      if (!!target && this.$refs.dialog && // It isn't the document or the dialog body\n      ![document, this.$refs.dialog].includes(target) && // It isn't inside the dialog body\n      !this.$refs.dialog.contains(target) && // We're the topmost dialog\n      this.activeZIndex >= this.getMaxZIndex() && // It isn't inside a dependent element (like a menu)\n      !this.getOpenDependentElements().some(function (el) {\n        return el.contains(target);\n      }) // So we must have focused something outside the dialog and its children\n      ) {\n        // Find and focus the first available element inside the dialog\n        var focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n\n        var el = __spreadArray([], __read(focusable), false).find(function (el) {\n          return !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]');\n        });\n\n        el && el.focus();\n      }\n    },\n    genContent: function genContent() {\n      var _this = this;\n\n      return this.showLazyContent(function () {\n        return [_this.$createElement(_VThemeProvider__WEBPACK_IMPORTED_MODULE_1__[\"VThemeProvider\"], {\n          props: {\n            root: true,\n            light: _this.light,\n            dark: _this.dark\n          }\n        }, [_this.$createElement('div', {\n          class: _this.contentClasses,\n          attrs: __assign({\n            role: 'dialog',\n            'aria-modal': _this.hideOverlay ? undefined : 'true'\n          }, _this.getScopeIdAttrs()),\n          on: {\n            keydown: _this.onKeydown\n          },\n          style: {\n            zIndex: _this.activeZIndex\n          },\n          ref: 'content'\n        }, [_this.genTransition()])])];\n      });\n    },\n    genTransition: function genTransition() {\n      var content = this.genInnerContent();\n      if (!this.transition) return content;\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition,\n          origin: this.origin,\n          appear: true\n        }\n      }, [content]);\n    },\n    genInnerContent: function genInnerContent() {\n      var data = {\n        class: this.classes,\n        attrs: {\n          tabindex: this.isActive ? 0 : undefined\n        },\n        ref: 'dialog',\n        directives: [{\n          name: 'click-outside',\n          value: {\n            handler: this.onClickOutside,\n            closeConditional: this.closeConditional,\n            include: this.getOpenDependentElements\n          }\n        }, {\n          name: 'show',\n          value: this.isActive\n        }],\n        style: {\n          transformOrigin: this.origin\n        }\n      };\n\n      if (!this.fullscreen) {\n        data.style = __assign(__assign({}, data.style), {\n          maxWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"convertToUnit\"])(this.maxWidth),\n          width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_11__[\"convertToUnit\"])(this.width)\n        });\n      }\n\n      return this.$createElement('div', data, this.getContentSlot());\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-dialog__container',\n      class: {\n        'v-dialog__container--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n      }\n    }, [this.genActivator(), this.genContent()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDialog/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VDialog/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VDialog, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDialog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDialog */ \"./src/components/VDialog/VDialog.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialog\", function() { return _VDialog__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VDialog__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VDivider/VDivider.sass\":\n/*!***********************************************!*\\\n  !*** ./src/components/VDivider/VDivider.sass ***!\n  \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VDivider/VDivider.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VDivider/VDivider.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDivider_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDivider.sass */ \"./src/components/VDivider/VDivider.sass\");\n/* harmony import */ var _VDivider_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VDivider_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-divider',\n  props: {\n    inset: Boolean,\n    vertical: Boolean\n  },\n  render: function render(h) {\n    // WAI-ARIA attributes\n    var orientation;\n\n    if (!this.$attrs.role || this.$attrs.role === 'separator') {\n      orientation = this.vertical ? 'vertical' : 'horizontal';\n    }\n\n    return h('hr', {\n      class: __assign({\n        'v-divider': true,\n        'v-divider--inset': this.inset,\n        'v-divider--vertical': this.vertical\n      }, this.themeClasses),\n      attrs: __assign({\n        role: 'separator',\n        'aria-orientation': orientation\n      }, this.$attrs),\n      on: this.$listeners\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDivider/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VDivider/index.ts ***!\n  \\******************************************/\n/*! exports provided: VDivider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDivider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDivider */ \"./src/components/VDivider/VDivider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDivider\", function() { return _VDivider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VDivider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanel.sass\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VExpansionPanel/VExpansionPanel.sass ***!\n  \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanel.ts\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VExpansionPanel/VExpansionPanel.ts ***!\n  \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_0__[\"factory\"])('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'), Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__[\"provide\"])('expansionPanel', true)\n/* @vue/component */\n).extend({\n  name: 'v-expansion-panel',\n  props: {\n    disabled: Boolean,\n    readonly: Boolean\n  },\n  data: function data() {\n    return {\n      content: null,\n      header: null,\n      nextIsActive: false\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-expansion-panel--active': this.isActive,\n        'v-expansion-panel--next-active': this.nextIsActive,\n        'v-expansion-panel--disabled': this.isDisabled\n      }, this.groupClasses);\n    },\n    isDisabled: function isDisabled() {\n      return this.expansionPanels.disabled || this.disabled;\n    },\n    isReadonly: function isReadonly() {\n      return this.expansionPanels.readonly || this.readonly;\n    }\n  },\n  methods: {\n    registerContent: function registerContent(vm) {\n      this.content = vm;\n    },\n    unregisterContent: function unregisterContent() {\n      this.content = null;\n    },\n    registerHeader: function registerHeader(vm) {\n      this.header = vm;\n      vm.$on('click', this.onClick);\n    },\n    unregisterHeader: function unregisterHeader() {\n      this.header = null;\n    },\n    onClick: function onClick(e) {\n      if (e.detail) this.header.$el.blur();\n      this.$emit('click', e);\n      this.isReadonly || this.isDisabled || this.toggle();\n    },\n    toggle: function toggle() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        return _this.$emit('change');\n      });\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-expansion-panel',\n      class: this.classes,\n      attrs: {\n        'aria-expanded': String(this.isActive)\n      }\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanelContent.ts\":\n/*!******************************************************************!*\\\n  !*** ./src/components/VExpansionPanel/VExpansionPanelContent.ts ***!\n  \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _mixins_bootable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/bootable */ \"./src/mixins/bootable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n // Mixins\n\n\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_bootable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__[\"inject\"])('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel'));\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-expansion-panel-content',\n  data: function data() {\n    return {\n      isActive: false\n    };\n  },\n  computed: {\n    parentIsActive: function parentIsActive() {\n      return this.expansionPanel.isActive;\n    }\n  },\n  watch: {\n    parentIsActive: {\n      immediate: true,\n      handler: function handler(val, oldVal) {\n        var _this = this;\n\n        if (val) this.isBooted = true;\n        if (oldVal == null) this.isActive = val;else this.$nextTick(function () {\n          return _this.isActive = val;\n        });\n      }\n    }\n  },\n  created: function created() {\n    this.expansionPanel.registerContent(this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.expansionPanel.unregisterContent();\n  },\n  render: function render(h) {\n    var _this = this;\n\n    return h(_transitions__WEBPACK_IMPORTED_MODULE_0__[\"VExpandTransition\"], this.showLazyContent(function () {\n      return [h('div', _this.setBackgroundColor(_this.color, {\n        staticClass: 'v-expansion-panel-content',\n        directives: [{\n          name: 'show',\n          value: _this.isActive\n        }]\n      }), [h('div', {\n        class: 'v-expansion-panel-content__wrap'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(_this, 'default', {\n        open: _this.isActive\n      }))])];\n    }));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanelHeader.ts\":\n/*!*****************************************************************!*\\\n  !*** ./src/components/VExpansionPanel/VExpansionPanelHeader.ts ***!\n  \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Components\n\n\n\n // Mixins\n\n\n // Directives\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__[\"inject\"])('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel'));\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-expansion-panel-header',\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  },\n  props: {\n    disableIconRotate: Boolean,\n    expandIcon: {\n      type: String,\n      default: '$expand'\n    },\n    hideActions: Boolean,\n    ripple: {\n      type: [Boolean, Object],\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      hasMousedown: false\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return {\n        'v-expansion-panel-header--active': this.isActive,\n        'v-expansion-panel-header--mousedown': this.hasMousedown\n      };\n    },\n    isActive: function isActive() {\n      return this.expansionPanel.isActive;\n    },\n    isDisabled: function isDisabled() {\n      return this.expansionPanel.isDisabled;\n    },\n    isReadonly: function isReadonly() {\n      return this.expansionPanel.isReadonly;\n    }\n  },\n  created: function created() {\n    this.expansionPanel.registerHeader(this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.expansionPanel.unregisterHeader();\n  },\n  methods: {\n    onClick: function onClick(e) {\n      this.$emit('click', e);\n    },\n    genIcon: function genIcon() {\n      var icon = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'actions', {\n        open: this.isActive\n      }) || [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.expandIcon)];\n      return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_0__[\"VFadeTransition\"], [this.$createElement('div', {\n        staticClass: 'v-expansion-panel-header__icon',\n        class: {\n          'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate\n        },\n        directives: [{\n          name: 'show',\n          value: !this.isDisabled\n        }]\n      }, icon)]);\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    return h('button', this.setBackgroundColor(this.color, {\n      staticClass: 'v-expansion-panel-header',\n      class: this.classes,\n      attrs: {\n        tabindex: this.isDisabled ? -1 : null,\n        type: 'button',\n        'aria-expanded': this.isActive\n      },\n      directives: [{\n        name: 'ripple',\n        value: this.ripple\n      }],\n      on: __assign(__assign({}, this.$listeners), {\n        click: this.onClick,\n        mousedown: function mousedown() {\n          return _this.hasMousedown = true;\n        },\n        mouseup: function mouseup() {\n          return _this.hasMousedown = false;\n        }\n      })\n    }), [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'default', {\n      open: this.isActive\n    }, true), this.hideActions || this.genIcon()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanels.ts\":\n/*!************************************************************!*\\\n  !*** ./src/components/VExpansionPanel/VExpansionPanels.ts ***!\n  \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VExpansionPanel_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VExpansionPanel.sass */ \"./src/components/VExpansionPanel/VExpansionPanel.sass\");\n/* harmony import */ var _VExpansionPanel_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VExpansionPanel_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].extend({\n  name: 'v-expansion-panels',\n  provide: function provide() {\n    return {\n      expansionPanels: this\n    };\n  },\n  props: {\n    accordion: Boolean,\n    disabled: Boolean,\n    flat: Boolean,\n    hover: Boolean,\n    focusable: Boolean,\n    inset: Boolean,\n    popout: Boolean,\n    readonly: Boolean,\n    tile: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].options.computed.classes.call(this)), {\n        'v-expansion-panels': true,\n        'v-expansion-panels--accordion': this.accordion,\n        'v-expansion-panels--flat': this.flat,\n        'v-expansion-panels--hover': this.hover,\n        'v-expansion-panels--focusable': this.focusable,\n        'v-expansion-panels--inset': this.inset,\n        'v-expansion-panels--popout': this.popout,\n        'v-expansion-panels--tile': this.tile\n      });\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('expand')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"breaking\"])('expand', 'multiple', this);\n    }\n    /* istanbul ignore next */\n\n\n    if (Array.isArray(this.value) && this.value.length > 0 && typeof this.value[0] === 'boolean') {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"breaking\"])(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this);\n    }\n  },\n  methods: {\n    updateItem: function updateItem(item, index) {\n      var value = this.getValue(item, index);\n      var nextValue = this.getValue(item, index + 1);\n      item.isActive = this.toggleMethod(value);\n      item.nextIsActive = this.toggleMethod(nextValue);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/index.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VExpansionPanel/index.ts ***!\n  \\*************************************************/\n/*! exports provided: VExpansionPanels, VExpansionPanel, VExpansionPanelHeader, VExpansionPanelContent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VExpansionPanels__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VExpansionPanels */ \"./src/components/VExpansionPanel/VExpansionPanels.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanels\", function() { return _VExpansionPanels__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VExpansionPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VExpansionPanel */ \"./src/components/VExpansionPanel/VExpansionPanel.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanel\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VExpansionPanelContent */ \"./src/components/VExpansionPanel/VExpansionPanelContent.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanelContent\", function() { return _VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VExpansionPanelHeader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VExpansionPanelHeader */ \"./src/components/VExpansionPanel/VExpansionPanelHeader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanelHeader\", function() { return _VExpansionPanelHeader__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VExpansionPanels: _VExpansionPanels__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VExpansionPanel: _VExpansionPanel__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VExpansionPanelHeader: _VExpansionPanelHeader__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VExpansionPanelContent: _VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VFileInput/VFileInput.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VFileInput/VFileInput.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VFileInput/VFileInput.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VFileInput/VFileInput.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VFileInput_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VFileInput.sass */ \"./src/components/VFileInput/VFileInput.sass\");\n/* harmony import */ var _VFileInput_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VFileInput_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VTextField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VTextField */ \"./src/components/VTextField/index.ts\");\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VChip */ \"./src/components/VChip/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n // Utilities\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-file-input',\n  model: {\n    prop: 'value',\n    event: 'change'\n  },\n  props: {\n    chips: Boolean,\n    clearable: {\n      type: Boolean,\n      default: true\n    },\n    counterSizeString: {\n      type: String,\n      default: '$vuetify.fileInput.counterSize'\n    },\n    counterString: {\n      type: String,\n      default: '$vuetify.fileInput.counter'\n    },\n    hideInput: Boolean,\n    multiple: Boolean,\n    placeholder: String,\n    prependIcon: {\n      type: String,\n      default: '$file'\n    },\n    readonly: {\n      type: Boolean,\n      default: false\n    },\n    showSize: {\n      type: [Boolean, Number],\n      default: false,\n      validator: function validator(v) {\n        return typeof v === 'boolean' || [1000, 1024].includes(v);\n      }\n    },\n    smallChips: Boolean,\n    truncateLength: {\n      type: [Number, String],\n      default: 22\n    },\n    type: {\n      type: String,\n      default: 'file'\n    },\n    value: {\n      default: undefined,\n      validator: function validator(val) {\n        return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"wrapInArray\"])(val).every(function (v) {\n          return v != null && _typeof(v) === 'object';\n        });\n      }\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-file-input': true\n      });\n    },\n    computedCounterValue: function computedCounterValue() {\n      var fileCount = this.multiple && this.lazyValue ? this.lazyValue.length : this.lazyValue instanceof File ? 1 : 0;\n      if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount);\n      var bytes = this.internalArrayValue.reduce(function (bytes, _a) {\n        var _b = _a.size,\n            size = _b === void 0 ? 0 : _b;\n        return bytes + size;\n      }, 0);\n      return this.$vuetify.lang.t(this.counterSizeString, fileCount, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"humanReadableFileSize\"])(bytes, this.base === 1024));\n    },\n    internalArrayValue: function internalArrayValue() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"wrapInArray\"])(this.internalValue);\n    },\n    internalValue: {\n      get: function get() {\n        return this.lazyValue;\n      },\n      set: function set(val) {\n        this.lazyValue = val;\n        this.$emit('change', this.lazyValue);\n      }\n    },\n    isDirty: function isDirty() {\n      return this.internalArrayValue.length > 0;\n    },\n    isLabelActive: function isLabelActive() {\n      return this.isDirty;\n    },\n    text: function text() {\n      var _this = this;\n\n      if (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) return [this.placeholder];\n      return this.internalArrayValue.map(function (file) {\n        var _a = file.name,\n            name = _a === void 0 ? '' : _a,\n            _b = file.size,\n            size = _b === void 0 ? 0 : _b;\n\n        var truncatedText = _this.truncateText(name);\n\n        return !_this.showSize ? truncatedText : truncatedText + \" (\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"humanReadableFileSize\"])(size, _this.base === 1024) + \")\";\n      });\n    },\n    base: function base() {\n      return typeof this.showSize !== 'boolean' ? this.showSize : undefined;\n    },\n    hasChips: function hasChips() {\n      return this.chips || this.smallChips;\n    }\n  },\n  watch: {\n    readonly: {\n      handler: function handler(v) {\n        if (v === true) Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"consoleError\"])('readonly is not supported on <v-file-input>', this);\n      },\n      immediate: true\n    },\n    value: function value(v) {\n      var value = this.multiple ? v : v ? [v] : [];\n\n      if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"deepEqual\"])(value, this.$refs.input.files)) {\n        // When the input value is changed programatically, clear the\n        // internal input's value so that the `onInput` handler\n        // can be triggered again if the user re-selects the exact\n        // same file(s). Ideally, `input.files` should be\n        // manipulated directly but that property is readonly.\n        this.$refs.input.value = '';\n      }\n    }\n  },\n  methods: {\n    clearableCallback: function clearableCallback() {\n      this.internalValue = this.multiple ? [] : null;\n      this.$refs.input.value = '';\n    },\n    genChips: function genChips() {\n      var _this = this;\n\n      if (!this.isDirty) return [];\n      return this.text.map(function (text, index) {\n        return _this.$createElement(_VChip__WEBPACK_IMPORTED_MODULE_2__[\"VChip\"], {\n          props: {\n            small: _this.smallChips\n          },\n          on: {\n            'click:close': function clickClose() {\n              var internalValue = _this.internalValue;\n              internalValue.splice(index, 1);\n              _this.internalValue = internalValue; // Trigger the watcher\n            }\n          }\n        }, [text]);\n      });\n    },\n    genControl: function genControl() {\n      var render = _VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genControl.call(this);\n\n      if (this.hideInput) {\n        render.data.style = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_5__[\"mergeStyles\"])(render.data.style, {\n          display: 'none'\n        });\n      }\n\n      return render;\n    },\n    genInput: function genInput() {\n      var input = _VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInput.call(this);\n      input.data.attrs.multiple = this.multiple; // We should not be setting value\n      // programmatically on the input\n      // when it is using type=\"file\"\n\n      delete input.data.domProps.value; // This solves an issue in Safari where\n      // nothing happens when adding a file\n      // due to the input event not firing\n      // https://github.com/vuetifyjs/vuetify/issues/7941\n\n      delete input.data.on.input;\n      input.data.on.change = this.onInput;\n      return [this.genSelections(), input];\n    },\n    genPrependSlot: function genPrependSlot() {\n      var _this = this;\n\n      if (!this.prependIcon) return null;\n      var icon = this.genIcon('prepend', function () {\n        _this.$refs.input.click();\n      });\n      return this.genSlot('prepend', 'outer', [icon]);\n    },\n    genSelectionText: function genSelectionText() {\n      var length = this.text.length;\n      if (length < 2) return this.text;\n      if (this.showSize && !this.counter) return [this.computedCounterValue];\n      return [this.$vuetify.lang.t(this.counterString, length)];\n    },\n    genSelections: function genSelections() {\n      var _this = this;\n\n      var children = [];\n\n      if (this.isDirty && this.$scopedSlots.selection) {\n        this.internalArrayValue.forEach(function (file, index) {\n          if (!_this.$scopedSlots.selection) return;\n          children.push(_this.$scopedSlots.selection({\n            text: _this.text[index],\n            file: file,\n            index: index\n          }));\n        });\n      } else {\n        children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText());\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-file-input__text',\n        class: {\n          'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n          'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection\n        }\n      }, children);\n    },\n    genTextFieldSlot: function genTextFieldSlot() {\n      var _this = this;\n\n      var node = _VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genTextFieldSlot.call(this);\n      node.data.on = __assign(__assign({}, node.data.on || {}), {\n        click: function click(e) {\n          // Clicking the label already delegates to input element, so we shouldn't click it twice\n          if (e.target && e.target.nodeName === 'LABEL') return;\n\n          _this.$refs.input.click();\n        }\n      });\n      return node;\n    },\n    onInput: function onInput(e) {\n      var files = __spreadArray([], __read(e.target.files || []), false);\n\n      this.internalValue = this.multiple ? files : files[0]; // Set initialValue here otherwise isFocused\n      // watcher in VTextField will emit a change\n      // event whenever the component is blurred\n\n      this.initialValue = this.internalValue;\n    },\n    onKeyDown: function onKeyDown(e) {\n      this.$emit('keydown', e);\n    },\n    truncateText: function truncateText(str) {\n      if (str.length < Number(this.truncateLength)) return str;\n      var charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2);\n      return str.slice(0, charsKeepOneSide) + \"\\u2026\" + str.slice(str.length - charsKeepOneSide);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VFileInput/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VFileInput/index.ts ***!\n  \\********************************************/\n/*! exports provided: VFileInput, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VFileInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VFileInput */ \"./src/components/VFileInput/VFileInput.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFileInput\", function() { return _VFileInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VFileInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VFooter/VFooter.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VFooter/VFooter.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VFooter/VFooter.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VFooter/VFooter.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VFooter_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VFooter.sass */ \"./src/components/VFooter/VFooter.sass\");\n/* harmony import */ var _VFooter_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VFooter_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet/VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable/index.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('footer', ['height', 'inset']), _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-footer',\n  props: {\n    height: {\n      default: 'auto',\n      type: [Number, String]\n    },\n    inset: Boolean,\n    padless: Boolean,\n    tag: {\n      type: String,\n      default: 'footer'\n    }\n  },\n  computed: {\n    applicationProperty: function applicationProperty() {\n      return this.inset ? 'insetFooter' : 'footer';\n    },\n    classes: function classes() {\n      return __assign(__assign({}, _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-footer--absolute': this.absolute,\n        'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n        'v-footer--padless': this.padless,\n        'v-footer--inset': this.inset\n      });\n    },\n    computedBottom: function computedBottom() {\n      if (!this.isPositioned) return undefined;\n      return this.app ? this.$vuetify.application.bottom : 0;\n    },\n    computedLeft: function computedLeft() {\n      if (!this.isPositioned) return undefined;\n      return this.app && this.inset ? this.$vuetify.application.left : 0;\n    },\n    computedRight: function computedRight() {\n      if (!this.isPositioned) return undefined;\n      return this.app && this.inset ? this.$vuetify.application.right : 0;\n    },\n    isPositioned: function isPositioned() {\n      return Boolean(this.absolute || this.fixed || this.app);\n    },\n    styles: function styles() {\n      var height = parseInt(this.height);\n      return __assign(__assign({}, _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this)), {\n        height: isNaN(height) ? height : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(height),\n        left: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.computedLeft),\n        right: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.computedRight),\n        bottom: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.computedBottom)\n      });\n    }\n  },\n  methods: {\n    updateApplication: function updateApplication() {\n      var height = parseInt(this.height);\n      return isNaN(height) ? this.$el ? this.$el.clientHeight : 0 : height;\n    }\n  },\n  render: function render(h) {\n    var data = this.setBackgroundColor(this.color, {\n      staticClass: 'v-footer',\n      class: this.classes,\n      style: this.styles\n    });\n    return h(this.tag, data, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VFooter/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VFooter/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VFooter, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VFooter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VFooter */ \"./src/components/VFooter/VFooter.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFooter\", function() { return _VFooter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VFooter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VForm/VForm.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VForm/VForm.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/binds-attrs */ \"./src/mixins/binds-attrs/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"provide\"])('form')\n/* @vue/component */\n).extend({\n  name: 'v-form',\n  provide: function provide() {\n    return {\n      form: this\n    };\n  },\n  inheritAttrs: false,\n  props: {\n    disabled: Boolean,\n    lazyValidation: Boolean,\n    readonly: Boolean,\n    value: Boolean\n  },\n  data: function data() {\n    return {\n      inputs: [],\n      watchers: [],\n      errorBag: {}\n    };\n  },\n  watch: {\n    errorBag: {\n      handler: function handler(val) {\n        var errors = Object.values(val).includes(true);\n        this.$emit('input', !errors);\n      },\n      deep: true,\n      immediate: true\n    }\n  },\n  methods: {\n    watchInput: function watchInput(input) {\n      var _this = this;\n\n      var watcher = function watcher(input) {\n        return input.$watch('hasError', function (val) {\n          _this.$set(_this.errorBag, input._uid, val);\n        }, {\n          immediate: true\n        });\n      };\n\n      var watchers = {\n        _uid: input._uid,\n        valid: function valid() {},\n        shouldValidate: function shouldValidate() {}\n      };\n\n      if (this.lazyValidation) {\n        // Only start watching inputs if we need to\n        watchers.shouldValidate = input.$watch('shouldValidate', function (val) {\n          if (!val) return; // Only watch if we're not already doing it\n\n          if (_this.errorBag.hasOwnProperty(input._uid)) return;\n          watchers.valid = watcher(input);\n        });\n      } else {\n        watchers.valid = watcher(input);\n      }\n\n      return watchers;\n    },\n\n    /** @public */\n    validate: function validate() {\n      return this.inputs.filter(function (input) {\n        return !input.validate(true);\n      }).length === 0;\n    },\n\n    /** @public */\n    reset: function reset() {\n      this.inputs.forEach(function (input) {\n        return input.reset();\n      });\n      this.resetErrorBag();\n    },\n    resetErrorBag: function resetErrorBag() {\n      var _this = this;\n\n      if (this.lazyValidation) {\n        // Account for timeout in validatable\n        setTimeout(function () {\n          _this.errorBag = {};\n        }, 0);\n      }\n    },\n\n    /** @public */\n    resetValidation: function resetValidation() {\n      this.inputs.forEach(function (input) {\n        return input.resetValidation();\n      });\n      this.resetErrorBag();\n    },\n    register: function register(input) {\n      this.inputs.push(input);\n      this.watchers.push(this.watchInput(input));\n    },\n    unregister: function unregister(input) {\n      var found = this.inputs.find(function (i) {\n        return i._uid === input._uid;\n      });\n      if (!found) return;\n      var unwatch = this.watchers.find(function (i) {\n        return i._uid === found._uid;\n      });\n\n      if (unwatch) {\n        unwatch.valid();\n        unwatch.shouldValidate();\n      }\n\n      this.watchers = this.watchers.filter(function (i) {\n        return i._uid !== found._uid;\n      });\n      this.inputs = this.inputs.filter(function (i) {\n        return i._uid !== found._uid;\n      });\n      this.$delete(this.errorBag, found._uid);\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    return h('form', {\n      staticClass: 'v-form',\n      attrs: __assign({\n        novalidate: true\n      }, this.attrs$),\n      on: {\n        submit: function submit(e) {\n          return _this.$emit('submit', e);\n        }\n      }\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VForm/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VForm/index.ts ***!\n  \\***************************************/\n/*! exports provided: VForm, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VForm */ \"./src/components/VForm/VForm.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VForm\", function() { return _VForm__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VForm__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VCol.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VGrid/VCol.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VGrid_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VGrid.sass */ \"./src/components/VGrid/VGrid.sass\");\n/* harmony import */ var _VGrid_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VGrid_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n\n // no xs\n\nvar breakpoints = ['sm', 'md', 'lg', 'xl'];\n\nvar breakpointProps = function () {\n  return breakpoints.reduce(function (props, val) {\n    props[val] = {\n      type: [Boolean, String, Number],\n      default: false\n    };\n    return props;\n  }, {});\n}();\n\nvar offsetProps = function () {\n  return breakpoints.reduce(function (props, val) {\n    props['offset' + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(val)] = {\n      type: [String, Number],\n      default: null\n    };\n    return props;\n  }, {});\n}();\n\nvar orderProps = function () {\n  return breakpoints.reduce(function (props, val) {\n    props['order' + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(val)] = {\n      type: [String, Number],\n      default: null\n    };\n    return props;\n  }, {});\n}();\n\nvar propMap = {\n  col: Object.keys(breakpointProps),\n  offset: Object.keys(offsetProps),\n  order: Object.keys(orderProps)\n};\n\nfunction breakpointClass(type, prop, val) {\n  var className = type;\n\n  if (val == null || val === false) {\n    return undefined;\n  }\n\n  if (prop) {\n    var breakpoint = prop.replace(type, '');\n    className += \"-\" + breakpoint;\n  } // Handling the boolean style prop when accepting [Boolean, String, Number]\n  // means Vue will not convert <v-col sm></v-col> to sm: true for us.\n  // Since the default is false, an empty string indicates the prop's presence.\n\n\n  if (type === 'col' && (val === '' || val === true)) {\n    // .col-md\n    return className.toLowerCase();\n  } // .order-md-6\n\n\n  className += \"-\" + val;\n  return className.toLowerCase();\n}\n\nvar cache = new Map();\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n  name: 'v-col',\n  functional: true,\n  props: __assign(__assign(__assign(__assign(__assign(__assign({\n    cols: {\n      type: [Boolean, String, Number],\n      default: false\n    }\n  }, breakpointProps), {\n    offset: {\n      type: [String, Number],\n      default: null\n    }\n  }), offsetProps), {\n    order: {\n      type: [String, Number],\n      default: null\n    }\n  }), orderProps), {\n    alignSelf: {\n      type: String,\n      default: null,\n      validator: function validator(str) {\n        return ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str);\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  }),\n  render: function render(h, _a) {\n    var _b;\n\n    var props = _a.props,\n        data = _a.data,\n        children = _a.children,\n        parent = _a.parent; // Super-fast memoization based on props, 5x faster than JSON.stringify\n\n    var cacheKey = '';\n\n    for (var prop in props) {\n      cacheKey += String(props[prop]);\n    }\n\n    var classList = cache.get(cacheKey);\n\n    if (!classList) {\n      classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n      var type_1;\n\n      for (type_1 in propMap) {\n        propMap[type_1].forEach(function (prop) {\n          var value = props[prop];\n          var className = breakpointClass(type_1, prop, value);\n          if (className) classList.push(className);\n        });\n      }\n\n      var hasColClasses = classList.some(function (className) {\n        return className.startsWith('col-');\n      });\n      classList.push((_b = {\n        // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n        col: !hasColClasses || !props.cols\n      }, _b[\"col-\" + props.cols] = props.cols, _b[\"offset-\" + props.offset] = props.offset, _b[\"order-\" + props.order] = props.order, _b[\"align-self-\" + props.alignSelf] = props.alignSelf, _b));\n      cache.set(cacheKey, classList);\n    }\n\n    return h(props.tag, Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data, {\n      class: classList\n    }), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VContainer.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VGrid/VContainer.ts ***!\n  \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_grid.sass */ \"./src/components/VGrid/_grid.sass\");\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_grid_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VGrid_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VGrid.sass */ \"./src/components/VGrid/VGrid.sass\");\n/* harmony import */ var _VGrid_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_VGrid_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./grid */ \"./src/components/VGrid/grid.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_grid__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('container').extend({\n  name: 'v-container',\n  functional: true,\n  props: {\n    id: String,\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    fluid: {\n      type: Boolean,\n      default: false\n    }\n  },\n  render: function render(h, _a) {\n    var props = _a.props,\n        data = _a.data,\n        children = _a.children;\n    var classes;\n    var attrs = data.attrs;\n\n    if (attrs) {\n      // reset attrs to extract utility clases like pa-3\n      data.attrs = {};\n      classes = Object.keys(attrs).filter(function (key) {\n        // TODO: Remove once resolved\n        // https://github.com/vuejs/vue/issues/7841\n        if (key === 'slot') return false;\n        var value = attrs[key]; // add back data attributes like data-test=\"foo\" but do not\n        // add them as classes\n\n        if (key.startsWith('data-')) {\n          data.attrs[key] = value;\n          return false;\n        }\n\n        return value || typeof value === 'string';\n      });\n    }\n\n    if (props.id) {\n      data.domProps = data.domProps || {};\n      data.domProps.id = props.id;\n    }\n\n    return h(props.tag, Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(data, {\n      staticClass: 'container',\n      class: Array({\n        'container--fluid': props.fluid\n      }).concat(classes || [])\n    }), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VFlex.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VGrid/VFlex.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_grid.sass */ \"./src/components/VGrid/_grid.sass\");\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_grid_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./src/components/VGrid/grid.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_grid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('flex'));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VGrid.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VGrid/VGrid.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VLayout.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VGrid/VLayout.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_grid.sass */ \"./src/components/VGrid/_grid.sass\");\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_grid_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./src/components/VGrid/grid.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_grid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('layout'));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VRow.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VGrid/VRow.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VGrid_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VGrid.sass */ \"./src/components/VGrid/VGrid.sass\");\n/* harmony import */ var _VGrid_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VGrid_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n // no xs\n\nvar breakpoints = ['sm', 'md', 'lg', 'xl'];\nvar ALIGNMENT = ['start', 'end', 'center'];\n\nfunction makeProps(prefix, def) {\n  return breakpoints.reduce(function (props, val) {\n    props[prefix + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(val)] = def();\n    return props;\n  }, {});\n}\n\nvar alignValidator = function alignValidator(str) {\n  return __spreadArray(__spreadArray([], __read(ALIGNMENT), false), ['baseline', 'stretch'], false).includes(str);\n};\n\nvar alignProps = makeProps('align', function () {\n  return {\n    type: String,\n    default: null,\n    validator: alignValidator\n  };\n});\n\nvar justifyValidator = function justifyValidator(str) {\n  return __spreadArray(__spreadArray([], __read(ALIGNMENT), false), ['space-between', 'space-around'], false).includes(str);\n};\n\nvar justifyProps = makeProps('justify', function () {\n  return {\n    type: String,\n    default: null,\n    validator: justifyValidator\n  };\n});\n\nvar alignContentValidator = function alignContentValidator(str) {\n  return __spreadArray(__spreadArray([], __read(ALIGNMENT), false), ['space-between', 'space-around', 'stretch'], false).includes(str);\n};\n\nvar alignContentProps = makeProps('alignContent', function () {\n  return {\n    type: String,\n    default: null,\n    validator: alignContentValidator\n  };\n});\nvar propMap = {\n  align: Object.keys(alignProps),\n  justify: Object.keys(justifyProps),\n  alignContent: Object.keys(alignContentProps)\n};\nvar classMap = {\n  align: 'align',\n  justify: 'justify',\n  alignContent: 'align-content'\n};\n\nfunction breakpointClass(type, prop, val) {\n  var className = classMap[type];\n\n  if (val == null) {\n    return undefined;\n  }\n\n  if (prop) {\n    // alignSm -> Sm\n    var breakpoint = prop.replace(type, '');\n    className += \"-\" + breakpoint;\n  } // .align-items-sm-center\n\n\n  className += \"-\" + val;\n  return className.toLowerCase();\n}\n\nvar cache = new Map();\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n  name: 'v-row',\n  functional: true,\n  props: __assign(__assign(__assign(__assign(__assign({\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    dense: Boolean,\n    noGutters: Boolean,\n    align: {\n      type: String,\n      default: null,\n      validator: alignValidator\n    }\n  }, alignProps), {\n    justify: {\n      type: String,\n      default: null,\n      validator: justifyValidator\n    }\n  }), justifyProps), {\n    alignContent: {\n      type: String,\n      default: null,\n      validator: alignContentValidator\n    }\n  }), alignContentProps),\n  render: function render(h, _a) {\n    var _b;\n\n    var props = _a.props,\n        data = _a.data,\n        children = _a.children; // Super-fast memoization based on props, 5x faster than JSON.stringify\n\n    var cacheKey = '';\n\n    for (var prop in props) {\n      cacheKey += String(props[prop]);\n    }\n\n    var classList = cache.get(cacheKey);\n\n    if (!classList) {\n      classList = []; // Loop through `align`, `justify`, `alignContent` breakpoint props\n\n      var type_1;\n\n      for (type_1 in propMap) {\n        propMap[type_1].forEach(function (prop) {\n          var value = props[prop];\n          var className = breakpointClass(type_1, prop, value);\n          if (className) classList.push(className);\n        });\n      }\n\n      classList.push((_b = {\n        'no-gutters': props.noGutters,\n        'row--dense': props.dense\n      }, _b[\"align-\" + props.align] = props.align, _b[\"justify-\" + props.justify] = props.justify, _b[\"align-content-\" + props.alignContent] = props.alignContent, _b));\n      cache.set(cacheKey, classList);\n    }\n\n    return h(props.tag, Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data, {\n      staticClass: 'row',\n      class: classList\n    }), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VSpacer.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VGrid/VSpacer.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_grid.sass */ \"./src/components/VGrid/_grid.sass\");\n/* harmony import */ var _grid_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_grid_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('spacer', 'div', 'v-spacer'));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/_grid.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VGrid/_grid.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/grid.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VGrid/grid.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return VGrid; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n// Types\n\nfunction VGrid(name) {\n  /* @vue/component */\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: \"v-\" + name,\n    functional: true,\n    props: {\n      id: String,\n      tag: {\n        type: String,\n        default: 'div'\n      }\n    },\n    render: function render(h, _a) {\n      var props = _a.props,\n          data = _a.data,\n          children = _a.children;\n      data.staticClass = (name + \" \" + (data.staticClass || '')).trim();\n      var attrs = data.attrs;\n\n      if (attrs) {\n        // reset attrs to extract utility clases like pa-3\n        data.attrs = {};\n        var classes = Object.keys(attrs).filter(function (key) {\n          // TODO: Remove once resolved\n          // https://github.com/vuejs/vue/issues/7841\n          if (key === 'slot') return false;\n          var value = attrs[key]; // add back data attributes like data-test=\"foo\" but do not\n          // add them as classes\n\n          if (key.startsWith('data-')) {\n            data.attrs[key] = value;\n            return false;\n          }\n\n          return value || typeof value === 'string';\n        });\n        if (classes.length) data.staticClass += \" \" + classes.join(' ');\n      }\n\n      if (props.id) {\n        data.domProps = data.domProps || {};\n        data.domProps.id = props.id;\n      }\n\n      return h(props.tag, data, children);\n    }\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VGrid/index.ts ***!\n  \\***************************************/\n/*! exports provided: VContainer, VCol, VRow, VSpacer, VLayout, VFlex, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VContainer */ \"./src/components/VGrid/VContainer.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContainer\", function() { return _VContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VCol__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCol */ \"./src/components/VGrid/VCol.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCol\", function() { return _VCol__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VRow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VRow */ \"./src/components/VGrid/VRow.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRow\", function() { return _VRow__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VSpacer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VSpacer */ \"./src/components/VGrid/VSpacer.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpacer\", function() { return _VSpacer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VLayout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VLayout */ \"./src/components/VGrid/VLayout.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLayout\", function() { return _VLayout__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _VFlex__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VFlex */ \"./src/components/VGrid/VFlex.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFlex\", function() { return _VFlex__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VContainer: _VContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VCol: _VCol__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VRow: _VRow__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VSpacer: _VSpacer__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VLayout: _VLayout__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n    VFlex: _VFlex__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VHover/VHover.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VHover/VHover.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Mixins\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_delayable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-hover',\n  props: {\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    value: {\n      type: Boolean,\n      default: undefined\n    }\n  },\n  methods: {\n    onMouseEnter: function onMouseEnter() {\n      this.runDelay('open');\n    },\n    onMouseLeave: function onMouseLeave() {\n      this.runDelay('close');\n    }\n  },\n  render: function render() {\n    if (!this.$scopedSlots.default && this.value === undefined) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])('v-hover is missing a default scopedSlot or bound value', this);\n      return null;\n    }\n\n    var element;\n    /* istanbul ignore else */\n\n    if (this.$scopedSlots.default) {\n      element = this.$scopedSlots.default({\n        hover: this.isActive\n      });\n    }\n\n    if (Array.isArray(element) && element.length === 1) {\n      element = element[0];\n    }\n\n    if (!element || Array.isArray(element) || !element.tag) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])('v-hover should only contain a single element', this);\n      return element;\n    }\n\n    if (!this.disabled) {\n      element.data = element.data || {};\n\n      this._g(element.data, {\n        mouseenter: this.onMouseEnter,\n        mouseleave: this.onMouseLeave\n      });\n    }\n\n    return element;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VHover/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/components/VHover/index.ts ***!\n  \\****************************************/\n/*! exports provided: VHover, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VHover__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VHover */ \"./src/components/VHover/VHover.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VHover\", function() { return _VHover__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VHover__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VIcon/VIcon.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VIcon/VIcon.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VIcon/VIcon.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VIcon/VIcon.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VIcon.sass */ \"./src/components/VIcon/VIcon.sass\");\n/* harmony import */ var _VIcon_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VIcon_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/binds-attrs */ \"./src/mixins/binds-attrs/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/sizeable */ \"./src/mixins/sizeable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Mixins\n\n\n\n\n // Util\n\n // Types\n\n\n\nvar SIZE_MAP;\n\n(function (SIZE_MAP) {\n  SIZE_MAP[\"xSmall\"] = \"12px\";\n  SIZE_MAP[\"small\"] = \"16px\";\n  SIZE_MAP[\"default\"] = \"24px\";\n  SIZE_MAP[\"medium\"] = \"28px\";\n  SIZE_MAP[\"large\"] = \"36px\";\n  SIZE_MAP[\"xLarge\"] = \"40px\";\n})(SIZE_MAP || (SIZE_MAP = {}));\n\nfunction isFontAwesome5(iconType) {\n  return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(function (val) {\n    return iconType.includes(val);\n  });\n}\n\nfunction isSvgPath(icon) {\n  return /^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4;\n}\n\nvar VIcon = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-icon',\n  props: {\n    dense: Boolean,\n    disabled: Boolean,\n    left: Boolean,\n    right: Boolean,\n    size: [Number, String],\n    tag: {\n      type: String,\n      required: false,\n      default: 'i'\n    }\n  },\n  computed: {\n    medium: function medium() {\n      return false;\n    },\n    hasClickListener: function hasClickListener() {\n      return Boolean(this.listeners$.click || this.listeners$['!click']);\n    }\n  },\n  methods: {\n    getIcon: function getIcon() {\n      var iconName = '';\n      if (this.$slots.default) iconName = this.$slots.default[0].text.trim();\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"remapInternalIcon\"])(this, iconName);\n    },\n    getSize: function getSize() {\n      var sizes = {\n        xSmall: this.xSmall,\n        small: this.small,\n        medium: this.medium,\n        large: this.large,\n        xLarge: this.xLarge\n      };\n      var explicitSize = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(sizes).find(function (key) {\n        return sizes[key];\n      });\n      return explicitSize && SIZE_MAP[explicitSize] || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.size);\n    },\n    // Component data for both font icon and SVG wrapper span\n    getDefaultData: function getDefaultData() {\n      return {\n        staticClass: 'v-icon notranslate',\n        class: {\n          'v-icon--disabled': this.disabled,\n          'v-icon--left': this.left,\n          'v-icon--link': this.hasClickListener,\n          'v-icon--right': this.right,\n          'v-icon--dense': this.dense\n        },\n        attrs: __assign({\n          'aria-hidden': !this.hasClickListener,\n          disabled: this.hasClickListener && this.disabled,\n          type: this.hasClickListener ? 'button' : undefined\n        }, this.attrs$),\n        on: this.listeners$\n      };\n    },\n    getSvgWrapperData: function getSvgWrapperData() {\n      var fontSize = this.getSize();\n\n      var wrapperData = __assign(__assign({}, this.getDefaultData()), {\n        style: fontSize ? {\n          fontSize: fontSize,\n          height: fontSize,\n          width: fontSize\n        } : undefined\n      });\n\n      this.applyColors(wrapperData);\n      return wrapperData;\n    },\n    applyColors: function applyColors(data) {\n      data.class = __assign(__assign({}, data.class), this.themeClasses);\n      this.setTextColor(this.color, data);\n    },\n    renderFontIcon: function renderFontIcon(icon, h) {\n      var newChildren = [];\n      var data = this.getDefaultData();\n      var iconType = 'material-icons'; // Material Icon delimiter is _\n      // https://material.io/icons/\n\n      var delimiterIndex = icon.indexOf('-');\n      var isMaterialIcon = delimiterIndex <= -1;\n\n      if (isMaterialIcon) {\n        // Material icon uses ligatures.\n        newChildren.push(icon);\n      } else {\n        iconType = icon.slice(0, delimiterIndex);\n        if (isFontAwesome5(iconType)) iconType = '';\n      }\n\n      data.class[iconType] = true;\n      data.class[icon] = !isMaterialIcon;\n      var fontSize = this.getSize();\n      if (fontSize) data.style = {\n        fontSize: fontSize\n      };\n      this.applyColors(data);\n      return h(this.hasClickListener ? 'button' : this.tag, data, newChildren);\n    },\n    renderSvgIcon: function renderSvgIcon(icon, h) {\n      var svgData = {\n        class: 'v-icon__svg',\n        attrs: {\n          xmlns: 'http://www.w3.org/2000/svg',\n          viewBox: '0 0 24 24',\n          role: 'img',\n          'aria-hidden': true\n        }\n      };\n      var size = this.getSize();\n\n      if (size) {\n        svgData.style = {\n          fontSize: size,\n          height: size,\n          width: size\n        };\n      }\n\n      return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [h('svg', svgData, [h('path', {\n        attrs: {\n          d: icon\n        }\n      })])]);\n    },\n    renderSvgIconComponent: function renderSvgIconComponent(icon, h) {\n      var data = {\n        class: {\n          'v-icon__component': true\n        }\n      };\n      var size = this.getSize();\n\n      if (size) {\n        data.style = {\n          fontSize: size,\n          height: size,\n          width: size\n        };\n      }\n\n      this.applyColors(data);\n      var component = icon.component;\n      data.props = icon.props;\n      data.nativeOn = data.on;\n      return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [h(component, data)]);\n    }\n  },\n  render: function render(h) {\n    var icon = this.getIcon();\n\n    if (typeof icon === 'string') {\n      if (isSvgPath(icon)) {\n        return this.renderSvgIcon(icon, h);\n      }\n\n      return this.renderFontIcon(icon, h);\n    }\n\n    return this.renderSvgIconComponent(icon, h);\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_6___default.a.extend({\n  name: 'v-icon',\n  $_wrapperFor: VIcon,\n  functional: true,\n  render: function render(h, _a) {\n    var data = _a.data,\n        children = _a.children;\n    var iconName = ''; // Support usage of v-text and v-html\n\n    if (data.domProps) {\n      iconName = data.domProps.textContent || data.domProps.innerHTML || iconName; // Remove nodes so it doesn't\n      // overwrite our changes\n\n      delete data.domProps.textContent;\n      delete data.domProps.innerHTML;\n    }\n\n    return h(VIcon, data, iconName ? [iconName] : children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VIcon/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VIcon/index.ts ***!\n  \\***************************************/\n/*! exports provided: VIcon, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VIcon */ \"./src/components/VIcon/VIcon.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VIcon\", function() { return _VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VImg/VImg.sass\":\n/*!***************************************!*\\\n  !*** ./src/components/VImg/VImg.sass ***!\n  \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VImg/VImg.ts\":\n/*!*************************************!*\\\n  !*** ./src/components/VImg/VImg.ts ***!\n  \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VImg_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VImg.sass */ \"./src/components/VImg/VImg.sass\");\n/* harmony import */ var _VImg_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VImg_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_intersect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/intersect */ \"./src/directives/intersect/index.ts\");\n/* harmony import */ var _VResponsive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VResponsive */ \"./src/components/VResponsive/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Styles\n // Directives\n\n // Components\n\n // Mixins\n\n // Utils\n\n\n\n\n\nvar hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window;\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_VResponsive__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-img',\n  directives: {\n    intersect: _directives_intersect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  props: {\n    alt: String,\n    contain: Boolean,\n    eager: Boolean,\n    gradient: String,\n    lazySrc: String,\n    options: {\n      type: Object,\n      // For more information on types, navigate to:\n      // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n      default: function _default() {\n        return {\n          root: undefined,\n          rootMargin: undefined,\n          threshold: undefined\n        };\n      }\n    },\n    position: {\n      type: String,\n      default: 'center center'\n    },\n    sizes: String,\n    src: {\n      type: [String, Object],\n      default: ''\n    },\n    srcset: String,\n    transition: {\n      type: [Boolean, String],\n      default: 'fade-transition'\n    }\n  },\n  data: function data() {\n    return {\n      currentSrc: '',\n      image: null,\n      isLoading: true,\n      calculatedAspectRatio: undefined,\n      naturalWidth: undefined,\n      hasError: false\n    };\n  },\n  computed: {\n    computedAspectRatio: function computedAspectRatio() {\n      return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio);\n    },\n    normalisedSrc: function normalisedSrc() {\n      return this.src && _typeof(this.src) === 'object' ? {\n        src: this.src.src,\n        srcset: this.srcset || this.src.srcset,\n        lazySrc: this.lazySrc || this.src.lazySrc,\n        aspect: Number(this.aspectRatio || this.src.aspect)\n      } : {\n        src: this.src,\n        srcset: this.srcset,\n        lazySrc: this.lazySrc,\n        aspect: Number(this.aspectRatio || 0)\n      };\n    },\n    __cachedImage: function __cachedImage() {\n      if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return [];\n      var backgroundImage = [];\n      var src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc;\n      if (this.gradient) backgroundImage.push(\"linear-gradient(\" + this.gradient + \")\");\n      if (src) backgroundImage.push(\"url(\\\"\" + src + \"\\\")\");\n      var image = this.$createElement('div', {\n        staticClass: 'v-image__image',\n        class: {\n          'v-image__image--preload': this.isLoading,\n          'v-image__image--contain': this.contain,\n          'v-image__image--cover': !this.contain\n        },\n        style: {\n          backgroundImage: backgroundImage.join(', '),\n          backgroundPosition: this.position\n        },\n        key: +this.isLoading\n      });\n      /* istanbul ignore if */\n\n      if (!this.transition) return image;\n      return this.$createElement('transition', {\n        attrs: {\n          name: this.transition,\n          mode: 'in-out'\n        }\n      }, [image]);\n    }\n  },\n  watch: {\n    src: function src() {\n      // Force re-init when src changes\n      if (!this.isLoading) this.init(undefined, undefined, true);else this.loadImage();\n    },\n    '$vuetify.breakpoint.width': 'getSrc'\n  },\n  mounted: function mounted() {\n    this.init();\n  },\n  methods: {\n    init: function init(entries, observer, isIntersecting) {\n      // If the current browser supports the intersection\n      // observer api, the image is not observable, and\n      // the eager prop isn't being used, do not load\n      if (hasIntersect && !isIntersecting && !this.eager) return;\n\n      if (this.normalisedSrc.lazySrc) {\n        var lazyImg = new Image();\n        lazyImg.src = this.normalisedSrc.lazySrc;\n        this.pollForSize(lazyImg, null);\n      }\n      /* istanbul ignore else */\n\n\n      if (this.normalisedSrc.src) this.loadImage();\n    },\n    onLoad: function onLoad() {\n      this.getSrc();\n      this.isLoading = false;\n      this.$emit('load', this.src);\n\n      if (this.image && (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))) {\n        if (this.image.naturalHeight && this.image.naturalWidth) {\n          this.naturalWidth = this.image.naturalWidth;\n          this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight;\n        } else {\n          this.calculatedAspectRatio = 1;\n        }\n      }\n    },\n    onError: function onError() {\n      this.hasError = true;\n      this.$emit('error', this.src);\n    },\n    getSrc: function getSrc() {\n      /* istanbul ignore else */\n      if (this.image) this.currentSrc = this.image.currentSrc || this.image.src;\n    },\n    loadImage: function loadImage() {\n      var _this = this;\n\n      var image = new Image();\n      this.image = image;\n\n      image.onload = function () {\n        /* istanbul ignore if */\n        if (image.decode) {\n          image.decode().catch(function (err) {\n            Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"consoleWarn\"])(\"Failed to decode image, trying to render anyway\\n\\n\" + (\"src: \" + _this.normalisedSrc.src) + (err.message ? \"\\nOriginal error: \" + err.message : ''), _this);\n          }).then(_this.onLoad);\n        } else {\n          _this.onLoad();\n        }\n      };\n\n      image.onerror = this.onError;\n      this.hasError = false;\n      this.sizes && (image.sizes = this.sizes);\n      this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset);\n      image.src = this.normalisedSrc.src;\n      this.$emit('loadstart', this.normalisedSrc.src);\n      this.aspectRatio || this.pollForSize(image);\n      this.getSrc();\n    },\n    pollForSize: function pollForSize(img, timeout) {\n      var _this = this;\n\n      if (timeout === void 0) {\n        timeout = 100;\n      }\n\n      var poll = function poll() {\n        var naturalHeight = img.naturalHeight,\n            naturalWidth = img.naturalWidth;\n\n        if (naturalHeight || naturalWidth) {\n          _this.naturalWidth = naturalWidth;\n          _this.calculatedAspectRatio = naturalWidth / naturalHeight;\n        } else if (!img.complete && _this.isLoading && !_this.hasError && timeout != null) {\n          setTimeout(poll, timeout);\n        }\n      };\n\n      poll();\n    },\n    genContent: function genContent() {\n      var content = _VResponsive__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genContent.call(this);\n\n      if (this.naturalWidth) {\n        this._b(content.data, 'div', {\n          style: {\n            width: this.naturalWidth + \"px\"\n          }\n        });\n      }\n\n      return content;\n    },\n    __genPlaceholder: function __genPlaceholder() {\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlot\"])(this, 'placeholder');\n\n      if (slot) {\n        var placeholder = this.isLoading ? [this.$createElement('div', {\n          staticClass: 'v-image__placeholder'\n        }, slot)] : [];\n        if (!this.transition) return placeholder[0];\n        return this.$createElement('transition', {\n          props: {\n            appear: true,\n            name: this.transition\n          }\n        }, placeholder);\n      }\n    }\n  },\n  render: function render(h) {\n    var node = _VResponsive__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.render.call(this, h);\n    var data = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(node.data, {\n      staticClass: 'v-image',\n      attrs: {\n        'aria-label': this.alt,\n        role: this.alt ? 'img' : undefined\n      },\n      class: this.themeClasses,\n      // Only load intersect directive if it\n      // will work in the current browser.\n      directives: hasIntersect ? [{\n        name: 'intersect',\n        modifiers: {\n          once: true\n        },\n        value: {\n          handler: this.init,\n          options: this.options\n        }\n      }] : undefined\n    });\n    node.children = [this.__cachedSizer, this.__cachedImage, this.__genPlaceholder(), this.genContent()];\n    return h(node.tag, data, node.children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VImg/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VImg/index.ts ***!\n  \\**************************************/\n/*! exports provided: VImg, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VImg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VImg */ \"./src/components/VImg/VImg.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VImg\", function() { return _VImg__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VImg__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VInput/VInput.sass\":\n/*!*******************************************!*\\\n  !*** ./src/components/VInput/VInput.sass ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VInput/VInput.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VInput/VInput.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VInput_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VInput.sass */ \"./src/components/VInput/VInput.sass\");\n/* harmony import */ var _VInput_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VInput_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony import */ var _VMessages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VMessages */ \"./src/components/VMessages/index.ts\");\n/* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/binds-attrs */ \"./src/mixins/binds-attrs/index.ts\");\n/* harmony import */ var _mixins_validatable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/validatable */ \"./src/mixins/validatable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n\n\n // Mixins\n\n\n // Utilities\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_validatable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-input',\n  inheritAttrs: false,\n  props: {\n    appendIcon: String,\n    backgroundColor: {\n      type: String,\n      default: ''\n    },\n    dense: Boolean,\n    height: [Number, String],\n    hideDetails: [Boolean, String],\n    hideSpinButtons: Boolean,\n    hint: String,\n    id: String,\n    label: String,\n    loading: Boolean,\n    persistentHint: Boolean,\n    prependIcon: String,\n    value: null\n  },\n  data: function data() {\n    return {\n      lazyValue: this.value,\n      hasMouseDown: false\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-input--has-state': this.hasState,\n        'v-input--hide-details': !this.showDetails,\n        'v-input--is-label-active': this.isLabelActive,\n        'v-input--is-dirty': this.isDirty,\n        'v-input--is-disabled': this.isDisabled,\n        'v-input--is-focused': this.isFocused,\n        // <v-switch loading>.loading === '' so we can't just cast to boolean\n        'v-input--is-loading': this.loading !== false && this.loading != null,\n        'v-input--is-readonly': this.isReadonly,\n        'v-input--dense': this.dense,\n        'v-input--hide-spin-buttons': this.hideSpinButtons\n      }, this.themeClasses);\n    },\n    computedId: function computedId() {\n      return this.id || \"input-\" + this._uid;\n    },\n    hasDetails: function hasDetails() {\n      return this.messagesToDisplay.length > 0;\n    },\n    hasHint: function hasHint() {\n      return !this.hasMessages && !!this.hint && (this.persistentHint || this.isFocused);\n    },\n    hasLabel: function hasLabel() {\n      return !!(this.$slots.label || this.label);\n    },\n    // Proxy for `lazyValue`\n    // This allows an input\n    // to function without\n    // a provided model\n    internalValue: {\n      get: function get() {\n        return this.lazyValue;\n      },\n      set: function set(val) {\n        this.lazyValue = val;\n        this.$emit(this.$_modelEvent, val);\n      }\n    },\n    isDirty: function isDirty() {\n      return !!this.lazyValue;\n    },\n    isLabelActive: function isLabelActive() {\n      return this.isDirty;\n    },\n    messagesToDisplay: function messagesToDisplay() {\n      var _this = this;\n\n      if (this.hasHint) return [this.hint];\n      if (!this.hasMessages) return [];\n      return this.validations.map(function (validation) {\n        if (typeof validation === 'string') return validation;\n        var validationResult = validation(_this.internalValue);\n        return typeof validationResult === 'string' ? validationResult : '';\n      }).filter(function (message) {\n        return message !== '';\n      });\n    },\n    showDetails: function showDetails() {\n      return this.hideDetails === false || this.hideDetails === 'auto' && this.hasDetails;\n    }\n  },\n  watch: {\n    value: function value(val) {\n      this.lazyValue = val;\n    }\n  },\n  beforeCreate: function beforeCreate() {\n    // v-radio-group needs to emit a different event\n    // https://github.com/vuetifyjs/vuetify/issues/4752\n    this.$_modelEvent = this.$options.model && this.$options.model.event || 'input';\n  },\n  methods: {\n    genContent: function genContent() {\n      return [this.genPrependSlot(), this.genControl(), this.genAppendSlot()];\n    },\n    genControl: function genControl() {\n      return this.$createElement('div', {\n        staticClass: 'v-input__control',\n        attrs: {\n          title: this.attrs$.title\n        }\n      }, [this.genInputSlot(), this.genMessages()]);\n    },\n    genDefaultSlot: function genDefaultSlot() {\n      return [this.genLabel(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(this)];\n    },\n    genIcon: function genIcon(type, cb, extraData) {\n      var _this = this;\n\n      var _a;\n\n      if (extraData === void 0) {\n        extraData = {};\n      }\n\n      var icon = this[type + \"Icon\"];\n      var eventName = \"click:\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"kebabCase\"])(type);\n      var hasListener = !!(this.listeners$[eventName] || cb);\n      var localeKey = {\n        prepend: 'prependAction',\n        prependInner: 'prependAction',\n        append: 'appendAction',\n        appendOuter: 'appendAction',\n        clear: 'clear'\n      }[type];\n      var label = hasListener && localeKey ? this.$vuetify.lang.t(\"$vuetify.input.\" + localeKey, (_a = this.label) !== null && _a !== void 0 ? _a : '') : undefined;\n      var data = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n        attrs: {\n          'aria-label': label,\n          color: this.validationState,\n          dark: this.dark,\n          disabled: this.isDisabled,\n          light: this.light,\n          tabindex: type === 'clear' ? -1 : undefined\n        },\n        on: !hasListener ? undefined : {\n          click: function click(e) {\n            e.preventDefault();\n            e.stopPropagation();\n\n            _this.$emit(eventName, e);\n\n            cb && cb(e);\n          },\n          // Container has g event that will\n          // trigger menu open if enclosed\n          mouseup: function mouseup(e) {\n            e.preventDefault();\n            e.stopPropagation();\n          }\n        }\n      }, extraData);\n      return this.$createElement('div', {\n        staticClass: \"v-input__icon\",\n        class: type ? \"v-input__icon--\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"kebabCase\"])(type) : undefined\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], data, icon)]);\n    },\n    genInputSlot: function genInputSlot() {\n      return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n        staticClass: 'v-input__slot',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"convertToUnit\"])(this.height)\n        },\n        on: {\n          click: this.onClick,\n          mousedown: this.onMouseDown,\n          mouseup: this.onMouseUp\n        },\n        ref: 'input-slot'\n      }), [this.genDefaultSlot()]);\n    },\n    genLabel: function genLabel() {\n      if (!this.hasLabel) return null;\n      return this.$createElement(_VLabel__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          color: this.validationState,\n          dark: this.dark,\n          disabled: this.isDisabled,\n          focused: this.hasState,\n          for: this.computedId,\n          light: this.light\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(this, 'label') || this.label);\n    },\n    genMessages: function genMessages() {\n      var _this = this;\n\n      if (!this.showDetails) return null;\n      return this.$createElement(_VMessages__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        props: {\n          color: this.hasHint ? '' : this.validationState,\n          dark: this.dark,\n          light: this.light,\n          value: this.messagesToDisplay\n        },\n        attrs: {\n          role: this.hasMessages ? 'alert' : null\n        },\n        scopedSlots: {\n          default: function _default(props) {\n            return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(_this, 'message', props);\n          }\n        }\n      });\n    },\n    genSlot: function genSlot(type, location, slot) {\n      if (!slot.length) return null;\n      var ref = type + \"-\" + location;\n      return this.$createElement('div', {\n        staticClass: \"v-input__\" + ref,\n        ref: ref\n      }, slot);\n    },\n    genPrependSlot: function genPrependSlot() {\n      var slot = [];\n\n      if (this.$slots.prepend) {\n        slot.push(this.$slots.prepend);\n      } else if (this.prependIcon) {\n        slot.push(this.genIcon('prepend'));\n      }\n\n      return this.genSlot('prepend', 'outer', slot);\n    },\n    genAppendSlot: function genAppendSlot() {\n      var slot = []; // Append icon for text field was really\n      // an appended inner icon, v-text-field\n      // will overwrite this method in order to obtain\n      // backwards compat\n\n      if (this.$slots.append) {\n        slot.push(this.$slots.append);\n      } else if (this.appendIcon) {\n        slot.push(this.genIcon('append'));\n      }\n\n      return this.genSlot('append', 'outer', slot);\n    },\n    onClick: function onClick(e) {\n      this.$emit('click', e);\n    },\n    onMouseDown: function onMouseDown(e) {\n      this.hasMouseDown = true;\n      this.$emit('mousedown', e);\n    },\n    onMouseUp: function onMouseUp(e) {\n      this.hasMouseDown = false;\n      this.$emit('mouseup', e);\n    }\n  },\n  render: function render(h) {\n    return h('div', this.setTextColor(this.validationState, {\n      staticClass: 'v-input',\n      class: this.classes\n    }), this.genContent());\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VInput/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/components/VInput/index.ts ***!\n  \\****************************************/\n/*! exports provided: VInput, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VInput */ \"./src/components/VInput/VInput.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VInput\", function() { return _VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/VItem.sass\":\n/*!**********************************************!*\\\n  !*** ./src/components/VItemGroup/VItem.sass ***!\n  \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/VItem.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VItemGroup/VItem.ts ***!\n  \\********************************************/\n/*! exports provided: BaseItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseItem\", function() { return BaseItem; });\n/* harmony import */ var _VItem_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VItem.sass */ \"./src/components/VItemGroup/VItem.sass\");\n/* harmony import */ var _VItem_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VItem_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_4__);\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n // Utilities\n\n\n // Types\n\n\n/* @vue/component */\n\nvar BaseItem = vue__WEBPACK_IMPORTED_MODULE_4___default.a.extend({\n  props: {\n    activeClass: String,\n    value: {\n      required: false\n    },\n    disabled: Boolean\n  },\n  data: function data() {\n    return {\n      isActive: false\n    };\n  },\n  methods: {\n    toggle: function toggle() {\n      this.isActive = !this.isActive;\n    }\n  },\n  render: function render() {\n    var _a;\n\n    if (!this.$scopedSlots.default) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])('v-item is missing a default scopedSlot', this);\n      return null;\n    }\n\n    var element;\n    /* istanbul ignore else */\n\n    if (this.$scopedSlots.default) {\n      element = this.$scopedSlots.default({\n        active: this.isActive,\n        toggle: this.toggle\n      });\n    }\n\n    if (Array.isArray(element) && element.length === 1) {\n      element = element[0];\n    }\n\n    if (!element || Array.isArray(element) || !element.tag) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])('v-item should only contain a single element', this);\n      return element;\n    }\n\n    element.data = this._b(element.data || {}, element.tag, {\n      class: (_a = {}, _a[this.activeClass] = this.isActive, _a['v-item--disabled'] = this.disabled, _a)\n    });\n\n    if (this.disabled) {\n      element.data.attrs = __assign(__assign({}, element.data.attrs), {\n        tabindex: -1\n      });\n    }\n\n    return element;\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(BaseItem, Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_1__[\"factory\"])('itemGroup', 'v-item', 'v-item-group')).extend({\n  name: 'v-item'\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/VItemGroup.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VItemGroup/VItemGroup.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/VItemGroup.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VItemGroup/VItemGroup.ts ***!\n  \\*************************************************/\n/*! exports provided: BaseItemGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseItemGroup\", function() { return BaseItemGroup; });\n/* harmony import */ var _VItemGroup_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VItemGroup.sass */ \"./src/components/VItemGroup/VItemGroup.sass\");\n/* harmony import */ var _VItemGroup_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VItemGroup_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_comparable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/comparable */ \"./src/mixins/comparable/index.ts\");\n/* harmony import */ var _mixins_proxyable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/proxyable */ \"./src/mixins/proxyable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n // Utilities\n\n\n\n\nvar BaseItemGroup = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_comparable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_proxyable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'base-item-group',\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-item--active'\n    },\n    mandatory: Boolean,\n    max: {\n      type: [Number, String],\n      default: null\n    },\n    multiple: Boolean,\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n  data: function data() {\n    return {\n      // As long as a value is defined, show it\n      // Otherwise, check if multiple\n      // to determine which default to provide\n      internalLazyValue: this.value !== undefined ? this.value : this.multiple ? [] : undefined,\n      items: []\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-item-group': true\n      }, this.themeClasses);\n    },\n    selectedIndex: function selectedIndex() {\n      return this.selectedItem && this.items.indexOf(this.selectedItem) || -1;\n    },\n    selectedItem: function selectedItem() {\n      if (this.multiple) return undefined;\n      return this.selectedItems[0];\n    },\n    selectedItems: function selectedItems() {\n      var _this = this;\n\n      return this.items.filter(function (item, index) {\n        return _this.toggleMethod(_this.getValue(item, index));\n      });\n    },\n    selectedValues: function selectedValues() {\n      if (this.internalValue == null) return [];\n      return Array.isArray(this.internalValue) ? this.internalValue : [this.internalValue];\n    },\n    toggleMethod: function toggleMethod() {\n      var _this = this;\n\n      if (!this.multiple) {\n        return function (v) {\n          return _this.valueComparator(_this.internalValue, v);\n        };\n      }\n\n      var internalValue = this.internalValue;\n\n      if (Array.isArray(internalValue)) {\n        return function (v) {\n          return internalValue.some(function (intern) {\n            return _this.valueComparator(intern, v);\n          });\n        };\n      }\n\n      return function () {\n        return false;\n      };\n    }\n  },\n  watch: {\n    internalValue: 'updateItemsState',\n    items: 'updateItemsState'\n  },\n  created: function created() {\n    if (this.multiple && !Array.isArray(this.internalValue)) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_5__[\"consoleWarn\"])('Model must be bound to an array if the multiple property is true.', this);\n    }\n  },\n  methods: {\n    genData: function genData() {\n      return {\n        class: this.classes\n      };\n    },\n    getValue: function getValue(item, i) {\n      return item.value === undefined ? i : item.value;\n    },\n    onClick: function onClick(item) {\n      this.updateInternalValue(this.getValue(item, this.items.indexOf(item)));\n    },\n    register: function register(item) {\n      var _this = this;\n\n      var index = this.items.push(item) - 1;\n      item.$on('change', function () {\n        return _this.onClick(item);\n      }); // If no value provided and mandatory,\n      // assign first registered item\n\n      if (this.mandatory && !this.selectedValues.length) {\n        this.updateMandatory();\n      }\n\n      this.updateItem(item, index);\n    },\n    unregister: function unregister(item) {\n      if (this._isDestroyed) return;\n      var index = this.items.indexOf(item);\n      var value = this.getValue(item, index);\n      this.items.splice(index, 1);\n      var valueIndex = this.selectedValues.indexOf(value); // Items is not selected, do nothing\n\n      if (valueIndex < 0) return; // If not mandatory, use regular update process\n\n      if (!this.mandatory) {\n        return this.updateInternalValue(value);\n      } // Remove the value\n\n\n      if (this.multiple && Array.isArray(this.internalValue)) {\n        this.internalValue = this.internalValue.filter(function (v) {\n          return v !== value;\n        });\n      } else {\n        this.internalValue = undefined;\n      } // If mandatory and we have no selection\n      // add the last item as value\n\n      /* istanbul ignore else */\n\n\n      if (!this.selectedItems.length) {\n        this.updateMandatory(true);\n      }\n    },\n    updateItem: function updateItem(item, index) {\n      var value = this.getValue(item, index);\n      item.isActive = this.toggleMethod(value);\n    },\n    // https://github.com/vuetifyjs/vuetify/issues/5352\n    updateItemsState: function updateItemsState() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        if (_this.mandatory && !_this.selectedItems.length) {\n          return _this.updateMandatory();\n        } // TODO: Make this smarter so it\n        // doesn't have to iterate every\n        // child in an update\n\n\n        _this.items.forEach(_this.updateItem);\n      });\n    },\n    updateInternalValue: function updateInternalValue(value) {\n      this.multiple ? this.updateMultiple(value) : this.updateSingle(value);\n    },\n    updateMandatory: function updateMandatory(last) {\n      if (!this.items.length) return;\n      var items = this.items.slice();\n      if (last) items.reverse();\n      var item = items.find(function (item) {\n        return !item.disabled;\n      }); // If no tabs are available\n      // aborts mandatory value\n\n      if (!item) return;\n      var index = this.items.indexOf(item);\n      this.updateInternalValue(this.getValue(item, index));\n    },\n    updateMultiple: function updateMultiple(value) {\n      var _this = this;\n\n      var defaultValue = Array.isArray(this.internalValue) ? this.internalValue : [];\n      var internalValue = defaultValue.slice();\n      var index = internalValue.findIndex(function (val) {\n        return _this.valueComparator(val, value);\n      });\n      if (this.mandatory && // Item already exists\n      index > -1 && // value would be reduced below min\n      internalValue.length - 1 < 1) return;\n      if ( // Max is set\n      this.max != null && // Item doesn't exist\n      index < 0 && // value would be increased above max\n      internalValue.length + 1 > this.max) return;\n      index > -1 ? internalValue.splice(index, 1) : internalValue.push(value);\n      this.internalValue = internalValue;\n    },\n    updateSingle: function updateSingle(value) {\n      var isSame = this.valueComparator(this.internalValue, value);\n      if (this.mandatory && isSame) return;\n      this.internalValue = isSame ? undefined : value;\n    }\n  },\n  render: function render(h) {\n    return h(this.tag, this.genData(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(this));\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseItemGroup.extend({\n  name: 'v-item-group',\n  provide: function provide() {\n    return {\n      itemGroup: this\n    };\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VItemGroup/index.ts ***!\n  \\********************************************/\n/*! exports provided: VItem, VItemGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VItem */ \"./src/components/VItemGroup/VItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItem\", function() { return _VItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItemGroup\", function() { return _VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VItem: _VItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VItemGroup: _VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VLabel/VLabel.sass\":\n/*!*******************************************!*\\\n  !*** ./src/components/VLabel/VLabel.sass ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VLabel/VLabel.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VLabel/VLabel.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VLabel_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VLabel.sass */ \"./src/components/VLabel/VLabel.sass\");\n/* harmony import */ var _VLabel_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VLabel_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n // Helpers\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-label',\n  functional: true,\n  props: {\n    absolute: Boolean,\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    disabled: Boolean,\n    focused: Boolean,\n    for: String,\n    left: {\n      type: [Number, String],\n      default: 0\n    },\n    right: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    value: Boolean\n  },\n  render: function render(h, ctx) {\n    var children = ctx.children,\n        listeners = ctx.listeners,\n        props = ctx.props,\n        data = ctx.data;\n    var newData = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_5__[\"default\"])({\n      staticClass: 'v-label',\n      class: __assign({\n        'v-label--active': props.value,\n        'v-label--is-disabled': props.disabled\n      }, Object(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"functionalThemeClasses\"])(ctx)),\n      attrs: {\n        for: props.for,\n        'aria-hidden': !props.for\n      },\n      on: listeners,\n      style: {\n        left: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(props.left),\n        right: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(props.right),\n        position: props.absolute ? 'absolute' : 'relative'\n      },\n      ref: 'label'\n    }, data);\n    return h('label', _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setTextColor(props.focused && props.color, newData), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VLabel/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/components/VLabel/index.ts ***!\n  \\****************************************/\n/*! exports provided: VLabel, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VLabel */ \"./src/components/VLabel/VLabel.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLabel\", function() { return _VLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VLazy/VLazy.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VLazy/VLazy.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _directives_intersect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/intersect */ \"./src/directives/intersect/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n\n // Directives\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_measurable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n  name: 'VLazy',\n  directives: {\n    intersect: _directives_intersect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  props: {\n    options: {\n      type: Object,\n      // For more information on types, navigate to:\n      // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n      default: function _default() {\n        return {\n          root: undefined,\n          rootMargin: undefined,\n          threshold: undefined\n        };\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: String,\n      default: 'fade-transition'\n    }\n  },\n  computed: {\n    styles: function styles() {\n      return __assign({}, this.measurableStyles);\n    }\n  },\n  methods: {\n    genContent: function genContent() {\n      var children = this.isActive && Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this);\n      return this.transition ? this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, children) : children;\n    },\n    onObserve: function onObserve(entries, observer, isIntersecting) {\n      if (this.isActive) return;\n      this.isActive = isIntersecting;\n    }\n  },\n  render: function render(h) {\n    return h(this.tag, {\n      staticClass: 'v-lazy',\n      attrs: this.$attrs,\n      directives: [{\n        name: 'intersect',\n        value: {\n          handler: this.onObserve,\n          options: this.options\n        }\n      }],\n      on: this.$listeners,\n      style: this.styles\n    }, [this.genContent()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VLazy/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VLazy/index.ts ***!\n  \\***************************************/\n/*! exports provided: VLazy, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VLazy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VLazy */ \"./src/components/VLazy/VLazy.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLazy\", function() { return _VLazy__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VLazy__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VList/VList.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VList/VList.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VList/VList.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VList/VList.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VList_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VList.sass */ \"./src/components/VList/VList.sass\");\n/* harmony import */ var _VList_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VList_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet/VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}; // Styles\n\n\n // Components\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend().extend({\n  name: 'v-list',\n  provide: function provide() {\n    return {\n      isInList: true,\n      list: this\n    };\n  },\n  inject: {\n    isInMenu: {\n      default: false\n    },\n    isInNav: {\n      default: false\n    }\n  },\n  props: {\n    dense: Boolean,\n    disabled: Boolean,\n    expand: Boolean,\n    flat: Boolean,\n    nav: Boolean,\n    rounded: Boolean,\n    subheader: Boolean,\n    threeLine: Boolean,\n    twoLine: Boolean\n  },\n  data: function data() {\n    return {\n      groups: []\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-list--dense': this.dense,\n        'v-list--disabled': this.disabled,\n        'v-list--flat': this.flat,\n        'v-list--nav': this.nav,\n        'v-list--rounded': this.rounded,\n        'v-list--subheader': this.subheader,\n        'v-list--two-line': this.twoLine,\n        'v-list--three-line': this.threeLine\n      });\n    }\n  },\n  methods: {\n    register: function register(content) {\n      this.groups.push(content);\n    },\n    unregister: function unregister(content) {\n      var index = this.groups.findIndex(function (g) {\n        return g._uid === content._uid;\n      });\n      if (index > -1) this.groups.splice(index, 1);\n    },\n    listClick: function listClick(uid) {\n      var e_1, _a;\n\n      if (this.expand) return;\n\n      try {\n        for (var _b = __values(this.groups), _c = _b.next(); !_c.done; _c = _b.next()) {\n          var group = _c.value;\n          group.toggle(uid);\n        }\n      } catch (e_1_1) {\n        e_1 = {\n          error: e_1_1\n        };\n      } finally {\n        try {\n          if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        } finally {\n          if (e_1) throw e_1.error;\n        }\n      }\n    }\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-list',\n      class: this.classes,\n      style: this.styles,\n      attrs: __assign({\n        role: this.isInNav || this.isInMenu ? undefined : 'list'\n      }, this.attrs$),\n      on: this.listeners$\n    };\n    return h(this.tag, this.setBackgroundColor(this.color, data), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListGroup.sass\":\n/*!**********************************************!*\\\n  !*** ./src/components/VList/VListGroup.sass ***!\n  \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListGroup.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VList/VListGroup.ts ***!\n  \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VListGroup_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VListGroup.sass */ \"./src/components/VList/VListGroup.sass\");\n/* harmony import */ var _VListGroup_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VListGroup_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VListItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VListItem */ \"./src/components/VList/VListItem.ts\");\n/* harmony import */ var _VListItemIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VListItemIcon */ \"./src/components/VList/VListItemIcon.ts\");\n/* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/binds-attrs */ \"./src/mixins/binds-attrs/index.ts\");\n/* harmony import */ var _mixins_bootable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/bootable */ \"./src/mixins/bootable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n\n\n // Mixins\n\n\n\n\n\n // Directives\n\n // Transitions\n\n // Utils\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_bootable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])('list'), _mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-list-group',\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: ''\n    },\n    appendIcon: {\n      type: String,\n      default: '$expand'\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    disabled: Boolean,\n    group: [String, RegExp],\n    noAction: Boolean,\n    prependIcon: String,\n    ripple: {\n      type: [Boolean, Object],\n      default: true\n    },\n    subGroup: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return {\n        'v-list-group--active': this.isActive,\n        'v-list-group--disabled': this.disabled,\n        'v-list-group--no-action': this.noAction,\n        'v-list-group--sub-group': this.subGroup\n      };\n    }\n  },\n  watch: {\n    isActive: function isActive(val) {\n      /* istanbul ignore else */\n      if (!this.subGroup && val) {\n        this.list && this.list.listClick(this._uid);\n      }\n    },\n    $route: 'onRouteChange'\n  },\n  created: function created() {\n    this.list && this.list.register(this);\n\n    if (this.group && this.$route && this.value == null) {\n      this.isActive = this.matchRoute(this.$route.path);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.list && this.list.unregister(this);\n  },\n  methods: {\n    click: function click(e) {\n      var _this = this;\n\n      if (this.disabled) return;\n      this.isBooted = true;\n      this.$emit('click', e);\n      this.$nextTick(function () {\n        return _this.isActive = !_this.isActive;\n      });\n    },\n    genIcon: function genIcon(icon) {\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], icon);\n    },\n    genAppendIcon: function genAppendIcon() {\n      var icon = !this.subGroup ? this.appendIcon : false;\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(this, 'appendIcon');\n      if (!icon && !slot) return null;\n      return this.$createElement(_VListItemIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        staticClass: 'v-list-group__header__append-icon'\n      }, [slot || this.genIcon(icon)]);\n    },\n    genHeader: function genHeader() {\n      var _a;\n\n      return this.$createElement(_VListItem__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        staticClass: 'v-list-group__header',\n        attrs: {\n          'aria-expanded': String(this.isActive),\n          role: 'button'\n        },\n        class: (_a = {}, _a[this.activeClass] = this.isActive, _a),\n        props: {\n          inputValue: this.isActive\n        },\n        directives: [{\n          name: 'ripple',\n          value: this.ripple\n        }],\n        on: __assign(__assign({}, this.listeners$), {\n          click: this.click\n        })\n      }, [this.genPrependIcon(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(this, 'activator'), this.genAppendIcon()]);\n    },\n    genItems: function genItems() {\n      var _this = this;\n\n      return this.showLazyContent(function () {\n        return [_this.$createElement('div', {\n          staticClass: 'v-list-group__items',\n          directives: [{\n            name: 'show',\n            value: _this.isActive\n          }]\n        }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(_this))];\n      });\n    },\n    genPrependIcon: function genPrependIcon() {\n      var icon = this.subGroup && this.prependIcon == null ? '$subgroup' : this.prependIcon;\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(this, 'prependIcon');\n      if (!icon && !slot) return null;\n      return this.$createElement(_VListItemIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        staticClass: 'v-list-group__header__prepend-icon'\n      }, [slot || this.genIcon(icon)]);\n    },\n    onRouteChange: function onRouteChange(to) {\n      /* istanbul ignore if */\n      if (!this.group) return;\n      var isActive = this.matchRoute(to.path);\n      /* istanbul ignore else */\n\n      if (isActive && this.isActive !== isActive) {\n        this.list && this.list.listClick(this._uid);\n      }\n\n      this.isActive = isActive;\n    },\n    toggle: function toggle(uid) {\n      var _this = this;\n\n      var isActive = this._uid === uid;\n      if (isActive) this.isBooted = true;\n      this.$nextTick(function () {\n        return _this.isActive = isActive;\n      });\n    },\n    matchRoute: function matchRoute(to) {\n      return to.match(this.group) !== null;\n    }\n  },\n  render: function render(h) {\n    return h('div', this.setTextColor(this.isActive && this.color, {\n      staticClass: 'v-list-group',\n      class: this.classes\n    }), [this.genHeader(), h(_transitions__WEBPACK_IMPORTED_MODULE_10__[\"VExpandTransition\"], this.genItems())]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItem.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VList/VListItem.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItem.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VList/VListItem.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VListItem_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VListItem.sass */ \"./src/components/VList/VListItem.sass\");\n/* harmony import */ var _VListItem_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VListItem_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n\n\n // Directives\n\n // Utilities\n\n\n // Types\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_3__[\"factory\"])('listItemGroup'), Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__[\"factory\"])('inputValue'));\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-list-item',\n  directives: {\n    Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  },\n  inject: {\n    isInGroup: {\n      default: false\n    },\n    isInList: {\n      default: false\n    },\n    isInMenu: {\n      default: false\n    },\n    isInNav: {\n      default: false\n    }\n  },\n  inheritAttrs: false,\n  props: {\n    activeClass: {\n      type: String,\n      default: function _default() {\n        if (!this.listItemGroup) return '';\n        return this.listItemGroup.activeClass;\n      }\n    },\n    dense: Boolean,\n    inactive: Boolean,\n    link: Boolean,\n    selectable: {\n      type: Boolean\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    threeLine: Boolean,\n    twoLine: Boolean,\n    value: null\n  },\n  data: function data() {\n    return {\n      proxyClass: 'v-list-item--active'\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign({\n        'v-list-item': true\n      }, _mixins_routable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.classes.call(this)), {\n        'v-list-item--dense': this.dense,\n        'v-list-item--disabled': this.disabled,\n        'v-list-item--link': this.isClickable && !this.inactive,\n        'v-list-item--selectable': this.selectable,\n        'v-list-item--three-line': this.threeLine,\n        'v-list-item--two-line': this.twoLine\n      }), this.themeClasses);\n    },\n    isClickable: function isClickable() {\n      return Boolean(_mixins_routable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.isClickable.call(this) || this.listItemGroup);\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('avatar')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"removed\"])('avatar', this);\n    }\n  },\n  methods: {\n    click: function click(e) {\n      if (e.detail) this.$el.blur();\n      this.$emit('click', e);\n      this.to || this.toggle();\n    },\n    genAttrs: function genAttrs() {\n      var attrs = __assign({\n        'aria-disabled': this.disabled ? true : undefined,\n        tabindex: this.isClickable && !this.disabled ? 0 : -1\n      }, this.$attrs);\n\n      if (this.$attrs.hasOwnProperty('role')) {// do nothing, role already provided\n      } else if (this.isInNav) {// do nothing, role is inherit\n      } else if (this.isInGroup) {\n        attrs.role = 'option';\n        attrs['aria-selected'] = String(this.isActive);\n      } else if (this.isInMenu) {\n        attrs.role = this.isClickable ? 'menuitem' : undefined;\n        attrs.id = attrs.id || \"list-item-\" + this._uid;\n      } else if (this.isInList) {\n        attrs.role = 'listitem';\n      }\n\n      return attrs;\n    },\n    toggle: function toggle() {\n      if (this.to && this.inputValue === undefined) {\n        this.isActive = !this.isActive;\n      }\n\n      this.$emit('change');\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var _a = this.generateRouteLink(),\n        tag = _a.tag,\n        data = _a.data;\n\n    data.attrs = __assign(__assign({}, data.attrs), this.genAttrs());\n    data[this.to ? 'nativeOn' : 'on'] = __assign(__assign({}, data[this.to ? 'nativeOn' : 'on']), {\n      keydown: function keydown(e) {\n        if (!_this.disabled) {\n          /* istanbul ignore else */\n          if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"keyCodes\"].enter) _this.click(e);\n\n          _this.$emit('keydown', e);\n        }\n      }\n    });\n    if (this.inactive) tag = 'div';\n\n    if (this.inactive && this.to) {\n      data.on = data.nativeOn;\n      delete data.nativeOn;\n    }\n\n    var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlot\"])(this, 'default', {\n      active: this.isActive,\n      toggle: this.toggle\n    });\n    return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItemAction.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VList/VListItemAction.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n// Types\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'v-list-item-action',\n  functional: true,\n  render: function render(h, _a) {\n    var data = _a.data,\n        _b = _a.children,\n        children = _b === void 0 ? [] : _b;\n    data.staticClass = data.staticClass ? \"v-list-item__action \" + data.staticClass : 'v-list-item__action';\n    var filteredChild = children.filter(function (VNode) {\n      return VNode.isComment === false && VNode.text !== ' ';\n    });\n    if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack';\n    return h('div', data, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItemAvatar.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VList/VListItemAvatar.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VAvatar */ \"./src/components/VAvatar/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Components\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'v-list-item-avatar',\n  props: {\n    horizontal: Boolean,\n    size: {\n      type: [Number, String],\n      default: 40\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({\n        'v-list-item__avatar--horizontal': this.horizontal\n      }, _VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.computed.classes.call(this)), {\n        'v-avatar--tile': this.tile || this.horizontal\n      });\n    }\n  },\n  render: function render(h) {\n    var render = _VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.render.call(this, h);\n    render.data = render.data || {};\n    render.data.staticClass += ' v-list-item__avatar';\n    return render;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItemGroup.sass\":\n/*!**************************************************!*\\\n  !*** ./src/components/VList/VListItemGroup.sass ***!\n  \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItemGroup.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VList/VListItemGroup.ts ***!\n  \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VListItemGroup_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VListItemGroup.sass */ \"./src/components/VList/VListItemGroup.sass\");\n/* harmony import */ var _VListItemGroup_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VListItemGroup_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Mixins\n\n // Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-list-item-group',\n  provide: function provide() {\n    return {\n      isInGroup: true,\n      listItemGroup: this\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].options.computed.classes.call(this)), {\n        'v-list-item-group': true\n      });\n    }\n  },\n  methods: {\n    genData: function genData() {\n      return this.setTextColor(this.color, __assign(__assign({}, _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].options.methods.genData.call(this)), {\n        attrs: {\n          role: 'listbox'\n        }\n      }));\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListItemIcon.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VList/VListItemIcon.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n// Types\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'v-list-item-icon',\n  functional: true,\n  render: function render(h, _a) {\n    var data = _a.data,\n        children = _a.children;\n    data.staticClass = (\"v-list-item__icon \" + (data.staticClass || '')).trim();\n    return h('div', data, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VList/index.ts ***!\n  \\***************************************/\n/*! exports provided: VListItemActionText, VListItemContent, VListItemTitle, VListItemSubtitle, VList, VListGroup, VListItem, VListItemAction, VListItemAvatar, VListItemIcon, VListItemGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListItemActionText\", function() { return VListItemActionText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListItemContent\", function() { return VListItemContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListItemTitle\", function() { return VListItemTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListItemSubtitle\", function() { return VListItemSubtitle; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VList */ \"./src/components/VList/VList.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VList\", function() { return _VList__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VListGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VListGroup */ \"./src/components/VList/VListGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListGroup\", function() { return _VListGroup__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VListItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VListItem */ \"./src/components/VList/VListItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItem\", function() { return _VListItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VListItemGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VListItemGroup */ \"./src/components/VList/VListItemGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemGroup\", function() { return _VListItemGroup__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _VListItemAction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VListItemAction */ \"./src/components/VList/VListItemAction.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemAction\", function() { return _VListItemAction__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _VListItemAvatar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VListItemAvatar */ \"./src/components/VList/VListItemAvatar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemAvatar\", function() { return _VListItemAvatar__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _VListItemIcon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./VListItemIcon */ \"./src/components/VList/VListItemIcon.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemIcon\", function() { return _VListItemIcon__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\nvar VListItemActionText = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list-item__action-text', 'span');\nvar VListItemContent = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list-item__content', 'div');\nvar VListItemTitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list-item__title', 'div');\nvar VListItemSubtitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list-item__subtitle', 'div');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VList: _VList__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VListGroup: _VListGroup__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VListItem: _VListItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VListItemAction: _VListItemAction__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n    VListItemActionText: VListItemActionText,\n    VListItemAvatar: _VListItemAvatar__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n    VListItemContent: VListItemContent,\n    VListItemGroup: _VListItemGroup__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n    VListItemIcon: _VListItemIcon__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    VListItemSubtitle: VListItemSubtitle,\n    VListItemTitle: VListItemTitle\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VMain/VMain.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VMain/VMain.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VMain/VMain.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VMain/VMain.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMain_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMain.sass */ \"./src/components/VMain/VMain.sass\");\n/* harmony import */ var _VMain_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VMain_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n // Mixins\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-main',\n  props: {\n    tag: {\n      type: String,\n      default: 'main'\n    }\n  },\n  computed: {\n    styles: function styles() {\n      var _a = this.$vuetify.application,\n          bar = _a.bar,\n          top = _a.top,\n          right = _a.right,\n          footer = _a.footer,\n          insetFooter = _a.insetFooter,\n          bottom = _a.bottom,\n          left = _a.left;\n      return {\n        paddingTop: top + bar + \"px\",\n        paddingRight: right + \"px\",\n        paddingBottom: footer + insetFooter + bottom + \"px\",\n        paddingLeft: left + \"px\"\n      };\n    }\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-main',\n      style: this.styles,\n      ref: 'main'\n    };\n    return h(this.tag, data, [h('div', {\n      staticClass: 'v-main__wrap'\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this))]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VMain/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VMain/index.ts ***!\n  \\***************************************/\n/*! exports provided: VMain, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMain */ \"./src/components/VMain/VMain.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMain\", function() { return _VMain__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VMain__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/VMenu.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VMenu/VMenu.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/VMenu.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VMenu/VMenu.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMenu_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMenu.sass */ \"./src/components/VMenu/VMenu.sass\");\n/* harmony import */ var _VMenu_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VMenu_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VThemeProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VThemeProvider */ \"./src/components/VThemeProvider/index.ts\");\n/* harmony import */ var _mixins_activatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/activatable */ \"./src/mixins/activatable/index.ts\");\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable/index.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent/index.ts\");\n/* harmony import */ var _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/menuable */ \"./src/mixins/menuable/index.ts\");\n/* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/returnable */ \"./src/mixins/returnable/index.ts\");\n/* harmony import */ var _mixins_roundable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/roundable */ \"./src/mixins/roundable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _services_goto__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../services/goto */ \"./src/services/goto/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n\n\n\n\n\n\n // Directives\n\n\n // Utilities\n\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(_mixins_dependent__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_returnable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_roundable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-menu',\n  directives: {\n    ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  provide: function provide() {\n    return {\n      isInMenu: true,\n      // Pass theme through to default slot\n      theme: this.theme\n    };\n  },\n  props: {\n    auto: Boolean,\n    closeOnClick: {\n      type: Boolean,\n      default: true\n    },\n    closeOnContentClick: {\n      type: Boolean,\n      default: true\n    },\n    disabled: Boolean,\n    disableKeys: Boolean,\n    maxHeight: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    offsetX: Boolean,\n    offsetY: Boolean,\n    openOnHover: Boolean,\n    origin: {\n      type: String,\n      default: 'top left'\n    },\n    transition: {\n      type: [Boolean, String],\n      default: 'v-menu-transition'\n    },\n    contentProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    }\n  },\n  data: function data() {\n    return {\n      calculatedTopAuto: 0,\n      defaultOffset: 8,\n      hasJustFocused: false,\n      listIndex: -1,\n      resizeTimeout: 0,\n      selectedIndex: null,\n      tiles: []\n    };\n  },\n  computed: {\n    activeTile: function activeTile() {\n      return this.tiles[this.listIndex];\n    },\n    calculatedLeft: function calculatedLeft() {\n      var menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth));\n      if (!this.auto) return this.calcLeft(menuWidth) || '0';\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"convertToUnit\"])(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0';\n    },\n    calculatedMaxHeight: function calculatedMaxHeight() {\n      var height = this.auto ? '200px' : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"convertToUnit\"])(this.maxHeight);\n      return height || '0';\n    },\n    calculatedMaxWidth: function calculatedMaxWidth() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"convertToUnit\"])(this.maxWidth) || '0';\n    },\n    calculatedMinWidth: function calculatedMinWidth() {\n      if (this.minWidth) {\n        return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"convertToUnit\"])(this.minWidth) || '0';\n      }\n\n      var minWidth = Math.min(this.dimensions.activator.width + Number(this.nudgeWidth) + (this.auto ? 16 : 0), Math.max(this.pageWidth - 24, 0));\n      var calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth)) ? minWidth : parseInt(this.calculatedMaxWidth);\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"convertToUnit\"])(Math.min(calculatedMaxWidth, minWidth)) || '0';\n    },\n    calculatedTop: function calculatedTop() {\n      var top = !this.auto ? this.calcTop() : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"convertToUnit\"])(this.calcYOverflow(this.calculatedTopAuto));\n      return top || '0';\n    },\n    hasClickableTiles: function hasClickableTiles() {\n      return Boolean(this.tiles.find(function (tile) {\n        return tile.tabIndex > -1;\n      }));\n    },\n    styles: function styles() {\n      return {\n        maxHeight: this.calculatedMaxHeight,\n        minWidth: this.calculatedMinWidth,\n        maxWidth: this.calculatedMaxWidth,\n        top: this.calculatedTop,\n        left: this.calculatedLeft,\n        transformOrigin: this.origin,\n        zIndex: this.zIndex || this.activeZIndex\n      };\n    }\n  },\n  watch: {\n    isActive: function isActive(val) {\n      if (!val) this.listIndex = -1;\n    },\n    isContentActive: function isContentActive(val) {\n      this.hasJustFocused = val;\n    },\n    listIndex: function listIndex(next, prev) {\n      if (next in this.tiles) {\n        var tile = this.tiles[next];\n        tile.classList.add('v-list-item--highlighted');\n        var scrollTop = this.$refs.content.scrollTop;\n        var contentHeight = this.$refs.content.clientHeight;\n\n        if (scrollTop > tile.offsetTop - 8) {\n          Object(_services_goto__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(tile.offsetTop - tile.clientHeight, {\n            appOffset: false,\n            duration: 300,\n            container: this.$refs.content\n          });\n        } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n          Object(_services_goto__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n            appOffset: false,\n            duration: 300,\n            container: this.$refs.content\n          });\n        }\n      }\n\n      prev in this.tiles && this.tiles[prev].classList.remove('v-list-item--highlighted');\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('full-width')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_12__[\"removed\"])('full-width', this);\n    }\n  },\n  mounted: function mounted() {\n    this.isActive && this.callActivate();\n  },\n  methods: {\n    activate: function activate() {\n      var _this = this; // Update coordinates and dimensions of menu\n      // and its activator\n\n\n      this.updateDimensions(); // Start the transition\n\n      requestAnimationFrame(function () {\n        // Once transitioning, calculate scroll and top position\n        _this.startTransition().then(function () {\n          if (_this.$refs.content) {\n            _this.calculatedTopAuto = _this.calcTopAuto();\n            _this.auto && (_this.$refs.content.scrollTop = _this.calcScrollPosition());\n          }\n        });\n      });\n    },\n    calcScrollPosition: function calcScrollPosition() {\n      var $el = this.$refs.content;\n      var activeTile = $el.querySelector('.v-list-item--active');\n      var maxScrollTop = $el.scrollHeight - $el.offsetHeight;\n      return activeTile ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2)) : $el.scrollTop;\n    },\n    calcLeftAuto: function calcLeftAuto() {\n      return parseInt(this.dimensions.activator.left - this.defaultOffset * 2);\n    },\n    calcTopAuto: function calcTopAuto() {\n      var $el = this.$refs.content;\n      var activeTile = $el.querySelector('.v-list-item--active');\n\n      if (!activeTile) {\n        this.selectedIndex = null;\n      }\n\n      if (this.offsetY || !activeTile) {\n        return this.computedTop;\n      }\n\n      this.selectedIndex = Array.from(this.tiles).indexOf(activeTile);\n      var tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition();\n      var firstTileOffsetTop = $el.querySelector('.v-list-item').offsetTop;\n      return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1;\n    },\n    changeListIndex: function changeListIndex(e) {\n      // For infinite scroll and autocomplete, re-evaluate children\n      this.getTiles();\n\n      if (!this.isActive || !this.hasClickableTiles) {\n        return;\n      } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].tab) {\n        this.isActive = false;\n        return;\n      } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].down) {\n        this.nextTile();\n      } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].up) {\n        this.prevTile();\n      } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].end) {\n        this.lastTile();\n      } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].home) {\n        this.firstTile();\n      } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].enter && this.listIndex !== -1) {\n        this.tiles[this.listIndex].click();\n      } else {\n        return;\n      } // One of the conditions was met, prevent default action (#2988)\n\n\n      e.preventDefault();\n    },\n    closeConditional: function closeConditional(e) {\n      var target = e.target;\n      return this.isActive && !this._isDestroyed && this.closeOnClick && !this.$refs.content.contains(target);\n    },\n    genActivatorAttributes: function genActivatorAttributes() {\n      var attributes = _mixins_activatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genActivatorAttributes.call(this);\n\n      if (this.activeTile && this.activeTile.id) {\n        return __assign(__assign({}, attributes), {\n          'aria-activedescendant': this.activeTile.id\n        });\n      }\n\n      return attributes;\n    },\n    genActivatorListeners: function genActivatorListeners() {\n      var listeners = _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.methods.genActivatorListeners.call(this);\n\n      if (!this.disableKeys) {\n        listeners.keydown = this.onKeyDown;\n      }\n\n      return listeners;\n    },\n    genTransition: function genTransition() {\n      var content = this.genContent();\n      if (!this.transition) return content;\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, [content]);\n    },\n    genDirectives: function genDirectives() {\n      var _this = this;\n\n      var directives = [{\n        name: 'show',\n        value: this.isContentActive\n      }]; // Do not add click outside for hover menu\n\n      if (!this.openOnHover && this.closeOnClick) {\n        directives.push({\n          name: 'click-outside',\n          value: {\n            handler: function handler() {\n              _this.isActive = false;\n            },\n            closeConditional: this.closeConditional,\n            include: function include() {\n              return __spreadArray([_this.$el], __read(_this.getOpenDependentElements()), false);\n            }\n          }\n        });\n      }\n\n      return directives;\n    },\n    genContent: function genContent() {\n      var _a;\n\n      var _this = this;\n\n      var options = {\n        attrs: __assign(__assign(__assign({}, this.getScopeIdAttrs()), this.contentProps), {\n          role: 'role' in this.$attrs ? this.$attrs.role : 'menu'\n        }),\n        staticClass: 'v-menu__content',\n        class: __assign(__assign(__assign({}, this.rootThemeClasses), this.roundedClasses), (_a = {\n          'v-menu__content--auto': this.auto,\n          'v-menu__content--fixed': this.activatorFixed,\n          menuable__content__active: this.isActive\n        }, _a[this.contentClass.trim()] = true, _a)),\n        style: this.styles,\n        directives: this.genDirectives(),\n        ref: 'content',\n        on: {\n          click: function click(e) {\n            var target = e.target;\n            if (target.getAttribute('disabled')) return;\n            if (_this.closeOnContentClick) _this.isActive = false;\n          },\n          keydown: this.onKeyDown\n        }\n      };\n\n      if (this.$listeners.scroll) {\n        options.on = options.on || {};\n        options.on.scroll = this.$listeners.scroll;\n      }\n\n      if (!this.disabled && this.openOnHover) {\n        options.on = options.on || {};\n        options.on.mouseenter = this.mouseEnterHandler;\n      }\n\n      if (this.openOnHover) {\n        options.on = options.on || {};\n        options.on.mouseleave = this.mouseLeaveHandler;\n      }\n\n      return this.$createElement('div', options, this.getContentSlot());\n    },\n    getTiles: function getTiles() {\n      if (!this.$refs.content) return;\n      this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'));\n    },\n    mouseEnterHandler: function mouseEnterHandler() {\n      var _this = this;\n\n      this.runDelay('open', function () {\n        if (_this.hasJustFocused) return;\n        _this.hasJustFocused = true;\n      });\n    },\n    mouseLeaveHandler: function mouseLeaveHandler(e) {\n      var _this = this; // Prevent accidental re-activation\n\n\n      this.runDelay('close', function () {\n        var _a;\n\n        if ((_a = _this.$refs.content) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) return;\n        requestAnimationFrame(function () {\n          _this.isActive = false;\n\n          _this.callDeactivate();\n        });\n      });\n    },\n    nextTile: function nextTile() {\n      var tile = this.tiles[this.listIndex + 1];\n\n      if (!tile) {\n        if (!this.tiles.length) return;\n        this.listIndex = -1;\n        this.nextTile();\n        return;\n      }\n\n      this.listIndex++;\n      if (tile.tabIndex === -1) this.nextTile();\n    },\n    prevTile: function prevTile() {\n      var tile = this.tiles[this.listIndex - 1];\n\n      if (!tile) {\n        if (!this.tiles.length) return;\n        this.listIndex = this.tiles.length;\n        this.prevTile();\n        return;\n      }\n\n      this.listIndex--;\n      if (tile.tabIndex === -1) this.prevTile();\n    },\n    lastTile: function lastTile() {\n      var tile = this.tiles[this.tiles.length - 1];\n      if (!tile) return;\n      this.listIndex = this.tiles.length - 1;\n      if (tile.tabIndex === -1) this.prevTile();\n    },\n    firstTile: function firstTile() {\n      var tile = this.tiles[0];\n      if (!tile) return;\n      this.listIndex = 0;\n      if (tile.tabIndex === -1) this.nextTile();\n    },\n    onKeyDown: function onKeyDown(e) {\n      var _this = this;\n\n      if (this.disableKeys) return;\n\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].esc) {\n        // Wait for dependent elements to close first\n        setTimeout(function () {\n          _this.isActive = false;\n        });\n        var activator_1 = this.getActivator();\n        this.$nextTick(function () {\n          return activator_1 && activator_1.focus();\n        });\n      } else if (!this.isActive && [_util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_13__[\"keyCodes\"].down].includes(e.keyCode)) {\n        this.isActive = true;\n      } // Allow for isActive watcher to generate tile list\n\n\n      this.$nextTick(function () {\n        return _this.changeListIndex(e);\n      });\n    },\n    onResize: function onResize() {\n      if (!this.isActive) return; // Account for screen resize\n      // and orientation change\n      // eslint-disable-next-line no-unused-expressions\n\n      this.$refs.content.offsetWidth;\n      this.updateDimensions(); // When resizing to a smaller width\n      // content width is evaluated before\n      // the new activator width has been\n      // set, causing it to not size properly\n      // hacky but will revisit in the future\n\n      clearTimeout(this.resizeTimeout);\n      this.resizeTimeout = window.setTimeout(this.updateDimensions, 100);\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var data = {\n      staticClass: 'v-menu',\n      class: {\n        'v-menu--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n      },\n      directives: [{\n        arg: '500',\n        name: 'resize',\n        value: this.onResize\n      }]\n    };\n    return h('div', data, [!this.activator && this.genActivator(), this.showLazyContent(function () {\n      return [_this.$createElement(_VThemeProvider__WEBPACK_IMPORTED_MODULE_1__[\"VThemeProvider\"], {\n        props: {\n          root: true,\n          light: _this.light,\n          dark: _this.dark\n        }\n      }, [_this.genTransition()])];\n    })]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VMenu/index.ts ***!\n  \\***************************************/\n/*! exports provided: VMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMenu */ \"./src/components/VMenu/VMenu.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMenu\", function() { return _VMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VMessages/VMessages.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VMessages/VMessages.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VMessages/VMessages.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VMessages/VMessages.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMessages_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMessages.sass */ \"./src/components/VMessages/VMessages.sass\");\n/* harmony import */ var _VMessages_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VMessages_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n // Mixins\n\n\n\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'v-messages',\n  props: {\n    value: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  },\n  methods: {\n    genChildren: function genChildren() {\n      return this.$createElement('transition-group', {\n        staticClass: 'v-messages__wrapper',\n        attrs: {\n          name: 'message-transition',\n          tag: 'div'\n        }\n      }, this.value.map(this.genMessage));\n    },\n    genMessage: function genMessage(message, key) {\n      return this.$createElement('div', {\n        staticClass: 'v-messages__message',\n        key: key\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'default', {\n        message: message,\n        key: key\n      }) || [message]);\n    }\n  },\n  render: function render(h) {\n    return h('div', this.setTextColor(this.color, {\n      staticClass: 'v-messages',\n      class: this.themeClasses\n    }), [this.genChildren()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VMessages/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VMessages/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VMessages, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMessages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMessages */ \"./src/components/VMessages/VMessages.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMessages\", function() { return _VMessages__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VMessages__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VNavigationDrawer/VNavigationDrawer.sass\":\n/*!*****************************************************************!*\\\n  !*** ./src/components/VNavigationDrawer/VNavigationDrawer.sass ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VNavigationDrawer/VNavigationDrawer.ts\":\n/*!***************************************************************!*\\\n  !*** ./src/components/VNavigationDrawer/VNavigationDrawer.ts ***!\n  \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VNavigationDrawer_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VNavigationDrawer.sass */ \"./src/components/VNavigationDrawer/VNavigationDrawer.sass\");\n/* harmony import */ var _VNavigationDrawer_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VNavigationDrawer_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VImg_VImg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VImg/VImg */ \"./src/components/VImg/VImg.ts\");\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent/index.ts\");\n/* harmony import */ var _mixins_mobile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/mobile */ \"./src/mixins/mobile/index.ts\");\n/* harmony import */ var _mixins_overlayable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/overlayable */ \"./src/mixins/overlayable/index.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n\n\n\n\n\n\n // Directives\n\n\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('left', ['isActive', 'isMobile', 'miniVariant', 'expandOnHover', 'permanent', 'right', 'temporary', 'width']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_mobile__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_overlayable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-navigation-drawer',\n  directives: {\n    ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n    Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n  },\n  provide: function provide() {\n    return {\n      isInNav: this.tag === 'nav'\n    };\n  },\n  props: {\n    bottom: Boolean,\n    clipped: Boolean,\n    disableResizeWatcher: Boolean,\n    disableRouteWatcher: Boolean,\n    expandOnHover: Boolean,\n    floating: Boolean,\n    height: {\n      type: [Number, String],\n      default: function _default() {\n        return this.app ? '100vh' : '100%';\n      }\n    },\n    miniVariant: Boolean,\n    miniVariantWidth: {\n      type: [Number, String],\n      default: 56\n    },\n    permanent: Boolean,\n    right: Boolean,\n    src: {\n      type: [String, Object],\n      default: ''\n    },\n    stateless: Boolean,\n    tag: {\n      type: String,\n      default: function _default() {\n        return this.app ? 'nav' : 'aside';\n      }\n    },\n    temporary: Boolean,\n    touchless: Boolean,\n    width: {\n      type: [Number, String],\n      default: 256\n    },\n    value: null\n  },\n  data: function data() {\n    return {\n      isMouseover: false,\n      touchArea: {\n        left: 0,\n        right: 0\n      },\n      stackMinZIndex: 6\n    };\n  },\n  computed: {\n    /**\n     * Used for setting an app value from a dynamic\n     * property. Called from applicationable.js\n     */\n    applicationProperty: function applicationProperty() {\n      return this.right ? 'right' : 'left';\n    },\n    classes: function classes() {\n      return __assign({\n        'v-navigation-drawer': true,\n        'v-navigation-drawer--absolute': this.absolute,\n        'v-navigation-drawer--bottom': this.bottom,\n        'v-navigation-drawer--clipped': this.clipped,\n        'v-navigation-drawer--close': !this.isActive,\n        'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n        'v-navigation-drawer--floating': this.floating,\n        'v-navigation-drawer--is-mobile': this.isMobile,\n        'v-navigation-drawer--is-mouseover': this.isMouseover,\n        'v-navigation-drawer--mini-variant': this.isMiniVariant,\n        'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n        'v-navigation-drawer--open': this.isActive,\n        'v-navigation-drawer--open-on-hover': this.expandOnHover,\n        'v-navigation-drawer--right': this.right,\n        'v-navigation-drawer--temporary': this.temporary\n      }, this.themeClasses);\n    },\n    computedMaxHeight: function computedMaxHeight() {\n      if (!this.hasApp) return null;\n      var computedMaxHeight = this.$vuetify.application.bottom + this.$vuetify.application.footer + this.$vuetify.application.bar;\n      if (!this.clipped) return computedMaxHeight;\n      return computedMaxHeight + this.$vuetify.application.top;\n    },\n    computedTop: function computedTop() {\n      if (!this.hasApp) return 0;\n      var computedTop = this.$vuetify.application.bar;\n      computedTop += this.clipped ? this.$vuetify.application.top : 0;\n      return computedTop;\n    },\n    computedTransform: function computedTransform() {\n      if (this.isActive) return 0;\n      if (this.isBottom) return 100;\n      return this.right ? 100 : -100;\n    },\n    computedWidth: function computedWidth() {\n      return this.isMiniVariant ? this.miniVariantWidth : this.width;\n    },\n    hasApp: function hasApp() {\n      return this.app && !this.isMobile && !this.temporary;\n    },\n    isBottom: function isBottom() {\n      return this.bottom && this.isMobile;\n    },\n    isMiniVariant: function isMiniVariant() {\n      return !this.expandOnHover && this.miniVariant || this.expandOnHover && !this.isMouseover;\n    },\n    isMobile: function isMobile() {\n      return !this.stateless && !this.permanent && _mixins_mobile__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.computed.isMobile.call(this);\n    },\n    reactsToClick: function reactsToClick() {\n      return !this.stateless && !this.permanent && (this.isMobile || this.temporary);\n    },\n    reactsToMobile: function reactsToMobile() {\n      return this.app && !this.disableResizeWatcher && !this.permanent && !this.stateless && !this.temporary;\n    },\n    reactsToResize: function reactsToResize() {\n      return !this.disableResizeWatcher && !this.stateless;\n    },\n    reactsToRoute: function reactsToRoute() {\n      return !this.disableRouteWatcher && !this.stateless && (this.temporary || this.isMobile);\n    },\n    showOverlay: function showOverlay() {\n      return !this.hideOverlay && this.isActive && (this.isMobile || this.temporary);\n    },\n    styles: function styles() {\n      var translate = this.isBottom ? 'translateY' : 'translateX';\n      return {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"convertToUnit\"])(this.height),\n        top: !this.isBottom ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"convertToUnit\"])(this.computedTop) : 'auto',\n        maxHeight: this.computedMaxHeight != null ? \"calc(100% - \" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"convertToUnit\"])(this.computedMaxHeight) + \")\" : undefined,\n        transform: translate + \"(\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"convertToUnit\"])(this.computedTransform, '%') + \")\",\n        width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"convertToUnit\"])(this.computedWidth)\n      };\n    }\n  },\n  watch: {\n    $route: 'onRouteChange',\n    isActive: function isActive(val) {\n      this.$emit('input', val);\n    },\n\n    /**\n     * When mobile changes, adjust the active state\n     * only when there has been a previous value\n     */\n    isMobile: function isMobile(val, prev) {\n      !val && this.isActive && !this.temporary && this.removeOverlay();\n      if (prev == null || !this.reactsToResize || !this.reactsToMobile) return;\n      this.isActive = !val;\n    },\n    permanent: function permanent(val) {\n      // If enabling prop enable the drawer\n      if (val) this.isActive = true;\n    },\n    showOverlay: function showOverlay(val) {\n      if (val) this.genOverlay();else this.removeOverlay();\n    },\n    value: function value(val) {\n      if (this.permanent) return;\n\n      if (val == null) {\n        this.init();\n        return;\n      }\n\n      if (val !== this.isActive) this.isActive = val;\n    },\n    expandOnHover: 'updateMiniVariant',\n    isMouseover: function isMouseover(val) {\n      this.updateMiniVariant(!val);\n    }\n  },\n  beforeMount: function beforeMount() {\n    this.init();\n  },\n  methods: {\n    calculateTouchArea: function calculateTouchArea() {\n      var parent = this.$el.parentNode;\n      if (!parent) return;\n      var parentRect = parent.getBoundingClientRect();\n      this.touchArea = {\n        left: parentRect.left + 50,\n        right: parentRect.right - 50\n      };\n    },\n    closeConditional: function closeConditional() {\n      return this.isActive && !this._isDestroyed && this.reactsToClick;\n    },\n    genAppend: function genAppend() {\n      return this.genPosition('append');\n    },\n    genBackground: function genBackground() {\n      var props = {\n        height: '100%',\n        width: '100%',\n        src: this.src\n      };\n      var image = this.$scopedSlots.img ? this.$scopedSlots.img(props) : this.$createElement(_VImg_VImg__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: props\n      });\n      return this.$createElement('div', {\n        staticClass: 'v-navigation-drawer__image'\n      }, [image]);\n    },\n    genDirectives: function genDirectives() {\n      var _this = this;\n\n      var directives = [{\n        name: 'click-outside',\n        value: {\n          handler: function handler() {\n            _this.isActive = false;\n          },\n          closeConditional: this.closeConditional,\n          include: this.getOpenDependentElements\n        }\n      }];\n\n      if (!this.touchless && !this.stateless) {\n        directives.push({\n          name: 'touch',\n          value: {\n            parent: true,\n            left: this.swipeLeft,\n            right: this.swipeRight\n          }\n        });\n      }\n\n      return directives;\n    },\n    genListeners: function genListeners() {\n      var _this = this;\n\n      var on = {\n        mouseenter: function mouseenter() {\n          return _this.isMouseover = true;\n        },\n        mouseleave: function mouseleave() {\n          return _this.isMouseover = false;\n        },\n        transitionend: function transitionend(e) {\n          if (e.target !== e.currentTarget) return;\n\n          _this.$emit('transitionend', e); // IE11 does not support new Event('resize')\n\n\n          var resizeEvent = document.createEvent('UIEvents');\n          resizeEvent.initUIEvent('resize', true, false, window, 0);\n          window.dispatchEvent(resizeEvent);\n        }\n      };\n\n      if (this.miniVariant) {\n        on.click = function () {\n          return _this.$emit('update:mini-variant', false);\n        };\n      }\n\n      return on;\n    },\n    genPosition: function genPosition(name) {\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(this, name);\n      if (!slot) return slot;\n      return this.$createElement('div', {\n        staticClass: \"v-navigation-drawer__\" + name\n      }, slot);\n    },\n    genPrepend: function genPrepend() {\n      return this.genPosition('prepend');\n    },\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-navigation-drawer__content'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(this));\n    },\n    genBorder: function genBorder() {\n      return this.$createElement('div', {\n        staticClass: 'v-navigation-drawer__border'\n      });\n    },\n    init: function init() {\n      if (this.permanent) {\n        this.isActive = true;\n      } else if (this.stateless || this.value != null) {\n        this.isActive = this.value;\n      } else if (!this.temporary) {\n        this.isActive = !this.isMobile;\n      }\n    },\n    onRouteChange: function onRouteChange() {\n      if (this.reactsToRoute && this.closeConditional()) {\n        this.isActive = false;\n      }\n    },\n    swipeLeft: function swipeLeft(e) {\n      if (this.isActive && this.right) return;\n      this.calculateTouchArea();\n      if (Math.abs(e.touchendX - e.touchstartX) < 100) return;\n      if (this.right && e.touchstartX >= this.touchArea.right) this.isActive = true;else if (!this.right && this.isActive) this.isActive = false;\n    },\n    swipeRight: function swipeRight(e) {\n      if (this.isActive && !this.right) return;\n      this.calculateTouchArea();\n      if (Math.abs(e.touchendX - e.touchstartX) < 100) return;\n      if (!this.right && e.touchstartX <= this.touchArea.left) this.isActive = true;else if (this.right && this.isActive) this.isActive = false;\n    },\n\n    /**\n     * Update the application layout\n     */\n    updateApplication: function updateApplication() {\n      if (!this.isActive || this.isMobile || this.temporary || !this.$el) return 0;\n      var width = Number(this.miniVariant ? this.miniVariantWidth : this.width);\n      return isNaN(width) ? this.$el.clientWidth : width;\n    },\n    updateMiniVariant: function updateMiniVariant(val) {\n      if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val);\n    }\n  },\n  render: function render(h) {\n    var children = [this.genPrepend(), this.genContent(), this.genAppend(), this.genBorder()];\n    if (this.src || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getSlot\"])(this, 'img')) children.unshift(this.genBackground());\n    return h(this.tag, this.setBackgroundColor(this.color, {\n      class: this.classes,\n      style: this.styles,\n      directives: this.genDirectives(),\n      on: this.genListeners()\n    }), children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VNavigationDrawer/index.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VNavigationDrawer/index.ts ***!\n  \\***************************************************/\n/*! exports provided: VNavigationDrawer, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VNavigationDrawer */ \"./src/components/VNavigationDrawer/VNavigationDrawer.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VNavigationDrawer\", function() { return _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VOtpInput/VOtpInput.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VOtpInput/VOtpInput.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VOtpInput/VOtpInput.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VOtpInput/VOtpInput.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTextField_VTextField_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VTextField/VTextField.sass */ \"./src/components/VTextField/VTextField.sass\");\n/* harmony import */ var _VTextField_VTextField_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTextField_VTextField_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VOtpInput_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VOtpInput.sass */ \"./src/components/VOtpInput/VOtpInput.sass\");\n/* harmony import */ var _VOtpInput_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_VOtpInput_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n\n // Extensions\n\n\n // Directives\n\n // Utilities\n\n\n // Types\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-otp-input',\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  },\n  inheritAttrs: false,\n  props: {\n    length: {\n      type: [Number, String],\n      default: 6\n    },\n    type: {\n      type: String,\n      default: 'text'\n    },\n    plain: Boolean\n  },\n  data: function data() {\n    return {\n      initialValue: null,\n      isBooted: false,\n      otp: []\n    };\n  },\n  computed: {\n    outlined: function outlined() {\n      return !this.plain;\n    },\n    classes: function classes() {\n      return __assign(__assign(__assign({}, _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.classes.call(this)), _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.classes.call(this)), {\n        'v-otp-input--plain': this.plain\n      });\n    }\n  },\n  watch: {\n    isFocused: 'updateValue',\n    value: function value(val) {\n      this.lazyValue = val;\n      this.otp = (val === null || val === void 0 ? void 0 : val.split('')) || [];\n    }\n  },\n  created: function created() {\n    var _a;\n    /* istanbul ignore next */\n\n\n    if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"breaking\"])('browser-autocomplete', 'autocomplete', this);\n    }\n\n    this.otp = ((_a = this.internalValue) === null || _a === void 0 ? void 0 : _a.split('')) || [];\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    requestAnimationFrame(function () {\n      return _this.isBooted = true;\n    });\n  },\n  methods: {\n    /** @public */\n    focus: function focus(e, otpIdx) {\n      this.onFocus(e, otpIdx || 0);\n    },\n    genInputSlot: function genInputSlot(otpIdx) {\n      var _this = this;\n\n      return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n        staticClass: 'v-input__slot',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.height)\n        },\n        on: {\n          click: function click() {\n            return _this.onClick(otpIdx);\n          },\n          mousedown: function mousedown(e) {\n            return _this.onMouseDown(e, otpIdx);\n          },\n          mouseup: function mouseup(e) {\n            return _this.onMouseUp(e, otpIdx);\n          }\n        }\n      }), [this.genDefaultSlot(otpIdx)]);\n    },\n    genControl: function genControl(otpIdx) {\n      return this.$createElement('div', {\n        staticClass: 'v-input__control'\n      }, [this.genInputSlot(otpIdx)]);\n    },\n    genDefaultSlot: function genDefaultSlot(otpIdx) {\n      return [this.genFieldset(), this.genTextFieldSlot(otpIdx)];\n    },\n    genContent: function genContent() {\n      var _this = this;\n\n      return Array.from({\n        length: +this.length\n      }, function (_, i) {\n        return _this.$createElement('div', _this.setTextColor(_this.validationState, {\n          staticClass: 'v-input',\n          class: _this.classes\n        }), [_this.genControl(i)]);\n      });\n    },\n    genFieldset: function genFieldset() {\n      return this.$createElement('fieldset', {\n        attrs: {\n          'aria-hidden': true\n        }\n      }, [this.genLegend()]);\n    },\n    genLegend: function genLegend() {\n      var span = this.$createElement('span', {\n        domProps: {\n          innerHTML: '&#8203;'\n        }\n      });\n      return this.$createElement('legend', {\n        style: {\n          width: '0px'\n        }\n      }, [span]);\n    },\n    genInput: function genInput(otpIdx) {\n      var _this = this;\n\n      var listeners = Object.assign({}, this.listeners$);\n      delete listeners.change; // Change should not be bound externally\n\n      return this.$createElement('input', {\n        style: {},\n        domProps: {\n          value: this.otp[otpIdx],\n          min: this.type === 'number' ? 0 : null\n        },\n        attrs: __assign(__assign({}, this.attrs$), {\n          autocomplete: 'one-time-code',\n          disabled: this.isDisabled,\n          readonly: this.isReadonly,\n          type: this.type,\n          id: this.computedId + \"--\" + otpIdx,\n          class: \"otp-field-box--\" + otpIdx\n        }),\n        on: Object.assign(listeners, {\n          blur: this.onBlur,\n          input: function input(e) {\n            return _this.onInput(e, otpIdx);\n          },\n          focus: function focus(e) {\n            return _this.onFocus(e, otpIdx);\n          },\n          keydown: this.onKeyDown,\n          keyup: function keyup(e) {\n            return _this.onKeyUp(e, otpIdx);\n          }\n        }),\n        ref: 'input',\n        refInFor: true\n      });\n    },\n    genTextFieldSlot: function genTextFieldSlot(otpIdx) {\n      return this.$createElement('div', {\n        staticClass: 'v-text-field__slot'\n      }, [this.genInput(otpIdx)]);\n    },\n    onBlur: function onBlur(e) {\n      var _this = this;\n\n      this.isFocused = false;\n      e && this.$nextTick(function () {\n        return _this.$emit('blur', e);\n      });\n    },\n    onClick: function onClick(otpIdx) {\n      if (this.isFocused || this.isDisabled || !this.$refs.input[otpIdx]) return;\n      this.onFocus(undefined, otpIdx);\n    },\n    onFocus: function onFocus(e, otpIdx) {\n      e === null || e === void 0 ? void 0 : e.preventDefault();\n      e === null || e === void 0 ? void 0 : e.stopPropagation();\n      var elements = this.$refs.input;\n      var ref = this.$refs.input && elements[otpIdx || 0];\n      if (!ref) return;\n\n      if (document.activeElement !== ref) {\n        ref.focus();\n        return ref.select();\n      }\n\n      if (!this.isFocused) {\n        this.isFocused = true;\n        ref.select();\n        e && this.$emit('focus', e);\n      }\n    },\n    onInput: function onInput(e, index) {\n      var maxCursor = +this.length - 1;\n      var target = e.target;\n      var value = target.value;\n      var inputDataArray = (value === null || value === void 0 ? void 0 : value.split('')) || [];\n\n      var newOtp = __spreadArray([], __read(this.otp), false);\n\n      for (var i = 0; i < inputDataArray.length; i++) {\n        var appIdx = index + i;\n        if (appIdx > maxCursor) break;\n        newOtp[appIdx] = inputDataArray[i].toString();\n      }\n\n      if (!inputDataArray.length) {\n        newOtp.splice(index, 1);\n      }\n\n      this.otp = newOtp;\n      this.internalValue = this.otp.join('');\n\n      if (index + inputDataArray.length >= +this.length) {\n        this.onCompleted();\n        this.clearFocus(index);\n      } else if (inputDataArray.length) {\n        this.changeFocus(index + inputDataArray.length);\n      }\n    },\n    clearFocus: function clearFocus(index) {\n      var input = this.$refs.input[index];\n      input.blur();\n    },\n    onKeyDown: function onKeyDown(e) {\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"keyCodes\"].enter) {\n        this.$emit('change', this.internalValue);\n      }\n\n      this.$emit('keydown', e);\n    },\n    onMouseDown: function onMouseDown(e, otpIdx) {\n      // Prevent input from being blurred\n      if (e.target !== this.$refs.input[otpIdx]) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.onMouseDown.call(this, e);\n    },\n    onMouseUp: function onMouseUp(e, otpIdx) {\n      if (this.hasMouseDown) this.focus(e, otpIdx);\n      _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.onMouseUp.call(this, e);\n    },\n    changeFocus: function changeFocus(index) {\n      this.onFocus(undefined, index || 0);\n    },\n    updateValue: function updateValue(val) {\n      // Sets validationState from validatable\n      this.hasColor = val;\n\n      if (val) {\n        this.initialValue = this.lazyValue;\n      } else if (this.initialValue !== this.lazyValue) {\n        this.$emit('change', this.lazyValue);\n      }\n    },\n    onKeyUp: function onKeyUp(event, index) {\n      event.preventDefault();\n      var eventKey = event.key;\n\n      if (['Tab', 'Shift', 'Meta', 'Control', 'Alt'].includes(eventKey)) {\n        return;\n      }\n\n      if (['Delete'].includes(eventKey)) {\n        return;\n      }\n\n      if (eventKey === 'ArrowLeft' || eventKey === 'Backspace' && !this.otp[index]) {\n        return index > 0 && this.changeFocus(index - 1);\n      }\n\n      if (eventKey === 'ArrowRight') {\n        return index + 1 < +this.length && this.changeFocus(index + 1);\n      }\n    },\n    onCompleted: function onCompleted() {\n      var rsp = this.otp.join('');\n\n      if (rsp.length === +this.length) {\n        this.$emit('finish', rsp);\n      }\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-otp-input',\n      class: this.themeClasses\n    }, this.genContent());\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VOtpInput/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VOtpInput/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VOtpInput, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VOtpInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VOtpInput */ \"./src/components/VOtpInput/VOtpInput.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOtpInput\", function() { return _VOtpInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VOtpInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VOverflowBtn/VOverflowBtn.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VOverflowBtn/VOverflowBtn.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VOverflowBtn/VOverflowBtn.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VOverflowBtn/VOverflowBtn.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VOverflowBtn_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VOverflowBtn.sass */ \"./src/components/VOverflowBtn/VOverflowBtn.sass\");\n/* harmony import */ var _VOverflowBtn_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VOverflowBtn_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.ts\");\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VAutocomplete */ \"./src/components/VAutocomplete/index.ts\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n\n\n // Components\n\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n  name: 'v-overflow-btn',\n  props: {\n    editable: Boolean,\n    segmented: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.classes.call(this)), {\n        'v-overflow-btn': true,\n        'v-overflow-btn--segmented': this.segmented,\n        'v-overflow-btn--editable': this.editable\n      });\n    },\n    isAnyValueAllowed: function isAnyValueAllowed() {\n      return this.editable || _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.isAnyValueAllowed.call(this);\n    },\n    isSingle: function isSingle() {\n      return true;\n    },\n    computedItems: function computedItems() {\n      return this.segmented ? this.allItems : this.filteredItems;\n    },\n    labelValue: function labelValue() {\n      return this.isFocused && !this.persistentPlaceholder || this.isLabelActive;\n    }\n  },\n  methods: {\n    genSelections: function genSelections() {\n      return this.editable ? _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genSelections.call(this) : _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genSelections.call(this); // Override v-autocomplete's override\n    },\n    genCommaSelection: function genCommaSelection(item, index, last) {\n      return this.segmented ? this.genSegmentedBtn(item) : _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genCommaSelection.call(this, item, index, last);\n    },\n    genInput: function genInput() {\n      var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.methods.genInput.call(this);\n      input.data = input.data || {};\n      input.data.domProps.value = this.editable ? this.internalSearch : '';\n      input.data.attrs.readonly = !this.isAnyValueAllowed;\n      return input;\n    },\n    genLabel: function genLabel() {\n      if (this.editable && this.isFocused) return null;\n      var label = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.methods.genLabel.call(this);\n      if (!label) return label;\n      label.data = label.data || {}; // Reset previously set styles from parent\n\n      label.data.style = {};\n      return label;\n    },\n    genSegmentedBtn: function genSegmentedBtn(item) {\n      var _this = this;\n\n      var itemValue = this.getValue(item);\n      var itemObj = this.computedItems.find(function (i) {\n        return _this.getValue(i) === itemValue;\n      }) || item;\n\n      if (!itemObj.text || !itemObj.callback) {\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_5__[\"consoleWarn\"])('When using \"segmented\" prop without a selection slot, items must contain both a text and callback property', this);\n        return null;\n      }\n\n      return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n        props: {\n          text: true\n        },\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n            itemObj.callback(e);\n          }\n        }\n      }, [itemObj.text]);\n    },\n    updateValue: function updateValue(val) {\n      if (val) {\n        this.initialValue = this.lazyValue;\n      } else if (this.initialValue !== this.lazyValue) {\n        this.$emit('change', this.lazyValue);\n      }\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VOverflowBtn/index.ts\":\n/*!**********************************************!*\\\n  !*** ./src/components/VOverflowBtn/index.ts ***!\n  \\**********************************************/\n/*! exports provided: VOverflowBtn, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VOverflowBtn */ \"./src/components/VOverflowBtn/VOverflowBtn.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOverflowBtn\", function() { return _VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VOverlay/VOverlay.sass\":\n/*!***********************************************!*\\\n  !*** ./src/components/VOverlay/VOverlay.sass ***!\n  \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VOverlay/VOverlay.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VOverlay/VOverlay.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VOverlay_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VOverlay.sass */ \"./src/components/VOverlay/VOverlay.sass\");\n/* harmony import */ var _VOverlay_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VOverlay_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-overlay',\n  props: {\n    absolute: Boolean,\n    color: {\n      type: String,\n      default: '#212121'\n    },\n    dark: {\n      type: Boolean,\n      default: true\n    },\n    opacity: {\n      type: [Number, String],\n      default: 0.46\n    },\n    value: {\n      default: true\n    },\n    zIndex: {\n      type: [Number, String],\n      default: 5\n    }\n  },\n  computed: {\n    __scrim: function __scrim() {\n      var data = this.setBackgroundColor(this.color, {\n        staticClass: 'v-overlay__scrim',\n        style: {\n          opacity: this.computedOpacity\n        }\n      });\n      return this.$createElement('div', data);\n    },\n    classes: function classes() {\n      return __assign({\n        'v-overlay--absolute': this.absolute,\n        'v-overlay--active': this.isActive\n      }, this.themeClasses);\n    },\n    computedOpacity: function computedOpacity() {\n      return Number(this.isActive ? this.opacity : 0);\n    },\n    styles: function styles() {\n      return {\n        zIndex: this.zIndex\n      };\n    }\n  },\n  methods: {\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-overlay__content'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this));\n    }\n  },\n  render: function render(h) {\n    var children = [this.__scrim];\n    if (this.isActive) children.push(this.genContent());\n    return h('div', {\n      staticClass: 'v-overlay',\n      on: this.$listeners,\n      class: this.classes,\n      style: this.styles\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VOverlay/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VOverlay/index.ts ***!\n  \\******************************************/\n/*! exports provided: VOverlay, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VOverlay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VOverlay */ \"./src/components/VOverlay/VOverlay.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOverlay\", function() { return _VOverlay__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VOverlay__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VPagination/VPagination.sass\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VPagination/VPagination.sass ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VPagination/VPagination.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VPagination/VPagination.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VPagination_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VPagination.sass */ \"./src/components/VPagination/VPagination.sass\");\n/* harmony import */ var _VPagination_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VPagination_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_intersectable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/intersectable */ \"./src/mixins/intersectable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n // Directives\n\n // Mixins\n\n\n\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object(_mixins_intersectable__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n  onVisible: ['init']\n}), _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).extend({\n  name: 'v-pagination',\n  directives: {\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  props: {\n    circle: Boolean,\n    disabled: Boolean,\n    navigationColor: String,\n    navigationTextColor: String,\n    length: {\n      type: Number,\n      default: 0,\n      validator: function validator(val) {\n        return val % 1 === 0;\n      }\n    },\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    totalVisible: [Number, String],\n    value: {\n      type: Number,\n      default: 0\n    },\n    pageAriaLabel: {\n      type: String,\n      default: '$vuetify.pagination.ariaLabel.page'\n    },\n    currentPageAriaLabel: {\n      type: String,\n      default: '$vuetify.pagination.ariaLabel.currentPage'\n    },\n    previousAriaLabel: {\n      type: String,\n      default: '$vuetify.pagination.ariaLabel.previous'\n    },\n    nextAriaLabel: {\n      type: String,\n      default: '$vuetify.pagination.ariaLabel.next'\n    },\n    wrapperAriaLabel: {\n      type: String,\n      default: '$vuetify.pagination.ariaLabel.wrapper'\n    }\n  },\n  data: function data() {\n    return {\n      maxButtons: 0,\n      selected: null\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-pagination': true,\n        'v-pagination--circle': this.circle,\n        'v-pagination--disabled': this.disabled\n      }, this.themeClasses);\n    },\n    items: function items() {\n      var totalVisible = parseInt(this.totalVisible, 10);\n\n      if (totalVisible === 0 || isNaN(this.length) || this.length > Number.MAX_SAFE_INTEGER) {\n        return [];\n      }\n\n      var maxLength = Math.min(Math.max(0, totalVisible) || this.length, Math.max(0, this.maxButtons) || this.length, this.length);\n\n      if (this.length <= maxLength) {\n        return this.range(1, this.length);\n      }\n\n      var even = maxLength % 2 === 0 ? 1 : 0;\n      var left = Math.floor(maxLength / 2);\n      var right = this.length - left + 1 + even;\n\n      if (this.value > left && this.value < right) {\n        var firstItem = 1;\n        var lastItem = this.length;\n        var start = this.value - left + 2;\n        var end = this.value + left - 2 - even;\n        var secondItem = start - 1 === firstItem + 1 ? 2 : '...';\n        var beforeLastItem = end + 1 === lastItem - 1 ? end + 1 : '...';\n        return __spreadArray(__spreadArray([1, secondItem], __read(this.range(start, end)), false), [beforeLastItem, this.length], false);\n      } else if (this.value === left) {\n        var end = this.value + left - 1 - even;\n        return __spreadArray(__spreadArray([], __read(this.range(1, end)), false), ['...', this.length], false);\n      } else if (this.value === right) {\n        var start = this.value - left + 1;\n        return __spreadArray([1, '...'], __read(this.range(start, this.length)), false);\n      } else {\n        return __spreadArray(__spreadArray(__spreadArray([], __read(this.range(1, left)), false), ['...'], false), __read(this.range(right, this.length)), false);\n      }\n    }\n  },\n  watch: {\n    value: function value() {\n      this.init();\n    }\n  },\n  beforeMount: function beforeMount() {\n    this.init();\n  },\n  methods: {\n    init: function init() {\n      var _this = this;\n\n      this.selected = null;\n      this.onResize();\n      this.$nextTick(this.onResize); // TODO: Change this (f75dee3a, cbdf7caa)\n\n      setTimeout(function () {\n        return _this.selected = _this.value;\n      }, 100);\n    },\n    onResize: function onResize() {\n      var width = this.$el && this.$el.parentElement ? this.$el.parentElement.clientWidth : window.innerWidth;\n      this.maxButtons = Math.floor((width - 96) / 42);\n    },\n    next: function next(e) {\n      e.preventDefault();\n      this.$emit('input', this.value + 1);\n      this.$emit('next');\n    },\n    previous: function previous(e) {\n      e.preventDefault();\n      this.$emit('input', this.value - 1);\n      this.$emit('previous');\n    },\n    range: function range(from, to) {\n      var range = [];\n      from = from > 0 ? from : 1;\n\n      for (var i = from; i <= to; i++) {\n        range.push(i);\n      }\n\n      return range;\n    },\n    genIcon: function genIcon(h, icon, disabled, fn, label) {\n      return h('li', [h('button', this.setBackgroundColor(this.navigationColor, {\n        staticClass: 'v-pagination__navigation',\n        class: {\n          'v-pagination__navigation--disabled': disabled\n        },\n        attrs: {\n          disabled: disabled,\n          type: 'button',\n          'aria-label': label\n        },\n        on: disabled ? {} : {\n          click: fn\n        }\n      }), [h(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          color: this.navigationTextColor\n        }\n      }, [icon])])]);\n    },\n    genItem: function genItem(h, i) {\n      var _this = this;\n\n      var color = i === this.value && (this.color || 'primary');\n      var isCurrentPage = i === this.value;\n      var ariaLabel = isCurrentPage ? this.currentPageAriaLabel : this.pageAriaLabel;\n      return h('button', this.setBackgroundColor(color, {\n        staticClass: 'v-pagination__item',\n        class: {\n          'v-pagination__item--active': i === this.value\n        },\n        attrs: {\n          type: 'button',\n          'aria-current': isCurrentPage,\n          'aria-label': this.$vuetify.lang.t(ariaLabel, i)\n        },\n        on: {\n          click: function click() {\n            return _this.$emit('input', i);\n          }\n        }\n      }), [i.toString()]);\n    },\n    genItems: function genItems(h) {\n      var _this = this;\n\n      return this.items.map(function (i, index) {\n        return h('li', {\n          key: index\n        }, [isNaN(Number(i)) ? h('span', {\n          class: 'v-pagination__more'\n        }, [i.toString()]) : _this.genItem(h, i)]);\n      });\n    },\n    genList: function genList(h, children) {\n      return h('ul', {\n        directives: [{\n          modifiers: {\n            quiet: true\n          },\n          name: 'resize',\n          value: this.onResize\n        }],\n        class: this.classes\n      }, children);\n    }\n  },\n  render: function render(h) {\n    var children = [this.genIcon(h, this.$vuetify.rtl ? this.nextIcon : this.prevIcon, this.value <= 1, this.previous, this.$vuetify.lang.t(this.previousAriaLabel)), this.genItems(h), this.genIcon(h, this.$vuetify.rtl ? this.prevIcon : this.nextIcon, this.value >= this.length, this.next, this.$vuetify.lang.t(this.nextAriaLabel))];\n    return h('nav', {\n      attrs: {\n        role: 'navigation',\n        'aria-label': this.$vuetify.lang.t(this.wrapperAriaLabel)\n      }\n    }, [this.genList(h, children)]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VPagination/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VPagination/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VPagination, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VPagination__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VPagination */ \"./src/components/VPagination/VPagination.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPagination\", function() { return _VPagination__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VPagination__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VParallax/VParallax.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VParallax/VParallax.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VParallax/VParallax.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VParallax/VParallax.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VParallax_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VParallax.sass */ \"./src/components/VParallax/VParallax.sass\");\n/* harmony import */ var _VParallax_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VParallax_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_translatable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/translatable */ \"./src/mixins/translatable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Style\n // Mixins\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_translatable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-parallax',\n  props: {\n    alt: {\n      type: String,\n      default: ''\n    },\n    height: {\n      type: [String, Number],\n      default: 500\n    },\n    src: String,\n    srcset: String\n  },\n  data: function data() {\n    return {\n      isBooted: false\n    };\n  },\n  computed: {\n    styles: function styles() {\n      return {\n        display: 'block',\n        opacity: this.isBooted ? 1 : 0,\n        transform: \"translate(-50%, \" + this.parallax + \"px)\"\n      };\n    }\n  },\n  mounted: function mounted() {\n    this.init();\n  },\n  methods: {\n    init: function init() {\n      var _this = this;\n\n      var img = this.$refs.img;\n      if (!img) return;\n\n      if (img.complete) {\n        this.translate();\n        this.listeners();\n      } else {\n        img.addEventListener('load', function () {\n          _this.translate();\n\n          _this.listeners();\n        }, false);\n      }\n\n      this.isBooted = true;\n    },\n    objHeight: function objHeight() {\n      return this.$refs.img.naturalHeight;\n    }\n  },\n  render: function render(h) {\n    var imgData = {\n      staticClass: 'v-parallax__image',\n      style: this.styles,\n      attrs: {\n        src: this.src,\n        srcset: this.srcset,\n        alt: this.alt\n      },\n      ref: 'img'\n    };\n    var container = h('div', {\n      staticClass: 'v-parallax__image-container'\n    }, [h('img', imgData)]);\n    var content = h('div', {\n      staticClass: 'v-parallax__content'\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n    return h('div', {\n      staticClass: 'v-parallax',\n      style: {\n        height: this.height + \"px\"\n      },\n      on: this.$listeners\n    }, [container, content]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VParallax/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VParallax/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VParallax, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VParallax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VParallax */ \"./src/components/VParallax/VParallax.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VParallax\", function() { return _VParallax__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VParallax__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VPicker/VPicker.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VPicker/VPicker.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VPicker/VPicker.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VPicker/VPicker.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VPicker_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VPicker.sass */ \"./src/components/VPicker/VPicker.sass\");\n/* harmony import */ var _VPicker_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VPicker_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VCard_VCard_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VCard/VCard.sass */ \"./src/components/VCard/VCard.sass\");\n/* harmony import */ var _VCard_VCard_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_VCard_VCard_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n // Mixins\n\n\n\n // Helpers\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_elevatable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]).extend({\n  name: 'v-picker',\n  props: {\n    flat: Boolean,\n    fullWidth: Boolean,\n    landscape: Boolean,\n    noTitle: Boolean,\n    transition: {\n      type: String,\n      default: 'fade-transition'\n    },\n    width: {\n      type: [Number, String],\n      default: 290\n    }\n  },\n  computed: {\n    computedTitleColor: function computedTitleColor() {\n      var defaultTitleColor = this.isDark ? false : this.color || 'primary';\n      return this.color || defaultTitleColor;\n    }\n  },\n  methods: {\n    genTitle: function genTitle() {\n      return this.$createElement('div', this.setBackgroundColor(this.computedTitleColor, {\n        staticClass: 'v-picker__title',\n        class: {\n          'v-picker__title--landscape': this.landscape\n        }\n      }), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'title'));\n    },\n    genBodyTransition: function genBodyTransition() {\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this));\n    },\n    genBody: function genBody() {\n      return this.$createElement('div', {\n        staticClass: 'v-picker__body',\n        class: __assign({\n          'v-picker__body--no-title': this.noTitle\n        }, this.themeClasses),\n        style: this.fullWidth ? undefined : {\n          width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.width)\n        }\n      }, [this.genBodyTransition()]);\n    },\n    genActions: function genActions() {\n      return this.$createElement('div', {\n        staticClass: 'v-picker__actions v-card__actions',\n        class: {\n          'v-picker__actions--no-title': this.noTitle\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this, 'actions'));\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-picker v-card',\n      class: __assign(__assign({\n        'v-picker--flat': this.flat,\n        'v-picker--landscape': this.landscape,\n        'v-picker--full-width': this.fullWidth\n      }, this.themeClasses), this.elevationClasses)\n    }, [this.$slots.title ? this.genTitle() : null, this.genBody(), this.$slots.actions ? this.genActions() : null]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VPicker/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VPicker/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VPicker, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VPicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VPicker */ \"./src/components/VPicker/VPicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPicker\", function() { return _VPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VProgressCircular/VProgressCircular.sass\":\n/*!*****************************************************************!*\\\n  !*** ./src/components/VProgressCircular/VProgressCircular.sass ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VProgressCircular/VProgressCircular.ts\":\n/*!***************************************************************!*\\\n  !*** ./src/components/VProgressCircular/VProgressCircular.ts ***!\n  \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VProgressCircular_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VProgressCircular.sass */ \"./src/components/VProgressCircular/VProgressCircular.sass\");\n/* harmony import */ var _VProgressCircular_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VProgressCircular_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_intersect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/intersect */ \"./src/directives/intersect/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n // Directives\n\n // Mixins\n\n // Utils\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n  name: 'v-progress-circular',\n  directives: {\n    intersect: _directives_intersect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  props: {\n    button: Boolean,\n    indeterminate: Boolean,\n    rotate: {\n      type: [Number, String],\n      default: 0\n    },\n    size: {\n      type: [Number, String],\n      default: 32\n    },\n    width: {\n      type: [Number, String],\n      default: 4\n    },\n    value: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n  data: function data() {\n    return {\n      radius: 20,\n      isVisible: true\n    };\n  },\n  computed: {\n    calculatedSize: function calculatedSize() {\n      return Number(this.size) + (this.button ? 8 : 0);\n    },\n    circumference: function circumference() {\n      return 2 * Math.PI * this.radius;\n    },\n    classes: function classes() {\n      return {\n        'v-progress-circular--visible': this.isVisible,\n        'v-progress-circular--indeterminate': this.indeterminate,\n        'v-progress-circular--button': this.button\n      };\n    },\n    normalizedValue: function normalizedValue() {\n      if (this.value < 0) {\n        return 0;\n      }\n\n      if (this.value > 100) {\n        return 100;\n      }\n\n      return parseFloat(this.value);\n    },\n    strokeDashArray: function strokeDashArray() {\n      return Math.round(this.circumference * 1000) / 1000;\n    },\n    strokeDashOffset: function strokeDashOffset() {\n      return (100 - this.normalizedValue) / 100 * this.circumference + 'px';\n    },\n    strokeWidth: function strokeWidth() {\n      return Number(this.width) / +this.size * this.viewBoxSize * 2;\n    },\n    styles: function styles() {\n      return {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.calculatedSize),\n        width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.calculatedSize)\n      };\n    },\n    svgStyles: function svgStyles() {\n      return {\n        transform: \"rotate(\" + Number(this.rotate) + \"deg)\"\n      };\n    },\n    viewBoxSize: function viewBoxSize() {\n      return this.radius / (1 - Number(this.width) / +this.size);\n    }\n  },\n  methods: {\n    genCircle: function genCircle(name, offset) {\n      return this.$createElement('circle', {\n        class: \"v-progress-circular__\" + name,\n        attrs: {\n          fill: 'transparent',\n          cx: 2 * this.viewBoxSize,\n          cy: 2 * this.viewBoxSize,\n          r: this.radius,\n          'stroke-width': this.strokeWidth,\n          'stroke-dasharray': this.strokeDashArray,\n          'stroke-dashoffset': offset\n        }\n      });\n    },\n    genSvg: function genSvg() {\n      var children = [this.indeterminate || this.genCircle('underlay', 0), this.genCircle('overlay', this.strokeDashOffset)];\n      return this.$createElement('svg', {\n        style: this.svgStyles,\n        attrs: {\n          xmlns: 'http://www.w3.org/2000/svg',\n          viewBox: this.viewBoxSize + \" \" + this.viewBoxSize + \" \" + 2 * this.viewBoxSize + \" \" + 2 * this.viewBoxSize\n        }\n      }, children);\n    },\n    genInfo: function genInfo() {\n      return this.$createElement('div', {\n        staticClass: 'v-progress-circular__info'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n    },\n    onObserve: function onObserve(entries, observer, isIntersecting) {\n      this.isVisible = isIntersecting;\n    }\n  },\n  render: function render(h) {\n    return h('div', this.setTextColor(this.color, {\n      staticClass: 'v-progress-circular',\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': 100,\n        'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue\n      },\n      class: this.classes,\n      directives: [{\n        name: 'intersect',\n        value: this.onObserve\n      }],\n      style: this.styles,\n      on: this.$listeners\n    }), [this.genSvg(), this.genInfo()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VProgressCircular/index.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VProgressCircular/index.ts ***!\n  \\***************************************************/\n/*! exports provided: VProgressCircular, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VProgressCircular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VProgressCircular */ \"./src/components/VProgressCircular/VProgressCircular.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressCircular\", function() { return _VProgressCircular__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VProgressCircular__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VProgressLinear/VProgressLinear.sass\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VProgressLinear/VProgressLinear.sass ***!\n  \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VProgressLinear/VProgressLinear.ts\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VProgressLinear/VProgressLinear.ts ***!\n  \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VProgressLinear_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VProgressLinear.sass */ \"./src/components/VProgressLinear/VProgressLinear.sass\");\n/* harmony import */ var _VProgressLinear_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VProgressLinear_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _directives_intersect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/intersect */ \"./src/directives/intersect/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/proxyable */ \"./src/mixins/proxyable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Components\n\n // Directives\n\n // Mixins\n\n\n\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object(_mixins_positionable__WEBPACK_IMPORTED_MODULE_4__[\"factory\"])(['absolute', 'fixed', 'top', 'bottom']), _mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-progress-linear',\n  directives: {\n    intersect: _directives_intersect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  props: {\n    active: {\n      type: Boolean,\n      default: true\n    },\n    backgroundColor: {\n      type: String,\n      default: null\n    },\n    backgroundOpacity: {\n      type: [Number, String],\n      default: null\n    },\n    bufferValue: {\n      type: [Number, String],\n      default: 100\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    height: {\n      type: [Number, String],\n      default: 4\n    },\n    indeterminate: Boolean,\n    query: Boolean,\n    reverse: Boolean,\n    rounded: Boolean,\n    stream: Boolean,\n    striped: Boolean,\n    value: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n  data: function data() {\n    return {\n      internalLazyValue: this.value || 0,\n      isVisible: true\n    };\n  },\n  computed: {\n    __cachedBackground: function __cachedBackground() {\n      return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n        staticClass: 'v-progress-linear__background',\n        style: this.backgroundStyle\n      }));\n    },\n    __cachedBar: function __cachedBar() {\n      return this.$createElement(this.computedTransition, [this.__cachedBarType]);\n    },\n    __cachedBarType: function __cachedBarType() {\n      return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate;\n    },\n    __cachedBuffer: function __cachedBuffer() {\n      return this.$createElement('div', {\n        staticClass: 'v-progress-linear__buffer',\n        style: this.styles\n      });\n    },\n    __cachedDeterminate: function __cachedDeterminate() {\n      return this.$createElement('div', this.setBackgroundColor(this.color, {\n        staticClass: \"v-progress-linear__determinate\",\n        style: {\n          width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.normalizedValue, '%')\n        }\n      }));\n    },\n    __cachedIndeterminate: function __cachedIndeterminate() {\n      return this.$createElement('div', {\n        staticClass: 'v-progress-linear__indeterminate',\n        class: {\n          'v-progress-linear__indeterminate--active': this.active\n        }\n      }, [this.genProgressBar('long'), this.genProgressBar('short')]);\n    },\n    __cachedStream: function __cachedStream() {\n      if (!this.stream) return null;\n      return this.$createElement('div', this.setTextColor(this.color, {\n        staticClass: 'v-progress-linear__stream',\n        style: {\n          width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(100 - this.normalizedBuffer, '%')\n        }\n      }));\n    },\n    backgroundStyle: function backgroundStyle() {\n      var _a;\n\n      var backgroundOpacity = this.backgroundOpacity == null ? this.backgroundColor ? 1 : 0.3 : parseFloat(this.backgroundOpacity);\n      return _a = {\n        opacity: backgroundOpacity\n      }, _a[this.isReversed ? 'right' : 'left'] = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.normalizedValue, '%'), _a.width = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'), _a;\n    },\n    classes: function classes() {\n      return __assign({\n        'v-progress-linear--absolute': this.absolute,\n        'v-progress-linear--fixed': this.fixed,\n        'v-progress-linear--query': this.query,\n        'v-progress-linear--reactive': this.reactive,\n        'v-progress-linear--reverse': this.isReversed,\n        'v-progress-linear--rounded': this.rounded,\n        'v-progress-linear--striped': this.striped,\n        'v-progress-linear--visible': this.isVisible\n      }, this.themeClasses);\n    },\n    computedTransition: function computedTransition() {\n      return this.indeterminate ? _transitions__WEBPACK_IMPORTED_MODULE_1__[\"VFadeTransition\"] : _transitions__WEBPACK_IMPORTED_MODULE_1__[\"VSlideXTransition\"];\n    },\n    isReversed: function isReversed() {\n      return this.$vuetify.rtl !== this.reverse;\n    },\n    normalizedBuffer: function normalizedBuffer() {\n      return this.normalize(this.bufferValue);\n    },\n    normalizedValue: function normalizedValue() {\n      return this.normalize(this.internalLazyValue);\n    },\n    reactive: function reactive() {\n      return Boolean(this.$listeners.change);\n    },\n    styles: function styles() {\n      var styles = {};\n\n      if (!this.active) {\n        styles.height = 0;\n      }\n\n      if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n        styles.width = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.normalizedBuffer, '%');\n      }\n\n      return styles;\n    }\n  },\n  methods: {\n    genContent: function genContent() {\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlot\"])(this, 'default', {\n        value: this.internalLazyValue\n      });\n      if (!slot) return null;\n      return this.$createElement('div', {\n        staticClass: 'v-progress-linear__content'\n      }, slot);\n    },\n    genListeners: function genListeners() {\n      var listeners = this.$listeners;\n\n      if (this.reactive) {\n        listeners.click = this.onClick;\n      }\n\n      return listeners;\n    },\n    genProgressBar: function genProgressBar(name) {\n      var _a;\n\n      return this.$createElement('div', this.setBackgroundColor(this.color, {\n        staticClass: 'v-progress-linear__indeterminate',\n        class: (_a = {}, _a[name] = true, _a)\n      }));\n    },\n    onClick: function onClick(e) {\n      if (!this.reactive) return;\n      var width = this.$el.getBoundingClientRect().width;\n      this.internalValue = e.offsetX / width * 100;\n    },\n    onObserve: function onObserve(entries, observer, isIntersecting) {\n      this.isVisible = isIntersecting;\n    },\n    normalize: function normalize(value) {\n      if (value < 0) return 0;\n      if (value > 100) return 100;\n      return parseFloat(value);\n    }\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-progress-linear',\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': this.normalizedBuffer,\n        'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue\n      },\n      class: this.classes,\n      directives: [{\n        name: 'intersect',\n        value: this.onObserve\n      }],\n      style: {\n        bottom: this.bottom ? 0 : undefined,\n        height: this.active ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.height) : 0,\n        top: this.top ? 0 : undefined\n      },\n      on: this.genListeners()\n    };\n    return h('div', data, [this.__cachedStream, this.__cachedBackground, this.__cachedBuffer, this.__cachedBar, this.genContent()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VProgressLinear/index.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VProgressLinear/index.ts ***!\n  \\*************************************************/\n/*! exports provided: VProgressLinear, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VProgressLinear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VProgressLinear */ \"./src/components/VProgressLinear/VProgressLinear.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressLinear\", function() { return _VProgressLinear__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VProgressLinear__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/VRadio.sass\":\n/*!************************************************!*\\\n  !*** ./src/components/VRadioGroup/VRadio.sass ***!\n  \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/VRadio.ts\":\n/*!**********************************************!*\\\n  !*** ./src/components/VRadioGroup/VRadio.ts ***!\n  \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRadio_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRadio.sass */ \"./src/components/VRadioGroup/VRadio.sass\");\n/* harmony import */ var _VRadio_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VRadio_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/binds-attrs */ \"./src/mixins/binds-attrs/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _mixins_rippleable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/rippleable */ \"./src/mixins/rippleable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_selectable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../mixins/selectable */ \"./src/mixins/selectable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}; // Styles\n\n\n\n\n\n // Mixins\n\n\n\n\n\n\n // Utilities\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_rippleable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_6__[\"factory\"])('radioGroup'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-radio',\n  inheritAttrs: false,\n  props: {\n    disabled: {\n      type: Boolean,\n      default: null\n    },\n    id: String,\n    label: String,\n    name: String,\n    offIcon: {\n      type: String,\n      default: '$radioOff'\n    },\n    onIcon: {\n      type: String,\n      default: '$radioOn'\n    },\n    readonly: {\n      type: Boolean,\n      default: null\n    },\n    value: {\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      isFocused: false\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({\n        'v-radio--is-disabled': this.isDisabled,\n        'v-radio--is-focused': this.isFocused\n      }, this.themeClasses), this.groupClasses);\n    },\n    computedColor: function computedColor() {\n      if (this.isDisabled) return undefined;\n      return _mixins_selectable__WEBPACK_IMPORTED_MODULE_9__[\"default\"].options.computed.computedColor.call(this);\n    },\n    computedIcon: function computedIcon() {\n      return this.isActive ? this.onIcon : this.offIcon;\n    },\n    computedId: function computedId() {\n      return _VInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.computedId.call(this);\n    },\n    hasLabel: _VInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.hasLabel,\n    hasState: function hasState() {\n      return (this.radioGroup || {}).hasState;\n    },\n    isDisabled: function isDisabled() {\n      var _a;\n\n      return (_a = this.disabled) !== null && _a !== void 0 ? _a : !!this.radioGroup && this.radioGroup.isDisabled;\n    },\n    isReadonly: function isReadonly() {\n      var _a;\n\n      return (_a = this.readonly) !== null && _a !== void 0 ? _a : !!this.radioGroup && this.radioGroup.isReadonly;\n    },\n    computedName: function computedName() {\n      if (this.name || !this.radioGroup) {\n        return this.name;\n      }\n\n      return this.radioGroup.name || \"radio-\" + this.radioGroup._uid;\n    },\n    rippleState: function rippleState() {\n      return _mixins_selectable__WEBPACK_IMPORTED_MODULE_9__[\"default\"].options.computed.rippleState.call(this);\n    },\n    validationState: function validationState() {\n      return (this.radioGroup || {}).validationState || this.computedColor;\n    }\n  },\n  methods: {\n    genInput: function genInput(args) {\n      // We can't actually use the mixin directly because\n      // it's made for standalone components, but its\n      // genInput method is exactly what we need\n      return _mixins_selectable__WEBPACK_IMPORTED_MODULE_9__[\"default\"].options.methods.genInput.call(this, 'radio', args);\n    },\n    genLabel: function genLabel() {\n      if (!this.hasLabel) return null;\n      return this.$createElement(_VLabel__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        on: {\n          // Label shouldn't cause the input to focus\n          click: _mixins_selectable__WEBPACK_IMPORTED_MODULE_9__[\"prevent\"]\n        },\n        attrs: {\n          for: this.computedId\n        },\n        props: {\n          color: this.validationState,\n          focused: this.hasState\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_10__[\"getSlot\"])(this, 'label') || this.label);\n    },\n    genRadio: function genRadio() {\n      var _a = this.attrs$,\n          title = _a.title,\n          radioAttrs = __rest(_a, [\"title\"]);\n\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], this.setTextColor(this.validationState, {\n        props: {\n          dense: this.radioGroup && this.radioGroup.dense\n        }\n      }), this.computedIcon), this.genInput(__assign({\n        name: this.computedName,\n        value: this.value\n      }, radioAttrs)), this.genRipple(this.setTextColor(this.rippleState))]);\n    },\n    onFocus: function onFocus(e) {\n      this.isFocused = true;\n      this.$emit('focus', e);\n    },\n    onBlur: function onBlur(e) {\n      this.isFocused = false;\n      this.$emit('blur', e);\n    },\n    onChange: function onChange() {\n      if (this.isDisabled || this.isReadonly || this.isActive) return;\n      this.toggle();\n    },\n    onKeydown: function onKeydown() {} // Override default with noop\n\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-radio',\n      class: this.classes,\n      on: Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_12__[\"mergeListeners\"])({\n        click: this.onChange\n      }, this.listeners$),\n      attrs: {\n        title: this.attrs$.title\n      }\n    };\n    return h('div', data, [this.genRadio(), this.genLabel()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/VRadioGroup.sass\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VRadioGroup/VRadioGroup.sass ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/VRadioGroup.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VRadioGroup/VRadioGroup.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../styles/components/_selection-controls.sass */ \"./src/styles/components/_selection-controls.sass\");\n/* harmony import */ var _styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VRadioGroup_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VRadioGroup.sass */ \"./src/components/VRadioGroup/VRadioGroup.sass\");\n/* harmony import */ var _VRadioGroup_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_VRadioGroup_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n\n // Extensions\n\n\n // Types\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__[\"BaseItemGroup\"], _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-radio-group',\n  provide: function provide() {\n    return {\n      radioGroup: this\n    };\n  },\n  props: {\n    column: {\n      type: Boolean,\n      default: true\n    },\n    height: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    name: String,\n    row: Boolean,\n    // If no value set on VRadio\n    // will match valueComparator\n    // force default to null\n    value: null\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.classes.call(this)), {\n        'v-input--selection-controls v-input--radio-group': true,\n        'v-input--radio-group--column': this.column && !this.row,\n        'v-input--radio-group--row': this.row\n      });\n    }\n  },\n  methods: {\n    genDefaultSlot: function genDefaultSlot() {\n      return this.$createElement('div', {\n        staticClass: 'v-input--radio-group__input',\n        attrs: {\n          id: this.id,\n          role: 'radiogroup',\n          'aria-labelledby': this.computedId\n        }\n      }, _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genDefaultSlot.call(this));\n    },\n    genInputSlot: function genInputSlot() {\n      var render = _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genInputSlot.call(this);\n      delete render.data.on.click;\n      return render;\n    },\n    genLabel: function genLabel() {\n      var label = _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genLabel.call(this);\n      if (!label) return null;\n      label.data.attrs.id = this.computedId; // WAI considers this an orphaned label\n\n      delete label.data.attrs.for;\n      label.tag = 'legend';\n      return label;\n    },\n    onClick: _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__[\"BaseItemGroup\"].options.methods.onClick\n  },\n  render: function render(h) {\n    var vnode = _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.render.call(this, h);\n\n    this._b(vnode.data, 'div', this.attrs$);\n\n    return vnode;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VRadioGroup/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VRadioGroup, VRadio, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRadioGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRadioGroup */ \"./src/components/VRadioGroup/VRadioGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadioGroup\", function() { return _VRadioGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VRadio__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VRadio */ \"./src/components/VRadioGroup/VRadio.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadio\", function() { return _VRadio__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VRadioGroup: _VRadioGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VRadio: _VRadio__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VRangeSlider/VRangeSlider.sass\":\n/*!*******************************************************!*\\\n  !*** ./src/components/VRangeSlider/VRangeSlider.sass ***!\n  \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VRangeSlider/VRangeSlider.ts\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VRangeSlider/VRangeSlider.ts ***!\n  \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRangeSlider_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRangeSlider.sass */ \"./src/components/VRangeSlider/VRangeSlider.sass\");\n/* harmony import */ var _VRangeSlider_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VRangeSlider_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSlider */ \"./src/components/VSlider/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Components\n\n // Helpers\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-range-slider',\n  props: {\n    value: {\n      type: Array,\n      default: function _default() {\n        return [0, 0];\n      }\n    }\n  },\n  data: function data() {\n    return {\n      activeThumb: null,\n      lazyValue: this.value\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-input--range-slider': true\n      });\n    },\n    internalValue: {\n      get: function get() {\n        return this.lazyValue;\n      },\n      set: function set(val) {\n        var _this = this; // Round value to ensure the\n        // entire slider range can\n        // be selected with step\n\n\n        var value = val.map(function (v) {\n          if (v === void 0) {\n            v = 0;\n          }\n\n          return _this.roundValue(Math.min(Math.max(v, _this.minValue), _this.maxValue));\n        }); // Switch values if range and wrong order\n\n        if (value[0] > value[1] || value[1] < value[0]) {\n          if (this.activeThumb !== null) {\n            var toFocus = this.activeThumb === 1 ? 0 : 1;\n            var el = this.$refs[\"thumb_\" + toFocus];\n            el.focus();\n          }\n\n          value = [value[1], value[0]];\n        }\n\n        this.lazyValue = value;\n        if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"deepEqual\"])(value, this.value)) this.$emit('input', value);\n        this.validate();\n      }\n    },\n    inputWidth: function inputWidth() {\n      var _this = this;\n\n      return this.internalValue.map(function (v) {\n        return (_this.roundValue(v) - _this.minValue) / (_this.maxValue - _this.minValue) * 100;\n      });\n    }\n  },\n  methods: {\n    getTrackStyle: function getTrackStyle(startLength, endLength, startPadding, endPadding) {\n      var _a;\n\n      if (startPadding === void 0) {\n        startPadding = 0;\n      }\n\n      if (endPadding === void 0) {\n        endPadding = 0;\n      }\n\n      var startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left';\n      var endDir = this.vertical ? 'height' : 'width';\n      var start = \"calc(\" + startLength + \"% + \" + startPadding + \"px)\";\n      var end = \"calc(\" + endLength + \"% + \" + endPadding + \"px)\";\n      return _a = {\n        transition: this.trackTransition\n      }, _a[startDir] = start, _a[endDir] = end, _a;\n    },\n    getIndexOfClosestValue: function getIndexOfClosestValue(arr, v) {\n      if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0;else return 1;\n    },\n    genInput: function genInput() {\n      var _this = this;\n\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createRange\"])(2).map(function (i) {\n        var input = _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInput.call(_this);\n        input.data = input.data || {};\n        input.data.attrs = input.data.attrs || {};\n        input.data.attrs.value = _this.internalValue[i];\n        input.data.attrs.id = \"input-\" + (i ? 'max' : 'min') + \"-\" + _this._uid;\n        return input;\n      });\n    },\n    genTrackContainer: function genTrackContainer() {\n      var _this = this;\n\n      var children = [];\n      var padding = this.isDisabled ? 10 : 0;\n      var sections = [{\n        class: 'v-slider__track-background',\n        color: this.computedTrackColor,\n        styles: [0, this.inputWidth[0], 0, -padding]\n      }, {\n        class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n        color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n        styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2]\n      }, {\n        class: 'v-slider__track-background',\n        color: this.computedTrackColor,\n        styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding]\n      }];\n      if (this.$vuetify.rtl) sections.reverse();\n      children.push.apply(children, __spreadArray([], __read(sections.map(function (section) {\n        return _this.$createElement('div', _this.setBackgroundColor(section.color, {\n          staticClass: section.class,\n          style: _this.getTrackStyle.apply(_this, __spreadArray([], __read(section.styles), false))\n        }));\n      })), false));\n      return this.$createElement('div', {\n        staticClass: 'v-slider__track-container',\n        ref: 'track'\n      }, children);\n    },\n    genChildren: function genChildren() {\n      var _this = this;\n\n      return [this.genInput(), this.genTrackContainer(), this.genSteps(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createRange\"])(2).map(function (index) {\n        var value = _this.internalValue[index];\n\n        var onFocus = function onFocus(e) {\n          _this.isFocused = true;\n          _this.activeThumb = index;\n\n          _this.$emit('focus', e);\n        };\n\n        var onBlur = function onBlur(e) {\n          _this.isFocused = false;\n          _this.activeThumb = null;\n\n          _this.$emit('blur', e);\n        };\n\n        var valueWidth = _this.inputWidth[index];\n        var isActive = _this.isActive && _this.activeThumb === index;\n        var isFocused = _this.isFocused && _this.activeThumb === index;\n        return _this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, \"thumb_\" + index);\n      })];\n    },\n    reevaluateSelected: function reevaluateSelected(value) {\n      this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n      var refName = \"thumb_\" + this.activeThumb;\n      var thumbRef = this.$refs[refName];\n      thumbRef.focus();\n    },\n    onSliderMouseDown: function onSliderMouseDown(e) {\n      var _this = this;\n\n      var _a;\n\n      var value = this.parseMouseMove(e);\n      this.reevaluateSelected(value);\n      this.oldValue = this.internalValue;\n      this.isActive = true;\n\n      if ((_a = e.target) === null || _a === void 0 ? void 0 : _a.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n        this.thumbPressed = true;\n        var domRect = e.target.getBoundingClientRect();\n        var touch = 'touches' in e ? e.touches[0] : e;\n        this.startOffset = this.vertical ? touch.clientY - (domRect.top + domRect.height / 2) : touch.clientX - (domRect.left + domRect.width / 2);\n      } else {\n        this.startOffset = 0;\n        window.clearTimeout(this.mouseTimeout);\n        this.mouseTimeout = window.setTimeout(function () {\n          _this.thumbPressed = true;\n        }, 300);\n      }\n\n      var mouseUpOptions = _util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"passiveSupported\"] ? {\n        passive: true,\n        capture: true\n      } : true;\n      var mouseMoveOptions = _util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"passiveSupported\"] ? {\n        passive: true\n      } : false;\n      var isTouchEvent = ('touches' in e);\n      this.onMouseMove(e);\n      this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions);\n      Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"addOnceEventListener\"])(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions);\n      this.$emit('start', this.internalValue);\n    },\n    onSliderClick: function onSliderClick(e) {\n      if (!this.isActive) {\n        if (this.noClick) {\n          this.noClick = false;\n          return;\n        }\n\n        var value = this.parseMouseMove(e);\n        this.reevaluateSelected(value);\n        this.setInternalValue(value);\n        this.$emit('change', this.internalValue);\n      }\n    },\n    onMouseMove: function onMouseMove(e) {\n      var value = this.parseMouseMove(e);\n\n      if (e.type === 'mousemove') {\n        this.thumbPressed = true;\n      }\n\n      if (this.activeThumb === null) {\n        this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n      }\n\n      this.setInternalValue(value);\n    },\n    onKeyDown: function onKeyDown(e) {\n      if (this.activeThumb === null) return;\n      var value = this.parseKeyDown(e, this.internalValue[this.activeThumb]);\n      if (value == null) return;\n      this.setInternalValue(value);\n      this.$emit('change', this.internalValue);\n    },\n    setInternalValue: function setInternalValue(value) {\n      var _this = this;\n\n      this.internalValue = this.internalValue.map(function (v, i) {\n        if (i === _this.activeThumb) return value;else return Number(v);\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VRangeSlider/index.ts\":\n/*!**********************************************!*\\\n  !*** ./src/components/VRangeSlider/index.ts ***!\n  \\**********************************************/\n/*! exports provided: VRangeSlider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRangeSlider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRangeSlider */ \"./src/components/VRangeSlider/VRangeSlider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRangeSlider\", function() { return _VRangeSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VRangeSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VRating/VRating.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VRating/VRating.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VRating/VRating.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VRating/VRating.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRating_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRating.sass */ \"./src/components/VRating/VRating.sass\");\n/* harmony import */ var _VRating_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VRating_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable/index.ts\");\n/* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/sizeable */ \"./src/mixins/sizeable/index.ts\");\n/* harmony import */ var _mixins_rippleable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/rippleable */ \"./src/mixins/rippleable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Styles\n // Components\n\n // Mixins\n\n\n\n\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_rippleable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-rating',\n  props: {\n    backgroundColor: {\n      type: String,\n      default: 'accent'\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    clearable: Boolean,\n    dense: Boolean,\n    emptyIcon: {\n      type: String,\n      default: '$ratingEmpty'\n    },\n    fullIcon: {\n      type: String,\n      default: '$ratingFull'\n    },\n    halfIcon: {\n      type: String,\n      default: '$ratingHalf'\n    },\n    halfIncrements: Boolean,\n    hover: Boolean,\n    length: {\n      type: [Number, String],\n      default: 5\n    },\n    readonly: Boolean,\n    size: [Number, String],\n    value: {\n      type: Number,\n      default: 0\n    },\n    iconLabel: {\n      type: String,\n      default: '$vuetify.rating.ariaLabel.icon'\n    }\n  },\n  data: function data() {\n    return {\n      hoverIndex: -1,\n      internalValue: this.value\n    };\n  },\n  computed: {\n    directives: function directives() {\n      if (this.readonly || !this.ripple) return [];\n      return [{\n        name: 'ripple',\n        value: {\n          circle: true\n        }\n      }];\n    },\n    iconProps: function iconProps() {\n      var _a = this.$props,\n          dark = _a.dark,\n          large = _a.large,\n          light = _a.light,\n          medium = _a.medium,\n          small = _a.small,\n          size = _a.size,\n          xLarge = _a.xLarge,\n          xSmall = _a.xSmall;\n      return {\n        dark: dark,\n        large: large,\n        light: light,\n        medium: medium,\n        size: size,\n        small: small,\n        xLarge: xLarge,\n        xSmall: xSmall\n      };\n    },\n    isHovering: function isHovering() {\n      return this.hover && this.hoverIndex >= 0;\n    }\n  },\n  watch: {\n    internalValue: function internalValue(val) {\n      val !== this.value && this.$emit('input', val);\n    },\n    value: function value(val) {\n      this.internalValue = val;\n    }\n  },\n  methods: {\n    createClickFn: function createClickFn(i) {\n      var _this = this;\n\n      return function (e) {\n        if (_this.readonly) return;\n\n        var newValue = _this.genHoverIndex(e, i);\n\n        if (_this.clearable && _this.internalValue === newValue) {\n          _this.internalValue = 0;\n        } else {\n          _this.internalValue = newValue;\n        }\n      };\n    },\n    createProps: function createProps(i) {\n      var props = {\n        index: i,\n        value: this.internalValue,\n        click: this.createClickFn(i),\n        isFilled: Math.floor(this.internalValue) > i,\n        isHovered: Math.floor(this.hoverIndex) > i\n      };\n\n      if (this.halfIncrements) {\n        props.isHalfHovered = !props.isHovered && (this.hoverIndex - i) % 1 > 0;\n        props.isHalfFilled = !props.isFilled && (this.internalValue - i) % 1 > 0;\n      }\n\n      return props;\n    },\n    genHoverIndex: function genHoverIndex(e, i) {\n      var isHalf = this.isHalfEvent(e);\n\n      if (this.halfIncrements && this.$vuetify.rtl) {\n        isHalf = !isHalf;\n      }\n\n      return i + (isHalf ? 0.5 : 1);\n    },\n    getIconName: function getIconName(props) {\n      var isFull = this.isHovering ? props.isHovered : props.isFilled;\n      var isHalf = this.isHovering ? props.isHalfHovered : props.isHalfFilled;\n      return isFull ? this.fullIcon : isHalf ? this.halfIcon : this.emptyIcon;\n    },\n    getColor: function getColor(props) {\n      if (this.isHovering) {\n        if (props.isHovered || props.isHalfHovered) return this.color;\n      } else {\n        if (props.isFilled || props.isHalfFilled) return this.color;\n      }\n\n      return this.backgroundColor;\n    },\n    isHalfEvent: function isHalfEvent(e) {\n      if (this.halfIncrements) {\n        var rect = e.target && e.target.getBoundingClientRect();\n        if (rect && e.pageX - rect.left < rect.width / 2) return true;\n      }\n\n      return false;\n    },\n    onMouseEnter: function onMouseEnter(e, i) {\n      var _this = this;\n\n      this.runDelay('open', function () {\n        _this.hoverIndex = _this.genHoverIndex(e, i);\n      });\n    },\n    onMouseLeave: function onMouseLeave() {\n      var _this = this;\n\n      this.runDelay('close', function () {\n        return _this.hoverIndex = -1;\n      });\n    },\n    genItem: function genItem(i) {\n      var _this = this;\n\n      var props = this.createProps(i);\n      if (this.$scopedSlots.item) return this.$scopedSlots.item(props);\n      var listeners = {\n        click: props.click\n      };\n\n      if (this.hover) {\n        listeners.mouseenter = function (e) {\n          return _this.onMouseEnter(e, i);\n        };\n\n        listeners.mouseleave = this.onMouseLeave;\n\n        if (this.halfIncrements) {\n          listeners.mousemove = function (e) {\n            return _this.onMouseEnter(e, i);\n          };\n        }\n      }\n\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.setTextColor(this.getColor(props), {\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.iconLabel, i + 1, Number(this.length))\n        },\n        directives: this.directives,\n        props: this.iconProps,\n        on: listeners\n      }), [this.getIconName(props)]);\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"createRange\"])(Number(this.length)).map(function (i) {\n      return _this.genItem(i);\n    });\n    return h('div', {\n      staticClass: 'v-rating',\n      class: {\n        'v-rating--readonly': this.readonly,\n        'v-rating--dense': this.dense\n      }\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VRating/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VRating/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VRating, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRating__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRating */ \"./src/components/VRating/VRating.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRating\", function() { return _VRating__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VRating__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VResponsive/VResponsive.sass\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VResponsive/VResponsive.sass ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VResponsive/VResponsive.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VResponsive/VResponsive.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VResponsive_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VResponsive.sass */ \"./src/components/VResponsive/VResponsive.sass\");\n/* harmony import */ var _VResponsive_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VResponsive_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n // Mixins\n\n // Utils\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_measurable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n  name: 'v-responsive',\n  props: {\n    aspectRatio: [String, Number],\n    contentClass: String\n  },\n  computed: {\n    computedAspectRatio: function computedAspectRatio() {\n      return Number(this.aspectRatio);\n    },\n    aspectStyle: function aspectStyle() {\n      return this.computedAspectRatio ? {\n        paddingBottom: 1 / this.computedAspectRatio * 100 + '%'\n      } : undefined;\n    },\n    __cachedSizer: function __cachedSizer() {\n      if (!this.aspectStyle) return [];\n      return this.$createElement('div', {\n        style: this.aspectStyle,\n        staticClass: 'v-responsive__sizer'\n      });\n    }\n  },\n  methods: {\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-responsive__content',\n        class: this.contentClass\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-responsive',\n      style: this.measurableStyles,\n      on: this.$listeners\n    }, [this.__cachedSizer, this.genContent()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VResponsive/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VResponsive/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VResponsive, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VResponsive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VResponsive */ \"./src/components/VResponsive/VResponsive.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VResponsive\", function() { return _VResponsive__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VResponsive__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/VSelect.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VSelect/VSelect.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/VSelect.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VSelect/VSelect.ts ***!\n  \\*******************************************/\n/*! exports provided: defaultMenuProps, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultMenuProps\", function() { return defaultMenuProps; });\n/* harmony import */ var _VTextField_VTextField_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VTextField/VTextField.sass */ \"./src/components/VTextField/VTextField.sass\");\n/* harmony import */ var _VTextField_VTextField_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTextField_VTextField_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VSelect.sass */ \"./src/components/VSelect/VSelect.sass\");\n/* harmony import */ var _VSelect_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_VSelect_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VChip */ \"./src/components/VChip/index.ts\");\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VMenu */ \"./src/components/VMenu/index.ts\");\n/* harmony import */ var _VSelectList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VSelectList */ \"./src/components/VSelect/VSelectList.ts\");\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.ts\");\n/* harmony import */ var _mixins_comparable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/comparable */ \"./src/mixins/comparable/index.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent/index.ts\");\n/* harmony import */ var _mixins_filterable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../mixins/filterable */ \"./src/mixins/filterable/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}; // Styles\n\n\n\n // Components\n\n\n\n // Extensions\n\n\n // Mixins\n\n\n\n // Directives\n\n // Utilities\n\n\n\n // Types\n\n\nvar defaultMenuProps = {\n  closeOnClick: false,\n  closeOnContentClick: false,\n  disableKeys: true,\n  openOnClick: false,\n  maxHeight: 304\n}; // Types\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_comparable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_dependent__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _mixins_filterable__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-select',\n  directives: {\n    ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  props: {\n    appendIcon: {\n      type: String,\n      default: '$dropdown'\n    },\n    attach: {\n      type: null,\n      default: false\n    },\n    cacheItems: Boolean,\n    chips: Boolean,\n    clearable: Boolean,\n    deletableChips: Boolean,\n    disableLookup: Boolean,\n    eager: Boolean,\n    hideSelected: Boolean,\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    itemColor: {\n      type: String,\n      default: 'primary'\n    },\n    itemDisabled: {\n      type: [String, Array, Function],\n      default: 'disabled'\n    },\n    itemText: {\n      type: [String, Array, Function],\n      default: 'text'\n    },\n    itemValue: {\n      type: [String, Array, Function],\n      default: 'value'\n    },\n    menuProps: {\n      type: [String, Array, Object],\n      default: function _default() {\n        return defaultMenuProps;\n      }\n    },\n    multiple: Boolean,\n    openOnClear: Boolean,\n    returnObject: Boolean,\n    smallChips: Boolean\n  },\n  data: function data() {\n    return {\n      cachedItems: this.cacheItems ? this.items : [],\n      menuIsBooted: false,\n      isMenuActive: false,\n      lastItem: 20,\n      // As long as a value is defined, show it\n      // Otherwise, check if multiple\n      // to determine which default to provide\n      lazyValue: this.value !== undefined ? this.value : this.multiple ? [] : undefined,\n      selectedIndex: -1,\n      selectedItems: [],\n      keyboardLookupPrefix: '',\n      keyboardLookupLastTime: 0\n    };\n  },\n  computed: {\n    /* All items that the select has */\n    allItems: function allItems() {\n      return this.filterDuplicates(this.cachedItems.concat(this.items));\n    },\n    classes: function classes() {\n      return __assign(__assign({}, _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.computed.classes.call(this)), {\n        'v-select': true,\n        'v-select--chips': this.hasChips,\n        'v-select--chips--small': this.smallChips,\n        'v-select--is-menu-active': this.isMenuActive,\n        'v-select--is-multi': this.multiple\n      });\n    },\n\n    /* Used by other components to overwrite */\n    computedItems: function computedItems() {\n      return this.allItems;\n    },\n    computedOwns: function computedOwns() {\n      return \"list-\" + this._uid;\n    },\n    computedCounterValue: function computedCounterValue() {\n      var _a;\n\n      var value = this.multiple ? this.selectedItems : ((_a = this.getText(this.selectedItems[0])) !== null && _a !== void 0 ? _a : '').toString();\n\n      if (typeof this.counterValue === 'function') {\n        return this.counterValue(value);\n      }\n\n      return value.length;\n    },\n    directives: function directives() {\n      var _this = this;\n\n      return this.isFocused ? [{\n        name: 'click-outside',\n        value: {\n          handler: this.blur,\n          closeConditional: this.closeConditional,\n          include: function include() {\n            return _this.getOpenDependentElements();\n          }\n        }\n      }] : undefined;\n    },\n    dynamicHeight: function dynamicHeight() {\n      return 'auto';\n    },\n    hasChips: function hasChips() {\n      return this.chips || this.smallChips;\n    },\n    hasSlot: function hasSlot() {\n      return Boolean(this.hasChips || this.$scopedSlots.selection);\n    },\n    isDirty: function isDirty() {\n      return this.selectedItems.length > 0;\n    },\n    listData: function listData() {\n      var _a;\n\n      var scopeId = this.$vnode && this.$vnode.context.$options._scopeId;\n      var attrs = scopeId ? (_a = {}, _a[scopeId] = true, _a) : {};\n      return {\n        attrs: __assign(__assign({}, attrs), {\n          id: this.computedOwns\n        }),\n        props: {\n          action: this.multiple,\n          color: this.itemColor,\n          dense: this.dense,\n          hideSelected: this.hideSelected,\n          items: this.virtualizedItems,\n          itemDisabled: this.itemDisabled,\n          itemText: this.itemText,\n          itemValue: this.itemValue,\n          noDataText: this.$vuetify.lang.t(this.noDataText),\n          selectedItems: this.selectedItems\n        },\n        on: {\n          select: this.selectItem\n        },\n        scopedSlots: {\n          item: this.$scopedSlots.item\n        }\n      };\n    },\n    staticList: function staticList() {\n      if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_13__[\"consoleError\"])('assert: staticList should not be called if slots are used');\n      }\n\n      return this.$createElement(_VSelectList__WEBPACK_IMPORTED_MODULE_4__[\"default\"], this.listData);\n    },\n    virtualizedItems: function virtualizedItems() {\n      return this.$_menuProps.auto ? this.computedItems : this.computedItems.slice(0, this.lastItem);\n    },\n    menuCanShow: function menuCanShow() {\n      return true;\n    },\n    $_menuProps: function $_menuProps() {\n      var normalisedProps = typeof this.menuProps === 'string' ? this.menuProps.split(',') : this.menuProps;\n\n      if (Array.isArray(normalisedProps)) {\n        normalisedProps = normalisedProps.reduce(function (acc, p) {\n          acc[p.trim()] = true;\n          return acc;\n        }, {});\n      }\n\n      return __assign(__assign(__assign({}, defaultMenuProps), {\n        eager: this.eager,\n        value: this.menuCanShow && this.isMenuActive,\n        nudgeBottom: normalisedProps.offsetY ? 1 : 0\n      }), normalisedProps);\n    }\n  },\n  watch: {\n    internalValue: function internalValue(val) {\n      var _this = this;\n\n      this.initialValue = val;\n      this.setSelectedItems();\n\n      if (this.multiple) {\n        this.$nextTick(function () {\n          var _a;\n\n          (_a = _this.$refs.menu) === null || _a === void 0 ? void 0 : _a.updateDimensions();\n        });\n      }\n\n      if (this.hideSelected) {\n        this.$nextTick(function () {\n          _this.onScroll();\n        });\n      }\n    },\n    isMenuActive: function isMenuActive(val) {\n      var _this = this;\n\n      window.setTimeout(function () {\n        return _this.onMenuActiveChange(val);\n      });\n    },\n    items: {\n      immediate: true,\n      handler: function handler(val) {\n        var _this = this;\n\n        if (this.cacheItems) {\n          // Breaks vue-test-utils if\n          // this isn't calculated\n          // on the next tick\n          this.$nextTick(function () {\n            _this.cachedItems = _this.filterDuplicates(_this.cachedItems.concat(val));\n          });\n        }\n\n        this.setSelectedItems();\n      }\n    }\n  },\n  methods: {\n    /** @public */\n    blur: function blur(e) {\n      _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.methods.blur.call(this, e);\n      this.isMenuActive = false;\n      this.isFocused = false;\n      this.selectedIndex = -1;\n      this.setMenuIndex(-1);\n    },\n\n    /** @public */\n    activateMenu: function activateMenu() {\n      if (!this.isInteractive || this.isMenuActive) return;\n      this.isMenuActive = true;\n    },\n    clearableCallback: function clearableCallback() {\n      var _this = this;\n\n      this.setValue(this.multiple ? [] : null);\n      this.setMenuIndex(-1);\n      this.$nextTick(function () {\n        return _this.$refs.input && _this.$refs.input.focus();\n      });\n      if (this.openOnClear) this.isMenuActive = true;\n    },\n    closeConditional: function closeConditional(e) {\n      if (!this.isMenuActive) return true;\n      return !this._isDestroyed && ( // Click originates from outside the menu content\n      // Multiple selects don't close when an item is clicked\n      !this.getContent() || !this.getContent().contains(e.target)) && // Click originates from outside the element\n      this.$el && !this.$el.contains(e.target) && e.target !== this.$el;\n    },\n    filterDuplicates: function filterDuplicates(arr) {\n      var uniqueValues = new Map();\n\n      for (var index = 0; index < arr.length; ++index) {\n        var item = arr[index]; // Do not return null values if existant (#14421)\n\n        if (item == null) {\n          continue;\n        } // Do not deduplicate headers or dividers (#12517)\n\n\n        if (item.header || item.divider) {\n          uniqueValues.set(item, item);\n          continue;\n        }\n\n        var val = this.getValue(item); // TODO: comparator\n\n        !uniqueValues.has(val) && uniqueValues.set(val, item);\n      }\n\n      return Array.from(uniqueValues.values());\n    },\n    findExistingIndex: function findExistingIndex(item) {\n      var _this = this;\n\n      var itemValue = this.getValue(item);\n      return (this.internalValue || []).findIndex(function (i) {\n        return _this.valueComparator(_this.getValue(i), itemValue);\n      });\n    },\n    getContent: function getContent() {\n      return this.$refs.menu && this.$refs.menu.$refs.content;\n    },\n    genChipSelection: function genChipSelection(item, index) {\n      var _this = this;\n\n      var isDisabled = this.isDisabled || this.getDisabled(item);\n      var isInteractive = !isDisabled && this.isInteractive;\n      return this.$createElement(_VChip__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        staticClass: 'v-chip--select',\n        attrs: {\n          tabindex: -1\n        },\n        props: {\n          close: this.deletableChips && isInteractive,\n          disabled: isDisabled,\n          inputValue: index === this.selectedIndex,\n          small: this.smallChips\n        },\n        on: {\n          click: function click(e) {\n            if (!isInteractive) return;\n            e.stopPropagation();\n            _this.selectedIndex = index;\n          },\n          'click:close': function clickClose() {\n            return _this.onChipInput(item);\n          }\n        },\n        key: JSON.stringify(this.getValue(item))\n      }, this.getText(item));\n    },\n    genCommaSelection: function genCommaSelection(item, index, last) {\n      var color = index === this.selectedIndex && this.computedColor;\n      var isDisabled = this.isDisabled || this.getDisabled(item);\n      return this.$createElement('div', this.setTextColor(color, {\n        staticClass: 'v-select__selection v-select__selection--comma',\n        class: {\n          'v-select__selection--disabled': isDisabled\n        },\n        key: JSON.stringify(this.getValue(item))\n      }), \"\" + this.getText(item) + (last ? '' : ', '));\n    },\n    genDefaultSlot: function genDefaultSlot() {\n      var selections = this.genSelections();\n      var input = this.genInput(); // If the return is an empty array\n      // push the input\n\n      if (Array.isArray(selections)) {\n        selections.push(input); // Otherwise push it into children\n      } else {\n        selections.children = selections.children || [];\n        selections.children.push(input);\n      }\n\n      return [this.genFieldset(), this.$createElement('div', {\n        staticClass: 'v-select__slot',\n        directives: this.directives\n      }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, selections, this.suffix ? this.genAffix('suffix') : null, this.genClearIcon(), this.genIconSlot(), this.genHiddenInput()]), this.genMenu(), this.genProgress()];\n    },\n    genIcon: function genIcon(type, cb, extraData) {\n      var icon = _VInput__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.methods.genIcon.call(this, type, cb, extraData);\n\n      if (type === 'append') {\n        // Don't allow the dropdown icon to be focused\n        icon.children[0].data = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(icon.children[0].data, {\n          attrs: {\n            tabindex: icon.children[0].componentOptions.listeners && '-1',\n            'aria-hidden': 'true',\n            'aria-label': undefined\n          }\n        });\n      }\n\n      return icon;\n    },\n    genInput: function genInput() {\n      var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.methods.genInput.call(this);\n      delete input.data.attrs.name;\n      input.data = Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(input.data, {\n        domProps: {\n          value: null\n        },\n        attrs: {\n          readonly: true,\n          type: 'text',\n          'aria-readonly': String(this.isReadonly),\n          'aria-activedescendant': Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getObjectValueByPath\"])(this.$refs.menu, 'activeTile.id'),\n          autocomplete: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getObjectValueByPath\"])(input.data, 'attrs.autocomplete', 'off'),\n          placeholder: !this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel) ? this.placeholder : undefined\n        },\n        on: {\n          keypress: this.onKeyPress\n        }\n      });\n      return input;\n    },\n    genHiddenInput: function genHiddenInput() {\n      return this.$createElement('input', {\n        domProps: {\n          value: this.lazyValue\n        },\n        attrs: {\n          type: 'hidden',\n          name: this.attrs$.name\n        }\n      });\n    },\n    genInputSlot: function genInputSlot() {\n      var render = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.methods.genInputSlot.call(this);\n      render.data.attrs = __assign(__assign({}, render.data.attrs), {\n        role: 'button',\n        'aria-haspopup': 'listbox',\n        'aria-expanded': String(this.isMenuActive),\n        'aria-owns': this.computedOwns\n      });\n      return render;\n    },\n    genList: function genList() {\n      // If there's no slots, we can use a cached VNode to improve performance\n      if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n        return this.genListWithSlot();\n      } else {\n        return this.staticList;\n      }\n    },\n    genListWithSlot: function genListWithSlot() {\n      var _this = this;\n\n      var slots = ['prepend-item', 'no-data', 'append-item'].filter(function (slotName) {\n        return _this.$slots[slotName];\n      }).map(function (slotName) {\n        return _this.$createElement('template', {\n          slot: slotName\n        }, _this.$slots[slotName]);\n      }); // Requires destructuring due to Vue\n      // modifying the `on` property when passed\n      // as a referenced object\n\n      return this.$createElement(_VSelectList__WEBPACK_IMPORTED_MODULE_4__[\"default\"], __assign({}, this.listData), slots);\n    },\n    genMenu: function genMenu() {\n      var _this = this;\n\n      var props = this.$_menuProps;\n      props.activator = this.$refs['input-slot'];\n      if ('attach' in props) void 0;else if ( // TODO: make this a computed property or helper or something\n      this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n      this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n      this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n      ) {\n        // Attach to root el so that\n        // menu covers prepend/append icons\n        props.attach = this.$el;\n      } else {\n        props.attach = this.attach;\n      }\n      return this.$createElement(_VMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        attrs: {\n          role: undefined\n        },\n        props: props,\n        on: {\n          input: function input(val) {\n            _this.isMenuActive = val;\n            _this.isFocused = val;\n          },\n          scroll: this.onScroll\n        },\n        ref: 'menu'\n      }, [this.genList()]);\n    },\n    genSelections: function genSelections() {\n      var length = this.selectedItems.length;\n      var children = new Array(length);\n      var genSelection;\n\n      if (this.$scopedSlots.selection) {\n        genSelection = this.genSlotSelection;\n      } else if (this.hasChips) {\n        genSelection = this.genChipSelection;\n      } else {\n        genSelection = this.genCommaSelection;\n      }\n\n      while (length--) {\n        children[length] = genSelection(this.selectedItems[length], length, length === children.length - 1);\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-select__selections'\n      }, children);\n    },\n    genSlotSelection: function genSlotSelection(item, index) {\n      var _this = this;\n\n      return this.$scopedSlots.selection({\n        attrs: {\n          class: 'v-chip--select'\n        },\n        parent: this,\n        item: item,\n        index: index,\n        select: function select(e) {\n          e.stopPropagation();\n          _this.selectedIndex = index;\n        },\n        selected: index === this.selectedIndex,\n        disabled: !this.isInteractive\n      });\n    },\n    getMenuIndex: function getMenuIndex() {\n      return this.$refs.menu ? this.$refs.menu.listIndex : -1;\n    },\n    getDisabled: function getDisabled(item) {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getPropertyFromItem\"])(item, this.itemDisabled, false);\n    },\n    getText: function getText(item) {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getPropertyFromItem\"])(item, this.itemText, item);\n    },\n    getValue: function getValue(item) {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"getPropertyFromItem\"])(item, this.itemValue, this.getText(item));\n    },\n    onBlur: function onBlur(e) {\n      e && this.$emit('blur', e);\n    },\n    onChipInput: function onChipInput(item) {\n      if (this.multiple) this.selectItem(item);else this.setValue(null); // If all items have been deleted,\n      // open `v-menu`\n\n      if (this.selectedItems.length === 0) {\n        this.isMenuActive = true;\n      } else {\n        this.isMenuActive = false;\n      }\n\n      this.selectedIndex = -1;\n    },\n    onClick: function onClick(e) {\n      if (!this.isInteractive) return;\n\n      if (!this.isAppendInner(e.target)) {\n        this.isMenuActive = true;\n      }\n\n      if (!this.isFocused) {\n        this.isFocused = true;\n        this.$emit('focus');\n      }\n\n      this.$emit('click', e);\n    },\n    onEscDown: function onEscDown(e) {\n      e.preventDefault();\n\n      if (this.isMenuActive) {\n        e.stopPropagation();\n        this.isMenuActive = false;\n      }\n    },\n    onKeyPress: function onKeyPress(e) {\n      var _this = this;\n\n      if (this.multiple || !this.isInteractive || this.disableLookup || e.key.length > 1 || e.ctrlKey || e.metaKey || e.altKey) return;\n      var KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds\n\n      var now = performance.now();\n\n      if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n        this.keyboardLookupPrefix = '';\n      }\n\n      this.keyboardLookupPrefix += e.key.toLowerCase();\n      this.keyboardLookupLastTime = now;\n      var index = this.allItems.findIndex(function (item) {\n        var _a;\n\n        var text = ((_a = _this.getText(item)) !== null && _a !== void 0 ? _a : '').toString();\n        return text.toLowerCase().startsWith(_this.keyboardLookupPrefix);\n      });\n      var item = this.allItems[index];\n\n      if (index !== -1) {\n        this.lastItem = Math.max(this.lastItem, index + 5);\n        this.setValue(this.returnObject ? item : this.getValue(item));\n        this.$nextTick(function () {\n          return _this.$refs.menu.getTiles();\n        });\n        setTimeout(function () {\n          return _this.setMenuIndex(index);\n        });\n      }\n    },\n    onKeyDown: function onKeyDown(e) {\n      var _this = this;\n\n      if (this.isReadonly && e.keyCode !== _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].tab) return;\n      var keyCode = e.keyCode;\n      var menu = this.$refs.menu;\n      this.$emit('keydown', e);\n      if (!menu) return; // If menu is active, allow default\n      // listIndex change from menu\n\n      if (this.isMenuActive && [_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].down, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].home, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].end, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].enter].includes(keyCode)) {\n        this.$nextTick(function () {\n          menu.changeListIndex(e);\n\n          _this.$emit('update:list-index', menu.listIndex);\n        });\n      } // If enter, space, open menu\n\n\n      if ([_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].enter, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].space].includes(keyCode)) this.activateMenu(); // If menu is not active, up/down/home/end can do\n      // one of 2 things. If multiple, opens the\n      // menu, if not, will cycle through all\n      // available options\n\n      if (!this.isMenuActive && [_util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].down, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].home, _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].end].includes(keyCode)) return this.onUpDown(e); // If escape deactivate the menu\n\n      if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].esc) return this.onEscDown(e); // If tab - select item or close menu\n\n      if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].tab) return this.onTabDown(e); // If space preventDefault\n\n      if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].space) return this.onSpaceDown(e);\n    },\n    onMenuActiveChange: function onMenuActiveChange(val) {\n      // If menu is closing and mulitple\n      // or menuIndex is already set\n      // skip menu index recalculation\n      if (this.multiple && !val || this.getMenuIndex() > -1) return;\n      var menu = this.$refs.menu;\n      if (!menu || !this.isDirty) return; // When menu opens, set index of first active item\n\n      this.$refs.menu.getTiles();\n\n      for (var i = 0; i < menu.tiles.length; i++) {\n        if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n          this.setMenuIndex(i);\n          break;\n        }\n      }\n    },\n    onMouseUp: function onMouseUp(e) {\n      var _this = this; // eslint-disable-next-line sonarjs/no-collapsible-if\n\n\n      if (this.hasMouseDown && e.which !== 3 && this.isInteractive) {\n        // If append inner is present\n        // and the target is itself\n        // or inside, toggle menu\n        if (this.isAppendInner(e.target)) {\n          this.$nextTick(function () {\n            return _this.isMenuActive = !_this.isMenuActive;\n          });\n        }\n      }\n\n      _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.methods.onMouseUp.call(this, e);\n    },\n    onScroll: function onScroll() {\n      var _this = this;\n\n      if (!this.isMenuActive) {\n        requestAnimationFrame(function () {\n          var content = _this.getContent();\n\n          if (content) content.scrollTop = 0;\n        });\n      } else {\n        if (this.lastItem > this.computedItems.length) return;\n        var showMoreItems = this.getContent().scrollHeight - (this.getContent().scrollTop + this.getContent().clientHeight) < 200;\n\n        if (showMoreItems) {\n          this.lastItem += 20;\n        }\n      }\n    },\n    onSpaceDown: function onSpaceDown(e) {\n      e.preventDefault();\n    },\n    onTabDown: function onTabDown(e) {\n      var menu = this.$refs.menu;\n      if (!menu) return;\n      var activeTile = menu.activeTile; // An item that is selected by\n      // menu-index should toggled\n\n      if (!this.multiple && activeTile && this.isMenuActive) {\n        e.preventDefault();\n        e.stopPropagation();\n        activeTile.click();\n      } else {\n        // If we make it here,\n        // the user has no selected indexes\n        // and is probably tabbing out\n        this.blur(e);\n      }\n    },\n    onUpDown: function onUpDown(e) {\n      var _this = this;\n\n      var menu = this.$refs.menu;\n      if (!menu) return;\n      e.preventDefault(); // Multiple selects do not cycle their value\n      // when pressing up or down, instead activate\n      // the menu\n\n      if (this.multiple) return this.activateMenu();\n      var keyCode = e.keyCode; // Cycle through available values to achieve\n      // select native behavior\n\n      menu.isBooted = true;\n      window.requestAnimationFrame(function () {\n        menu.getTiles();\n        if (!menu.hasClickableTiles) return _this.activateMenu();\n\n        switch (keyCode) {\n          case _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].up:\n            menu.prevTile();\n            break;\n\n          case _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].down:\n            menu.nextTile();\n            break;\n\n          case _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].home:\n            menu.firstTile();\n            break;\n\n          case _util_helpers__WEBPACK_IMPORTED_MODULE_12__[\"keyCodes\"].end:\n            menu.lastTile();\n            break;\n        }\n\n        _this.selectItem(_this.allItems[_this.getMenuIndex()]);\n      });\n    },\n    selectItem: function selectItem(item) {\n      var _this = this;\n\n      if (!this.multiple) {\n        this.setValue(this.returnObject ? item : this.getValue(item));\n        this.isMenuActive = false;\n      } else {\n        var internalValue = (this.internalValue || []).slice();\n        var i = this.findExistingIndex(item);\n        i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item);\n        this.setValue(internalValue.map(function (i) {\n          return _this.returnObject ? i : _this.getValue(i);\n        })); // There is no item to re-highlight\n        // when selections are hidden\n\n        if (this.hideSelected) {\n          this.setMenuIndex(-1);\n        } else {\n          var index_1 = this.computedItems.indexOf(item);\n\n          if (~index_1) {\n            this.$nextTick(function () {\n              return _this.$refs.menu.getTiles();\n            });\n            setTimeout(function () {\n              return _this.setMenuIndex(index_1);\n            });\n          }\n        }\n      }\n    },\n    setMenuIndex: function setMenuIndex(index) {\n      this.$refs.menu && (this.$refs.menu.listIndex = index);\n    },\n    setSelectedItems: function setSelectedItems() {\n      var e_1, _a;\n\n      var _this = this;\n\n      var selectedItems = [];\n      var values = !this.multiple || !Array.isArray(this.internalValue) ? [this.internalValue] : this.internalValue;\n\n      var _loop_1 = function _loop_1(value) {\n        var index = this_1.allItems.findIndex(function (v) {\n          return _this.valueComparator(_this.getValue(v), _this.getValue(value));\n        });\n\n        if (index > -1) {\n          selectedItems.push(this_1.allItems[index]);\n        }\n      };\n\n      var this_1 = this;\n\n      try {\n        for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n          var value = values_1_1.value;\n\n          _loop_1(value);\n        }\n      } catch (e_1_1) {\n        e_1 = {\n          error: e_1_1\n        };\n      } finally {\n        try {\n          if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n        } finally {\n          if (e_1) throw e_1.error;\n        }\n      }\n\n      this.selectedItems = selectedItems;\n    },\n    setValue: function setValue(value) {\n      if (!this.valueComparator(value, this.internalValue)) {\n        this.internalValue = value;\n        this.$emit('change', value);\n      }\n    },\n    isAppendInner: function isAppendInner(target) {\n      // return true if append inner is present\n      // and the target is itself or inside\n      var appendInner = this.$refs['append-inner'];\n      return appendInner && (appendInner === target || appendInner.contains(target));\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/VSelectList.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VSelect/VSelectList.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VCheckbox/VSimpleCheckbox */ \"./src/components/VCheckbox/VSimpleCheckbox.ts\");\n/* harmony import */ var _VDivider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VDivider */ \"./src/components/VDivider/index.ts\");\n/* harmony import */ var _VSubheader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VSubheader */ \"./src/components/VSubheader/index.ts\");\n/* harmony import */ var _VList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VList */ \"./src/components/VList/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Components\n\n\n\n\n\n // Directives\n\n // Mixins\n\n\n // Helpers\n\n // Types\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-select-list',\n  // https://github.com/vuejs/vue/issues/6872\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  },\n  props: {\n    action: Boolean,\n    dense: Boolean,\n    hideSelected: Boolean,\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    itemDisabled: {\n      type: [String, Array, Function],\n      default: 'disabled'\n    },\n    itemText: {\n      type: [String, Array, Function],\n      default: 'text'\n    },\n    itemValue: {\n      type: [String, Array, Function],\n      default: 'value'\n    },\n    noDataText: String,\n    noFilter: Boolean,\n    searchInput: null,\n    selectedItems: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  },\n  computed: {\n    parsedItems: function parsedItems() {\n      var _this = this;\n\n      return this.selectedItems.map(function (item) {\n        return _this.getValue(item);\n      });\n    },\n    tileActiveClass: function tileActiveClass() {\n      return Object.keys(this.setTextColor(this.color).class || {}).join(' ');\n    },\n    staticNoDataTile: function staticNoDataTile() {\n      var tile = {\n        attrs: {\n          role: undefined\n        },\n        on: {\n          mousedown: function mousedown(e) {\n            return e.preventDefault();\n          } // Prevent onBlur from being called\n\n        }\n      };\n      return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VListItem\"], tile, [this.genTileContent(this.noDataText)]);\n    }\n  },\n  methods: {\n    genAction: function genAction(item, inputValue) {\n      var _this = this;\n\n      return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VListItemAction\"], [this.$createElement(_VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n        props: {\n          color: this.color,\n          value: inputValue,\n          ripple: false\n        },\n        on: {\n          input: function input() {\n            return _this.$emit('select', item);\n          }\n        }\n      })]);\n    },\n    genDivider: function genDivider(props) {\n      return this.$createElement(_VDivider__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: props\n      });\n    },\n    genFilteredText: function genFilteredText(text) {\n      text = text || '';\n      if (!this.searchInput || this.noFilter) return text;\n\n      var _a = this.getMaskedCharacters(text),\n          start = _a.start,\n          middle = _a.middle,\n          end = _a.end;\n\n      return [start, this.genHighlight(middle), end];\n    },\n    genHeader: function genHeader(props) {\n      return this.$createElement(_VSubheader__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: props\n      }, props.header);\n    },\n    genHighlight: function genHighlight(text) {\n      return this.$createElement('span', {\n        staticClass: 'v-list-item__mask'\n      }, text);\n    },\n    getMaskedCharacters: function getMaskedCharacters(text) {\n      var searchInput = (this.searchInput || '').toString().toLocaleLowerCase();\n      var index = text.toLocaleLowerCase().indexOf(searchInput);\n      if (index < 0) return {\n        start: text,\n        middle: '',\n        end: ''\n      };\n      var start = text.slice(0, index);\n      var middle = text.slice(index, index + searchInput.length);\n      var end = text.slice(index + searchInput.length);\n      return {\n        start: start,\n        middle: middle,\n        end: end\n      };\n    },\n    genTile: function genTile(_a) {\n      var _this = this;\n\n      var item = _a.item,\n          index = _a.index,\n          _b = _a.disabled,\n          disabled = _b === void 0 ? null : _b,\n          _c = _a.value,\n          value = _c === void 0 ? false : _c;\n      if (!value) value = this.hasItem(item);\n\n      if (item === Object(item)) {\n        disabled = disabled !== null ? disabled : this.getDisabled(item);\n      }\n\n      var tile = {\n        attrs: {\n          // Default behavior in list does not\n          // contain aria-selected by default\n          'aria-selected': String(value),\n          id: \"list-item-\" + this._uid + \"-\" + index,\n          role: 'option'\n        },\n        on: {\n          mousedown: function mousedown(e) {\n            // Prevent onBlur from being called\n            e.preventDefault();\n          },\n          click: function click() {\n            return disabled || _this.$emit('select', item);\n          }\n        },\n        props: {\n          activeClass: this.tileActiveClass,\n          disabled: disabled,\n          ripple: true,\n          inputValue: value\n        }\n      };\n\n      if (!this.$scopedSlots.item) {\n        return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VListItem\"], tile, [this.action && !this.hideSelected && this.items.length > 0 ? this.genAction(item, value) : null, this.genTileContent(item, index)]);\n      }\n\n      var parent = this;\n      var scopedSlot = this.$scopedSlots.item({\n        parent: parent,\n        item: item,\n        attrs: __assign(__assign({}, tile.attrs), tile.props),\n        on: tile.on\n      });\n      return this.needsTile(scopedSlot) ? this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VListItem\"], tile, scopedSlot) : scopedSlot;\n    },\n    genTileContent: function genTileContent(item, index) {\n      if (index === void 0) {\n        index = 0;\n      }\n\n      return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VListItemContent\"], [this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VListItemTitle\"], [this.genFilteredText(this.getText(item))])]);\n    },\n    hasItem: function hasItem(item) {\n      return this.parsedItems.indexOf(this.getValue(item)) > -1;\n    },\n    needsTile: function needsTile(slot) {\n      return slot.length !== 1 || slot[0].componentOptions == null || slot[0].componentOptions.Ctor.options.name !== 'v-list-item';\n    },\n    getDisabled: function getDisabled(item) {\n      return Boolean(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemDisabled, false));\n    },\n    getText: function getText(item) {\n      return String(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemText, item));\n    },\n    getValue: function getValue(item) {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemValue, this.getText(item));\n    }\n  },\n  render: function render() {\n    var children = [];\n    var itemsLength = this.items.length;\n\n    for (var index = 0; index < itemsLength; index++) {\n      var item = this.items[index];\n      if (this.hideSelected && this.hasItem(item)) continue;\n      if (item == null) children.push(this.genTile({\n        item: item,\n        index: index\n      }));else if (item.header) children.push(this.genHeader(item));else if (item.divider) children.push(this.genDivider(item));else children.push(this.genTile({\n        item: item,\n        index: index\n      }));\n    }\n\n    children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile);\n    this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item']);\n    this.$slots['append-item'] && children.push(this.$slots['append-item']);\n    return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_3__[\"VList\"], {\n      staticClass: 'v-select-list',\n      class: this.themeClasses,\n      attrs: {\n        role: 'listbox',\n        tabindex: -1\n      },\n      on: {\n        mousedown: function mousedown(e) {\n          e.preventDefault();\n        }\n      },\n      props: {\n        dense: this.dense\n      }\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VSelect/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VSelect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSelect */ \"./src/components/VSelect/VSelect.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSelect\", function() { return _VSelect__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSelect__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSheet/VSheet.sass\":\n/*!*******************************************!*\\\n  !*** ./src/components/VSheet/VSheet.sass ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSheet/VSheet.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VSheet/VSheet.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSheet_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSheet.sass */ \"./src/components/VSheet/VSheet.sass\");\n/* harmony import */ var _VSheet_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSheet_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/binds-attrs */ \"./src/mixins/binds-attrs/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable/index.ts\");\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _mixins_roundable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/roundable */ \"./src/mixins/roundable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n\n\n\n // Helpers\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_elevatable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_measurable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_roundable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n  name: 'v-sheet',\n  props: {\n    outlined: Boolean,\n    shaped: Boolean,\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign({\n        'v-sheet': true,\n        'v-sheet--outlined': this.outlined,\n        'v-sheet--shaped': this.shaped\n      }, this.themeClasses), this.elevationClasses), this.roundedClasses);\n    },\n    styles: function styles() {\n      return this.measurableStyles;\n    }\n  },\n  render: function render(h) {\n    var data = {\n      class: this.classes,\n      style: this.styles,\n      on: this.listeners$\n    };\n    return h(this.tag, this.setBackgroundColor(this.color, data), this.$slots.default);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSheet/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/components/VSheet/index.ts ***!\n  \\****************************************/\n/*! exports provided: VSheet, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSheet\", function() { return _VSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSkeletonLoader/VSkeletonLoader.sass\":\n/*!*************************************************************!*\\\n  !*** ./src/components/VSkeletonLoader/VSkeletonLoader.sass ***!\n  \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSkeletonLoader/VSkeletonLoader.ts\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VSkeletonLoader/VSkeletonLoader.ts ***!\n  \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSkeletonLoader_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSkeletonLoader.sass */ \"./src/components/VSkeletonLoader/VSkeletonLoader.sass\");\n/* harmony import */ var _VSkeletonLoader_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSkeletonLoader_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable/index.ts\");\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Styles\n\n\n // Mixins\n\n\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_elevatable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_measurable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'VSkeletonLoader',\n  props: {\n    boilerplate: Boolean,\n    loading: Boolean,\n    loadingText: {\n      type: String,\n      default: '$vuetify.loading'\n    },\n    tile: Boolean,\n    transition: String,\n    type: String,\n    types: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    }\n  },\n  computed: {\n    attrs: function attrs() {\n      if (!this.isLoading) return this.$attrs;\n      return __assign({\n        'aria-busy': !this.boilerplate ? true : undefined,\n        'aria-live': !this.boilerplate ? 'polite' : undefined,\n        'aria-label': !this.boilerplate ? this.$vuetify.lang.t(this.loadingText) : undefined,\n        role: !this.boilerplate ? 'alert' : undefined\n      }, this.$attrs);\n    },\n    classes: function classes() {\n      return __assign(__assign({\n        'v-skeleton-loader--boilerplate': this.boilerplate,\n        'v-skeleton-loader--is-loading': this.isLoading,\n        'v-skeleton-loader--tile': this.tile\n      }, this.themeClasses), this.elevationClasses);\n    },\n    isLoading: function isLoading() {\n      return !('default' in this.$scopedSlots) || this.loading;\n    },\n    rootTypes: function rootTypes() {\n      return __assign({\n        actions: 'button@2',\n        article: 'heading, paragraph',\n        avatar: 'avatar',\n        button: 'button',\n        card: 'image, card-heading',\n        'card-avatar': 'image, list-item-avatar',\n        'card-heading': 'heading',\n        chip: 'chip',\n        'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n        'date-picker-options': 'text, avatar@2',\n        'date-picker-days': 'avatar@28',\n        heading: 'heading',\n        image: 'image',\n        'list-item': 'text',\n        'list-item-avatar': 'avatar, text',\n        'list-item-two-line': 'sentences',\n        'list-item-avatar-two-line': 'avatar, sentences',\n        'list-item-three-line': 'paragraph',\n        'list-item-avatar-three-line': 'avatar, paragraph',\n        paragraph: 'text@3',\n        sentences: 'text@2',\n        table: 'table-heading, table-thead, table-tbody, table-tfoot',\n        'table-heading': 'heading, text',\n        'table-thead': 'heading@6',\n        'table-tbody': 'table-row-divider@6',\n        'table-row-divider': 'table-row, divider',\n        'table-row': 'table-cell@6',\n        'table-cell': 'text',\n        'table-tfoot': 'text@2, avatar@2',\n        text: 'text'\n      }, this.types);\n    }\n  },\n  methods: {\n    genBone: function genBone(text, children) {\n      return this.$createElement('div', {\n        staticClass: \"v-skeleton-loader__\" + text + \" v-skeleton-loader__bone\"\n      }, children);\n    },\n    genBones: function genBones(bone) {\n      var _this = this; // e.g. 'text@3'\n\n\n      var _a = __read(bone.split('@'), 2),\n          type = _a[0],\n          length = _a[1];\n\n      var generator = function generator() {\n        return _this.genStructure(type);\n      }; // Generate a length array based upon\n      // value after @ in the bone string\n\n\n      return Array.from({\n        length: length\n      }).map(generator);\n    },\n    // Fix type when this is merged\n    // https://github.com/microsoft/TypeScript/pull/33050\n    genStructure: function genStructure(type) {\n      var children = [];\n      type = type || this.type || '';\n      var bone = this.rootTypes[type] || ''; // End of recursion, do nothing\n\n      /* eslint-disable-next-line no-empty, brace-style */\n\n      if (type === bone) {} // Array of values - e.g. 'heading, paragraph, text@2'\n      else if (type.indexOf(',') > -1) return this.mapBones(type); // Array of values - e.g. 'paragraph@4'\n      else if (type.indexOf('@') > -1) return this.genBones(type); // Array of values - e.g. 'card@2'\n      else if (bone.indexOf(',') > -1) children = this.mapBones(bone); // Array of values - e.g. 'list-item@2'\n      else if (bone.indexOf('@') > -1) children = this.genBones(bone); // Single value - e.g. 'card-heading'\n      else if (bone) children.push(this.genStructure(bone));\n\n      return [this.genBone(type, children)];\n    },\n    genSkeleton: function genSkeleton() {\n      var children = [];\n      if (!this.isLoading) children.push(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this));else children.push(this.genStructure());\n      /* istanbul ignore else */\n\n      if (!this.transition) return children;\n      /* istanbul ignore next */\n\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        },\n        // Only show transition when\n        // content has been loaded\n        on: {\n          afterEnter: this.resetStyles,\n          beforeEnter: this.onBeforeEnter,\n          beforeLeave: this.onBeforeLeave,\n          leaveCancelled: this.resetStyles\n        }\n      }, children);\n    },\n    mapBones: function mapBones(bones) {\n      // Remove spaces and return array of structures\n      return bones.replace(/\\s/g, '').split(',').map(this.genStructure);\n    },\n    onBeforeEnter: function onBeforeEnter(el) {\n      this.resetStyles(el);\n      if (!this.isLoading) return;\n      el._initialStyle = {\n        display: el.style.display,\n        transition: el.style.transition\n      };\n      el.style.setProperty('transition', 'none', 'important');\n    },\n    onBeforeLeave: function onBeforeLeave(el) {\n      el.style.setProperty('display', 'none', 'important');\n    },\n    resetStyles: function resetStyles(el) {\n      if (!el._initialStyle) return;\n      el.style.display = el._initialStyle.display || '';\n      el.style.transition = el._initialStyle.transition;\n      delete el._initialStyle;\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-skeleton-loader',\n      attrs: this.attrs,\n      on: this.$listeners,\n      class: this.classes,\n      style: this.isLoading ? this.measurableStyles : undefined\n    }, [this.genSkeleton()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSkeletonLoader/index.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VSkeletonLoader/index.ts ***!\n  \\*************************************************/\n/*! exports provided: VSkeletonLoader, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSkeletonLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSkeletonLoader */ \"./src/components/VSkeletonLoader/VSkeletonLoader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSkeletonLoader\", function() { return _VSkeletonLoader__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSkeletonLoader__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSlideGroup/VSlideGroup.sass\":\n/*!*****************************************************!*\\\n  !*** ./src/components/VSlideGroup/VSlideGroup.sass ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSlideGroup/VSlideGroup.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSlideGroup/VSlideGroup.ts ***!\n  \\***************************************************/\n/*! exports provided: calculateUpdatedOffset, calculateCenteredOffset, BaseSlideGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateUpdatedOffset\", function() { return calculateUpdatedOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateCenteredOffset\", function() { return calculateCenteredOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseSlideGroup\", function() { return BaseSlideGroup; });\n/* harmony import */ var _VSlideGroup_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSlideGroup.sass */ \"./src/components/VSlideGroup/VSlideGroup.sass\");\n/* harmony import */ var _VSlideGroup_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSlideGroup_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _mixins_mobile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/mobile */ \"./src/mixins/mobile/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}; // Styles\n\n\n // Components\n\n\n // Extensions\n\n // Mixins\n\n // Directives\n\n\n // Utilities\n\n\n\n\nfunction bias(val) {\n  var c = 0.501;\n  var x = Math.abs(val);\n  return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1));\n}\n\nfunction calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {\n  var clientWidth = selectedElement.clientWidth;\n  var offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;\n\n  if (rtl) {\n    currentScrollOffset = -currentScrollOffset;\n  }\n\n  var totalWidth = widths.wrapper + currentScrollOffset;\n  var itemOffset = clientWidth + offsetLeft;\n  var additionalOffset = clientWidth * 0.4;\n\n  if (offsetLeft <= currentScrollOffset) {\n    currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0);\n  } else if (totalWidth <= itemOffset) {\n    currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper);\n  }\n\n  return rtl ? -currentScrollOffset : currentScrollOffset;\n}\nfunction calculateCenteredOffset(selectedElement, widths, rtl) {\n  var offsetLeft = selectedElement.offsetLeft,\n      clientWidth = selectedElement.clientWidth;\n\n  if (rtl) {\n    var offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2;\n    return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));\n  } else {\n    var offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2;\n    return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));\n  }\n}\nvar BaseSlideGroup = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__[\"BaseItemGroup\"], _mixins_mobile__WEBPACK_IMPORTED_MODULE_4__[\"default\"]).extend({\n  name: 'base-slide-group',\n  directives: {\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n    Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-slide-item--active'\n    },\n    centerActive: Boolean,\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    showArrows: {\n      type: [Boolean, String],\n      validator: function validator(v) {\n        return typeof v === 'boolean' || ['always', 'never', 'desktop', 'mobile'].includes(v);\n      }\n    }\n  },\n  data: function data() {\n    return {\n      isOverflowing: false,\n      resizeTimeout: 0,\n      startX: 0,\n      isSwipingHorizontal: false,\n      isSwiping: false,\n      scrollOffset: 0,\n      widths: {\n        content: 0,\n        wrapper: 0\n      }\n    };\n  },\n  computed: {\n    canTouch: function canTouch() {\n      return typeof window !== 'undefined';\n    },\n    __cachedNext: function __cachedNext() {\n      return this.genTransition('next');\n    },\n    __cachedPrev: function __cachedPrev() {\n      return this.genTransition('prev');\n    },\n    classes: function classes() {\n      return __assign(__assign({}, _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__[\"BaseItemGroup\"].options.computed.classes.call(this)), {\n        'v-slide-group': true,\n        'v-slide-group--has-affixes': this.hasAffixes,\n        'v-slide-group--is-overflowing': this.isOverflowing\n      });\n    },\n    hasAffixes: function hasAffixes() {\n      switch (this.showArrows) {\n        // Always show arrows on desktop & mobile\n        case 'always':\n          return true;\n        // Always show arrows on desktop\n\n        case 'desktop':\n          return !this.isMobile;\n        // Show arrows on mobile when overflowing.\n        // This matches the default 2.2 behavior\n\n        case true:\n          return this.isOverflowing || Math.abs(this.scrollOffset) > 0;\n        // Always show on mobile\n\n        case 'mobile':\n          return this.isMobile || this.isOverflowing || Math.abs(this.scrollOffset) > 0;\n        // Always hide arrows\n\n        case 'never':\n          return false;\n        // https://material.io/components/tabs#scrollable-tabs\n        // Always show arrows when\n        // overflowed on desktop\n\n        default:\n          return !this.isMobile && (this.isOverflowing || Math.abs(this.scrollOffset) > 0);\n      }\n    },\n    hasNext: function hasNext() {\n      if (!this.hasAffixes) return false;\n      var _a = this.widths,\n          content = _a.content,\n          wrapper = _a.wrapper; // Check one scroll ahead to know the width of right-most item\n\n      return content > Math.abs(this.scrollOffset) + wrapper;\n    },\n    hasPrev: function hasPrev() {\n      return this.hasAffixes && this.scrollOffset !== 0;\n    }\n  },\n  watch: {\n    internalValue: 'setWidths',\n    // When overflow changes, the arrows alter\n    // the widths of the content and wrapper\n    // and need to be recalculated\n    isOverflowing: 'setWidths',\n    scrollOffset: function scrollOffset(val) {\n      if (this.$vuetify.rtl) val = -val;\n      var scroll = val <= 0 ? bias(-val) : val > this.widths.content - this.widths.wrapper ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val) : -val;\n      if (this.$vuetify.rtl) scroll = -scroll;\n      this.$refs.content.style.transform = \"translateX(\" + scroll + \"px)\";\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    if (typeof ResizeObserver !== 'undefined') {\n      var obs_1 = new ResizeObserver(function () {\n        _this.onResize();\n      });\n      obs_1.observe(this.$el);\n      obs_1.observe(this.$refs.content);\n      this.$on('hook:destroyed', function () {\n        obs_1.disconnect();\n      });\n    } else {\n      var itemsLength_1 = 0;\n      this.$on('hook:beforeUpdate', function () {\n        var _a;\n\n        itemsLength_1 = (((_a = _this.$refs.content) === null || _a === void 0 ? void 0 : _a.children) || []).length;\n      });\n      this.$on('hook:updated', function () {\n        var _a;\n\n        if (itemsLength_1 === (((_a = _this.$refs.content) === null || _a === void 0 ? void 0 : _a.children) || []).length) return;\n\n        _this.setWidths();\n      });\n    }\n  },\n  methods: {\n    onScroll: function onScroll() {\n      this.$refs.wrapper.scrollLeft = 0;\n    },\n    onFocusin: function onFocusin(e) {\n      var e_1, _a, e_2, _b;\n\n      if (!this.isOverflowing) return;\n\n      try {\n        // Focused element is likely to be the root of an item, so a\n        // breadth-first search will probably find it in the first iteration\n        for (var _c = __values(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"composedPath\"])(e)), _d = _c.next(); !_d.done; _d = _c.next()) {\n          var el = _d.value;\n\n          try {\n            for (var _e = (e_2 = void 0, __values(this.items)), _f = _e.next(); !_f.done; _f = _e.next()) {\n              var vm = _f.value;\n\n              if (vm.$el === el) {\n                this.scrollOffset = calculateUpdatedOffset(vm.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);\n                return;\n              }\n            }\n          } catch (e_2_1) {\n            e_2 = {\n              error: e_2_1\n            };\n          } finally {\n            try {\n              if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n            } finally {\n              if (e_2) throw e_2.error;\n            }\n          }\n        }\n      } catch (e_1_1) {\n        e_1 = {\n          error: e_1_1\n        };\n      } finally {\n        try {\n          if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n        } finally {\n          if (e_1) throw e_1.error;\n        }\n      }\n    },\n    // Always generate next for scrollable hint\n    genNext: function genNext() {\n      var _this = this;\n\n      var slot = this.$scopedSlots.next ? this.$scopedSlots.next({}) : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this, 'next') || this.__cachedNext;\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__next',\n        class: {\n          'v-slide-group__next--disabled': !this.hasNext\n        },\n        on: {\n          click: function click() {\n            return _this.onAffixClick('next');\n          }\n        },\n        key: 'next'\n      }, [slot]);\n    },\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__content',\n        ref: 'content',\n        on: {\n          focusin: this.onFocusin\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this));\n    },\n    genData: function genData() {\n      return {\n        class: this.classes,\n        directives: [{\n          name: 'resize',\n          value: this.onResize\n        }]\n      };\n    },\n    genIcon: function genIcon(location) {\n      var icon = location;\n\n      if (this.$vuetify.rtl && location === 'prev') {\n        icon = 'next';\n      } else if (this.$vuetify.rtl && location === 'next') {\n        icon = 'prev';\n      }\n\n      var upperLocation = \"\" + location[0].toUpperCase() + location.slice(1);\n      var hasAffix = this[\"has\" + upperLocation];\n      if (!this.showArrows && !hasAffix) return null;\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          disabled: !hasAffix\n        }\n      }, this[icon + \"Icon\"]);\n    },\n    // Always generate prev for scrollable hint\n    genPrev: function genPrev() {\n      var _this = this;\n\n      var slot = this.$scopedSlots.prev ? this.$scopedSlots.prev({}) : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this, 'prev') || this.__cachedPrev;\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__prev',\n        class: {\n          'v-slide-group__prev--disabled': !this.hasPrev\n        },\n        on: {\n          click: function click() {\n            return _this.onAffixClick('prev');\n          }\n        },\n        key: 'prev'\n      }, [slot]);\n    },\n    genTransition: function genTransition(location) {\n      return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_2__[\"VFadeTransition\"], [this.genIcon(location)]);\n    },\n    genWrapper: function genWrapper() {\n      var _this = this;\n\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__wrapper',\n        directives: [{\n          name: 'touch',\n          value: {\n            start: function start(e) {\n              return _this.overflowCheck(e, _this.onTouchStart);\n            },\n            move: function move(e) {\n              return _this.overflowCheck(e, _this.onTouchMove);\n            },\n            end: function end(e) {\n              return _this.overflowCheck(e, _this.onTouchEnd);\n            }\n          }\n        }],\n        ref: 'wrapper',\n        on: {\n          scroll: this.onScroll\n        }\n      }, [this.genContent()]);\n    },\n    calculateNewOffset: function calculateNewOffset(direction, widths, rtl, currentScrollOffset) {\n      var sign = rtl ? -1 : 1;\n      var newAbosluteOffset = sign * currentScrollOffset + (direction === 'prev' ? -1 : 1) * widths.wrapper;\n      return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0);\n    },\n    onAffixClick: function onAffixClick(location) {\n      this.$emit(\"click:\" + location);\n      this.scrollTo(location);\n    },\n    onResize: function onResize() {\n      /* istanbul ignore next */\n      if (this._isDestroyed) return;\n      this.setWidths();\n    },\n    onTouchStart: function onTouchStart(e) {\n      var content = this.$refs.content;\n      this.startX = this.scrollOffset + e.touchstartX;\n      content.style.setProperty('transition', 'none');\n      content.style.setProperty('willChange', 'transform');\n    },\n    onTouchMove: function onTouchMove(e) {\n      if (!this.canTouch) return;\n\n      if (!this.isSwiping) {\n        // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n        // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n        var diffX = e.touchmoveX - e.touchstartX;\n        var diffY = e.touchmoveY - e.touchstartY;\n        this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY);\n        this.isSwiping = true;\n      }\n\n      if (this.isSwipingHorizontal) {\n        // sliding horizontally\n        this.scrollOffset = this.startX - e.touchmoveX; // temporarily disable window vertical scrolling\n\n        document.documentElement.style.overflowY = 'hidden';\n      }\n    },\n    onTouchEnd: function onTouchEnd() {\n      if (!this.canTouch) return;\n      var _a = this.$refs,\n          content = _a.content,\n          wrapper = _a.wrapper;\n      var maxScrollOffset = content.clientWidth - wrapper.clientWidth;\n      content.style.setProperty('transition', null);\n      content.style.setProperty('willChange', null);\n\n      if (this.$vuetify.rtl) {\n        /* istanbul ignore else */\n        if (this.scrollOffset > 0 || !this.isOverflowing) {\n          this.scrollOffset = 0;\n        } else if (this.scrollOffset <= -maxScrollOffset) {\n          this.scrollOffset = -maxScrollOffset;\n        }\n      } else {\n        /* istanbul ignore else */\n        if (this.scrollOffset < 0 || !this.isOverflowing) {\n          this.scrollOffset = 0;\n        } else if (this.scrollOffset >= maxScrollOffset) {\n          this.scrollOffset = maxScrollOffset;\n        }\n      }\n\n      this.isSwiping = false; // rollback whole page scrolling to default\n\n      document.documentElement.style.removeProperty('overflow-y');\n    },\n    overflowCheck: function overflowCheck(e, fn) {\n      e.stopPropagation();\n      this.isOverflowing && fn(e);\n    },\n    scrollIntoView\n    /* istanbul ignore next */\n    : function scrollIntoView() {\n      if (!this.selectedItem && this.items.length) {\n        var lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect();\n        var wrapperPosition = this.$refs.wrapper.getBoundingClientRect();\n\n        if (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right || !this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left) {\n          this.scrollTo('prev');\n        }\n      }\n\n      if (!this.selectedItem) {\n        return;\n      }\n\n      if (this.selectedIndex === 0 || !this.centerActive && !this.isOverflowing) {\n        this.scrollOffset = 0;\n      } else if (this.centerActive) {\n        this.scrollOffset = calculateCenteredOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl);\n      } else if (this.isOverflowing) {\n        this.scrollOffset = calculateUpdatedOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);\n      }\n    },\n    scrollTo\n    /* istanbul ignore next */\n    : function scrollTo(location) {\n      this.scrollOffset = this.calculateNewOffset(location, {\n        // Force reflow\n        content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n        wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0\n      }, this.$vuetify.rtl, this.scrollOffset);\n    },\n    setWidths: function setWidths() {\n      var _this = this;\n\n      window.requestAnimationFrame(function () {\n        if (_this._isDestroyed) return;\n        var _a = _this.$refs,\n            content = _a.content,\n            wrapper = _a.wrapper;\n        _this.widths = {\n          content: content ? content.clientWidth : 0,\n          wrapper: wrapper ? wrapper.clientWidth : 0\n        }; // https://github.com/vuetifyjs/vuetify/issues/13212\n        // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n        // gets calculated wrongly by the browser if using a different zoom-level.\n\n        _this.isOverflowing = _this.widths.wrapper + 1 < _this.widths.content;\n\n        _this.scrollIntoView();\n      });\n    }\n  },\n  render: function render(h) {\n    return h('div', this.genData(), [this.genPrev(), this.genWrapper(), this.genNext()]);\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseSlideGroup.extend({\n  name: 'v-slide-group',\n  provide: function provide() {\n    return {\n      slideGroup: this\n    };\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSlideGroup/VSlideItem.ts\":\n/*!**************************************************!*\\\n  !*** ./src/components/VSlideGroup/VSlideItem.ts ***!\n  \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VItemGroup_VItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VItemGroup/VItem */ \"./src/components/VItemGroup/VItem.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Extensions\n // Mixins\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_VItemGroup_VItem__WEBPACK_IMPORTED_MODULE_0__[\"BaseItem\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_1__[\"factory\"])('slideGroup')\n/* @vue/component */\n).extend({\n  name: 'v-slide-item'\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSlideGroup/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VSlideGroup/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VSlideGroup, VSlideItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSlideGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSlideGroup */ \"./src/components/VSlideGroup/VSlideGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideGroup\", function() { return _VSlideGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VSlideItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VSlideItem */ \"./src/components/VSlideGroup/VSlideItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideItem\", function() { return _VSlideItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VSlideGroup: _VSlideGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VSlideItem: _VSlideItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VSlider/VSlider.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VSlider/VSlider.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSlider/VSlider.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VSlider/VSlider.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSlider_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSlider.sass */ \"./src/components/VSlider/VSlider.sass\");\n/* harmony import */ var _VSlider_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSlider_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_loadable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/loadable */ \"./src/mixins/loadable/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Components\n\n\n // Mixins\n\n\n // Directives\n\n // Helpers\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_loadable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-slider',\n  directives: {\n    ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  },\n  mixins: [_mixins_loadable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]],\n  props: {\n    disabled: Boolean,\n    inverseLabel: Boolean,\n    max: {\n      type: [Number, String],\n      default: 100\n    },\n    min: {\n      type: [Number, String],\n      default: 0\n    },\n    step: {\n      type: [Number, String],\n      default: 1\n    },\n    thumbColor: String,\n    thumbLabel: {\n      type: [Boolean, String],\n      default: undefined,\n      validator: function validator(v) {\n        return typeof v === 'boolean' || v === 'always';\n      }\n    },\n    thumbSize: {\n      type: [Number, String],\n      default: 32\n    },\n    tickLabels: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    ticks: {\n      type: [Boolean, String],\n      default: false,\n      validator: function validator(v) {\n        return typeof v === 'boolean' || v === 'always';\n      }\n    },\n    tickSize: {\n      type: [Number, String],\n      default: 2\n    },\n    trackColor: String,\n    trackFillColor: String,\n    value: [Number, String],\n    vertical: Boolean\n  },\n  data: function data() {\n    return {\n      app: null,\n      oldValue: null,\n      thumbPressed: false,\n      mouseTimeout: -1,\n      isFocused: false,\n      isActive: false,\n      noClick: false,\n      startOffset: 0\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-input__slider': true,\n        'v-input__slider--vertical': this.vertical,\n        'v-input__slider--inverse-label': this.inverseLabel\n      });\n    },\n    internalValue: {\n      get: function get() {\n        return this.lazyValue;\n      },\n      set: function set(val) {\n        val = isNaN(val) ? this.minValue : val; // Round value to ensure the\n        // entire slider range can\n        // be selected with step\n\n        var value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue));\n        if (value === this.lazyValue) return;\n        this.lazyValue = value;\n        this.$emit('input', value);\n      }\n    },\n    trackTransition: function trackTransition() {\n      return this.thumbPressed ? this.showTicks || this.stepNumeric ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)' : 'none' : '';\n    },\n    minValue: function minValue() {\n      return parseFloat(this.min);\n    },\n    maxValue: function maxValue() {\n      return parseFloat(this.max);\n    },\n    stepNumeric: function stepNumeric() {\n      return this.step > 0 ? parseFloat(this.step) : 0;\n    },\n    inputWidth: function inputWidth() {\n      var inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100;\n      return isNaN(inputWidth) ? 0 : inputWidth;\n    },\n    trackFillStyles: function trackFillStyles() {\n      var _a;\n\n      var startDir = this.vertical ? 'bottom' : 'left';\n      var endDir = this.vertical ? 'top' : 'right';\n      var valueDir = this.vertical ? 'height' : 'width';\n      var start = this.$vuetify.rtl ? 'auto' : '0';\n      var end = this.$vuetify.rtl ? '0' : 'auto';\n      var value = this.isDisabled ? \"calc(\" + this.inputWidth + \"% - 10px)\" : this.inputWidth + \"%\";\n      return _a = {\n        transition: this.trackTransition\n      }, _a[startDir] = start, _a[endDir] = end, _a[valueDir] = value, _a;\n    },\n    trackStyles: function trackStyles() {\n      var _a;\n\n      var startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right';\n      var endDir = this.vertical ? 'height' : 'width';\n      var start = '0px';\n      var end = this.isDisabled ? \"calc(\" + (100 - this.inputWidth) + \"% - 10px)\" : \"calc(\" + (100 - this.inputWidth) + \"%)\";\n      return _a = {\n        transition: this.trackTransition\n      }, _a[startDir] = start, _a[endDir] = end, _a;\n    },\n    showTicks: function showTicks() {\n      return this.tickLabels.length > 0 || !!(!this.isDisabled && this.stepNumeric && this.ticks);\n    },\n    numTicks: function numTicks() {\n      return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric);\n    },\n    showThumbLabel: function showThumbLabel() {\n      return !this.isDisabled && !!(this.thumbLabel || this.$scopedSlots['thumb-label']);\n    },\n    computedTrackColor: function computedTrackColor() {\n      if (this.isDisabled) return undefined;\n      if (this.trackColor) return this.trackColor;\n      if (this.isDark) return this.validationState;\n      return this.validationState || 'primary lighten-3';\n    },\n    computedTrackFillColor: function computedTrackFillColor() {\n      if (this.isDisabled) return undefined;\n      if (this.trackFillColor) return this.trackFillColor;\n      return this.validationState || this.computedColor;\n    },\n    computedThumbColor: function computedThumbColor() {\n      if (this.thumbColor) return this.thumbColor;\n      return this.validationState || this.computedColor;\n    }\n  },\n  watch: {\n    min: function min(val) {\n      var parsed = parseFloat(val);\n      parsed > this.internalValue && this.$emit('input', parsed);\n    },\n    max: function max(val) {\n      var parsed = parseFloat(val);\n      parsed < this.internalValue && this.$emit('input', parsed);\n    },\n    value: {\n      handler: function handler(v) {\n        this.internalValue = v;\n      },\n      immediate: true\n    }\n  },\n  mounted: function mounted() {\n    // Without a v-app, iOS does not work with body selectors\n    this.app = document.querySelector('[data-app]') || Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"consoleWarn\"])('Missing v-app or a non-body wrapping element with the [data-app] attribute', this);\n  },\n  methods: {\n    genDefaultSlot: function genDefaultSlot() {\n      var children = [this.genLabel()];\n      var slider = this.genSlider();\n      this.inverseLabel ? children.unshift(slider) : children.push(slider);\n      children.push(this.genProgress());\n      return children;\n    },\n    genSlider: function genSlider() {\n      return this.$createElement('div', {\n        class: __assign({\n          'v-slider': true,\n          'v-slider--horizontal': !this.vertical,\n          'v-slider--vertical': this.vertical,\n          'v-slider--focused': this.isFocused,\n          'v-slider--active': this.isActive,\n          'v-slider--disabled': this.isDisabled,\n          'v-slider--readonly': this.isReadonly\n        }, this.themeClasses),\n        directives: [{\n          name: 'click-outside',\n          value: this.onBlur\n        }],\n        on: {\n          click: this.onSliderClick,\n          mousedown: this.onSliderMouseDown,\n          touchstart: this.onSliderMouseDown\n        }\n      }, this.genChildren());\n    },\n    genChildren: function genChildren() {\n      return [this.genInput(), this.genTrackContainer(), this.genSteps(), this.genThumbContainer(this.internalValue, this.inputWidth, this.isActive, this.isFocused, this.onFocus, this.onBlur)];\n    },\n    genInput: function genInput() {\n      return this.$createElement('input', {\n        attrs: __assign({\n          value: this.internalValue,\n          id: this.computedId,\n          disabled: true,\n          readonly: true,\n          tabindex: -1\n        }, this.$attrs) // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n\n      });\n    },\n    genTrackContainer: function genTrackContainer() {\n      var children = [this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n        staticClass: 'v-slider__track-background',\n        style: this.trackStyles\n      })), this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n        staticClass: 'v-slider__track-fill',\n        style: this.trackFillStyles\n      }))];\n      return this.$createElement('div', {\n        staticClass: 'v-slider__track-container',\n        ref: 'track'\n      }, children);\n    },\n    genSteps: function genSteps() {\n      var _this = this;\n\n      if (!this.step || !this.showTicks) return null;\n      var tickSize = parseFloat(this.tickSize);\n      var range = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"createRange\"])(this.numTicks + 1);\n      var direction = this.vertical ? 'bottom' : this.$vuetify.rtl ? 'right' : 'left';\n      var offsetDirection = this.vertical ? this.$vuetify.rtl ? 'left' : 'right' : 'top';\n      if (this.vertical) range.reverse();\n      var ticks = range.map(function (index) {\n        var _a;\n\n        var children = [];\n\n        if (_this.tickLabels[index]) {\n          children.push(_this.$createElement('div', {\n            staticClass: 'v-slider__tick-label'\n          }, _this.tickLabels[index]));\n        }\n\n        var width = index * (100 / _this.numTicks);\n        var filled = _this.$vuetify.rtl ? 100 - _this.inputWidth < width : width < _this.inputWidth;\n        return _this.$createElement('span', {\n          key: index,\n          staticClass: 'v-slider__tick',\n          class: {\n            'v-slider__tick--filled': filled\n          },\n          style: (_a = {\n            width: tickSize + \"px\",\n            height: tickSize + \"px\"\n          }, _a[direction] = \"calc(\" + width + \"% - \" + tickSize / 2 + \"px)\", _a[offsetDirection] = \"calc(50% - \" + tickSize / 2 + \"px)\", _a)\n        }, children);\n      });\n      return this.$createElement('div', {\n        staticClass: 'v-slider__ticks-container',\n        class: {\n          'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0\n        }\n      }, ticks);\n    },\n    genThumbContainer: function genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, ref) {\n      if (ref === void 0) {\n        ref = 'thumb';\n      }\n\n      var children = [this.genThumb()];\n      var thumbLabelContent = this.genThumbLabelContent(value);\n      this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent));\n      return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n        ref: ref,\n        key: ref,\n        staticClass: 'v-slider__thumb-container',\n        class: {\n          'v-slider__thumb-container--active': isActive,\n          'v-slider__thumb-container--focused': isFocused,\n          'v-slider__thumb-container--show-label': this.showThumbLabel\n        },\n        style: this.getThumbContainerStyles(valueWidth),\n        attrs: {\n          role: 'slider',\n          tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n          'aria-label': this.$attrs['aria-label'] || this.label,\n          'aria-valuemin': this.min,\n          'aria-valuemax': this.max,\n          'aria-valuenow': this.internalValue,\n          'aria-readonly': String(this.isReadonly),\n          'aria-orientation': this.vertical ? 'vertical' : 'horizontal'\n        },\n        on: {\n          focus: onFocus,\n          blur: onBlur,\n          keydown: this.onKeyDown\n        }\n      }), children);\n    },\n    genThumbLabelContent: function genThumbLabelContent(value) {\n      return this.$scopedSlots['thumb-label'] ? this.$scopedSlots['thumb-label']({\n        value: value\n      }) : [this.$createElement('span', [String(value)])];\n    },\n    genThumbLabel: function genThumbLabel(content) {\n      var size = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"convertToUnit\"])(this.thumbSize);\n      var transform = this.vertical ? \"translateY(20%) translateY(\" + (Number(this.thumbSize) / 3 - 1) + \"px) translateX(55%) rotate(135deg)\" : \"translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)\";\n      return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_2__[\"VScaleTransition\"], {\n        props: {\n          origin: 'bottom center'\n        }\n      }, [this.$createElement('div', {\n        staticClass: 'v-slider__thumb-label-container',\n        directives: [{\n          name: 'show',\n          value: this.isFocused || this.isActive || this.thumbLabel === 'always'\n        }]\n      }, [this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n        staticClass: 'v-slider__thumb-label',\n        style: {\n          height: size,\n          width: size,\n          transform: transform\n        }\n      }), [this.$createElement('div', content)])])]);\n    },\n    genThumb: function genThumb() {\n      return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n        staticClass: 'v-slider__thumb'\n      }));\n    },\n    getThumbContainerStyles: function getThumbContainerStyles(width) {\n      var _a;\n\n      var direction = this.vertical ? 'top' : 'left';\n      var value = this.$vuetify.rtl ? 100 - width : width;\n      value = this.vertical ? 100 - value : value;\n      return _a = {\n        transition: this.trackTransition\n      }, _a[direction] = value + \"%\", _a;\n    },\n    onSliderMouseDown: function onSliderMouseDown(e) {\n      var _this = this;\n\n      var _a;\n\n      e.preventDefault();\n      this.oldValue = this.internalValue;\n      this.isActive = true;\n\n      if ((_a = e.target) === null || _a === void 0 ? void 0 : _a.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n        this.thumbPressed = true;\n        var domRect = e.target.getBoundingClientRect();\n        var touch = 'touches' in e ? e.touches[0] : e;\n        this.startOffset = this.vertical ? touch.clientY - (domRect.top + domRect.height / 2) : touch.clientX - (domRect.left + domRect.width / 2);\n      } else {\n        this.startOffset = 0;\n        window.clearTimeout(this.mouseTimeout);\n        this.mouseTimeout = window.setTimeout(function () {\n          _this.thumbPressed = true;\n        }, 300);\n      }\n\n      var mouseUpOptions = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"passiveSupported\"] ? {\n        passive: true,\n        capture: true\n      } : true;\n      var mouseMoveOptions = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"passiveSupported\"] ? {\n        passive: true\n      } : false;\n      var isTouchEvent = ('touches' in e);\n      this.onMouseMove(e);\n      this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions);\n      Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"addOnceEventListener\"])(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions);\n      this.$emit('start', this.internalValue);\n    },\n    onSliderMouseUp: function onSliderMouseUp(e) {\n      e.stopPropagation();\n      window.clearTimeout(this.mouseTimeout);\n      this.thumbPressed = false;\n      var mouseMoveOptions = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"passiveSupported\"] ? {\n        passive: true\n      } : false;\n      this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions);\n      this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions);\n      this.$emit('mouseup', e);\n      this.$emit('end', this.internalValue);\n\n      if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"deepEqual\"])(this.oldValue, this.internalValue)) {\n        this.$emit('change', this.internalValue);\n        this.noClick = true;\n      }\n\n      this.isActive = false;\n    },\n    onMouseMove: function onMouseMove(e) {\n      if (e.type === 'mousemove') {\n        this.thumbPressed = true;\n      }\n\n      this.internalValue = this.parseMouseMove(e);\n    },\n    onKeyDown: function onKeyDown(e) {\n      if (!this.isInteractive) return;\n      var value = this.parseKeyDown(e, this.internalValue);\n      if (value == null || value < this.minValue || value > this.maxValue) return;\n      this.internalValue = value;\n      this.$emit('change', value);\n    },\n    onSliderClick: function onSliderClick(e) {\n      if (this.noClick) {\n        this.noClick = false;\n        return;\n      }\n\n      var thumb = this.$refs.thumb;\n      thumb.focus();\n      this.onMouseMove(e);\n      this.$emit('change', this.internalValue);\n    },\n    onBlur: function onBlur(e) {\n      this.isFocused = false;\n      this.$emit('blur', e);\n    },\n    onFocus: function onFocus(e) {\n      this.isFocused = true;\n      this.$emit('focus', e);\n    },\n    parseMouseMove: function parseMouseMove(e) {\n      var start = this.vertical ? 'top' : 'left';\n      var length = this.vertical ? 'height' : 'width';\n      var click = this.vertical ? 'clientY' : 'clientX';\n\n      var _a = this.$refs.track.getBoundingClientRect(),\n          _b = start,\n          trackStart = _a[_b],\n          _c = length,\n          trackLength = _a[_c];\n\n      var clickOffset = 'touches' in e ? e.touches[0][click] : e[click]; // It is possible for left to be NaN, force to number\n\n      var clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0;\n      if (this.vertical) clickPos = 1 - clickPos;\n      if (this.$vuetify.rtl) clickPos = 1 - clickPos;\n      return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue);\n    },\n    parseKeyDown: function parseKeyDown(e, value) {\n      if (!this.isInteractive) return;\n      var pageup = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].pageup,\n          pagedown = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].pagedown,\n          end = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].end,\n          home = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].home,\n          left = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].left,\n          right = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].right,\n          down = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].down,\n          up = _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].up;\n      if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return;\n      e.preventDefault();\n      var step = this.stepNumeric || 1;\n      var steps = (this.maxValue - this.minValue) / step;\n\n      if ([left, right, down, up].includes(e.keyCode)) {\n        var increase = this.$vuetify.rtl ? [left, up] : [right, up];\n        var direction = increase.includes(e.keyCode) ? 1 : -1;\n        var multiplier = e.shiftKey ? 3 : e.ctrlKey ? 2 : 1;\n        value = value + direction * step * multiplier;\n      } else if (e.keyCode === home) {\n        value = this.minValue;\n      } else if (e.keyCode === end) {\n        value = this.maxValue;\n      } else {\n        var direction = e.keyCode === pagedown ? 1 : -1;\n        value = value - direction * step * (steps > 100 ? steps / 10 : 10);\n      }\n\n      return value;\n    },\n    roundValue: function roundValue(value) {\n      if (!this.stepNumeric) return value; // Format input value using the same number\n      // of decimals places as in the step prop\n\n      var trimmedStep = this.step.toString().trim();\n      var decimals = trimmedStep.indexOf('.') > -1 ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;\n      var offset = this.minValue % this.stepNumeric;\n      var newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset;\n      return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals));\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSlider/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VSlider/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VSlider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSlider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSlider */ \"./src/components/VSlider/VSlider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlider\", function() { return _VSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSnackbar/VSnackbar.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VSnackbar/VSnackbar.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSnackbar/VSnackbar.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VSnackbar/VSnackbar.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSnackbar_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSnackbar.sass */ \"./src/components/VSnackbar/VSnackbar.sass\");\n/* harmony import */ var _VSnackbar_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSnackbar_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet/VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Styles\n // Components\n\n // Mixins\n\n\n\n\n // Utilities\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], Object(_mixins_positionable__WEBPACK_IMPORTED_MODULE_5__[\"factory\"])(['absolute', 'bottom', 'left', 'right', 'top'])\n/* @vue/component */\n).extend({\n  name: 'v-snackbar',\n  props: {\n    app: Boolean,\n    centered: Boolean,\n    contentClass: {\n      type: String,\n      default: ''\n    },\n    multiLine: Boolean,\n    text: Boolean,\n    timeout: {\n      type: [Number, String],\n      default: 5000\n    },\n    transition: {\n      type: [Boolean, String],\n      default: 'v-snack-transition',\n      validator: function validator(v) {\n        return typeof v === 'string' || v === false;\n      }\n    },\n    vertical: Boolean\n  },\n  data: function data() {\n    return {\n      activeTimeout: -1\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return {\n        'v-snack--absolute': this.absolute,\n        'v-snack--active': this.isActive,\n        'v-snack--bottom': this.bottom || !this.top,\n        'v-snack--centered': this.centered,\n        'v-snack--has-background': this.hasBackground,\n        'v-snack--left': this.left,\n        'v-snack--multi-line': this.multiLine && !this.vertical,\n        'v-snack--right': this.right,\n        'v-snack--text': this.text,\n        'v-snack--top': this.top,\n        'v-snack--vertical': this.vertical\n      };\n    },\n    // Text and outlined styles both\n    // use transparent backgrounds\n    hasBackground: function hasBackground() {\n      return !this.text && !this.outlined;\n    },\n    // Snackbar is dark by default\n    // override themeable logic.\n    isDark: function isDark() {\n      return this.hasBackground ? !this.light : _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.isDark.call(this);\n    },\n    styles: function styles() {\n      if (this.absolute || !this.app) return {};\n      var _a = this.$vuetify.application,\n          bar = _a.bar,\n          bottom = _a.bottom,\n          footer = _a.footer,\n          insetFooter = _a.insetFooter,\n          left = _a.left,\n          right = _a.right,\n          top = _a.top;\n      return {\n        paddingBottom: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(bottom + footer + insetFooter),\n        paddingLeft: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(left),\n        paddingRight: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(right),\n        paddingTop: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(bar + top)\n      };\n    }\n  },\n  watch: {\n    isActive: 'setTimeout',\n    timeout: 'setTimeout'\n  },\n  mounted: function mounted() {\n    if (this.isActive) this.setTimeout();\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('auto-height')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"removed\"])('auto-height', this);\n    }\n    /* istanbul ignore next */\n    // eslint-disable-next-line eqeqeq\n\n\n    if (this.timeout == 0) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"deprecate\"])('timeout=\"0\"', '-1', this);\n    }\n  },\n  methods: {\n    genActions: function genActions() {\n      return this.$createElement('div', {\n        staticClass: 'v-snack__action '\n      }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlot\"])(this, 'action', {\n        attrs: {\n          class: 'v-snack__btn'\n        }\n      })]);\n    },\n    genContent: function genContent() {\n      var _a;\n\n      return this.$createElement('div', {\n        staticClass: 'v-snack__content',\n        class: (_a = {}, _a[this.contentClass] = true, _a),\n        attrs: {\n          role: 'status',\n          'aria-live': 'polite'\n        }\n      }, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlot\"])(this)]);\n    },\n    genWrapper: function genWrapper() {\n      var _this = this;\n\n      var setColor = this.hasBackground ? this.setBackgroundColor : this.setTextColor;\n      var data = setColor(this.color, {\n        staticClass: 'v-snack__wrapper',\n        class: _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this),\n        style: _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this),\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }],\n        on: {\n          pointerenter: function pointerenter() {\n            return window.clearTimeout(_this.activeTimeout);\n          },\n          pointerleave: this.setTimeout\n        }\n      });\n      return this.$createElement('div', data, [this.genContent(), this.genActions()]);\n    },\n    genTransition: function genTransition() {\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, [this.genWrapper()]);\n    },\n    setTimeout: function setTimeout() {\n      var _this = this;\n\n      window.clearTimeout(this.activeTimeout);\n      var timeout = Number(this.timeout);\n\n      if (!this.isActive || // TODO: remove 0 in v3\n      [0, -1].includes(timeout)) {\n        return;\n      }\n\n      this.activeTimeout = window.setTimeout(function () {\n        _this.isActive = false;\n      }, timeout);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-snack',\n      class: this.classes,\n      style: this.styles\n    }, [this.transition !== false ? this.genTransition() : this.genWrapper()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSnackbar/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VSnackbar/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VSnackbar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSnackbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSnackbar */ \"./src/components/VSnackbar/VSnackbar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSnackbar\", function() { return _VSnackbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSnackbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/VSparkline.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VSparkline/VSparkline.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _helpers_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/core */ \"./src/components/VSparkline/helpers/core.ts\");\n/* harmony import */ var _helpers_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/path */ \"./src/components/VSparkline/helpers/path.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n // Utilities\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n  name: 'VSparkline',\n  inheritAttrs: false,\n  props: {\n    autoDraw: Boolean,\n    autoDrawDuration: {\n      type: Number,\n      default: 2000\n    },\n    autoDrawEasing: {\n      type: String,\n      default: 'ease'\n    },\n    autoLineWidth: {\n      type: Boolean,\n      default: false\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    fill: {\n      type: Boolean,\n      default: false\n    },\n    gradient: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    gradientDirection: {\n      type: String,\n      validator: function validator(val) {\n        return ['top', 'bottom', 'left', 'right'].includes(val);\n      },\n      default: 'top'\n    },\n    height: {\n      type: [String, Number],\n      default: 75\n    },\n    labels: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    labelSize: {\n      type: [Number, String],\n      default: 7\n    },\n    lineWidth: {\n      type: [String, Number],\n      default: 4\n    },\n    padding: {\n      type: [String, Number],\n      default: 8\n    },\n    showLabels: Boolean,\n    smooth: {\n      type: [Boolean, Number, String],\n      default: false\n    },\n    type: {\n      type: String,\n      default: 'trend',\n      validator: function validator(val) {\n        return ['trend', 'bar'].includes(val);\n      }\n    },\n    value: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    width: {\n      type: [Number, String],\n      default: 300\n    }\n  },\n  data: function data() {\n    return {\n      lastLength: 0\n    };\n  },\n  computed: {\n    parsedPadding: function parsedPadding() {\n      return Number(this.padding);\n    },\n    parsedWidth: function parsedWidth() {\n      return Number(this.width);\n    },\n    parsedHeight: function parsedHeight() {\n      return parseInt(this.height, 10);\n    },\n    parsedLabelSize: function parsedLabelSize() {\n      return parseInt(this.labelSize, 10) || 7;\n    },\n    totalHeight: function totalHeight() {\n      var height = this.parsedHeight;\n      if (this.hasLabels) height += parseInt(this.labelSize, 10) * 1.5;\n      return height;\n    },\n    totalWidth: function totalWidth() {\n      var width = this.parsedWidth;\n      if (this.type === 'bar') width = Math.max(this.value.length * this._lineWidth, width);\n      return width;\n    },\n    totalValues: function totalValues() {\n      return this.value.length;\n    },\n    _lineWidth: function _lineWidth() {\n      if (this.autoLineWidth && this.type !== 'trend') {\n        var totalPadding = this.parsedPadding * (this.totalValues + 1);\n        return (this.parsedWidth - totalPadding) / this.totalValues;\n      } else {\n        return parseFloat(this.lineWidth) || 4;\n      }\n    },\n    boundary: function boundary() {\n      if (this.type === 'bar') return {\n        minX: 0,\n        maxX: this.totalWidth,\n        minY: 0,\n        maxY: this.parsedHeight\n      };\n      var padding = this.parsedPadding;\n      return {\n        minX: padding,\n        maxX: this.totalWidth - padding,\n        minY: padding,\n        maxY: this.parsedHeight - padding\n      };\n    },\n    hasLabels: function hasLabels() {\n      return Boolean(this.showLabels || this.labels.length > 0 || this.$scopedSlots.label);\n    },\n    parsedLabels: function parsedLabels() {\n      var labels = [];\n      var points = this._values;\n      var len = points.length;\n\n      for (var i = 0; labels.length < len; i++) {\n        var item = points[i];\n        var value = this.labels[i];\n\n        if (!value) {\n          value = _typeof(item) === 'object' ? item.value : item;\n        }\n\n        labels.push({\n          x: item.x,\n          value: String(value)\n        });\n      }\n\n      return labels;\n    },\n    normalizedValues: function normalizedValues() {\n      return this.value.map(function (item) {\n        return typeof item === 'number' ? item : item.value;\n      });\n    },\n    _values: function _values() {\n      return this.type === 'trend' ? Object(_helpers_core__WEBPACK_IMPORTED_MODULE_2__[\"genPoints\"])(this.normalizedValues, this.boundary) : Object(_helpers_core__WEBPACK_IMPORTED_MODULE_2__[\"genBars\"])(this.normalizedValues, this.boundary);\n    },\n    textY: function textY() {\n      var y = this.parsedHeight;\n      if (this.type === 'trend') y -= 4;\n      return y;\n    },\n    _radius: function _radius() {\n      return this.smooth === true ? 8 : Number(this.smooth);\n    }\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler: function handler() {\n        var _this = this;\n\n        this.$nextTick(function () {\n          if (!_this.autoDraw || _this.type === 'bar' || !_this.$refs.path) return;\n          var path = _this.$refs.path;\n          var length = path.getTotalLength();\n\n          if (!_this.fill) {\n            path.style.transition = 'none';\n            path.style.strokeDasharray = length + ' ' + length;\n            path.style.strokeDashoffset = Math.abs(length - (_this.lastLength || 0)).toString();\n            path.getBoundingClientRect();\n            path.style.transition = \"stroke-dashoffset \" + _this.autoDrawDuration + \"ms \" + _this.autoDrawEasing;\n            path.style.strokeDashoffset = '0';\n          } else {\n            path.style.transformOrigin = 'bottom center';\n            path.style.transition = 'none';\n            path.style.transform = \"scaleY(0)\";\n            path.getBoundingClientRect();\n            path.style.transition = \"transform \" + _this.autoDrawDuration + \"ms \" + _this.autoDrawEasing;\n            path.style.transform = \"scaleY(1)\";\n          }\n\n          _this.lastLength = length;\n        });\n      }\n    }\n  },\n  methods: {\n    genGradient: function genGradient() {\n      var _this = this;\n\n      var gradientDirection = this.gradientDirection;\n      var gradient = this.gradient.slice(); // Pushes empty string to force\n      // a fallback to currentColor\n\n      if (!gradient.length) gradient.push('');\n      var len = Math.max(gradient.length - 1, 1);\n      var stops = gradient.reverse().map(function (color, index) {\n        return _this.$createElement('stop', {\n          attrs: {\n            offset: index / len,\n            'stop-color': color || 'currentColor'\n          }\n        });\n      });\n      return this.$createElement('defs', [this.$createElement('linearGradient', {\n        attrs: {\n          id: this._uid,\n          gradientUnits: 'userSpaceOnUse',\n          x1: gradientDirection === 'left' ? '100%' : '0',\n          y1: gradientDirection === 'top' ? '100%' : '0',\n          x2: gradientDirection === 'right' ? '100%' : '0',\n          y2: gradientDirection === 'bottom' ? '100%' : '0'\n        }\n      }, stops)]);\n    },\n    genG: function genG(children) {\n      return this.$createElement('g', {\n        style: {\n          fontSize: '8',\n          textAnchor: 'middle',\n          dominantBaseline: 'mathematical',\n          fill: 'currentColor'\n        } // TODO: TS 3.5 is too eager with the array type here\n\n      }, children);\n    },\n    genPath: function genPath() {\n      var points = Object(_helpers_core__WEBPACK_IMPORTED_MODULE_2__[\"genPoints\"])(this.normalizedValues, this.boundary);\n      return this.$createElement('path', {\n        attrs: {\n          d: Object(_helpers_path__WEBPACK_IMPORTED_MODULE_3__[\"genPath\"])(points, this._radius, this.fill, this.parsedHeight),\n          fill: this.fill ? \"url(#\" + this._uid + \")\" : 'none',\n          stroke: this.fill ? 'none' : \"url(#\" + this._uid + \")\"\n        },\n        ref: 'path'\n      });\n    },\n    genLabels: function genLabels(offsetX) {\n      var _this = this;\n\n      var children = this.parsedLabels.map(function (item, i) {\n        return _this.$createElement('text', {\n          attrs: {\n            x: item.x + offsetX + _this._lineWidth / 2,\n            y: _this.textY + _this.parsedLabelSize * 0.75,\n            'font-size': Number(_this.labelSize) || 7\n          }\n        }, [_this.genLabel(item, i)]);\n      });\n      return this.genG(children);\n    },\n    genLabel: function genLabel(item, index) {\n      return this.$scopedSlots.label ? this.$scopedSlots.label({\n        index: index,\n        value: item.value\n      }) : item.value;\n    },\n    genBars: function genBars() {\n      if (!this.value || this.totalValues < 2) return undefined;\n\n      var bars = Object(_helpers_core__WEBPACK_IMPORTED_MODULE_2__[\"genBars\"])(this.normalizedValues, this.boundary);\n\n      var offsetX = (Math.abs(bars[0].x - bars[1].x) - this._lineWidth) / 2;\n      return this.$createElement('svg', {\n        attrs: {\n          display: 'block',\n          viewBox: \"0 0 \" + this.totalWidth + \" \" + this.totalHeight\n        }\n      }, [this.genGradient(), this.genClipPath(bars, offsetX, this._lineWidth, 'sparkline-bar-' + this._uid), this.hasLabels ? this.genLabels(offsetX) : undefined, this.$createElement('g', {\n        attrs: {\n          'clip-path': \"url(#sparkline-bar-\" + this._uid + \"-clip)\",\n          fill: \"url(#\" + this._uid + \")\"\n        }\n      }, [this.$createElement('rect', {\n        attrs: {\n          x: 0,\n          y: 0,\n          width: this.totalWidth,\n          height: this.height\n        }\n      })])]);\n    },\n    genClipPath: function genClipPath(bars, offsetX, lineWidth, id) {\n      var _this = this;\n\n      var rounding = typeof this.smooth === 'number' ? this.smooth : this.smooth ? 2 : 0;\n      return this.$createElement('clipPath', {\n        attrs: {\n          id: id + \"-clip\"\n        }\n      }, bars.map(function (item) {\n        return _this.$createElement('rect', {\n          attrs: {\n            x: item.x + offsetX,\n            y: item.y,\n            width: lineWidth,\n            height: item.height,\n            rx: rounding,\n            ry: rounding\n          }\n        }, [_this.autoDraw ? _this.$createElement('animate', {\n          attrs: {\n            attributeName: 'height',\n            from: 0,\n            to: item.height,\n            dur: _this.autoDrawDuration + \"ms\",\n            fill: 'freeze'\n          }\n        }) : undefined]);\n      }));\n    },\n    genTrend: function genTrend() {\n      return this.$createElement('svg', this.setTextColor(this.color, {\n        attrs: __assign(__assign({}, this.$attrs), {\n          display: 'block',\n          'stroke-width': this._lineWidth || 1,\n          viewBox: \"0 0 \" + this.width + \" \" + this.totalHeight\n        })\n      }), [this.genGradient(), this.hasLabels && this.genLabels(-(this._lineWidth / 2)), this.genPath()]);\n    }\n  },\n  render: function render(h) {\n    if (this.totalValues < 2) return undefined;\n    return this.type === 'trend' ? this.genTrend() : this.genBars();\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/helpers/core.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSparkline/helpers/core.ts ***!\n  \\***************************************************/\n/*! exports provided: genPoints, genBars */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genPoints\", function() { return genPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genBars\", function() { return genBars; });\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nfunction genPoints(values, boundary) {\n  var minX = boundary.minX,\n      maxX = boundary.maxX,\n      minY = boundary.minY,\n      maxY = boundary.maxY;\n  var totalValues = values.length;\n  var maxValue = Math.max.apply(Math, __spreadArray([], __read(values), false));\n  var minValue = Math.min.apply(Math, __spreadArray([], __read(values), false));\n  var gridX = (maxX - minX) / (totalValues - 1);\n  var gridY = (maxY - minY) / (maxValue - minValue || 1);\n  return values.map(function (value, index) {\n    return {\n      x: minX + index * gridX,\n      y: maxY - (value - minValue) * gridY,\n      value: value\n    };\n  });\n}\nfunction genBars(values, boundary) {\n  var minX = boundary.minX,\n      maxX = boundary.maxX,\n      minY = boundary.minY,\n      maxY = boundary.maxY;\n  var totalValues = values.length;\n  var maxValue = Math.max.apply(Math, __spreadArray([], __read(values), false));\n  var minValue = Math.min.apply(Math, __spreadArray([], __read(values), false));\n  if (minValue > 0) minValue = 0;\n  if (maxValue < 0) maxValue = 0;\n  var gridX = maxX / totalValues;\n  var gridY = (maxY - minY) / (maxValue - minValue || 1);\n  var horizonY = maxY - Math.abs(minValue * gridY);\n  return values.map(function (value, index) {\n    var height = Math.abs(gridY * value);\n    return {\n      x: minX + index * gridX,\n      y: horizonY - height + +(value < 0) * height,\n      height: height,\n      value: value\n    };\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/helpers/math.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSparkline/helpers/math.ts ***!\n  \\***************************************************/\n/*! exports provided: checkCollinear, getDistance, moveTo */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkCollinear\", function() { return checkCollinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDistance\", function() { return getDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveTo\", function() { return moveTo; });\nfunction int(value) {\n  return parseInt(value, 10);\n}\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\n\n\nfunction checkCollinear(p0, p1, p2) {\n  return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);\n}\nfunction getDistance(p1, p2) {\n  return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nfunction moveTo(to, from, radius) {\n  var vector = {\n    x: to.x - from.x,\n    y: to.y - from.y\n  };\n  var length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n  var unitVector = {\n    x: vector.x / length,\n    y: vector.y / length\n  };\n  return {\n    x: from.x + unitVector.x * radius,\n    y: from.y + unitVector.y * radius\n  };\n}\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/helpers/path.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSparkline/helpers/path.ts ***!\n  \\***************************************************/\n/*! exports provided: genPath */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genPath\", function() { return genPath; });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math */ \"./src/components/VSparkline/helpers/math.ts\");\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\n\nfunction genPath(points, radius, fill, height) {\n  if (fill === void 0) {\n    fill = false;\n  }\n\n  if (height === void 0) {\n    height = 75;\n  }\n\n  var start = points.shift();\n  var end = points[points.length - 1];\n  return (fill ? \"M\" + start.x + \" \" + (height - start.x + 2) + \" L\" + start.x + \" \" + start.y : \"M\" + start.x + \" \" + start.y) + points.map(function (point, index) {\n    var next = points[index + 1];\n    var prev = points[index - 1] || start;\n    var isCollinear = next && Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"checkCollinear\"])(next, point, prev);\n\n    if (!next || isCollinear) {\n      return \"L\" + point.x + \" \" + point.y;\n    }\n\n    var threshold = Math.min(Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"getDistance\"])(prev, point), Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"getDistance\"])(next, point));\n    var isTooCloseForRadius = threshold / 2 < radius;\n    var radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;\n    var before = Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"moveTo\"])(prev, point, radiusForPoint);\n    var after = Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"moveTo\"])(next, point, radiusForPoint);\n    return \"L\" + before.x + \" \" + before.y + \"S\" + point.x + \" \" + point.y + \" \" + after.x + \" \" + after.y;\n  }).join('') + (fill ? \"L\" + end.x + \" \" + (height - start.x + 2) + \" Z\" : '');\n}\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VSparkline/index.ts ***!\n  \\********************************************/\n/*! exports provided: VSparkline, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSparkline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSparkline */ \"./src/components/VSparkline/VSparkline.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSparkline\", function() { return _VSparkline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSparkline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSpeedDial/VSpeedDial.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSpeedDial/VSpeedDial.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSpeedDial/VSpeedDial.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VSpeedDial/VSpeedDial.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSpeedDial_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSpeedDial.sass */ \"./src/components/VSpeedDial/VSpeedDial.sass\");\n/* harmony import */ var _VSpeedDial_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSpeedDial_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _mixins_transitionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/transitionable */ \"./src/mixins/transitionable/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n // Mixins\n\n\n\n // Directives\n\n // Types\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_positionable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_transitionable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n  name: 'v-speed-dial',\n  directives: {\n    ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  },\n  props: {\n    direction: {\n      type: String,\n      default: 'top',\n      validator: function validator(val) {\n        return ['top', 'right', 'bottom', 'left'].includes(val);\n      }\n    },\n    openOnHover: Boolean,\n    transition: {\n      type: String,\n      default: 'scale-transition'\n    }\n  },\n  computed: {\n    classes: function classes() {\n      var _a;\n\n      return _a = {\n        'v-speed-dial': true,\n        'v-speed-dial--top': this.top,\n        'v-speed-dial--right': this.right,\n        'v-speed-dial--bottom': this.bottom,\n        'v-speed-dial--left': this.left,\n        'v-speed-dial--absolute': this.absolute,\n        'v-speed-dial--fixed': this.fixed\n      }, _a[\"v-speed-dial--direction-\" + this.direction] = true, _a['v-speed-dial--is-active'] = this.isActive, _a;\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var children = [];\n    var data = {\n      class: this.classes,\n      directives: [{\n        name: 'click-outside',\n        value: function value() {\n          return _this.isActive = false;\n        }\n      }],\n      on: {\n        click: function click() {\n          return _this.isActive = !_this.isActive;\n        }\n      }\n    };\n\n    if (this.openOnHover) {\n      data.on.mouseenter = function () {\n        return _this.isActive = true;\n      };\n\n      data.on.mouseleave = function () {\n        return _this.isActive = false;\n      };\n    }\n\n    if (this.isActive) {\n      var btnCount_1 = 0;\n      children = (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(this) || []).map(function (b, i) {\n        if (b.tag && typeof b.componentOptions !== 'undefined' && (b.componentOptions.Ctor.options.name === 'v-btn' || b.componentOptions.Ctor.options.name === 'v-tooltip')) {\n          btnCount_1++;\n          return h('div', {\n            style: {\n              transitionDelay: btnCount_1 * 0.05 + 's'\n            },\n            key: i\n          }, [b]);\n        } else {\n          b.key = i;\n          return b;\n        }\n      });\n    }\n\n    var list = h('transition-group', {\n      class: 'v-speed-dial__list',\n      props: {\n        name: this.transition,\n        mode: this.mode,\n        origin: this.origin,\n        tag: 'div'\n      }\n    }, children);\n    return h('div', data, [Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(this, 'activator'), list]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSpeedDial/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VSpeedDial/index.ts ***!\n  \\********************************************/\n/*! exports provided: VSpeedDial, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSpeedDial__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSpeedDial */ \"./src/components/VSpeedDial/VSpeedDial.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpeedDial\", function() { return _VSpeedDial__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSpeedDial__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepper.sass\":\n/*!***********************************************!*\\\n  !*** ./src/components/VStepper/VStepper.sass ***!\n  \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepper.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VStepper/VStepper.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VStepper_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VStepper.sass */ \"./src/components/VStepper/VStepper.sass\");\n/* harmony import */ var _VStepper_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VStepper_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _mixins_proxyable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/proxyable */ \"./src/mixins/proxyable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Mixins\n\n\n // Utilities\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"provide\"])('stepper'), _mixins_proxyable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-stepper',\n  provide: function provide() {\n    return {\n      stepClick: this.stepClick,\n      isVertical: this.vertical\n    };\n  },\n  props: {\n    altLabels: Boolean,\n    nonLinear: Boolean,\n    flat: Boolean,\n    vertical: Boolean\n  },\n  data: function data() {\n    var data = {\n      isBooted: false,\n      steps: [],\n      content: [],\n      isReverse: false\n    };\n    data.internalLazyValue = this.value != null ? this.value : (data[0] || {}).step || 1;\n    return data;\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-stepper--flat': this.flat,\n        'v-stepper--is-booted': this.isBooted,\n        'v-stepper--vertical': this.vertical,\n        'v-stepper--alt-labels': this.altLabels,\n        'v-stepper--non-linear': this.nonLinear\n      }, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this));\n    },\n    styles: function styles() {\n      return __assign({}, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this));\n    }\n  },\n  watch: {\n    internalValue: function internalValue(val, oldVal) {\n      this.isReverse = Number(val) < Number(oldVal);\n      oldVal && (this.isBooted = true);\n      this.updateView();\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$listeners.input) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_5__[\"breaking\"])('@input', '@change', this);\n    }\n  },\n  mounted: function mounted() {\n    this.updateView();\n  },\n  methods: {\n    register: function register(item) {\n      if (item.$options.name === 'v-stepper-step') {\n        this.steps.push(item);\n      } else if (item.$options.name === 'v-stepper-content') {\n        item.isVertical = this.vertical;\n        this.content.push(item);\n      }\n    },\n    unregister: function unregister(item) {\n      if (item.$options.name === 'v-stepper-step') {\n        this.steps = this.steps.filter(function (i) {\n          return i !== item;\n        });\n      } else if (item.$options.name === 'v-stepper-content') {\n        item.isVertical = this.vertical;\n        this.content = this.content.filter(function (i) {\n          return i !== item;\n        });\n      }\n    },\n    stepClick: function stepClick(step) {\n      var _this = this;\n\n      this.$nextTick(function () {\n        return _this.internalValue = step;\n      });\n    },\n    updateView: function updateView() {\n      for (var index = this.steps.length; --index >= 0;) {\n        this.steps[index].toggle(this.internalValue);\n      }\n\n      for (var index = this.content.length; --index >= 0;) {\n        this.content[index].toggle(this.internalValue, this.isReverse);\n      }\n    }\n  },\n  render: function render(h) {\n    return h(this.tag, {\n      staticClass: 'v-stepper',\n      class: this.classes,\n      style: this.styles\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepperContent.ts\":\n/*!****************************************************!*\\\n  !*** ./src/components/VStepper/VStepperContent.ts ***!\n  \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Components\n // Mixins\n\n // Helpers\n\n // Utilities\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__[\"inject\"])('stepper', 'v-stepper-content', 'v-stepper'));\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-stepper-content',\n  inject: {\n    isVerticalProvided: {\n      from: 'isVertical'\n    }\n  },\n  props: {\n    step: {\n      type: [Number, String],\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      height: 0,\n      // Must be null to allow\n      // previous comparison\n      isActive: null,\n      isReverse: false,\n      isVertical: this.isVerticalProvided\n    };\n  },\n  computed: {\n    computedTransition: function computedTransition() {\n      // Fix for #8978\n      var reverse = this.$vuetify.rtl ? !this.isReverse : this.isReverse;\n      return reverse ? _transitions__WEBPACK_IMPORTED_MODULE_0__[\"VTabReverseTransition\"] : _transitions__WEBPACK_IMPORTED_MODULE_0__[\"VTabTransition\"];\n    },\n    styles: function styles() {\n      if (!this.isVertical) return {};\n      return {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(this.height)\n      };\n    }\n  },\n  watch: {\n    isActive: function isActive(current, previous) {\n      // If active and the previous state\n      // was null, is just booting up\n      if (current && previous == null) {\n        this.height = 'auto';\n        return;\n      }\n\n      if (!this.isVertical) return;\n      if (this.isActive) this.enter();else this.leave();\n    }\n  },\n  mounted: function mounted() {\n    this.$refs.wrapper.addEventListener('transitionend', this.onTransition, false);\n    this.stepper && this.stepper.register(this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.$refs.wrapper.removeEventListener('transitionend', this.onTransition, false);\n    this.stepper && this.stepper.unregister(this);\n  },\n  methods: {\n    onTransition: function onTransition(e) {\n      if (!this.isActive || e.propertyName !== 'height') return;\n      this.height = 'auto';\n    },\n    enter: function enter() {\n      var _this = this;\n\n      var scrollHeight = 0; // Render bug with height\n\n      requestAnimationFrame(function () {\n        scrollHeight = _this.$refs.wrapper.scrollHeight;\n      });\n      this.height = 0; // Give the collapsing element time to collapse\n\n      setTimeout(function () {\n        return _this.isActive && (_this.height = scrollHeight || 'auto');\n      }, 450);\n    },\n    leave: function leave() {\n      var _this = this;\n\n      this.height = this.$refs.wrapper.clientHeight;\n      setTimeout(function () {\n        return _this.height = 0;\n      }, 10);\n    },\n    toggle: function toggle(step, reverse) {\n      this.isActive = step.toString() === this.step.toString();\n      this.isReverse = reverse;\n    }\n  },\n  render: function render(h) {\n    var contentData = {\n      staticClass: 'v-stepper__content'\n    };\n    var wrapperData = {\n      staticClass: 'v-stepper__wrapper',\n      style: this.styles,\n      ref: 'wrapper'\n    };\n\n    if (!this.isVertical) {\n      contentData.directives = [{\n        name: 'show',\n        value: this.isActive\n      }];\n    }\n\n    var wrapper = h('div', wrapperData, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this));\n    var content = h('div', contentData, [wrapper]);\n    return h(this.computedTransition, {\n      on: this.$listeners\n    }, [content]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepperStep.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VStepper/VStepperStep.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Components\n // Mixins\n\n\n // Directives\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"inject\"])('stepper', 'v-stepper-step', 'v-stepper'));\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-stepper-step',\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n  },\n  inject: ['stepClick'],\n  props: {\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    complete: Boolean,\n    completeIcon: {\n      type: String,\n      default: '$complete'\n    },\n    editable: Boolean,\n    editIcon: {\n      type: String,\n      default: '$edit'\n    },\n    errorIcon: {\n      type: String,\n      default: '$error'\n    },\n    rules: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    step: [Number, String]\n  },\n  data: function data() {\n    return {\n      isActive: false,\n      isInactive: true\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return {\n        'v-stepper__step--active': this.isActive,\n        'v-stepper__step--editable': this.editable,\n        'v-stepper__step--inactive': this.isInactive,\n        'v-stepper__step--error error--text': this.hasError,\n        'v-stepper__step--complete': this.complete\n      };\n    },\n    hasError: function hasError() {\n      return this.rules.some(function (validate) {\n        return validate() !== true;\n      });\n    }\n  },\n  mounted: function mounted() {\n    this.stepper && this.stepper.register(this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.stepper && this.stepper.unregister(this);\n  },\n  methods: {\n    click: function click(e) {\n      e.stopPropagation();\n      this.$emit('click', e);\n\n      if (this.editable) {\n        this.stepClick(this.step);\n      }\n    },\n    genIcon: function genIcon(icon) {\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], icon);\n    },\n    genLabel: function genLabel() {\n      return this.$createElement('div', {\n        staticClass: 'v-stepper__label'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this));\n    },\n    genStep: function genStep() {\n      var color = !this.hasError && (this.complete || this.isActive) ? this.color : false;\n      return this.$createElement('span', this.setBackgroundColor(color, {\n        staticClass: 'v-stepper__step__step'\n      }), this.genStepContent());\n    },\n    genStepContent: function genStepContent() {\n      var children = [];\n\n      if (this.hasError) {\n        children.push(this.genIcon(this.errorIcon));\n      } else if (this.complete) {\n        if (this.editable) {\n          children.push(this.genIcon(this.editIcon));\n        } else {\n          children.push(this.genIcon(this.completeIcon));\n        }\n      } else {\n        children.push(String(this.step));\n      }\n\n      return children;\n    },\n    keyboardClick: function keyboardClick(e) {\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"keyCodes\"].space) {\n        this.click(e);\n      }\n    },\n    toggle: function toggle(step) {\n      this.isActive = step.toString() === this.step.toString();\n      this.isInactive = Number(step) < Number(this.step);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      attrs: {\n        tabindex: this.editable ? 0 : -1\n      },\n      staticClass: 'v-stepper__step',\n      class: this.classes,\n      directives: [{\n        name: 'ripple',\n        value: this.editable\n      }],\n      on: {\n        click: this.click,\n        keydown: this.keyboardClick\n      }\n    }, [this.genStep(), this.genLabel()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VStepper/index.ts ***!\n  \\******************************************/\n/*! exports provided: VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VStepperHeader\", function() { return VStepperHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VStepperItems\", function() { return VStepperItems; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VStepper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VStepper */ \"./src/components/VStepper/VStepper.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepper\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VStepperStep__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VStepperStep */ \"./src/components/VStepper/VStepperStep.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperStep\", function() { return _VStepperStep__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VStepperContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VStepperContent */ \"./src/components/VStepper/VStepperContent.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperContent\", function() { return _VStepperContent__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\nvar VStepperHeader = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-stepper__header');\nvar VStepperItems = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-stepper__items');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VStepper: _VStepper__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VStepperContent: _VStepperContent__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VStepperStep: _VStepperStep__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VStepperHeader: VStepperHeader,\n    VStepperItems: VStepperItems\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VSubheader/VSubheader.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSubheader/VSubheader.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSubheader/VSubheader.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VSubheader/VSubheader.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSubheader_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSubheader.sass */ \"./src/components/VSubheader/VSubheader.sass\");\n/* harmony import */ var _VSubheader_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSubheader_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-subheader',\n  props: {\n    inset: Boolean\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-subheader',\n      class: __assign({\n        'v-subheader--inset': this.inset\n      }, this.themeClasses),\n      attrs: this.$attrs,\n      on: this.$listeners\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSubheader/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VSubheader/index.ts ***!\n  \\********************************************/\n/*! exports provided: VSubheader, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSubheader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSubheader */ \"./src/components/VSubheader/VSubheader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSubheader\", function() { return _VSubheader__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSubheader__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSwitch/VSwitch.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VSwitch/VSwitch.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSwitch/VSwitch.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VSwitch/VSwitch.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../styles/components/_selection-controls.sass */ \"./src/styles/components/_selection-controls.sass\");\n/* harmony import */ var _styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styles_components_selection_controls_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSwitch_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VSwitch.sass */ \"./src/components/VSwitch/VSwitch.sass\");\n/* harmony import */ var _VSwitch_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_VSwitch_sass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_selectable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/selectable */ \"./src/mixins/selectable/index.ts\");\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch/index.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _VProgressCircular_VProgressCircular__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../VProgressCircular/VProgressCircular */ \"./src/components/VProgressCircular/VProgressCircular.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}; // Styles\n\n\n\n // Mixins\n\n\n // Directives\n\n // Components\n\n\n // Helpers\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_selectable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n  name: 'v-switch',\n  directives: {\n    Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  },\n  props: {\n    inset: Boolean,\n    loading: {\n      type: [Boolean, String],\n      default: false\n    },\n    flat: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.computed.classes.call(this)), {\n        'v-input--selection-controls v-input--switch': true,\n        'v-input--switch--flat': this.flat,\n        'v-input--switch--inset': this.inset\n      });\n    },\n    attrs: function attrs() {\n      return {\n        'aria-checked': String(this.isActive),\n        'aria-disabled': String(this.isDisabled),\n        role: 'switch'\n      };\n    },\n    // Do not return undefined if disabled,\n    // according to spec, should still show\n    // a color when disabled and active\n    validationState: function validationState() {\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor !== null) return this.computedColor;\n      return undefined;\n    },\n    switchData: function switchData() {\n      return this.setTextColor(this.loading ? undefined : this.validationState, {\n        class: this.themeClasses\n      });\n    }\n  },\n  methods: {\n    genDefaultSlot: function genDefaultSlot() {\n      return [this.genSwitch(), this.genLabel()];\n    },\n    genSwitch: function genSwitch() {\n      var _a = this.attrs$,\n          title = _a.title,\n          switchAttrs = __rest(_a, [\"title\"]);\n\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.genInput('checkbox', __assign(__assign({}, this.attrs), switchAttrs)), this.genRipple(this.setTextColor(this.validationState, {\n        directives: [{\n          name: 'touch',\n          value: {\n            left: this.onSwipeLeft,\n            right: this.onSwipeRight\n          }\n        }]\n      })), this.$createElement('div', __assign({\n        staticClass: 'v-input--switch__track'\n      }, this.switchData)), this.$createElement('div', __assign({\n        staticClass: 'v-input--switch__thumb'\n      }, this.switchData), [this.genProgress()])]);\n    },\n    genProgress: function genProgress() {\n      return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_5__[\"VFabTransition\"], {}, [this.loading === false ? null : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlot\"])(this, 'progress') || this.$createElement(_VProgressCircular_VProgressCircular__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n        props: {\n          color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n          size: 16,\n          width: 2,\n          indeterminate: true\n        }\n      })]);\n    },\n    onSwipeLeft: function onSwipeLeft() {\n      if (this.isActive) this.onChange();\n    },\n    onSwipeRight: function onSwipeRight() {\n      if (!this.isActive) this.onChange();\n    },\n    onKeydown: function onKeydown(e) {\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"keyCodes\"].left && this.isActive || e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"keyCodes\"].right && !this.isActive) this.onChange();\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSwitch/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VSwitch/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VSwitch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSwitch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSwitch */ \"./src/components/VSwitch/VSwitch.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSwitch\", function() { return _VSwitch__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSwitch__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSystemBar/VSystemBar.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VSystemBar/VSystemBar.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VSystemBar/VSystemBar.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VSystemBar/VSystemBar.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSystemBar_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSystemBar.sass */ \"./src/components/VSystemBar/VSystemBar.sass\");\n/* harmony import */ var _VSystemBar_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VSystemBar_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Mixins\n\n\n\n // Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('bar', ['height', 'window']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-system-bar',\n  props: {\n    height: [Number, String],\n    lightsOut: Boolean,\n    window: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-system-bar--lights-out': this.lightsOut,\n        'v-system-bar--absolute': this.absolute,\n        'v-system-bar--fixed': !this.absolute && (this.app || this.fixed),\n        'v-system-bar--window': this.window\n      }, this.themeClasses);\n    },\n    computedHeight: function computedHeight() {\n      if (this.height) {\n        return isNaN(parseInt(this.height)) ? this.height : parseInt(this.height);\n      }\n\n      return this.window ? 32 : 24;\n    },\n    styles: function styles() {\n      return {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.computedHeight)\n      };\n    }\n  },\n  methods: {\n    updateApplication: function updateApplication() {\n      return this.$el ? this.$el.clientHeight : this.computedHeight;\n    }\n  },\n  render: function render(h) {\n    var data = {\n      staticClass: 'v-system-bar',\n      class: this.classes,\n      style: this.styles,\n      on: this.$listeners\n    };\n    return h('div', this.setBackgroundColor(this.color, data), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSystemBar/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VSystemBar/index.ts ***!\n  \\********************************************/\n/*! exports provided: VSystemBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSystemBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSystemBar */ \"./src/components/VSystemBar/VSystemBar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSystemBar\", function() { return _VSystemBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSystemBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTab.ts\":\n/*!**************************************!*\\\n  !*** ./src/components/VTabs/VTab.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_routable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], // Must be after routable\n// to overwrite activeClass\nObject(_mixins_groupable__WEBPACK_IMPORTED_MODULE_0__[\"factory\"])('tabsBar'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend().extend({\n  name: 'v-tab',\n  props: {\n    ripple: {\n      type: [Boolean, Object],\n      default: true\n    },\n    tabValue: {\n      required: false\n    }\n  },\n  data: function data() {\n    return {\n      proxyClass: 'v-tab--active'\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign({\n        'v-tab': true\n      }, _mixins_routable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-tab--disabled': this.disabled\n      }), this.groupClasses);\n    },\n    value: function value() {\n      if (this.tabValue != null) return this.tabValue;\n      var to = this.to || this.href;\n      if (to == null) return to;\n\n      if (this.$router && this.to === Object(this.to)) {\n        var resolve = this.$router.resolve(this.to, this.$route, this.append);\n        to = resolve.href;\n      }\n\n      return to.replace('#', '');\n    }\n  },\n  methods: {\n    click: function click(e) {\n      // Prevent keyboard actions\n      // from children elements\n      // within disabled tabs\n      if (this.disabled) {\n        e.preventDefault();\n        return;\n      } // If user provides an\n      // actual link, do not\n      // prevent default\n\n\n      if (this.href && this.href.indexOf('#') > -1) e.preventDefault();\n      if (e.detail) this.$el.blur();\n      this.$emit('click', e);\n      this.to || this.toggle();\n    },\n    toggle: function toggle() {\n      // VItemGroup treats a change event as a click\n      if (!this.isActive || !this.tabsBar.mandatory && !this.to) {\n        this.$emit('change');\n      }\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var _a = this.generateRouteLink(),\n        tag = _a.tag,\n        data = _a.data;\n\n    data.attrs = __assign(__assign({}, data.attrs), {\n      'aria-selected': String(this.isActive),\n      role: 'tab',\n      tabindex: this.disabled ? -1 : 0\n    });\n    data.on = __assign(__assign({}, data.on), {\n      keydown: function keydown(e) {\n        if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].enter) _this.click(e);\n\n        _this.$emit('keydown', e);\n      }\n    });\n    return h(tag, data, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabItem.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VTabs/VTabItem.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VWindow/VWindowItem */ \"./src/components/VWindow/VWindowItem.ts\");\n// Extensions\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'v-tab-item',\n  props: {\n    id: String\n  },\n  methods: {\n    genWindowItem: function genWindowItem() {\n      var item = _VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.methods.genWindowItem.call(this);\n      item.data.domProps = item.data.domProps || {};\n      item.data.domProps.id = this.id || this.value;\n      return item;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabs.sass\":\n/*!*****************************************!*\\\n  !*** ./src/components/VTabs/VTabs.sass ***!\n  \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabs.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VTabs/VTabs.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTabs_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTabs.sass */ \"./src/components/VTabs/VTabs.sass\");\n/* harmony import */ var _VTabs_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTabs_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VTabsBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTabsBar */ \"./src/components/VTabs/VTabsBar.ts\");\n/* harmony import */ var _VTabsItems__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VTabsItems */ \"./src/components/VTabs/VTabsItems.ts\");\n/* harmony import */ var _VTabsSlider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VTabsSlider */ \"./src/components/VTabs/VTabsSlider.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/proxyable */ \"./src/mixins/proxyable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Components\n\n\n\n // Mixins\n\n\n\n // Directives\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-tabs',\n  directives: {\n    Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: ''\n    },\n    alignWithTitle: Boolean,\n    backgroundColor: String,\n    centerActive: Boolean,\n    centered: Boolean,\n    fixedTabs: Boolean,\n    grow: Boolean,\n    height: {\n      type: [Number, String],\n      default: undefined\n    },\n    hideSlider: Boolean,\n    iconsAndText: Boolean,\n    mobileBreakpoint: [String, Number],\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    optional: Boolean,\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    right: Boolean,\n    showArrows: [Boolean, String],\n    sliderColor: String,\n    sliderSize: {\n      type: [Number, String],\n      default: 2\n    },\n    vertical: Boolean\n  },\n  data: function data() {\n    return {\n      resizeTimeout: 0,\n      slider: {\n        height: null,\n        left: null,\n        right: null,\n        top: null,\n        width: null\n      },\n      transitionTime: 300\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-tabs--align-with-title': this.alignWithTitle,\n        'v-tabs--centered': this.centered,\n        'v-tabs--fixed-tabs': this.fixedTabs,\n        'v-tabs--grow': this.grow,\n        'v-tabs--icons-and-text': this.iconsAndText,\n        'v-tabs--right': this.right,\n        'v-tabs--vertical': this.vertical\n      }, this.themeClasses);\n    },\n    isReversed: function isReversed() {\n      return this.$vuetify.rtl && this.vertical;\n    },\n    sliderStyles: function sliderStyles() {\n      return {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.slider.height),\n        left: this.isReversed ? undefined : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.slider.left),\n        right: this.isReversed ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.slider.right) : undefined,\n        top: this.vertical ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.slider.top) : undefined,\n        transition: this.slider.left != null ? null : 'none',\n        width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.slider.width)\n      };\n    },\n    computedColor: function computedColor() {\n      if (this.color) return this.color;else if (this.isDark && !this.appIsDark) return 'white';else return 'primary';\n    }\n  },\n  watch: {\n    alignWithTitle: 'callSlider',\n    centered: 'callSlider',\n    centerActive: 'callSlider',\n    fixedTabs: 'callSlider',\n    grow: 'callSlider',\n    iconsAndText: 'callSlider',\n    right: 'callSlider',\n    showArrows: 'callSlider',\n    vertical: 'callSlider',\n    '$vuetify.application.left': 'onResize',\n    '$vuetify.application.right': 'onResize',\n    '$vuetify.rtl': 'onResize'\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    if (typeof ResizeObserver !== 'undefined') {\n      var obs_1 = new ResizeObserver(function () {\n        _this.onResize();\n      });\n      obs_1.observe(this.$el);\n      this.$on('hook:destroyed', function () {\n        obs_1.disconnect();\n      });\n    }\n\n    this.$nextTick(function () {\n      window.setTimeout(_this.callSlider, 30);\n    });\n  },\n  methods: {\n    callSlider: function callSlider() {\n      var _this = this;\n\n      if (this.hideSlider || !this.$refs.items || !this.$refs.items.selectedItems.length) {\n        this.slider.width = 0;\n        return false;\n      }\n\n      this.$nextTick(function () {\n        // Give screen time to paint\n        var activeTab = _this.$refs.items.selectedItems[0];\n        /* istanbul ignore if */\n\n        if (!activeTab || !activeTab.$el) {\n          _this.slider.width = 0;\n          _this.slider.left = 0;\n          return;\n        }\n\n        var el = activeTab.$el;\n        _this.slider = {\n          height: !_this.vertical ? Number(_this.sliderSize) : el.scrollHeight,\n          left: _this.vertical ? 0 : el.offsetLeft,\n          right: _this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n          top: el.offsetTop,\n          width: _this.vertical ? Number(_this.sliderSize) : el.scrollWidth\n        };\n      });\n      return true;\n    },\n    genBar: function genBar(items, slider) {\n      var _this = this;\n\n      var data = {\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.height)\n        },\n        props: {\n          activeClass: this.activeClass,\n          centerActive: this.centerActive,\n          dark: this.dark,\n          light: this.light,\n          mandatory: !this.optional,\n          mobileBreakpoint: this.mobileBreakpoint,\n          nextIcon: this.nextIcon,\n          prevIcon: this.prevIcon,\n          showArrows: this.showArrows,\n          value: this.internalValue\n        },\n        on: {\n          'call:slider': this.callSlider,\n          change: function change(val) {\n            _this.internalValue = val;\n          }\n        },\n        ref: 'items'\n      };\n      this.setTextColor(this.computedColor, data);\n      this.setBackgroundColor(this.backgroundColor, data);\n      return this.$createElement(_VTabsBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"], data, [this.genSlider(slider), items]);\n    },\n    genItems: function genItems(items, item) {\n      var _this = this; // If user provides items\n      // opt to use theirs\n\n\n      if (items) return items; // If no tabs are provided\n      // render nothing\n\n      if (!item.length) return null;\n      return this.$createElement(_VTabsItems__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          value: this.internalValue\n        },\n        on: {\n          change: function change(val) {\n            _this.internalValue = val;\n          }\n        }\n      }, item);\n    },\n    genSlider: function genSlider(slider) {\n      if (this.hideSlider) return null;\n\n      if (!slider) {\n        slider = this.$createElement(_VTabsSlider__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n          props: {\n            color: this.sliderColor\n          }\n        });\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-tabs-slider-wrapper',\n        style: this.sliderStyles\n      }, [slider]);\n    },\n    onResize: function onResize() {\n      if (this._isDestroyed) return;\n      clearTimeout(this.resizeTimeout);\n      this.resizeTimeout = window.setTimeout(this.callSlider, 0);\n    },\n    parseNodes: function parseNodes() {\n      var items = null;\n      var slider = null;\n      var item = [];\n      var tab = [];\n      var slot = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlot\"])(this) || [];\n      var length = slot.length;\n\n      for (var i = 0; i < length; i++) {\n        var vnode = slot[i];\n\n        if (vnode.componentOptions) {\n          switch (vnode.componentOptions.Ctor.options.name) {\n            case 'v-tabs-slider':\n              slider = vnode;\n              break;\n\n            case 'v-tabs-items':\n              items = vnode;\n              break;\n\n            case 'v-tab-item':\n              item.push(vnode);\n              break;\n            // case 'v-tab' - intentionally omitted\n\n            default:\n              tab.push(vnode);\n          }\n        } else {\n          tab.push(vnode);\n        }\n      }\n      /**\n       * tab: array of `v-tab`\n       * slider: single `v-tabs-slider`\n       * items: single `v-tabs-items`\n       * item: array of `v-tab-item`\n       */\n\n\n      return {\n        tab: tab,\n        slider: slider,\n        items: items,\n        item: item\n      };\n    }\n  },\n  render: function render(h) {\n    var _a = this.parseNodes(),\n        tab = _a.tab,\n        slider = _a.slider,\n        items = _a.items,\n        item = _a.item;\n\n    return h('div', {\n      staticClass: 'v-tabs',\n      class: this.classes,\n      directives: [{\n        name: 'resize',\n        modifiers: {\n          quiet: true\n        },\n        value: this.onResize\n      }]\n    }, [this.genBar(tab, slider), this.genItems(items, item)]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabsBar.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VTabs/VTabsBar.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VSlideGroup/VSlideGroup */ \"./src/components/VSlideGroup/VSlideGroup.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}; // Extensions\n\n\n // Mixins\n\n\n // Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseSlideGroup\"], _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-tabs-bar',\n  provide: function provide() {\n    return {\n      tabsBar: this\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign(__assign({}, _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseSlideGroup\"].options.computed.classes.call(this)), {\n        'v-tabs-bar': true,\n        'v-tabs-bar--is-mobile': this.isMobile,\n        // TODO: Remove this and move to v-slide-group\n        'v-tabs-bar--show-arrows': this.showArrows\n      }), this.themeClasses);\n    }\n  },\n  watch: {\n    items: 'callSlider',\n    internalValue: 'callSlider',\n    $route: 'onRouteChange'\n  },\n  methods: {\n    callSlider: function callSlider() {\n      if (!this.isBooted) return;\n      this.$emit('call:slider');\n    },\n    genContent: function genContent() {\n      var render = _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseSlideGroup\"].options.methods.genContent.call(this);\n      render.data = render.data || {};\n      render.data.staticClass += ' v-tabs-bar__content';\n      return render;\n    },\n    onRouteChange: function onRouteChange(val, oldVal) {\n      var e_1, _a;\n      /* istanbul ignore next */\n\n\n      if (this.mandatory) return;\n      var items = this.items;\n      var newPath = val.path;\n      var oldPath = oldVal.path;\n      var hasNew = false;\n      var hasOld = false;\n\n      try {\n        for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n          var item = items_1_1.value;\n          if (item.to === oldPath) hasOld = true;else if (item.to === newPath) hasNew = true;\n          if (hasNew && hasOld) break;\n        }\n      } catch (e_1_1) {\n        e_1 = {\n          error: e_1_1\n        };\n      } finally {\n        try {\n          if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n        } finally {\n          if (e_1) throw e_1.error;\n        }\n      } // If we have an old item and not a new one\n      // it's assumed that the user navigated to\n      // a path that is not present in the items\n\n\n      if (!hasNew && hasOld) this.internalValue = undefined;\n    }\n  },\n  render: function render(h) {\n    var render = _VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseSlideGroup\"].options.render.call(this, h);\n    render.data.attrs = {\n      role: 'tablist'\n    };\n    return render;\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabsItems.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VTabs/VTabsItems.ts ***!\n  \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VWindow/VWindow */ \"./src/components/VWindow/VWindow.ts\");\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Extensions\n\n\n // Types & Components\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'v-tabs-items',\n  props: {\n    mandatory: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.computed.classes.call(this)), {\n        'v-tabs-items': true\n      });\n    },\n    isDark: function isDark() {\n      return this.rootIsDark;\n    }\n  },\n  methods: {\n    getValue: function getValue(item, i) {\n      return item.id || _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].options.methods.getValue.call(this, item, i);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabsSlider.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VTabs/VTabsSlider.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n // Utilities\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n  name: 'v-tabs-slider',\n  render: function render(h) {\n    return h('div', this.setBackgroundColor(this.color, {\n      staticClass: 'v-tabs-slider'\n    }));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/components/VTabs/index.ts ***!\n  \\***************************************/\n/*! exports provided: VTabs, VTab, VTabItem, VTabsItems, VTabsSlider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTabs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTabs */ \"./src/components/VTabs/VTabs.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabs\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTab__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTab */ \"./src/components/VTabs/VTab.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTab\", function() { return _VTab__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VTabsItems__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VTabsItems */ \"./src/components/VTabs/VTabsItems.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsItems\", function() { return _VTabsItems__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VTabItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VTabItem */ \"./src/components/VTabs/VTabItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabItem\", function() { return _VTabItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VTabsSlider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VTabsSlider */ \"./src/components/VTabs/VTabsSlider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsSlider\", function() { return _VTabsSlider__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VTabs: _VTabs__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VTab: _VTab__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VTabsItems: _VTabsItems__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n    VTabItem: _VTabItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n    VTabsSlider: _VTabsSlider__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTextField/VTextField.sass\":\n/*!***************************************************!*\\\n  !*** ./src/components/VTextField/VTextField.sass ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTextField/VTextField.ts\":\n/*!*************************************************!*\\\n  !*** ./src/components/VTextField/VTextField.ts ***!\n  \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTextField_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTextField.sass */ \"./src/components/VTextField/VTextField.sass\");\n/* harmony import */ var _VTextField_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTextField_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _VCounter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VCounter */ \"./src/components/VCounter/index.ts\");\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony import */ var _mixins_intersectable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/intersectable */ \"./src/mixins/intersectable/index.ts\");\n/* harmony import */ var _mixins_loadable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/loadable */ \"./src/mixins/loadable/index.ts\");\n/* harmony import */ var _mixins_validatable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/validatable */ \"./src/mixins/validatable/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize/index.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/dom */ \"./src/util/dom.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n\n // Mixins\n\n\n\n // Directives\n\n\n // Utilities\n\n\n\n // Types\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(_VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_intersectable__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n  onVisible: ['onResize', 'tryAutofocus']\n}), _mixins_loadable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-text-field',\n  directives: {\n    resize: _directives_resize__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n  },\n  inheritAttrs: false,\n  props: {\n    appendOuterIcon: String,\n    autofocus: Boolean,\n    clearable: Boolean,\n    clearIcon: {\n      type: String,\n      default: '$clear'\n    },\n    counter: [Boolean, Number, String],\n    counterValue: Function,\n    filled: Boolean,\n    flat: Boolean,\n    fullWidth: Boolean,\n    label: String,\n    outlined: Boolean,\n    placeholder: String,\n    prefix: String,\n    prependInnerIcon: String,\n    persistentPlaceholder: Boolean,\n    reverse: Boolean,\n    rounded: Boolean,\n    shaped: Boolean,\n    singleLine: Boolean,\n    solo: Boolean,\n    soloInverted: Boolean,\n    suffix: String,\n    type: {\n      type: String,\n      default: 'text'\n    }\n  },\n  data: function data() {\n    return {\n      badInput: false,\n      labelWidth: 0,\n      prefixWidth: 0,\n      prependWidth: 0,\n      initialValue: null,\n      isBooted: false,\n      isClearing: false\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return __assign(__assign({}, _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-text-field': true,\n        'v-text-field--full-width': this.fullWidth,\n        'v-text-field--prefix': this.prefix,\n        'v-text-field--single-line': this.isSingle,\n        'v-text-field--solo': this.isSolo,\n        'v-text-field--solo-inverted': this.soloInverted,\n        'v-text-field--solo-flat': this.flat,\n        'v-text-field--filled': this.filled,\n        'v-text-field--is-booted': this.isBooted,\n        'v-text-field--enclosed': this.isEnclosed,\n        'v-text-field--reverse': this.reverse,\n        'v-text-field--outlined': this.outlined,\n        'v-text-field--placeholder': this.placeholder,\n        'v-text-field--rounded': this.rounded,\n        'v-text-field--shaped': this.shaped\n      });\n    },\n    computedColor: function computedColor() {\n      var computedColor = _mixins_validatable__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.computed.computedColor.call(this);\n      if (!this.soloInverted || !this.isFocused) return computedColor;\n      return this.color || 'primary';\n    },\n    computedCounterValue: function computedCounterValue() {\n      if (typeof this.counterValue === 'function') {\n        return this.counterValue(this.internalValue);\n      }\n\n      return __spreadArray([], __read((this.internalValue || '').toString()), false).length;\n    },\n    hasCounter: function hasCounter() {\n      return this.counter !== false && this.counter != null;\n    },\n    hasDetails: function hasDetails() {\n      return _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.hasDetails.call(this) || this.hasCounter;\n    },\n    internalValue: {\n      get: function get() {\n        return this.lazyValue;\n      },\n      set: function set(val) {\n        this.lazyValue = val;\n        this.$emit('input', this.lazyValue);\n      }\n    },\n    isDirty: function isDirty() {\n      var _a;\n\n      return ((_a = this.lazyValue) === null || _a === void 0 ? void 0 : _a.toString().length) > 0 || this.badInput;\n    },\n    isEnclosed: function isEnclosed() {\n      return this.filled || this.isSolo || this.outlined;\n    },\n    isLabelActive: function isLabelActive() {\n      return this.isDirty || dirtyTypes.includes(this.type);\n    },\n    isSingle: function isSingle() {\n      return this.isSolo || this.singleLine || this.fullWidth || // https://material.io/components/text-fields/#filled-text-field\n      this.filled && !this.hasLabel;\n    },\n    isSolo: function isSolo() {\n      return this.solo || this.soloInverted;\n    },\n    labelPosition: function labelPosition() {\n      var offset = this.prefix && !this.labelValue ? this.prefixWidth : 0;\n      if (this.labelValue && this.prependWidth) offset -= this.prependWidth;\n      return this.$vuetify.rtl === this.reverse ? {\n        left: offset,\n        right: 'auto'\n      } : {\n        left: 'auto',\n        right: offset\n      };\n    },\n    showLabel: function showLabel() {\n      return this.hasLabel && !(this.isSingle && this.labelValue);\n    },\n    labelValue: function labelValue() {\n      return this.isFocused || this.isLabelActive || this.persistentPlaceholder;\n    }\n  },\n  watch: {\n    // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n    outlined: 'setLabelWidth',\n    label: function label() {\n      this.$nextTick(this.setLabelWidth);\n    },\n    prefix: function prefix() {\n      this.$nextTick(this.setPrefixWidth);\n    },\n    isFocused: 'updateValue',\n    value: function value(val) {\n      this.lazyValue = val;\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('box')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_11__[\"breaking\"])('box', 'filled', this);\n    }\n    /* istanbul ignore next */\n\n\n    if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_11__[\"breaking\"])('browser-autocomplete', 'autocomplete', this);\n    }\n    /* istanbul ignore if */\n\n\n    if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_11__[\"consoleWarn\"])('shaped should be used with either filled or outlined', this);\n    }\n  },\n  mounted: function mounted() {\n    var _this = this; // #11533\n\n\n    this.$watch(function () {\n      return _this.labelValue;\n    }, this.setLabelWidth);\n    this.autofocus && this.tryAutofocus();\n    requestAnimationFrame(function () {\n      _this.isBooted = true;\n      requestAnimationFrame(function () {\n        if (!_this.isIntersecting) {\n          _this.onResize();\n        }\n      });\n    });\n  },\n  methods: {\n    /** @public */\n    focus: function focus() {\n      this.onFocus();\n    },\n\n    /** @public */\n    blur: function blur(e) {\n      var _this = this; // https://github.com/vuetifyjs/vuetify/issues/5913\n      // Safari tab order gets broken if called synchronous\n\n\n      window.requestAnimationFrame(function () {\n        _this.$refs.input && _this.$refs.input.blur();\n      });\n    },\n    clearableCallback: function clearableCallback() {\n      var _this = this;\n\n      this.$refs.input && this.$refs.input.focus();\n      this.$nextTick(function () {\n        return _this.internalValue = null;\n      });\n    },\n    genAppendSlot: function genAppendSlot() {\n      var slot = [];\n\n      if (this.$slots['append-outer']) {\n        slot.push(this.$slots['append-outer']);\n      } else if (this.appendOuterIcon) {\n        slot.push(this.genIcon('appendOuter'));\n      }\n\n      return this.genSlot('append', 'outer', slot);\n    },\n    genPrependInnerSlot: function genPrependInnerSlot() {\n      var slot = [];\n\n      if (this.$slots['prepend-inner']) {\n        slot.push(this.$slots['prepend-inner']);\n      } else if (this.prependInnerIcon) {\n        slot.push(this.genIcon('prependInner'));\n      }\n\n      return this.genSlot('prepend', 'inner', slot);\n    },\n    genIconSlot: function genIconSlot() {\n      var slot = [];\n\n      if (this.$slots.append) {\n        slot.push(this.$slots.append);\n      } else if (this.appendIcon) {\n        slot.push(this.genIcon('append'));\n      }\n\n      return this.genSlot('append', 'inner', slot);\n    },\n    genInputSlot: function genInputSlot() {\n      var input = _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInputSlot.call(this);\n      var prepend = this.genPrependInnerSlot();\n\n      if (prepend) {\n        input.children = input.children || [];\n        input.children.unshift(prepend);\n      }\n\n      return input;\n    },\n    genClearIcon: function genClearIcon() {\n      if (!this.clearable) return null; // if the text field has no content then don't display the clear icon.\n      // We add an empty div because other controls depend on a ref to append inner\n\n      if (!this.isDirty) {\n        return this.genSlot('append', 'inner', [this.$createElement('div')]);\n      }\n\n      return this.genSlot('append', 'inner', [this.genIcon('clear', this.clearableCallback)]);\n    },\n    genCounter: function genCounter() {\n      var _a, _b, _c;\n\n      if (!this.hasCounter) return null;\n      var max = this.counter === true ? this.attrs$.maxlength : this.counter;\n      var props = {\n        dark: this.dark,\n        light: this.light,\n        max: max,\n        value: this.computedCounterValue\n      };\n      return (_c = (_b = (_a = this.$scopedSlots).counter) === null || _b === void 0 ? void 0 : _b.call(_a, {\n        props: props\n      })) !== null && _c !== void 0 ? _c : this.$createElement(_VCounter__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: props\n      });\n    },\n    genControl: function genControl() {\n      return _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genControl.call(this);\n    },\n    genDefaultSlot: function genDefaultSlot() {\n      return [this.genFieldset(), this.genTextFieldSlot(), this.genClearIcon(), this.genIconSlot(), this.genProgress()];\n    },\n    genFieldset: function genFieldset() {\n      if (!this.outlined) return null;\n      return this.$createElement('fieldset', {\n        attrs: {\n          'aria-hidden': true\n        }\n      }, [this.genLegend()]);\n    },\n    genLabel: function genLabel() {\n      if (!this.showLabel) return null;\n      var data = {\n        props: {\n          absolute: true,\n          color: this.validationState,\n          dark: this.dark,\n          disabled: this.isDisabled,\n          focused: !this.isSingle && (this.isFocused || !!this.validationState),\n          for: this.computedId,\n          left: this.labelPosition.left,\n          light: this.light,\n          right: this.labelPosition.right,\n          value: this.labelValue\n        }\n      };\n      return this.$createElement(_VLabel__WEBPACK_IMPORTED_MODULE_3__[\"default\"], data, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_10__[\"getSlot\"])(this, 'label') || this.label);\n    },\n    genLegend: function genLegend() {\n      var width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0;\n      var span = this.$createElement('span', {\n        domProps: {\n          innerHTML: '&#8203;'\n        },\n        staticClass: 'notranslate'\n      });\n      return this.$createElement('legend', {\n        style: {\n          width: !this.isSingle ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_10__[\"convertToUnit\"])(width) : undefined\n        }\n      }, [span]);\n    },\n    genInput: function genInput() {\n      var listeners = Object.assign({}, this.listeners$);\n      delete listeners.change; // Change should not be bound externally\n\n      var _a = this.attrs$,\n          title = _a.title,\n          inputAttrs = __rest(_a, [\"title\"]);\n\n      return this.$createElement('input', {\n        style: {},\n        domProps: {\n          value: this.type === 'number' && Object.is(this.lazyValue, -0) ? '-0' : this.lazyValue\n        },\n        attrs: __assign(__assign({}, inputAttrs), {\n          autofocus: this.autofocus,\n          disabled: this.isDisabled,\n          id: this.computedId,\n          placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n          readonly: this.isReadonly,\n          type: this.type\n        }),\n        on: Object.assign(listeners, {\n          blur: this.onBlur,\n          input: this.onInput,\n          focus: this.onFocus,\n          keydown: this.onKeyDown\n        }),\n        ref: 'input',\n        directives: [{\n          name: 'resize',\n          modifiers: {\n            quiet: true\n          },\n          value: this.onResize\n        }]\n      });\n    },\n    genMessages: function genMessages() {\n      if (!this.showDetails) return null;\n      var messagesNode = _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genMessages.call(this);\n      var counterNode = this.genCounter();\n      return this.$createElement('div', {\n        staticClass: 'v-text-field__details'\n      }, [messagesNode, counterNode]);\n    },\n    genTextFieldSlot: function genTextFieldSlot() {\n      return this.$createElement('div', {\n        staticClass: 'v-text-field__slot'\n      }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, this.genInput(), this.suffix ? this.genAffix('suffix') : null]);\n    },\n    genAffix: function genAffix(type) {\n      return this.$createElement('div', {\n        class: \"v-text-field__\" + type,\n        ref: type\n      }, this[type]);\n    },\n    onBlur: function onBlur(e) {\n      var _this = this;\n\n      this.isFocused = false;\n      e && this.$nextTick(function () {\n        return _this.$emit('blur', e);\n      });\n    },\n    onClick: function onClick() {\n      if (this.isFocused || this.isDisabled || !this.$refs.input) return;\n      this.$refs.input.focus();\n    },\n    onFocus: function onFocus(e) {\n      if (!this.$refs.input) return;\n      var root = Object(_util_dom__WEBPACK_IMPORTED_MODULE_9__[\"attachedRoot\"])(this.$el);\n      if (!root) return;\n\n      if (root.activeElement !== this.$refs.input) {\n        return this.$refs.input.focus();\n      }\n\n      if (!this.isFocused) {\n        this.isFocused = true;\n        e && this.$emit('focus', e);\n      }\n    },\n    onInput: function onInput(e) {\n      var target = e.target;\n      this.internalValue = target.value;\n      this.badInput = target.validity && target.validity.badInput;\n    },\n    onKeyDown: function onKeyDown(e) {\n      if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_10__[\"keyCodes\"].enter && this.lazyValue !== this.initialValue) {\n        this.initialValue = this.lazyValue;\n        this.$emit('change', this.initialValue);\n      }\n\n      this.$emit('keydown', e);\n    },\n    onMouseDown: function onMouseDown(e) {\n      // Prevent input from being blurred\n      if (e.target !== this.$refs.input) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onMouseDown.call(this, e);\n    },\n    onMouseUp: function onMouseUp(e) {\n      if (this.hasMouseDown) this.focus();\n      _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onMouseUp.call(this, e);\n    },\n    setLabelWidth: function setLabelWidth() {\n      if (!this.outlined) return;\n      this.labelWidth = this.$refs.label ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, this.$el.offsetWidth - 24) : 0;\n    },\n    setPrefixWidth: function setPrefixWidth() {\n      if (!this.$refs.prefix) return;\n      this.prefixWidth = this.$refs.prefix.offsetWidth;\n    },\n    setPrependWidth: function setPrependWidth() {\n      if (!this.outlined || !this.$refs['prepend-inner']) return;\n      this.prependWidth = this.$refs['prepend-inner'].offsetWidth;\n    },\n    tryAutofocus: function tryAutofocus() {\n      if (!this.autofocus || typeof document === 'undefined' || !this.$refs.input) return false;\n      var root = Object(_util_dom__WEBPACK_IMPORTED_MODULE_9__[\"attachedRoot\"])(this.$el);\n      if (!root || root.activeElement === this.$refs.input) return false;\n      this.$refs.input.focus();\n      return true;\n    },\n    updateValue: function updateValue(val) {\n      // Sets validationState from validatable\n      this.hasColor = val;\n\n      if (val) {\n        this.initialValue = this.lazyValue;\n      } else if (this.initialValue !== this.lazyValue) {\n        this.$emit('change', this.lazyValue);\n      }\n    },\n    onResize: function onResize() {\n      this.setLabelWidth();\n      this.setPrefixWidth();\n      this.setPrependWidth();\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTextField/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/components/VTextField/index.ts ***!\n  \\********************************************/\n/*! exports provided: VTextField, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTextField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTextField */ \"./src/components/VTextField/VTextField.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextField\", function() { return _VTextField__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTextField__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTextarea/VTextarea.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VTextarea/VTextarea.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTextarea/VTextarea.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VTextarea/VTextarea.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTextarea_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTextarea.sass */ \"./src/components/VTextarea/VTextarea.sass\");\n/* harmony import */ var _VTextarea_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTextarea_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Extensions\n\n // Utilities\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'v-textarea',\n  props: {\n    autoGrow: Boolean,\n    noResize: Boolean,\n    rowHeight: {\n      type: [Number, String],\n      default: 24,\n      validator: function validator(v) {\n        return !isNaN(parseFloat(v));\n      }\n    },\n    rows: {\n      type: [Number, String],\n      default: 5,\n      validator: function validator(v) {\n        return !isNaN(parseInt(v, 10));\n      }\n    }\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-textarea': true,\n        'v-textarea--auto-grow': this.autoGrow,\n        'v-textarea--no-resize': this.noResizeHandle\n      }, _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this));\n    },\n    noResizeHandle: function noResizeHandle() {\n      return this.noResize || this.autoGrow;\n    }\n  },\n  watch: {\n    autoGrow: function autoGrow(val) {\n      var _this = this;\n\n      this.$nextTick(function () {\n        var _a;\n\n        val ? _this.calculateInputHeight() : (_a = _this.$refs.input) === null || _a === void 0 ? void 0 : _a.style.removeProperty('height');\n      });\n    },\n    lazyValue: function lazyValue() {\n      this.autoGrow && this.$nextTick(this.calculateInputHeight);\n    },\n    rowHeight: function rowHeight() {\n      this.autoGrow && this.$nextTick(this.calculateInputHeight);\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    setTimeout(function () {\n      _this.autoGrow && _this.calculateInputHeight();\n    }, 0);\n  },\n  methods: {\n    calculateInputHeight: function calculateInputHeight() {\n      var input = this.$refs.input;\n      if (!input) return;\n      input.style.height = '0';\n      var height = input.scrollHeight;\n      var minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight); // This has to be done ASAP, waiting for Vue\n      // to update the DOM causes ugly layout jumping\n\n      input.style.height = Math.max(minHeight, height) + 'px';\n    },\n    genInput: function genInput() {\n      var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInput.call(this);\n      input.tag = 'textarea';\n      delete input.data.attrs.type;\n      input.data.attrs.rows = this.rows;\n      return input;\n    },\n    onInput: function onInput(e) {\n      _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onInput.call(this, e);\n      this.autoGrow && this.calculateInputHeight();\n    },\n    onKeyDown: function onKeyDown(e) {\n      // Prevents closing of a\n      // dialog when pressing\n      // enter\n      if (this.isFocused && e.keyCode === 13) {\n        e.stopPropagation();\n      }\n\n      this.$emit('keydown', e);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTextarea/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VTextarea/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VTextarea, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTextarea__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTextarea */ \"./src/components/VTextarea/VTextarea.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextarea\", function() { return _VTextarea__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTextarea__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VThemeProvider/VThemeProvider.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VThemeProvider/VThemeProvider.ts ***!\n  \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n// Mixins\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_themeable__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n  name: 'v-theme-provider',\n  props: {\n    root: Boolean\n  },\n  computed: {\n    isDark: function isDark() {\n      return this.root ? this.rootIsDark : _mixins_themeable__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.computed.isDark.call(this);\n    }\n  },\n  render: function render() {\n    /* istanbul ignore next */\n    return this.$slots.default && this.$slots.default.find(function (node) {\n      return !node.isComment && node.text !== ' ';\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VThemeProvider/index.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VThemeProvider/index.ts ***!\n  \\************************************************/\n/*! exports provided: VThemeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VThemeProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VThemeProvider */ \"./src/components/VThemeProvider/VThemeProvider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VThemeProvider\", function() { return _VThemeProvider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VThemeProvider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/SelectingTimes.ts\":\n/*!******************************************************!*\\\n  !*** ./src/components/VTimePicker/SelectingTimes.ts ***!\n  \\******************************************************/\n/*! exports provided: SelectingTimes */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SelectingTimes\", function() { return SelectingTimes; });\nvar SelectingTimes;\n\n(function (SelectingTimes) {\n  SelectingTimes[SelectingTimes[\"Hour\"] = 1] = \"Hour\";\n  SelectingTimes[SelectingTimes[\"Minute\"] = 2] = \"Minute\";\n  SelectingTimes[SelectingTimes[\"Second\"] = 3] = \"Second\";\n})(SelectingTimes || (SelectingTimes = {}));\n\n\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePicker.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VTimePicker/VTimePicker.ts ***!\n  \\***************************************************/\n/*! exports provided: SelectingTimes, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimePickerTitle */ \"./src/components/VTimePicker/VTimePickerTitle.ts\");\n/* harmony import */ var _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTimePickerClock */ \"./src/components/VTimePicker/VTimePickerClock.ts\");\n/* harmony import */ var _mixins_picker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/picker */ \"./src/mixins/picker/index.ts\");\n/* harmony import */ var _mixins_picker_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/picker-button */ \"./src/mixins/picker-button/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VDatePicker/util/pad */ \"./src/components/VDatePicker/util/pad.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./SelectingTimes */ \"./src/components/VTimePicker/SelectingTimes.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectingTimes\", function() { return _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"]; });\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Components\n\n\n\n // Mixins\n\n\n // Utils\n\n\n\n\n\nvar rangeHours24 = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"createRange\"])(24);\nvar rangeHours12am = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"createRange\"])(12);\nvar rangeHours12pm = rangeHours12am.map(function (v) {\n  return v + 12;\n});\nvar range60 = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"createRange\"])(60);\nvar selectingNames = {\n  1: 'hour',\n  2: 'minute',\n  3: 'second'\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_picker__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_picker_button__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-time-picker',\n  props: {\n    activePicker: String,\n    allowedHours: [Function, Array],\n    allowedMinutes: [Function, Array],\n    allowedSeconds: [Function, Array],\n    disabled: Boolean,\n    format: {\n      type: String,\n      default: 'ampm',\n      validator: function validator(val) {\n        return ['ampm', '24hr'].includes(val);\n      }\n    },\n    min: String,\n    max: String,\n    readonly: Boolean,\n    scrollable: Boolean,\n    useSeconds: Boolean,\n    value: null,\n    ampmInTitle: Boolean\n  },\n  data: function data() {\n    return {\n      inputHour: null,\n      inputMinute: null,\n      inputSecond: null,\n      lazyInputHour: null,\n      lazyInputMinute: null,\n      lazyInputSecond: null,\n      period: 'am',\n      selecting: _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour\n    };\n  },\n  computed: {\n    selectingHour: {\n      get: function get() {\n        return this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour;\n      },\n      set: function set(v) {\n        this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour;\n      }\n    },\n    selectingMinute: {\n      get: function get() {\n        return this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute;\n      },\n      set: function set(v) {\n        this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute;\n      }\n    },\n    selectingSecond: {\n      get: function get() {\n        return this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Second;\n      },\n      set: function set(v) {\n        this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Second;\n      }\n    },\n    isAllowedHourCb: function isAllowedHourCb() {\n      var _this = this;\n\n      var cb;\n\n      if (this.allowedHours instanceof Array) {\n        cb = function cb(val) {\n          return _this.allowedHours.includes(val);\n        };\n      } else {\n        cb = this.allowedHours;\n      }\n\n      if (!this.min && !this.max) return cb;\n      var minHour = this.min ? Number(this.min.split(':')[0]) : 0;\n      var maxHour = this.max ? Number(this.max.split(':')[0]) : 23;\n      return function (val) {\n        return val >= minHour * 1 && val <= maxHour * 1 && (!cb || cb(val));\n      };\n    },\n    isAllowedMinuteCb: function isAllowedMinuteCb() {\n      var _this = this;\n\n      var cb;\n      var isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour);\n\n      if (this.allowedMinutes instanceof Array) {\n        cb = function cb(val) {\n          return _this.allowedMinutes.includes(val);\n        };\n      } else {\n        cb = this.allowedMinutes;\n      }\n\n      if (!this.min && !this.max) {\n        return isHourAllowed ? cb : function () {\n          return false;\n        };\n      }\n\n      var _a = __read(this.min ? this.min.split(':').map(Number) : [0, 0], 2),\n          minHour = _a[0],\n          minMinute = _a[1];\n\n      var _b = __read(this.max ? this.max.split(':').map(Number) : [23, 59], 2),\n          maxHour = _b[0],\n          maxMinute = _b[1];\n\n      var minTime = minHour * 60 + minMinute * 1;\n      var maxTime = maxHour * 60 + maxMinute * 1;\n      return function (val) {\n        var time = 60 * _this.inputHour + val;\n        return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));\n      };\n    },\n    isAllowedSecondCb: function isAllowedSecondCb() {\n      var _this = this;\n\n      var cb;\n      var isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour);\n      var isMinuteAllowed = isHourAllowed && (!this.isAllowedMinuteCb || this.inputMinute === null || this.isAllowedMinuteCb(this.inputMinute));\n\n      if (this.allowedSeconds instanceof Array) {\n        cb = function cb(val) {\n          return _this.allowedSeconds.includes(val);\n        };\n      } else {\n        cb = this.allowedSeconds;\n      }\n\n      if (!this.min && !this.max) {\n        return isMinuteAllowed ? cb : function () {\n          return false;\n        };\n      }\n\n      var _a = __read(this.min ? this.min.split(':').map(Number) : [0, 0, 0], 3),\n          minHour = _a[0],\n          minMinute = _a[1],\n          minSecond = _a[2];\n\n      var _b = __read(this.max ? this.max.split(':').map(Number) : [23, 59, 59], 3),\n          maxHour = _b[0],\n          maxMinute = _b[1],\n          maxSecond = _b[2];\n\n      var minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1;\n      var maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1;\n      return function (val) {\n        var time = 3600 * _this.inputHour + 60 * _this.inputMinute + val;\n        return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));\n      };\n    },\n    isAmPm: function isAmPm() {\n      return this.format === 'ampm';\n    }\n  },\n  watch: {\n    activePicker: 'setPicker',\n    selecting: 'emitPicker',\n    value: 'setInputData'\n  },\n  mounted: function mounted() {\n    this.setInputData(this.value);\n    this.$on('update:period', this.setPeriod);\n  },\n  methods: {\n    genValue: function genValue() {\n      if (this.inputHour != null && this.inputMinute != null && (!this.useSeconds || this.inputSecond != null)) {\n        return Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.inputHour) + \":\" + Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.inputMinute) + (this.useSeconds ? \":\" + Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.inputSecond) : '');\n      }\n\n      return null;\n    },\n    emitValue: function emitValue() {\n      var value = this.genValue();\n      if (value !== null) this.$emit('input', value);\n    },\n    emitPicker: function emitPicker(value) {\n      var activePicker = 'HOUR';\n\n      if (value === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute) {\n        activePicker = 'MINUTE';\n      } else if (value === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Second) {\n        activePicker = 'SECOND';\n      }\n\n      this.$emit('update:active-picker', activePicker);\n    },\n    setPicker: function setPicker(picker) {\n      if (picker === 'HOUR') this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour;else if (picker === 'MINUTE') this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute;else if (picker === 'SECOND' && this.useSeconds) this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Second;\n    },\n    setPeriod: function setPeriod(period) {\n      this.period = period;\n\n      if (this.inputHour != null) {\n        var newHour = this.inputHour + (period === 'am' ? -12 : 12);\n        this.inputHour = this.firstAllowed('hour', newHour);\n        this.emitValue();\n      }\n    },\n    setInputData: function setInputData(value) {\n      if (value == null || value === '') {\n        this.inputHour = null;\n        this.inputMinute = null;\n        this.inputSecond = null;\n      } else if (value instanceof Date) {\n        this.inputHour = value.getHours();\n        this.inputMinute = value.getMinutes();\n        this.inputSecond = value.getSeconds();\n      } else {\n        var _a = __read(value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6), 6),\n            hour = _a[1],\n            minute = _a[2],\n            second = _a[4],\n            period = _a[5];\n\n        this.inputHour = period ? this.convert12to24(parseInt(hour, 10), period) : parseInt(hour, 10);\n        this.inputMinute = parseInt(minute, 10);\n        this.inputSecond = parseInt(second || 0, 10);\n      }\n\n      this.period = this.inputHour == null || this.inputHour < 12 ? 'am' : 'pm';\n    },\n    convert24to12: function convert24to12(hour) {\n      return hour ? (hour - 1) % 12 + 1 : 12;\n    },\n    convert12to24: function convert12to24(hour, period) {\n      return hour % 12 + (period === 'pm' ? 12 : 0);\n    },\n    onInput: function onInput(value) {\n      if (this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour) {\n        this.inputHour = this.isAmPm ? this.convert12to24(value, this.period) : value;\n      } else if (this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute) {\n        this.inputMinute = value;\n      } else {\n        this.inputSecond = value;\n      }\n\n      this.emitValue();\n    },\n    onChange: function onChange(value) {\n      this.$emit(\"click:\" + selectingNames[this.selecting], value);\n      var emitChange = this.selecting === (this.useSeconds ? _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Second : _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute);\n\n      if (this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour) {\n        this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute;\n      } else if (this.useSeconds && this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute) {\n        this.selecting = _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Second;\n      }\n\n      if (this.inputHour === this.lazyInputHour && this.inputMinute === this.lazyInputMinute && (!this.useSeconds || this.inputSecond === this.lazyInputSecond)) return;\n      var time = this.genValue();\n      if (time === null) return;\n      this.lazyInputHour = this.inputHour;\n      this.lazyInputMinute = this.inputMinute;\n      this.useSeconds && (this.lazyInputSecond = this.inputSecond);\n      emitChange && this.$emit('change', time);\n    },\n    firstAllowed: function firstAllowed(type, value) {\n      var allowedFn = type === 'hour' ? this.isAllowedHourCb : type === 'minute' ? this.isAllowedMinuteCb : this.isAllowedSecondCb;\n      if (!allowedFn) return value; // TODO: clean up\n\n      var range = type === 'minute' ? range60 : type === 'second' ? range60 : this.isAmPm ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;\n      var first = range.find(function (v) {\n        return allowedFn((v + value) % range.length + range[0]);\n      });\n      return ((first || 0) + value) % range.length + range[0];\n    },\n    genClock: function genClock() {\n      return this.$createElement(_VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          allowedValues: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour ? this.isAllowedHourCb : this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute ? this.isAllowedMinuteCb : this.isAllowedSecondCb,\n          color: this.color,\n          dark: this.dark,\n          disabled: this.disabled,\n          double: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour && !this.isAmPm,\n          format: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour ? this.isAmPm ? this.convert24to12 : function (val) {\n            return val;\n          } : function (val) {\n            return Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(val, 2);\n          },\n          light: this.light,\n          max: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour ? this.isAmPm && this.period === 'am' ? 11 : 23 : 59,\n          min: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour && this.isAmPm && this.period === 'pm' ? 12 : 0,\n          readonly: this.readonly,\n          scrollable: this.scrollable,\n          size: Number(this.width) - (!this.fullWidth && this.landscape ? 80 : 20),\n          step: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour ? 1 : 5,\n          value: this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Hour ? this.inputHour : this.selecting === _SelectingTimes__WEBPACK_IMPORTED_MODULE_7__[\"SelectingTimes\"].Minute ? this.inputMinute : this.inputSecond\n        },\n        on: {\n          input: this.onInput,\n          change: this.onChange\n        },\n        ref: 'clock'\n      });\n    },\n    genClockAmPm: function genClockAmPm() {\n      return this.$createElement('div', this.setTextColor(this.color || 'primary', {\n        staticClass: 'v-time-picker-clock__ampm'\n      }), [this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly), this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly)]);\n    },\n    genPickerBody: function genPickerBody() {\n      return this.$createElement('div', {\n        staticClass: 'v-time-picker-clock__container',\n        key: this.selecting\n      }, [!this.ampmInTitle && this.isAmPm && this.genClockAmPm(), this.genClock()]);\n    },\n    genPickerTitle: function genPickerTitle() {\n      var _this = this;\n\n      return this.$createElement(_VTimePickerTitle__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n        props: {\n          ampm: this.isAmPm,\n          ampmReadonly: this.isAmPm && !this.ampmInTitle,\n          disabled: this.disabled,\n          hour: this.inputHour,\n          minute: this.inputMinute,\n          second: this.inputSecond,\n          period: this.period,\n          readonly: this.readonly,\n          useSeconds: this.useSeconds,\n          selecting: this.selecting\n        },\n        on: {\n          'update:selecting': function updateSelecting(value) {\n            return _this.selecting = value;\n          },\n          'update:period': function updatePeriod(period) {\n            return _this.$emit('update:period', period);\n          }\n        },\n        ref: 'title',\n        slot: 'title'\n      });\n    }\n  },\n  render: function render() {\n    return this.genPicker('v-picker--time');\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePickerClock.sass\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VTimePicker/VTimePickerClock.sass ***!\n  \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePickerClock.ts\":\n/*!********************************************************!*\\\n  !*** ./src/components/VTimePicker/VTimePickerClock.ts ***!\n  \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimePickerClock_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimePickerClock.sass */ \"./src/components/VTimePicker/VTimePickerClock.sass\");\n/* harmony import */ var _VTimePickerClock_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTimePickerClock_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Mixins\n\n\n // Types\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-time-picker-clock',\n  props: {\n    allowedValues: Function,\n    ampm: Boolean,\n    disabled: Boolean,\n    double: Boolean,\n    format: {\n      type: Function,\n      default: function _default(val) {\n        return val;\n      }\n    },\n    max: {\n      type: Number,\n      required: true\n    },\n    min: {\n      type: Number,\n      required: true\n    },\n    scrollable: Boolean,\n    readonly: Boolean,\n    rotate: {\n      type: Number,\n      default: 0\n    },\n    step: {\n      type: Number,\n      default: 1\n    },\n    value: Number\n  },\n  data: function data() {\n    return {\n      inputValue: this.value,\n      isDragging: false,\n      valueOnMouseDown: null,\n      valueOnMouseUp: null\n    };\n  },\n  computed: {\n    count: function count() {\n      return this.max - this.min + 1;\n    },\n    degreesPerUnit: function degreesPerUnit() {\n      return 360 / this.roundCount;\n    },\n    degrees: function degrees() {\n      return this.degreesPerUnit * Math.PI / 180;\n    },\n    displayedValue: function displayedValue() {\n      return this.value == null ? this.min : this.value;\n    },\n    innerRadiusScale: function innerRadiusScale() {\n      return 0.62;\n    },\n    roundCount: function roundCount() {\n      return this.double ? this.count / 2 : this.count;\n    }\n  },\n  watch: {\n    value: function value(_value) {\n      this.inputValue = _value;\n    }\n  },\n  methods: {\n    wheel: function wheel(e) {\n      e.preventDefault();\n      var delta = Math.sign(-e.deltaY || 1);\n      var value = this.displayedValue;\n\n      do {\n        value = value + delta;\n        value = (value - this.min + this.count) % this.count + this.min;\n      } while (!this.isAllowed(value) && value !== this.displayedValue);\n\n      if (value !== this.displayedValue) {\n        this.update(value);\n      }\n    },\n    isInner: function isInner(value) {\n      return this.double && value - this.min >= this.roundCount;\n    },\n    handScale: function handScale(value) {\n      return this.isInner(value) ? this.innerRadiusScale : 1;\n    },\n    isAllowed: function isAllowed(value) {\n      return !this.allowedValues || this.allowedValues(value);\n    },\n    genValues: function genValues() {\n      var children = [];\n\n      for (var value = this.min; value <= this.max; value = value + this.step) {\n        var color = value === this.value && (this.color || 'accent');\n        children.push(this.$createElement('span', this.setBackgroundColor(color, {\n          staticClass: 'v-time-picker-clock__item',\n          class: {\n            'v-time-picker-clock__item--active': value === this.displayedValue,\n            'v-time-picker-clock__item--disabled': this.disabled || !this.isAllowed(value)\n          },\n          style: this.getTransform(value),\n          domProps: {\n            innerHTML: \"<span>\" + this.format(value) + \"</span>\"\n          }\n        })));\n      }\n\n      return children;\n    },\n    genHand: function genHand() {\n      var scale = \"scaleY(\" + this.handScale(this.displayedValue) + \")\";\n      var angle = this.rotate + this.degreesPerUnit * (this.displayedValue - this.min);\n      var color = this.value != null && (this.color || 'accent');\n      return this.$createElement('div', this.setBackgroundColor(color, {\n        staticClass: 'v-time-picker-clock__hand',\n        class: {\n          'v-time-picker-clock__hand--inner': this.isInner(this.value)\n        },\n        style: {\n          transform: \"rotate(\" + angle + \"deg) \" + scale\n        }\n      }));\n    },\n    getTransform: function getTransform(i) {\n      var _a = this.getPosition(i),\n          x = _a.x,\n          y = _a.y;\n\n      return {\n        left: 50 + x * 50 + \"%\",\n        top: 50 + y * 50 + \"%\"\n      };\n    },\n    getPosition: function getPosition(value) {\n      var rotateRadians = this.rotate * Math.PI / 180;\n      return {\n        x: Math.sin((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n        y: -Math.cos((value - this.min) * this.degrees + rotateRadians) * this.handScale(value)\n      };\n    },\n    onMouseDown: function onMouseDown(e) {\n      e.preventDefault();\n      this.valueOnMouseDown = null;\n      this.valueOnMouseUp = null;\n      this.isDragging = true;\n      this.onDragMove(e);\n    },\n    onMouseUp: function onMouseUp(e) {\n      e.stopPropagation();\n      this.isDragging = false;\n\n      if (this.valueOnMouseUp !== null && this.isAllowed(this.valueOnMouseUp)) {\n        this.$emit('change', this.valueOnMouseUp);\n      }\n    },\n    onDragMove: function onDragMove(e) {\n      e.preventDefault();\n      if (!this.isDragging && e.type !== 'click' || !this.$refs.clock) return;\n\n      var _a = this.$refs.clock.getBoundingClientRect(),\n          width = _a.width,\n          top = _a.top,\n          left = _a.left;\n\n      var innerWidth = this.$refs.innerClock.getBoundingClientRect().width;\n\n      var _b = 'touches' in e ? e.touches[0] : e,\n          clientX = _b.clientX,\n          clientY = _b.clientY;\n\n      var center = {\n        x: width / 2,\n        y: -width / 2\n      };\n      var coords = {\n        x: clientX - left,\n        y: top - clientY\n      };\n      var handAngle = Math.round(this.angle(center, coords) - this.rotate + 360) % 360;\n      var insideClick = this.double && this.euclidean(center, coords) < (innerWidth + innerWidth * this.innerRadiusScale) / 4;\n      var checksCount = Math.ceil(15 / this.degreesPerUnit);\n      var value;\n\n      for (var i = 0; i < checksCount; i++) {\n        value = this.angleToValue(handAngle + i * this.degreesPerUnit, insideClick);\n        if (this.isAllowed(value)) return this.setMouseDownValue(value);\n        value = this.angleToValue(handAngle - i * this.degreesPerUnit, insideClick);\n        if (this.isAllowed(value)) return this.setMouseDownValue(value);\n      }\n    },\n    angleToValue: function angleToValue(angle, insideClick) {\n      var value = (Math.round(angle / this.degreesPerUnit) + (insideClick ? this.roundCount : 0)) % this.count + this.min; // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n\n      if (angle < 360 - this.degreesPerUnit / 2) return value;\n      return insideClick ? this.max - this.roundCount + 1 : this.min;\n    },\n    setMouseDownValue: function setMouseDownValue(value) {\n      if (this.valueOnMouseDown === null) {\n        this.valueOnMouseDown = value;\n      }\n\n      this.valueOnMouseUp = value;\n      this.update(value);\n    },\n    update: function update(value) {\n      if (this.inputValue !== value) {\n        this.inputValue = value;\n        this.$emit('input', value);\n      }\n    },\n    euclidean: function euclidean(p0, p1) {\n      var dx = p1.x - p0.x;\n      var dy = p1.y - p0.y;\n      return Math.sqrt(dx * dx + dy * dy);\n    },\n    angle: function angle(center, p1) {\n      var value = 2 * Math.atan2(p1.y - center.y - this.euclidean(center, p1), p1.x - center.x);\n      return Math.abs(value * 180 / Math.PI);\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var data = {\n      staticClass: 'v-time-picker-clock',\n      class: __assign({\n        'v-time-picker-clock--indeterminate': this.value == null\n      }, this.themeClasses),\n      on: this.readonly || this.disabled ? undefined : {\n        mousedown: this.onMouseDown,\n        mouseup: this.onMouseUp,\n        mouseleave: function mouseleave(e) {\n          return _this.isDragging && _this.onMouseUp(e);\n        },\n        touchstart: this.onMouseDown,\n        touchend: this.onMouseUp,\n        mousemove: this.onDragMove,\n        touchmove: this.onDragMove\n      },\n      ref: 'clock'\n    };\n\n    if (this.scrollable && data.on) {\n      data.on.wheel = this.wheel;\n    }\n\n    return h('div', data, [h('div', {\n      staticClass: 'v-time-picker-clock__inner',\n      ref: 'innerClock'\n    }, [this.genHand(), this.genValues()])]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePickerTitle.sass\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VTimePicker/VTimePickerTitle.sass ***!\n  \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePickerTitle.ts\":\n/*!********************************************************!*\\\n  !*** ./src/components/VTimePicker/VTimePickerTitle.ts ***!\n  \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimePickerTitle_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimePickerTitle.sass */ \"./src/components/VTimePicker/VTimePickerTitle.sass\");\n/* harmony import */ var _VTimePickerTitle_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTimePickerTitle_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_picker_button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/picker-button */ \"./src/mixins/picker-button/index.ts\");\n/* harmony import */ var _VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VDatePicker/util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _SelectingTimes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SelectingTimes */ \"./src/components/VTimePicker/SelectingTimes.ts\");\n // Mixins\n\n // Utils\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_picker_button__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-time-picker-title',\n  props: {\n    ampm: Boolean,\n    ampmReadonly: Boolean,\n    disabled: Boolean,\n    hour: Number,\n    minute: Number,\n    second: Number,\n    period: {\n      type: String,\n      validator: function validator(period) {\n        return period === 'am' || period === 'pm';\n      }\n    },\n    readonly: Boolean,\n    useSeconds: Boolean,\n    selecting: Number\n  },\n  methods: {\n    genTime: function genTime() {\n      var hour = this.hour;\n\n      if (this.ampm) {\n        hour = hour ? (hour - 1) % 12 + 1 : 12;\n      }\n\n      var displayedHour = this.hour == null ? '--' : this.ampm ? String(hour) : Object(_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(hour);\n      var displayedMinute = this.minute == null ? '--' : Object(_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(this.minute);\n      var titleContent = [this.genPickerButton('selecting', _SelectingTimes__WEBPACK_IMPORTED_MODULE_4__[\"SelectingTimes\"].Hour, displayedHour, this.disabled), this.$createElement('span', ':'), this.genPickerButton('selecting', _SelectingTimes__WEBPACK_IMPORTED_MODULE_4__[\"SelectingTimes\"].Minute, displayedMinute, this.disabled)];\n\n      if (this.useSeconds) {\n        var displayedSecond = this.second == null ? '--' : Object(_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(this.second);\n        titleContent.push(this.$createElement('span', ':'));\n        titleContent.push(this.genPickerButton('selecting', _SelectingTimes__WEBPACK_IMPORTED_MODULE_4__[\"SelectingTimes\"].Second, displayedSecond, this.disabled));\n      }\n\n      return this.$createElement('div', {\n        class: 'v-time-picker-title__time'\n      }, titleContent);\n    },\n    genAmPm: function genAmPm() {\n      return this.$createElement('div', {\n        staticClass: 'v-time-picker-title__ampm',\n        class: {\n          'v-time-picker-title__ampm--readonly': this.ampmReadonly\n        }\n      }, [!this.ampmReadonly || this.period === 'am' ? this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly) : null, !this.ampmReadonly || this.period === 'pm' ? this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly) : null]);\n    }\n  },\n  render: function render(h) {\n    var children = [this.genTime()];\n    this.ampm && children.push(this.genAmPm());\n    return h('div', {\n      staticClass: 'v-time-picker-title'\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VTimePicker/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VTimePicker, VTimePickerClock, VTimePickerTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimePicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimePicker */ \"./src/components/VTimePicker/VTimePicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePicker\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTimePickerClock */ \"./src/components/VTimePicker/VTimePickerClock.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerClock\", function() { return _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VTimePickerTitle */ \"./src/components/VTimePicker/VTimePickerTitle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerTitle\", function() { return _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VTimePicker: _VTimePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VTimePickerClock: _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n    VTimePickerTitle: _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/VTimeline.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VTimeline/VTimeline.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/VTimeline.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VTimeline/VTimeline.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimeline_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimeline.sass */ \"./src/components/VTimeline/VTimeline.sass\");\n/* harmony import */ var _VTimeline_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTimeline_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n\n // Mixins\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-timeline',\n  provide: function provide() {\n    return {\n      timeline: this\n    };\n  },\n  props: {\n    alignTop: Boolean,\n    dense: Boolean,\n    reverse: Boolean\n  },\n  computed: {\n    classes: function classes() {\n      return __assign({\n        'v-timeline--align-top': this.alignTop,\n        'v-timeline--dense': this.dense,\n        'v-timeline--reverse': this.reverse\n      }, this.themeClasses);\n    }\n  },\n  render: function render(h) {\n    return h('div', {\n      staticClass: 'v-timeline',\n      class: this.classes\n    }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/VTimelineItem.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VTimeline/VTimelineItem.ts ***!\n  \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Types\n\n\n\n // Mixins\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'v-timeline-item',\n  inject: ['timeline'],\n  props: {\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    fillDot: Boolean,\n    hideDot: Boolean,\n    icon: String,\n    iconColor: String,\n    large: Boolean,\n    left: Boolean,\n    right: Boolean,\n    small: Boolean\n  },\n  computed: {\n    hasIcon: function hasIcon() {\n      return !!this.icon || !!this.$slots.icon;\n    }\n  },\n  methods: {\n    genBody: function genBody() {\n      return this.$createElement('div', {\n        staticClass: 'v-timeline-item__body'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this));\n    },\n    genIcon: function genIcon() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'icon') || this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          color: this.iconColor,\n          dark: !this.theme.isDark,\n          small: this.small\n        }\n      }, this.icon);\n    },\n    genInnerDot: function genInnerDot() {\n      var data = this.setBackgroundColor(this.color);\n      return this.$createElement('div', __assign({\n        staticClass: 'v-timeline-item__inner-dot'\n      }, data), [this.hasIcon && this.genIcon()]);\n    },\n    genDot: function genDot() {\n      return this.$createElement('div', {\n        staticClass: 'v-timeline-item__dot',\n        class: {\n          'v-timeline-item__dot--small': this.small,\n          'v-timeline-item__dot--large': this.large\n        }\n      }, [this.genInnerDot()]);\n    },\n    genDivider: function genDivider() {\n      var children = [];\n      if (!this.hideDot) children.push(this.genDot());\n      return this.$createElement('div', {\n        staticClass: 'v-timeline-item__divider'\n      }, children);\n    },\n    genOpposite: function genOpposite() {\n      return this.$createElement('div', {\n        staticClass: 'v-timeline-item__opposite'\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getSlot\"])(this, 'opposite'));\n    }\n  },\n  render: function render(h) {\n    var children = [this.genBody(), this.genDivider()];\n    if (this.$slots.opposite) children.push(this.genOpposite());\n    return h('div', {\n      staticClass: 'v-timeline-item',\n      class: __assign({\n        'v-timeline-item--fill-dot': this.fillDot,\n        'v-timeline-item--before': this.timeline.reverse ? this.right : this.left,\n        'v-timeline-item--after': this.timeline.reverse ? this.left : this.right\n      }, this.themeClasses)\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VTimeline/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VTimeline, VTimelineItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimeline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimeline */ \"./src/components/VTimeline/VTimeline.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimeline\", function() { return _VTimeline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTimelineItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTimelineItem */ \"./src/components/VTimeline/VTimelineItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimelineItem\", function() { return _VTimelineItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VTimeline: _VTimeline__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VTimelineItem: _VTimelineItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VToolbar/VToolbar.sass\":\n/*!***********************************************!*\\\n  !*** ./src/components/VToolbar/VToolbar.sass ***!\n  \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VToolbar/VToolbar.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VToolbar/VToolbar.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VToolbar_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VToolbar.sass */ \"./src/components/VToolbar/VToolbar.sass\");\n/* harmony import */ var _VToolbar_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VToolbar_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet/VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony import */ var _VImg_VImg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VImg/VImg */ \"./src/components/VImg/VImg.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Styles\n\n\n // Extensions\n\n // Components\n\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-toolbar',\n  props: {\n    absolute: Boolean,\n    bottom: Boolean,\n    collapse: Boolean,\n    dense: Boolean,\n    extended: Boolean,\n    extensionHeight: {\n      default: 48,\n      type: [Number, String]\n    },\n    flat: Boolean,\n    floating: Boolean,\n    prominent: Boolean,\n    short: Boolean,\n    src: {\n      type: [String, Object],\n      default: ''\n    },\n    tag: {\n      type: String,\n      default: 'header'\n    }\n  },\n  data: function data() {\n    return {\n      isExtended: false\n    };\n  },\n  computed: {\n    computedHeight: function computedHeight() {\n      var height = this.computedContentHeight;\n      if (!this.isExtended) return height;\n      var extensionHeight = parseInt(this.extensionHeight);\n      return this.isCollapsed ? height : height + (!isNaN(extensionHeight) ? extensionHeight : 0);\n    },\n    computedContentHeight: function computedContentHeight() {\n      if (this.height) return parseInt(this.height);\n      if (this.isProminent && this.dense) return 96;\n      if (this.isProminent && this.short) return 112;\n      if (this.isProminent) return 128;\n      if (this.dense) return 48;\n      if (this.short || this.$vuetify.breakpoint.smAndDown) return 56;\n      return 64;\n    },\n    classes: function classes() {\n      return __assign(__assign({}, _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this)), {\n        'v-toolbar': true,\n        'v-toolbar--absolute': this.absolute,\n        'v-toolbar--bottom': this.bottom,\n        'v-toolbar--collapse': this.collapse,\n        'v-toolbar--collapsed': this.isCollapsed,\n        'v-toolbar--dense': this.dense,\n        'v-toolbar--extended': this.isExtended,\n        'v-toolbar--flat': this.flat,\n        'v-toolbar--floating': this.floating,\n        'v-toolbar--prominent': this.isProminent\n      });\n    },\n    isCollapsed: function isCollapsed() {\n      return this.collapse;\n    },\n    isProminent: function isProminent() {\n      return this.prominent;\n    },\n    styles: function styles() {\n      return __assign(__assign({}, this.measurableStyles), {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.computedHeight)\n      });\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    var breakingProps = [['app', '<v-app-bar app>'], ['manual-scroll', '<v-app-bar :value=\"false\">'], ['clipped-left', '<v-app-bar clipped-left>'], ['clipped-right', '<v-app-bar clipped-right>'], ['inverted-scroll', '<v-app-bar inverted-scroll>'], ['scroll-off-screen', '<v-app-bar scroll-off-screen>'], ['scroll-target', '<v-app-bar scroll-target>'], ['scroll-threshold', '<v-app-bar scroll-threshold>'], ['card', '<v-app-bar flat>']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(function (_a) {\n      var _b = __read(_a, 2),\n          original = _b[0],\n          replacement = _b[1];\n\n      if (_this.$attrs.hasOwnProperty(original)) Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"breaking\"])(original, replacement, _this);\n    });\n  },\n  methods: {\n    genBackground: function genBackground() {\n      var props = {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.computedHeight),\n        src: this.src\n      };\n      var image = this.$scopedSlots.img ? this.$scopedSlots.img({\n        props: props\n      }) : this.$createElement(_VImg_VImg__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: props\n      });\n      return this.$createElement('div', {\n        staticClass: 'v-toolbar__image'\n      }, [image]);\n    },\n    genContent: function genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-toolbar__content',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.computedContentHeight)\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this));\n    },\n    genExtension: function genExtension() {\n      return this.$createElement('div', {\n        staticClass: 'v-toolbar__extension',\n        style: {\n          height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.extensionHeight)\n        }\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'extension'));\n    }\n  },\n  render: function render(h) {\n    this.isExtended = this.extended || !!this.$scopedSlots.extension;\n    var children = [this.genContent()];\n    var data = this.setBackgroundColor(this.color, {\n      class: this.classes,\n      style: this.styles,\n      on: this.$listeners\n    });\n    if (this.isExtended) children.push(this.genExtension());\n    if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground());\n    return h(this.tag, data, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VToolbar/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VToolbar/index.ts ***!\n  \\******************************************/\n/*! exports provided: VToolbar, VToolbarItems, VToolbarTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VToolbarItems\", function() { return VToolbarItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VToolbarTitle\", function() { return VToolbarTitle; });\n/* harmony import */ var _VToolbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VToolbar */ \"./src/components/VToolbar/VToolbar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbar\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Components\n // Utilities\n\n\nvar VToolbarTitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('v-toolbar__title');\nvar VToolbarItems = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"createSimpleFunctional\"])('v-toolbar__items');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VToolbar: _VToolbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VToolbarItems: VToolbarItems,\n    VToolbarTitle: VToolbarTitle\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTooltip/VTooltip.sass\":\n/*!***********************************************!*\\\n  !*** ./src/components/VTooltip/VTooltip.sass ***!\n  \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTooltip/VTooltip.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/VTooltip/VTooltip.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTooltip_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTooltip.sass */ \"./src/components/VTooltip/VTooltip.sass\");\n/* harmony import */ var _VTooltip_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTooltip_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_activatable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/activatable */ \"./src/mixins/activatable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable/index.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent/index.ts\");\n/* harmony import */ var _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/menuable */ \"./src/mixins/menuable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n // Mixins\n\n\n\n\n\n // Helpers\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).extend({\n  name: 'v-tooltip',\n  props: {\n    closeDelay: {\n      type: [Number, String],\n      default: 0\n    },\n    disabled: Boolean,\n    openDelay: {\n      type: [Number, String],\n      default: 0\n    },\n    openOnHover: {\n      type: Boolean,\n      default: true\n    },\n    openOnFocus: {\n      type: Boolean,\n      default: true\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    transition: String\n  },\n  data: function data() {\n    return {\n      calculatedMinWidth: 0,\n      closeDependents: false\n    };\n  },\n  computed: {\n    calculatedLeft: function calculatedLeft() {\n      var _a = this.dimensions,\n          activator = _a.activator,\n          content = _a.content;\n      var unknown = !this.bottom && !this.left && !this.top && !this.right;\n      var activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left;\n      var left = 0;\n\n      if (this.top || this.bottom || unknown) {\n        left = activatorLeft + activator.width / 2 - content.width / 2;\n      } else if (this.left || this.right) {\n        left = activatorLeft + (this.right ? activator.width : -content.width) + (this.right ? 10 : -10);\n      }\n\n      if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n      if (this.nudgeRight) left += parseInt(this.nudgeRight);\n      return this.calcXOverflow(left, this.dimensions.content.width) + \"px\";\n    },\n    calculatedTop: function calculatedTop() {\n      var _a = this.dimensions,\n          activator = _a.activator,\n          content = _a.content;\n      var activatorTop = this.attach !== false ? activator.offsetTop : activator.top;\n      var top = 0;\n\n      if (this.top || this.bottom) {\n        top = activatorTop + (this.bottom ? activator.height : -content.height) + (this.bottom ? 10 : -10);\n      } else if (this.left || this.right) {\n        top = activatorTop + activator.height / 2 - content.height / 2;\n      }\n\n      if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n      if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n      if (this.attach === false) top += this.pageYOffset;\n      return this.calcYOverflow(top) + \"px\";\n    },\n    classes: function classes() {\n      return {\n        'v-tooltip--top': this.top,\n        'v-tooltip--right': this.right,\n        'v-tooltip--bottom': this.bottom,\n        'v-tooltip--left': this.left,\n        'v-tooltip--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n      };\n    },\n    computedTransition: function computedTransition() {\n      if (this.transition) return this.transition;\n      return this.isActive ? 'scale-transition' : 'fade-transition';\n    },\n    offsetY: function offsetY() {\n      return this.top || this.bottom;\n    },\n    offsetX: function offsetX() {\n      return this.left || this.right;\n    },\n    styles: function styles() {\n      return {\n        left: this.calculatedLeft,\n        maxWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"convertToUnit\"])(this.maxWidth),\n        minWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"convertToUnit\"])(this.minWidth),\n        top: this.calculatedTop,\n        zIndex: this.zIndex || this.activeZIndex\n      };\n    }\n  },\n  beforeMount: function beforeMount() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      _this.value && _this.callActivate();\n    });\n  },\n  mounted: function mounted() {\n    if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getSlotType\"])(this, 'activator', true) === 'v-slot') {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"consoleError\"])(\"v-tooltip's activator slot must be bound, try '<template #activator=\\\"data\\\"><v-btn v-on=\\\"data.on>'\", this);\n    }\n  },\n  methods: {\n    activate: function activate() {\n      // Update coordinates and dimensions of menu\n      // and its activator\n      this.updateDimensions(); // Start the transition\n\n      requestAnimationFrame(this.startTransition);\n    },\n    deactivate: function deactivate() {\n      this.runDelay('close');\n    },\n    genActivatorListeners: function genActivatorListeners() {\n      var _this = this;\n\n      var listeners = _mixins_activatable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genActivatorListeners.call(this);\n\n      if (this.openOnFocus) {\n        listeners.focus = function (e) {\n          _this.getActivator(e);\n\n          _this.runDelay('open');\n        };\n\n        listeners.blur = function (e) {\n          _this.getActivator(e);\n\n          _this.runDelay('close');\n        };\n      }\n\n      listeners.keydown = function (e) {\n        if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].esc) {\n          _this.getActivator(e);\n\n          _this.runDelay('close');\n        }\n      };\n\n      return listeners;\n    },\n    genActivatorAttributes: function genActivatorAttributes() {\n      return {\n        'aria-haspopup': true,\n        'aria-expanded': String(this.isActive)\n      };\n    },\n    genTransition: function genTransition() {\n      var content = this.genContent();\n      if (!this.computedTransition) return content;\n      return this.$createElement('transition', {\n        props: {\n          name: this.computedTransition\n        }\n      }, [content]);\n    },\n    genContent: function genContent() {\n      var _a;\n\n      return this.$createElement('div', this.setBackgroundColor(this.color, {\n        staticClass: 'v-tooltip__content',\n        class: (_a = {}, _a[this.contentClass] = true, _a.menuable__content__active = this.isActive, _a['v-tooltip__content--fixed'] = this.activatorFixed, _a),\n        style: this.styles,\n        attrs: this.getScopeIdAttrs(),\n        directives: [{\n          name: 'show',\n          value: this.isContentActive\n        }],\n        ref: 'content'\n      }), this.getContentSlot());\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    return h(this.tag, {\n      staticClass: 'v-tooltip',\n      class: this.classes\n    }, [this.showLazyContent(function () {\n      return [_this.genTransition()];\n    }), this.genActivator()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTooltip/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/components/VTooltip/index.ts ***!\n  \\******************************************/\n/*! exports provided: VTooltip, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTooltip */ \"./src/components/VTooltip/VTooltip.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTooltip\", function() { return _VTooltip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTooltip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/VTreeview.sass\":\n/*!*************************************************!*\\\n  !*** ./src/components/VTreeview/VTreeview.sass ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/VTreeview.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VTreeview/VTreeview.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTreeview_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTreeview.sass */ \"./src/components/VTreeview/VTreeview.sass\");\n/* harmony import */ var _VTreeview_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VTreeview_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTreeviewNode */ \"./src/components/VTreeview/VTreeviewNode.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/filterTreeItems */ \"./src/components/VTreeview/util/filterTreeItems.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}; // Styles\n\n\n // Components\n\n // Mixins\n\n\n // Utils\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__[\"provide\"])('treeview'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'v-treeview',\n  provide: function provide() {\n    return {\n      treeview: this\n    };\n  },\n  props: __assign({\n    active: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    dense: Boolean,\n    disabled: Boolean,\n    filter: Function,\n    hoverable: Boolean,\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    multipleActive: Boolean,\n    open: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    openAll: Boolean,\n    returnObject: {\n      type: Boolean,\n      default: false // TODO: Should be true in next major\n\n    },\n    search: String,\n    value: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  }, _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"VTreeviewNodeProps\"]),\n  data: function data() {\n    return {\n      level: -1,\n      activeCache: new Set(),\n      nodes: {},\n      openCache: new Set(),\n      selectedCache: new Set()\n    };\n  },\n  computed: {\n    excludedItems: function excludedItems() {\n      var excluded = new Set();\n      if (!this.search) return excluded;\n\n      for (var i = 0; i < this.items.length; i++) {\n        Object(_util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__[\"filterTreeItems\"])(this.filter || _util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__[\"filterTreeItem\"], this.items[i], this.search, this.itemKey, this.itemText, this.itemChildren, excluded);\n      }\n\n      return excluded;\n    }\n  },\n  watch: {\n    items: {\n      handler: function handler() {\n        var _this = this;\n\n        var oldKeys = Object.keys(this.nodes).map(function (k) {\n          return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(_this.nodes[k].item, _this.itemKey);\n        });\n        var newKeys = this.getKeys(this.items);\n        var diff = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"arrayDiff\"])(newKeys, oldKeys); // We only want to do stuff if items have changed\n\n        if (!diff.length && newKeys.length < oldKeys.length) return; // If nodes are removed we need to clear them from this.nodes\n\n        diff.forEach(function (k) {\n          return delete _this.nodes[k];\n        });\n\n        var oldSelectedCache = __spreadArray([], __read(this.selectedCache), false);\n\n        this.selectedCache = new Set();\n        this.activeCache = new Set();\n        this.openCache = new Set();\n        this.buildTree(this.items); // Only emit selected if selection has changed\n        // as a result of items changing. This fixes a\n        // potential double emit when selecting a node\n        // with dynamic children\n\n        if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(oldSelectedCache, __spreadArray([], __read(this.selectedCache), false))) this.emitSelected();\n      },\n      deep: true\n    },\n    active: function active(value) {\n      this.handleNodeCacheWatcher(value, this.activeCache, this.updateActive, this.emitActive);\n    },\n    value: function value(_value) {\n      this.handleNodeCacheWatcher(_value, this.selectedCache, this.updateSelected, this.emitSelected);\n    },\n    open: function open(value) {\n      this.handleNodeCacheWatcher(value, this.openCache, this.updateOpen, this.emitOpen);\n    }\n  },\n  created: function created() {\n    var e_1, _a, e_2, _b;\n\n    var _this = this;\n\n    var getValue = function getValue(key) {\n      return _this.returnObject ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(key, _this.itemKey) : key;\n    };\n\n    this.buildTree(this.items);\n\n    try {\n      for (var _c = __values(this.value.map(getValue)), _d = _c.next(); !_d.done; _d = _c.next()) {\n        var value = _d.value;\n        this.updateSelected(value, true, true);\n      }\n    } catch (e_1_1) {\n      e_1 = {\n        error: e_1_1\n      };\n    } finally {\n      try {\n        if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n      } finally {\n        if (e_1) throw e_1.error;\n      }\n    }\n\n    try {\n      for (var _e = __values(this.active.map(getValue)), _f = _e.next(); !_f.done; _f = _e.next()) {\n        var active = _f.value;\n        this.updateActive(active, true);\n      }\n    } catch (e_2_1) {\n      e_2 = {\n        error: e_2_1\n      };\n    } finally {\n      try {\n        if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n      } finally {\n        if (e_2) throw e_2.error;\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this; // Save the developer from themselves\n\n\n    if (this.$slots.prepend || this.$slots.append) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"consoleWarn\"])('The prepend and append slots require a slot-scope attribute', this);\n    }\n\n    if (this.openAll) {\n      this.updateAll(true);\n    } else {\n      this.open.forEach(function (key) {\n        return _this.updateOpen(_this.returnObject ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(key, _this.itemKey) : key, true);\n      });\n      this.emitOpen();\n    }\n  },\n  methods: {\n    /** @public */\n    updateAll: function updateAll(value) {\n      var _this = this;\n\n      Object.keys(this.nodes).forEach(function (key) {\n        return _this.updateOpen(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(_this.nodes[key].item, _this.itemKey), value);\n      });\n      this.emitOpen();\n    },\n    getKeys: function getKeys(items, keys) {\n      if (keys === void 0) {\n        keys = [];\n      }\n\n      for (var i = 0; i < items.length; i++) {\n        var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(items[i], this.itemKey);\n        keys.push(key);\n        var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(items[i], this.itemChildren);\n\n        if (children) {\n          keys.push.apply(keys, __spreadArray([], __read(this.getKeys(children)), false));\n        }\n      }\n\n      return keys;\n    },\n    buildTree: function buildTree(items, parent) {\n      var _this = this;\n\n      var _a;\n\n      if (parent === void 0) {\n        parent = null;\n      }\n\n      for (var i = 0; i < items.length; i++) {\n        var item = items[i];\n        var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(item, this.itemKey);\n        var children = (_a = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(item, this.itemChildren)) !== null && _a !== void 0 ? _a : [];\n        var oldNode = this.nodes.hasOwnProperty(key) ? this.nodes[key] : {\n          isSelected: false,\n          isIndeterminate: false,\n          isActive: false,\n          isOpen: false,\n          vnode: null\n        };\n        var node = {\n          vnode: oldNode.vnode,\n          parent: parent,\n          children: children.map(function (c) {\n            return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(c, _this.itemKey);\n          }),\n          item: item\n        };\n        this.buildTree(children, key); // This fixed bug with dynamic children resetting selected parent state\n\n        if (this.selectionType !== 'independent' && parent !== null && !this.nodes.hasOwnProperty(key) && this.nodes.hasOwnProperty(parent)) {\n          node.isSelected = this.nodes[parent].isSelected;\n        } else {\n          node.isSelected = oldNode.isSelected;\n          node.isIndeterminate = oldNode.isIndeterminate;\n        }\n\n        node.isActive = oldNode.isActive;\n        node.isOpen = oldNode.isOpen;\n        this.nodes[key] = node;\n\n        if (children.length && this.selectionType !== 'independent') {\n          var _b = this.calculateState(key, this.nodes),\n              isSelected = _b.isSelected,\n              isIndeterminate = _b.isIndeterminate;\n\n          node.isSelected = isSelected;\n          node.isIndeterminate = isIndeterminate;\n        } // Don't forget to rebuild cache\n\n\n        if (this.nodes[key].isSelected && (this.selectionType === 'independent' || node.children.length === 0)) this.selectedCache.add(key);\n        if (this.nodes[key].isActive) this.activeCache.add(key);\n        if (this.nodes[key].isOpen) this.openCache.add(key);\n        this.updateVnodeState(key);\n      }\n    },\n    calculateState: function calculateState(node, state) {\n      var children = state[node].children;\n      var counts = children.reduce(function (counts, child) {\n        counts[0] += +Boolean(state[child].isSelected);\n        counts[1] += +Boolean(state[child].isIndeterminate);\n        return counts;\n      }, [0, 0]);\n      var isSelected = !!children.length && counts[0] === children.length;\n      var isIndeterminate = !isSelected && (counts[0] > 0 || counts[1] > 0);\n      return {\n        isSelected: isSelected,\n        isIndeterminate: isIndeterminate\n      };\n    },\n    emitOpen: function emitOpen() {\n      this.emitNodeCache('update:open', this.openCache);\n    },\n    emitSelected: function emitSelected() {\n      this.emitNodeCache('input', this.selectedCache);\n    },\n    emitActive: function emitActive() {\n      this.emitNodeCache('update:active', this.activeCache);\n    },\n    emitNodeCache: function emitNodeCache(event, cache) {\n      var _this = this;\n\n      this.$emit(event, this.returnObject ? __spreadArray([], __read(cache), false).map(function (key) {\n        return _this.nodes[key].item;\n      }) : __spreadArray([], __read(cache), false));\n    },\n    handleNodeCacheWatcher: function handleNodeCacheWatcher(value, cache, updateFn, emitFn) {\n      var _this = this;\n\n      value = this.returnObject ? value.map(function (v) {\n        return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(v, _this.itemKey);\n      }) : value;\n\n      var old = __spreadArray([], __read(cache), false);\n\n      if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(old, value)) return;\n      old.forEach(function (key) {\n        return updateFn(key, false);\n      });\n      value.forEach(function (key) {\n        return updateFn(key, true);\n      });\n      emitFn();\n    },\n    getDescendants: function getDescendants(key, descendants) {\n      if (descendants === void 0) {\n        descendants = [];\n      }\n\n      var children = this.nodes[key].children;\n      descendants.push.apply(descendants, __spreadArray([], __read(children), false));\n\n      for (var i = 0; i < children.length; i++) {\n        descendants = this.getDescendants(children[i], descendants);\n      }\n\n      return descendants;\n    },\n    getParents: function getParents(key) {\n      var parent = this.nodes[key].parent;\n      var parents = [];\n\n      while (parent !== null) {\n        parents.push(parent);\n        parent = this.nodes[parent].parent;\n      }\n\n      return parents;\n    },\n    register: function register(node) {\n      var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(node.item, this.itemKey);\n      this.nodes[key].vnode = node;\n      this.updateVnodeState(key);\n    },\n    unregister: function unregister(node) {\n      var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(node.item, this.itemKey);\n      if (this.nodes[key]) this.nodes[key].vnode = null;\n    },\n    isParent: function isParent(key) {\n      return this.nodes[key].children && this.nodes[key].children.length;\n    },\n    updateActive: function updateActive(key, isActive) {\n      var _this = this;\n\n      if (!this.nodes.hasOwnProperty(key)) return;\n\n      if (!this.multipleActive) {\n        this.activeCache.forEach(function (active) {\n          _this.nodes[active].isActive = false;\n\n          _this.updateVnodeState(active);\n\n          _this.activeCache.delete(active);\n        });\n      }\n\n      var node = this.nodes[key];\n      if (!node) return;\n      if (isActive) this.activeCache.add(key);else this.activeCache.delete(key);\n      node.isActive = isActive;\n      this.updateVnodeState(key);\n    },\n    updateSelected: function updateSelected(key, isSelected, isForced) {\n      var e_3, _a, e_4, _b, e_5, _c;\n\n      if (isForced === void 0) {\n        isForced = false;\n      }\n\n      if (!this.nodes.hasOwnProperty(key)) return;\n      var changed = new Map();\n\n      if (this.selectionType !== 'independent') {\n        try {\n          for (var _d = __values(this.getDescendants(key)), _e = _d.next(); !_e.done; _e = _d.next()) {\n            var descendant = _e.value;\n\n            if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(this.nodes[descendant].item, this.itemDisabled) || isForced) {\n              this.nodes[descendant].isSelected = isSelected;\n              this.nodes[descendant].isIndeterminate = false;\n              changed.set(descendant, isSelected);\n            }\n          }\n        } catch (e_3_1) {\n          e_3 = {\n            error: e_3_1\n          };\n        } finally {\n          try {\n            if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n          } finally {\n            if (e_3) throw e_3.error;\n          }\n        }\n\n        var calculated = this.calculateState(key, this.nodes);\n        this.nodes[key].isSelected = isSelected;\n        this.nodes[key].isIndeterminate = calculated.isIndeterminate;\n        changed.set(key, isSelected);\n\n        try {\n          for (var _f = __values(this.getParents(key)), _g = _f.next(); !_g.done; _g = _f.next()) {\n            var parent = _g.value;\n            var calculated_1 = this.calculateState(parent, this.nodes);\n            this.nodes[parent].isSelected = calculated_1.isSelected;\n            this.nodes[parent].isIndeterminate = calculated_1.isIndeterminate;\n            changed.set(parent, calculated_1.isSelected);\n          }\n        } catch (e_4_1) {\n          e_4 = {\n            error: e_4_1\n          };\n        } finally {\n          try {\n            if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n          } finally {\n            if (e_4) throw e_4.error;\n          }\n        }\n      } else {\n        this.nodes[key].isSelected = isSelected;\n        this.nodes[key].isIndeterminate = false;\n        changed.set(key, isSelected);\n      }\n\n      try {\n        for (var _h = __values(changed.entries()), _j = _h.next(); !_j.done; _j = _h.next()) {\n          var _k = __read(_j.value, 2),\n              key_1 = _k[0],\n              value = _k[1];\n\n          this.updateVnodeState(key_1);\n          if (this.selectionType === 'leaf' && this.isParent(key_1)) continue;\n          value === true ? this.selectedCache.add(key_1) : this.selectedCache.delete(key_1);\n        }\n      } catch (e_5_1) {\n        e_5 = {\n          error: e_5_1\n        };\n      } finally {\n        try {\n          if (_j && !_j.done && (_c = _h.return)) _c.call(_h);\n        } finally {\n          if (e_5) throw e_5.error;\n        }\n      }\n    },\n    updateOpen: function updateOpen(key, isOpen) {\n      var _this = this;\n\n      if (!this.nodes.hasOwnProperty(key)) return;\n      var node = this.nodes[key];\n      var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(node.item, this.itemChildren);\n\n      if (children && !children.length && node.vnode && !node.vnode.hasLoaded) {\n        node.vnode.checkChildren().then(function () {\n          return _this.updateOpen(key, isOpen);\n        });\n      } else if (children && children.length) {\n        node.isOpen = isOpen;\n        node.isOpen ? this.openCache.add(key) : this.openCache.delete(key);\n        this.updateVnodeState(key);\n      }\n    },\n    updateVnodeState: function updateVnodeState(key) {\n      var node = this.nodes[key];\n\n      if (node && node.vnode) {\n        node.vnode.isSelected = node.isSelected;\n        node.vnode.isIndeterminate = node.isIndeterminate;\n        node.vnode.isActive = node.isActive;\n        node.vnode.isOpen = node.isOpen;\n      }\n    },\n    isExcluded: function isExcluded(key) {\n      return !!this.search && this.excludedItems.has(key);\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var children = this.items.length ? this.items.filter(function (item) {\n      return !_this.isExcluded(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(item, _this.itemKey));\n    }).map(function (item) {\n      var genChild = _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genChild.bind(_this);\n      return genChild(item, _this.disabled || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(item, _this.itemDisabled));\n    })\n    /* istanbul ignore next */\n    : this.$slots.default; // TODO: remove type annotation with TS 3.2\n\n    return h('div', {\n      staticClass: 'v-treeview',\n      class: __assign({\n        'v-treeview--hoverable': this.hoverable,\n        'v-treeview--dense': this.dense\n      }, this.themeClasses)\n    }, children);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/VTreeviewNode.ts\":\n/*!***************************************************!*\\\n  !*** ./src/components/VTreeview/VTreeviewNode.ts ***!\n  \\***************************************************/\n/*! exports provided: VTreeviewNodeProps, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTreeviewNodeProps\", function() { return VTreeviewNodeProps; });\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Components\n\n\n\n // Mixins\n\n\n // Utils\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"inject\"])('treeview'));\nvar VTreeviewNodeProps = {\n  activatable: Boolean,\n  activeClass: {\n    type: String,\n    default: 'v-treeview-node--active'\n  },\n  color: {\n    type: String,\n    default: 'primary'\n  },\n  disablePerNode: Boolean,\n  expandIcon: {\n    type: String,\n    default: '$subgroup'\n  },\n  indeterminateIcon: {\n    type: String,\n    default: '$checkboxIndeterminate'\n  },\n  itemChildren: {\n    type: String,\n    default: 'children'\n  },\n  itemDisabled: {\n    type: String,\n    default: 'disabled'\n  },\n  itemKey: {\n    type: String,\n    default: 'id'\n  },\n  itemText: {\n    type: String,\n    default: 'name'\n  },\n  loadChildren: Function,\n  loadingIcon: {\n    type: String,\n    default: '$loading'\n  },\n  offIcon: {\n    type: String,\n    default: '$checkboxOff'\n  },\n  onIcon: {\n    type: String,\n    default: '$checkboxOn'\n  },\n  openOnClick: Boolean,\n  rounded: Boolean,\n  selectable: Boolean,\n  selectedColor: {\n    type: String,\n    default: 'accent'\n  },\n  shaped: Boolean,\n  transition: Boolean,\n  selectionType: {\n    type: String,\n    default: 'leaf',\n    validator: function validator(v) {\n      return ['leaf', 'independent'].includes(v);\n    }\n  }\n};\n/* @vue/component */\n\nvar VTreeviewNode = baseMixins.extend().extend({\n  name: 'v-treeview-node',\n  inject: {\n    treeview: {\n      default: null\n    }\n  },\n  props: __assign({\n    level: Number,\n    item: {\n      type: Object,\n      default: function _default() {\n        return null;\n      }\n    },\n    parentIsDisabled: Boolean\n  }, VTreeviewNodeProps),\n  data: function data() {\n    return {\n      hasLoaded: false,\n      isActive: false,\n      isIndeterminate: false,\n      isLoading: false,\n      isOpen: false,\n      isSelected: false // Node is selected (checkbox)\n\n    };\n  },\n  computed: {\n    disabled: function disabled() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemDisabled) || !this.disablePerNode && this.parentIsDisabled && this.selectionType === 'leaf';\n    },\n    key: function key() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemKey);\n    },\n    children: function children() {\n      var _this = this;\n\n      var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemChildren);\n      return children && children.filter(function (child) {\n        return !_this.treeview.isExcluded(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(child, _this.itemKey));\n      });\n    },\n    text: function text() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemText);\n    },\n    scopedProps: function scopedProps() {\n      return {\n        item: this.item,\n        leaf: !this.children,\n        selected: this.isSelected,\n        indeterminate: this.isIndeterminate,\n        active: this.isActive,\n        open: this.isOpen\n      };\n    },\n    computedIcon: function computedIcon() {\n      if (this.isIndeterminate) return this.indeterminateIcon;else if (this.isSelected) return this.onIcon;else return this.offIcon;\n    },\n    hasChildren: function hasChildren() {\n      return !!this.children && (!!this.children.length || !!this.loadChildren);\n    }\n  },\n  created: function created() {\n    this.treeview.register(this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.treeview.unregister(this);\n  },\n  methods: {\n    checkChildren: function checkChildren() {\n      var _this = this;\n\n      return new Promise(function (resolve) {\n        // TODO: Potential issue with always trying\n        // to load children if response is empty?\n        if (!_this.children || _this.children.length || !_this.loadChildren || _this.hasLoaded) return resolve();\n        _this.isLoading = true;\n        resolve(_this.loadChildren(_this.item));\n      }).then(function () {\n        _this.isLoading = false;\n        _this.hasLoaded = true;\n      });\n    },\n    open: function open() {\n      this.isOpen = !this.isOpen;\n      this.treeview.updateOpen(this.key, this.isOpen);\n      this.treeview.emitOpen();\n    },\n    genLabel: function genLabel() {\n      var children = [];\n      if (this.$scopedSlots.label) children.push(this.$scopedSlots.label(this.scopedProps));else children.push(this.text);\n      return this.$createElement('div', {\n        slot: 'label',\n        staticClass: 'v-treeview-node__label'\n      }, children);\n    },\n    genPrependSlot: function genPrependSlot() {\n      if (!this.$scopedSlots.prepend) return null;\n      return this.$createElement('div', {\n        staticClass: 'v-treeview-node__prepend'\n      }, this.$scopedSlots.prepend(this.scopedProps));\n    },\n    genAppendSlot: function genAppendSlot() {\n      if (!this.$scopedSlots.append) return null;\n      return this.$createElement('div', {\n        staticClass: 'v-treeview-node__append'\n      }, this.$scopedSlots.append(this.scopedProps));\n    },\n    genContent: function genContent() {\n      var children = [this.genPrependSlot(), this.genLabel(), this.genAppendSlot()];\n      return this.$createElement('div', {\n        staticClass: 'v-treeview-node__content'\n      }, children);\n    },\n    genToggle: function genToggle() {\n      var _this = this;\n\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"VIcon\"], {\n        staticClass: 'v-treeview-node__toggle',\n        class: {\n          'v-treeview-node__toggle--open': this.isOpen,\n          'v-treeview-node__toggle--loading': this.isLoading\n        },\n        slot: 'prepend',\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n            if (_this.isLoading) return;\n\n            _this.checkChildren().then(function () {\n              return _this.open();\n            });\n          }\n        }\n      }, [this.isLoading ? this.loadingIcon : this.expandIcon]);\n    },\n    genCheckbox: function genCheckbox() {\n      var _this = this;\n\n      return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"VIcon\"], {\n        staticClass: 'v-treeview-node__checkbox',\n        props: {\n          color: this.isSelected || this.isIndeterminate ? this.selectedColor : undefined,\n          disabled: this.disabled\n        },\n        on: {\n          click: function click(e) {\n            e.stopPropagation();\n            if (_this.isLoading) return;\n\n            _this.checkChildren().then(function () {\n              // We nextTick here so that items watch in VTreeview has a chance to run first\n              _this.$nextTick(function () {\n                _this.isSelected = !_this.isSelected;\n                _this.isIndeterminate = false;\n\n                _this.treeview.updateSelected(_this.key, _this.isSelected);\n\n                _this.treeview.emitSelected();\n              });\n            });\n          }\n        }\n      }, [this.computedIcon]);\n    },\n    genLevel: function genLevel(level) {\n      var _this = this;\n\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"createRange\"])(level).map(function () {\n        return _this.$createElement('div', {\n          staticClass: 'v-treeview-node__level'\n        });\n      });\n    },\n    genNode: function genNode() {\n      var _a;\n\n      var _this = this;\n\n      var children = [this.genContent()];\n      if (this.selectable) children.unshift(this.genCheckbox());\n\n      if (this.hasChildren) {\n        children.unshift(this.genToggle());\n      } else {\n        children.unshift.apply(children, __spreadArray([], __read(this.genLevel(1)), false));\n      }\n\n      children.unshift.apply(children, __spreadArray([], __read(this.genLevel(this.level)), false));\n      return this.$createElement('div', this.setTextColor(this.isActive && this.color, {\n        staticClass: 'v-treeview-node__root',\n        class: (_a = {}, _a[this.activeClass] = this.isActive, _a),\n        on: {\n          click: function click() {\n            if (_this.openOnClick && _this.hasChildren) {\n              _this.checkChildren().then(_this.open);\n            } else if (_this.activatable && !_this.disabled) {\n              _this.isActive = !_this.isActive;\n\n              _this.treeview.updateActive(_this.key, _this.isActive);\n\n              _this.treeview.emitActive();\n            }\n          }\n        }\n      }), children);\n    },\n    genChild: function genChild(item, parentIsDisabled) {\n      return this.$createElement(VTreeviewNode, {\n        key: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey),\n        props: {\n          activatable: this.activatable,\n          activeClass: this.activeClass,\n          item: item,\n          selectable: this.selectable,\n          selectedColor: this.selectedColor,\n          color: this.color,\n          disablePerNode: this.disablePerNode,\n          expandIcon: this.expandIcon,\n          indeterminateIcon: this.indeterminateIcon,\n          offIcon: this.offIcon,\n          onIcon: this.onIcon,\n          loadingIcon: this.loadingIcon,\n          itemKey: this.itemKey,\n          itemText: this.itemText,\n          itemDisabled: this.itemDisabled,\n          itemChildren: this.itemChildren,\n          loadChildren: this.loadChildren,\n          transition: this.transition,\n          openOnClick: this.openOnClick,\n          rounded: this.rounded,\n          shaped: this.shaped,\n          level: this.level + 1,\n          selectionType: this.selectionType,\n          parentIsDisabled: parentIsDisabled\n        },\n        scopedSlots: this.$scopedSlots\n      });\n    },\n    genChildrenWrapper: function genChildrenWrapper() {\n      var _this = this;\n\n      if (!this.isOpen || !this.children) return null;\n      var children = [this.children.map(function (c) {\n        return _this.genChild(c, _this.disabled);\n      })];\n      return this.$createElement('div', {\n        staticClass: 'v-treeview-node__children'\n      }, children);\n    },\n    genTransition: function genTransition() {\n      return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_0__[\"VExpandTransition\"], [this.genChildrenWrapper()]);\n    }\n  },\n  render: function render(h) {\n    var children = [this.genNode()];\n    if (this.transition) children.push(this.genTransition());else children.push(this.genChildrenWrapper());\n    return h('div', {\n      staticClass: 'v-treeview-node',\n      class: {\n        'v-treeview-node--leaf': !this.hasChildren,\n        'v-treeview-node--click': this.openOnClick,\n        'v-treeview-node--disabled': this.disabled,\n        'v-treeview-node--rounded': this.rounded,\n        'v-treeview-node--shaped': this.shaped,\n        'v-treeview-node--selected': this.isSelected\n      },\n      attrs: {\n        'aria-expanded': String(this.isOpen)\n      }\n    }, children);\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (VTreeviewNode);\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VTreeview/index.ts ***!\n  \\*******************************************/\n/*! exports provided: VTreeview, VTreeviewNode, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTreeview__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTreeview */ \"./src/components/VTreeview/VTreeview.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeview\", function() { return _VTreeview__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTreeviewNode */ \"./src/components/VTreeview/VTreeviewNode.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeviewNode\", function() { return _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VTreeview: _VTreeview__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VTreeviewNode: _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/util/filterTreeItems.ts\":\n/*!**********************************************************!*\\\n  !*** ./src/components/VTreeview/util/filterTreeItems.ts ***!\n  \\**********************************************************/\n/*! exports provided: filterTreeItem, filterTreeItems */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterTreeItem\", function() { return filterTreeItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterTreeItems\", function() { return filterTreeItems; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\n\nfunction filterTreeItem(item, search, textKey) {\n  var text = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getObjectValueByPath\"])(item, textKey);\n  return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n}\nfunction filterTreeItems(filter, item, search, idKey, textKey, childrenKey, excluded) {\n  if (filter(item, search, textKey)) {\n    return true;\n  }\n\n  var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getObjectValueByPath\"])(item, childrenKey);\n\n  if (children) {\n    var match = false;\n\n    for (var i = 0; i < children.length; i++) {\n      if (filterTreeItems(filter, children[i], search, idKey, textKey, childrenKey, excluded)) {\n        match = true;\n      }\n    }\n\n    if (match) return true;\n  }\n\n  excluded.add(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getObjectValueByPath\"])(item, idKey));\n  return false;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VVirtualScroll/VVirtualScroll.sass\":\n/*!***********************************************************!*\\\n  !*** ./src/components/VVirtualScroll/VVirtualScroll.sass ***!\n  \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VVirtualScroll/VVirtualScroll.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/VVirtualScroll/VVirtualScroll.ts ***!\n  \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VVirtualScroll_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VVirtualScroll.sass */ \"./src/components/VVirtualScroll/VVirtualScroll.sass\");\n/* harmony import */ var _VVirtualScroll_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VVirtualScroll_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable/index.ts\");\n/* harmony import */ var _directives_scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/scroll */ \"./src/directives/scroll/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n // Mixins\n\n // Directives\n\n // Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_measurable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n  name: 'v-virtual-scroll',\n  directives: {\n    Scroll: _directives_scroll__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  props: {\n    bench: {\n      type: [Number, String],\n      default: 0\n    },\n    itemHeight: {\n      type: [Number, String],\n      required: true\n    },\n    items: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  },\n  data: function data() {\n    return {\n      first: 0,\n      last: 0,\n      scrollTop: 0\n    };\n  },\n  computed: {\n    __bench: function __bench() {\n      return parseInt(this.bench, 10);\n    },\n    __itemHeight: function __itemHeight() {\n      return parseInt(this.itemHeight, 10);\n    },\n    firstToRender: function firstToRender() {\n      return Math.max(0, this.first - this.__bench);\n    },\n    lastToRender: function lastToRender() {\n      return Math.min(this.items.length, this.last + this.__bench);\n    }\n  },\n  watch: {\n    height: 'onScroll',\n    itemHeight: 'onScroll'\n  },\n  mounted: function mounted() {\n    this.last = this.getLast(0);\n  },\n  methods: {\n    getChildren: function getChildren() {\n      return this.items.slice(this.firstToRender, this.lastToRender).map(this.genChild);\n    },\n    genChild: function genChild(item, index) {\n      index += this.firstToRender;\n      var top = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(index * this.__itemHeight);\n      return this.$createElement('div', {\n        staticClass: 'v-virtual-scroll__item',\n        style: {\n          top: top\n        },\n        key: index\n      }, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'default', {\n        index: index,\n        item: item\n      }));\n    },\n    getFirst: function getFirst() {\n      return Math.floor(this.scrollTop / this.__itemHeight);\n    },\n    getLast: function getLast(first) {\n      var height = parseInt(this.height || 0, 10) || this.$el.clientHeight;\n      return first + Math.ceil(height / this.__itemHeight);\n    },\n    onScroll: function onScroll() {\n      this.scrollTop = this.$el.scrollTop;\n      this.first = this.getFirst();\n      this.last = this.getLast(this.first);\n    }\n  },\n  render: function render(h) {\n    var content = h('div', {\n      staticClass: 'v-virtual-scroll__container',\n      style: {\n        height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.items.length * this.__itemHeight)\n      }\n    }, this.getChildren());\n    return h('div', {\n      staticClass: 'v-virtual-scroll',\n      style: this.measurableStyles,\n      directives: [{\n        name: 'scroll',\n        modifiers: {\n          self: true\n        },\n        value: this.onScroll\n      }],\n      on: this.$listeners\n    }, [content]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VVirtualScroll/index.ts\":\n/*!************************************************!*\\\n  !*** ./src/components/VVirtualScroll/index.ts ***!\n  \\************************************************/\n/*! exports provided: VVirtualScroll, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VVirtualScroll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VVirtualScroll */ \"./src/components/VVirtualScroll/VVirtualScroll.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VVirtualScroll\", function() { return _VVirtualScroll__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VVirtualScroll__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/VWindow.sass\":\n/*!*********************************************!*\\\n  !*** ./src/components/VWindow/VWindow.sass ***!\n  \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/VWindow.ts\":\n/*!*******************************************!*\\\n  !*** ./src/components/VWindow/VWindow.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VWindow.sass */ \"./src/components/VWindow/VWindow.sass\");\n/* harmony import */ var _VWindow_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VWindow_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch/index.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Styles\n\n\n // Directives\n\n // Components\n\n\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_4__[\"BaseItemGroup\"].extend({\n  name: 'v-window',\n  directives: {\n    Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  provide: function provide() {\n    return {\n      windowGroup: this\n    };\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-window-item--active'\n    },\n    continuous: Boolean,\n    mandatory: {\n      type: Boolean,\n      default: true\n    },\n    nextIcon: {\n      type: [Boolean, String],\n      default: '$next'\n    },\n    prevIcon: {\n      type: [Boolean, String],\n      default: '$prev'\n    },\n    reverse: Boolean,\n    showArrows: Boolean,\n    showArrowsOnHover: Boolean,\n    touch: Object,\n    touchless: Boolean,\n    value: {\n      required: false\n    },\n    vertical: Boolean\n  },\n  data: function data() {\n    return {\n      changedByDelimiters: false,\n      internalHeight: undefined,\n      transitionHeight: undefined,\n      transitionCount: 0,\n      isBooted: false,\n      isReverse: false\n    };\n  },\n  computed: {\n    isActive: function isActive() {\n      return this.transitionCount > 0;\n    },\n    classes: function classes() {\n      return __assign(__assign({}, _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_4__[\"BaseItemGroup\"].options.computed.classes.call(this)), {\n        'v-window--show-arrows-on-hover': this.showArrowsOnHover\n      });\n    },\n    computedTransition: function computedTransition() {\n      if (!this.isBooted) return '';\n      var axis = this.vertical ? 'y' : 'x';\n      var reverse = this.internalReverse ? !this.isReverse : this.isReverse;\n      var direction = reverse ? '-reverse' : '';\n      return \"v-window-\" + axis + direction + \"-transition\";\n    },\n    hasActiveItems: function hasActiveItems() {\n      return Boolean(this.items.find(function (item) {\n        return !item.disabled;\n      }));\n    },\n    hasNext: function hasNext() {\n      return this.continuous || this.internalIndex < this.items.length - 1;\n    },\n    hasPrev: function hasPrev() {\n      return this.continuous || this.internalIndex > 0;\n    },\n    internalIndex: function internalIndex() {\n      var _this = this;\n\n      return this.items.findIndex(function (item, i) {\n        return _this.internalValue === _this.getValue(item, i);\n      });\n    },\n    internalReverse: function internalReverse() {\n      return this.$vuetify.rtl ? !this.reverse : this.reverse;\n    }\n  },\n  watch: {\n    internalIndex: function internalIndex(val, oldVal) {\n      this.isReverse = this.updateReverse(val, oldVal);\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    window.requestAnimationFrame(function () {\n      return _this.isBooted = true;\n    });\n  },\n  methods: {\n    genDefaultSlot: function genDefaultSlot() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this);\n    },\n    genContainer: function genContainer() {\n      var children = [this.genDefaultSlot()];\n\n      if (this.showArrows) {\n        children.push(this.genControlIcons());\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-window__container',\n        class: {\n          'v-window__container--is-active': this.isActive\n        },\n        style: {\n          height: this.internalHeight || this.transitionHeight\n        }\n      }, children);\n    },\n    genIcon: function genIcon(direction, icon, _click) {\n      var _this = this;\n\n      var _a, _b, _c;\n\n      var on = {\n        click: function click(e) {\n          e.stopPropagation();\n          _this.changedByDelimiters = true;\n\n          _click();\n        }\n      };\n      var attrs = {\n        'aria-label': this.$vuetify.lang.t(\"$vuetify.carousel.\" + direction)\n      };\n      var children = (_c = (_b = (_a = this.$scopedSlots)[direction]) === null || _b === void 0 ? void 0 : _b.call(_a, {\n        on: on,\n        attrs: attrs\n      })) !== null && _c !== void 0 ? _c : [this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n        props: {\n          icon: true\n        },\n        attrs: attrs,\n        on: on\n      }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n        props: {\n          large: true\n        }\n      }, icon)])];\n      return this.$createElement('div', {\n        staticClass: \"v-window__\" + direction\n      }, children);\n    },\n    genControlIcons: function genControlIcons() {\n      var icons = [];\n      var prevIcon = this.$vuetify.rtl ? this.nextIcon : this.prevIcon;\n      /* istanbul ignore else */\n\n      if (this.hasPrev && prevIcon && typeof prevIcon === 'string') {\n        var icon = this.genIcon('prev', prevIcon, this.prev);\n        icon && icons.push(icon);\n      }\n\n      var nextIcon = this.$vuetify.rtl ? this.prevIcon : this.nextIcon;\n      /* istanbul ignore else */\n\n      if (this.hasNext && nextIcon && typeof nextIcon === 'string') {\n        var icon = this.genIcon('next', nextIcon, this.next);\n        icon && icons.push(icon);\n      }\n\n      return icons;\n    },\n    getNextIndex: function getNextIndex(index) {\n      var nextIndex = (index + 1) % this.items.length;\n      var item = this.items[nextIndex];\n      if (item.disabled) return this.getNextIndex(nextIndex);\n      return nextIndex;\n    },\n    getPrevIndex: function getPrevIndex(index) {\n      var prevIndex = (index + this.items.length - 1) % this.items.length;\n      var item = this.items[prevIndex];\n      if (item.disabled) return this.getPrevIndex(prevIndex);\n      return prevIndex;\n    },\n    next: function next() {\n      /* istanbul ignore if */\n      if (!this.hasActiveItems || !this.hasNext) return;\n      var nextIndex = this.getNextIndex(this.internalIndex);\n      var item = this.items[nextIndex];\n      this.internalValue = this.getValue(item, nextIndex);\n    },\n    prev: function prev() {\n      /* istanbul ignore if */\n      if (!this.hasActiveItems || !this.hasPrev) return;\n      var lastIndex = this.getPrevIndex(this.internalIndex);\n      var item = this.items[lastIndex];\n      this.internalValue = this.getValue(item, lastIndex);\n    },\n    updateReverse: function updateReverse(val, oldVal) {\n      var itemsLength = this.items.length;\n      var lastIndex = itemsLength - 1;\n      if (itemsLength <= 2) return val < oldVal;\n\n      if (val === lastIndex && oldVal === 0) {\n        return true;\n      } else if (val === 0 && oldVal === lastIndex) {\n        return false;\n      } else {\n        return val < oldVal;\n      }\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var data = {\n      staticClass: 'v-window',\n      class: this.classes,\n      directives: []\n    };\n\n    if (!this.touchless) {\n      var value = this.touch || {\n        left: function left() {\n          _this.$vuetify.rtl ? _this.prev() : _this.next();\n        },\n        right: function right() {\n          _this.$vuetify.rtl ? _this.next() : _this.prev();\n        },\n        end: function end(e) {\n          e.stopPropagation();\n        },\n        start: function start(e) {\n          e.stopPropagation();\n        }\n      };\n      data.directives.push({\n        name: 'touch',\n        value: value\n      });\n    }\n\n    return h('div', data, [this.genContainer()]);\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/VWindowItem.ts\":\n/*!***********************************************!*\\\n  !*** ./src/components/VWindow/VWindowItem.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_bootable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/bootable */ \"./src/mixins/bootable/index.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable/index.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n\n // Directives\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_bootable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_1__[\"factory\"])('windowGroup', 'v-window-item', 'v-window'));\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend().extend({\n  name: 'v-window-item',\n  directives: {\n    Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n  },\n  props: {\n    disabled: Boolean,\n    reverseTransition: {\n      type: [Boolean, String],\n      default: undefined\n    },\n    transition: {\n      type: [Boolean, String],\n      default: undefined\n    },\n    value: {\n      required: false\n    }\n  },\n  data: function data() {\n    return {\n      isActive: false,\n      inTransition: false\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return this.groupClasses;\n    },\n    computedTransition: function computedTransition() {\n      if (!this.windowGroup.internalReverse) {\n        return typeof this.transition !== 'undefined' ? this.transition || '' : this.windowGroup.computedTransition;\n      }\n\n      return typeof this.reverseTransition !== 'undefined' ? this.reverseTransition || '' : this.windowGroup.computedTransition;\n    }\n  },\n  methods: {\n    genDefaultSlot: function genDefaultSlot() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this);\n    },\n    genWindowItem: function genWindowItem() {\n      return this.$createElement('div', {\n        staticClass: 'v-window-item',\n        class: this.classes,\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }],\n        on: this.$listeners\n      }, this.genDefaultSlot());\n    },\n    onAfterTransition: function onAfterTransition() {\n      if (!this.inTransition) {\n        return;\n      } // Finalize transition state.\n\n\n      this.inTransition = false;\n\n      if (this.windowGroup.transitionCount > 0) {\n        this.windowGroup.transitionCount--; // Remove container height if we are out of transition.\n\n        if (this.windowGroup.transitionCount === 0) {\n          this.windowGroup.transitionHeight = undefined;\n        }\n      }\n    },\n    onBeforeTransition: function onBeforeTransition() {\n      if (this.inTransition) {\n        return;\n      } // Initialize transition state here.\n\n\n      this.inTransition = true;\n\n      if (this.windowGroup.transitionCount === 0) {\n        // Set initial height for height transition.\n        this.windowGroup.transitionHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.windowGroup.$el.clientHeight);\n      }\n\n      this.windowGroup.transitionCount++;\n    },\n    onTransitionCancelled: function onTransitionCancelled() {\n      this.onAfterTransition(); // This should have the same path as normal transition end.\n    },\n    onEnter: function onEnter(el) {\n      var _this = this;\n\n      if (!this.inTransition) {\n        return;\n      }\n\n      this.$nextTick(function () {\n        // Do not set height if no transition or cancelled.\n        if (!_this.computedTransition || !_this.inTransition) {\n          return;\n        } // Set transition target height.\n\n\n        _this.windowGroup.transitionHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(el.clientHeight);\n      });\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    return h('transition', {\n      props: {\n        name: this.computedTransition\n      },\n      on: {\n        // Handlers for enter windows.\n        beforeEnter: this.onBeforeTransition,\n        afterEnter: this.onAfterTransition,\n        enterCancelled: this.onTransitionCancelled,\n        // Handlers for leave windows.\n        beforeLeave: this.onBeforeTransition,\n        afterLeave: this.onAfterTransition,\n        leaveCancelled: this.onTransitionCancelled,\n        // Enter handler for height transition.\n        enter: this.onEnter\n      }\n    }, this.showLazyContent(function () {\n      return [_this.genWindowItem()];\n    }));\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/components/VWindow/index.ts ***!\n  \\*****************************************/\n/*! exports provided: VWindow, VWindowItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VWindow */ \"./src/components/VWindow/VWindow.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindow\", function() { return _VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VWindowItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VWindowItem */ \"./src/components/VWindow/VWindowItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindowItem\", function() { return _VWindowItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VWindow: _VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    VWindowItem: _VWindowItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/index.ts\":\n/*!*********************************!*\\\n  !*** ./src/components/index.ts ***!\n  \\*********************************/\n/*! exports provided: VApp, VAppBar, VAppBarNavIcon, VAppBarTitle, VAlert, VAutocomplete, VAvatar, VBadge, VBanner, VBottomNavigation, VBottomSheet, VBreadcrumbs, VBreadcrumbsItem, VBreadcrumbsDivider, VBtn, VBtnToggle, VCalendar, VCalendarCategory, VCalendarDaily, VCalendarWeekly, VCalendarMonthly, VCard, VCardActions, VCardSubtitle, VCardText, VCardTitle, VCarousel, VCarouselItem, VCheckbox, VSimpleCheckbox, VChip, VChipGroup, VColorPicker, VColorPickerSwatches, VColorPickerCanvas, VContent, VCombobox, VCounter, VData, VDataIterator, VDataFooter, VDataTable, VEditDialog, VTableOverflow, VDataTableHeader, VSimpleTable, VVirtualTable, VDatePicker, VDatePickerTitle, VDatePickerHeader, VDatePickerDateTable, VDatePickerMonthTable, VDatePickerYears, VDialog, VDivider, VExpansionPanels, VExpansionPanel, VExpansionPanelHeader, VExpansionPanelContent, VFileInput, VFooter, VForm, VContainer, VCol, VRow, VSpacer, VLayout, VFlex, VHover, VIcon, VImg, VInput, VItem, VItemGroup, VLabel, VLazy, VListItemActionText, VListItemContent, VListItemTitle, VListItemSubtitle, VList, VListGroup, VListItem, VListItemAction, VListItemAvatar, VListItemIcon, VListItemGroup, VMain, VMenu, VMessages, VNavigationDrawer, VOtpInput, VOverflowBtn, VOverlay, VPagination, VSheet, VParallax, VPicker, VProgressCircular, VProgressLinear, VRadioGroup, VRadio, VRangeSlider, VRating, VResponsive, VSelect, VSkeletonLoader, VSlider, VSlideGroup, VSlideItem, VSnackbar, VSparkline, VSpeedDial, VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems, VSubheader, VSwitch, VSystemBar, VTabs, VTab, VTabItem, VTabsItems, VTabsSlider, VTextarea, VTextField, VThemeProvider, VTimeline, VTimelineItem, VTimePicker, VTimePickerClock, VTimePickerTitle, VToolbar, VToolbarItems, VToolbarTitle, VTooltip, VTreeview, VTreeviewNode, VVirtualScroll, VWindow, VWindowItem, VCarouselTransition, VCarouselReverseTransition, VTabTransition, VTabReverseTransition, VMenuTransition, VFabTransition, VDialogTransition, VDialogBottomTransition, VDialogTopTransition, VFadeTransition, VScaleTransition, VScrollXTransition, VScrollXReverseTransition, VScrollYTransition, VScrollYReverseTransition, VSlideXTransition, VSlideXReverseTransition, VSlideYTransition, VSlideYReverseTransition, VExpandTransition, VExpandXTransition */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VApp */ \"./src/components/VApp/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VApp\", function() { return _VApp__WEBPACK_IMPORTED_MODULE_0__[\"VApp\"]; });\n\n/* harmony import */ var _VAppBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VAppBar */ \"./src/components/VAppBar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAppBar\", function() { return _VAppBar__WEBPACK_IMPORTED_MODULE_1__[\"VAppBar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAppBarNavIcon\", function() { return _VAppBar__WEBPACK_IMPORTED_MODULE_1__[\"VAppBarNavIcon\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAppBarTitle\", function() { return _VAppBar__WEBPACK_IMPORTED_MODULE_1__[\"VAppBarTitle\"]; });\n\n/* harmony import */ var _VAlert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VAlert */ \"./src/components/VAlert/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAlert\", function() { return _VAlert__WEBPACK_IMPORTED_MODULE_2__[\"VAlert\"]; });\n\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VAutocomplete */ \"./src/components/VAutocomplete/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAutocomplete\", function() { return _VAutocomplete__WEBPACK_IMPORTED_MODULE_3__[\"VAutocomplete\"]; });\n\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VAvatar */ \"./src/components/VAvatar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAvatar\", function() { return _VAvatar__WEBPACK_IMPORTED_MODULE_4__[\"VAvatar\"]; });\n\n/* harmony import */ var _VBadge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VBadge */ \"./src/components/VBadge/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBadge\", function() { return _VBadge__WEBPACK_IMPORTED_MODULE_5__[\"VBadge\"]; });\n\n/* harmony import */ var _VBanner__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VBanner */ \"./src/components/VBanner/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBanner\", function() { return _VBanner__WEBPACK_IMPORTED_MODULE_6__[\"VBanner\"]; });\n\n/* harmony import */ var _VBottomNavigation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./VBottomNavigation */ \"./src/components/VBottomNavigation/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomNavigation\", function() { return _VBottomNavigation__WEBPACK_IMPORTED_MODULE_7__[\"VBottomNavigation\"]; });\n\n/* harmony import */ var _VBottomSheet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./VBottomSheet */ \"./src/components/VBottomSheet/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomSheet\", function() { return _VBottomSheet__WEBPACK_IMPORTED_MODULE_8__[\"VBottomSheet\"]; });\n\n/* harmony import */ var _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./VBreadcrumbs */ \"./src/components/VBreadcrumbs/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbs\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_9__[\"VBreadcrumbs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsItem\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_9__[\"VBreadcrumbsItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsDivider\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_9__[\"VBreadcrumbsDivider\"]; });\n\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtn\", function() { return _VBtn__WEBPACK_IMPORTED_MODULE_10__[\"VBtn\"]; });\n\n/* harmony import */ var _VBtnToggle__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./VBtnToggle */ \"./src/components/VBtnToggle/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtnToggle\", function() { return _VBtnToggle__WEBPACK_IMPORTED_MODULE_11__[\"VBtnToggle\"]; });\n\n/* harmony import */ var _VCalendar__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./VCalendar */ \"./src/components/VCalendar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendar\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_12__[\"VCalendar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarCategory\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_12__[\"VCalendarCategory\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarDaily\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_12__[\"VCalendarDaily\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarWeekly\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_12__[\"VCalendarWeekly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarMonthly\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_12__[\"VCalendarMonthly\"]; });\n\n/* harmony import */ var _VCard__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./VCard */ \"./src/components/VCard/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCard\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_13__[\"VCard\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardActions\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_13__[\"VCardActions\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardSubtitle\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_13__[\"VCardSubtitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardText\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_13__[\"VCardText\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardTitle\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_13__[\"VCardTitle\"]; });\n\n/* harmony import */ var _VCarousel__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./VCarousel */ \"./src/components/VCarousel/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarousel\", function() { return _VCarousel__WEBPACK_IMPORTED_MODULE_14__[\"VCarousel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselItem\", function() { return _VCarousel__WEBPACK_IMPORTED_MODULE_14__[\"VCarouselItem\"]; });\n\n/* harmony import */ var _VCheckbox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./VCheckbox */ \"./src/components/VCheckbox/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCheckbox\", function() { return _VCheckbox__WEBPACK_IMPORTED_MODULE_15__[\"VCheckbox\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSimpleCheckbox\", function() { return _VCheckbox__WEBPACK_IMPORTED_MODULE_15__[\"VSimpleCheckbox\"]; });\n\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./VChip */ \"./src/components/VChip/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VChip\", function() { return _VChip__WEBPACK_IMPORTED_MODULE_16__[\"VChip\"]; });\n\n/* harmony import */ var _VChipGroup__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./VChipGroup */ \"./src/components/VChipGroup/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VChipGroup\", function() { return _VChipGroup__WEBPACK_IMPORTED_MODULE_17__[\"VChipGroup\"]; });\n\n/* harmony import */ var _VColorPicker__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./VColorPicker */ \"./src/components/VColorPicker/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VColorPicker\", function() { return _VColorPicker__WEBPACK_IMPORTED_MODULE_18__[\"VColorPicker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VColorPickerSwatches\", function() { return _VColorPicker__WEBPACK_IMPORTED_MODULE_18__[\"VColorPickerSwatches\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VColorPickerCanvas\", function() { return _VColorPicker__WEBPACK_IMPORTED_MODULE_18__[\"VColorPickerCanvas\"]; });\n\n/* harmony import */ var _VContent__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./VContent */ \"./src/components/VContent/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContent\", function() { return _VContent__WEBPACK_IMPORTED_MODULE_19__[\"VContent\"]; });\n\n/* harmony import */ var _VCombobox__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./VCombobox */ \"./src/components/VCombobox/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCombobox\", function() { return _VCombobox__WEBPACK_IMPORTED_MODULE_20__[\"VCombobox\"]; });\n\n/* harmony import */ var _VCounter__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./VCounter */ \"./src/components/VCounter/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCounter\", function() { return _VCounter__WEBPACK_IMPORTED_MODULE_21__[\"VCounter\"]; });\n\n/* harmony import */ var _VData__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./VData */ \"./src/components/VData/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VData\", function() { return _VData__WEBPACK_IMPORTED_MODULE_22__[\"VData\"]; });\n\n/* harmony import */ var _VDataIterator__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./VDataIterator */ \"./src/components/VDataIterator/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataIterator\", function() { return _VDataIterator__WEBPACK_IMPORTED_MODULE_23__[\"VDataIterator\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataFooter\", function() { return _VDataIterator__WEBPACK_IMPORTED_MODULE_23__[\"VDataFooter\"]; });\n\n/* harmony import */ var _VDataTable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./VDataTable */ \"./src/components/VDataTable/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataTable\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_24__[\"VDataTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VEditDialog\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_24__[\"VEditDialog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTableOverflow\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_24__[\"VTableOverflow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataTableHeader\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_24__[\"VDataTableHeader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSimpleTable\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_24__[\"VSimpleTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VVirtualTable\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_24__[\"VVirtualTable\"]; });\n\n/* harmony import */ var _VDatePicker__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./VDatePicker */ \"./src/components/VDatePicker/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePicker\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_25__[\"VDatePicker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerTitle\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_25__[\"VDatePickerTitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerHeader\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_25__[\"VDatePickerHeader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerDateTable\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_25__[\"VDatePickerDateTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerMonthTable\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_25__[\"VDatePickerMonthTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerYears\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_25__[\"VDatePickerYears\"]; });\n\n/* harmony import */ var _VDialog__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./VDialog */ \"./src/components/VDialog/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialog\", function() { return _VDialog__WEBPACK_IMPORTED_MODULE_26__[\"VDialog\"]; });\n\n/* harmony import */ var _VDivider__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./VDivider */ \"./src/components/VDivider/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDivider\", function() { return _VDivider__WEBPACK_IMPORTED_MODULE_27__[\"VDivider\"]; });\n\n/* harmony import */ var _VExpansionPanel__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./VExpansionPanel */ \"./src/components/VExpansionPanel/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanels\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_28__[\"VExpansionPanels\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanel\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_28__[\"VExpansionPanel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanelHeader\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_28__[\"VExpansionPanelHeader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanelContent\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_28__[\"VExpansionPanelContent\"]; });\n\n/* harmony import */ var _VFileInput__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./VFileInput */ \"./src/components/VFileInput/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFileInput\", function() { return _VFileInput__WEBPACK_IMPORTED_MODULE_29__[\"VFileInput\"]; });\n\n/* harmony import */ var _VFooter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./VFooter */ \"./src/components/VFooter/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFooter\", function() { return _VFooter__WEBPACK_IMPORTED_MODULE_30__[\"VFooter\"]; });\n\n/* harmony import */ var _VForm__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./VForm */ \"./src/components/VForm/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VForm\", function() { return _VForm__WEBPACK_IMPORTED_MODULE_31__[\"VForm\"]; });\n\n/* harmony import */ var _VGrid__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./VGrid */ \"./src/components/VGrid/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContainer\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_32__[\"VContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCol\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_32__[\"VCol\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRow\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_32__[\"VRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpacer\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_32__[\"VSpacer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLayout\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_32__[\"VLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFlex\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_32__[\"VFlex\"]; });\n\n/* harmony import */ var _VHover__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./VHover */ \"./src/components/VHover/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VHover\", function() { return _VHover__WEBPACK_IMPORTED_MODULE_33__[\"VHover\"]; });\n\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VIcon\", function() { return _VIcon__WEBPACK_IMPORTED_MODULE_34__[\"VIcon\"]; });\n\n/* harmony import */ var _VImg__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./VImg */ \"./src/components/VImg/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VImg\", function() { return _VImg__WEBPACK_IMPORTED_MODULE_35__[\"VImg\"]; });\n\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./VInput */ \"./src/components/VInput/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VInput\", function() { return _VInput__WEBPACK_IMPORTED_MODULE_36__[\"VInput\"]; });\n\n/* harmony import */ var _VItemGroup__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./VItemGroup */ \"./src/components/VItemGroup/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItem\", function() { return _VItemGroup__WEBPACK_IMPORTED_MODULE_37__[\"VItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItemGroup\", function() { return _VItemGroup__WEBPACK_IMPORTED_MODULE_37__[\"VItemGroup\"]; });\n\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLabel\", function() { return _VLabel__WEBPACK_IMPORTED_MODULE_38__[\"VLabel\"]; });\n\n/* harmony import */ var _VLazy__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./VLazy */ \"./src/components/VLazy/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLazy\", function() { return _VLazy__WEBPACK_IMPORTED_MODULE_39__[\"VLazy\"]; });\n\n/* harmony import */ var _VList__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./VList */ \"./src/components/VList/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemActionText\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemActionText\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemContent\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemContent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemTitle\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemTitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemSubtitle\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemSubtitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VList\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListGroup\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItem\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemAction\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemAction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemAvatar\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemAvatar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemIcon\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemIcon\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListItemGroup\", function() { return _VList__WEBPACK_IMPORTED_MODULE_40__[\"VListItemGroup\"]; });\n\n/* harmony import */ var _VMain__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./VMain */ \"./src/components/VMain/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMain\", function() { return _VMain__WEBPACK_IMPORTED_MODULE_41__[\"VMain\"]; });\n\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./VMenu */ \"./src/components/VMenu/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMenu\", function() { return _VMenu__WEBPACK_IMPORTED_MODULE_42__[\"VMenu\"]; });\n\n/* harmony import */ var _VMessages__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./VMessages */ \"./src/components/VMessages/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMessages\", function() { return _VMessages__WEBPACK_IMPORTED_MODULE_43__[\"VMessages\"]; });\n\n/* harmony import */ var _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./VNavigationDrawer */ \"./src/components/VNavigationDrawer/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VNavigationDrawer\", function() { return _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_44__[\"VNavigationDrawer\"]; });\n\n/* harmony import */ var _VOtpInput__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./VOtpInput */ \"./src/components/VOtpInput/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOtpInput\", function() { return _VOtpInput__WEBPACK_IMPORTED_MODULE_45__[\"VOtpInput\"]; });\n\n/* harmony import */ var _VOverflowBtn__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./VOverflowBtn */ \"./src/components/VOverflowBtn/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOverflowBtn\", function() { return _VOverflowBtn__WEBPACK_IMPORTED_MODULE_46__[\"VOverflowBtn\"]; });\n\n/* harmony import */ var _VOverlay__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./VOverlay */ \"./src/components/VOverlay/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOverlay\", function() { return _VOverlay__WEBPACK_IMPORTED_MODULE_47__[\"VOverlay\"]; });\n\n/* harmony import */ var _VPagination__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./VPagination */ \"./src/components/VPagination/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPagination\", function() { return _VPagination__WEBPACK_IMPORTED_MODULE_48__[\"VPagination\"]; });\n\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSheet\", function() { return _VSheet__WEBPACK_IMPORTED_MODULE_49__[\"VSheet\"]; });\n\n/* harmony import */ var _VParallax__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./VParallax */ \"./src/components/VParallax/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VParallax\", function() { return _VParallax__WEBPACK_IMPORTED_MODULE_50__[\"VParallax\"]; });\n\n/* harmony import */ var _VPicker__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./VPicker */ \"./src/components/VPicker/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPicker\", function() { return _VPicker__WEBPACK_IMPORTED_MODULE_51__[\"VPicker\"]; });\n\n/* harmony import */ var _VProgressCircular__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./VProgressCircular */ \"./src/components/VProgressCircular/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressCircular\", function() { return _VProgressCircular__WEBPACK_IMPORTED_MODULE_52__[\"VProgressCircular\"]; });\n\n/* harmony import */ var _VProgressLinear__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./VProgressLinear */ \"./src/components/VProgressLinear/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressLinear\", function() { return _VProgressLinear__WEBPACK_IMPORTED_MODULE_53__[\"VProgressLinear\"]; });\n\n/* harmony import */ var _VRadioGroup__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./VRadioGroup */ \"./src/components/VRadioGroup/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadioGroup\", function() { return _VRadioGroup__WEBPACK_IMPORTED_MODULE_54__[\"VRadioGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadio\", function() { return _VRadioGroup__WEBPACK_IMPORTED_MODULE_54__[\"VRadio\"]; });\n\n/* harmony import */ var _VRangeSlider__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./VRangeSlider */ \"./src/components/VRangeSlider/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRangeSlider\", function() { return _VRangeSlider__WEBPACK_IMPORTED_MODULE_55__[\"VRangeSlider\"]; });\n\n/* harmony import */ var _VRating__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./VRating */ \"./src/components/VRating/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRating\", function() { return _VRating__WEBPACK_IMPORTED_MODULE_56__[\"VRating\"]; });\n\n/* harmony import */ var _VResponsive__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./VResponsive */ \"./src/components/VResponsive/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VResponsive\", function() { return _VResponsive__WEBPACK_IMPORTED_MODULE_57__[\"VResponsive\"]; });\n\n/* harmony import */ var _VSelect__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./VSelect */ \"./src/components/VSelect/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSelect\", function() { return _VSelect__WEBPACK_IMPORTED_MODULE_58__[\"VSelect\"]; });\n\n/* harmony import */ var _VSkeletonLoader__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./VSkeletonLoader */ \"./src/components/VSkeletonLoader/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSkeletonLoader\", function() { return _VSkeletonLoader__WEBPACK_IMPORTED_MODULE_59__[\"VSkeletonLoader\"]; });\n\n/* harmony import */ var _VSlider__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./VSlider */ \"./src/components/VSlider/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlider\", function() { return _VSlider__WEBPACK_IMPORTED_MODULE_60__[\"VSlider\"]; });\n\n/* harmony import */ var _VSlideGroup__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./VSlideGroup */ \"./src/components/VSlideGroup/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideGroup\", function() { return _VSlideGroup__WEBPACK_IMPORTED_MODULE_61__[\"VSlideGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideItem\", function() { return _VSlideGroup__WEBPACK_IMPORTED_MODULE_61__[\"VSlideItem\"]; });\n\n/* harmony import */ var _VSnackbar__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./VSnackbar */ \"./src/components/VSnackbar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSnackbar\", function() { return _VSnackbar__WEBPACK_IMPORTED_MODULE_62__[\"VSnackbar\"]; });\n\n/* harmony import */ var _VSparkline__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./VSparkline */ \"./src/components/VSparkline/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSparkline\", function() { return _VSparkline__WEBPACK_IMPORTED_MODULE_63__[\"VSparkline\"]; });\n\n/* harmony import */ var _VSpeedDial__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./VSpeedDial */ \"./src/components/VSpeedDial/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpeedDial\", function() { return _VSpeedDial__WEBPACK_IMPORTED_MODULE_64__[\"VSpeedDial\"]; });\n\n/* harmony import */ var _VStepper__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./VStepper */ \"./src/components/VStepper/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepper\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_65__[\"VStepper\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperContent\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_65__[\"VStepperContent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperStep\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_65__[\"VStepperStep\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperHeader\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_65__[\"VStepperHeader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperItems\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_65__[\"VStepperItems\"]; });\n\n/* harmony import */ var _VSubheader__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./VSubheader */ \"./src/components/VSubheader/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSubheader\", function() { return _VSubheader__WEBPACK_IMPORTED_MODULE_66__[\"VSubheader\"]; });\n\n/* harmony import */ var _VSwitch__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./VSwitch */ \"./src/components/VSwitch/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSwitch\", function() { return _VSwitch__WEBPACK_IMPORTED_MODULE_67__[\"VSwitch\"]; });\n\n/* harmony import */ var _VSystemBar__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./VSystemBar */ \"./src/components/VSystemBar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSystemBar\", function() { return _VSystemBar__WEBPACK_IMPORTED_MODULE_68__[\"VSystemBar\"]; });\n\n/* harmony import */ var _VTabs__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./VTabs */ \"./src/components/VTabs/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabs\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_69__[\"VTabs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTab\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_69__[\"VTab\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabItem\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_69__[\"VTabItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsItems\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_69__[\"VTabsItems\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsSlider\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_69__[\"VTabsSlider\"]; });\n\n/* harmony import */ var _VTextarea__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./VTextarea */ \"./src/components/VTextarea/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextarea\", function() { return _VTextarea__WEBPACK_IMPORTED_MODULE_70__[\"VTextarea\"]; });\n\n/* harmony import */ var _VTextField__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./VTextField */ \"./src/components/VTextField/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextField\", function() { return _VTextField__WEBPACK_IMPORTED_MODULE_71__[\"VTextField\"]; });\n\n/* harmony import */ var _VThemeProvider__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./VThemeProvider */ \"./src/components/VThemeProvider/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VThemeProvider\", function() { return _VThemeProvider__WEBPACK_IMPORTED_MODULE_72__[\"VThemeProvider\"]; });\n\n/* harmony import */ var _VTimeline__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./VTimeline */ \"./src/components/VTimeline/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimeline\", function() { return _VTimeline__WEBPACK_IMPORTED_MODULE_73__[\"VTimeline\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimelineItem\", function() { return _VTimeline__WEBPACK_IMPORTED_MODULE_73__[\"VTimelineItem\"]; });\n\n/* harmony import */ var _VTimePicker__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./VTimePicker */ \"./src/components/VTimePicker/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePicker\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_74__[\"VTimePicker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerClock\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_74__[\"VTimePickerClock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerTitle\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_74__[\"VTimePickerTitle\"]; });\n\n/* harmony import */ var _VToolbar__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./VToolbar */ \"./src/components/VToolbar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbar\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_75__[\"VToolbar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbarItems\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_75__[\"VToolbarItems\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbarTitle\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_75__[\"VToolbarTitle\"]; });\n\n/* harmony import */ var _VTooltip__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./VTooltip */ \"./src/components/VTooltip/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTooltip\", function() { return _VTooltip__WEBPACK_IMPORTED_MODULE_76__[\"VTooltip\"]; });\n\n/* harmony import */ var _VTreeview__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./VTreeview */ \"./src/components/VTreeview/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeview\", function() { return _VTreeview__WEBPACK_IMPORTED_MODULE_77__[\"VTreeview\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeviewNode\", function() { return _VTreeview__WEBPACK_IMPORTED_MODULE_77__[\"VTreeviewNode\"]; });\n\n/* harmony import */ var _VVirtualScroll__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./VVirtualScroll */ \"./src/components/VVirtualScroll/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VVirtualScroll\", function() { return _VVirtualScroll__WEBPACK_IMPORTED_MODULE_78__[\"VVirtualScroll\"]; });\n\n/* harmony import */ var _VWindow__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./VWindow */ \"./src/components/VWindow/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindow\", function() { return _VWindow__WEBPACK_IMPORTED_MODULE_79__[\"VWindow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindowItem\", function() { return _VWindow__WEBPACK_IMPORTED_MODULE_79__[\"VWindowItem\"]; });\n\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./transitions */ \"./src/components/transitions/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VCarouselTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VCarouselReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VTabTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VTabReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMenuTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VMenuTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFabTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VFabTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialogTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VDialogTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialogBottomTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VDialogBottomTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialogTopTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VDialogTopTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFadeTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VFadeTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScaleTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VScaleTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollXTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VScrollXTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollXReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VScrollXReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollYTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VScrollYTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollYReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VScrollYReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideXTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VSlideXTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideXReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VSlideXReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideYTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VSlideYTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideYReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VSlideYReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpandTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VExpandTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpandXTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_80__[\"VExpandXTransition\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/components/transitions/createTransition.ts\":\n/*!********************************************************!*\\\n  !*** ./src/components/transitions/createTransition.ts ***!\n  \\********************************************************/\n/*! exports provided: createSimpleTransition, createJavascriptTransition */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSimpleTransition\", function() { return createSimpleTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createJavascriptTransition\", function() { return createJavascriptTransition; });\n/* harmony import */ var _util_mergeData__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mergeData */ \"./src/util/mergeData.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\nfunction mergeTransitions(dest) {\n  var _a;\n\n  if (dest === void 0) {\n    dest = [];\n  }\n\n  var transitions = [];\n\n  for (var _i = 1; _i < arguments.length; _i++) {\n    transitions[_i - 1] = arguments[_i];\n  }\n  /* eslint-disable-next-line no-array-constructor */\n\n\n  return (_a = Array()).concat.apply(_a, __spreadArray([dest], __read(transitions), false));\n}\n\nfunction createSimpleTransition(name, origin, mode) {\n  if (origin === void 0) {\n    origin = 'top center 0';\n  }\n\n  return {\n    name: name,\n    functional: true,\n    props: {\n      group: {\n        type: Boolean,\n        default: false\n      },\n      hideOnLeave: {\n        type: Boolean,\n        default: false\n      },\n      leaveAbsolute: {\n        type: Boolean,\n        default: false\n      },\n      mode: {\n        type: String,\n        default: mode\n      },\n      origin: {\n        type: String,\n        default: origin\n      }\n    },\n    render: function render(h, context) {\n      var tag = \"transition\" + (context.props.group ? '-group' : '');\n      var data = {\n        props: {\n          name: name,\n          mode: context.props.mode\n        },\n        on: {\n          beforeEnter: function beforeEnter(el) {\n            el.style.transformOrigin = context.props.origin;\n            el.style.webkitTransformOrigin = context.props.origin;\n          }\n        }\n      };\n\n      if (context.props.leaveAbsolute) {\n        data.on.leave = mergeTransitions(data.on.leave, function (el) {\n          var offsetTop = el.offsetTop,\n              offsetLeft = el.offsetLeft,\n              offsetWidth = el.offsetWidth,\n              offsetHeight = el.offsetHeight;\n          el._transitionInitialStyles = {\n            position: el.style.position,\n            top: el.style.top,\n            left: el.style.left,\n            width: el.style.width,\n            height: el.style.height\n          };\n          el.style.position = 'absolute';\n          el.style.top = offsetTop + 'px';\n          el.style.left = offsetLeft + 'px';\n          el.style.width = offsetWidth + 'px';\n          el.style.height = offsetHeight + 'px';\n        });\n        data.on.afterLeave = mergeTransitions(data.on.afterLeave, function (el) {\n          if (el && el._transitionInitialStyles) {\n            var _a = el._transitionInitialStyles,\n                position = _a.position,\n                top = _a.top,\n                left = _a.left,\n                width = _a.width,\n                height = _a.height;\n            delete el._transitionInitialStyles;\n            el.style.position = position || '';\n            el.style.top = top || '';\n            el.style.left = left || '';\n            el.style.width = width || '';\n            el.style.height = height || '';\n          }\n        });\n      }\n\n      if (context.props.hideOnLeave) {\n        data.on.leave = mergeTransitions(data.on.leave, function (el) {\n          el.style.setProperty('display', 'none', 'important');\n        });\n      }\n\n      return h(tag, Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(context.data, data), context.children);\n    }\n  };\n}\nfunction createJavascriptTransition(name, functions, mode) {\n  if (mode === void 0) {\n    mode = 'in-out';\n  }\n\n  return {\n    name: name,\n    functional: true,\n    props: {\n      mode: {\n        type: String,\n        default: mode\n      }\n    },\n    render: function render(h, context) {\n      return h('transition', Object(_util_mergeData__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(context.data, {\n        props: {\n          name: name\n        },\n        on: functions\n      }), context.children);\n    }\n  };\n}\n\n/***/ }),\n\n/***/ \"./src/components/transitions/expand-transition.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/components/transitions/expand-transition.ts ***!\n  \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (expandedParentClass, x) {\n  if (expandedParentClass === void 0) {\n    expandedParentClass = '';\n  }\n\n  if (x === void 0) {\n    x = false;\n  }\n\n  var sizeProperty = x ? 'width' : 'height';\n  var offsetProperty = \"offset\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"])(sizeProperty);\n  return {\n    beforeEnter: function beforeEnter(el) {\n      var _a;\n\n      el._parent = el.parentNode;\n      el._initialStyle = (_a = {\n        transition: el.style.transition,\n        overflow: el.style.overflow\n      }, _a[sizeProperty] = el.style[sizeProperty], _a);\n    },\n    enter: function enter(el) {\n      var initialStyle = el._initialStyle;\n      el.style.setProperty('transition', 'none', 'important'); // Hide overflow to account for collapsed margins in the calculated height\n\n      el.style.overflow = 'hidden';\n      var offset = el[offsetProperty] + \"px\";\n      el.style[sizeProperty] = '0';\n      void el.offsetHeight; // force reflow\n\n      el.style.transition = initialStyle.transition;\n\n      if (expandedParentClass && el._parent) {\n        el._parent.classList.add(expandedParentClass);\n      }\n\n      requestAnimationFrame(function () {\n        el.style[sizeProperty] = offset;\n      });\n    },\n    afterEnter: resetStyles,\n    enterCancelled: resetStyles,\n    leave: function leave(el) {\n      var _a;\n\n      el._initialStyle = (_a = {\n        transition: '',\n        overflow: el.style.overflow\n      }, _a[sizeProperty] = el.style[sizeProperty], _a);\n      el.style.overflow = 'hidden';\n      el.style[sizeProperty] = el[offsetProperty] + \"px\";\n      void el.offsetHeight; // force reflow\n\n      requestAnimationFrame(function () {\n        return el.style[sizeProperty] = '0';\n      });\n    },\n    afterLeave: afterLeave,\n    leaveCancelled: afterLeave\n  };\n\n  function afterLeave(el) {\n    if (expandedParentClass && el._parent) {\n      el._parent.classList.remove(expandedParentClass);\n    }\n\n    resetStyles(el);\n  }\n\n  function resetStyles(el) {\n    var size = el._initialStyle[sizeProperty];\n    el.style.overflow = el._initialStyle.overflow;\n    if (size != null) el.style[sizeProperty] = size;\n    delete el._initialStyle;\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/components/transitions/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/components/transitions/index.ts ***!\n  \\*********************************************/\n/*! exports provided: VCarouselTransition, VCarouselReverseTransition, VTabTransition, VTabReverseTransition, VMenuTransition, VFabTransition, VDialogTransition, VDialogBottomTransition, VDialogTopTransition, VFadeTransition, VScaleTransition, VScrollXTransition, VScrollXReverseTransition, VScrollYTransition, VScrollYReverseTransition, VSlideXTransition, VSlideXReverseTransition, VSlideYTransition, VSlideYReverseTransition, VExpandTransition, VExpandXTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCarouselTransition\", function() { return VCarouselTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCarouselReverseTransition\", function() { return VCarouselReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTabTransition\", function() { return VTabTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTabReverseTransition\", function() { return VTabReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VMenuTransition\", function() { return VMenuTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VFabTransition\", function() { return VFabTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VDialogTransition\", function() { return VDialogTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VDialogBottomTransition\", function() { return VDialogBottomTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VDialogTopTransition\", function() { return VDialogTopTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VFadeTransition\", function() { return VFadeTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScaleTransition\", function() { return VScaleTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollXTransition\", function() { return VScrollXTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollXReverseTransition\", function() { return VScrollXReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollYTransition\", function() { return VScrollYTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollYReverseTransition\", function() { return VScrollYReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideXTransition\", function() { return VSlideXTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideXReverseTransition\", function() { return VSlideXReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideYTransition\", function() { return VSlideYTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideYReverseTransition\", function() { return VSlideYReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VExpandTransition\", function() { return VExpandTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VExpandXTransition\", function() { return VExpandXTransition; });\n/* harmony import */ var _createTransition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createTransition */ \"./src/components/transitions/createTransition.ts\");\n/* harmony import */ var _expand_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./expand-transition */ \"./src/components/transitions/expand-transition.ts\");\n\n // Component specific transitions\n\nvar VCarouselTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('carousel-transition');\nvar VCarouselReverseTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('carousel-reverse-transition');\nvar VTabTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('tab-transition');\nvar VTabReverseTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('tab-reverse-transition');\nvar VMenuTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('menu-transition');\nvar VFabTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('fab-transition', 'center center', 'out-in'); // Generic transitions\n\nvar VDialogTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('dialog-transition');\nvar VDialogBottomTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('dialog-bottom-transition');\nvar VDialogTopTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('dialog-top-transition');\nvar VFadeTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('fade-transition');\nvar VScaleTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scale-transition');\nvar VScrollXTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-x-transition');\nvar VScrollXReverseTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-x-reverse-transition');\nvar VScrollYTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-y-transition');\nvar VScrollYReverseTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-y-reverse-transition');\nvar VSlideXTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-x-transition');\nvar VSlideXReverseTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-x-reverse-transition');\nvar VSlideYTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-y-transition');\nvar VSlideYReverseTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-y-reverse-transition'); // Javascript transitions\n\nvar VExpandTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createJavascriptTransition\"])('expand-transition', Object(_expand_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"])());\nvar VExpandXTransition = Object(_createTransition__WEBPACK_IMPORTED_MODULE_0__[\"createJavascriptTransition\"])('expand-x-transition', Object(_expand_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('', true));\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  $_vuetify_subcomponents: {\n    VCarouselTransition: VCarouselTransition,\n    VCarouselReverseTransition: VCarouselReverseTransition,\n    VDialogTransition: VDialogTransition,\n    VDialogBottomTransition: VDialogBottomTransition,\n    VDialogTopTransition: VDialogTopTransition,\n    VFabTransition: VFabTransition,\n    VFadeTransition: VFadeTransition,\n    VMenuTransition: VMenuTransition,\n    VScaleTransition: VScaleTransition,\n    VScrollXTransition: VScrollXTransition,\n    VScrollXReverseTransition: VScrollXReverseTransition,\n    VScrollYTransition: VScrollYTransition,\n    VScrollYReverseTransition: VScrollYReverseTransition,\n    VSlideXTransition: VSlideXTransition,\n    VSlideXReverseTransition: VSlideXReverseTransition,\n    VSlideYTransition: VSlideYTransition,\n    VSlideYReverseTransition: VSlideYReverseTransition,\n    VTabReverseTransition: VTabReverseTransition,\n    VTabTransition: VTabTransition,\n    VExpandTransition: VExpandTransition,\n    VExpandXTransition: VExpandXTransition\n  }\n});\n\n/***/ }),\n\n/***/ \"./src/directives/click-outside/index.ts\":\n/*!***********************************************!*\\\n  !*** ./src/directives/click-outside/index.ts ***!\n  \\***********************************************/\n/*! exports provided: ClickOutside, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClickOutside\", function() { return ClickOutside; });\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/dom */ \"./src/util/dom.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\nfunction defaultConditional() {\n  return true;\n}\n\nfunction checkEvent(e, el, binding) {\n  // The include element callbacks below can be expensive\n  // so we should avoid calling them when we're not active.\n  // Explicitly check for false to allow fallback compatibility\n  // with non-toggleable components\n  if (!e || checkIsActive(e, binding) === false) return false; // If we're clicking inside the shadowroot, then the app root doesn't get the same\n  // level of introspection as to _what_ we're clicking. We want to check to see if\n  // our target is the shadowroot parent container, and if it is, ignore.\n\n  var root = Object(_util_dom__WEBPACK_IMPORTED_MODULE_0__[\"attachedRoot\"])(el);\n  if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false; // Check if additional elements were passed to be included in check\n  // (click must be outside all included elements, if any)\n\n  var elements = (_typeof(binding.value) === 'object' && binding.value.include || function () {\n    return [];\n  })(); // Add the root element for the component this directive was defined on\n\n\n  elements.push(el); // Check if it's a click outside our elements, and then if our callback returns true.\n  // Non-toggleable components should take action in their callback and return falsy.\n  // Toggleable can return true if it wants to deactivate.\n  // Note that, because we're in the capture phase, this callback will occur before\n  // the bubbling click event on any outside elements.\n\n  return !elements.some(function (el) {\n    return el.contains(e.target);\n  });\n}\n\nfunction checkIsActive(e, binding) {\n  var isActive = _typeof(binding.value) === 'object' && binding.value.closeConditional || defaultConditional;\n  return isActive(e);\n}\n\nfunction directive(e, el, binding) {\n  var handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n  el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(function () {\n    checkIsActive(e, binding) && handler && handler(e);\n  }, 0);\n}\n\nfunction handleShadow(el, callback) {\n  var root = Object(_util_dom__WEBPACK_IMPORTED_MODULE_0__[\"attachedRoot\"])(el);\n  callback(document);\n\n  if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n    callback(root);\n  }\n}\n\nvar ClickOutside = {\n  // [data-app] may not be found\n  // if using bind, inserted makes\n  // sure that the root element is\n  // available, iOS does not support\n  // clicks on body\n  inserted: function inserted(el, binding, vnode) {\n    var onClick = function onClick(e) {\n      return directive(e, el, binding);\n    };\n\n    var onMousedown = function onMousedown(e) {\n      el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n    };\n\n    handleShadow(el, function (app) {\n      app.addEventListener('click', onClick, true);\n      app.addEventListener('mousedown', onMousedown, true);\n    });\n\n    if (!el._clickOutside) {\n      el._clickOutside = {\n        lastMousedownWasOutside: true\n      };\n    }\n\n    el._clickOutside[vnode.context._uid] = {\n      onClick: onClick,\n      onMousedown: onMousedown\n    };\n  },\n  unbind: function unbind(el, binding, vnode) {\n    if (!el._clickOutside) return;\n    handleShadow(el, function (app) {\n      var _a;\n\n      if (!app || !((_a = el._clickOutside) === null || _a === void 0 ? void 0 : _a[vnode.context._uid])) return;\n      var _b = el._clickOutside[vnode.context._uid],\n          onClick = _b.onClick,\n          onMousedown = _b.onMousedown;\n      app.removeEventListener('click', onClick, true);\n      app.removeEventListener('mousedown', onMousedown, true);\n    });\n    delete el._clickOutside[vnode.context._uid];\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ClickOutside);\n\n/***/ }),\n\n/***/ \"./src/directives/index.ts\":\n/*!*********************************!*\\\n  !*** ./src/directives/index.ts ***!\n  \\*********************************/\n/*! exports provided: ClickOutside, Intersect, Mutate, Resize, Ripple, Scroll, Touch */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _click_outside__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./click-outside */ \"./src/directives/click-outside/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClickOutside\", function() { return _click_outside__WEBPACK_IMPORTED_MODULE_0__[\"ClickOutside\"]; });\n\n/* harmony import */ var _intersect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intersect */ \"./src/directives/intersect/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Intersect\", function() { return _intersect__WEBPACK_IMPORTED_MODULE_1__[\"Intersect\"]; });\n\n/* harmony import */ var _mutate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutate */ \"./src/directives/mutate/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mutate\", function() { return _mutate__WEBPACK_IMPORTED_MODULE_2__[\"Mutate\"]; });\n\n/* harmony import */ var _resize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./resize */ \"./src/directives/resize/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Resize\", function() { return _resize__WEBPACK_IMPORTED_MODULE_3__[\"Resize\"]; });\n\n/* harmony import */ var _ripple__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ripple\", function() { return _ripple__WEBPACK_IMPORTED_MODULE_4__[\"Ripple\"]; });\n\n/* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scroll */ \"./src/directives/scroll/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scroll\", function() { return _scroll__WEBPACK_IMPORTED_MODULE_5__[\"Scroll\"]; });\n\n/* harmony import */ var _touch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./touch */ \"./src/directives/touch/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Touch\", function() { return _touch__WEBPACK_IMPORTED_MODULE_6__[\"Touch\"]; });\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/directives/intersect/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/directives/intersect/index.ts ***!\n  \\*******************************************/\n/*! exports provided: Intersect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Intersect\", function() { return Intersect; });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction inserted(el, binding, vnode) {\n  if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return;\n  var modifiers = binding.modifiers || {};\n  var value = binding.value;\n\n  var _a = _typeof(value) === 'object' ? value : {\n    handler: value,\n    options: {}\n  },\n      handler = _a.handler,\n      options = _a.options;\n\n  var observer = new IntersectionObserver(function (entries, observer) {\n    var _a;\n\n    if (entries === void 0) {\n      entries = [];\n    }\n\n    var _observe = (_a = el._observe) === null || _a === void 0 ? void 0 : _a[vnode.context._uid];\n\n    if (!_observe) return; // Just in case, should never fire\n\n    var isIntersecting = entries.some(function (entry) {\n      return entry.isIntersecting;\n    }); // If is not quiet or has already been\n    // initted, invoke the user callback\n\n    if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) {\n      handler(entries, observer, isIntersecting);\n    }\n\n    if (isIntersecting && modifiers.once) unbind(el, binding, vnode);else _observe.init = true;\n  }, options);\n  el._observe = Object(el._observe);\n  el._observe[vnode.context._uid] = {\n    init: false,\n    observer: observer\n  };\n  observer.observe(el);\n}\n\nfunction unbind(el, binding, vnode) {\n  var _a;\n\n  var observe = (_a = el._observe) === null || _a === void 0 ? void 0 : _a[vnode.context._uid];\n  if (!observe) return;\n  observe.observer.unobserve(el);\n  delete el._observe[vnode.context._uid];\n}\n\nvar Intersect = {\n  inserted: inserted,\n  unbind: unbind\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Intersect);\n\n/***/ }),\n\n/***/ \"./src/directives/mutate/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/directives/mutate/index.ts ***!\n  \\****************************************/\n/*! exports provided: Mutate, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mutate\", function() { return Mutate; });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\nfunction inserted(el, binding, vnode) {\n  var modifiers = binding.modifiers || {};\n  var value = binding.value;\n  var callback = _typeof(value) === 'object' ? value.handler : value;\n\n  var once = modifiers.once,\n      modifierKeys = __rest(modifiers, [\"once\"]);\n\n  var hasModifiers = Object.keys(modifierKeys).length > 0; // Options take top priority\n\n  var options = _typeof(value) === 'object' && value.options ? value.options : hasModifiers // If we have modifiers, use only those provided\n  ? {\n    attributes: modifierKeys.attr,\n    childList: modifierKeys.child,\n    subtree: modifierKeys.sub,\n    characterData: modifierKeys.char\n  } // Defaults to everything on\n  : {\n    attributes: true,\n    childList: true,\n    subtree: true,\n    characterData: true\n  };\n  var observer = new MutationObserver(function (mutationsList, observer) {\n    /* istanbul ignore if */\n    if (!el._mutate) return; // Just in case, should never fire\n\n    callback(mutationsList, observer); // If has the once modifier, unbind\n\n    once && unbind(el, binding, vnode);\n  });\n  observer.observe(el, options);\n  el._mutate = Object(el._mutate);\n  el._mutate[vnode.context._uid] = {\n    observer: observer\n  };\n}\n\nfunction unbind(el, binding, vnode) {\n  var _a;\n\n  if (!((_a = el._mutate) === null || _a === void 0 ? void 0 : _a[vnode.context._uid])) return;\n\n  el._mutate[vnode.context._uid].observer.disconnect();\n\n  delete el._mutate[vnode.context._uid];\n}\n\nvar Mutate = {\n  inserted: inserted,\n  unbind: unbind\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Mutate);\n\n/***/ }),\n\n/***/ \"./src/directives/resize/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/directives/resize/index.ts ***!\n  \\****************************************/\n/*! exports provided: Resize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Resize\", function() { return Resize; });\nfunction inserted(el, binding, vnode) {\n  var callback = binding.value;\n  var options = binding.options || {\n    passive: true\n  };\n  window.addEventListener('resize', callback, options);\n  el._onResize = Object(el._onResize);\n  el._onResize[vnode.context._uid] = {\n    callback: callback,\n    options: options\n  };\n\n  if (!binding.modifiers || !binding.modifiers.quiet) {\n    callback();\n  }\n}\n\nfunction unbind(el, binding, vnode) {\n  var _a;\n\n  if (!((_a = el._onResize) === null || _a === void 0 ? void 0 : _a[vnode.context._uid])) return;\n  var _b = el._onResize[vnode.context._uid],\n      callback = _b.callback,\n      options = _b.options;\n  window.removeEventListener('resize', callback, options);\n  delete el._onResize[vnode.context._uid];\n}\n\nvar Resize = {\n  inserted: inserted,\n  unbind: unbind\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Resize);\n\n/***/ }),\n\n/***/ \"./src/directives/ripple/VRipple.sass\":\n/*!********************************************!*\\\n  !*** ./src/directives/ripple/VRipple.sass ***!\n  \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/directives/ripple/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/directives/ripple/index.ts ***!\n  \\****************************************/\n/*! exports provided: Ripple, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ripple\", function() { return Ripple; });\n/* harmony import */ var _VRipple_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRipple.sass */ \"./src/directives/ripple/VRipple.sass\");\n/* harmony import */ var _VRipple_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_VRipple_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Styles\n\n\n // Utilities\n\n\n\nvar DELAY_RIPPLE = 80;\n\nfunction transform(el, value) {\n  el.style.transform = value;\n  el.style.webkitTransform = value;\n}\n\nfunction isTouchEvent(e) {\n  return e.constructor.name === 'TouchEvent';\n}\n\nfunction isKeyboardEvent(e) {\n  return e.constructor.name === 'KeyboardEvent';\n}\n\nvar calculate = function calculate(e, el, value) {\n  if (value === void 0) {\n    value = {};\n  }\n\n  var localX = 0;\n  var localY = 0;\n\n  if (!isKeyboardEvent(e)) {\n    var offset = el.getBoundingClientRect();\n    var target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;\n    localX = target.clientX - offset.left;\n    localY = target.clientY - offset.top;\n  }\n\n  var radius = 0;\n  var scale = 0.3;\n\n  if (el._ripple && el._ripple.circle) {\n    scale = 0.15;\n    radius = el.clientWidth / 2;\n    radius = value.center ? radius : radius + Math.sqrt(Math.pow(localX - radius, 2) + Math.pow(localY - radius, 2)) / 4;\n  } else {\n    radius = Math.sqrt(Math.pow(el.clientWidth, 2) + Math.pow(el.clientHeight, 2)) / 2;\n  }\n\n  var centerX = (el.clientWidth - radius * 2) / 2 + \"px\";\n  var centerY = (el.clientHeight - radius * 2) / 2 + \"px\";\n  var x = value.center ? centerX : localX - radius + \"px\";\n  var y = value.center ? centerY : localY - radius + \"px\";\n  return {\n    radius: radius,\n    scale: scale,\n    x: x,\n    y: y,\n    centerX: centerX,\n    centerY: centerY\n  };\n};\n\nvar ripples = {\n  /* eslint-disable max-statements */\n  show: function show(e, el, value) {\n    if (value === void 0) {\n      value = {};\n    }\n\n    if (!el._ripple || !el._ripple.enabled) {\n      return;\n    }\n\n    var container = document.createElement('span');\n    var animation = document.createElement('span');\n    container.appendChild(animation);\n    container.className = 'v-ripple__container';\n\n    if (value.class) {\n      container.className += \" \" + value.class;\n    }\n\n    var _a = calculate(e, el, value),\n        radius = _a.radius,\n        scale = _a.scale,\n        x = _a.x,\n        y = _a.y,\n        centerX = _a.centerX,\n        centerY = _a.centerY;\n\n    var size = radius * 2 + \"px\";\n    animation.className = 'v-ripple__animation';\n    animation.style.width = size;\n    animation.style.height = size;\n    el.appendChild(container);\n    var computed = window.getComputedStyle(el);\n\n    if (computed && computed.position === 'static') {\n      el.style.position = 'relative';\n      el.dataset.previousPosition = 'static';\n    }\n\n    animation.classList.add('v-ripple__animation--enter');\n    animation.classList.add('v-ripple__animation--visible');\n    transform(animation, \"translate(\" + x + \", \" + y + \") scale3d(\" + scale + \",\" + scale + \",\" + scale + \")\");\n    animation.dataset.activated = String(performance.now());\n    setTimeout(function () {\n      animation.classList.remove('v-ripple__animation--enter');\n      animation.classList.add('v-ripple__animation--in');\n      transform(animation, \"translate(\" + centerX + \", \" + centerY + \") scale3d(1,1,1)\");\n    }, 0);\n  },\n  hide: function hide(el) {\n    if (!el || !el._ripple || !el._ripple.enabled) return;\n    var ripples = el.getElementsByClassName('v-ripple__animation');\n    if (ripples.length === 0) return;\n    var animation = ripples[ripples.length - 1];\n    if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';\n    var diff = performance.now() - Number(animation.dataset.activated);\n    var delay = Math.max(250 - diff, 0);\n    setTimeout(function () {\n      animation.classList.remove('v-ripple__animation--in');\n      animation.classList.add('v-ripple__animation--out');\n      setTimeout(function () {\n        var _a;\n\n        var ripples = el.getElementsByClassName('v-ripple__animation');\n\n        if (ripples.length === 1 && el.dataset.previousPosition) {\n          el.style.position = el.dataset.previousPosition;\n          delete el.dataset.previousPosition;\n        }\n\n        if (((_a = animation.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode) === el) el.removeChild(animation.parentNode);\n      }, 300);\n    }, delay);\n  }\n};\n\nfunction isRippleEnabled(value) {\n  return typeof value === 'undefined' || !!value;\n}\n\nfunction rippleShow(e) {\n  var value = {};\n  var element = e.currentTarget;\n  if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return; // Don't allow the event to trigger ripples on any other elements\n\n  e.rippleStop = true;\n\n  if (isTouchEvent(e)) {\n    element._ripple.touched = true;\n    element._ripple.isTouch = true;\n  } else {\n    // It's possible for touch events to fire\n    // as mouse events on Android/iOS, this\n    // will skip the event call if it has\n    // already been registered as touch\n    if (element._ripple.isTouch) return;\n  }\n\n  value.center = element._ripple.centered || isKeyboardEvent(e);\n\n  if (element._ripple.class) {\n    value.class = element._ripple.class;\n  }\n\n  if (isTouchEvent(e)) {\n    // already queued that shows or hides the ripple\n    if (element._ripple.showTimerCommit) return;\n\n    element._ripple.showTimerCommit = function () {\n      ripples.show(e, element, value);\n    };\n\n    element._ripple.showTimer = window.setTimeout(function () {\n      if (element && element._ripple && element._ripple.showTimerCommit) {\n        element._ripple.showTimerCommit();\n\n        element._ripple.showTimerCommit = null;\n      }\n    }, DELAY_RIPPLE);\n  } else {\n    ripples.show(e, element, value);\n  }\n}\n\nfunction rippleHide(e) {\n  var element = e.currentTarget;\n  if (!element || !element._ripple) return;\n  window.clearTimeout(element._ripple.showTimer); // The touch interaction occurs before the show timer is triggered.\n  // We still want to show ripple effect.\n\n  if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n    element._ripple.showTimerCommit();\n\n    element._ripple.showTimerCommit = null; // re-queue ripple hiding\n\n    element._ripple.showTimer = setTimeout(function () {\n      rippleHide(e);\n    });\n    return;\n  }\n\n  window.setTimeout(function () {\n    if (element._ripple) {\n      element._ripple.touched = false;\n    }\n  });\n  ripples.hide(element);\n}\n\nfunction rippleCancelShow(e) {\n  var element = e.currentTarget;\n  if (!element || !element._ripple) return;\n\n  if (element._ripple.showTimerCommit) {\n    element._ripple.showTimerCommit = null;\n  }\n\n  window.clearTimeout(element._ripple.showTimer);\n}\n\nvar keyboardRipple = false;\n\nfunction keyboardRippleShow(e) {\n  if (!keyboardRipple && (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"keyCodes\"].enter || e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"keyCodes\"].space)) {\n    keyboardRipple = true;\n    rippleShow(e);\n  }\n}\n\nfunction keyboardRippleHide(e) {\n  keyboardRipple = false;\n  rippleHide(e);\n}\n\nfunction focusRippleHide(e) {\n  if (keyboardRipple === true) {\n    keyboardRipple = false;\n    rippleHide(e);\n  }\n}\n\nfunction updateRipple(el, binding, wasEnabled) {\n  var enabled = isRippleEnabled(binding.value);\n\n  if (!enabled) {\n    ripples.hide(el);\n  }\n\n  el._ripple = el._ripple || {};\n  el._ripple.enabled = enabled;\n  var value = binding.value || {};\n\n  if (value.center) {\n    el._ripple.centered = true;\n  }\n\n  if (value.class) {\n    el._ripple.class = binding.value.class;\n  }\n\n  if (value.circle) {\n    el._ripple.circle = value.circle;\n  }\n\n  if (enabled && !wasEnabled) {\n    el.addEventListener('touchstart', rippleShow, {\n      passive: true\n    });\n    el.addEventListener('touchend', rippleHide, {\n      passive: true\n    });\n    el.addEventListener('touchmove', rippleCancelShow, {\n      passive: true\n    });\n    el.addEventListener('touchcancel', rippleHide);\n    el.addEventListener('mousedown', rippleShow);\n    el.addEventListener('mouseup', rippleHide);\n    el.addEventListener('mouseleave', rippleHide);\n    el.addEventListener('keydown', keyboardRippleShow);\n    el.addEventListener('keyup', keyboardRippleHide);\n    el.addEventListener('blur', focusRippleHide); // Anchor tags can be dragged, causes other hides to fail - #1537\n\n    el.addEventListener('dragstart', rippleHide, {\n      passive: true\n    });\n  } else if (!enabled && wasEnabled) {\n    removeListeners(el);\n  }\n}\n\nfunction removeListeners(el) {\n  el.removeEventListener('mousedown', rippleShow);\n  el.removeEventListener('touchstart', rippleShow);\n  el.removeEventListener('touchend', rippleHide);\n  el.removeEventListener('touchmove', rippleCancelShow);\n  el.removeEventListener('touchcancel', rippleHide);\n  el.removeEventListener('mouseup', rippleHide);\n  el.removeEventListener('mouseleave', rippleHide);\n  el.removeEventListener('keydown', keyboardRippleShow);\n  el.removeEventListener('keyup', keyboardRippleHide);\n  el.removeEventListener('dragstart', rippleHide);\n  el.removeEventListener('blur', focusRippleHide);\n}\n\nfunction directive(el, binding, node) {\n  updateRipple(el, binding, false);\n\n  if (true) {\n    // warn if an inline element is used, waiting for el to be in the DOM first\n    node.context && node.context.$nextTick(function () {\n      var computed = window.getComputedStyle(el);\n\n      if (computed && computed.display === 'inline') {\n        var context = node.fnOptions ? [node.fnOptions, node.context] : [node.componentInstance];\n        _util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"].apply(void 0, __spreadArray(['v-ripple can only be used on block-level elements'], __read(context), false));\n      }\n    });\n  }\n}\n\nfunction unbind(el) {\n  delete el._ripple;\n  removeListeners(el);\n}\n\nfunction update(el, binding) {\n  if (binding.value === binding.oldValue) {\n    return;\n  }\n\n  var wasEnabled = isRippleEnabled(binding.oldValue);\n  updateRipple(el, binding, wasEnabled);\n}\n\nvar Ripple = {\n  bind: directive,\n  unbind: unbind,\n  update: update\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ripple);\n\n/***/ }),\n\n/***/ \"./src/directives/scroll/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/directives/scroll/index.ts ***!\n  \\****************************************/\n/*! exports provided: Scroll, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scroll\", function() { return Scroll; });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction inserted(el, binding, vnode) {\n  var _a = (binding.modifiers || {}).self,\n      self = _a === void 0 ? false : _a;\n  var value = binding.value;\n  var options = _typeof(value) === 'object' && value.options || {\n    passive: true\n  };\n  var handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;\n  var target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;\n  if (!target) return;\n  target.addEventListener('scroll', handler, options);\n  el._onScroll = Object(el._onScroll);\n  el._onScroll[vnode.context._uid] = {\n    handler: handler,\n    options: options,\n    // Don't reference self\n    target: self ? undefined : target\n  };\n}\n\nfunction unbind(el, binding, vnode) {\n  var _a;\n\n  if (!((_a = el._onScroll) === null || _a === void 0 ? void 0 : _a[vnode.context._uid])) return;\n  var _b = el._onScroll[vnode.context._uid],\n      handler = _b.handler,\n      options = _b.options,\n      _c = _b.target,\n      target = _c === void 0 ? el : _c;\n  target.removeEventListener('scroll', handler, options);\n  delete el._onScroll[vnode.context._uid];\n}\n\nvar Scroll = {\n  inserted: inserted,\n  unbind: unbind\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Scroll);\n\n/***/ }),\n\n/***/ \"./src/directives/touch/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/directives/touch/index.ts ***!\n  \\***************************************/\n/*! exports provided: Touch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Touch\", function() { return Touch; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\nvar handleGesture = function handleGesture(wrapper) {\n  var touchstartX = wrapper.touchstartX,\n      touchendX = wrapper.touchendX,\n      touchstartY = wrapper.touchstartY,\n      touchendY = wrapper.touchendY;\n  var dirRatio = 0.5;\n  var minDistance = 16;\n  wrapper.offsetX = touchendX - touchstartX;\n  wrapper.offsetY = touchendY - touchstartY;\n\n  if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n    wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n    wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n  }\n\n  if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n    wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n    wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n  }\n};\n\nfunction _touchstart(event, wrapper) {\n  var touch = event.changedTouches[0];\n  wrapper.touchstartX = touch.clientX;\n  wrapper.touchstartY = touch.clientY;\n  wrapper.start && wrapper.start(Object.assign(event, wrapper));\n}\n\nfunction _touchend(event, wrapper) {\n  var touch = event.changedTouches[0];\n  wrapper.touchendX = touch.clientX;\n  wrapper.touchendY = touch.clientY;\n  wrapper.end && wrapper.end(Object.assign(event, wrapper));\n  handleGesture(wrapper);\n}\n\nfunction _touchmove(event, wrapper) {\n  var touch = event.changedTouches[0];\n  wrapper.touchmoveX = touch.clientX;\n  wrapper.touchmoveY = touch.clientY;\n  wrapper.move && wrapper.move(Object.assign(event, wrapper));\n}\n\nfunction createHandlers(value) {\n  var wrapper = {\n    touchstartX: 0,\n    touchstartY: 0,\n    touchendX: 0,\n    touchendY: 0,\n    touchmoveX: 0,\n    touchmoveY: 0,\n    offsetX: 0,\n    offsetY: 0,\n    left: value.left,\n    right: value.right,\n    up: value.up,\n    down: value.down,\n    start: value.start,\n    move: value.move,\n    end: value.end\n  };\n  return {\n    touchstart: function touchstart(e) {\n      return _touchstart(e, wrapper);\n    },\n    touchend: function touchend(e) {\n      return _touchend(e, wrapper);\n    },\n    touchmove: function touchmove(e) {\n      return _touchmove(e, wrapper);\n    }\n  };\n}\n\nfunction inserted(el, binding, vnode) {\n  var value = binding.value;\n  var target = value.parent ? el.parentElement : el;\n  var options = value.options || {\n    passive: true\n  }; // Needed to pass unit tests\n\n  if (!target) return;\n  var handlers = createHandlers(binding.value);\n  target._touchHandlers = Object(target._touchHandlers);\n  target._touchHandlers[vnode.context._uid] = handlers;\n  Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(handlers).forEach(function (eventName) {\n    target.addEventListener(eventName, handlers[eventName], options);\n  });\n}\n\nfunction unbind(el, binding, vnode) {\n  var target = binding.value.parent ? el.parentElement : el;\n  if (!target || !target._touchHandlers) return;\n  var handlers = target._touchHandlers[vnode.context._uid];\n  Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(handlers).forEach(function (eventName) {\n    target.removeEventListener(eventName, handlers[eventName]);\n  });\n  delete target._touchHandlers[vnode.context._uid];\n}\n\nvar Touch = {\n  inserted: inserted,\n  unbind: unbind\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Touch);\n\n/***/ }),\n\n/***/ \"./src/framework.ts\":\n/*!**************************!*\\\n  !*** ./src/framework.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _install__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./install */ \"./src/install.ts\");\n/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./services */ \"./src/services/index.ts\");\n // Services\n\n\n\nvar Vuetify =\n/** @class */\nfunction () {\n  function Vuetify(userPreset) {\n    if (userPreset === void 0) {\n      userPreset = {};\n    }\n\n    this.framework = {\n      isHydrating: false\n    };\n    this.installed = [];\n    this.preset = {};\n    this.userPreset = {};\n    this.userPreset = userPreset;\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Presets\"]);\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Application\"]);\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Breakpoint\"]);\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Goto\"]);\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Icons\"]);\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Lang\"]);\n    this.use(_services__WEBPACK_IMPORTED_MODULE_1__[\"Theme\"]);\n  } // Called on the new vuetify instance\n  // bootstrap in install beforeCreate\n  // Exposes ssrContext if available\n\n\n  Vuetify.prototype.init = function (root, ssrContext) {\n    var _this = this;\n\n    this.installed.forEach(function (property) {\n      var service = _this.framework[property];\n      service.framework = _this.framework;\n      service.init(root, ssrContext);\n    }); // rtl is not installed and\n    // will never be called by\n    // the init process\n\n    this.framework.rtl = Boolean(this.preset.rtl);\n  }; // Instantiate a VuetifyService\n\n\n  Vuetify.prototype.use = function (Service) {\n    var property = Service.property;\n    if (this.installed.includes(property)) return; // TODO maybe a specific type for arg 2?\n\n    this.framework[property] = new Service(this.preset, this);\n    this.installed.push(property);\n  };\n\n  Vuetify.install = _install__WEBPACK_IMPORTED_MODULE_0__[\"install\"];\n  Vuetify.installed = false;\n  Vuetify.version = \"2.7.2\";\n  Vuetify.config = {\n    silent: false\n  };\n  return Vuetify;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vuetify);\n\n/***/ }),\n\n/***/ \"./src/index.ts\":\n/*!**********************!*\\\n  !*** ./src/index.ts ***!\n  \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components */ \"./src/components/index.ts\");\n/* harmony import */ var _directives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./directives */ \"./src/directives/index.ts\");\n/* harmony import */ var _framework__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./framework */ \"./src/framework.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_framework__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nvar install = _framework__WEBPACK_IMPORTED_MODULE_2__[\"default\"].install;\n\n_framework__WEBPACK_IMPORTED_MODULE_2__[\"default\"].install = function (Vue, args) {\n  install.call(_framework__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Vue, __assign({\n    components: _components__WEBPACK_IMPORTED_MODULE_0__,\n    directives: _directives__WEBPACK_IMPORTED_MODULE_1__\n  }, args));\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n  window.Vue.use(_framework__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n}\n\n/***/ }),\n\n/***/ \"./src/install.ts\":\n/*!************************!*\\\n  !*** ./src/install.ts ***!\n  \\************************/\n/*! exports provided: install */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"install\", function() { return install; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/console */ \"./src/util/console.ts\");\n\n\nfunction install(Vue, args) {\n  if (args === void 0) {\n    args = {};\n  }\n\n  if (install.installed) return;\n  install.installed = true;\n\n  if (vue__WEBPACK_IMPORTED_MODULE_0___default.a !== Vue) {\n    Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleError\"])(\"Multiple instances of Vue detected\\nSee https://github.com/vuetifyjs/vuetify/issues/4068\\n\\nIf you're seeing \\\"$attrs is readonly\\\", it's caused by this\");\n  }\n\n  var components = args.components || {};\n  var directives = args.directives || {};\n\n  for (var name in directives) {\n    var directive = directives[name];\n    Vue.directive(name, directive);\n  }\n\n  (function registerComponents(components) {\n    if (components) {\n      for (var key in components) {\n        var component = components[key];\n\n        if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n          Vue.component(key, component);\n        }\n      }\n\n      return true;\n    }\n\n    return false;\n  })(components); // Used to avoid multiple mixins being setup\n  // when in dev mode and hot module reload\n  // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n\n\n  if (Vue.$_vuetify_installed) return;\n  Vue.$_vuetify_installed = true;\n  Vue.mixin({\n    beforeCreate: function beforeCreate() {\n      var options = this.$options;\n\n      if (options.vuetify) {\n        options.vuetify.init(this, this.$ssrContext);\n        this.$vuetify = Vue.observable(options.vuetify.framework);\n      } else {\n        this.$vuetify = options.parent && options.parent.$vuetify || this;\n      }\n    },\n    beforeMount: function beforeMount() {\n      // @ts-ignore\n      if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n        // @ts-ignore\n        this.$vuetify.isHydrating = true; // @ts-ignore\n\n        this.$vuetify.breakpoint.update(true);\n      }\n    },\n    mounted: function mounted() {\n      // @ts-ignore\n      if (this.$options.vuetify && this.$vuetify.isHydrating) {\n        // @ts-ignore\n        this.$vuetify.isHydrating = false; // @ts-ignore\n\n        this.$vuetify.breakpoint.update();\n      }\n    }\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/locale/af.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/af.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'badge',\n  close: 'Close',\n  dataIterator: {\n    noResultsText: 'Geen ooreenstemmende resultate is gevind nie',\n    loadingText: 'Loading item...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rye per bladsy:',\n    ariaLabel: {\n      sortDescending: 'Sorted descending.',\n      sortAscending: 'Sorted ascending..',\n      sortNone: 'Not sorted.',\n      activateNone: 'Activate to remove sorting.',\n      activateDescending: 'Activate to sort descending.',\n      activateAscending: 'Activate to sort ascending.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Aantal per bladsy:',\n    itemsPerPageAll: 'Alles',\n    nextPage: 'Volgende bladsy',\n    prevPage: 'Vorige bladsy',\n    firstPage: 'Eerste bladsy',\n    lastPage: 'Laaste bladsy',\n    pageText: '{0}-{1} van {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} gekies',\n    nextMonthAriaLabel: 'Volgende maand',\n    nextYearAriaLabel: 'Volgende jaar',\n    prevMonthAriaLabel: 'Vorige maand',\n    prevYearAriaLabel: 'Vorige jaar'\n  },\n  noDataText: 'Geen data is beskikbaar nie',\n  carousel: {\n    prev: 'Vorige visuele',\n    next: 'Volgende visuele',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} meer'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Paginasie-navigasie',\n      next: 'Volgende bladsy',\n      previous: 'Vorige bladsy',\n      page: 'Gaan na bladsy {0}',\n      currentPage: 'Huidige bladsy, Bladsy {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ar.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/ar.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'شارة',\n  close: 'إغلاق',\n  dataIterator: {\n    noResultsText: 'لم يتم إيجاد نتائج',\n    loadingText: 'يتم جلب العناصر...'\n  },\n  dataTable: {\n    itemsPerPageText: 'عدد الصفوف لكل صفحة:',\n    ariaLabel: {\n      sortDescending: 'مرتب تنازلياً.',\n      sortAscending: 'مرتب تصاعدياً.',\n      sortNone: 'غير مرتب.',\n      activateNone: 'نشط لإزالة الترتيب.',\n      activateDescending: 'نشط للترتيب تنازلياً.',\n      activateAscending: 'نشط للترتيب تصاعدياً.'\n    },\n    sortBy: 'رتب حسب'\n  },\n  dataFooter: {\n    itemsPerPageText: 'عدد العناصر لكل صفحة:',\n    itemsPerPageAll: 'الكل',\n    nextPage: 'الصفحة التالية',\n    prevPage: 'الصفحة السابقة',\n    firstPage: 'الصفحة الأولى',\n    lastPage: 'الصفحة الأخيرة',\n    pageText: '{0}-{1} من {2}'\n  },\n  datePicker: {\n    itemsSelected: 'تم تحديد {0}',\n    nextMonthAriaLabel: 'الشهر القادم',\n    nextYearAriaLabel: 'العام القادم',\n    prevMonthAriaLabel: 'الشهر الماضى',\n    prevYearAriaLabel: 'السنة الماضية'\n  },\n  noDataText: 'لا توجد بيانات',\n  carousel: {\n    prev: 'المعروض السابق',\n    next: 'المعروض التالي',\n    ariaLabel: {\n      delimiter: 'المعروض رقم {0} من {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} أكثر'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} ملفات',\n    counterSize: '{0} ملفات ({1} في المجموع)'\n  },\n  timePicker: {\n    am: 'صباحاً',\n    pm: 'مساءً'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'الإنتقال بين الصفحات',\n      next: 'الصفحة التالية',\n      previous: 'الصفحة السابقة',\n      page: '{0} انتقل إلى الصفحة',\n      currentPage: '{0} الصفحة الحالية رقمها'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'القييم {0} من {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/az.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/az.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'nişan',\n  close: 'Bağla',\n  dataIterator: {\n    noResultsText: 'Uyğun məlumat tapılmadı',\n    loadingText: 'Yüklənir... Zəhmət olmasa, gözləyin.'\n  },\n  dataTable: {\n    itemsPerPageText: 'Səhifə başı sətir sayı:',\n    ariaLabel: {\n      sortDescending: 'Azalan sıra ilə düzülmüş.',\n      sortAscending: 'Artan sıra ilə düzülmüş.',\n      sortNone: 'Sıralanmamışdır. ',\n      activateNone: 'Sıralamanı yığışdır.',\n      activateDescending: 'Azalan sıra ilə düz.',\n      activateAscending: 'Artan sıra ilə düz.'\n    },\n    sortBy: 'Sırala'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Səhifə başı sətir sayı:',\n    itemsPerPageAll: 'Hamısı',\n    nextPage: 'Növbəti səhifə',\n    prevPage: 'Əvvəlki səhifə',\n    firstPage: 'İlk səhifə',\n    lastPage: 'Son səhifə',\n    pageText: '{0} - {1} arası, Cəmi: {2} qeydiyyat'\n  },\n  datePicker: {\n    itemsSelected: '{0} element seçildi',\n    nextMonthAriaLabel: 'Növbəti ay',\n    nextYearAriaLabel: 'Növbəti yıl',\n    prevMonthAriaLabel: 'Keçən ay',\n    prevYearAriaLabel: 'Keçən yıl'\n  },\n  noDataText: 'Bu görüntüdə məlumat yoxdur.',\n  carousel: {\n    prev: 'Əvvəlki görüntü',\n    next: 'Növbəti görüntü',\n    ariaLabel: {\n      delimiter: 'Galereya səhifə {0} / {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} ədad daha'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} fayl',\n    counterSize: '{0} fayl (cəmi {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Səhifələmə Naviqasiyası',\n      next: 'Növbəti səhifə',\n      previous: 'Əvəvlki səhifə',\n      page: 'Səhifəyə get {0}',\n      currentPage: 'Cari səhifə, Səhifə {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/bg.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/bg.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Значка',\n  close: 'Затвори',\n  dataIterator: {\n    noResultsText: 'Не са намерени записи',\n    loadingText: 'Зареждане на елементи...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Редове на страница:',\n    ariaLabel: {\n      sortDescending: 'Подреди в намаляващ ред.',\n      sortAscending: 'Подреди в нарастващ ред.',\n      sortNone: 'Без подредба.',\n      activateNone: 'Активирай за премахване на подредбата.',\n      activateDescending: 'Активирай за подредба в намаляващ ред.',\n      activateAscending: 'Активирай за подредба в нарастващ ред.'\n    },\n    sortBy: 'Сортирай по'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Елементи на страница:',\n    itemsPerPageAll: 'Всички',\n    nextPage: 'Следваща страница',\n    prevPage: 'Предишна страница',\n    firstPage: 'Първа страница',\n    lastPage: 'Последна страница',\n    pageText: '{0}-{1} от {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} избрани',\n    nextMonthAriaLabel: 'Следващ месец',\n    nextYearAriaLabel: 'Следващата година',\n    prevMonthAriaLabel: 'Предишен месец',\n    prevYearAriaLabel: 'Предишна година'\n  },\n  noDataText: 'Няма налични данни',\n  carousel: {\n    prev: 'Предишна визуализация',\n    next: 'Следваща визуализация',\n    ariaLabel: {\n      delimiter: 'Кадър {0} от {1} на въртележката'\n    }\n  },\n  calendar: {\n    moreEvents: 'Още {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} файла',\n    counterSize: '{0} файла ({1} общо)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Странициране',\n      next: 'Следваща страница',\n      previous: 'Предишна страница',\n      page: 'Отиди на страница {0}',\n      currentPage: 'Текуща страница, Страница {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ca.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/ca.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Insígnia',\n  close: 'Tancar',\n  dataIterator: {\n    noResultsText: 'Sense dades per mostrar',\n    loadingText: 'Carregant...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Files per pàgina:',\n    ariaLabel: {\n      sortDescending: 'Ordre descendent.',\n      sortAscending: 'Ordre ascendent.',\n      sortNone: 'Sense ordenar.',\n      activateNone: 'Premi per treure la ordenació.',\n      activateDescending: 'Premi per ordenar descendent.',\n      activateAscending: 'Premi per ordenar ascendent.'\n    },\n    sortBy: 'Ordenat per'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Elements per pàgina:',\n    itemsPerPageAll: 'Tot',\n    nextPage: 'Pàgina següent',\n    prevPage: 'Pàgina anterior',\n    firstPage: 'Primera pàgina',\n    lastPage: 'Última pàgina',\n    pageText: '{0}-{1} de {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} seleccionats',\n    nextMonthAriaLabel: 'El mes que ve',\n    nextYearAriaLabel: \"L'any que ve\",\n    prevMonthAriaLabel: 'Mes anterior',\n    prevYearAriaLabel: 'Any anterior'\n  },\n  noDataText: 'Sense dades',\n  carousel: {\n    prev: 'Visualització prèvia',\n    next: 'Visualització següent',\n    ariaLabel: {\n      delimiter: 'Diapositiva {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} més'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} fitxers',\n    counterSize: '{0} fitxers ({1} en total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navegació de la pàgina',\n      next: 'Pàgina següent',\n      previous: 'Pàgina anterior',\n      page: 'Ves a la pàgina {0}',\n      currentPage: 'Pàgina actual, pàgina {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Puntuació {0} de {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ckb.ts\":\n/*!***************************!*\\\n  !*** ./src/locale/ckb.ts ***!\n  \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'باج',\n  close: 'داخستن',\n  dataIterator: {\n    noResultsText: 'هیچ تۆمارێکی هاوتا نەدۆزرایەوە',\n    loadingText: 'بارکردنی ئایتمەکان...'\n  },\n  dataTable: {\n    itemsPerPageText: 'ڕیزەکان بۆ هەر پەڕەیەک:',\n    ariaLabel: {\n      sortDescending: '.سەر بەرەو خوار ڕیزکراوە',\n      sortAscending: '.سەر بەرەو ژوور ڕیزکراوە',\n      sortNone: 'ڕیزنەکراوە.',\n      activateNone: 'چالاککردن بۆ لابردنی ڕیزکردن.',\n      activateDescending: 'چالاککردن بۆ ڕیزکردنی سەربەرەوخوار.',\n      activateAscending: 'چالاککردن بۆ ڕیزکردنی سەر بەرەو ژوور.'\n    },\n    sortBy: 'ڕیزکردن بەپێی'\n  },\n  dataFooter: {\n    itemsPerPageText: 'ئایتمەکان بۆ هەر پەڕەیەک:',\n    itemsPerPageAll: 'هەمووی',\n    nextPage: 'پەڕەی دواتر',\n    prevPage: 'پەڕەی پێشوو',\n    firstPage: 'پەڕەی یەکەم',\n    lastPage: 'پەڕەی کۆتایی',\n    pageText: '{0}-{1} لە {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} دەسنیشانکراوە',\n    nextMonthAriaLabel: 'مانگی داهاتوو',\n    nextYearAriaLabel: 'ساڵی داهاتوو',\n    prevMonthAriaLabel: 'مانگی پێشوو',\n    prevYearAriaLabel: 'ساڵی پێشوو'\n  },\n  noDataText: 'هیچ داتایەک بەردەست نیە',\n  carousel: {\n    prev: 'بینراوی پێشوو',\n    next: 'بینراوی داهاتوو',\n    ariaLabel: {\n      delimiter: 'سلایدی کارۆسێل {0} لە {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} زیاتر'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} فایل',\n    counterSize: '{0} فایل ({1} لە کۆی گشتی)'\n  },\n  timePicker: {\n    am: 'پێش نیوەڕۆژ',\n    pm: 'دوای نیوەڕۆژ'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'ڕێنیشاندەری پەڕەگۆڕکێ',\n      next: 'پەڕەی دواتر',\n      previous: 'پەڕەی پێشوو',\n      page: 'بڕۆ بۆ پەڕەی {0}',\n      currentPage: 'پەڕەی ئێستا، پەڕە{0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/cs.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/cs.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Odznak',\n  close: 'Zavřít',\n  dataIterator: {\n    noResultsText: 'Nenalezeny žádné záznamy',\n    loadingText: 'Načítám položky...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Řádků na stránku:',\n    ariaLabel: {\n      sortDescending: 'Řazeno sestupně.',\n      sortAscending: 'Řazeno vzestupně.',\n      sortNone: 'Neseřazeno.',\n      activateNone: 'Aktivováním vypnete řazení.',\n      activateDescending: 'Aktivováním se bude řadit sestupně.',\n      activateAscending: 'Aktivováním se bude řadit vzestupně.'\n    },\n    sortBy: 'Řadit dle'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Položek na stránku:',\n    itemsPerPageAll: 'Vše',\n    nextPage: 'Další strana',\n    prevPage: 'Předchozí strana',\n    firstPage: 'První strana',\n    lastPage: 'Poslední strana',\n    pageText: '{0}-{1} z {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} vybráno',\n    nextMonthAriaLabel: 'Příští měsíc',\n    nextYearAriaLabel: 'Příští rok',\n    prevMonthAriaLabel: 'Předchozí měsíc',\n    prevYearAriaLabel: 'Předchozí rok'\n  },\n  noDataText: 'Nejsou dostupná žádná data',\n  carousel: {\n    prev: 'Předchozí obrázek',\n    next: 'Další obrázek',\n    ariaLabel: {\n      delimiter: 'Slide {0} z {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} dalších'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} souborů',\n    counterSize: '{0} souborů ({1} celkem)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigace po stránkách',\n      next: 'Další strana',\n      previous: 'Předchozí strana',\n      page: 'Přejít na stránku {0}',\n      currentPage: 'Aktuální stránka, stránka {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Hodnocení {0} z {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/da.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/da.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Emblem',\n  close: 'Luk',\n  dataIterator: {\n    noResultsText: 'Ingen matchende data fundet',\n    loadingText: 'Indhenter data...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rækker pr. side:',\n    ariaLabel: {\n      sortDescending: 'Sorteret faldende.',\n      sortAscending: 'Sorteret stigende.',\n      sortNone: 'Ikke sorteret.',\n      activateNone: 'Aktiver for at fjerne sortering.',\n      activateDescending: 'Aktiver for at sortere faldende.',\n      activateAscending: 'Aktiver for at sortere stigende.'\n    },\n    sortBy: 'Sorter efter'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Rækker pr. side:',\n    itemsPerPageAll: 'Alle',\n    nextPage: 'Næste side',\n    prevPage: 'Forrige side',\n    firstPage: 'Første side',\n    lastPage: 'Sidste side',\n    pageText: '{0}-{1} af {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} valgt',\n    nextMonthAriaLabel: 'Næste måned',\n    nextYearAriaLabel: 'Næste år',\n    prevMonthAriaLabel: 'Forrige måned',\n    prevYearAriaLabel: 'Forrige år'\n  },\n  noDataText: 'Ingen data tilgængelig',\n  carousel: {\n    prev: 'Forrige visuelle',\n    next: 'Næste visuelle',\n    ariaLabel: {\n      delimiter: 'Karrusel dias {0} af {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} mere'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} filer',\n    counterSize: '{0} filer ({1} total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagineringsnavigation',\n      next: 'Næste side',\n      previous: 'Forrige side',\n      page: 'Gå til side {0}',\n      currentPage: 'Nuværende side, Side {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Bedømmelse {0} af {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/de.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/de.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Abzeichen',\n  close: 'Schließen',\n  dataIterator: {\n    noResultsText: 'Keine Elemente gefunden',\n    loadingText: 'Lade Elemente...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Zeilen pro Seite:',\n    ariaLabel: {\n      sortDescending: 'Absteigend sortiert.',\n      sortAscending: 'Aufsteigend sortiert.',\n      sortNone: 'Nicht sortiert.',\n      activateNone: 'Aktivieren um Sortierung zu entfernen.',\n      activateDescending: 'Aktivieren um absteigend zu sortieren.',\n      activateAscending: 'Aktivieren um aufsteigend zu sortieren.'\n    },\n    sortBy: 'Sortiere nach'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Elemente pro Seite:',\n    itemsPerPageAll: 'Alle',\n    nextPage: 'Nächste Seite',\n    prevPage: 'Vorherige Seite',\n    firstPage: 'Erste Seite',\n    lastPage: 'Letzte Seite',\n    pageText: '{0}-{1} von {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} ausgewählt',\n    nextMonthAriaLabel: 'Nächsten Monat',\n    nextYearAriaLabel: 'Nächstes Jahr',\n    prevMonthAriaLabel: 'Vorheriger Monat',\n    prevYearAriaLabel: 'Vorheriges Jahr'\n  },\n  noDataText: 'Keine Daten vorhanden',\n  carousel: {\n    prev: 'Vorheriges Bild',\n    next: 'Nächstes Bild',\n    ariaLabel: {\n      delimiter: 'Element {0} von {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} mehr'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} Dateien',\n    counterSize: '{0} Dateien ({1} gesamt)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Seitennavigation',\n      next: 'Nächste Seite',\n      previous: 'Vorherige Seite',\n      page: 'Gehe zu Seite {0}',\n      currentPage: 'Aktuelle Seite, Seite {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/el.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/el.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Σήμα',\n  close: 'Close',\n  dataIterator: {\n    noResultsText: 'Δε βρέθηκαν αποτελέσματα',\n    loadingText: 'Loading item...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Γραμμές ανά σελίδα:',\n    ariaLabel: {\n      sortDescending: 'Sorted descending.',\n      sortAscending: 'Sorted ascending.',\n      sortNone: 'Not sorted.',\n      activateNone: 'Activate to remove sorting.',\n      activateDescending: 'Activate to sort descending.',\n      activateAscending: 'Activate to sort ascending.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Αντικείμενα ανά σελίδα:',\n    itemsPerPageAll: 'Όλα',\n    nextPage: 'Επόμενη σελίδα',\n    prevPage: 'Προηγούμενη σελίδα',\n    firstPage: 'Πρώτη σελίδα',\n    lastPage: 'Τελευταία σελίδα',\n    pageText: '{0}-{1} από {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} επιλεγμένα',\n    nextMonthAriaLabel: 'Τον επόμενο μήνα',\n    nextYearAriaLabel: 'Του χρόνου',\n    prevMonthAriaLabel: 'Προηγούμενος μήνας',\n    prevYearAriaLabel: 'Προηγούμενο έτος'\n  },\n  noDataText: 'Χωρίς δεδομένα',\n  carousel: {\n    prev: 'הקודם חזותי',\n    next: 'הבא חזותי',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} ακόμη'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Πλοήγηση με προορισμούς',\n      next: 'Επόμενη σελίδα',\n      previous: 'Προηγούμενη σελίδα',\n      page: 'Πήγαινε στην σελίδα {0}',\n      currentPage: 'Τρέχουσα σελίδα, σελίδα {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/en.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/en.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Badge',\n  close: 'Close',\n  dataIterator: {\n    noResultsText: 'No matching records found',\n    loadingText: 'Loading items...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rows per page:',\n    ariaLabel: {\n      sortDescending: 'Sorted descending.',\n      sortAscending: 'Sorted ascending.',\n      sortNone: 'Not sorted.',\n      activateNone: 'Activate to remove sorting.',\n      activateDescending: 'Activate to sort descending.',\n      activateAscending: 'Activate to sort ascending.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Items per page:',\n    itemsPerPageAll: 'All',\n    nextPage: 'Next page',\n    prevPage: 'Previous page',\n    firstPage: 'First page',\n    lastPage: 'Last page',\n    pageText: '{0}-{1} of {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} selected',\n    nextMonthAriaLabel: 'Next month',\n    nextYearAriaLabel: 'Next year',\n    prevMonthAriaLabel: 'Previous month',\n    prevYearAriaLabel: 'Previous year'\n  },\n  noDataText: 'No data available',\n  carousel: {\n    prev: 'Previous visual',\n    next: 'Next visual',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} more'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: 'Next page',\n      previous: 'Previous page',\n      page: 'Goto Page {0}',\n      currentPage: 'Current Page, Page {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/es.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/es.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Placa',\n  close: 'Cerrar',\n  dataIterator: {\n    noResultsText: 'Ningún elemento coincide con la búsqueda',\n    loadingText: 'Cargando...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Filas por página:',\n    ariaLabel: {\n      sortDescending: 'Orden descendente.',\n      sortAscending: 'Orden ascendente.',\n      sortNone: 'Sin ordenar.',\n      activateNone: 'Pulse para quitar orden.',\n      activateDescending: 'Pulse para ordenar de forma descendente.',\n      activateAscending: 'Pulse para ordenar de forma ascendente.'\n    },\n    sortBy: 'Ordenado por'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Elementos por página:',\n    itemsPerPageAll: 'Todos',\n    nextPage: 'Página siguiente',\n    prevPage: 'Página anterior',\n    firstPage: 'Primera página',\n    lastPage: 'Última página',\n    pageText: '{0}-{1} de {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} seleccionados',\n    nextMonthAriaLabel: 'Próximo mes',\n    nextYearAriaLabel: 'Próximo año',\n    prevMonthAriaLabel: 'Mes anterior',\n    prevYearAriaLabel: 'Año anterior'\n  },\n  noDataText: 'No hay datos disponibles',\n  carousel: {\n    prev: 'Visual anterior',\n    next: 'Visual siguiente',\n    ariaLabel: {\n      delimiter: 'Visual {0} de {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} más'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} archivos',\n    counterSize: '{0} archivos ({1} en total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navegación de paginación',\n      next: 'Página siguiente',\n      previous: 'Página anterior',\n      page: 'Ir a la página {0}',\n      currentPage: 'Página actual, página {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Puntuación {0} de {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/et.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/et.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Märk',\n  close: 'Sulge',\n  dataIterator: {\n    noResultsText: 'Vastavaid kirjeid ei leitud',\n    loadingText: 'Andmeid laaditakse...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Ridu leheküljel:',\n    ariaLabel: {\n      sortDescending: 'Kahanevalt sorteeritud.',\n      sortAscending: 'Kasvavalt sorteeritud.',\n      sortNone: 'Ei ole sorteeritud.',\n      activateNone: 'Vajuta uuesti sorteerimise eemaldamiseks.',\n      activateDescending: 'Vajuta uuesti, et sorteerida kahanevalt.',\n      activateAscending: 'Vajuta kasvavalt sorteerimiseks.'\n    },\n    sortBy: 'Sorteerimise alus'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Kirjeid leheküljel:',\n    itemsPerPageAll: 'Kõik',\n    nextPage: 'Järgmine lehekülg',\n    prevPage: 'Eelmine lehekülg',\n    firstPage: 'Esimene lehekülg',\n    lastPage: 'Viimane lehekülg',\n    pageText: '{0}-{1} {2}st'\n  },\n  datePicker: {\n    itemsSelected: '{0} valitud',\n    nextMonthAriaLabel: 'Järgmine kuu',\n    nextYearAriaLabel: 'Järgmine aasta',\n    prevMonthAriaLabel: 'Eelmine kuu',\n    prevYearAriaLabel: 'Eelmine aasta'\n  },\n  noDataText: 'Andmed puuduvad',\n  carousel: {\n    prev: 'Eelmine visuaalne',\n    next: 'Järgmine visuaalne',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} veel'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} faili',\n    counterSize: '{0} faili (kokku {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: 'Järgmine lehekülg',\n      previous: 'Eelmine lehekülg',\n      page: 'Mine lehele {0}',\n      currentPage: 'Praegune leht, leht {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/fa.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/fa.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'نشان',\n  close: 'بستن',\n  dataIterator: {\n    noResultsText: 'نتیجه‌ای یافت نشد',\n    loadingText: 'در حال بارگذاری...'\n  },\n  dataTable: {\n    itemsPerPageText: 'ردیف در صفحه:',\n    ariaLabel: {\n      sortDescending: 'مرتب‌سازی نزولی',\n      sortAscending: 'مرتب‌سازی صعودی',\n      sortNone: 'بدون مرتب‌سازی',\n      activateNone: 'غیرفعال‌سازی مرتب‌سازی',\n      activateDescending: 'غیرفعال‌سازی مرتب‌سازی نزولی',\n      activateAscending: 'غیرفعال‌سازی مرتب‌سازی صعودی'\n    },\n    sortBy: 'مرتب‌سازی براساس'\n  },\n  dataFooter: {\n    itemsPerPageText: 'ردیف در صفحه:',\n    itemsPerPageAll: 'همه',\n    nextPage: 'صفحه‌ی بعد',\n    prevPage: 'صفحه‌ی قبل',\n    firstPage: 'صفحه‌ی یکم',\n    lastPage: 'صفحه‌ی آخر',\n    pageText: '{0} تا {1} از {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} انتخاب شده',\n    nextMonthAriaLabel: 'ماه بعد',\n    nextYearAriaLabel: 'سال بعد',\n    prevMonthAriaLabel: 'ماه قبل',\n    prevYearAriaLabel: 'سال قبل'\n  },\n  noDataText: 'داده‌ای موجود نیست',\n  carousel: {\n    prev: 'اسلاید قبلی',\n    next: 'اسلاید بعدی',\n    ariaLabel: {\n      delimiter: 'اسلاید {0} از {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{بیشتر {0'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} پرونده',\n    counterSize: '{0} پرونده ({1} در کل)'\n  },\n  timePicker: {\n    am: 'قبل از ظهر',\n    pm: 'بعد از ظهر'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'جهت یابی صفحه',\n      next: 'صفحه بعد',\n      previous: 'صفحه قبلی',\n      page: 'برو صفحه {0}',\n      currentPage: '{0} صفحه فعلی ، صفحه'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/fi.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/fi.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Infopiste',\n  close: 'Sulje',\n  dataIterator: {\n    noResultsText: 'Ei osumia',\n    loadingText: 'Ladataan kohteita...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rivejä sivulla:',\n    ariaLabel: {\n      sortDescending: ': Järjestetty laskevasti. Poista järjestäminen aktivoimalla.',\n      sortAscending: ': Järjestetty nousevasti. Järjestä laskevasti aktivoimalla.',\n      sortNone: ': Ei järjestetty. Järjestä nousevasti aktivoimalla.',\n      activateNone: 'Aktivoi lajittelun poistamiseksi.',\n      activateDescending: 'Aktivoi laskevien laskevien lajittelemiseksi.',\n      activateAscending: 'Aktivoi lajitella nouseva.'\n    },\n    sortBy: 'Järjestä'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Kohteita sivulla:',\n    itemsPerPageAll: 'Kaikki',\n    nextPage: 'Seuraava sivu',\n    prevPage: 'Edellinen sivu',\n    firstPage: 'Ensimmäinen sivu',\n    lastPage: 'Viimeinen sivu',\n    pageText: '{0}-{1} ({2})'\n  },\n  datePicker: {\n    itemsSelected: '{0} valittu',\n    nextMonthAriaLabel: 'Seuraava kuukausi',\n    nextYearAriaLabel: 'Ensi vuosi',\n    prevMonthAriaLabel: 'Edellinen kuukausi',\n    prevYearAriaLabel: 'Edellinen vuosi'\n  },\n  noDataText: 'Ei dataa',\n  carousel: {\n    prev: 'Edellinen kuva',\n    next: 'Seuraava kuva',\n    ariaLabel: {\n      delimiter: 'Karusellin kuva {0}/{1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} lisää'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} tiedostoa',\n    counterSize: '{0} tiedostoa ({1} yhteensä)'\n  },\n  timePicker: {\n    am: 'ap.',\n    pm: 'ip.'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: 'Seuraava sivu',\n      previous: 'Edellinen sivu',\n      page: 'Mene sivulle {0}',\n      currentPage: 'Nykyinen sivu, Sivu {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Luokitus {0}/{1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/fr.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/fr.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Badge',\n  close: 'Fermer',\n  dataIterator: {\n    noResultsText: 'Aucun enregistrement correspondant trouvé',\n    loadingText: \"Chargement de l'\\xE9l\\xE9ment\\u2026\"\n  },\n  dataTable: {\n    itemsPerPageText: 'Lignes par page :',\n    ariaLabel: {\n      sortDescending: 'Tri décroissant.',\n      sortAscending: 'Tri croissant.',\n      sortNone: 'Non trié.',\n      activateNone: 'Activer pour supprimer le tri.',\n      activateDescending: 'Activer pour trier par ordre décroissant.',\n      activateAscending: 'Activer pour trier par ordre croissant.'\n    },\n    sortBy: 'Trier par'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Élements par page :',\n    itemsPerPageAll: 'Tous',\n    nextPage: 'Page suivante',\n    prevPage: 'Page précédente',\n    firstPage: 'Première page',\n    lastPage: 'Dernière page',\n    pageText: '{0}-{1} de {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} sélectionné(s)',\n    nextMonthAriaLabel: 'Le mois prochain',\n    nextYearAriaLabel: \"L'ann\\xE9e prochaine\",\n    prevMonthAriaLabel: 'Le mois précédent',\n    prevYearAriaLabel: 'Année précédente'\n  },\n  noDataText: 'Aucune donnée disponible',\n  carousel: {\n    prev: 'Visuel précédent',\n    next: 'Visuel suivant',\n    ariaLabel: {\n      delimiter: 'Diapositive {0} de {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} de plus'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} fichier(s)',\n    counterSize: '{0} fichier(s) ({1} au total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigation de pagination',\n      next: 'Page suivante',\n      previous: 'Page précédente',\n      page: 'Aller à la page {0}',\n      currentPage: 'Page actuelle, Page {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Note de {0} sur {1}'\n    }\n  },\n  loading: 'Chargement…'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/he.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/he.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'תג',\n  close: 'סגור',\n  dataIterator: {\n    noResultsText: 'לא נמצאו תוצאות מתאימות',\n    loadingText: 'טוען פריט...'\n  },\n  dataTable: {\n    itemsPerPageText: 'שורות לעמוד:',\n    ariaLabel: {\n      sortDescending: 'ממוין לפי סדר עולה. לחץ להספקת המיון.',\n      sortAscending: 'ממוין לפי סדר יורד. לחץ למיון לפי סדר עולה.',\n      sortNone: 'לא ממוין. לחץ למיון לפי סדר עולה.',\n      activateNone: 'הפעל להסרת המיון.',\n      activateDescending: 'הפעל למיון יורד.',\n      activateAscending: 'הפעל למיון עולה.'\n    },\n    sortBy: 'סדר לפי'\n  },\n  dataFooter: {\n    itemsPerPageText: 'פריטים לדף:',\n    itemsPerPageAll: 'הכל',\n    nextPage: 'עמוד הבא',\n    prevPage: 'עמוד הקודם',\n    firstPage: 'עמוד ראשון',\n    lastPage: 'עמוד אחרון',\n    pageText: '{0}-{1} מתוך {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} נבחרו',\n    nextMonthAriaLabel: 'חודש הבא',\n    nextYearAriaLabel: 'שנה הבאה',\n    prevMonthAriaLabel: 'חודש שעבר',\n    prevYearAriaLabel: 'שנה שעברה'\n  },\n  noDataText: 'אין נתונים זמינים',\n  carousel: {\n    prev: 'מצג קודם',\n    next: 'מצג הבא',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} נוספים'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} קבצים',\n    counterSize: '{0} קבצים ({1} בסך הכל)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'ניווט עימוד',\n      next: 'עמוד הבא',\n      previous: 'עמוד הקודם',\n      page: '{0} לך לעמוד',\n      currentPage: '{0} עמוד נוכחי, עמוד'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/hr.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/hr.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Bedž',\n  close: 'Zatvori',\n  dataIterator: {\n    noResultsText: 'Nisu pronađene odgovarajuće stavke',\n    loadingText: 'Učitavanje...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Redaka po stranici:',\n    ariaLabel: {\n      sortDescending: 'Sortirano silazno.',\n      sortAscending: 'Sortirano uzlazno.',\n      sortNone: 'Nije sortirano.',\n      activateNone: 'Odaberite za uklanjanje sortiranja.',\n      activateDescending: 'Odaberite za silazno sortiranje.',\n      activateAscending: 'Odaberite za uzlazno sortiranje.'\n    },\n    sortBy: 'Sortirajte po'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Stavki po stranici:',\n    itemsPerPageAll: 'Sve',\n    nextPage: 'Sljedeća stranica',\n    prevPage: 'Prethodna stranica',\n    firstPage: 'Prva stranica',\n    lastPage: 'Posljednja stranica',\n    pageText: '{0}-{1} od {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} odabrano',\n    nextMonthAriaLabel: 'Sljedeći mjesec',\n    nextYearAriaLabel: 'Slijedeće godine',\n    prevMonthAriaLabel: 'Prethodni mjesec',\n    prevYearAriaLabel: 'Prošla godina'\n  },\n  noDataText: 'Nema dostupnih podataka',\n  carousel: {\n    prev: 'Prethodno',\n    next: 'Sljedeće',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'Još {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: 'Odabranih datoteka: {0}',\n    counterSize: 'Odabranih datoteka: {0} ({1} ukupno)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigacija stranicama',\n      next: 'Sljedeća stranica',\n      previous: 'Prethodna stranica',\n      page: 'Idi na stranicu {0}',\n      currentPage: 'Trenutna stranica, stranica {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/hu.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/hu.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Jelvény',\n  close: 'Bezárás',\n  dataIterator: {\n    noResultsText: 'Nincs egyező találat',\n    loadingText: 'Betöltés...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Elem oldalanként:',\n    ariaLabel: {\n      sortDescending: 'Csökkenő sorrendbe rendezve.',\n      sortAscending: 'Növekvő sorrendbe rendezve.',\n      sortNone: 'Rendezetlen.',\n      activateNone: 'Rendezés törlése.',\n      activateDescending: 'Aktiváld a csökkenő rendezésért.',\n      activateAscending: 'Aktiváld a növekvő rendezésért.'\n    },\n    sortBy: 'Rendezés'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Elem oldalanként:',\n    itemsPerPageAll: 'Mind',\n    nextPage: 'Következő oldal',\n    prevPage: 'Előző oldal',\n    firstPage: 'Első oldal',\n    lastPage: 'Utolsó oldal',\n    pageText: '{0}-{1} / {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} kiválasztva',\n    nextMonthAriaLabel: 'Következő hónap',\n    nextYearAriaLabel: 'Következő év',\n    prevMonthAriaLabel: 'Előző hónap',\n    prevYearAriaLabel: 'Előző év'\n  },\n  noDataText: 'Nincs elérhető adat',\n  carousel: {\n    prev: 'Előző',\n    next: 'Következő',\n    ariaLabel: {\n      delimiter: 'Dia {0}/{1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} további'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} fájl',\n    counterSize: '{0} fájl ({1} összesen)'\n  },\n  timePicker: {\n    am: 'de',\n    pm: 'du'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Oldal navigáció',\n      next: 'Következő oldal',\n      previous: 'Előző oldal',\n      page: 'Menj a(z) {0}. oldalra',\n      currentPage: 'Aktuális oldal: {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/id.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/id.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Lencana',\n  close: 'Tutup',\n  dataIterator: {\n    noResultsText: 'Tidak ditemukan catatan yang cocok',\n    loadingText: 'Memuat data...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Baris per halaman:',\n    ariaLabel: {\n      sortDescending: 'Diurutkan kebawah.',\n      sortAscending: 'Diurutkan keatas.',\n      sortNone: 'Tidak diurutkan.',\n      activateNone: 'Aktifkan untuk menghapus penyortiran.',\n      activateDescending: 'Aktifkan untuk mengurutkan kebawah.',\n      activateAscending: 'Aktifkan untuk mengurutkan keatas.'\n    },\n    sortBy: 'Urutkan berdasar'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Item per halaman:',\n    itemsPerPageAll: 'Semua',\n    nextPage: 'Halaman selanjutnya',\n    prevPage: 'Halaman sebelumnya',\n    firstPage: 'Halaman pertama',\n    lastPage: 'Halaman terakhir',\n    pageText: '{0}-{1} dari {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} dipilih',\n    nextMonthAriaLabel: 'Bulan depan',\n    nextYearAriaLabel: 'Tahun depan',\n    prevMonthAriaLabel: 'Bulan sebelumnya',\n    prevYearAriaLabel: 'Tahun sebelumnya'\n  },\n  noDataText: 'Tidak ada data tersedia',\n  carousel: {\n    prev: 'Visual sebelumnya',\n    next: 'Visual selanjutnya',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} lagi'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} berkas',\n    counterSize: '{0} berkas (dari total {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigasi Pagination',\n      next: 'Halaman selanjutnya',\n      previous: 'Halaman sebelumnya',\n      page: 'Buka halaman {0}',\n      currentPage: 'Halaman Saat Ini, Halaman {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/index.ts\":\n/*!*****************************!*\\\n  !*** ./src/locale/index.ts ***!\n  \\*****************************/\n/*! exports provided: af, ar, bg, ca, ckb, cs, da, de, el, en, es, et, fa, fi, fr, hr, hu, he, id, it, ja, ko, lv, lt, nl, no, pl, pt, ro, ru, sk, sl, srCyrl, srLatn, sv, th, tr, az, uk, vi, zhHans, zhHant */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _af__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./af */ \"./src/locale/af.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"af\", function() { return _af__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _ar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ar */ \"./src/locale/ar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ar\", function() { return _ar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _bg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bg */ \"./src/locale/bg.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bg\", function() { return _bg__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _ca__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ca */ \"./src/locale/ca.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ca\", function() { return _ca__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _ckb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ckb */ \"./src/locale/ckb.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ckb\", function() { return _ckb__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _cs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cs */ \"./src/locale/cs.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cs\", function() { return _cs__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _da__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./da */ \"./src/locale/da.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"da\", function() { return _da__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _de__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./de */ \"./src/locale/de.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"de\", function() { return _de__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _el__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./el */ \"./src/locale/el.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"el\", function() { return _el__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _en__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./en */ \"./src/locale/en.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"en\", function() { return _en__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _es__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./es */ \"./src/locale/es.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"es\", function() { return _es__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _et__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./et */ \"./src/locale/et.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"et\", function() { return _et__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _fa__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./fa */ \"./src/locale/fa.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fa\", function() { return _fa__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _fi__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./fi */ \"./src/locale/fi.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fi\", function() { return _fi__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _fr__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./fr */ \"./src/locale/fr.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fr\", function() { return _fr__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _hr__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hr */ \"./src/locale/hr.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hr\", function() { return _hr__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _hu__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./hu */ \"./src/locale/hu.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hu\", function() { return _hu__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _he__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./he */ \"./src/locale/he.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"he\", function() { return _he__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _id__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./id */ \"./src/locale/id.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return _id__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _it__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./it */ \"./src/locale/it.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"it\", function() { return _it__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _ja__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ja */ \"./src/locale/ja.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ja\", function() { return _ja__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _ko__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ko */ \"./src/locale/ko.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ko\", function() { return _ko__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _lv__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./lv */ \"./src/locale/lv.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lv\", function() { return _lv__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _lt__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./lt */ \"./src/locale/lt.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lt\", function() { return _lt__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _nl__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./nl */ \"./src/locale/nl.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nl\", function() { return _nl__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _no__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./no */ \"./src/locale/no.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"no\", function() { return _no__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _pl__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./pl */ \"./src/locale/pl.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pl\", function() { return _pl__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _pt__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./pt */ \"./src/locale/pt.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pt\", function() { return _pt__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _ro__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ro */ \"./src/locale/ro.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ro\", function() { return _ro__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _ru__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./ru */ \"./src/locale/ru.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ru\", function() { return _ru__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _sk__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./sk */ \"./src/locale/sk.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sk\", function() { return _sk__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _sl__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./sl */ \"./src/locale/sl.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sl\", function() { return _sl__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _sr_Cyrl__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./sr-Cyrl */ \"./src/locale/sr-Cyrl.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"srCyrl\", function() { return _sr_Cyrl__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _sr_Latn__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./sr-Latn */ \"./src/locale/sr-Latn.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"srLatn\", function() { return _sr_Latn__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _sv__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./sv */ \"./src/locale/sv.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sv\", function() { return _sv__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _th__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./th */ \"./src/locale/th.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"th\", function() { return _th__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _tr__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./tr */ \"./src/locale/tr.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tr\", function() { return _tr__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _az__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./az */ \"./src/locale/az.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"az\", function() { return _az__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _uk__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./uk */ \"./src/locale/uk.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"uk\", function() { return _uk__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _vi__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./vi */ \"./src/locale/vi.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vi\", function() { return _vi__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _zh_Hans__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./zh-Hans */ \"./src/locale/zh-Hans.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zhHans\", function() { return _zh_Hans__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _zh_Hant__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./zh-Hant */ \"./src/locale/zh-Hant.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zhHant\", function() { return _zh_Hant__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/locale/it.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/it.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Distintivo',\n  close: 'Chiudi',\n  dataIterator: {\n    noResultsText: 'Nessun risultato trovato',\n    loadingText: 'Caricamento in corso...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Righe per pagina:',\n    ariaLabel: {\n      sortDescending: 'Ordinati in ordine decrescente.',\n      sortAscending: 'Ordinati in ordine crescente.',\n      sortNone: 'Non ordinato.',\n      activateNone: \"Attiva per rimuovere l'ordinamento.\",\n      activateDescending: 'Attiva per ordinare in ordine decrescente.',\n      activateAscending: 'Attiva per ordinare in ordine crescente.'\n    },\n    sortBy: 'Ordina per'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Elementi per pagina:',\n    itemsPerPageAll: 'Tutti',\n    nextPage: 'Pagina seguente',\n    prevPage: 'Pagina precedente',\n    firstPage: 'Prima pagina',\n    lastPage: 'Ultima pagina',\n    pageText: '{0}-{1} di {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} selezionati',\n    nextMonthAriaLabel: 'Il prossimo mese',\n    nextYearAriaLabel: \"L'anno prossimo\",\n    prevMonthAriaLabel: 'Il mese scorso',\n    prevYearAriaLabel: \"L'anno scorso\"\n  },\n  noDataText: 'Nessun elemento disponibile',\n  carousel: {\n    prev: 'Vista precedente',\n    next: 'Prossima vista',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} di {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} di più'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} file',\n    counterSize: '{0} file ({1} in totale)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigazione impaginazione',\n      next: 'Pagina seguente',\n      previous: 'Pagina precedente',\n      page: 'Vai alla pagina {0}',\n      currentPage: 'Pagina corrente, pagina {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Valutazione {0} di {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ja.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/ja.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'バッジ',\n  close: '閉じる',\n  dataIterator: {\n    noResultsText: '検索結果が見つかりません。',\n    loadingText: '項目をロード中です...'\n  },\n  dataTable: {\n    itemsPerPageText: '1ページあたりの行数：',\n    ariaLabel: {\n      sortDescending: '降順の並び替え。',\n      sortAscending: '昇順の並び替え。',\n      sortNone: 'ソートされていません。',\n      activateNone: 'ソートを削除するには有効にしてください。',\n      activateDescending: '降順の並び替えのためには有効にしてください。',\n      activateAscending: '昇順のソートのためには有効にしてください。'\n    },\n    sortBy: 'ソート方式'\n  },\n  dataFooter: {\n    itemsPerPageText: '1ページあたりの件数：',\n    itemsPerPageAll: 'すべて',\n    nextPage: '次のページ',\n    prevPage: '前のページ',\n    firstPage: '最初のページ',\n    lastPage: '最後のページ',\n    pageText: '{0}-{1} 件目 / {2}件'\n  },\n  datePicker: {\n    itemsSelected: '{0}日付選択',\n    nextMonthAriaLabel: '来月',\n    nextYearAriaLabel: '来年',\n    prevMonthAriaLabel: '前月',\n    prevYearAriaLabel: '前年'\n  },\n  noDataText: 'データはありません。',\n  carousel: {\n    prev: '前のビジュアル',\n    next: '次のビジュアル',\n    ariaLabel: {\n      delimiter: 'カルーセルのスライド {0}件目 / {1}件'\n    }\n  },\n  calendar: {\n    moreEvents: 'さらに{0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} ファイル',\n    counterSize: '{0} ファイル (合計 {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'ページネーションナビゲーション',\n      next: '次のページ',\n      previous: '前のページ',\n      page: '{0}ページ目に移動',\n      currentPage: '現在のページ、ページ {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: '評価 {1} のうち {0}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ko.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/ko.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: '배지',\n  close: '닫기',\n  dataIterator: {\n    noResultsText: '일치하는 항목이 없습니다.',\n    loadingText: '불러오는 중...'\n  },\n  dataTable: {\n    itemsPerPageText: '페이지 당 행 수:',\n    ariaLabel: {\n      sortDescending: '내림차순 정렬.',\n      sortAscending: '오름차순 정렬.',\n      sortNone: '정렬하지 않음.',\n      activateNone: '정렬을 취소하려면 활성화하세요.',\n      activateDescending: '내림차순 정렬을 위해 활성화하세요.',\n      activateAscending: '오름차순 정렬을 위해 활성화하세요.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: '페이지 당 항목 수:',\n    itemsPerPageAll: '전체',\n    nextPage: '다음 페이지',\n    prevPage: '이전 페이지',\n    firstPage: '첫 페이지',\n    lastPage: '마지막 페이지',\n    pageText: '{2} 중 {0}-{1}'\n  },\n  datePicker: {\n    itemsSelected: '{0} 선택됨',\n    nextMonthAriaLabel: '다음 달',\n    nextYearAriaLabel: '내년',\n    prevMonthAriaLabel: '지난달',\n    prevYearAriaLabel: '전년도'\n  },\n  noDataText: '데이터가 없습니다.',\n  carousel: {\n    prev: '이전 화면',\n    next: '다음 화면',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} 더보기'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)'\n  },\n  timePicker: {\n    am: '오전',\n    pm: '오후'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: '다음 페이지',\n      previous: '이전 페이지',\n      page: '고토 페이지 {0}',\n      currentPage: '현재 페이지, 페이지 {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/lt.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/lt.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Ženklelis',\n  close: 'Uždaryti',\n  dataIterator: {\n    noResultsText: 'Nerasta atitinkančių įrašų',\n    loadingText: 'Kraunama...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Eilutės per puslapį:',\n    ariaLabel: {\n      sortDescending: 'Išrikiuota mažėjimo tvarka.',\n      sortAscending: 'Išrikiuota didėjimo tvarka.',\n      sortNone: 'Nerikiuota.',\n      activateNone: 'Suaktyvinkite, jei norite rikiavimą pašalinti.',\n      activateDescending: 'Suaktyvinkite, jei norite rikiuoti mažėjimo tvarka.',\n      activateAscending: 'Suaktyvinkite, jei norite rikiuoti didėjimo tvarka.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Įrašai per puslapį:',\n    itemsPerPageAll: 'Visi',\n    nextPage: 'Kitas puslapis',\n    prevPage: 'Ankstesnis puslapis',\n    firstPage: 'Pirmas puslapis',\n    lastPage: 'Paskutinis puslapis',\n    pageText: '{0}-{1} iš {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} pasirinkta',\n    nextMonthAriaLabel: 'Kitą mėnesį',\n    nextYearAriaLabel: 'Kitais metais',\n    prevMonthAriaLabel: 'Praeita mėnesį',\n    prevYearAriaLabel: 'Praeiti metai'\n  },\n  noDataText: 'Nėra duomenų',\n  carousel: {\n    prev: 'Ankstesnioji skaidrė',\n    next: 'Kita skaidrė',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'Daugiau {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} failų',\n    counterSize: '{0} failų ({1} iš viso)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Puslapio naršymas',\n      next: 'Kitas puslapis',\n      previous: 'Ankstesnis puslapis',\n      page: 'Eiti į puslapį {0}',\n      currentPage: 'Dabartinis puslapis, puslapis {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/lv.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/lv.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Žetons',\n  close: 'Aizvērt',\n  dataIterator: {\n    noResultsText: 'Nekas netika atrasts',\n    loadingText: 'Ielādē...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rādīt lapā:',\n    ariaLabel: {\n      sortDescending: 'Sakārtots dilstošā secībā.',\n      sortAscending: 'Sakārtots augošā secībā.',\n      sortNone: 'Nav sakārtots.',\n      activateNone: 'Aktivizēt, lai noņemtu kārtošanu.',\n      activateDescending: 'Aktivizēt, lai sakārtotu dilstošā secībā.',\n      activateAscending: 'Aktivizēt, lai sakārtotu augošā secībā.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Rādīt lapā:',\n    itemsPerPageAll: 'Visu',\n    nextPage: 'Nākamā lapa',\n    prevPage: 'Iepriekšējā lapa',\n    firstPage: 'Pirmā lapa',\n    lastPage: 'Pēdējā lapa',\n    pageText: '{0}-{1} no {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} izvēlēts',\n    nextMonthAriaLabel: 'Nākammēnes',\n    nextYearAriaLabel: 'Nākamgad',\n    prevMonthAriaLabel: 'Iepriekšējais mēnesis',\n    prevYearAriaLabel: 'Iepriekšējais gads'\n  },\n  noDataText: 'Nav pieejamu datu',\n  carousel: {\n    prev: 'Iepriekšējais slaids',\n    next: 'Nākamais slaids',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'Vēl {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigācija paginationā',\n      next: 'Nākamā lapa',\n      previous: 'Iepriekšējā lapa',\n      page: 'Iet uz lapu {0}',\n      currentPage: 'Pašreizējā lapa, lapa {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/nl.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/nl.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'insigne',\n  close: 'Sluiten',\n  dataIterator: {\n    noResultsText: 'Geen overeenkomende resultaten gevonden',\n    loadingText: 'Items aan het laden...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rijen per pagina:',\n    ariaLabel: {\n      sortDescending: 'Aflopend gesorteerd.',\n      sortAscending: 'Oplopend gesorteerd.',\n      sortNone: 'Niet gesorteerd.',\n      activateNone: 'Activeer om de sortering te verwijderen.',\n      activateDescending: 'Activeer om aflopend te sorteren.',\n      activateAscending: 'Activeer om oplopend te sorteren.'\n    },\n    sortBy: 'Sorteer volgens'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Aantal per pagina:',\n    itemsPerPageAll: 'Alles',\n    nextPage: 'Volgende pagina',\n    prevPage: 'Vorige pagina',\n    firstPage: 'Eerste pagina',\n    lastPage: 'Laatste pagina',\n    pageText: '{0}-{1} van {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} geselecteerd',\n    nextMonthAriaLabel: 'Volgende maand',\n    nextYearAriaLabel: 'Volgend jaar',\n    prevMonthAriaLabel: 'Vorige maand',\n    prevYearAriaLabel: 'Vorig jaar'\n  },\n  noDataText: 'Geen gegevens beschikbaar',\n  carousel: {\n    prev: 'Vorig beeld',\n    next: 'Volgend beeld',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} meer'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} bestanden',\n    counterSize: '{0} bestanden ({1} in totaal)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Paginanavigatie',\n      next: 'Volgende pagina',\n      previous: 'Vorige pagina',\n      page: 'Ga naar pagina {0}',\n      currentPage: 'Huidige pagina, pagina {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/no.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/no.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Skilt',\n  close: 'Lukk',\n  dataIterator: {\n    noResultsText: 'Fant ingen matchende elementer.',\n    loadingText: 'Laster elementer...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rader per side:',\n    ariaLabel: {\n      sortDescending: 'Sortert synkende.',\n      sortAscending: 'Sortert stigende.',\n      sortNone: 'Ikke sortert.',\n      activateNone: 'Aktiver for å fjerne sortering.',\n      activateDescending: 'Aktiver for å sortere synkende.',\n      activateAscending: 'Aktiver for å sortere stigende.'\n    },\n    sortBy: 'Sorter etter'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Elementer per side:',\n    itemsPerPageAll: 'Alle',\n    nextPage: 'Neste side',\n    prevPage: 'Forrige side',\n    firstPage: 'Første side',\n    lastPage: 'Siste side',\n    pageText: '{0}-{1} av {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} valgt',\n    nextMonthAriaLabel: 'Neste måned',\n    nextYearAriaLabel: 'Neste år',\n    prevMonthAriaLabel: 'Forrige måned',\n    prevYearAriaLabel: 'Forrige år'\n  },\n  noDataText: 'Ingen data er tilgjengelig',\n  carousel: {\n    prev: 'Forrige bilde',\n    next: 'Neste bilde',\n    ariaLabel: {\n      delimiter: 'Karusellbilde {0} av {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} flere'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} filer',\n    counterSize: '{0} filer ({1} totalt)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Paginasjonsnavigasjon',\n      next: 'Neste side',\n      previous: 'Forrige side',\n      page: 'Gå til side {0}',\n      currentPage: 'Gjeldende side, side {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/pl.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/pl.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Odznaka',\n  close: 'Zamknij',\n  dataIterator: {\n    noResultsText: 'Nie znaleziono danych odpowiadających wyszukiwaniu',\n    loadingText: 'Wczytywanie danych...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Wierszy na stronie:',\n    ariaLabel: {\n      sortDescending: 'Sortowanie malejąco. Kliknij aby zmienić.',\n      sortAscending: 'Sortowanie rosnąco. Kliknij aby zmienić.',\n      sortNone: 'Bez sortowania. Kliknij aby posortować rosnąco.',\n      activateNone: 'Kliknij aby usunąć sortowanie.',\n      activateDescending: 'Kliknij aby posortować malejąco.',\n      activateAscending: 'Kliknij aby posortować rosnąco.'\n    },\n    sortBy: 'Sortuj według'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Pozycji na stronie:',\n    itemsPerPageAll: 'Wszystkie',\n    nextPage: 'Następna strona',\n    prevPage: 'Poprzednia strona',\n    firstPage: 'Pierwsza strona',\n    lastPage: 'Ostatnia strona',\n    pageText: '{0}-{1} z {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} dat(y)',\n    nextMonthAriaLabel: 'Następny miesiąc',\n    nextYearAriaLabel: 'Następny rok',\n    prevMonthAriaLabel: 'Poprzedni miesiąc',\n    prevYearAriaLabel: 'Poprzedni rok'\n  },\n  noDataText: 'Brak danych',\n  carousel: {\n    prev: 'Poprzedni obraz',\n    next: 'Następny obraz',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} więcej'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: 'Liczba plików: {0}',\n    counterSize: 'Liczba plików: {0} (łącznie {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Nawigacja paginacyjna',\n      next: 'Następna strona',\n      previous: 'Poprzednia strona',\n      page: 'Idź do strony {0}',\n      currentPage: 'Bieżąca strona, strona {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/pt.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/pt.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Distintivo',\n  close: 'Fechar',\n  dataIterator: {\n    noResultsText: 'Nenhum dado encontrado',\n    loadingText: 'Carregando itens...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Linhas por página:',\n    ariaLabel: {\n      sortDescending: 'Ordenado decrescente.',\n      sortAscending: 'Ordenado crescente.',\n      sortNone: 'Não ordenado.',\n      activateNone: 'Ative para remover a ordenação.',\n      activateDescending: 'Ative para ordenar decrescente.',\n      activateAscending: 'Ative para ordenar crescente.'\n    },\n    sortBy: 'Ordenar por'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Itens por página:',\n    itemsPerPageAll: 'Todos',\n    nextPage: 'Próxima página',\n    prevPage: 'Página anterior',\n    firstPage: 'Primeira página',\n    lastPage: 'Última página',\n    pageText: '{0}-{1} de {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} selecionado(s)',\n    nextMonthAriaLabel: 'Próximo mês',\n    nextYearAriaLabel: 'Próximo ano',\n    prevMonthAriaLabel: 'Mês anterior',\n    prevYearAriaLabel: 'Ano anterior'\n  },\n  noDataText: 'Não há dados disponíveis',\n  carousel: {\n    prev: 'Visão anterior',\n    next: 'Próxima visão',\n    ariaLabel: {\n      delimiter: 'Slide {0} de {1} do carrossel'\n    }\n  },\n  calendar: {\n    moreEvents: 'Mais {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} arquivo(s)',\n    counterSize: '{0} arquivo(s) ({1} no total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navegação de paginação',\n      next: 'Próxima página',\n      previous: 'Página anterior',\n      page: 'Ir à página {0}',\n      currentPage: 'Página atual, página {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ro.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/ro.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Insignă',\n  close: 'Închideți',\n  dataIterator: {\n    noResultsText: 'Nu s-au găsit înregistrări corespunzătoare',\n    loadingText: 'Se încarcă articolele...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rânduri pe pagină:',\n    ariaLabel: {\n      sortDescending: 'Sortate descendent.',\n      sortAscending: 'Sortate ascendent.',\n      sortNone: 'Nesortate.',\n      activateNone: 'Activați pentru a elimina sortarea.',\n      activateDescending: 'Activați pentru a sorta descendent.',\n      activateAscending: 'Activați pentru a sorta ascendent.'\n    },\n    sortBy: 'Sortați după'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Articole pe pagină:',\n    itemsPerPageAll: 'Toate',\n    nextPage: 'Pagina următoare',\n    prevPage: 'Pagina anterioară',\n    firstPage: 'Prima pagină',\n    lastPage: 'Ultima pagină',\n    pageText: '{0}-{1} din {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} selectate',\n    nextMonthAriaLabel: 'Luna următoare',\n    nextYearAriaLabel: 'Anul următor',\n    prevMonthAriaLabel: 'Luna anterioară',\n    prevYearAriaLabel: 'Anul anterior'\n  },\n  noDataText: 'Nu există date disponibile',\n  carousel: {\n    prev: 'Grafica anterioară',\n    next: 'Grafica următoare',\n    ariaLabel: {\n      delimiter: 'Slide carusel {0} din {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'încă {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} fișiere',\n    counterSize: '{0} fișiere ({1} în total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigare prin paginare',\n      next: 'Pagina următoare',\n      previous: 'Pagina anterioară',\n      page: 'Mergeți la pagina {0}',\n      currentPage: 'Pagina curentă, pagina {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating de {0} din {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/ru.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/ru.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'знак',\n  close: 'Закрыть',\n  dataIterator: {\n    noResultsText: 'Не найдено подходящих записей',\n    loadingText: 'Запись загружается...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Строк на странице:',\n    ariaLabel: {\n      sortDescending: 'Упорядочено по убыванию.',\n      sortAscending: 'Упорядочено по возрастанию.',\n      sortNone: 'Не упорядочено.',\n      activateNone: 'Активируйте, чтобы убрать сортировку.',\n      activateDescending: 'Активируйте для упорядочивания убыванию.',\n      activateAscending: 'Активируйте для упорядочивания по возрастанию.'\n    },\n    sortBy: 'Сортировать по'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Записей на странице:',\n    itemsPerPageAll: 'Все',\n    nextPage: 'Следующая страница',\n    prevPage: 'Предыдущая страница',\n    firstPage: 'Первая страница',\n    lastPage: 'Последняя страница',\n    pageText: '{0}-{1} из {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} выбран',\n    nextMonthAriaLabel: 'Следующий месяц',\n    nextYearAriaLabel: 'Следующий год',\n    prevMonthAriaLabel: 'Прошлый месяц',\n    prevYearAriaLabel: 'Предыдущий год'\n  },\n  noDataText: 'Отсутствуют данные',\n  carousel: {\n    prev: 'Предыдущий слайд',\n    next: 'Следующий слайд',\n    ariaLabel: {\n      delimiter: 'Слайд {0} из {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'Еще {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: 'Файлов: {0}',\n    counterSize: 'Файлов: {0} (всего {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Навигация по страницам',\n      next: 'Следующая страница',\n      previous: 'Предыдущая страница',\n      page: 'Перейти на страницу {0}',\n      currentPage: 'Текущая страница, Страница {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/sk.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/sk.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Odznak',\n  close: 'Zavrieť',\n  dataIterator: {\n    noResultsText: 'Neboli nájdené žiadne záznamy',\n    loadingText: 'Načítavam položky...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Počet riadkov na stránku:',\n    ariaLabel: {\n      sortDescending: 'Zoradené zostupne.',\n      sortAscending: 'Zoradené vzostupne.',\n      sortNone: 'Nezoradené.',\n      activateNone: 'Aktivujte na zrušenie triedenia.',\n      activateDescending: 'Aktivujte na zoradenie zostupne.',\n      activateAscending: 'Aktivujte na zoradenie vzostupne.'\n    },\n    sortBy: 'Zoradiť podľa'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Počet položiek na stránku:',\n    itemsPerPageAll: 'Všetko',\n    nextPage: 'Ďalšia stránka',\n    prevPage: 'Predchádzajúca stránka',\n    firstPage: 'Prvá stránka',\n    lastPage: 'Posledná stránka',\n    pageText: '{0}–{1} z {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} vybrané',\n    nextMonthAriaLabel: 'Ďalší mesiac',\n    nextYearAriaLabel: 'Ďalší rok',\n    prevMonthAriaLabel: 'Predchádzajúci mesiac',\n    prevYearAriaLabel: 'Predchádzajúci rok'\n  },\n  noDataText: 'Nie sú dostupné žiadne dáta',\n  carousel: {\n    prev: 'Predchádzajúci obrázok',\n    next: 'Další obrázok',\n    ariaLabel: {\n      delimiter: 'Snímka {0} z {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} ďalších'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} súborov',\n    counterSize: '{0} súborov ({1} celkom)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigácia stránkovania',\n      next: 'Ďalšia stránka',\n      previous: 'Predchádzajúca stránka',\n      page: 'Ísť na stránku {0}',\n      currentPage: 'Aktuálna stránka, stránka {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Hodnotenie {0} z {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/sl.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/sl.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Značka',\n  close: 'Zapri',\n  dataIterator: {\n    noResultsText: 'Ni iskanega zapisa',\n    loadingText: 'Nalaganje...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Vrstic na stran:',\n    ariaLabel: {\n      sortDescending: 'Razvrščeno padajoče.',\n      sortAscending: 'Razvrščeno naraščajoče.',\n      sortNone: 'Ni razvrščeno.',\n      activateNone: 'Aktivirajte za odstranitev razvrščanja.',\n      activateDescending: 'Aktivirajte za padajoče razvrščanje.',\n      activateAscending: 'Aktivirajte za naraščajoče razvrščanje.'\n    },\n    sortBy: 'Razvrsti po'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Predmetov na stran:',\n    itemsPerPageAll: 'Vse',\n    nextPage: 'Naslednja stran',\n    prevPage: 'Prejšnja stran',\n    firstPage: 'Prva stran',\n    lastPage: 'Zadnja stran',\n    pageText: '{0}-{1} od {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} izbrano/-ih',\n    nextMonthAriaLabel: 'Naslednji mesec',\n    nextYearAriaLabel: 'Naslednje leto',\n    prevMonthAriaLabel: 'Prejšnji mesec',\n    prevYearAriaLabel: 'Prejšnje leto'\n  },\n  noDataText: 'Ni podatkov',\n  carousel: {\n    prev: 'Prejšnji prikaz',\n    next: 'Naslednji prikaz',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'Še {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} datotek',\n    counterSize: '{0} datotek ({1} skupno)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigacija po strani po strani',\n      next: 'Naslednja stran',\n      previous: 'Prejšnja stran',\n      page: 'Pojdi na stran {0}',\n      currentPage: 'Trenutna stran, stran {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/sr-Cyrl.ts\":\n/*!*******************************!*\\\n  !*** ./src/locale/sr-Cyrl.ts ***!\n  \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Значка',\n  close: 'Затвори',\n  dataIterator: {\n    noResultsText: 'Ни један запис није пронађен',\n    loadingText: 'Учитавање ставке...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Редова по страници:',\n    ariaLabel: {\n      sortDescending: 'Сортирано опадајуће.',\n      sortAscending: 'Сортирано растуће.',\n      sortNone: 'Није сортирано.',\n      activateNone: 'Кликни да уклониш сортирање.',\n      activateDescending: 'Кликни да сортираш опадајуће.',\n      activateAscending: 'Кликни да сортираш растуће.'\n    },\n    sortBy: 'Сортирај по'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Ставки по страници:',\n    itemsPerPageAll: 'Све',\n    nextPage: 'Следећа страница',\n    prevPage: 'Претходна страница',\n    firstPage: 'Прва страница',\n    lastPage: 'Последња страница',\n    pageText: '{0}-{1} од {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} одабрано',\n    nextMonthAriaLabel: 'Следећег месеца',\n    nextYearAriaLabel: 'Следеће године',\n    prevMonthAriaLabel: 'Претходни месец',\n    prevYearAriaLabel: 'Претходна година'\n  },\n  noDataText: 'Нема доступних података',\n  carousel: {\n    prev: 'Претходна слика',\n    next: 'Следећа слика',\n    ariaLabel: {\n      delimiter: 'Слика {0} од {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} више'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} фајлова',\n    counterSize: '{0} фајлова ({1} укупно)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Навигација страницама',\n      next: 'Следећа страница',\n      previous: 'Претходна страница',\n      page: 'Иди на страну {0}',\n      currentPage: 'Тренутна страница, страница {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Оцена {0} од {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/sr-Latn.ts\":\n/*!*******************************!*\\\n  !*** ./src/locale/sr-Latn.ts ***!\n  \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Značka',\n  close: 'Zatvori',\n  dataIterator: {\n    noResultsText: 'Nijedan zapis nije pronađen',\n    loadingText: 'Učitavanje stavke...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Redova po stranici:',\n    ariaLabel: {\n      sortDescending: 'Sortirano opadajuće.',\n      sortAscending: 'Sortirano rastuće.',\n      sortNone: 'Nije sortirano.',\n      activateNone: 'Klikni da ukloniš sortiranje.',\n      activateDescending: 'Klikni da sortiraš opadajuće.',\n      activateAscending: 'Klikni da sortiraš rastuće.'\n    },\n    sortBy: 'Sortiraj po'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Stavki po stranici:',\n    itemsPerPageAll: 'Sve',\n    nextPage: 'Sledeća stranica',\n    prevPage: 'Prethodna stranica',\n    firstPage: 'Prva stranica',\n    lastPage: 'Poslednja stranica',\n    pageText: '{0}-{1} od {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} odabrano',\n    nextMonthAriaLabel: 'Sledećeg meseca',\n    nextYearAriaLabel: 'Sledeće godine',\n    prevMonthAriaLabel: 'Prethodni mesec',\n    prevYearAriaLabel: 'Prethodna godina'\n  },\n  noDataText: 'Nema dostupnih podataka',\n  carousel: {\n    prev: 'Prethodna slika',\n    next: 'Sledeća slika',\n    ariaLabel: {\n      delimiter: 'Slika {0} od {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} više'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} fajlova',\n    counterSize: '{0} fajlova ({1} ukupno)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigacija stranicama',\n      next: 'Sledeća stranica',\n      previous: 'Prethodna stranica',\n      page: 'Idi na stranu {0}',\n      currentPage: 'Trenutna stranica, stranica {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Ocena {0} od {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/sv.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/sv.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Bricka',\n  close: 'Stäng',\n  dataIterator: {\n    noResultsText: 'Inga poster funna',\n    loadingText: 'Laddar data...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rader per sida:',\n    ariaLabel: {\n      sortDescending: 'Sorterat fallande.',\n      sortAscending: 'Sorterat stigande.',\n      sortNone: 'Osorterat.',\n      activateNone: 'Aktivera för att ta bort sortering.',\n      activateDescending: 'Aktivera för sortering fallande.',\n      activateAscending: 'Aktivera för sortering stigande.'\n    },\n    sortBy: 'Sortera efter'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Objekt per sida:',\n    itemsPerPageAll: 'Alla',\n    nextPage: 'Nästa sida',\n    prevPage: 'Föregående sida',\n    firstPage: 'Första sidan',\n    lastPage: 'Sista sidan',\n    pageText: '{0}-{1} av {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} markerade',\n    nextMonthAriaLabel: 'Nästa månad',\n    nextYearAriaLabel: 'Nästa år',\n    prevMonthAriaLabel: 'Förra månaden',\n    prevYearAriaLabel: 'Förra året'\n  },\n  noDataText: 'Ingen data tillgänglig',\n  carousel: {\n    prev: 'Föregående vy',\n    next: 'Nästa vy',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} fler'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} filer',\n    counterSize: '{0} filer (av {1} totalt)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: 'Nästa sida',\n      previous: 'Föregående sida',\n      page: 'Gå till sidan {0}',\n      currentPage: 'Aktuell sida, sida {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/th.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/th.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'สัญลักษณ์',\n  close: 'ปิด',\n  dataIterator: {\n    noResultsText: 'ไม่พบข้อมูลที่ค้นหา',\n    loadingText: 'กำลังโหลดข้อมูล...'\n  },\n  dataTable: {\n    itemsPerPageText: 'แถวต่อหน้า:',\n    ariaLabel: {\n      sortDescending: 'เรียงจากมากไปน้อยอยู่',\n      sortAscending: 'เรียงจากน้อยไปมากอยู่',\n      sortNone: 'ไม่ได้เรียงลำดับ',\n      activateNone: 'กดเพื่อปิดการเรียงลำดับ',\n      activateDescending: 'กดเพื่อเรียงจากมากไปน้อย',\n      activateAscending: 'กดเพื่อเรียงจากน้อยไปมาก'\n    },\n    sortBy: 'เรียงตาม'\n  },\n  dataFooter: {\n    itemsPerPageText: 'รายการต่อหน้า:',\n    itemsPerPageAll: 'ทั้งหมด',\n    nextPage: 'หน้าต่อไป',\n    prevPage: 'หน้าที่แล้ว',\n    firstPage: 'หน้าแรก',\n    lastPage: 'หน้าสุดท้าย',\n    pageText: '{0}-{1} จาก {2}'\n  },\n  datePicker: {\n    itemsSelected: 'เลือก {0} วัน',\n    nextMonthAriaLabel: 'เดือนถัดไป',\n    nextYearAriaLabel: 'ปีถัดไป',\n    prevMonthAriaLabel: 'เดือนก่อนหน้า',\n    prevYearAriaLabel: 'ปีก่อนหน้า'\n  },\n  noDataText: 'ไม่มีข้อมูล',\n  carousel: {\n    prev: 'ภาพก่อนหน้า',\n    next: 'ภาพถัดไป',\n    ariaLabel: {\n      delimiter: 'ภาพสไลด์ที่ {0} จาก {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'มีอีก {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} ไฟล์',\n    counterSize: '{0} ไฟล์ (รวม {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'การนำทางไปยังหน้า',\n      next: 'หน้าต่อไป',\n      previous: 'หน้าที่แล้ว',\n      page: 'ไปที่หน้า {0}',\n      currentPage: 'หน้าปัจจุบัน (หน้า {0})'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/tr.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/tr.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'rozet',\n  close: 'Kapat',\n  dataIterator: {\n    noResultsText: 'Eşleşen veri bulunamadı',\n    loadingText: 'Yükleniyor... Lütfen bekleyin.'\n  },\n  dataTable: {\n    itemsPerPageText: 'Sayfa başına satır:',\n    ariaLabel: {\n      sortDescending: 'Z den A ya sıralı.',\n      sortAscending: 'A dan Z ye sıralı.',\n      sortNone: 'Sıralı değil. ',\n      activateNone: 'Sıralamayı kaldırmak için etkinleştir.',\n      activateDescending: 'Z den A ya sıralamak için etkinleştir.',\n      activateAscending: 'A dan Z ye sıralamak için etkinleştir.'\n    },\n    sortBy: 'Sırala'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Sayfa başına satır:',\n    itemsPerPageAll: 'Hepsi',\n    nextPage: 'Sonraki sayfa',\n    prevPage: 'Önceki sayfa',\n    firstPage: 'İlk sayfa',\n    lastPage: 'Son sayfa',\n    pageText: '{0} - {1} arası, Toplam: {2} kayıt'\n  },\n  datePicker: {\n    itemsSelected: '{0} öge seçildi',\n    nextMonthAriaLabel: 'Gelecek ay',\n    nextYearAriaLabel: 'Gelecek yıl',\n    prevMonthAriaLabel: 'Geçtiğimiz ay',\n    prevYearAriaLabel: 'Geçen yıl'\n  },\n  noDataText: 'Bu görünümde veri yok.',\n  carousel: {\n    prev: 'Önceki görsel',\n    next: 'Sonraki görsel',\n    ariaLabel: {\n      delimiter: 'Galeri sayfa {0} / {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} tane daha'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} dosya',\n    counterSize: '{0} dosya (toplamda {1})'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Sayfalandırma Navigasyonu',\n      next: 'Sonraki sayfa',\n      previous: 'Önceki sayfa',\n      page: 'Sayfaya git {0}',\n      currentPage: 'Geçerli Sayfa, Sayfa {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/uk.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/uk.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Знак',\n  close: 'Закрити',\n  dataIterator: {\n    noResultsText: 'В результаті пошуку нічого не знайдено',\n    loadingText: 'Завантаження...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Рядків на сторінці:',\n    ariaLabel: {\n      sortDescending: 'Відсортовано за спаданням.',\n      sortAscending: 'Відсортовано за зростанням.',\n      sortNone: 'Не відсортовано.',\n      activateNone: 'Активувати, щоб видалити сортування.',\n      activateDescending: 'Активувати, щоб відсортувати за спаданням.',\n      activateAscending: 'Активувати, щоб відсортувати за зростанням.'\n    },\n    sortBy: 'Відсортувати за'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Елементів на сторінці:',\n    itemsPerPageAll: 'Всі',\n    nextPage: 'Наступна сторінка',\n    prevPage: 'Попередня сторінка',\n    firstPage: 'Перша сторінка',\n    lastPage: 'Остання сторінка',\n    pageText: '{0}-{1} з {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} вибрано',\n    nextMonthAriaLabel: 'Наступного місяця',\n    nextYearAriaLabel: 'Наступного року',\n    prevMonthAriaLabel: 'Попередній місяць',\n    prevYearAriaLabel: 'Попередній рік'\n  },\n  noDataText: 'Немає даних для відображення',\n  carousel: {\n    prev: 'Попередній слайд',\n    next: 'Наступий слайд',\n    ariaLabel: {\n      delimiter: 'Слайд {0} з {1}'\n    }\n  },\n  calendar: {\n    moreEvents: 'Ще {0}'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} файлів',\n    counterSize: '{0} файлів ({1} загалом)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Навігація по сторінках',\n      next: 'Наступна сторінка',\n      previous: 'Попередня сторінка',\n      page: 'Перейти на сторінку {0}',\n      currentPage: 'Поточна сторінка, Сторінка {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/vi.ts\":\n/*!**************************!*\\\n  !*** ./src/locale/vi.ts ***!\n  \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: 'Huy hiệu',\n  close: 'Đóng',\n  dataIterator: {\n    noResultsText: 'Không tìm thấy kết quả nào',\n    loadingText: 'Đang tải...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Số hàng mỗi trang:',\n    ariaLabel: {\n      sortDescending: 'Sắp xếp giảm dần.',\n      sortAscending: 'Sắp xếp tăng dần.',\n      sortNone: 'Không sắp xếp.',\n      activateNone: 'Kích hoạt để bỏ sắp xếp.',\n      activateDescending: 'Kích hoạt để sắp xếp giảm dần.',\n      activateAscending: 'Kích hoạt để sắp xếp tăng dần.'\n    },\n    sortBy: 'Sắp xếp'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Số mục mỗi trang:',\n    itemsPerPageAll: 'Toàn bộ',\n    nextPage: 'Trang tiếp theo',\n    prevPage: 'Trang trước',\n    firstPage: 'Trang đầu',\n    lastPage: 'Trang cuối',\n    pageText: '{0}-{1} trên {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} được chọn',\n    nextMonthAriaLabel: 'Tháng sau',\n    nextYearAriaLabel: 'Năm sau',\n    prevMonthAriaLabel: 'Tháng trước',\n    prevYearAriaLabel: 'Năm trước'\n  },\n  noDataText: 'Không có dữ liệu',\n  carousel: {\n    prev: 'Ảnh tiếp theo',\n    next: 'Ảnh trước',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} trên {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} nữa'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} tệp',\n    counterSize: '{0} tệp (tổng cộng {1})'\n  },\n  timePicker: {\n    am: 'SA',\n    pm: 'CH'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Điều hướng phân trang',\n      next: 'Trang tiếp theo',\n      previous: 'Trang trước',\n      page: 'Đến trang {0}',\n      currentPage: 'Trang hiện tại, Trang {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Đánh giá {0} trên {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/zh-Hans.ts\":\n/*!*******************************!*\\\n  !*** ./src/locale/zh-Hans.ts ***!\n  \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: '徽章',\n  close: '关闭',\n  dataIterator: {\n    noResultsText: '没有符合条件的结果',\n    loadingText: '加载中……'\n  },\n  dataTable: {\n    itemsPerPageText: '每页数目：',\n    ariaLabel: {\n      sortDescending: '：降序排列。',\n      sortAscending: '：升序排列。',\n      sortNone: '：未排序。',\n      activateNone: '点击以移除排序。',\n      activateDescending: '点击以降序排列。',\n      activateAscending: '点击以升序排列。'\n    },\n    sortBy: '排序方式'\n  },\n  dataFooter: {\n    itemsPerPageText: '每页数目：',\n    itemsPerPageAll: '全部',\n    nextPage: '下一页',\n    prevPage: '上一页',\n    firstPage: '首页',\n    lastPage: '尾页',\n    pageText: '{0}-{1} 共 {2}'\n  },\n  datePicker: {\n    itemsSelected: '已选择 {0}',\n    nextMonthAriaLabel: '下个月',\n    nextYearAriaLabel: '明年',\n    prevMonthAriaLabel: '前一个月',\n    prevYearAriaLabel: '前一年'\n  },\n  noDataText: '没有数据',\n  carousel: {\n    prev: '上一张',\n    next: '下一张',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '还有 {0} 项'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} 个文件',\n    counterSize: '{0} 个文件（共 {1}）'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: '分页导航',\n      next: '下一页',\n      previous: '上一页',\n      page: '转到页面 {0}',\n      currentPage: '当前页 {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/locale/zh-Hant.ts\":\n/*!*******************************!*\\\n  !*** ./src/locale/zh-Hant.ts ***!\n  \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  badge: '徽章',\n  close: '關閉',\n  dataIterator: {\n    noResultsText: '沒有符合條件的結果',\n    loadingText: '讀取中...'\n  },\n  dataTable: {\n    itemsPerPageText: '每頁列數：',\n    ariaLabel: {\n      sortDescending: '：降序排列。',\n      sortAscending: '：升序排列。',\n      sortNone: '無排序方式。點擊以升序排列。',\n      activateNone: '點擊以移除排序方式。',\n      activateDescending: '點擊以降序排列。',\n      activateAscending: '點擊以移除排序方式。'\n    },\n    sortBy: '排序方式'\n  },\n  dataFooter: {\n    itemsPerPageText: '每頁項目：',\n    itemsPerPageAll: '全部',\n    nextPage: '下一頁',\n    prevPage: '上一頁',\n    firstPage: '第一頁',\n    lastPage: '最後頁',\n    pageText: '{2} 條中的 {0}~{1} 條'\n  },\n  datePicker: {\n    itemsSelected: '已選擇 {0}',\n    nextMonthAriaLabel: '下個月',\n    nextYearAriaLabel: '明年',\n    prevMonthAriaLabel: '前一個月',\n    prevYearAriaLabel: '前一年'\n  },\n  noDataText: '沒有資料',\n  carousel: {\n    prev: '上一張',\n    next: '下一張',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '還有其他 {0} 項'\n  },\n  input: {\n    clear: 'Clear {0}',\n    prependAction: '{0} prepended action',\n    appendAction: '{0} appended action'\n  },\n  fileInput: {\n    counter: '{0} 個檔案',\n    counterSize: '{0} 個檔案（共 {1}）'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: '分頁導航',\n      next: '下一頁',\n      previous: '上一頁',\n      page: '轉到頁面 {0}',\n      currentPage: '當前頁 {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  },\n  loading: 'Loading...'\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/activatable/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/mixins/activatable/index.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _delayable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../delayable */ \"./src/mixins/delayable/index.ts\");\n/* harmony import */ var _toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../toggleable */ \"./src/mixins/toggleable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}; // Mixins\n\n\n\n // Utilities\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_delayable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _toggleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'activatable',\n  props: {\n    activator: {\n      default: null,\n      validator: function validator(val) {\n        return ['string', 'object'].includes(_typeof(val));\n      }\n    },\n    disabled: Boolean,\n    internalActivator: Boolean,\n    openOnClick: {\n      type: Boolean,\n      default: true\n    },\n    openOnHover: Boolean,\n    openOnFocus: Boolean\n  },\n  data: function data() {\n    return {\n      // Do not use this directly, call getActivator() instead\n      activatorElement: null,\n      activatorNode: [],\n      events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n      listeners: {}\n    };\n  },\n  watch: {\n    activator: 'resetActivator',\n    openOnFocus: 'resetActivator',\n    openOnHover: 'resetActivator'\n  },\n  mounted: function mounted() {\n    var slotType = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlotType\"])(this, 'activator', true);\n\n    if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"consoleError\"])(\"The activator slot must be bound, try '<template v-slot:activator=\\\"{ on }\\\"><v-btn v-on=\\\"on\\\">'\", this);\n    }\n\n    this.addActivatorEvents();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.removeActivatorEvents();\n  },\n  methods: {\n    addActivatorEvents: function addActivatorEvents() {\n      var e_1, _a;\n\n      if (!this.activator || this.disabled || !this.getActivator()) return;\n      this.listeners = this.genActivatorListeners();\n      var keys = Object.keys(this.listeners);\n\n      try {\n        for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {\n          var key = keys_1_1.value;\n          this.getActivator().addEventListener(key, this.listeners[key]);\n        }\n      } catch (e_1_1) {\n        e_1 = {\n          error: e_1_1\n        };\n      } finally {\n        try {\n          if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);\n        } finally {\n          if (e_1) throw e_1.error;\n        }\n      }\n    },\n    genActivator: function genActivator() {\n      var node = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'activator', Object.assign(this.getValueProxy(), {\n        on: this.genActivatorListeners(),\n        attrs: this.genActivatorAttributes()\n      })) || [];\n      this.activatorNode = node;\n      return node;\n    },\n    genActivatorAttributes: function genActivatorAttributes() {\n      return {\n        role: this.openOnClick && !this.openOnHover ? 'button' : undefined,\n        'aria-haspopup': true,\n        'aria-expanded': String(this.isActive)\n      };\n    },\n    genActivatorListeners: function genActivatorListeners() {\n      var _this = this;\n\n      if (this.disabled) return {};\n      var listeners = {};\n\n      if (this.openOnHover) {\n        listeners.mouseenter = function (e) {\n          _this.getActivator(e);\n\n          _this.runDelay('open');\n        };\n\n        listeners.mouseleave = function (e) {\n          _this.getActivator(e);\n\n          _this.runDelay('close');\n        };\n      } else if (this.openOnClick) {\n        listeners.click = function (e) {\n          var activator = _this.getActivator(e);\n\n          if (activator) activator.focus();\n          e.stopPropagation();\n          _this.isActive = !_this.isActive;\n        };\n      }\n\n      if (this.openOnFocus) {\n        listeners.focus = function (e) {\n          _this.getActivator(e);\n\n          e.stopPropagation();\n          _this.isActive = !_this.isActive;\n        };\n      }\n\n      return listeners;\n    },\n    getActivator: function getActivator(e) {\n      // If we've already fetched the activator, re-use\n      if (this.activatorElement) return this.activatorElement;\n      var activator = null;\n\n      if (this.activator) {\n        var target = this.internalActivator ? this.$el : document;\n\n        if (typeof this.activator === 'string') {\n          // Selector\n          activator = target.querySelector(this.activator);\n        } else if (this.activator.$el) {\n          // Component (ref)\n          activator = this.activator.$el;\n        } else {\n          // HTMLElement | Element\n          activator = this.activator;\n        }\n      } else if (this.activatorNode.length === 1 || this.activatorNode.length && !e) {\n        // Use the contents of the activator slot\n        // There's either only one element in it or we\n        // don't have a click event to use as a last resort\n        var vm = this.activatorNode[0].componentInstance;\n\n        if (vm && vm.$options.mixins && //                         Activatable is indirectly used via Menuable\n        vm.$options.mixins.some(function (m) {\n          return m.options && ['activatable', 'menuable'].includes(m.options.name);\n        })) {\n          // Activator is actually another activatible component, use its activator (#8846)\n          activator = vm.getActivator();\n        } else {\n          activator = this.activatorNode[0].elm;\n        }\n      } else if (e) {\n        // Activated by a click or focus event\n        activator = e.currentTarget || e.target;\n      } // The activator should only be a valid element (Ignore comments and text nodes)\n\n\n      this.activatorElement = (activator === null || activator === void 0 ? void 0 : activator.nodeType) === Node.ELEMENT_NODE ? activator : null;\n      return this.activatorElement;\n    },\n    getContentSlot: function getContentSlot() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getSlot\"])(this, 'default', this.getValueProxy(), true);\n    },\n    getValueProxy: function getValueProxy() {\n      var self = this;\n      return {\n        get value() {\n          return self.isActive;\n        },\n\n        set value(isActive) {\n          self.isActive = isActive;\n        }\n\n      };\n    },\n    removeActivatorEvents: function removeActivatorEvents() {\n      var e_2, _a;\n\n      if (!this.activator || !this.activatorElement) return;\n      var keys = Object.keys(this.listeners);\n\n      try {\n        for (var keys_2 = __values(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {\n          var key = keys_2_1.value;\n          this.activatorElement.removeEventListener(key, this.listeners[key]);\n        }\n      } catch (e_2_1) {\n        e_2 = {\n          error: e_2_1\n        };\n      } finally {\n        try {\n          if (keys_2_1 && !keys_2_1.done && (_a = keys_2.return)) _a.call(keys_2);\n        } finally {\n          if (e_2) throw e_2.error;\n        }\n      }\n\n      this.listeners = {};\n    },\n    resetActivator: function resetActivator() {\n      this.removeActivatorEvents();\n      this.activatorElement = null;\n      this.getActivator();\n      this.addActivatorEvents();\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/applicationable/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/mixins/applicationable/index.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return applicationable; });\n/* harmony import */ var _positionable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n // Util\n\n\nfunction applicationable(value, events) {\n  if (events === void 0) {\n    events = [];\n  }\n  /* @vue/component */\n\n\n  return Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Object(_positionable__WEBPACK_IMPORTED_MODULE_0__[\"factory\"])(['absolute', 'fixed'])).extend({\n    name: 'applicationable',\n    props: {\n      app: Boolean\n    },\n    computed: {\n      applicationProperty: function applicationProperty() {\n        return value;\n      }\n    },\n    watch: {\n      // If previous value was app\n      // reset the provided prop\n      app: function app(x, prev) {\n        prev ? this.removeApplication(true) : this.callUpdate();\n      },\n      applicationProperty: function applicationProperty(newVal, oldVal) {\n        this.$vuetify.application.unregister(this._uid, oldVal);\n      }\n    },\n    activated: function activated() {\n      this.callUpdate();\n    },\n    created: function created() {\n      for (var i = 0, length = events.length; i < length; i++) {\n        this.$watch(events[i], this.callUpdate);\n      }\n\n      this.callUpdate();\n    },\n    mounted: function mounted() {\n      this.callUpdate();\n    },\n    deactivated: function deactivated() {\n      this.removeApplication();\n    },\n    destroyed: function destroyed() {\n      this.removeApplication();\n    },\n    methods: {\n      callUpdate: function callUpdate() {\n        if (!this.app) return;\n        this.$vuetify.application.register(this._uid, this.applicationProperty, this.updateApplication());\n      },\n      removeApplication: function removeApplication(force) {\n        if (force === void 0) {\n          force = false;\n        }\n\n        if (!force && !this.app) return;\n        this.$vuetify.application.unregister(this._uid, this.applicationProperty);\n      },\n      updateApplication: function updateApplication() {\n        return 0;\n      }\n    }\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/mixins/binds-attrs/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/mixins/binds-attrs/index.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher(property) {\n  return function (val, oldVal) {\n    for (var attr in oldVal) {\n      if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n        this.$delete(this.$data[property], attr);\n      }\n    }\n\n    for (var attr in val) {\n      this.$set(this.$data[property], attr, val[attr]);\n    }\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  data: function data() {\n    return {\n      attrs$: {},\n      listeners$: {}\n    };\n  },\n  created: function created() {\n    // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n    // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n    this.$watch('$attrs', makeWatcher('attrs$'), {\n      immediate: true\n    });\n    this.$watch('$listeners', makeWatcher('listeners$'), {\n      immediate: true\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/bootable/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/mixins/bootable/index.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n// Utilities\n // Types\n\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend().extend({\n  name: 'bootable',\n  props: {\n    eager: Boolean\n  },\n  data: function data() {\n    return {\n      isBooted: false\n    };\n  },\n  computed: {\n    hasContent: function hasContent() {\n      return this.isBooted || this.eager || this.isActive;\n    }\n  },\n  watch: {\n    isActive: function isActive() {\n      this.isBooted = true;\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if ('lazy' in this.$attrs) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_0__[\"removed\"])('lazy', this);\n    }\n  },\n  methods: {\n    showLazyContent: function showLazyContent(content) {\n      return this.hasContent && content ? content() : [this.$createElement()];\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/button-group/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/mixins/button-group/index.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n// Extensions\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseItemGroup\"].extend({\n  name: 'button-group',\n  provide: function provide() {\n    return {\n      btnToggle: this\n    };\n  },\n  computed: {\n    classes: function classes() {\n      return _components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseItemGroup\"].options.computed.classes.call(this);\n    }\n  },\n  methods: {\n    // Isn't being passed down through types\n    genData: _components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseItemGroup\"].options.methods.genData\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/colorable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/colorable/index.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_colorUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/colorUtils */ \"./src/util/colorUtils.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'colorable',\n  props: {\n    color: String\n  },\n  methods: {\n    setBackgroundColor: function setBackgroundColor(color, data) {\n      var _a;\n\n      if (data === void 0) {\n        data = {};\n      }\n\n      if (typeof data.style === 'string') {\n        // istanbul ignore next\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleError\"])('style must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (typeof data.class === 'string') {\n        // istanbul ignore next\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleError\"])('class must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_2__[\"isCssColor\"])(color)) {\n        data.style = __assign(__assign({}, data.style), {\n          'background-color': \"\" + color,\n          'border-color': \"\" + color\n        });\n      } else if (color) {\n        data.class = __assign(__assign({}, data.class), (_a = {}, _a[color] = true, _a));\n      }\n\n      return data;\n    },\n    setTextColor: function setTextColor(color, data) {\n      var _a;\n\n      if (data === void 0) {\n        data = {};\n      }\n\n      if (typeof data.style === 'string') {\n        // istanbul ignore next\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleError\"])('style must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (typeof data.class === 'string') {\n        // istanbul ignore next\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleError\"])('class must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_2__[\"isCssColor\"])(color)) {\n        data.style = __assign(__assign({}, data.style), {\n          color: \"\" + color,\n          'caret-color': \"\" + color\n        });\n      } else if (color) {\n        var _b = __read(color.toString().trim().split(' ', 2), 2),\n            colorName = _b[0],\n            colorModifier = _b[1];\n\n        data.class = __assign(__assign({}, data.class), (_a = {}, _a[colorName + '--text'] = true, _a));\n\n        if (colorModifier) {\n          data.class['text--' + colorModifier] = true;\n        }\n      }\n\n      return data;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/comparable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/comparable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'comparable',\n  props: {\n    valueComparator: {\n      type: Function,\n      default: _util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"deepEqual\"]\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/delayable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/delayable/index.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n  name: 'delayable',\n  props: {\n    openDelay: {\n      type: [Number, String],\n      default: 0\n    },\n    closeDelay: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n  data: function data() {\n    return {\n      openTimeout: undefined,\n      closeTimeout: undefined\n    };\n  },\n  methods: {\n    /**\n     * Clear any pending delay timers from executing\n     */\n    clearDelay: function clearDelay() {\n      clearTimeout(this.openTimeout);\n      clearTimeout(this.closeTimeout);\n    },\n\n    /**\n     * Runs callback after a specified delay\n     */\n    runDelay: function runDelay(type, cb) {\n      var _this = this;\n\n      this.clearDelay();\n      var delay = parseInt(this[type + \"Delay\"], 10);\n      this[type + \"Timeout\"] = setTimeout(cb || function () {\n        _this.isActive = {\n          open: true,\n          close: false\n        }[type];\n      }, delay);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/dependent/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/dependent/index.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\nfunction searchChildren(children) {\n  var results = [];\n\n  for (var index = 0; index < children.length; index++) {\n    var child = children[index];\n\n    if (child.isActive && child.isDependent) {\n      results.push(child);\n    } else {\n      results.push.apply(results, __spreadArray([], __read(searchChildren(child.$children)), false));\n    }\n  }\n\n  return results;\n}\n/* @vue/component */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().extend({\n  name: 'dependent',\n  data: function data() {\n    return {\n      closeDependents: true,\n      isActive: false,\n      isDependent: true\n    };\n  },\n  watch: {\n    isActive: function isActive(val) {\n      if (val) return;\n      var openDependents = this.getOpenDependents();\n\n      for (var index = 0; index < openDependents.length; index++) {\n        openDependents[index].isActive = false;\n      }\n    }\n  },\n  methods: {\n    getOpenDependents: function getOpenDependents() {\n      if (this.closeDependents) return searchChildren(this.$children);\n      return [];\n    },\n    getOpenDependentElements: function getOpenDependentElements() {\n      var result = [];\n      var openDependents = this.getOpenDependents();\n\n      for (var index = 0; index < openDependents.length; index++) {\n        result.push.apply(result, __spreadArray([], __read(openDependents[index].getClickableDependentElements()), false));\n      }\n\n      return result;\n    },\n    getClickableDependentElements: function getClickableDependentElements() {\n      var result = [this.$el];\n      if (this.$refs.content) result.push(this.$refs.content);\n      if (this.overlay) result.push(this.overlay.$el);\n      result.push.apply(result, __spreadArray([], __read(this.getOpenDependentElements()), false));\n      return result;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/detachable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/detachable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _bootable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../bootable */ \"./src/mixins/bootable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Mixins\n // Utilities\n\n\n\n\n\nfunction validateAttachTarget(val) {\n  var type = _typeof(val);\n\n  if (type === 'boolean' || type === 'string') return true;\n  return val.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction removeActivator(activator) {\n  activator.forEach(function (node) {\n    node.elm && node.elm.parentNode && node.elm.parentNode.removeChild(node.elm);\n  });\n}\n/* @vue/component */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_bootable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n  name: 'detachable',\n  props: {\n    attach: {\n      default: false,\n      validator: validateAttachTarget\n    },\n    contentClass: {\n      type: String,\n      default: ''\n    }\n  },\n  data: function data() {\n    return {\n      activatorNode: null,\n      hasDetached: false\n    };\n  },\n  watch: {\n    attach: function attach() {\n      this.hasDetached = false;\n      this.initDetach();\n    },\n    hasContent: function hasContent() {\n      this.$nextTick(this.initDetach);\n    }\n  },\n  beforeMount: function beforeMount() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      if (_this.activatorNode) {\n        var activator = Array.isArray(_this.activatorNode) ? _this.activatorNode : [_this.activatorNode];\n        activator.forEach(function (node) {\n          if (!node.elm) return;\n          if (!_this.$el.parentNode) return;\n          var target = _this.$el === _this.$el.parentNode.firstChild ? _this.$el : _this.$el.nextSibling;\n\n          _this.$el.parentNode.insertBefore(node.elm, target);\n        });\n      }\n    });\n  },\n  mounted: function mounted() {\n    this.hasContent && this.initDetach();\n  },\n  deactivated: function deactivated() {\n    this.isActive = false;\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (this.$refs.content && this.$refs.content.parentNode) {\n      this.$refs.content.parentNode.removeChild(this.$refs.content);\n    }\n  },\n  destroyed: function destroyed() {\n    var _this = this;\n\n    if (this.activatorNode) {\n      var activator_1 = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];\n\n      if (this.$el.isConnected) {\n        // Component has been destroyed but the element still exists, we must be in a transition\n        // Wait for the transition to finish before cleaning up the detached activator\n        var observer_1 = new MutationObserver(function (list) {\n          if (list.some(function (record) {\n            return Array.from(record.removedNodes).includes(_this.$el);\n          })) {\n            observer_1.disconnect();\n            removeActivator(activator_1);\n          }\n        });\n        observer_1.observe(this.$el.parentNode, {\n          subtree: false,\n          childList: true\n        });\n      } else {\n        removeActivator(activator_1);\n      }\n    }\n  },\n  methods: {\n    getScopeIdAttrs: function getScopeIdAttrs() {\n      var _a;\n\n      var scopeId = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(this.$vnode, 'context.$options._scopeId');\n      return scopeId && (_a = {}, _a[scopeId] = '', _a);\n    },\n    initDetach: function initDetach() {\n      if (this._isDestroyed || !this.$refs.content || this.hasDetached || // Leave menu in place if attached\n      // and dev has not changed target\n      this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n      this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n      this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n      ) return;\n      var target;\n\n      if (this.attach === false) {\n        // Default, detach to app\n        target = document.querySelector('[data-app]');\n      } else if (typeof this.attach === 'string') {\n        // CSS selector\n        target = document.querySelector(this.attach);\n      } else {\n        // DOM Element\n        target = this.attach;\n      }\n\n      if (!target) {\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])(\"Unable to locate target \" + (this.attach || '[data-app]'), this);\n        return;\n      }\n\n      target.appendChild(this.$refs.content);\n      this.hasDetached = true;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/elevatable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/elevatable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'elevatable',\n  props: {\n    elevation: [Number, String]\n  },\n  computed: {\n    computedElevation: function computedElevation() {\n      return this.elevation;\n    },\n    elevationClasses: function elevationClasses() {\n      var _a;\n\n      var elevation = this.computedElevation;\n      if (elevation == null) return {};\n      if (isNaN(parseInt(elevation))) return {};\n      return _a = {}, _a[\"elevation-\" + this.elevation] = true, _a;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/filterable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/filterable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'filterable',\n  props: {\n    noDataText: {\n      type: String,\n      default: '$vuetify.noDataText'\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/groupable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/groupable/index.ts ***!\n  \\***************************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var _registrable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registrable */ \"./src/mixins/registrable/index.ts\");\n// Mixins\n\nfunction factory(namespace, child, parent) {\n  return Object(_registrable__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(namespace, child, parent).extend({\n    name: 'groupable',\n    props: {\n      activeClass: {\n        type: String,\n        default: function _default() {\n          if (!this[namespace]) return undefined;\n          return this[namespace].activeClass;\n        }\n      },\n      disabled: Boolean\n    },\n    data: function data() {\n      return {\n        isActive: false\n      };\n    },\n    computed: {\n      groupClasses: function groupClasses() {\n        var _a;\n\n        if (!this.activeClass) return {};\n        return _a = {}, _a[this.activeClass] = this.isActive, _a;\n      }\n    },\n    created: function created() {\n      this[namespace] && this[namespace].register(this);\n    },\n    beforeDestroy: function beforeDestroy() {\n      this[namespace] && this[namespace].unregister(this);\n    },\n    methods: {\n      toggle: function toggle(e) {\n        if (this.disabled && e) {\n          // Prevent keyboard actions\n          // from children elements\n          // within disabled tabs\n          e.preventDefault();\n          return;\n        }\n\n        this.$emit('change');\n      }\n    }\n  });\n}\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\n\nvar Groupable = factory('itemGroup');\n/* harmony default export */ __webpack_exports__[\"default\"] = (Groupable);\n\n/***/ }),\n\n/***/ \"./src/mixins/intersectable/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/mixins/intersectable/index.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return intersectable; });\n/* harmony import */ var _directives_intersect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../directives/intersect */ \"./src/directives/intersect/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n// Directives\n // Utilities\n\n // Types\n\n\nfunction intersectable(options) {\n  return vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend({\n    name: 'intersectable',\n    data: function data() {\n      return {\n        isIntersecting: false\n      };\n    },\n    mounted: function mounted() {\n      _directives_intersect__WEBPACK_IMPORTED_MODULE_0__[\"default\"].inserted(this.$el, {\n        name: 'intersect',\n        value: this.onObserve\n      }, this.$vnode);\n    },\n    destroyed: function destroyed() {\n      _directives_intersect__WEBPACK_IMPORTED_MODULE_0__[\"default\"].unbind(this.$el, {\n        name: 'intersect',\n        value: this.onObserve\n      }, this.$vnode);\n    },\n    methods: {\n      onObserve: function onObserve(entries, observer, isIntersecting) {\n        this.isIntersecting = isIntersecting;\n        if (!isIntersecting) return;\n\n        for (var i = 0, length = options.onVisible.length; i < length; i++) {\n          var callback = this[options.onVisible[i]];\n\n          if (typeof callback === 'function') {\n            callback();\n            continue;\n          }\n\n          Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"])(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options');\n        }\n      }\n    }\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/mixins/loadable/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/mixins/loadable/index.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_VProgressLinear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/VProgressLinear */ \"./src/components/VProgressLinear/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n  name: 'loadable',\n  props: {\n    loading: {\n      type: [Boolean, String],\n      default: false\n    },\n    loaderHeight: {\n      type: [Number, String],\n      default: 2\n    }\n  },\n  methods: {\n    genProgress: function genProgress() {\n      if (this.loading === false) return null;\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getSlot\"])(this, 'progress') || this.$createElement(_components_VProgressLinear__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n        props: {\n          absolute: true,\n          color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n          height: this.loaderHeight,\n          indeterminate: true\n        }\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/localable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/localable/index.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'localable',\n  props: {\n    locale: String\n  },\n  computed: {\n    currentLocale: function currentLocale() {\n      return this.locale || this.$vuetify.lang.current;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/measurable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/measurable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n// Helpers\n // Types\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n  name: 'measurable',\n  props: {\n    height: [Number, String],\n    maxHeight: [Number, String],\n    maxWidth: [Number, String],\n    minHeight: [Number, String],\n    minWidth: [Number, String],\n    width: [Number, String]\n  },\n  computed: {\n    measurableStyles: function measurableStyles() {\n      var styles = {};\n      var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.height);\n      var minHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.minHeight);\n      var minWidth = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.minWidth);\n      var maxHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.maxHeight);\n      var maxWidth = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.maxWidth);\n      var width = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.width);\n      if (height) styles.height = height;\n      if (minHeight) styles.minHeight = minHeight;\n      if (minWidth) styles.minWidth = minWidth;\n      if (maxHeight) styles.maxHeight = maxHeight;\n      if (maxWidth) styles.maxWidth = maxWidth;\n      if (width) styles.width = width;\n      return styles;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/menuable/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/mixins/menuable/index.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stackable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stackable */ \"./src/mixins/stackable/index.ts\");\n/* harmony import */ var _positionable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../positionable */ \"./src/mixins/positionable/index.ts\");\n/* harmony import */ var _activatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../activatable */ \"./src/mixins/activatable/index.ts\");\n/* harmony import */ var _detachable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../detachable */ \"./src/mixins/detachable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Mixins\n\n\n\n\n\n // Utilities\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_stackable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], Object(_positionable__WEBPACK_IMPORTED_MODULE_1__[\"factory\"])(['top', 'right', 'bottom', 'left', 'absolute']), _activatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _detachable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n  name: 'menuable',\n  props: {\n    allowOverflow: Boolean,\n    light: Boolean,\n    dark: Boolean,\n    maxWidth: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    minWidth: [Number, String],\n    nudgeBottom: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeLeft: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeRight: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeTop: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeWidth: {\n      type: [Number, String],\n      default: 0\n    },\n    offsetOverflow: Boolean,\n    positionX: {\n      type: Number,\n      default: null\n    },\n    positionY: {\n      type: Number,\n      default: null\n    },\n    zIndex: {\n      type: [Number, String],\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      activatorNode: [],\n      absoluteX: 0,\n      absoluteY: 0,\n      activatedBy: null,\n      activatorFixed: false,\n      dimensions: {\n        activator: {\n          top: 0,\n          left: 0,\n          bottom: 0,\n          right: 0,\n          width: 0,\n          height: 0,\n          offsetTop: 0,\n          scrollHeight: 0,\n          offsetLeft: 0\n        },\n        content: {\n          top: 0,\n          left: 0,\n          bottom: 0,\n          right: 0,\n          width: 0,\n          height: 0,\n          offsetTop: 0,\n          scrollHeight: 0\n        }\n      },\n      relativeYOffset: 0,\n      hasJustFocused: false,\n      hasWindow: false,\n      inputActivator: false,\n      isContentActive: false,\n      pageWidth: 0,\n      pageYOffset: 0,\n      stackClass: 'v-menu__content--active',\n      stackMinZIndex: 6\n    };\n  },\n  computed: {\n    computedLeft: function computedLeft() {\n      var a = this.dimensions.activator;\n      var c = this.dimensions.content;\n      var activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0;\n      var minWidth = Math.max(a.width, c.width);\n      var left = 0;\n      left += activatorLeft;\n      if (this.left || this.$vuetify.rtl && !this.right) left -= minWidth - a.width;\n\n      if (this.offsetX) {\n        var maxWidth = isNaN(Number(this.maxWidth)) ? a.width : Math.min(a.width, Number(this.maxWidth));\n        left += this.left ? -maxWidth : a.width;\n      }\n\n      if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n      if (this.nudgeRight) left += parseInt(this.nudgeRight);\n      return left;\n    },\n    computedTop: function computedTop() {\n      var a = this.dimensions.activator;\n      var c = this.dimensions.content;\n      var top = 0;\n      if (this.top) top += a.height - c.height;\n      if (this.attach !== false) top += a.offsetTop;else top += a.top + this.pageYOffset;\n      if (this.offsetY) top += this.top ? -a.height : a.height;\n      if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n      if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n      return top;\n    },\n    hasActivator: function hasActivator() {\n      return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator;\n    },\n    absoluteYOffset: function absoluteYOffset() {\n      return this.pageYOffset - this.relativeYOffset;\n    }\n  },\n  watch: {\n    disabled: function disabled(val) {\n      val && this.callDeactivate();\n    },\n    isActive: function isActive(val) {\n      if (this.disabled) return;\n      val ? this.callActivate() : this.callDeactivate();\n    },\n    positionX: 'updateDimensions',\n    positionY: 'updateDimensions'\n  },\n  beforeMount: function beforeMount() {\n    this.hasWindow = typeof window !== 'undefined';\n\n    if (this.hasWindow) {\n      window.addEventListener('resize', this.updateDimensions, false);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (this.hasWindow) {\n      window.removeEventListener('resize', this.updateDimensions, false);\n    }\n  },\n  methods: {\n    absolutePosition: function absolutePosition() {\n      return {\n        offsetTop: this.positionY || this.absoluteY,\n        offsetLeft: this.positionX || this.absoluteX,\n        scrollHeight: 0,\n        top: this.positionY || this.absoluteY,\n        bottom: this.positionY || this.absoluteY,\n        left: this.positionX || this.absoluteX,\n        right: this.positionX || this.absoluteX,\n        height: 0,\n        width: 0\n      };\n    },\n    activate: function activate() {},\n    calcLeft: function calcLeft(menuWidth) {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.attach !== false ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth));\n    },\n    calcTop: function calcTop() {\n      return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.attach !== false ? this.computedTop : this.calcYOverflow(this.computedTop));\n    },\n    calcXOverflow: function calcXOverflow(left, menuWidth) {\n      var xOverflow = left + menuWidth - this.pageWidth + 12;\n\n      if ((!this.left || this.right) && xOverflow > 0) {\n        left = Math.max(left - xOverflow, 0);\n      } else {\n        left = Math.max(left, 12);\n      }\n\n      return left + this.getOffsetLeft();\n    },\n    calcYOverflow: function calcYOverflow(top) {\n      var documentHeight = this.getInnerHeight();\n      var toTop = this.absoluteYOffset + documentHeight;\n      var activator = this.dimensions.activator;\n      var contentHeight = this.dimensions.content.height;\n      var totalHeight = top + contentHeight;\n      var isOverflowing = toTop < totalHeight; // If overflowing bottom and offset\n      // TODO: set 'bottom' position instead of 'top'\n\n      if (isOverflowing && this.offsetOverflow && // If we don't have enough room to offset\n      // the overflow, don't offset\n      activator.top > contentHeight) {\n        top = this.pageYOffset + (activator.top - contentHeight); // If overflowing bottom\n      } else if (isOverflowing && !this.allowOverflow) {\n        top = toTop - contentHeight - 12; // If overflowing top\n      } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n        top = this.absoluteYOffset + 12;\n      }\n\n      return top < 12 ? 12 : top;\n    },\n    callActivate: function callActivate() {\n      if (!this.hasWindow) return;\n      this.activate();\n    },\n    callDeactivate: function callDeactivate() {\n      this.isContentActive = false;\n      this.deactivate();\n    },\n    checkForPageYOffset: function checkForPageYOffset() {\n      if (this.hasWindow) {\n        this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop();\n      }\n    },\n    checkActivatorFixed: function checkActivatorFixed() {\n      if (this.attach !== false) {\n        this.activatorFixed = false;\n        return;\n      }\n\n      var el = this.getActivator();\n\n      while (el) {\n        if (window.getComputedStyle(el).position === 'fixed') {\n          this.activatorFixed = true;\n          return;\n        }\n\n        el = el.offsetParent;\n      }\n\n      this.activatorFixed = false;\n    },\n    deactivate: function deactivate() {},\n    genActivatorListeners: function genActivatorListeners() {\n      var _this = this;\n\n      var listeners = _activatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genActivatorListeners.call(this);\n      var onClick = listeners.click;\n\n      if (onClick) {\n        listeners.click = function (e) {\n          if (_this.openOnClick) {\n            onClick && onClick(e);\n          }\n\n          _this.absoluteX = e.clientX;\n          _this.absoluteY = e.clientY;\n        };\n      }\n\n      return listeners;\n    },\n    getInnerHeight: function getInnerHeight() {\n      if (!this.hasWindow) return 0;\n      return window.innerHeight || document.documentElement.clientHeight;\n    },\n    getOffsetLeft: function getOffsetLeft() {\n      if (!this.hasWindow) return 0;\n      return window.pageXOffset || document.documentElement.scrollLeft;\n    },\n    getOffsetTop: function getOffsetTop() {\n      if (!this.hasWindow) return 0;\n      return window.pageYOffset || document.documentElement.scrollTop;\n    },\n    getRoundedBoundedClientRect: function getRoundedBoundedClientRect(el) {\n      var rect = el.getBoundingClientRect();\n      return {\n        top: Math.round(rect.top),\n        left: Math.round(rect.left),\n        bottom: Math.round(rect.bottom),\n        right: Math.round(rect.right),\n        width: Math.round(rect.width),\n        height: Math.round(rect.height)\n      };\n    },\n    measure: function measure(el) {\n      if (!el || !this.hasWindow) return null;\n      var rect = this.getRoundedBoundedClientRect(el); // Account for activator margin\n\n      if (this.attach !== false) {\n        var style = window.getComputedStyle(el);\n        rect.left = parseInt(style.marginLeft);\n        rect.top = parseInt(style.marginTop);\n      }\n\n      return rect;\n    },\n    sneakPeek: function sneakPeek(cb) {\n      var _this = this;\n\n      requestAnimationFrame(function () {\n        var el = _this.$refs.content;\n\n        if (!el || el.style.display !== 'none') {\n          cb();\n          return;\n        }\n\n        el.style.display = 'inline-block';\n        cb();\n        el.style.display = 'none';\n      });\n    },\n    startTransition: function startTransition() {\n      var _this = this;\n\n      return new Promise(function (resolve) {\n        return requestAnimationFrame(function () {\n          _this.isContentActive = _this.hasJustFocused = _this.isActive;\n          resolve();\n        });\n      });\n    },\n    updateDimensions: function updateDimensions() {\n      var _this = this;\n\n      this.hasWindow = typeof window !== 'undefined';\n      this.checkActivatorFixed();\n      this.checkForPageYOffset();\n      this.pageWidth = document.documentElement.clientWidth;\n      var dimensions = {\n        activator: __assign({}, this.dimensions.activator),\n        content: __assign({}, this.dimensions.content)\n      }; // Activator should already be shown\n\n      if (!this.hasActivator || this.absolute) {\n        dimensions.activator = this.absolutePosition();\n      } else {\n        var activator = this.getActivator();\n        if (!activator) return;\n        dimensions.activator = this.measure(activator);\n        dimensions.activator.offsetLeft = activator.offsetLeft;\n\n        if (this.attach !== false) {\n          // account for css padding causing things to not line up\n          // this is mostly for v-autocomplete, hopefully it won't break anything\n          dimensions.activator.offsetTop = activator.offsetTop;\n        } else {\n          dimensions.activator.offsetTop = 0;\n        }\n      } // Display and hide to get dimensions\n\n\n      this.sneakPeek(function () {\n        if (_this.$refs.content) {\n          if (_this.$refs.content.offsetParent) {\n            var offsetRect = _this.getRoundedBoundedClientRect(_this.$refs.content.offsetParent);\n\n            _this.relativeYOffset = window.pageYOffset + offsetRect.top;\n            dimensions.activator.top -= _this.relativeYOffset;\n            dimensions.activator.left -= window.pageXOffset + offsetRect.left;\n          }\n\n          dimensions.content = _this.measure(_this.$refs.content);\n        }\n\n        _this.dimensions = dimensions;\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/mobile/index.ts\":\n/*!************************************!*\\\n  !*** ./src/mixins/mobile/index.ts ***!\n  \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n  name: 'mobile',\n  props: {\n    mobileBreakpoint: {\n      type: [Number, String],\n      default: function _default() {\n        // Avoid destroying unit\n        // tests for users\n        return this.$vuetify ? this.$vuetify.breakpoint.mobileBreakpoint : undefined;\n      },\n      validator: function validator(v) {\n        return !isNaN(Number(v)) || ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v));\n      }\n    }\n  },\n  computed: {\n    isMobile: function isMobile() {\n      var _a = this.$vuetify.breakpoint,\n          mobile = _a.mobile,\n          width = _a.width,\n          name = _a.name,\n          mobileBreakpoint = _a.mobileBreakpoint; // Check if local mobileBreakpoint matches\n      // the application's mobileBreakpoint\n\n      if (mobileBreakpoint === this.mobileBreakpoint) return mobile;\n      var mobileWidth = parseInt(this.mobileBreakpoint, 10);\n      var isNumber = !isNaN(mobileWidth);\n      return isNumber ? width < mobileWidth : name === this.mobileBreakpoint;\n    }\n  },\n  created: function created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_0__[\"deprecate\"])('mobile-break-point', 'mobile-breakpoint', this);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/mouse/index.ts\":\n/*!***********************************!*\\\n  !*** ./src/mixins/mouse/index.ts ***!\n  \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'mouse',\n  methods: {\n    getDefaultMouseEventHandlers: function getDefaultMouseEventHandlers(suffix, getData, eventFirst) {\n      var _a;\n\n      if (eventFirst === void 0) {\n        eventFirst = false;\n      }\n\n      var listeners = Object.keys(this.$listeners).filter(function (key) {\n        return key.endsWith(suffix);\n      }).reduce(function (acc, key) {\n        acc[key] = {\n          event: key.slice(0, -suffix.length)\n        };\n        return acc;\n      }, {});\n      return this.getMouseEventHandlers(__assign(__assign({}, listeners), (_a = {}, _a['contextmenu' + suffix] = {\n        event: 'contextmenu',\n        prevent: true,\n        result: false\n      }, _a)), getData, eventFirst);\n    },\n    getMouseEventHandlers: function getMouseEventHandlers(events, getData, eventFirst) {\n      var _this = this;\n\n      if (eventFirst === void 0) {\n        eventFirst = false;\n      }\n\n      var on = {};\n\n      var _loop_1 = function _loop_1(event) {\n        var eventOptions = events[event];\n        if (!this_1.$listeners[event]) return \"continue\"; // TODO somehow pull in modifiers\n\n        var prefix = eventOptions.passive ? '&' : (eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : '');\n        var key = prefix + eventOptions.event;\n\n        var handler = function handler(e) {\n          var _a, _b;\n\n          var mouseEvent = e;\n\n          if (eventOptions.button === undefined || mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button) {\n            if (eventOptions.prevent) {\n              e.preventDefault();\n            }\n\n            if (eventOptions.stop) {\n              e.stopPropagation();\n            } // Due to TouchEvent target always returns the element that is first placed\n            // Even if touch point has since moved outside the interactive area of that element\n            // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n            // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n\n\n            if (e && 'touches' in e) {\n              var classSeparator_1 = ' ';\n              var eventTargetClasses_1 = (_a = e.currentTarget) === null || _a === void 0 ? void 0 : _a.className.split(classSeparator_1);\n              var currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY); // Get \"the same kind\" current hovering target by checking\n              // If element has the same class of initial touch start element (which has touch event listener registered)\n\n              var currentTarget = currentTargets.find(function (t) {\n                return t.className.split(classSeparator_1).some(function (c) {\n                  return eventTargetClasses_1.includes(c);\n                });\n              });\n\n              if (currentTarget && !((_b = e.target) === null || _b === void 0 ? void 0 : _b.isSameNode(currentTarget))) {\n                currentTarget.dispatchEvent(new TouchEvent(e.type, {\n                  changedTouches: e.changedTouches,\n                  targetTouches: e.targetTouches,\n                  touches: e.touches\n                }));\n                return;\n              }\n            } // TODO: VCalendar emits the calendar event as the first argument,\n            // but it really should be the native event instead so modifiers can be used\n\n\n            if (eventFirst) {\n              _this.$emit(event, e, getData(e));\n            } else {\n              _this.$emit(event, getData(e), e);\n            }\n          }\n\n          return eventOptions.result;\n        };\n\n        if (key in on) {\n          /* istanbul ignore next */\n          if (Array.isArray(on[key])) {\n            on[key].push(handler);\n          } else {\n            on[key] = [on[key], handler];\n          }\n        } else {\n          on[key] = handler;\n        }\n      };\n\n      var this_1 = this;\n\n      for (var event in events) {\n        _loop_1(event);\n      }\n\n      return on;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/overlayable/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/mixins/overlayable/index.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VOverlay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/VOverlay */ \"./src/components/VOverlay/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n// Components\n // Utilities\n\n // Types\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend().extend({\n  name: 'overlayable',\n  props: {\n    hideOverlay: Boolean,\n    overlayColor: String,\n    overlayOpacity: [Number, String]\n  },\n  data: function data() {\n    return {\n      animationFrame: 0,\n      overlay: null\n    };\n  },\n  watch: {\n    hideOverlay: function hideOverlay(value) {\n      if (!this.isActive) return;\n      if (value) this.removeOverlay();else this.genOverlay();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.removeOverlay();\n  },\n  methods: {\n    createOverlay: function createOverlay() {\n      var overlay = new _components_VOverlay__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n        propsData: {\n          absolute: this.absolute,\n          value: false,\n          color: this.overlayColor,\n          opacity: this.overlayOpacity\n        }\n      });\n      overlay.$mount();\n      var parent = this.absolute ? this.$el.parentNode : document.querySelector('[data-app]');\n      parent && parent.insertBefore(overlay.$el, parent.firstChild);\n      this.overlay = overlay;\n    },\n    genOverlay: function genOverlay() {\n      var _this = this;\n\n      this.hideScroll();\n      if (this.hideOverlay) return;\n      if (!this.overlay) this.createOverlay();\n      this.animationFrame = requestAnimationFrame(function () {\n        if (!_this.overlay) return;\n\n        if (_this.activeZIndex !== undefined) {\n          _this.overlay.zIndex = String(_this.activeZIndex - 1);\n        } else if (_this.$el) {\n          _this.overlay.zIndex = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(_this.$el);\n        }\n\n        _this.overlay.value = true;\n      });\n      return true;\n    },\n\n    /** removeOverlay(false) will not restore the scollbar afterwards */\n    removeOverlay: function removeOverlay(showScroll) {\n      var _this = this;\n\n      if (showScroll === void 0) {\n        showScroll = true;\n      }\n\n      if (this.overlay) {\n        Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"addOnceEventListener\"])(this.overlay.$el, 'transitionend', function () {\n          if (!_this.overlay || !_this.overlay.$el || !_this.overlay.$el.parentNode || _this.overlay.value || _this.isActive) return;\n\n          _this.overlay.$el.parentNode.removeChild(_this.overlay.$el);\n\n          _this.overlay.$destroy();\n\n          _this.overlay = null;\n        }); // Cancel animation frame in case\n        // overlay is removed before it\n        // has finished its animation\n\n        cancelAnimationFrame(this.animationFrame);\n        this.overlay.value = false;\n      }\n\n      showScroll && this.showScroll();\n    },\n    scrollListener: function scrollListener(e) {\n      if ('key' in e) {\n        if (['INPUT', 'TEXTAREA', 'SELECT'].includes(e.target.tagName) || // https://github.com/vuetifyjs/vuetify/issues/4715\n        e.target.isContentEditable) return;\n        var up = [_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].pageup];\n        var down = [_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].down, _util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].pagedown];\n\n        if (up.includes(e.keyCode)) {\n          e.deltaY = -1;\n        } else if (down.includes(e.keyCode)) {\n          e.deltaY = 1;\n        } else {\n          return;\n        }\n      }\n\n      if (e.target === this.overlay || e.type !== 'keydown' && e.target === document.body || this.checkPath(e)) e.preventDefault();\n    },\n    hasScrollbar: function hasScrollbar(el) {\n      if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n      var style = window.getComputedStyle(el);\n      return (['auto', 'scroll'].includes(style.overflowY) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight || ['auto', 'scroll'].includes(style.overflowX) && el.scrollWidth > el.clientWidth;\n    },\n    shouldScroll: function shouldScroll(el, e) {\n      if (el.hasAttribute('data-app')) return false;\n      var dir = e.shiftKey || e.deltaX ? 'x' : 'y';\n      var delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY;\n      var alreadyAtStart;\n      var alreadyAtEnd;\n\n      if (dir === 'y') {\n        alreadyAtStart = el.scrollTop === 0;\n        alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight;\n      } else {\n        alreadyAtStart = el.scrollLeft === 0;\n        alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth;\n      }\n\n      var scrollingUp = delta < 0;\n      var scrollingDown = delta > 0;\n      if (!alreadyAtStart && scrollingUp) return true;\n      if (!alreadyAtEnd && scrollingDown) return true;\n\n      if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n        return this.shouldScroll(el.parentNode, e);\n      }\n\n      return false;\n    },\n    isInside: function isInside(el, parent) {\n      if (el === parent) {\n        return true;\n      } else if (el === null || el === document.body) {\n        return false;\n      } else {\n        return this.isInside(el.parentNode, parent);\n      }\n    },\n    checkPath: function checkPath(e) {\n      var path = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"composedPath\"])(e);\n\n      if (e.type === 'keydown' && path[0] === document.body) {\n        var dialog = this.$refs.dialog; // getSelection returns null in firefox in some edge cases, can be ignored\n\n        var selected = window.getSelection().anchorNode;\n\n        if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n          return !this.shouldScroll(dialog, e);\n        }\n\n        return true;\n      }\n\n      for (var index = 0; index < path.length; index++) {\n        var el = path[index];\n        if (el === document) return true;\n        if (el === document.documentElement) return true;\n        if (el === this.$refs.content) return true;\n        if (this.hasScrollbar(el)) return !this.shouldScroll(el, e);\n      }\n\n      return true;\n    },\n    hideScroll: function hideScroll() {\n      if (this.$vuetify.breakpoint.smAndDown) {\n        document.documentElement.classList.add('overflow-y-hidden');\n      } else {\n        Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"addPassiveEventListener\"])(window, 'wheel', this.scrollListener, {\n          passive: false\n        });\n        window.addEventListener('keydown', this.scrollListener);\n      }\n    },\n    showScroll: function showScroll() {\n      document.documentElement.classList.remove('overflow-y-hidden');\n      window.removeEventListener('wheel', this.scrollListener);\n      window.removeEventListener('keydown', this.scrollListener);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/picker-button/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/mixins/picker-button/index.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Mixins\n // Utilities\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n  methods: {\n    genPickerButton: function genPickerButton(prop, value, content, readonly, staticClass) {\n      var _this = this;\n\n      if (readonly === void 0) {\n        readonly = false;\n      }\n\n      if (staticClass === void 0) {\n        staticClass = '';\n      }\n\n      var active = this[prop] === value;\n\n      var click = function click(event) {\n        event.stopPropagation();\n\n        _this.$emit(\"update:\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"kebabCase\"])(prop), value);\n      };\n\n      return this.$createElement('div', {\n        staticClass: (\"v-picker__title__btn \" + staticClass).trim(),\n        class: {\n          'v-picker__title__btn--active': active,\n          'v-picker__title__btn--readonly': readonly\n        },\n        on: active || readonly ? undefined : {\n          click: click\n        }\n      }, Array.isArray(content) ? content : [content]);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/picker/index.ts\":\n/*!************************************!*\\\n  !*** ./src/mixins/picker/index.ts ***!\n  \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VPicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/VPicker */ \"./src/components/VPicker/index.ts\");\n/* harmony import */ var _colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable/index.ts\");\n/* harmony import */ var _themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Components\n // Mixins\n\n\n\n // Utils\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_elevatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n  name: 'picker',\n  props: {\n    flat: Boolean,\n    fullWidth: Boolean,\n    headerColor: String,\n    landscape: Boolean,\n    noTitle: Boolean,\n    width: {\n      type: [Number, String],\n      default: 290\n    }\n  },\n  methods: {\n    genPickerTitle: function genPickerTitle() {\n      return null;\n    },\n    genPickerBody: function genPickerBody() {\n      return null;\n    },\n    genPickerActionsSlot: function genPickerActionsSlot() {\n      return this.$scopedSlots.default ? this.$scopedSlots.default({\n        save: this.save,\n        cancel: this.cancel\n      }) : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getSlot\"])(this);\n    },\n    genPicker: function genPicker(staticClass) {\n      var children = [];\n\n      if (!this.noTitle) {\n        var title = this.genPickerTitle();\n        title && children.push(title);\n      }\n\n      var body = this.genPickerBody();\n      body && children.push(body);\n      children.push(this.$createElement('template', {\n        slot: 'actions'\n      }, [this.genPickerActionsSlot()]));\n      return this.$createElement(_components_VPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n        staticClass: staticClass,\n        props: {\n          color: this.headerColor || this.color,\n          dark: this.dark,\n          elevation: this.elevation,\n          flat: this.flat,\n          fullWidth: this.fullWidth,\n          landscape: this.landscape,\n          light: this.light,\n          width: this.width,\n          noTitle: this.noTitle\n        }\n      }, children);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/positionable/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/mixins/positionable/index.ts ***!\n  \\******************************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\nvar availableProps = {\n  absolute: Boolean,\n  bottom: Boolean,\n  fixed: Boolean,\n  left: Boolean,\n  right: Boolean,\n  top: Boolean\n};\nfunction factory(selected) {\n  if (selected === void 0) {\n    selected = [];\n  }\n\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: 'positionable',\n    props: selected.length ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"filterObjectOnKeys\"])(availableProps, selected) : availableProps\n  });\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (factory()); // Add a `*` before the second `/`\n\n/* Tests /\nlet single = factory(['top']).extend({\n  created () {\n    this.top\n    this.bottom\n    this.absolute\n  }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n  created () {\n    this.top\n    this.bottom\n    this.absolute\n  }\n})\n\nlet all = factory().extend({\n  created () {\n    this.top\n    this.bottom\n    this.absolute\n    this.foobar\n  }\n})\n/**/\n\n/***/ }),\n\n/***/ \"./src/mixins/proxyable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/proxyable/index.ts ***!\n  \\***************************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction factory(prop, event) {\n  var _a, _b;\n\n  if (prop === void 0) {\n    prop = 'value';\n  }\n\n  if (event === void 0) {\n    event = 'change';\n  }\n\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: 'proxyable',\n    model: {\n      prop: prop,\n      event: event\n    },\n    props: (_a = {}, _a[prop] = {\n      required: false\n    }, _a),\n    data: function data() {\n      return {\n        internalLazyValue: this[prop]\n      };\n    },\n    computed: {\n      internalValue: {\n        get: function get() {\n          return this.internalLazyValue;\n        },\n        set: function set(val) {\n          if (val === this.internalLazyValue) return;\n          this.internalLazyValue = val;\n          this.$emit(event, val);\n        }\n      }\n    },\n    watch: (_b = {}, _b[prop] = function (val) {\n      this.internalLazyValue = val;\n    }, _b)\n  });\n}\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\n\nvar Proxyable = factory();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Proxyable);\n\n/***/ }),\n\n/***/ \"./src/mixins/registrable/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/mixins/registrable/index.ts ***!\n  \\*****************************************/\n/*! exports provided: inject, provide */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return inject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"provide\", function() { return provide; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n\n\nfunction generateWarning(child, parent) {\n  return function () {\n    return Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"])(\"The \" + child + \" component must be used inside a \" + parent);\n  };\n}\n\nfunction inject(namespace, child, parent) {\n  var _a;\n\n  var defaultImpl = child && parent ? {\n    register: generateWarning(child, parent),\n    unregister: generateWarning(child, parent)\n  } : null;\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: 'registrable-inject',\n    inject: (_a = {}, _a[namespace] = {\n      default: defaultImpl\n    }, _a)\n  });\n}\nfunction provide(namespace, self) {\n  if (self === void 0) {\n    self = false;\n  }\n\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: 'registrable-provide',\n    provide: function provide() {\n      var _a;\n\n      return _a = {}, _a[namespace] = self ? this : {\n        register: this.register,\n        unregister: this.unregister\n      }, _a;\n    }\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/mixins/returnable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/returnable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'returnable',\n  props: {\n    returnValue: null\n  },\n  data: function data() {\n    return {\n      isActive: false,\n      originalValue: null\n    };\n  },\n  watch: {\n    isActive: function isActive(val) {\n      if (val) {\n        this.originalValue = this.returnValue;\n      } else {\n        this.$emit('update:return-value', this.originalValue);\n      }\n    }\n  },\n  methods: {\n    save: function save(value) {\n      var _this = this;\n\n      this.originalValue = value;\n      setTimeout(function () {\n        _this.isActive = false;\n      });\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/rippleable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/rippleable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n// Directives\n // Types\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n  name: 'rippleable',\n  directives: {\n    ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n  },\n  props: {\n    ripple: {\n      type: [Boolean, Object],\n      default: true\n    }\n  },\n  methods: {\n    genRipple: function genRipple(data) {\n      if (data === void 0) {\n        data = {};\n      }\n\n      if (!this.ripple) return null;\n      data.staticClass = 'v-input--selection-controls__ripple';\n      data.directives = data.directives || [];\n      data.directives.push({\n        name: 'ripple',\n        value: {\n          center: true\n        }\n      });\n      return this.$createElement('div', data);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/roundable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/roundable/index.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'roundable',\n  props: {\n    rounded: [Boolean, String],\n    tile: Boolean\n  },\n  computed: {\n    roundedClasses: function roundedClasses() {\n      var e_1, _a, _b;\n\n      var composite = [];\n      var rounded = typeof this.rounded === 'string' ? String(this.rounded) : this.rounded === true;\n\n      if (this.tile) {\n        composite.push('rounded-0');\n      } else if (typeof rounded === 'string') {\n        var values = rounded.split(' ');\n\n        try {\n          for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n            var value = values_1_1.value;\n            composite.push(\"rounded-\" + value);\n          }\n        } catch (e_1_1) {\n          e_1 = {\n            error: e_1_1\n          };\n        } finally {\n          try {\n            if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n          } finally {\n            if (e_1) throw e_1.error;\n          }\n        }\n      } else if (rounded) {\n        composite.push('rounded');\n      }\n\n      return composite.length > 0 ? (_b = {}, _b[composite.join(' ')] = true, _b) : {};\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/routable/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/mixins/routable/index.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n // Directives\n\n // Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'routable',\n  directives: {\n    Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n  },\n  props: {\n    activeClass: String,\n    append: Boolean,\n    disabled: Boolean,\n    exact: {\n      type: Boolean,\n      default: undefined\n    },\n    exactPath: Boolean,\n    exactActiveClass: String,\n    link: Boolean,\n    href: [String, Object],\n    to: [String, Object],\n    nuxt: Boolean,\n    replace: Boolean,\n    ripple: {\n      type: [Boolean, Object],\n      default: null\n    },\n    tag: String,\n    target: String\n  },\n  data: function data() {\n    return {\n      isActive: false,\n      proxyClass: ''\n    };\n  },\n  computed: {\n    classes: function classes() {\n      var classes = {};\n      if (this.to) return classes;\n      if (this.activeClass) classes[this.activeClass] = this.isActive;\n      if (this.proxyClass) classes[this.proxyClass] = this.isActive;\n      return classes;\n    },\n    computedRipple: function computedRipple() {\n      var _a;\n\n      return (_a = this.ripple) !== null && _a !== void 0 ? _a : !this.disabled && this.isClickable;\n    },\n    isClickable: function isClickable() {\n      if (this.disabled) return false;\n      return Boolean(this.isLink || this.$listeners.click || this.$listeners['!click'] || this.$attrs.tabindex);\n    },\n    isLink: function isLink() {\n      return this.to || this.href || this.link;\n    },\n    styles: function styles() {\n      return {};\n    }\n  },\n  watch: {\n    $route: 'onRouteChange'\n  },\n  mounted: function mounted() {\n    this.onRouteChange();\n  },\n  methods: {\n    generateRouteLink: function generateRouteLink() {\n      var _a;\n\n      var exact = this.exact;\n      var tag;\n      var data = (_a = {\n        attrs: {\n          tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined\n        },\n        class: this.classes,\n        style: this.styles,\n        props: {},\n        directives: [{\n          name: 'ripple',\n          value: this.computedRipple\n        }]\n      }, _a[this.to ? 'nativeOn' : 'on'] = __assign(__assign({}, this.$listeners), 'click' in this ? {\n        click: this.click\n      } : undefined), _a.ref = 'link', _a);\n\n      if (typeof this.exact === 'undefined') {\n        exact = this.to === '/' || this.to === Object(this.to) && this.to.path === '/';\n      }\n\n      if (this.to) {\n        // Add a special activeClass hook\n        // for component level styles\n        var activeClass = this.activeClass;\n        var exactActiveClass = this.exactActiveClass || activeClass;\n\n        if (this.proxyClass) {\n          activeClass = (activeClass + \" \" + this.proxyClass).trim();\n          exactActiveClass = (exactActiveClass + \" \" + this.proxyClass).trim();\n        }\n\n        tag = this.nuxt ? 'nuxt-link' : 'router-link';\n        Object.assign(data.props, {\n          to: this.to,\n          exact: exact,\n          exactPath: this.exactPath,\n          activeClass: activeClass,\n          exactActiveClass: exactActiveClass,\n          append: this.append,\n          replace: this.replace\n        });\n      } else {\n        tag = this.href && 'a' || this.tag || 'div';\n        if (tag === 'a' && this.href) data.attrs.href = this.href;\n      }\n\n      if (this.target) data.attrs.target = this.target;\n      return {\n        tag: tag,\n        data: data\n      };\n    },\n    onRouteChange: function onRouteChange() {\n      var _this = this;\n\n      if (!this.to || !this.$refs.link || !this.$route) return;\n      var activeClass = ((this.activeClass || '') + \" \" + (this.proxyClass || '')).trim();\n      var exactActiveClass = ((this.exactActiveClass || '') + \" \" + (this.proxyClass || '')).trim() || activeClass;\n      var path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass);\n      this.$nextTick(function () {\n        /* istanbul ignore else */\n        if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getObjectValueByPath\"])(_this.$refs.link, path) === _this.isActive) {\n          _this.toggle();\n        }\n      });\n    },\n    toggle: function toggle() {\n      this.isActive = !this.isActive;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/scrollable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/scrollable/index.ts ***!\n  \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _directives__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../directives */ \"./src/directives/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n// Directives\n // Utilities\n\n // Types\n\n\n/**\n * Scrollable\n *\n * Used for monitoring scrolling and\n * invoking functions based upon\n * scrolling thresholds being\n * met.\n */\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend({\n  name: 'scrollable',\n  directives: {\n    Scroll: _directives__WEBPACK_IMPORTED_MODULE_0__[\"Scroll\"]\n  },\n  props: {\n    scrollTarget: String,\n    scrollThreshold: [String, Number]\n  },\n  data: function data() {\n    return {\n      currentScroll: 0,\n      currentThreshold: 0,\n      isActive: false,\n      isScrollingUp: false,\n      previousScroll: 0,\n      savedScroll: 0,\n      target: null\n    };\n  },\n  computed: {\n    /**\n     * A computed property that returns\n     * whether scrolling features are\n     * enabled or disabled\n     */\n    canScroll: function canScroll() {\n      return typeof window !== 'undefined';\n    },\n\n    /**\n     * The threshold that must be met before\n     * thresholdMet function is invoked\n     */\n    computedScrollThreshold: function computedScrollThreshold() {\n      return this.scrollThreshold ? Number(this.scrollThreshold) : 300;\n    }\n  },\n  watch: {\n    isScrollingUp: function isScrollingUp() {\n      this.savedScroll = this.savedScroll || this.currentScroll;\n    },\n    isActive: function isActive() {\n      this.savedScroll = 0;\n    }\n  },\n  mounted: function mounted() {\n    if (this.scrollTarget) {\n      this.target = document.querySelector(this.scrollTarget);\n\n      if (!this.target) {\n        Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"])(\"Unable to locate element with identifier \" + this.scrollTarget, this);\n      }\n    }\n  },\n  methods: {\n    onScroll: function onScroll() {\n      var _this = this;\n\n      if (!this.canScroll) return;\n      this.previousScroll = this.currentScroll;\n      this.currentScroll = this.target ? this.target.scrollTop : window.pageYOffset;\n      this.isScrollingUp = this.currentScroll < this.previousScroll;\n      this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold);\n      this.$nextTick(function () {\n        if (Math.abs(_this.currentScroll - _this.savedScroll) > _this.computedScrollThreshold) _this.thresholdMet();\n      });\n    },\n\n    /**\n     * The method invoked when\n     * scrolling in any direction\n     * has exceeded the threshold\n     */\n    thresholdMet: function thresholdMet() {}\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/selectable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/selectable/index.ts ***!\n  \\****************************************/\n/*! exports provided: prevent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prevent\", function() { return prevent; });\n/* harmony import */ var _components_VInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _rippleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rippleable */ \"./src/mixins/rippleable/index.ts\");\n/* harmony import */ var _comparable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../comparable */ \"./src/mixins/comparable/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Components\n // Mixins\n\n\n // Utilities\n\n\nfunction prevent(e) {\n  e.preventDefault();\n}\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_components_VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _rippleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _comparable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n  name: 'selectable',\n  model: {\n    prop: 'inputValue',\n    event: 'change'\n  },\n  props: {\n    id: String,\n    inputValue: null,\n    falseValue: null,\n    trueValue: null,\n    multiple: {\n      type: Boolean,\n      default: null\n    },\n    label: String\n  },\n  data: function data() {\n    return {\n      hasColor: this.inputValue,\n      lazyValue: this.inputValue\n    };\n  },\n  computed: {\n    computedColor: function computedColor() {\n      if (!this.isActive) return undefined;\n      if (this.color) return this.color;\n      if (this.isDark && !this.appIsDark) return 'white';\n      return 'primary';\n    },\n    isMultiple: function isMultiple() {\n      return this.multiple === true || this.multiple === null && Array.isArray(this.internalValue);\n    },\n    isActive: function isActive() {\n      var _this = this;\n\n      var value = this.value;\n      var input = this.internalValue;\n\n      if (this.isMultiple) {\n        if (!Array.isArray(input)) return false;\n        return input.some(function (item) {\n          return _this.valueComparator(item, value);\n        });\n      }\n\n      if (this.trueValue === undefined || this.falseValue === undefined) {\n        return value ? this.valueComparator(value, input) : Boolean(input);\n      }\n\n      return this.valueComparator(input, this.trueValue);\n    },\n    isDirty: function isDirty() {\n      return this.isActive;\n    },\n    rippleState: function rippleState() {\n      return !this.isDisabled && !this.validationState ? undefined : this.validationState;\n    }\n  },\n  watch: {\n    inputValue: function inputValue(val) {\n      this.lazyValue = val;\n      this.hasColor = val;\n    }\n  },\n  methods: {\n    genLabel: function genLabel() {\n      var label = _components_VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.methods.genLabel.call(this);\n      if (!label) return label;\n      label.data.on = {\n        // Label shouldn't cause the input to focus\n        click: prevent\n      };\n      return label;\n    },\n    genInput: function genInput(type, attrs) {\n      return this.$createElement('input', {\n        attrs: Object.assign({\n          'aria-checked': this.isActive.toString(),\n          disabled: this.isDisabled,\n          id: this.computedId,\n          role: type,\n          type: type\n        }, attrs),\n        domProps: {\n          value: this.value,\n          checked: this.isActive\n        },\n        on: {\n          blur: this.onBlur,\n          change: this.onChange,\n          focus: this.onFocus,\n          keydown: this.onKeydown,\n          click: prevent\n        },\n        ref: 'input'\n      });\n    },\n    onClick: function onClick(e) {\n      this.onChange();\n      this.$emit('click', e);\n    },\n    onChange: function onChange() {\n      var _this = this;\n\n      if (!this.isInteractive) return;\n      var value = this.value;\n      var input = this.internalValue;\n\n      if (this.isMultiple) {\n        if (!Array.isArray(input)) {\n          input = [];\n        }\n\n        var length = input.length;\n        input = input.filter(function (item) {\n          return !_this.valueComparator(item, value);\n        });\n\n        if (input.length === length) {\n          input.push(value);\n        }\n      } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n        input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue;\n      } else if (value) {\n        input = this.valueComparator(input, value) ? null : value;\n      } else {\n        input = !input;\n      }\n\n      this.validate(true, input);\n      this.internalValue = input;\n      this.hasColor = input;\n    },\n    onFocus: function onFocus(e) {\n      this.isFocused = true;\n      this.$emit('focus', e);\n    },\n    onBlur: function onBlur(e) {\n      this.isFocused = false;\n      this.$emit('blur', e);\n    },\n\n    /** @abstract */\n    onKeydown: function onKeydown(e) {}\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/sizeable/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/mixins/sizeable/index.ts ***!\n  \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'sizeable',\n  props: {\n    large: Boolean,\n    small: Boolean,\n    xLarge: Boolean,\n    xSmall: Boolean\n  },\n  computed: {\n    medium: function medium() {\n      return Boolean(!this.xSmall && !this.small && !this.large && !this.xLarge);\n    },\n    sizeableClasses: function sizeableClasses() {\n      return {\n        'v-size--x-small': this.xSmall,\n        'v-size--small': this.small,\n        'v-size--default': this.medium,\n        'v-size--large': this.large,\n        'v-size--x-large': this.xLarge\n      };\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/ssr-bootable/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/mixins/ssr-bootable/index.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'ssr-bootable',\n  data: function data() {\n    return {\n      isBooted: false\n    };\n  },\n  mounted: function mounted() {\n    var _this = this; // Use setAttribute instead of dataset\n    // because dataset does not work well\n    // with unit tests\n\n\n    window.requestAnimationFrame(function () {\n      _this.$el.setAttribute('data-booted', 'true');\n\n      _this.isBooted = true;\n    });\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/stackable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/stackable/index.ts ***!\n  \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n  name: 'stackable',\n  data: function data() {\n    return {\n      stackElement: null,\n      stackExclude: null,\n      stackMinZIndex: 0,\n      isActive: false\n    };\n  },\n  computed: {\n    activeZIndex: function activeZIndex() {\n      if (typeof window === 'undefined') return 0;\n      var content = this.stackElement || this.$refs.content; // Return current zindex if not active\n\n      var index = !this.isActive ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(content) : this.getMaxZIndex(this.stackExclude || [content]) + 2;\n      if (index == null) return index; // Return max current z-index (excluding self) + 2\n      // (2 to leave room for an overlay below, if needed)\n\n      return parseInt(index);\n    }\n  },\n  methods: {\n    getMaxZIndex: function getMaxZIndex(exclude) {\n      if (exclude === void 0) {\n        exclude = [];\n      }\n\n      var base = this.$el; // Start with lowest allowed z-index or z-index of\n      // base component's element, whichever is greater\n\n      var zis = [this.stackMinZIndex, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(base)]; // Convert the NodeList to an array to\n      // prevent an Edge bug with Symbol.iterator\n      // https://github.com/vuetifyjs/vuetify/issues/2146\n\n      var activeElements = __spreadArray(__spreadArray([], __read(document.getElementsByClassName('v-menu__content--active')), false), __read(document.getElementsByClassName('v-dialog__content--active')), false); // Get z-index for all active dialogs\n\n\n      for (var index = 0; index < activeElements.length; index++) {\n        if (!exclude.includes(activeElements[index])) {\n          zis.push(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(activeElements[index]));\n        }\n      }\n\n      return Math.max.apply(Math, __spreadArray([], __read(zis), false));\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/themeable/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/mixins/themeable/index.ts ***!\n  \\***************************************/\n/*! exports provided: default, functionalThemeClasses */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functionalThemeClasses\", function() { return functionalThemeClasses; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\n\n/* @vue/component */\n\nvar Themeable = vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n  name: 'themeable',\n  provide: function provide() {\n    return {\n      theme: this.themeableProvide\n    };\n  },\n  inject: {\n    theme: {\n      default: {\n        isDark: false\n      }\n    }\n  },\n  props: {\n    dark: {\n      type: Boolean,\n      default: null\n    },\n    light: {\n      type: Boolean,\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      themeableProvide: {\n        isDark: false\n      }\n    };\n  },\n  computed: {\n    appIsDark: function appIsDark() {\n      return this.$vuetify.theme.dark || false;\n    },\n    isDark: function isDark() {\n      if (this.dark === true) {\n        // explicitly dark\n        return true;\n      } else if (this.light === true) {\n        // explicitly light\n        return false;\n      } else {\n        // inherit from parent, or default false if there is none\n        return this.theme.isDark;\n      }\n    },\n    themeClasses: function themeClasses() {\n      return {\n        'theme--dark': this.isDark,\n        'theme--light': !this.isDark\n      };\n    },\n\n    /** Used by menus and dialogs, inherits from v-app instead of the parent */\n    rootIsDark: function rootIsDark() {\n      if (this.dark === true) {\n        // explicitly dark\n        return true;\n      } else if (this.light === true) {\n        // explicitly light\n        return false;\n      } else {\n        // inherit from v-app\n        return this.appIsDark;\n      }\n    },\n    rootThemeClasses: function rootThemeClasses() {\n      return {\n        'theme--dark': this.rootIsDark,\n        'theme--light': !this.rootIsDark\n      };\n    }\n  },\n  watch: {\n    isDark: {\n      handler: function handler(newVal, oldVal) {\n        if (newVal !== oldVal) {\n          this.themeableProvide.isDark = this.isDark;\n        }\n      },\n      immediate: true\n    }\n  }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Themeable);\nfunction functionalThemeClasses(context) {\n  var vm = __assign(__assign({}, context.props), context.injections);\n\n  var isDark = Themeable.options.computed.isDark.call(vm);\n  return Themeable.options.computed.themeClasses.call({\n    isDark: isDark\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/mixins/toggleable/index.ts\":\n/*!****************************************!*\\\n  !*** ./src/mixins/toggleable/index.ts ***!\n  \\****************************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction factory(prop, event) {\n  var _a, _b;\n\n  if (prop === void 0) {\n    prop = 'value';\n  }\n\n  if (event === void 0) {\n    event = 'input';\n  }\n\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: 'toggleable',\n    model: {\n      prop: prop,\n      event: event\n    },\n    props: (_a = {}, _a[prop] = {\n      required: false\n    }, _a),\n    data: function data() {\n      return {\n        isActive: !!this[prop]\n      };\n    },\n    watch: (_b = {}, _b[prop] = function (val) {\n      this.isActive = !!val;\n    }, _b.isActive = function (val) {\n      !!val !== this[prop] && this.$emit(event, val);\n    }, _b)\n  });\n}\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\n\nvar Toggleable = factory();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Toggleable);\n\n/***/ }),\n\n/***/ \"./src/mixins/transitionable/index.ts\":\n/*!********************************************!*\\\n  !*** ./src/mixins/transitionable/index.ts ***!\n  \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'transitionable',\n  props: {\n    mode: String,\n    origin: String,\n    transition: String\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/translatable/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/mixins/translatable/index.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n  name: 'translatable',\n  props: {\n    height: Number\n  },\n  data: function data() {\n    return {\n      elOffsetTop: 0,\n      parallax: 0,\n      parallaxDist: 0,\n      percentScrolled: 0,\n      scrollTop: 0,\n      windowHeight: 0,\n      windowBottom: 0\n    };\n  },\n  computed: {\n    imgHeight: function imgHeight() {\n      return this.objHeight();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('scroll', this.translate, false);\n    window.removeEventListener('resize', this.translate, false);\n  },\n  methods: {\n    calcDimensions: function calcDimensions() {\n      var offset = this.$el.getBoundingClientRect();\n      this.scrollTop = window.pageYOffset;\n      this.parallaxDist = this.imgHeight - this.height;\n      this.elOffsetTop = offset.top + this.scrollTop;\n      this.windowHeight = window.innerHeight;\n      this.windowBottom = this.scrollTop + this.windowHeight;\n    },\n    listeners: function listeners() {\n      window.addEventListener('scroll', this.translate, false);\n      window.addEventListener('resize', this.translate, false);\n    },\n\n    /** @abstract **/\n    objHeight: function objHeight() {\n      throw new Error('Not implemented !');\n    },\n    translate: function translate() {\n      this.calcDimensions();\n      this.percentScrolled = (this.windowBottom - this.elOffsetTop) / (parseInt(this.height) + this.windowHeight);\n      this.parallax = Math.round(this.parallaxDist * this.percentScrolled);\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/validatable/index.ts\":\n/*!*****************************************!*\\\n  !*** ./src/mixins/validatable/index.ts ***!\n  \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colorable */ \"./src/mixins/colorable/index.ts\");\n/* harmony import */ var _themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../themeable */ \"./src/mixins/themeable/index.ts\");\n/* harmony import */ var _registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../registrable */ \"./src/mixins/registrable/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Mixins\n\n\n // Utilities\n\n\n\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], Object(_registrable__WEBPACK_IMPORTED_MODULE_2__[\"inject\"])('form'), _themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* @vue/component */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend({\n  name: 'validatable',\n  props: {\n    disabled: {\n      type: Boolean,\n      default: null\n    },\n    error: Boolean,\n    errorCount: {\n      type: [Number, String],\n      default: 1\n    },\n    errorMessages: {\n      type: [String, Array],\n      default: function _default() {\n        return [];\n      }\n    },\n    messages: {\n      type: [String, Array],\n      default: function _default() {\n        return [];\n      }\n    },\n    readonly: {\n      type: Boolean,\n      default: null\n    },\n    rules: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    success: Boolean,\n    successMessages: {\n      type: [String, Array],\n      default: function _default() {\n        return [];\n      }\n    },\n    validateOnBlur: Boolean,\n    value: {\n      required: false\n    }\n  },\n  data: function data() {\n    return {\n      errorBucket: [],\n      hasColor: false,\n      hasFocused: false,\n      hasInput: false,\n      isFocused: false,\n      isResetting: false,\n      lazyValue: this.value,\n      valid: false\n    };\n  },\n  computed: {\n    computedColor: function computedColor() {\n      if (this.isDisabled) return undefined;\n      if (this.color) return this.color; // It's assumed that if the input is on a\n      // dark background, the user will want to\n      // have a white color. If the entire app\n      // is setup to be dark, then they will\n      // like want to use their primary color\n\n      if (this.isDark && !this.appIsDark) return 'white';else return 'primary';\n    },\n    hasError: function hasError() {\n      return this.internalErrorMessages.length > 0 || this.errorBucket.length > 0 || this.error;\n    },\n    // TODO: Add logic that allows the user to enable based\n    // upon a good validation\n    hasSuccess: function hasSuccess() {\n      return this.internalSuccessMessages.length > 0 || this.success;\n    },\n    externalError: function externalError() {\n      return this.internalErrorMessages.length > 0 || this.error;\n    },\n    hasMessages: function hasMessages() {\n      return this.validationTarget.length > 0;\n    },\n    hasState: function hasState() {\n      if (this.isDisabled) return false;\n      return this.hasSuccess || this.shouldValidate && this.hasError;\n    },\n    internalErrorMessages: function internalErrorMessages() {\n      return this.genInternalMessages(this.errorMessages);\n    },\n    internalMessages: function internalMessages() {\n      return this.genInternalMessages(this.messages);\n    },\n    internalSuccessMessages: function internalSuccessMessages() {\n      return this.genInternalMessages(this.successMessages);\n    },\n    internalValue: {\n      get: function get() {\n        return this.lazyValue;\n      },\n      set: function set(val) {\n        this.lazyValue = val;\n        this.$emit('input', val);\n      }\n    },\n    isDisabled: function isDisabled() {\n      var _a;\n\n      return (_a = this.disabled) !== null && _a !== void 0 ? _a : !!this.form && this.form.disabled;\n    },\n    isInteractive: function isInteractive() {\n      return !this.isDisabled && !this.isReadonly;\n    },\n    isReadonly: function isReadonly() {\n      var _a;\n\n      return (_a = this.readonly) !== null && _a !== void 0 ? _a : !!this.form && this.form.readonly;\n    },\n    shouldValidate: function shouldValidate() {\n      if (this.externalError) return true;\n      if (this.isResetting) return false;\n      return this.validateOnBlur ? this.hasFocused && !this.isFocused : this.hasInput || this.hasFocused;\n    },\n    validations: function validations() {\n      return this.validationTarget.slice(0, Number(this.errorCount));\n    },\n    validationState: function validationState() {\n      if (this.isDisabled) return undefined;\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor) return this.computedColor;\n      return undefined;\n    },\n    validationTarget: function validationTarget() {\n      if (this.internalErrorMessages.length > 0) {\n        return this.internalErrorMessages;\n      } else if (this.successMessages && this.successMessages.length > 0) {\n        return this.internalSuccessMessages;\n      } else if (this.messages && this.messages.length > 0) {\n        return this.internalMessages;\n      } else if (this.shouldValidate) {\n        return this.errorBucket;\n      } else return [];\n    }\n  },\n  watch: {\n    rules: {\n      handler: function handler(newVal, oldVal) {\n        if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"deepEqual\"])(newVal, oldVal)) return;\n        this.validate();\n      },\n      deep: true\n    },\n    internalValue: function internalValue() {\n      // If it's the first time we're setting input,\n      // mark it with hasInput\n      this.hasInput = true;\n      this.validateOnBlur || this.$nextTick(this.validate);\n    },\n    isFocused: function isFocused(val) {\n      // Should not check validation\n      // if disabled\n      if (!val && !this.isDisabled) {\n        this.hasFocused = true;\n        this.validateOnBlur && this.$nextTick(this.validate);\n      }\n    },\n    isResetting: function isResetting() {\n      var _this = this;\n\n      setTimeout(function () {\n        _this.hasInput = false;\n        _this.hasFocused = false;\n        _this.isResetting = false;\n\n        _this.validate();\n      }, 0);\n    },\n    hasError: function hasError(val) {\n      if (this.shouldValidate) {\n        this.$emit('update:error', val);\n      }\n    },\n    value: function value(val) {\n      this.lazyValue = val;\n    }\n  },\n  beforeMount: function beforeMount() {\n    this.validate();\n  },\n  created: function created() {\n    this.form && this.form.register(this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.form && this.form.unregister(this);\n  },\n  methods: {\n    genInternalMessages: function genInternalMessages(messages) {\n      if (!messages) return [];else if (Array.isArray(messages)) return messages;else return [messages];\n    },\n\n    /** @public */\n    reset: function reset() {\n      this.isResetting = true;\n      this.internalValue = Array.isArray(this.internalValue) ? [] : null;\n    },\n\n    /** @public */\n    resetValidation: function resetValidation() {\n      this.isResetting = true;\n    },\n\n    /** @public */\n    validate: function validate(force, value) {\n      if (force === void 0) {\n        force = false;\n      }\n\n      var errorBucket = [];\n      value = value || this.internalValue;\n      if (force) this.hasInput = this.hasFocused = true;\n\n      for (var index = 0; index < this.rules.length; index++) {\n        var rule = this.rules[index];\n        var valid = typeof rule === 'function' ? rule(value) : rule;\n\n        if (valid === false || typeof valid === 'string') {\n          errorBucket.push(valid || '');\n        } else if (typeof valid !== 'boolean') {\n          Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"consoleError\"])(\"Rules should return a string or boolean, received '\" + _typeof(valid) + \"' instead\", this);\n        }\n      }\n\n      this.errorBucket = errorBucket;\n      this.valid = errorBucket.length === 0;\n      return this.valid;\n    }\n  }\n}));\n\n/***/ }),\n\n/***/ \"./src/presets/default/index.ts\":\n/*!**************************************!*\\\n  !*** ./src/presets/default/index.ts ***!\n  \\**************************************/\n/*! exports provided: preset */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"preset\", function() { return preset; });\n/* harmony import */ var _styles_main_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../styles/main.sass */ \"./src/styles/main.sass\");\n/* harmony import */ var _styles_main_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styles_main_sass__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../locale */ \"./src/locale/index.ts\");\n// Styles\n // Locale\n\n\nvar preset = {\n  breakpoint: {\n    // TODO: update to MD2 spec in v3 - 1280\n    mobileBreakpoint: 1264,\n    scrollBarWidth: 16,\n    thresholds: {\n      xs: 600,\n      sm: 960,\n      md: 1280,\n      lg: 1920\n    }\n  },\n  icons: {\n    // TODO: remove v3\n    iconfont: 'mdi',\n    values: {}\n  },\n  lang: {\n    current: 'en',\n    locales: {\n      en: _locale__WEBPACK_IMPORTED_MODULE_1__[\"en\"]\n    },\n    // Default translator exists in lang service\n    t: undefined\n  },\n  rtl: false,\n  theme: {\n    dark: false,\n    default: 'light',\n    disable: false,\n    options: {\n      cspNonce: undefined,\n      customProperties: undefined,\n      minifyTheme: undefined,\n      themeCache: undefined,\n      variations: true\n    },\n    themes: {\n      light: {\n        primary: '#1976D2',\n        secondary: '#424242',\n        accent: '#82B1FF',\n        error: '#FF5252',\n        info: '#2196F3',\n        success: '#4CAF50',\n        warning: '#FB8C00'\n      },\n      dark: {\n        primary: '#2196F3',\n        secondary: '#424242',\n        accent: '#FF4081',\n        error: '#FF5252',\n        info: '#2196F3',\n        success: '#4CAF50',\n        warning: '#FB8C00'\n      }\n    }\n  }\n};\n\n/***/ }),\n\n/***/ \"./src/services/application/index.ts\":\n/*!*******************************************!*\\\n  !*** ./src/services/application/index.ts ***!\n  \\*******************************************/\n/*! exports provided: Application */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Application\", function() { return Application; });\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}(); // Extensions\n\n\n\n\nvar Application =\n/** @class */\nfunction (_super) {\n  __extends(Application, _super);\n\n  function Application() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.bar = 0;\n    _this.top = 0;\n    _this.left = 0;\n    _this.insetFooter = 0;\n    _this.right = 0;\n    _this.bottom = 0;\n    _this.footer = 0;\n    _this.application = {\n      bar: {},\n      top: {},\n      left: {},\n      insetFooter: {},\n      right: {},\n      bottom: {},\n      footer: {}\n    };\n    return _this;\n  }\n\n  Application.prototype.register = function (uid, location, size) {\n    this.application[location][uid] = size;\n    this.update(location);\n  };\n\n  Application.prototype.unregister = function (uid, location) {\n    if (this.application[location][uid] == null) return;\n    delete this.application[location][uid];\n    this.update(location);\n  };\n\n  Application.prototype.update = function (location) {\n    this[location] = Object.values(this.application[location]).reduce(function (acc, cur) {\n      return acc + cur;\n    }, 0);\n  };\n\n  Application.property = 'application';\n  return Application;\n}(_service__WEBPACK_IMPORTED_MODULE_0__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/breakpoint/index.ts\":\n/*!******************************************!*\\\n  !*** ./src/services/breakpoint/index.ts ***!\n  \\******************************************/\n/*! exports provided: Breakpoint */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Breakpoint\", function() { return Breakpoint; });\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}(); // Extensions\n\n\n\n\nvar Breakpoint =\n/** @class */\nfunction (_super) {\n  __extends(Breakpoint, _super);\n\n  function Breakpoint(preset) {\n    var _this = _super.call(this) || this; // Public\n\n\n    _this.xs = false;\n    _this.sm = false;\n    _this.md = false;\n    _this.lg = false;\n    _this.xl = false;\n    _this.xsOnly = false;\n    _this.smOnly = false;\n    _this.smAndDown = false;\n    _this.smAndUp = false;\n    _this.mdOnly = false;\n    _this.mdAndDown = false;\n    _this.mdAndUp = false;\n    _this.lgOnly = false;\n    _this.lgAndDown = false;\n    _this.lgAndUp = false;\n    _this.xlOnly = false; // Value is xs to match v2.x functionality\n\n    _this.name = 'xs';\n    _this.height = 0;\n    _this.width = 0; // TODO: Add functionality to detect this dynamically in v3\n    // Value is true to match v2.x functionality\n\n    _this.mobile = true;\n    _this.resizeTimeout = 0;\n    var _a = preset[Breakpoint.property],\n        mobileBreakpoint = _a.mobileBreakpoint,\n        scrollBarWidth = _a.scrollBarWidth,\n        thresholds = _a.thresholds;\n    _this.mobileBreakpoint = mobileBreakpoint;\n    _this.scrollBarWidth = scrollBarWidth;\n    _this.thresholds = thresholds;\n    return _this;\n  }\n\n  Breakpoint.prototype.init = function () {\n    this.update();\n    /* istanbul ignore if */\n\n    if (typeof window === 'undefined') return;\n    window.addEventListener('resize', this.onResize.bind(this), {\n      passive: true\n    });\n  };\n  /* eslint-disable-next-line max-statements */\n\n\n  Breakpoint.prototype.update = function (ssr) {\n    if (ssr === void 0) {\n      ssr = false;\n    }\n\n    var height = ssr ? 0 : this.getClientHeight();\n    var width = ssr ? 0 : this.getClientWidth();\n    var xs = width < this.thresholds.xs;\n    var sm = width < this.thresholds.sm && !xs;\n    var md = width < this.thresholds.md - this.scrollBarWidth && !(sm || xs);\n    var lg = width < this.thresholds.lg - this.scrollBarWidth && !(md || sm || xs);\n    var xl = width >= this.thresholds.lg - this.scrollBarWidth;\n    this.height = height;\n    this.width = width;\n    this.xs = xs;\n    this.sm = sm;\n    this.md = md;\n    this.lg = lg;\n    this.xl = xl;\n    this.xsOnly = xs;\n    this.smOnly = sm;\n    this.smAndDown = (xs || sm) && !(md || lg || xl);\n    this.smAndUp = !xs && (sm || md || lg || xl);\n    this.mdOnly = md;\n    this.mdAndDown = (xs || sm || md) && !(lg || xl);\n    this.mdAndUp = !(xs || sm) && (md || lg || xl);\n    this.lgOnly = lg;\n    this.lgAndDown = (xs || sm || md || lg) && !xl;\n    this.lgAndUp = !(xs || sm || md) && (lg || xl);\n    this.xlOnly = xl;\n\n    switch (true) {\n      case xs:\n        this.name = 'xs';\n        break;\n\n      case sm:\n        this.name = 'sm';\n        break;\n\n      case md:\n        this.name = 'md';\n        break;\n\n      case lg:\n        this.name = 'lg';\n        break;\n\n      default:\n        this.name = 'xl';\n        break;\n    }\n\n    if (typeof this.mobileBreakpoint === 'number') {\n      this.mobile = width < parseInt(this.mobileBreakpoint, 10);\n      return;\n    }\n\n    var breakpoints = {\n      xs: 0,\n      sm: 1,\n      md: 2,\n      lg: 3,\n      xl: 4\n    };\n    var current = breakpoints[this.name];\n    var max = breakpoints[this.mobileBreakpoint];\n    this.mobile = current <= max;\n  };\n\n  Breakpoint.prototype.onResize = function () {\n    clearTimeout(this.resizeTimeout); // Added debounce to match what\n    // v-resize used to do but was\n    // removed due to a memory leak\n    // https://github.com/vuetifyjs/vuetify/pull/2997\n\n    this.resizeTimeout = window.setTimeout(this.update.bind(this), 200);\n  }; // Cross-browser support as described in:\n  // https://stackoverflow.com/questions/1248081\n\n\n  Breakpoint.prototype.getClientWidth = function () {\n    /* istanbul ignore if */\n    if (typeof document === 'undefined') return 0; // SSR\n\n    return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n  };\n\n  Breakpoint.prototype.getClientHeight = function () {\n    /* istanbul ignore if */\n    if (typeof document === 'undefined') return 0; // SSR\n\n    return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n  };\n\n  Breakpoint.property = 'breakpoint';\n  return Breakpoint;\n}(_service__WEBPACK_IMPORTED_MODULE_0__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/goto/easing-patterns.ts\":\n/*!**********************************************!*\\\n  !*** ./src/services/goto/easing-patterns.ts ***!\n  \\**********************************************/\n/*! exports provided: linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInQuad\", function() { return easeInQuad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutQuad\", function() { return easeOutQuad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutQuad\", function() { return easeInOutQuad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInCubic\", function() { return easeInCubic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutCubic\", function() { return easeOutCubic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutCubic\", function() { return easeInOutCubic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInQuart\", function() { return easeInQuart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutQuart\", function() { return easeOutQuart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutQuart\", function() { return easeInOutQuart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInQuint\", function() { return easeInQuint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutQuint\", function() { return easeOutQuint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutQuint\", function() { return easeInOutQuint; });\n// linear\nvar linear = function linear(t) {\n  return t;\n}; // accelerating from zero velocity\n\nvar easeInQuad = function easeInQuad(t) {\n  return Math.pow(t, 2);\n}; // decelerating to zero velocity\n\nvar easeOutQuad = function easeOutQuad(t) {\n  return t * (2 - t);\n}; // acceleration until halfway, then deceleration\n\nvar easeInOutQuad = function easeInOutQuad(t) {\n  return t < 0.5 ? 2 * Math.pow(t, 2) : -1 + (4 - 2 * t) * t;\n}; // accelerating from zero velocity\n\nvar easeInCubic = function easeInCubic(t) {\n  return Math.pow(t, 3);\n}; // decelerating to zero velocity\n\nvar easeOutCubic = function easeOutCubic(t) {\n  return Math.pow(--t, 3) + 1;\n}; // acceleration until halfway, then deceleration\n\nvar easeInOutCubic = function easeInOutCubic(t) {\n  return t < 0.5 ? 4 * Math.pow(t, 3) : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n}; // accelerating from zero velocity\n\nvar easeInQuart = function easeInQuart(t) {\n  return Math.pow(t, 4);\n}; // decelerating to zero velocity\n\nvar easeOutQuart = function easeOutQuart(t) {\n  return 1 - Math.pow(--t, 4);\n}; // acceleration until halfway, then deceleration\n\nvar easeInOutQuart = function easeInOutQuart(t) {\n  return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n}; // accelerating from zero velocity\n\nvar easeInQuint = function easeInQuint(t) {\n  return Math.pow(t, 5);\n}; // decelerating to zero velocity\n\nvar easeOutQuint = function easeOutQuint(t) {\n  return 1 + Math.pow(--t, 5);\n}; // acceleration until halfway, then deceleration\n\nvar easeInOutQuint = function easeInOutQuint(t) {\n  return t < 0.5 ? 16 * Math.pow(t, 5) : 1 + 16 * Math.pow(--t, 5);\n};\n\n/***/ }),\n\n/***/ \"./src/services/goto/index.ts\":\n/*!************************************!*\\\n  !*** ./src/services/goto/index.ts ***!\n  \\************************************/\n/*! exports provided: default, Goto */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return goTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Goto\", function() { return Goto; });\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\n/* harmony import */ var _easing_patterns__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./easing-patterns */ \"./src/services/goto/easing-patterns.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./src/services/goto/util.ts\");\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // Extensions\n\n\n // Utilities\n\n\n\nfunction goTo(_target, _settings) {\n  if (_settings === void 0) {\n    _settings = {};\n  }\n\n  var settings = __assign({\n    container: document.scrollingElement || document.body || document.documentElement,\n    duration: 500,\n    offset: 0,\n    easing: 'easeInOutCubic',\n    appOffset: true\n  }, _settings);\n\n  var container = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getContainer\"])(settings.container);\n  /* istanbul ignore else */\n\n  if (settings.appOffset && goTo.framework.application) {\n    var isDrawer = container.classList.contains('v-navigation-drawer');\n    var isClipped = container.classList.contains('v-navigation-drawer--clipped');\n    var _a = goTo.framework.application,\n        bar = _a.bar,\n        top = _a.top;\n    settings.offset += bar;\n    /* istanbul ignore else */\n\n    if (!isDrawer || isClipped) settings.offset += top;\n  }\n\n  var startTime = performance.now();\n  var targetLocation;\n\n  if (typeof _target === 'number') {\n    targetLocation = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOffset\"])(_target) - settings.offset;\n  } else {\n    targetLocation = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOffset\"])(_target) - Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOffset\"])(container) - settings.offset;\n  }\n\n  var startLocation = container.scrollTop;\n  if (targetLocation === startLocation) return Promise.resolve(targetLocation);\n  var ease = typeof settings.easing === 'function' ? settings.easing : _easing_patterns__WEBPACK_IMPORTED_MODULE_1__[settings.easing];\n  /* istanbul ignore else */\n\n  if (!ease) throw new TypeError(\"Easing function \\\"\" + settings.easing + \"\\\" not found.\"); // Cannot be tested properly in jsdom\n\n  /* istanbul ignore next */\n\n  return new Promise(function (resolve) {\n    return requestAnimationFrame(function step(currentTime) {\n      var timeElapsed = currentTime - startTime;\n      var progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1);\n      container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress));\n      var clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight;\n      var reachBottom = clientHeight + container.scrollTop >= container.scrollHeight;\n\n      if (progress === 1 || // Need to go lower but reach bottom\n      targetLocation > container.scrollTop && reachBottom) {\n        return resolve(targetLocation);\n      }\n\n      requestAnimationFrame(step);\n    });\n  });\n}\ngoTo.framework = {};\n\ngoTo.init = function () {};\n\nvar Goto =\n/** @class */\nfunction (_super) {\n  __extends(Goto, _super);\n\n  function Goto() {\n    var _this = _super.call(this) || this;\n\n    return goTo;\n  }\n\n  Goto.property = 'goTo';\n  return Goto;\n}(_service__WEBPACK_IMPORTED_MODULE_0__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/goto/util.ts\":\n/*!***********************************!*\\\n  !*** ./src/services/goto/util.ts ***!\n  \\***********************************/\n/*! exports provided: getOffset, getContainer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffset\", function() { return getOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getContainer\", function() { return getContainer; });\n// Return target's cumulative offset from the top\nfunction getOffset(target) {\n  if (typeof target === 'number') {\n    return target;\n  }\n\n  var el = $(target);\n\n  if (!el) {\n    throw typeof target === 'string' ? new Error(\"Target element \\\"\" + target + \"\\\" not found.\") : new TypeError(\"Target must be a Number/Selector/HTMLElement/VueComponent, received \" + type(target) + \" instead.\");\n  }\n\n  var totalOffset = 0;\n\n  while (el) {\n    totalOffset += el.offsetTop;\n    el = el.offsetParent;\n  }\n\n  return totalOffset;\n}\nfunction getContainer(container) {\n  var el = $(container);\n  if (el) return el;\n  throw typeof container === 'string' ? new Error(\"Container element \\\"\" + container + \"\\\" not found.\") : new TypeError(\"Container must be a Selector/HTMLElement/VueComponent, received \" + type(container) + \" instead.\");\n}\n\nfunction type(el) {\n  return el == null ? el : el.constructor.name;\n}\n\nfunction $(el) {\n  if (typeof el === 'string') {\n    return document.querySelector(el);\n  } else if (el && el._isVue) {\n    return el.$el;\n  } else if (el instanceof HTMLElement) {\n    return el;\n  } else {\n    return null;\n  }\n}\n\n/***/ }),\n\n/***/ \"./src/services/icons/index.ts\":\n/*!*************************************!*\\\n  !*** ./src/services/icons/index.ts ***!\n  \\*************************************/\n/*! exports provided: Icons */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Icons\", function() { return Icons; });\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _presets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./presets */ \"./src/services/icons/presets/index.ts\");\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}(); // Extensions\n\n\n // Utilities\n\n // Presets\n\n\n\nvar Icons =\n/** @class */\nfunction (_super) {\n  __extends(Icons, _super);\n\n  function Icons(preset) {\n    var _this = _super.call(this) || this;\n\n    var _a = preset[Icons.property],\n        iconfont = _a.iconfont,\n        values = _a.values,\n        component = _a.component;\n    _this.component = component;\n    _this.iconfont = iconfont;\n    _this.values = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mergeDeep\"])(_presets__WEBPACK_IMPORTED_MODULE_2__[\"default\"][iconfont], values);\n    return _this;\n  }\n\n  Icons.property = 'icons';\n  return Icons;\n}(_service__WEBPACK_IMPORTED_MODULE_0__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/fa-svg.ts\":\n/*!**********************************************!*\\\n  !*** ./src/services/icons/presets/fa-svg.ts ***!\n  \\**********************************************/\n/*! exports provided: convertToComponentDeclarations, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToComponentDeclarations\", function() { return convertToComponentDeclarations; });\n/* harmony import */ var _fa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fa */ \"./src/services/icons/presets/fa.ts\");\n\nfunction convertToComponentDeclarations(component, iconSet) {\n  var result = {};\n\n  for (var key in iconSet) {\n    result[key] = {\n      component: component,\n      props: {\n        icon: iconSet[key].split(' fa-')\n      }\n    };\n  }\n\n  return result;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (convertToComponentDeclarations('font-awesome-icon', _fa__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/fa.ts\":\n/*!******************************************!*\\\n  !*** ./src/services/icons/presets/fa.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar icons = {\n  complete: 'fas fa-check',\n  cancel: 'fas fa-times-circle',\n  close: 'fas fa-times',\n  delete: 'fas fa-times-circle',\n  clear: 'fas fa-times-circle',\n  success: 'fas fa-check-circle',\n  info: 'fas fa-info-circle',\n  warning: 'fas fa-exclamation-circle',\n  error: 'fas fa-exclamation-triangle',\n  prev: 'fas fa-chevron-left',\n  next: 'fas fa-chevron-right',\n  checkboxOn: 'fas fa-check-square',\n  checkboxOff: 'far fa-square',\n  checkboxIndeterminate: 'fas fa-minus-square',\n  delimiter: 'fas fa-circle',\n  sort: 'fas fa-sort-up',\n  expand: 'fas fa-chevron-down',\n  menu: 'fas fa-bars',\n  subgroup: 'fas fa-caret-down',\n  dropdown: 'fas fa-caret-down',\n  radioOn: 'far fa-dot-circle',\n  radioOff: 'far fa-circle',\n  edit: 'fas fa-edit',\n  ratingEmpty: 'far fa-star',\n  ratingFull: 'fas fa-star',\n  ratingHalf: 'fas fa-star-half',\n  loading: 'fas fa-sync',\n  first: 'fas fa-step-backward',\n  last: 'fas fa-step-forward',\n  unfold: 'fas fa-arrows-alt-v',\n  file: 'fas fa-paperclip',\n  plus: 'fas fa-plus',\n  minus: 'fas fa-minus'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (icons);\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/fa4.ts\":\n/*!*******************************************!*\\\n  !*** ./src/services/icons/presets/fa4.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar icons = {\n  complete: 'fa fa-check',\n  cancel: 'fa fa-times-circle',\n  close: 'fa fa-times',\n  delete: 'fa fa-times-circle',\n  clear: 'fa fa-times-circle',\n  success: 'fa fa-check-circle',\n  info: 'fa fa-info-circle',\n  warning: 'fa fa-exclamation',\n  error: 'fa fa-exclamation-triangle',\n  prev: 'fa fa-chevron-left',\n  next: 'fa fa-chevron-right',\n  checkboxOn: 'fa fa-check-square',\n  checkboxOff: 'fa fa-square-o',\n  checkboxIndeterminate: 'fa fa-minus-square',\n  delimiter: 'fa fa-circle',\n  sort: 'fa fa-sort-up',\n  expand: 'fa fa-chevron-down',\n  menu: 'fa fa-bars',\n  subgroup: 'fa fa-caret-down',\n  dropdown: 'fa fa-caret-down',\n  radioOn: 'fa fa-dot-circle-o',\n  radioOff: 'fa fa-circle-o',\n  edit: 'fa fa-pencil',\n  ratingEmpty: 'fa fa-star-o',\n  ratingFull: 'fa fa-star',\n  ratingHalf: 'fa fa-star-half-o',\n  loading: 'fa fa-refresh',\n  first: 'fa fa-step-backward',\n  last: 'fa fa-step-forward',\n  unfold: 'fa fa-angle-double-down',\n  file: 'fa fa-paperclip',\n  plus: 'fa fa-plus',\n  minus: 'fa fa-minus'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (icons);\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/index.ts\":\n/*!*********************************************!*\\\n  !*** ./src/services/icons/presets/index.ts ***!\n  \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mdi_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mdi-svg */ \"./src/services/icons/presets/mdi-svg.ts\");\n/* harmony import */ var _md__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./md */ \"./src/services/icons/presets/md.ts\");\n/* harmony import */ var _mdi__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mdi */ \"./src/services/icons/presets/mdi.ts\");\n/* harmony import */ var _fa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fa */ \"./src/services/icons/presets/fa.ts\");\n/* harmony import */ var _fa4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fa4 */ \"./src/services/icons/presets/fa4.ts\");\n/* harmony import */ var _fa_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fa-svg */ \"./src/services/icons/presets/fa-svg.ts\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object.freeze({\n  mdiSvg: _mdi_svg__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  md: _md__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  mdi: _mdi__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  fa: _fa__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  fa4: _fa4__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  faSvg: _fa_svg__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n}));\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/md.ts\":\n/*!******************************************!*\\\n  !*** ./src/services/icons/presets/md.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar icons = {\n  complete: 'check',\n  cancel: 'cancel',\n  close: 'close',\n  delete: 'cancel',\n  clear: 'clear',\n  success: 'check_circle',\n  info: 'info',\n  warning: 'priority_high',\n  error: 'warning',\n  prev: 'chevron_left',\n  next: 'chevron_right',\n  checkboxOn: 'check_box',\n  checkboxOff: 'check_box_outline_blank',\n  checkboxIndeterminate: 'indeterminate_check_box',\n  delimiter: 'fiber_manual_record',\n  sort: 'arrow_upward',\n  expand: 'keyboard_arrow_down',\n  menu: 'menu',\n  subgroup: 'arrow_drop_down',\n  dropdown: 'arrow_drop_down',\n  radioOn: 'radio_button_checked',\n  radioOff: 'radio_button_unchecked',\n  edit: 'edit',\n  ratingEmpty: 'star_border',\n  ratingFull: 'star',\n  ratingHalf: 'star_half',\n  loading: 'cached',\n  first: 'first_page',\n  last: 'last_page',\n  unfold: 'unfold_more',\n  file: 'attach_file',\n  plus: 'add',\n  minus: 'remove'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (icons);\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/mdi-svg.ts\":\n/*!***********************************************!*\\\n  !*** ./src/services/icons/presets/mdi-svg.ts ***!\n  \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar icons = {\n  complete: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z',\n  cancel: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n  close: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n  delete: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n  clear: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n  success: 'M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z',\n  info: 'M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2ZM13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n  warning: 'M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n  error: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n  prev: 'M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z',\n  next: 'M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z',\n  checkboxOn: 'M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n  checkboxOff: 'M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z',\n  checkboxIndeterminate: 'M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n  delimiter: 'M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n  sort: 'M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z',\n  expand: 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z',\n  menu: 'M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z',\n  subgroup: 'M7,10L12,15L17,10H7Z',\n  dropdown: 'M7,10L12,15L17,10H7Z',\n  radioOn: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z',\n  radioOff: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n  edit: 'M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z',\n  ratingEmpty: 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n  ratingFull: 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z',\n  ratingHalf: 'M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n  loading: 'M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12',\n  first: 'M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z',\n  last: 'M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z',\n  unfold: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z',\n  file: 'M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z',\n  plus: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z',\n  minus: 'M19,13H5V11H19V13Z'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (icons);\n\n/***/ }),\n\n/***/ \"./src/services/icons/presets/mdi.ts\":\n/*!*******************************************!*\\\n  !*** ./src/services/icons/presets/mdi.ts ***!\n  \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar icons = {\n  complete: 'mdi-check',\n  cancel: 'mdi-close-circle',\n  close: 'mdi-close',\n  delete: 'mdi-close-circle',\n  clear: 'mdi-close',\n  success: 'mdi-check-circle',\n  info: 'mdi-information',\n  warning: 'mdi-exclamation',\n  error: 'mdi-alert',\n  prev: 'mdi-chevron-left',\n  next: 'mdi-chevron-right',\n  checkboxOn: 'mdi-checkbox-marked',\n  checkboxOff: 'mdi-checkbox-blank-outline',\n  checkboxIndeterminate: 'mdi-minus-box',\n  delimiter: 'mdi-circle',\n  sort: 'mdi-arrow-up',\n  expand: 'mdi-chevron-down',\n  menu: 'mdi-menu',\n  subgroup: 'mdi-menu-down',\n  dropdown: 'mdi-menu-down',\n  radioOn: 'mdi-radiobox-marked',\n  radioOff: 'mdi-radiobox-blank',\n  edit: 'mdi-pencil',\n  ratingEmpty: 'mdi-star-outline',\n  ratingFull: 'mdi-star',\n  ratingHalf: 'mdi-star-half-full',\n  loading: 'mdi-cached',\n  first: 'mdi-page-first',\n  last: 'mdi-page-last',\n  unfold: 'mdi-unfold-more-horizontal',\n  file: 'mdi-paperclip',\n  plus: 'mdi-plus',\n  minus: 'mdi-minus'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (icons);\n\n/***/ }),\n\n/***/ \"./src/services/index.ts\":\n/*!*******************************!*\\\n  !*** ./src/services/index.ts ***!\n  \\*******************************/\n/*! exports provided: Application, Breakpoint, Goto, Icons, Lang, Presets, Theme */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./application */ \"./src/services/application/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Application\", function() { return _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"]; });\n\n/* harmony import */ var _breakpoint__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./breakpoint */ \"./src/services/breakpoint/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Breakpoint\", function() { return _breakpoint__WEBPACK_IMPORTED_MODULE_1__[\"Breakpoint\"]; });\n\n/* harmony import */ var _goto__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./goto */ \"./src/services/goto/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Goto\", function() { return _goto__WEBPACK_IMPORTED_MODULE_2__[\"Goto\"]; });\n\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ \"./src/services/icons/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Icons\", function() { return _icons__WEBPACK_IMPORTED_MODULE_3__[\"Icons\"]; });\n\n/* harmony import */ var _lang__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lang */ \"./src/services/lang/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Lang\", function() { return _lang__WEBPACK_IMPORTED_MODULE_4__[\"Lang\"]; });\n\n/* harmony import */ var _presets__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./presets */ \"./src/services/presets/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Presets\", function() { return _presets__WEBPACK_IMPORTED_MODULE_5__[\"Presets\"]; });\n\n/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./theme */ \"./src/services/theme/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Theme\", function() { return _theme__WEBPACK_IMPORTED_MODULE_6__[\"Theme\"]; });\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/services/lang/index.ts\":\n/*!************************************!*\\\n  !*** ./src/services/lang/index.ts ***!\n  \\************************************/\n/*! exports provided: Lang */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lang\", function() { return Lang; });\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}; // Extensions\n\n\n // Utilities\n\n\n\nvar LANG_PREFIX = '$vuetify.';\nvar fallback = Symbol('Lang fallback');\n\nfunction getTranslation(locale, key, usingDefault, defaultLocale) {\n  if (usingDefault === void 0) {\n    usingDefault = false;\n  }\n\n  var shortKey = key.replace(LANG_PREFIX, '');\n  var translation = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(locale, shortKey, fallback);\n\n  if (translation === fallback) {\n    if (usingDefault) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleError\"])(\"Translation key \\\"\" + shortKey + \"\\\" not found in fallback\");\n      translation = key;\n    } else {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleWarn\"])(\"Translation key \\\"\" + shortKey + \"\\\" not found, falling back to default\");\n      translation = getTranslation(defaultLocale, key, true, defaultLocale);\n    }\n  }\n\n  return translation;\n}\n\nvar Lang =\n/** @class */\nfunction (_super) {\n  __extends(Lang, _super);\n\n  function Lang(preset) {\n    var _this = _super.call(this) || this;\n\n    _this.defaultLocale = 'en';\n    var _a = preset[Lang.property],\n        current = _a.current,\n        locales = _a.locales,\n        t = _a.t;\n    _this.current = current;\n    _this.locales = locales;\n    _this.translator = t || _this.defaultTranslator;\n    return _this;\n  }\n\n  Lang.prototype.currentLocale = function (key) {\n    var translation = this.locales[this.current];\n    var defaultLocale = this.locales[this.defaultLocale];\n    return getTranslation(translation, key, false, defaultLocale);\n  };\n\n  Lang.prototype.t = function (key) {\n    var params = [];\n\n    for (var _i = 1; _i < arguments.length; _i++) {\n      params[_i - 1] = arguments[_i];\n    }\n\n    if (!key.startsWith(LANG_PREFIX)) return this.replace(key, params);\n    return this.translator.apply(this, __spreadArray([key], __read(params), false));\n  };\n\n  Lang.prototype.defaultTranslator = function (key) {\n    var params = [];\n\n    for (var _i = 1; _i < arguments.length; _i++) {\n      params[_i - 1] = arguments[_i];\n    }\n\n    return this.replace(this.currentLocale(key), params);\n  };\n\n  Lang.prototype.replace = function (str, params) {\n    return str.replace(/\\{(\\d+)\\}/g, function (match, index) {\n      /* istanbul ignore next */\n      return String(params[+index]);\n    });\n  };\n\n  Lang.property = 'lang';\n  return Lang;\n}(_service__WEBPACK_IMPORTED_MODULE_0__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/presets/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/services/presets/index.ts ***!\n  \\***************************************/\n/*! exports provided: Presets */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Presets\", function() { return Presets; });\n/* harmony import */ var _presets_default__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../presets/default */ \"./src/presets/default/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}; // Preset\n\n\n // Utilities\n\n\n\n\n\nvar Presets =\n/** @class */\nfunction (_super) {\n  __extends(Presets, _super);\n\n  function Presets(parentPreset, parent) {\n    var _this = _super.call(this) || this; // The default preset\n\n\n    var defaultPreset = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"mergeDeep\"])({}, _presets_default__WEBPACK_IMPORTED_MODULE_0__[\"preset\"]); // The user provided preset\n\n    var userPreset = parent.userPreset; // The user provided global preset\n\n    var _a = userPreset.preset,\n        globalPreset = _a === void 0 ? {} : _a,\n        preset = __rest(userPreset, [\"preset\"]);\n\n    if (globalPreset.preset != null) {\n      Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"])('Global presets do not support the **preset** option, it can be safely omitted');\n    }\n\n    parent.preset = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"mergeDeep\"])(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"mergeDeep\"])(defaultPreset, globalPreset), preset);\n    return _this;\n  }\n\n  Presets.property = 'presets';\n  return Presets;\n}(_service__WEBPACK_IMPORTED_MODULE_3__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/service/index.ts\":\n/*!***************************************!*\\\n  !*** ./src/services/service/index.ts ***!\n  \\***************************************/\n/*! exports provided: Service */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Service\", function() { return Service; });\nvar Service =\n/** @class */\nfunction () {\n  function Service() {\n    this.framework = {};\n  }\n\n  Service.prototype.init = function (root, ssrContext) {};\n\n  return Service;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/services/theme/index.ts\":\n/*!*************************************!*\\\n  !*** ./src/services/theme/index.ts ***!\n  \\*************************************/\n/*! exports provided: Theme */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Theme\", function() { return Theme; });\n/* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../service */ \"./src/services/service/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/services/theme/utils.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n/* eslint-disable no-multi-spaces */\n// Extensions\n\n\n // Utilities\n\n\n // Types\n\n\n\nvar Theme =\n/** @class */\nfunction (_super) {\n  __extends(Theme, _super);\n\n  function Theme(preset) {\n    var _this = _super.call(this) || this;\n\n    _this.disabled = false;\n    _this.isDark = null;\n    _this.unwatch = null;\n    _this.vueMeta = null;\n    var _a = preset[Theme.property],\n        dark = _a.dark,\n        disable = _a.disable,\n        options = _a.options,\n        themes = _a.themes;\n    _this.dark = Boolean(dark);\n    _this.defaults = _this.themes = themes;\n    _this.options = options;\n\n    if (disable) {\n      _this.disabled = true;\n      return _this;\n    }\n\n    _this.themes = {\n      dark: _this.fillVariant(themes.dark, true),\n      light: _this.fillVariant(themes.light, false)\n    };\n    return _this;\n  }\n\n  Object.defineProperty(Theme.prototype, \"css\", {\n    // When setting css, check for element and apply new values\n\n    /* eslint-disable-next-line accessor-pairs */\n    set: function set(val) {\n      if (this.vueMeta) {\n        if (this.isVueMeta23) {\n          this.applyVueMeta23();\n        }\n\n        return;\n      }\n\n      this.checkOrCreateStyleElement() && (this.styleEl.innerHTML = val);\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Theme.prototype, \"dark\", {\n    get: function get() {\n      return Boolean(this.isDark);\n    },\n    set: function set(val) {\n      var oldDark = this.isDark;\n      this.isDark = val; // Only apply theme after dark\n      // has already been set before\n\n      oldDark != null && this.applyTheme();\n    },\n    enumerable: false,\n    configurable: true\n  }); // Apply current theme default\n  // only called on client side\n\n  Theme.prototype.applyTheme = function () {\n    if (this.disabled) return this.clearCss();\n    this.css = this.generatedStyles;\n  };\n\n  Theme.prototype.clearCss = function () {\n    this.css = '';\n  }; // Initialize theme for SSR and SPA\n  // Attach to ssrContext head or\n  // apply new theme to document\n\n\n  Theme.prototype.init = function (root, ssrContext) {\n    if (this.disabled) return;\n    /* istanbul ignore else */\n\n    if (root.$meta) {\n      this.initVueMeta(root);\n    } else if (ssrContext) {\n      this.initSSR(ssrContext);\n    }\n\n    this.initTheme(root);\n  }; // Allows for you to set target theme\n\n\n  Theme.prototype.setTheme = function (theme, value) {\n    this.themes[theme] = Object.assign(this.themes[theme], value);\n    this.applyTheme();\n  }; // Reset theme defaults\n\n\n  Theme.prototype.resetThemes = function () {\n    this.themes.light = Object.assign({}, this.defaults.light);\n    this.themes.dark = Object.assign({}, this.defaults.dark);\n    this.applyTheme();\n  }; // Check for existence of style element\n\n\n  Theme.prototype.checkOrCreateStyleElement = function () {\n    this.styleEl = document.getElementById('vuetify-theme-stylesheet');\n    /* istanbul ignore next */\n\n    if (this.styleEl) return true;\n    this.genStyleElement(); // If doesn't have it, create it\n\n    return Boolean(this.styleEl);\n  };\n\n  Theme.prototype.fillVariant = function (theme, dark) {\n    if (theme === void 0) {\n      theme = {};\n    }\n\n    var defaultTheme = this.themes[dark ? 'dark' : 'light'];\n    return Object.assign({}, defaultTheme, theme);\n  }; // Generate the style element\n  // if applicable\n\n\n  Theme.prototype.genStyleElement = function () {\n    /* istanbul ignore if */\n    if (typeof document === 'undefined') return;\n    /* istanbul ignore next */\n\n    this.styleEl = document.createElement('style');\n    this.styleEl.type = 'text/css';\n    this.styleEl.id = 'vuetify-theme-stylesheet';\n\n    if (this.options.cspNonce) {\n      this.styleEl.setAttribute('nonce', this.options.cspNonce);\n    }\n\n    document.head.appendChild(this.styleEl);\n  };\n\n  Theme.prototype.initVueMeta = function (root) {\n    var _this = this;\n\n    this.vueMeta = root.$meta();\n\n    if (this.isVueMeta23) {\n      // vue-meta needs to apply after mounted()\n      root.$nextTick(function () {\n        _this.applyVueMeta23();\n      });\n      return;\n    }\n\n    var metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo';\n    var metaInfo = root.$options[metaKeyName] || {};\n\n    root.$options[metaKeyName] = function () {\n      metaInfo.style = metaInfo.style || [];\n      var vuetifyStylesheet = metaInfo.style.find(function (s) {\n        return s.id === 'vuetify-theme-stylesheet';\n      });\n\n      if (!vuetifyStylesheet) {\n        metaInfo.style.push({\n          cssText: _this.generatedStyles,\n          type: 'text/css',\n          id: 'vuetify-theme-stylesheet',\n          nonce: (_this.options || {}).cspNonce\n        });\n      } else {\n        vuetifyStylesheet.cssText = _this.generatedStyles;\n      }\n\n      return metaInfo;\n    };\n  };\n\n  Theme.prototype.applyVueMeta23 = function () {\n    var set = this.vueMeta.addApp('vuetify').set;\n    set({\n      style: [{\n        cssText: this.generatedStyles,\n        type: 'text/css',\n        id: 'vuetify-theme-stylesheet',\n        nonce: this.options.cspNonce\n      }]\n    });\n  };\n\n  Theme.prototype.initSSR = function (ssrContext) {\n    // SSR\n    var nonce = this.options.cspNonce ? \" nonce=\\\"\" + this.options.cspNonce + \"\\\"\" : '';\n    ssrContext.head = ssrContext.head || '';\n    ssrContext.head += \"<style type=\\\"text/css\\\" id=\\\"vuetify-theme-stylesheet\\\"\" + nonce + \">\" + this.generatedStyles + \"</style>\";\n  };\n\n  Theme.prototype.initTheme = function (root) {\n    var _this = this; // Only watch for reactivity on client side\n\n\n    if (typeof document === 'undefined') return; // If we get here somehow, ensure\n    // existing instance is removed\n\n    if (this.unwatch) {\n      this.unwatch();\n      this.unwatch = null;\n    } // TODO: Update to use RFC if merged\n    // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n\n\n    root.$once('hook:created', function () {\n      var obs = vue__WEBPACK_IMPORTED_MODULE_3___default.a.observable({\n        themes: _this.themes\n      });\n      _this.unwatch = root.$watch(function () {\n        return obs.themes;\n      }, function () {\n        return _this.applyTheme();\n      }, {\n        deep: true\n      });\n    });\n    this.applyTheme();\n  };\n\n  Object.defineProperty(Theme.prototype, \"currentTheme\", {\n    get: function get() {\n      var target = this.dark ? 'dark' : 'light';\n      return this.themes[target];\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Theme.prototype, \"generatedStyles\", {\n    get: function get() {\n      var theme = this.parsedTheme;\n      /* istanbul ignore next */\n\n      var options = this.options || {};\n      var css;\n\n      if (options.themeCache != null) {\n        css = options.themeCache.get(theme);\n        /* istanbul ignore if */\n\n        if (css != null) return css;\n      }\n\n      css = _utils__WEBPACK_IMPORTED_MODULE_1__[\"genStyles\"](theme, options.customProperties);\n\n      if (options.minifyTheme != null) {\n        css = options.minifyTheme(css);\n      }\n\n      if (options.themeCache != null) {\n        options.themeCache.set(theme, css);\n      }\n\n      return css;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Theme.prototype, \"parsedTheme\", {\n    get: function get() {\n      return _utils__WEBPACK_IMPORTED_MODULE_1__[\"parse\"](this.currentTheme || {}, undefined, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getNestedValue\"])(this.options, ['variations'], true));\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Theme.prototype, \"isVueMeta23\", {\n    // Is using v2.3 of vue-meta\n    // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n    get: function get() {\n      return typeof this.vueMeta.addApp === 'function';\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Theme.property = 'theme';\n  return Theme;\n}(_service__WEBPACK_IMPORTED_MODULE_0__[\"Service\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/services/theme/utils.ts\":\n/*!*************************************!*\\\n  !*** ./src/services/theme/utils.ts ***!\n  \\*************************************/\n/*! exports provided: parse, genStyles, genVariations, lighten, darken */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genStyles\", function() { return genStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genVariations\", function() { return genVariations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lighten\", function() { return lighten; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darken\", function() { return darken; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_colorUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/colorUtils */ \"./src/util/colorUtils.ts\");\n/* harmony import */ var _util_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/color/transformSRGB */ \"./src/util/color/transformSRGB.ts\");\n/* harmony import */ var _util_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/color/transformCIELAB */ \"./src/util/color/transformCIELAB.ts\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\n\n\n\nfunction parse(theme, isItem, variations) {\n  if (isItem === void 0) {\n    isItem = false;\n  }\n\n  if (variations === void 0) {\n    variations = true;\n  }\n\n  var anchor = theme.anchor,\n      variant = __rest(theme, [\"anchor\"]);\n\n  var colors = Object.keys(variant);\n  var parsedTheme = {};\n\n  for (var i = 0; i < colors.length; ++i) {\n    var name = colors[i];\n    var value = theme[name];\n    if (value == null) continue;\n\n    if (!variations) {\n      parsedTheme[name] = {\n        base: Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"intToHex\"])(Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"colorToInt\"])(value))\n      };\n    } else if (isItem) {\n      /* istanbul ignore else */\n      if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n        parsedTheme[name] = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"colorToHex\"])(value);\n      }\n    } else if (_typeof(value) === 'object') {\n      parsedTheme[name] = parse(value, true, variations);\n    } else {\n      parsedTheme[name] = genVariations(name, Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"colorToInt\"])(value));\n    }\n  }\n\n  if (!isItem) {\n    parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base;\n  }\n\n  return parsedTheme;\n}\n/**\n * Generate the CSS for a base color (.primary)\n */\n\nvar genBaseColor = function genBaseColor(name, value) {\n  return \"\\n.v-application .\" + name + \" {\\n  background-color: \" + value + \" !important;\\n  border-color: \" + value + \" !important;\\n}\\n.v-application .\" + name + \"--text {\\n  color: \" + value + \" !important;\\n  caret-color: \" + value + \" !important;\\n}\";\n};\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\n\n\nvar genVariantColor = function genVariantColor(name, variant, value) {\n  var _a = __read(variant.split(/(\\d)/, 2), 2),\n      type = _a[0],\n      n = _a[1];\n\n  return \"\\n.v-application .\" + name + \".\" + type + \"-\" + n + \" {\\n  background-color: \" + value + \" !important;\\n  border-color: \" + value + \" !important;\\n}\\n.v-application .\" + name + \"--text.text--\" + type + \"-\" + n + \" {\\n  color: \" + value + \" !important;\\n  caret-color: \" + value + \" !important;\\n}\";\n};\n\nvar genColorVariableName = function genColorVariableName(name, variant) {\n  if (variant === void 0) {\n    variant = 'base';\n  }\n\n  return \"--v-\" + name + \"-\" + variant;\n};\n\nvar genColorVariable = function genColorVariable(name, variant) {\n  if (variant === void 0) {\n    variant = 'base';\n  }\n\n  return \"var(\" + genColorVariableName(name, variant) + \")\";\n};\n\nfunction genStyles(theme, cssVar) {\n  if (cssVar === void 0) {\n    cssVar = false;\n  }\n\n  var anchor = theme.anchor,\n      variant = __rest(theme, [\"anchor\"]);\n\n  var colors = Object.keys(variant);\n  if (!colors.length) return '';\n  var variablesCss = '';\n  var css = '';\n  var aColor = cssVar ? genColorVariable('anchor') : anchor;\n  css += \".v-application a { color: \" + aColor + \"; }\";\n  cssVar && (variablesCss += \"  \" + genColorVariableName('anchor') + \": \" + anchor + \";\\n\");\n\n  for (var i = 0; i < colors.length; ++i) {\n    var name = colors[i];\n    var value = theme[name];\n    css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base);\n    cssVar && (variablesCss += \"  \" + genColorVariableName(name) + \": \" + value.base + \";\\n\");\n    var variants = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(value);\n\n    for (var i_1 = 0; i_1 < variants.length; ++i_1) {\n      var variant_1 = variants[i_1];\n      var variantValue = value[variant_1];\n      if (variant_1 === 'base') continue;\n      css += genVariantColor(name, variant_1, cssVar ? genColorVariable(name, variant_1) : variantValue);\n      cssVar && (variablesCss += \"  \" + genColorVariableName(name, variant_1) + \": \" + variantValue + \";\\n\");\n    }\n  }\n\n  if (cssVar) {\n    variablesCss = \":root {\\n\" + variablesCss + \"}\\n\\n\";\n  }\n\n  return variablesCss + css;\n}\nfunction genVariations(name, value) {\n  var values = {\n    base: Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"intToHex\"])(value)\n  };\n\n  for (var i = 5; i > 0; --i) {\n    values[\"lighten\" + i] = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"intToHex\"])(lighten(value, i));\n  }\n\n  for (var i = 1; i <= 4; ++i) {\n    values[\"darken\" + i] = Object(_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__[\"intToHex\"])(darken(value, i));\n  }\n\n  return values;\n}\nfunction lighten(value, amount) {\n  var lab = _util_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_3__[\"fromXYZ\"](_util_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__[\"toXYZ\"](value));\n  lab[0] = lab[0] + amount * 10;\n  return _util_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__[\"fromXYZ\"](_util_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_3__[\"toXYZ\"](lab));\n}\nfunction darken(value, amount) {\n  var lab = _util_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_3__[\"fromXYZ\"](_util_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__[\"toXYZ\"](value));\n  lab[0] = lab[0] - amount * 10;\n  return _util_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__[\"fromXYZ\"](_util_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_3__[\"toXYZ\"](lab));\n}\n\n/***/ }),\n\n/***/ \"./src/styles/components/_selection-controls.sass\":\n/*!********************************************************!*\\\n  !*** ./src/styles/components/_selection-controls.sass ***!\n  \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/styles/main.sass\":\n/*!******************************!*\\\n  !*** ./src/styles/main.sass ***!\n  \\******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/util/color/transformCIELAB.ts\":\n/*!*******************************************!*\\\n  !*** ./src/util/color/transformCIELAB.ts ***!\n  \\*******************************************/\n/*! exports provided: fromXYZ, toXYZ */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromXYZ\", function() { return fromXYZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toXYZ\", function() { return toXYZ; });\nvar delta = 0.20689655172413793; // 6÷29\n\nvar cielabForwardTransform = function cielabForwardTransform(t) {\n  return t > Math.pow(delta, 3) ? Math.cbrt(t) : t / (3 * Math.pow(delta, 2)) + 4 / 29;\n};\n\nvar cielabReverseTransform = function cielabReverseTransform(t) {\n  return t > delta ? Math.pow(t, 3) : 3 * Math.pow(delta, 2) * (t - 4 / 29);\n};\n\nfunction fromXYZ(xyz) {\n  var transform = cielabForwardTransform;\n  var transformedY = transform(xyz[1]);\n  return [116 * transformedY - 16, 500 * (transform(xyz[0] / 0.95047) - transformedY), 200 * (transformedY - transform(xyz[2] / 1.08883))];\n}\nfunction toXYZ(lab) {\n  var transform = cielabReverseTransform;\n  var Ln = (lab[0] + 16) / 116;\n  return [transform(Ln + lab[1] / 500) * 0.95047, transform(Ln), transform(Ln - lab[2] / 200) * 1.08883];\n}\n\n/***/ }),\n\n/***/ \"./src/util/color/transformSRGB.ts\":\n/*!*****************************************!*\\\n  !*** ./src/util/color/transformSRGB.ts ***!\n  \\*****************************************/\n/*! exports provided: fromXYZ, toXYZ */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromXYZ\", function() { return fromXYZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toXYZ\", function() { return toXYZ; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n // For converting XYZ to sRGB\n\nvar srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570]]; // Forward gamma adjust\n\nvar srgbForwardTransform = function srgbForwardTransform(C) {\n  return C <= 0.0031308 ? C * 12.92 : 1.055 * Math.pow(C, 1 / 2.4) - 0.055;\n}; // For converting sRGB to XYZ\n\n\nvar srgbReverseMatrix = [[0.4124, 0.3576, 0.1805], [0.2126, 0.7152, 0.0722], [0.0193, 0.1192, 0.9505]]; // Reverse gamma adjust\n\nvar srgbReverseTransform = function srgbReverseTransform(C) {\n  return C <= 0.04045 ? C / 12.92 : Math.pow((C + 0.055) / 1.055, 2.4);\n};\n\nfunction fromXYZ(xyz) {\n  var rgb = Array(3);\n  var transform = srgbForwardTransform;\n  var matrix = srgbForwardMatrix; // Matrix transform, then gamma adjustment\n\n  for (var i = 0; i < 3; ++i) {\n    rgb[i] = Math.round(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"clamp\"])(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);\n  } // Rescale back to [0, 255]\n\n\n  return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0);\n}\nfunction toXYZ(rgb) {\n  var xyz = [0, 0, 0];\n  var transform = srgbReverseTransform;\n  var matrix = srgbReverseMatrix; // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n\n  var r = transform((rgb >> 16 & 0xff) / 255);\n  var g = transform((rgb >> 8 & 0xff) / 255);\n  var b = transform((rgb >> 0 & 0xff) / 255); // Matrix color space transform\n\n  for (var i = 0; i < 3; ++i) {\n    xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b;\n  }\n\n  return xyz;\n}\n\n/***/ }),\n\n/***/ \"./src/util/colorUtils.ts\":\n/*!********************************!*\\\n  !*** ./src/util/colorUtils.ts ***!\n  \\********************************/\n/*! exports provided: isCssColor, colorToInt, classToHex, intToHex, colorToHex, HSVAtoRGBA, RGBAtoHSVA, HSVAtoHSLA, HSLAtoHSVA, RGBAtoCSS, RGBtoCSS, RGBAtoHex, HexToRGBA, HexToHSVA, HSVAtoHex, parseHex, parseGradient, RGBtoInt, contrastRatio */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCssColor\", function() { return isCssColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorToInt\", function() { return colorToInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"classToHex\", function() { return classToHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intToHex\", function() { return intToHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorToHex\", function() { return colorToHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HSVAtoRGBA\", function() { return HSVAtoRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RGBAtoHSVA\", function() { return RGBAtoHSVA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HSVAtoHSLA\", function() { return HSVAtoHSLA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HSLAtoHSVA\", function() { return HSLAtoHSVA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RGBAtoCSS\", function() { return RGBAtoCSS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RGBtoCSS\", function() { return RGBtoCSS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RGBAtoHex\", function() { return RGBAtoHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HexToRGBA\", function() { return HexToRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HexToHSVA\", function() { return HexToHSVA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HSVAtoHex\", function() { return HSVAtoHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseHex\", function() { return parseHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseGradient\", function() { return parseGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RGBtoInt\", function() { return RGBtoInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"contrastRatio\", function() { return contrastRatio; });\n/* harmony import */ var _console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./console */ \"./src/util/console.ts\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./color/transformSRGB */ \"./src/util/color/transformSRGB.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n}; // Utilities\n\n\n\n\n\nfunction isCssColor(color) {\n  return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/);\n}\nfunction colorToInt(color) {\n  var rgb;\n\n  if (typeof color === 'number') {\n    rgb = color;\n  } else if (typeof color === 'string') {\n    var c = color[0] === '#' ? color.substring(1) : color;\n\n    if (c.length === 3) {\n      c = c.split('').map(function (char) {\n        return char + char;\n      }).join('');\n    }\n\n    if (c.length !== 6) {\n      Object(_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])(\"'\" + color + \"' is not a valid rgb color\");\n    }\n\n    rgb = parseInt(c, 16);\n  } else {\n    throw new TypeError(\"Colors can only be numbers or strings, recieved \" + (color == null ? color : color.constructor.name) + \" instead\");\n  }\n\n  if (rgb < 0) {\n    Object(_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])(\"Colors cannot be negative: '\" + color + \"'\");\n    rgb = 0;\n  } else if (rgb > 0xffffff || isNaN(rgb)) {\n    Object(_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])(\"'\" + color + \"' is not a valid rgb color\");\n    rgb = 0xffffff;\n  }\n\n  return rgb;\n}\nfunction classToHex(color, colors, currentTheme) {\n  var _a = __read(color.toString().trim().replace('-', '').split(' ', 2), 2),\n      colorName = _a[0],\n      colorModifier = _a[1];\n\n  var hexColor = '';\n\n  if (colorName && colorName in colors) {\n    if (colorModifier && colorModifier in colors[colorName]) {\n      hexColor = colors[colorName][colorModifier];\n    } else if ('base' in colors[colorName]) {\n      hexColor = colors[colorName].base;\n    }\n  } else if (colorName && colorName in currentTheme) {\n    hexColor = currentTheme[colorName];\n  }\n\n  return hexColor;\n}\nfunction intToHex(color) {\n  var hexColor = color.toString(16);\n  if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor;\n  return '#' + hexColor;\n}\nfunction colorToHex(color) {\n  return intToHex(colorToInt(color));\n}\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\n\nfunction HSVAtoRGBA(hsva) {\n  var h = hsva.h,\n      s = hsva.s,\n      v = hsva.v,\n      a = hsva.a;\n\n  var f = function f(n) {\n    var k = (n + h / 60) % 6;\n    return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  };\n\n  var rgb = [f(5), f(3), f(1)].map(function (v) {\n    return Math.round(v * 255);\n  });\n  return {\n    r: rgb[0],\n    g: rgb[1],\n    b: rgb[2],\n    a: a\n  };\n}\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\n\nfunction RGBAtoHSVA(rgba) {\n  if (!rgba) return {\n    h: 0,\n    s: 1,\n    v: 1,\n    a: 1\n  };\n  var r = rgba.r / 255;\n  var g = rgba.g / 255;\n  var b = rgba.b / 255;\n  var max = Math.max(r, g, b);\n  var min = Math.min(r, g, b);\n  var h = 0;\n\n  if (max !== min) {\n    if (max === r) {\n      h = 60 * (0 + (g - b) / (max - min));\n    } else if (max === g) {\n      h = 60 * (2 + (b - r) / (max - min));\n    } else if (max === b) {\n      h = 60 * (4 + (r - g) / (max - min));\n    }\n  }\n\n  if (h < 0) h = h + 360;\n  var s = max === 0 ? 0 : (max - min) / max;\n  var hsv = [h, s, max];\n  return {\n    h: hsv[0],\n    s: hsv[1],\n    v: hsv[2],\n    a: rgba.a\n  };\n}\nfunction HSVAtoHSLA(hsva) {\n  var h = hsva.h,\n      s = hsva.s,\n      v = hsva.v,\n      a = hsva.a;\n  var l = v - v * s / 2;\n  var sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l);\n  return {\n    h: h,\n    s: sprime,\n    l: l,\n    a: a\n  };\n}\nfunction HSLAtoHSVA(hsl) {\n  var h = hsl.h,\n      s = hsl.s,\n      l = hsl.l,\n      a = hsl.a;\n  var v = l + s * Math.min(l, 1 - l);\n  var sprime = v === 0 ? 0 : 2 - 2 * l / v;\n  return {\n    h: h,\n    s: sprime,\n    v: v,\n    a: a\n  };\n}\nfunction RGBAtoCSS(rgba) {\n  return \"rgba(\" + rgba.r + \", \" + rgba.g + \", \" + rgba.b + \", \" + rgba.a + \")\";\n}\nfunction RGBtoCSS(rgba) {\n  return RGBAtoCSS(__assign(__assign({}, rgba), {\n    a: 1\n  }));\n}\nfunction RGBAtoHex(rgba) {\n  var toHex = function toHex(v) {\n    var h = Math.round(v).toString(16);\n    return ('00'.substr(0, 2 - h.length) + h).toUpperCase();\n  };\n\n  return \"#\" + [toHex(rgba.r), toHex(rgba.g), toHex(rgba.b), toHex(Math.round(rgba.a * 255))].join('');\n}\nfunction HexToRGBA(hex) {\n  var rgba = Object(_helpers__WEBPACK_IMPORTED_MODULE_1__[\"chunk\"])(hex.slice(1), 2).map(function (c) {\n    return parseInt(c, 16);\n  });\n  return {\n    r: rgba[0],\n    g: rgba[1],\n    b: rgba[2],\n    a: Math.round(rgba[3] / 255 * 100) / 100\n  };\n}\nfunction HexToHSVA(hex) {\n  var rgb = HexToRGBA(hex);\n  return RGBAtoHSVA(rgb);\n}\nfunction HSVAtoHex(hsva) {\n  return RGBAtoHex(HSVAtoRGBA(hsva));\n}\nfunction parseHex(hex) {\n  if (hex.startsWith('#')) {\n    hex = hex.slice(1);\n  }\n\n  hex = hex.replace(/([^0-9a-f])/gi, 'F');\n\n  if (hex.length === 3 || hex.length === 4) {\n    hex = hex.split('').map(function (x) {\n      return x + x;\n    }).join('');\n  }\n\n  if (hex.length === 6) {\n    hex = Object(_helpers__WEBPACK_IMPORTED_MODULE_1__[\"padEnd\"])(hex, 8, 'F');\n  } else {\n    hex = Object(_helpers__WEBPACK_IMPORTED_MODULE_1__[\"padEnd\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_1__[\"padEnd\"])(hex, 6), 8, 'F');\n  }\n\n  return (\"#\" + hex).toUpperCase().substr(0, 9);\n}\nfunction parseGradient(gradient, colors, currentTheme) {\n  return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, function (x) {\n    return classToHex(x, colors, currentTheme) || x;\n  }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, function (x) {\n    return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',');\n  });\n}\nfunction RGBtoInt(rgba) {\n  return (rgba.r << 16) + (rgba.g << 8) + rgba.b;\n}\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\n\nfunction contrastRatio(c1, c2) {\n  var _a = __read(Object(_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__[\"toXYZ\"])(RGBtoInt(c1)), 2),\n      y1 = _a[1];\n\n  var _b = __read(Object(_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__[\"toXYZ\"])(RGBtoInt(c2)), 2),\n      y2 = _b[1];\n\n  return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05);\n}\n\n/***/ }),\n\n/***/ \"./src/util/colors.ts\":\n/*!****************************!*\\\n  !*** ./src/util/colors.ts ***!\n  \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar red = Object.freeze({\n  base: '#f44336',\n  lighten5: '#ffebee',\n  lighten4: '#ffcdd2',\n  lighten3: '#ef9a9a',\n  lighten2: '#e57373',\n  lighten1: '#ef5350',\n  darken1: '#e53935',\n  darken2: '#d32f2f',\n  darken3: '#c62828',\n  darken4: '#b71c1c',\n  accent1: '#ff8a80',\n  accent2: '#ff5252',\n  accent3: '#ff1744',\n  accent4: '#d50000'\n});\nvar pink = Object.freeze({\n  base: '#e91e63',\n  lighten5: '#fce4ec',\n  lighten4: '#f8bbd0',\n  lighten3: '#f48fb1',\n  lighten2: '#f06292',\n  lighten1: '#ec407a',\n  darken1: '#d81b60',\n  darken2: '#c2185b',\n  darken3: '#ad1457',\n  darken4: '#880e4f',\n  accent1: '#ff80ab',\n  accent2: '#ff4081',\n  accent3: '#f50057',\n  accent4: '#c51162'\n});\nvar purple = Object.freeze({\n  base: '#9c27b0',\n  lighten5: '#f3e5f5',\n  lighten4: '#e1bee7',\n  lighten3: '#ce93d8',\n  lighten2: '#ba68c8',\n  lighten1: '#ab47bc',\n  darken1: '#8e24aa',\n  darken2: '#7b1fa2',\n  darken3: '#6a1b9a',\n  darken4: '#4a148c',\n  accent1: '#ea80fc',\n  accent2: '#e040fb',\n  accent3: '#d500f9',\n  accent4: '#aa00ff'\n});\nvar deepPurple = Object.freeze({\n  base: '#673ab7',\n  lighten5: '#ede7f6',\n  lighten4: '#d1c4e9',\n  lighten3: '#b39ddb',\n  lighten2: '#9575cd',\n  lighten1: '#7e57c2',\n  darken1: '#5e35b1',\n  darken2: '#512da8',\n  darken3: '#4527a0',\n  darken4: '#311b92',\n  accent1: '#b388ff',\n  accent2: '#7c4dff',\n  accent3: '#651fff',\n  accent4: '#6200ea'\n});\nvar indigo = Object.freeze({\n  base: '#3f51b5',\n  lighten5: '#e8eaf6',\n  lighten4: '#c5cae9',\n  lighten3: '#9fa8da',\n  lighten2: '#7986cb',\n  lighten1: '#5c6bc0',\n  darken1: '#3949ab',\n  darken2: '#303f9f',\n  darken3: '#283593',\n  darken4: '#1a237e',\n  accent1: '#8c9eff',\n  accent2: '#536dfe',\n  accent3: '#3d5afe',\n  accent4: '#304ffe'\n});\nvar blue = Object.freeze({\n  base: '#2196f3',\n  lighten5: '#e3f2fd',\n  lighten4: '#bbdefb',\n  lighten3: '#90caf9',\n  lighten2: '#64b5f6',\n  lighten1: '#42a5f5',\n  darken1: '#1e88e5',\n  darken2: '#1976d2',\n  darken3: '#1565c0',\n  darken4: '#0d47a1',\n  accent1: '#82b1ff',\n  accent2: '#448aff',\n  accent3: '#2979ff',\n  accent4: '#2962ff'\n});\nvar lightBlue = Object.freeze({\n  base: '#03a9f4',\n  lighten5: '#e1f5fe',\n  lighten4: '#b3e5fc',\n  lighten3: '#81d4fa',\n  lighten2: '#4fc3f7',\n  lighten1: '#29b6f6',\n  darken1: '#039be5',\n  darken2: '#0288d1',\n  darken3: '#0277bd',\n  darken4: '#01579b',\n  accent1: '#80d8ff',\n  accent2: '#40c4ff',\n  accent3: '#00b0ff',\n  accent4: '#0091ea'\n});\nvar cyan = Object.freeze({\n  base: '#00bcd4',\n  lighten5: '#e0f7fa',\n  lighten4: '#b2ebf2',\n  lighten3: '#80deea',\n  lighten2: '#4dd0e1',\n  lighten1: '#26c6da',\n  darken1: '#00acc1',\n  darken2: '#0097a7',\n  darken3: '#00838f',\n  darken4: '#006064',\n  accent1: '#84ffff',\n  accent2: '#18ffff',\n  accent3: '#00e5ff',\n  accent4: '#00b8d4'\n});\nvar teal = Object.freeze({\n  base: '#009688',\n  lighten5: '#e0f2f1',\n  lighten4: '#b2dfdb',\n  lighten3: '#80cbc4',\n  lighten2: '#4db6ac',\n  lighten1: '#26a69a',\n  darken1: '#00897b',\n  darken2: '#00796b',\n  darken3: '#00695c',\n  darken4: '#004d40',\n  accent1: '#a7ffeb',\n  accent2: '#64ffda',\n  accent3: '#1de9b6',\n  accent4: '#00bfa5'\n});\nvar green = Object.freeze({\n  base: '#4caf50',\n  lighten5: '#e8f5e9',\n  lighten4: '#c8e6c9',\n  lighten3: '#a5d6a7',\n  lighten2: '#81c784',\n  lighten1: '#66bb6a',\n  darken1: '#43a047',\n  darken2: '#388e3c',\n  darken3: '#2e7d32',\n  darken4: '#1b5e20',\n  accent1: '#b9f6ca',\n  accent2: '#69f0ae',\n  accent3: '#00e676',\n  accent4: '#00c853'\n});\nvar lightGreen = Object.freeze({\n  base: '#8bc34a',\n  lighten5: '#f1f8e9',\n  lighten4: '#dcedc8',\n  lighten3: '#c5e1a5',\n  lighten2: '#aed581',\n  lighten1: '#9ccc65',\n  darken1: '#7cb342',\n  darken2: '#689f38',\n  darken3: '#558b2f',\n  darken4: '#33691e',\n  accent1: '#ccff90',\n  accent2: '#b2ff59',\n  accent3: '#76ff03',\n  accent4: '#64dd17'\n});\nvar lime = Object.freeze({\n  base: '#cddc39',\n  lighten5: '#f9fbe7',\n  lighten4: '#f0f4c3',\n  lighten3: '#e6ee9c',\n  lighten2: '#dce775',\n  lighten1: '#d4e157',\n  darken1: '#c0ca33',\n  darken2: '#afb42b',\n  darken3: '#9e9d24',\n  darken4: '#827717',\n  accent1: '#f4ff81',\n  accent2: '#eeff41',\n  accent3: '#c6ff00',\n  accent4: '#aeea00'\n});\nvar yellow = Object.freeze({\n  base: '#ffeb3b',\n  lighten5: '#fffde7',\n  lighten4: '#fff9c4',\n  lighten3: '#fff59d',\n  lighten2: '#fff176',\n  lighten1: '#ffee58',\n  darken1: '#fdd835',\n  darken2: '#fbc02d',\n  darken3: '#f9a825',\n  darken4: '#f57f17',\n  accent1: '#ffff8d',\n  accent2: '#ffff00',\n  accent3: '#ffea00',\n  accent4: '#ffd600'\n});\nvar amber = Object.freeze({\n  base: '#ffc107',\n  lighten5: '#fff8e1',\n  lighten4: '#ffecb3',\n  lighten3: '#ffe082',\n  lighten2: '#ffd54f',\n  lighten1: '#ffca28',\n  darken1: '#ffb300',\n  darken2: '#ffa000',\n  darken3: '#ff8f00',\n  darken4: '#ff6f00',\n  accent1: '#ffe57f',\n  accent2: '#ffd740',\n  accent3: '#ffc400',\n  accent4: '#ffab00'\n});\nvar orange = Object.freeze({\n  base: '#ff9800',\n  lighten5: '#fff3e0',\n  lighten4: '#ffe0b2',\n  lighten3: '#ffcc80',\n  lighten2: '#ffb74d',\n  lighten1: '#ffa726',\n  darken1: '#fb8c00',\n  darken2: '#f57c00',\n  darken3: '#ef6c00',\n  darken4: '#e65100',\n  accent1: '#ffd180',\n  accent2: '#ffab40',\n  accent3: '#ff9100',\n  accent4: '#ff6d00'\n});\nvar deepOrange = Object.freeze({\n  base: '#ff5722',\n  lighten5: '#fbe9e7',\n  lighten4: '#ffccbc',\n  lighten3: '#ffab91',\n  lighten2: '#ff8a65',\n  lighten1: '#ff7043',\n  darken1: '#f4511e',\n  darken2: '#e64a19',\n  darken3: '#d84315',\n  darken4: '#bf360c',\n  accent1: '#ff9e80',\n  accent2: '#ff6e40',\n  accent3: '#ff3d00',\n  accent4: '#dd2c00'\n});\nvar brown = Object.freeze({\n  base: '#795548',\n  lighten5: '#efebe9',\n  lighten4: '#d7ccc8',\n  lighten3: '#bcaaa4',\n  lighten2: '#a1887f',\n  lighten1: '#8d6e63',\n  darken1: '#6d4c41',\n  darken2: '#5d4037',\n  darken3: '#4e342e',\n  darken4: '#3e2723'\n});\nvar blueGrey = Object.freeze({\n  base: '#607d8b',\n  lighten5: '#eceff1',\n  lighten4: '#cfd8dc',\n  lighten3: '#b0bec5',\n  lighten2: '#90a4ae',\n  lighten1: '#78909c',\n  darken1: '#546e7a',\n  darken2: '#455a64',\n  darken3: '#37474f',\n  darken4: '#263238'\n});\nvar grey = Object.freeze({\n  base: '#9e9e9e',\n  lighten5: '#fafafa',\n  lighten4: '#f5f5f5',\n  lighten3: '#eeeeee',\n  lighten2: '#e0e0e0',\n  lighten1: '#bdbdbd',\n  darken1: '#757575',\n  darken2: '#616161',\n  darken3: '#424242',\n  darken4: '#212121'\n});\nvar shades = Object.freeze({\n  black: '#000000',\n  white: '#ffffff',\n  transparent: 'transparent'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object.freeze({\n  red: red,\n  pink: pink,\n  purple: purple,\n  deepPurple: deepPurple,\n  indigo: indigo,\n  blue: blue,\n  lightBlue: lightBlue,\n  cyan: cyan,\n  teal: teal,\n  green: green,\n  lightGreen: lightGreen,\n  lime: lime,\n  yellow: yellow,\n  amber: amber,\n  orange: orange,\n  deepOrange: deepOrange,\n  brown: brown,\n  blueGrey: blueGrey,\n  grey: grey,\n  shades: shades\n}));\n\n/***/ }),\n\n/***/ \"./src/util/console.ts\":\n/*!*****************************!*\\\n  !*** ./src/util/console.ts ***!\n  \\*****************************/\n/*! exports provided: consoleInfo, consoleWarn, consoleError, deprecate, breaking, removed */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"consoleInfo\", function() { return consoleInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"consoleWarn\", function() { return consoleWarn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"consoleError\", function() { return consoleError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deprecate\", function() { return deprecate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"breaking\", function() { return breaking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removed\", function() { return removed; });\n/* harmony import */ var _framework__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../framework */ \"./src/framework.ts\");\n/* eslint-disable no-console */\n\n\nfunction createMessage(message, vm, parent) {\n  if (_framework__WEBPACK_IMPORTED_MODULE_0__[\"default\"].config.silent) return;\n\n  if (parent) {\n    vm = {\n      _isVue: true,\n      $parent: parent,\n      $options: vm\n    };\n  }\n\n  if (vm) {\n    // Only show each message once per instance\n    vm.$_alreadyWarned = vm.$_alreadyWarned || [];\n    if (vm.$_alreadyWarned.includes(message)) return;\n    vm.$_alreadyWarned.push(message);\n  }\n\n  return \"[Vuetify] \" + message + (vm ? generateComponentTrace(vm) : '');\n}\n\nfunction consoleInfo(message, vm, parent) {\n  var newMessage = createMessage(message, vm, parent);\n  newMessage != null && console.info(newMessage);\n}\nfunction consoleWarn(message, vm, parent) {\n  var newMessage = createMessage(message, vm, parent);\n  newMessage != null && console.warn(newMessage);\n}\nfunction consoleError(message, vm, parent) {\n  var newMessage = createMessage(message, vm, parent);\n  newMessage != null && console.error(newMessage);\n}\nfunction deprecate(original, replacement, vm, parent) {\n  consoleWarn(\"[UPGRADE] '\" + original + \"' is deprecated, use '\" + replacement + \"' instead.\", vm, parent);\n}\nfunction breaking(original, replacement, vm, parent) {\n  consoleError(\"[BREAKING] '\" + original + \"' has been removed, use '\" + replacement + \"' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide\", vm, parent);\n}\nfunction removed(original, vm, parent) {\n  consoleWarn(\"[REMOVED] '\" + original + \"' has been removed. You can safely omit it.\", vm, parent);\n}\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\n\nvar classifyRE = /(?:^|[-_])(\\w)/g;\n\nvar classify = function classify(str) {\n  return str.replace(classifyRE, function (c) {\n    return c.toUpperCase();\n  }).replace(/[-_]/g, '');\n};\n\nfunction formatComponentName(vm, includeFile) {\n  if (vm.$root === vm) {\n    return '<Root>';\n  }\n\n  var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm || {};\n  var name = options.name || options._componentTag;\n  var file = options.__file;\n\n  if (!name && file) {\n    var match = file.match(/([^/\\\\]+)\\.vue$/);\n    name = match && match[1];\n  }\n\n  return (name ? \"<\" + classify(name) + \">\" : \"<Anonymous>\") + (file && includeFile !== false ? \" at \" + file : '');\n}\n\nfunction generateComponentTrace(vm) {\n  if (vm._isVue && vm.$parent) {\n    var tree = [];\n    var currentRecursiveSequence = 0;\n\n    while (vm) {\n      if (tree.length > 0) {\n        var last = tree[tree.length - 1];\n\n        if (last.constructor === vm.constructor) {\n          currentRecursiveSequence++;\n          vm = vm.$parent;\n          continue;\n        } else if (currentRecursiveSequence > 0) {\n          tree[tree.length - 1] = [last, currentRecursiveSequence];\n          currentRecursiveSequence = 0;\n        }\n      }\n\n      tree.push(vm);\n      vm = vm.$parent;\n    }\n\n    return '\\n\\nfound in\\n\\n' + tree.map(function (vm, i) {\n      return \"\" + (i === 0 ? '---> ' : ' '.repeat(5 + i * 2)) + (Array.isArray(vm) ? formatComponentName(vm[0]) + \"... (\" + vm[1] + \" recursive calls)\" : formatComponentName(vm));\n    }).join('\\n');\n  } else {\n    return \"\\n\\n(found in \" + formatComponentName(vm) + \")\";\n  }\n}\n\n/***/ }),\n\n/***/ \"./src/util/dateTimeUtils.ts\":\n/*!***********************************!*\\\n  !*** ./src/util/dateTimeUtils.ts ***!\n  \\***********************************/\n/*! exports provided: weekNumber, isLeapYear */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"weekNumber\", function() { return weekNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLeapYear\", function() { return isLeapYear; });\nfunction createUTCDate(year, month, day) {\n  if (month === void 0) {\n    month = 0;\n  }\n\n  if (day === void 0) {\n    day = 1;\n  }\n\n  var date;\n\n  if (year < 100 && year >= 0) {\n    date = new Date(Date.UTC(year, month, day));\n\n    if (isFinite(date.getUTCFullYear())) {\n      date.setUTCFullYear(year);\n    }\n  } else {\n    date = new Date(Date.UTC(year, month, day));\n  }\n\n  return date;\n}\n\nfunction firstWeekOffset(year, firstDayOfWeek, firstDayOfYear) {\n  var firstWeekDayInFirstWeek = 7 + firstDayOfWeek - firstDayOfYear;\n  var firstWeekDayOfYear = (7 + createUTCDate(year, 0, firstWeekDayInFirstWeek).getUTCDay() - firstDayOfWeek) % 7;\n  return -firstWeekDayOfYear + firstWeekDayInFirstWeek - 1;\n}\n\nfunction dayOfYear(year, month, day, firstDayOfWeek) {\n  var dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][month];\n\n  if (month > 1 && isLeapYear(year)) {\n    dayOfYear++;\n  }\n\n  return dayOfYear + day;\n}\n\nfunction weeksInYear(year, firstDayOfWeek, firstDayOfYear) {\n  var weekOffset = firstWeekOffset(year, firstDayOfWeek, firstDayOfYear);\n  var weekOffsetNext = firstWeekOffset(year + 1, firstDayOfWeek, firstDayOfYear);\n  var daysInYear = isLeapYear(year) ? 366 : 365;\n  return (daysInYear - weekOffset + weekOffsetNext) / 7;\n}\n\nfunction weekNumber(year, month, day, firstDayOfWeek, localeFirstDayOfYear) {\n  var weekOffset = firstWeekOffset(year, firstDayOfWeek, localeFirstDayOfYear);\n  var week = Math.ceil((dayOfYear(year, month, day, firstDayOfWeek) - weekOffset) / 7);\n\n  if (week < 1) {\n    return week + weeksInYear(year - 1, firstDayOfWeek, localeFirstDayOfYear);\n  } else if (week > weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)) {\n    return week - weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear);\n  } else {\n    return week;\n  }\n}\nfunction isLeapYear(year) {\n  return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n\n/***/ }),\n\n/***/ \"./src/util/dedupeModelListeners.ts\":\n/*!******************************************!*\\\n  !*** ./src/util/dedupeModelListeners.ts ***!\n  \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dedupeModelListeners; });\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nfunction dedupeModelListeners(data) {\n  if (data.model && data.on && data.on.input) {\n    if (Array.isArray(data.on.input)) {\n      var i = data.on.input.indexOf(data.model.callback);\n      if (i > -1) data.on.input.splice(i, 1);\n    } else {\n      delete data.on.input;\n    }\n  }\n}\n\n/***/ }),\n\n/***/ \"./src/util/dom.ts\":\n/*!*************************!*\\\n  !*** ./src/util/dom.ts ***!\n  \\*************************/\n/*! exports provided: attachedRoot */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attachedRoot\", function() { return attachedRoot; });\n/**\n * Returns:\n *  - 'null' if the node is not attached to the DOM\n *  - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nfunction attachedRoot(node) {\n  /* istanbul ignore next */\n  if (typeof node.getRootNode !== 'function') {\n    // Shadow DOM not supported (IE11), lets find the root of this node\n    while (node.parentNode) {\n      node = node.parentNode;\n    } // The root parent is the document if the node is attached to the DOM\n\n\n    if (node !== document) return null;\n    return document;\n  }\n\n  var root = node.getRootNode(); // The composed root node is the document if the node is attached to the DOM\n\n  if (root !== document && root.getRootNode({\n    composed: true\n  }) !== document) return null;\n  return root;\n}\n\n/***/ }),\n\n/***/ \"./src/util/helpers.ts\":\n/*!*****************************!*\\\n  !*** ./src/util/helpers.ts ***!\n  \\*****************************/\n/*! exports provided: createSimpleFunctional, directiveConfig, addOnceEventListener, passiveSupported, addPassiveEventListener, getNestedValue, deepEqual, getObjectValueByPath, getPropertyFromItem, createRange, getZIndex, filterObjectOnKeys, convertToUnit, kebabCase, isObject, keyCodes, remapInternalIcon, keys, camelize, arrayDiff, upperFirst, groupItems, wrapInArray, sortItems, defaultFilter, searchItems, getSlotType, debounce, throttle, getPrefixedScopedSlots, getSlot, clamp, padEnd, chunk, humanReadableFileSize, camelizeObjectKeys, mergeDeep, fillArray, composedPath */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSimpleFunctional\", function() { return createSimpleFunctional; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"directiveConfig\", function() { return directiveConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addOnceEventListener\", function() { return addOnceEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"passiveSupported\", function() { return passiveSupported; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPassiveEventListener\", function() { return addPassiveEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNestedValue\", function() { return getNestedValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deepEqual\", function() { return deepEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getObjectValueByPath\", function() { return getObjectValueByPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPropertyFromItem\", function() { return getPropertyFromItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRange\", function() { return createRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getZIndex\", function() { return getZIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterObjectOnKeys\", function() { return filterObjectOnKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToUnit\", function() { return convertToUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"kebabCase\", function() { return kebabCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyCodes\", function() { return keyCodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remapInternalIcon\", function() { return remapInternalIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return keys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arrayDiff\", function() { return arrayDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return upperFirst; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groupItems\", function() { return groupItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapInArray\", function() { return wrapInArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortItems\", function() { return sortItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultFilter\", function() { return defaultFilter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"searchItems\", function() { return searchItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSlotType\", function() { return getSlotType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return throttle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPrefixedScopedSlots\", function() { return getPrefixedScopedSlots; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSlot\", function() { return getSlot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clamp\", function() { return clamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"padEnd\", function() { return padEnd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return chunk; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"humanReadableFileSize\", function() { return humanReadableFileSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelizeObjectKeys\", function() { return camelizeObjectKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeDeep\", function() { return mergeDeep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillArray\", function() { return fillArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"composedPath\", function() { return composedPath; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\nfunction createSimpleFunctional(c, el, name) {\n  if (el === void 0) {\n    el = 'div';\n  }\n\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    name: name || c.replace(/__/g, '-'),\n    functional: true,\n    props: {\n      tag: {\n        type: String,\n        default: el\n      }\n    },\n    render: function render(h, _a) {\n      var data = _a.data,\n          props = _a.props,\n          children = _a.children;\n      data.staticClass = (c + \" \" + (data.staticClass || '')).trim();\n      return h(props.tag, data, children);\n    }\n  });\n}\nfunction directiveConfig(binding, defaults) {\n  if (defaults === void 0) {\n    defaults = {};\n  }\n\n  return __assign(__assign(__assign(__assign({}, defaults), binding.modifiers), {\n    value: binding.arg\n  }), binding.value || {});\n}\nfunction addOnceEventListener(el, eventName, cb, options) {\n  if (options === void 0) {\n    options = false;\n  }\n\n  var once = function once(event) {\n    cb(event);\n    el.removeEventListener(eventName, once, options);\n  };\n\n  el.addEventListener(eventName, once, options);\n}\nvar passiveSupported = false;\n\ntry {\n  if (typeof window !== 'undefined') {\n    var testListenerOpts = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        passiveSupported = true;\n      }\n    });\n    window.addEventListener('testListener', testListenerOpts, testListenerOpts);\n    window.removeEventListener('testListener', testListenerOpts, testListenerOpts);\n  }\n} catch (e) {\n  console.warn(e);\n}\n/* eslint-disable-line no-console */\n\n\n\nfunction addPassiveEventListener(el, event, cb, options) {\n  el.addEventListener(event, cb, passiveSupported ? options : false);\n}\nfunction getNestedValue(obj, path, fallback) {\n  var last = path.length - 1;\n  if (last < 0) return obj === undefined ? fallback : obj;\n\n  for (var i = 0; i < last; i++) {\n    if (obj == null) {\n      return fallback;\n    }\n\n    obj = obj[path[i]];\n  }\n\n  if (obj == null) return fallback;\n  return obj[path[last]] === undefined ? fallback : obj[path[last]];\n}\nfunction deepEqual(a, b) {\n  if (a === b) return true;\n\n  if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n    // If the values are Date, compare them as timestamps\n    return false;\n  }\n\n  if (a !== Object(a) || b !== Object(b)) {\n    // If the values aren't objects, they were already checked for equality\n    return false;\n  }\n\n  var props = Object.keys(a);\n\n  if (props.length !== Object.keys(b).length) {\n    // Different number of props, don't bother to check\n    return false;\n  }\n\n  return props.every(function (p) {\n    return deepEqual(a[p], b[p]);\n  });\n}\nfunction getObjectValueByPath(obj, path, fallback) {\n  // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n  if (obj == null || !path || typeof path !== 'string') return fallback;\n  if (obj[path] !== undefined) return obj[path];\n  path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n\n  path = path.replace(/^\\./, ''); // strip a leading dot\n\n  return getNestedValue(obj, path.split('.'), fallback);\n}\nfunction getPropertyFromItem(item, property, fallback) {\n  if (property == null) return item === undefined ? fallback : item;\n  if (item !== Object(item)) return fallback === undefined ? item : fallback;\n  if (typeof property === 'string') return getObjectValueByPath(item, property, fallback);\n  if (Array.isArray(property)) return getNestedValue(item, property, fallback);\n  if (typeof property !== 'function') return fallback;\n  var value = property(item, fallback);\n  return typeof value === 'undefined' ? fallback : value;\n}\nfunction createRange(length) {\n  return Array.from({\n    length: length\n  }, function (v, k) {\n    return k;\n  });\n}\nfunction getZIndex(el) {\n  if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0;\n  var index = +window.getComputedStyle(el).getPropertyValue('z-index');\n  if (!index) return getZIndex(el.parentNode);\n  return index;\n}\nfunction filterObjectOnKeys(obj, keys) {\n  var filtered = {};\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n\n    if (typeof obj[key] !== 'undefined') {\n      filtered[key] = obj[key];\n    }\n  }\n\n  return filtered;\n}\nfunction convertToUnit(str, unit) {\n  if (unit === void 0) {\n    unit = 'px';\n  }\n\n  if (str == null || str === '') {\n    return undefined;\n  } else if (isNaN(+str)) {\n    return String(str);\n  } else {\n    return \"\" + Number(str) + unit;\n  }\n}\nfunction kebabCase(str) {\n  return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction isObject(obj) {\n  return obj !== null && _typeof(obj) === 'object';\n} // KeyboardEvent.keyCode aliases\n\nvar keyCodes = Object.freeze({\n  enter: 13,\n  tab: 9,\n  delete: 46,\n  esc: 27,\n  space: 32,\n  up: 38,\n  down: 40,\n  left: 37,\n  right: 39,\n  end: 35,\n  home: 36,\n  del: 46,\n  backspace: 8,\n  insert: 45,\n  pageup: 33,\n  pagedown: 34,\n  shift: 16\n});\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\n\nfunction remapInternalIcon(vm, iconName) {\n  // Look for custom component in the configuration\n  var component = vm.$vuetify.icons.component; // Look for overrides\n\n  if (iconName.startsWith('$')) {\n    // Get the target icon name\n    var iconPath = \"$vuetify.icons.values.\" + iconName.split('$').pop().split('.').pop(); // Now look up icon indirection name,\n    // e.g. '$vuetify.icons.values.cancel'\n\n    var override = getObjectValueByPath(vm, iconPath, iconName);\n    if (typeof override === 'string') iconName = override;else return override;\n  }\n\n  if (component == null) {\n    return iconName;\n  }\n\n  return {\n    component: component,\n    props: {\n      icon: iconName\n    }\n  };\n}\nfunction keys(o) {\n  return Object.keys(o);\n}\n/**\n * Camelize a hyphen-delimited string.\n */\n\nvar camelizeRE = /-(\\w)/g;\nvar camelize = function camelize(str) {\n  return str.replace(camelizeRE, function (_, c) {\n    return c ? c.toUpperCase() : '';\n  });\n};\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\n\nfunction arrayDiff(a, b) {\n  var diff = [];\n\n  for (var i = 0; i < b.length; i++) {\n    if (a.indexOf(b[i]) < 0) diff.push(b[i]);\n  }\n\n  return diff;\n}\n/**\n * Makes the first character of a string uppercase\n */\n\nfunction upperFirst(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nfunction groupItems(items, groupBy, groupDesc) {\n  var key = groupBy[0];\n  var groups = [];\n  var current;\n\n  for (var i = 0; i < items.length; i++) {\n    var item = items[i];\n    var val = getObjectValueByPath(item, key, null);\n\n    if (current !== val) {\n      current = val;\n      groups.push({\n        name: val !== null && val !== void 0 ? val : '',\n        items: []\n      });\n    }\n\n    groups[groups.length - 1].items.push(item);\n  }\n\n  return groups;\n}\nfunction wrapInArray(v) {\n  return v != null ? Array.isArray(v) ? v : [v] : [];\n}\nfunction sortItems(items, sortBy, sortDesc, locale, customSorters) {\n  if (sortBy === null || !sortBy.length) return items;\n  var stringCollator = new Intl.Collator(locale, {\n    sensitivity: 'accent',\n    usage: 'sort'\n  });\n  return items.sort(function (a, b) {\n    var _a, _b;\n\n    for (var i = 0; i < sortBy.length; i++) {\n      var sortKey = sortBy[i];\n      var sortA = getObjectValueByPath(a, sortKey);\n      var sortB = getObjectValueByPath(b, sortKey);\n\n      if (sortDesc[i]) {\n        _a = __read([sortB, sortA], 2), sortA = _a[0], sortB = _a[1];\n      }\n\n      if (customSorters && customSorters[sortKey]) {\n        var customResult = customSorters[sortKey](sortA, sortB);\n        if (!customResult) continue;\n        return customResult;\n      } // Check if both cannot be evaluated\n\n\n      if (sortA === null && sortB === null) {\n        continue;\n      } // Dates should be compared numerically\n\n\n      if (sortA instanceof Date && sortB instanceof Date) {\n        return sortA.getTime() - sortB.getTime();\n      }\n\n      _b = __read([sortA, sortB].map(function (s) {\n        return (s || '').toString().toLocaleLowerCase();\n      }), 2), sortA = _b[0], sortB = _b[1];\n\n      if (sortA !== sortB) {\n        if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB);\n        return stringCollator.compare(sortA, sortB);\n      }\n    }\n\n    return 0;\n  });\n}\nfunction defaultFilter(value, search, item) {\n  return value != null && search != null && typeof value !== 'boolean' && value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1;\n}\nfunction searchItems(items, search) {\n  if (!search) return items;\n  search = search.toString().toLowerCase();\n  if (search.trim() === '') return items;\n  return items.filter(function (item) {\n    return Object.keys(item).some(function (key) {\n      return defaultFilter(getObjectValueByPath(item, key), search, item);\n    });\n  });\n}\n/**\n * Returns:\n *  - 'normal' for old style slots - `<template slot=\"default\">`\n *  - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n *  - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\n\nfunction getSlotType(vm, name, split) {\n  if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && vm.$scopedSlots[name].name) {\n    return split ? 'v-slot' : 'scoped';\n  }\n\n  if (vm.$slots.hasOwnProperty(name)) return 'normal';\n  if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped';\n}\nfunction debounce(fn, delay) {\n  var timeoutId = 0;\n  return function () {\n    var args = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      args[_i] = arguments[_i];\n    }\n\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(function () {\n      return fn.apply(void 0, __spreadArray([], __read(args), false));\n    }, delay);\n  };\n}\nfunction throttle(fn, limit) {\n  var throttling = false;\n  return function () {\n    var args = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      args[_i] = arguments[_i];\n    }\n\n    if (!throttling) {\n      throttling = true;\n      setTimeout(function () {\n        return throttling = false;\n      }, limit);\n      return fn.apply(void 0, __spreadArray([], __read(args), false));\n    }\n  };\n}\nfunction getPrefixedScopedSlots(prefix, scopedSlots) {\n  return Object.keys(scopedSlots).filter(function (k) {\n    return k.startsWith(prefix);\n  }).reduce(function (obj, k) {\n    obj[k.replace(prefix, '')] = scopedSlots[k];\n    return obj;\n  }, {});\n}\nfunction getSlot(vm, name, data, optional) {\n  if (name === void 0) {\n    name = 'default';\n  }\n\n  if (optional === void 0) {\n    optional = false;\n  }\n\n  var kebabName = kebabCase(name);\n\n  if (vm.$scopedSlots.hasOwnProperty(name)) {\n    return vm.$scopedSlots[name](data instanceof Function ? data() : data);\n  } else if (vm.$scopedSlots.hasOwnProperty(kebabName)) {\n    return vm.$scopedSlots[kebabName](data instanceof Function ? data() : data);\n  } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {\n    return vm.$slots[name];\n  } else if (vm.$slots.hasOwnProperty(kebabName) && (!data || optional)) {\n    return vm.$slots[kebabName];\n  }\n\n  return undefined;\n}\nfunction clamp(value, min, max) {\n  if (min === void 0) {\n    min = 0;\n  }\n\n  if (max === void 0) {\n    max = 1;\n  }\n\n  return Math.max(min, Math.min(max, value));\n}\nfunction padEnd(str, length, char) {\n  if (char === void 0) {\n    char = '0';\n  }\n\n  return str + char.repeat(Math.max(0, length - str.length));\n}\nfunction chunk(str, size) {\n  if (size === void 0) {\n    size = 1;\n  }\n\n  var chunked = [];\n  var index = 0;\n\n  while (index < str.length) {\n    chunked.push(str.substr(index, size));\n    index += size;\n  }\n\n  return chunked;\n}\nfunction humanReadableFileSize(bytes, binary) {\n  if (binary === void 0) {\n    binary = false;\n  }\n\n  var base = binary ? 1024 : 1000;\n\n  if (bytes < base) {\n    return bytes + \" B\";\n  }\n\n  var prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G'];\n  var unit = -1;\n\n  while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n    bytes /= base;\n    ++unit;\n  }\n\n  return bytes.toFixed(1) + \" \" + prefix[unit] + \"B\";\n}\nfunction camelizeObjectKeys(obj) {\n  if (!obj) return {};\n  return Object.keys(obj).reduce(function (o, key) {\n    o[camelize(key)] = obj[key];\n    return o;\n  }, {});\n}\nfunction mergeDeep(source, target) {\n  if (source === void 0) {\n    source = {};\n  }\n\n  if (target === void 0) {\n    target = {};\n  }\n\n  for (var key in target) {\n    var sourceProperty = source[key];\n    var targetProperty = target[key]; // Only continue deep merging if\n    // both properties are objects\n\n    if (isObject(sourceProperty) && isObject(targetProperty)) {\n      source[key] = mergeDeep(sourceProperty, targetProperty);\n      continue;\n    }\n\n    source[key] = targetProperty;\n  }\n\n  return source;\n}\nfunction fillArray(length, obj) {\n  return Array(length).fill(obj);\n}\n/**  Polyfill for Event.prototype.composedPath */\n\nfunction composedPath(e) {\n  if (e.composedPath) return e.composedPath();\n  var path = [];\n  var el = e.target;\n\n  while (el) {\n    path.push(el);\n\n    if (el.tagName === 'HTML') {\n      path.push(document);\n      path.push(window);\n      return path;\n    }\n\n    el = el.parentElement;\n  }\n\n  return path;\n}\n\n/***/ }),\n\n/***/ \"./src/util/mergeData.ts\":\n/*!*******************************!*\\\n  !*** ./src/util/mergeData.ts ***!\n  \\*******************************/\n/*! exports provided: default, mergeStyles, mergeClasses, mergeListeners */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mergeData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeStyles\", function() { return mergeStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeClasses\", function() { return mergeClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeListeners\", function() { return mergeListeners; });\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __values = undefined && undefined.__values || function (o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n      m = s && o[s],\n      i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function next() {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\nvar __read = undefined && undefined.__read || function (o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n      r,\n      ar = [],\n      e;\n\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n      ar.push(r.value);\n    }\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n\n  return ar;\n};\n\n\nvar pattern = {\n  styleList: /;(?![^(]*\\))/g,\n  styleProp: /:(.*)/\n};\n\nfunction parseStyle(style) {\n  var e_1, _a;\n\n  var styleMap = {};\n\n  try {\n    for (var _b = __values(style.split(pattern.styleList)), _c = _b.next(); !_c.done; _c = _b.next()) {\n      var s = _c.value;\n\n      var _d = __read(s.split(pattern.styleProp), 2),\n          key = _d[0],\n          val = _d[1];\n\n      key = key.trim();\n\n      if (!key) {\n        continue;\n      } // May be undefined if the `key: value` pair is incomplete.\n\n\n      if (typeof val === 'string') {\n        val = val.trim();\n      }\n\n      styleMap[Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"])(key)] = val;\n    }\n  } catch (e_1_1) {\n    e_1 = {\n      error: e_1_1\n    };\n  } finally {\n    try {\n      if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n    } finally {\n      if (e_1) throw e_1.error;\n    }\n  }\n\n  return styleMap;\n}\n\nfunction mergeData() {\n  var e_2, _a;\n\n  var mergeTarget = {};\n  var i = arguments.length;\n  var prop; // Allow for variadic argument length.\n\n  while (i--) {\n    try {\n      // Iterate through the data properties and execute merge strategies\n      // Object.keys eliminates need for hasOwnProperty call\n      for (var _b = (e_2 = void 0, __values(Object.keys(arguments[i]))), _c = _b.next(); !_c.done; _c = _b.next()) {\n        prop = _c.value;\n\n        switch (prop) {\n          // Array merge strategy (array concatenation)\n          case 'class':\n          case 'directives':\n            if (arguments[i][prop]) {\n              mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop]);\n            }\n\n            break;\n\n          case 'style':\n            if (arguments[i][prop]) {\n              mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop]);\n            }\n\n            break;\n          // Space delimited string concatenation strategy\n\n          case 'staticClass':\n            if (!arguments[i][prop]) {\n              break;\n            }\n\n            if (mergeTarget[prop] === undefined) {\n              mergeTarget[prop] = '';\n            }\n\n            if (mergeTarget[prop]) {\n              // Not an empty string, so concatenate\n              mergeTarget[prop] += ' ';\n            }\n\n            mergeTarget[prop] += arguments[i][prop].trim();\n            break;\n          // Object, the properties of which to merge via array merge strategy (array concatenation).\n          // Callback merge strategy merges callbacks to the beginning of the array,\n          // so that the last defined callback will be invoked first.\n          // This is done since to mimic how Object.assign merging\n          // uses the last given value to assign.\n\n          case 'on':\n          case 'nativeOn':\n            if (arguments[i][prop]) {\n              mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop]);\n            }\n\n            break;\n          // Object merge strategy\n\n          case 'attrs':\n          case 'props':\n          case 'domProps':\n          case 'scopedSlots':\n          case 'staticStyle':\n          case 'hook':\n          case 'transition':\n            if (!arguments[i][prop]) {\n              break;\n            }\n\n            if (!mergeTarget[prop]) {\n              mergeTarget[prop] = {};\n            }\n\n            mergeTarget[prop] = __assign(__assign({}, arguments[i][prop]), mergeTarget[prop]);\n            break;\n          // Reassignment strategy (no merge)\n\n          default:\n            // slot, key, ref, tag, show, keepAlive\n            if (!mergeTarget[prop]) {\n              mergeTarget[prop] = arguments[i][prop];\n            }\n\n        }\n      }\n    } catch (e_2_1) {\n      e_2 = {\n        error: e_2_1\n      };\n    } finally {\n      try {\n        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n      } finally {\n        if (e_2) throw e_2.error;\n      }\n    }\n  }\n\n  return mergeTarget;\n}\nfunction mergeStyles(target, source) {\n  if (!target) return source;\n  if (!source) return target;\n  target = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(typeof target === 'string' ? parseStyle(target) : target);\n  return target.concat(typeof source === 'string' ? parseStyle(source) : source);\n}\nfunction mergeClasses(target, source) {\n  if (!source) return target;\n  if (!target) return source;\n  return target ? Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"wrapInArray\"])(target).concat(source) : source;\n}\nfunction mergeListeners() {\n  var args = [];\n\n  for (var _i = 0; _i < arguments.length; _i++) {\n    args[_i] = arguments[_i];\n  }\n\n  if (!args[0]) return args[1];\n  if (!args[1]) return args[0];\n  var dest = {};\n\n  for (var i = 2; i--;) {\n    var arg = args[i];\n\n    for (var event in arg) {\n      if (!arg[event]) continue;\n\n      if (dest[event]) {\n        // Merge current listeners before (because we are iterating backwards).\n        // Note that neither \"target\" or \"source\" must be altered.\n        dest[event] = [].concat(arg[event], dest[event]);\n      } else {\n        // Straight assign.\n        dest[event] = arg[event];\n      }\n    }\n  }\n\n  return dest;\n}\n\n/***/ }),\n\n/***/ \"./src/util/mixins.ts\":\n/*!****************************!*\\\n  !*** ./src/util/mixins.ts ***!\n  \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mixins; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* eslint-disable max-len, import/export, no-use-before-define */\n\nfunction mixins() {\n  var args = [];\n\n  for (var _i = 0; _i < arguments.length; _i++) {\n    args[_i] = arguments[_i];\n  }\n\n  return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n    mixins: args\n  });\n}\n\n/***/ }),\n\n/***/ \"./src/util/rebuildFunctionalSlots.ts\":\n/*!********************************************!*\\\n  !*** ./src/util/rebuildFunctionalSlots.ts ***!\n  \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rebuildFunctionalSlots; });\nfunction rebuildFunctionalSlots(slots, h) {\n  var children = [];\n\n  for (var slot in slots) {\n    if (slots.hasOwnProperty(slot)) {\n      children.push(h('template', {\n        slot: slot\n      }, slots[slot]));\n    }\n  }\n\n  return children;\n}\n\n/***/ }),\n\n/***/ \"vue\":\n/*!******************************************************************************!*\\\n  !*** external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"amd\":\"vue\",\"root\":\"Vue\"} ***!\n  \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_vue__;\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuetify.js.map","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n  rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n  rsUpper + '+' + rsOptUpperContr,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n  return result + (index ? '-' : '') + word.toLowerCase();\n});\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = kebabCase;\n","import Vue from 'vue'\nimport Vuetify, { UserVuetifyPreset } from 'vuetify'\nimport merge from 'lodash.merge'\nimport kebabCase from 'lodash.kebabcase'\nimport 'vuetify/dist/vuetify.min.css'\n\nVue.use(Vuetify)\n\nconst defaultPreset: UserVuetifyPreset = {\n  theme: {\n    themes: {\n      light: {\n        primary: '#003064',\n        primaryContrast: '#FFFFFF',\n        secondary: '#FFFFFF',\n        secondaryContrast: '#003064',\n      },\n    },\n  },\n  icons: {\n    iconfont: 'fa',\n  },\n}\n\nexport default function makeVuetify(\n  userParams: UserVuetifyPreset = {}\n): Vuetify {\n  const merged = merge({}, defaultPreset, userParams)\n  const customColors: [string, string][] = Object.entries(\n    merged.theme?.themes?.light\n  )\n  customColors.forEach(([key, value]) =>\n    document.documentElement.style.setProperty(\n      '--polar-' + kebabCase(key),\n      value\n    )\n  )\n  return new Vuetify(merge({}, defaultPreset, userParams))\n}\n","const {\n  slice,\n  forEach\n} = [];\nfunction defaults(obj) {\n  forEach.call(slice.call(arguments, 1), source => {\n    if (source) {\n      for (const prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = function (name, val) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    path: '/'\n  };\n  const opt = options;\n  const value = encodeURIComponent(val);\n  let str = `${name}=${value}`;\n  if (opt.maxAge > 0) {\n    const maxAge = opt.maxAge - 0;\n    if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n    str += `; Max-Age=${Math.floor(maxAge)}`;\n  }\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n    str += `; Domain=${opt.domain}`;\n  }\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n    str += `; Path=${opt.path}`;\n  }\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n    str += `; Expires=${opt.expires.toUTCString()}`;\n  }\n  if (opt.httpOnly) str += '; HttpOnly';\n  if (opt.secure) str += '; Secure';\n  if (opt.sameSite) {\n    const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n  return str;\n};\nconst cookie = {\n  create(name, value, minutes, domain) {\n    let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      path: '/',\n      sameSite: 'strict'\n    };\n    if (minutes) {\n      cookieOptions.expires = new Date();\n      cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n    }\n    if (domain) cookieOptions.domain = domain;\n    document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n  },\n  read(name) {\n    const nameEQ = `${name}=`;\n    const ca = document.cookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n      if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n    }\n    return null;\n  },\n  remove(name) {\n    this.create(name, '', -1);\n  }\n};\nvar cookie$1 = {\n  name: 'cookie',\n  // Deconstruct the options object and extract the lookupCookie property\n  lookup(_ref) {\n    let {\n      lookupCookie\n    } = _ref;\n    if (lookupCookie && typeof document !== 'undefined') {\n      return cookie.read(lookupCookie) || undefined;\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupCookie,\n      cookieMinutes,\n      cookieDomain,\n      cookieOptions\n    } = _ref2;\n    if (lookupCookie && typeof document !== 'undefined') {\n      cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n    }\n  }\n};\n\nvar querystring = {\n  name: 'querystring',\n  // Deconstruct the options object and extract the lookupQuerystring property\n  lookup(_ref) {\n    let {\n      lookupQuerystring\n    } = _ref;\n    let found;\n    if (typeof window !== 'undefined') {\n      let {\n        search\n      } = window.location;\n      if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n        search = window.location.hash.substring(window.location.hash.indexOf('?'));\n      }\n      const query = search.substring(1);\n      const params = query.split('&');\n      for (let i = 0; i < params.length; i++) {\n        const pos = params[i].indexOf('=');\n        if (pos > 0) {\n          const key = params[i].substring(0, pos);\n          if (key === lookupQuerystring) {\n            found = params[i].substring(pos + 1);\n          }\n        }\n      }\n    }\n    return found;\n  }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n  if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n  try {\n    hasLocalStorageSupport = typeof window !== 'undefined' && window.localStorage !== null;\n    if (!hasLocalStorageSupport) {\n      return false;\n    }\n    const testKey = 'i18next.translate.boo';\n    window.localStorage.setItem(testKey, 'foo');\n    window.localStorage.removeItem(testKey);\n  } catch (e) {\n    hasLocalStorageSupport = false;\n  }\n  return hasLocalStorageSupport;\n};\nvar localStorage = {\n  name: 'localStorage',\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  lookup(_ref) {\n    let {\n      lookupLocalStorage\n    } = _ref;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupLocalStorage\n    } = _ref2;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      window.localStorage.setItem(lookupLocalStorage, lng);\n    }\n  }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n  if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n  try {\n    hasSessionStorageSupport = typeof window !== 'undefined' && window.sessionStorage !== null;\n    if (!hasSessionStorageSupport) {\n      return false;\n    }\n    const testKey = 'i18next.translate.boo';\n    window.sessionStorage.setItem(testKey, 'foo');\n    window.sessionStorage.removeItem(testKey);\n  } catch (e) {\n    hasSessionStorageSupport = false;\n  }\n  return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n  name: 'sessionStorage',\n  lookup(_ref) {\n    let {\n      lookupSessionStorage\n    } = _ref;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n    }\n    return undefined;\n  },\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupSessionStorage\n    } = _ref2;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      window.sessionStorage.setItem(lookupSessionStorage, lng);\n    }\n  }\n};\n\nvar navigator$1 = {\n  name: 'navigator',\n  lookup(options) {\n    const found = [];\n    if (typeof navigator !== 'undefined') {\n      const {\n        languages,\n        userLanguage,\n        language\n      } = navigator;\n      if (languages) {\n        // chrome only; not an array, so can't use .push.apply instead of iterating\n        for (let i = 0; i < languages.length; i++) {\n          found.push(languages[i]);\n        }\n      }\n      if (userLanguage) {\n        found.push(userLanguage);\n      }\n      if (language) {\n        found.push(language);\n      }\n    }\n    return found.length > 0 ? found : undefined;\n  }\n};\n\nvar htmlTag = {\n  name: 'htmlTag',\n  // Deconstruct the options object and extract the htmlTag property\n  lookup(_ref) {\n    let {\n      htmlTag\n    } = _ref;\n    let found;\n    const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n    if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n      found = internalHtmlTag.getAttribute('lang');\n    }\n    return found;\n  }\n};\n\nvar path = {\n  name: 'path',\n  // Deconstruct the options object and extract the lookupFromPathIndex property\n  lookup(_ref) {\n    let {\n      lookupFromPathIndex\n    } = _ref;\n    if (typeof window === 'undefined') return undefined;\n    const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n    if (!Array.isArray(language)) return undefined;\n    const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n    return language[index]?.replace('/', '');\n  }\n};\n\nvar subdomain = {\n  name: 'subdomain',\n  lookup(_ref) {\n    let {\n      lookupFromSubdomainIndex\n    } = _ref;\n    // If given get the subdomain index else 1\n    const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n    // get all matches if window.location. is existing\n    // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n    // is the hostname no public domain get the or option of localhost\n    const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n    // if there is no match (null) return undefined\n    if (!language) return undefined;\n    // return the given group match\n    return language[internalLookupFromSubdomainIndex];\n  }\n};\n\n// some environments, throws when accessing document.cookie\nlet canCookies = false;\ntry {\n  // eslint-disable-next-line no-unused-expressions\n  document.cookie;\n  canCookies = true;\n  // eslint-disable-next-line no-empty\n} catch (e) {}\nconst order = ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'];\nif (!canCookies) order.splice(1, 1);\nconst getDefaults = () => ({\n  order,\n  lookupQuerystring: 'lng',\n  lookupCookie: 'i18next',\n  lookupLocalStorage: 'i18nextLng',\n  lookupSessionStorage: 'i18nextLng',\n  // cache user language\n  caches: ['localStorage'],\n  excludeCacheFor: ['cimode'],\n  // cookieMinutes: 10,\n  // cookieDomain: 'myDomain'\n\n  convertDetectedLanguage: l => l\n});\nclass Browser {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.type = 'languageDetector';\n    this.detectors = {};\n    this.init(services, options);\n  }\n  init() {\n    let services = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n      languageUtils: {}\n    };\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.services = services;\n    this.options = defaults(options, this.options || {}, getDefaults());\n    if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n      this.options.convertDetectedLanguage = l => l.replace('-', '_');\n    }\n\n    // backwards compatibility\n    if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n    this.i18nOptions = i18nOptions;\n    this.addDetector(cookie$1);\n    this.addDetector(querystring);\n    this.addDetector(localStorage);\n    this.addDetector(sessionStorage);\n    this.addDetector(navigator$1);\n    this.addDetector(htmlTag);\n    this.addDetector(path);\n    this.addDetector(subdomain);\n  }\n  addDetector(detector) {\n    this.detectors[detector.name] = detector;\n    return this;\n  }\n  detect() {\n    let detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n    let detected = [];\n    detectionOrder.forEach(detectorName => {\n      if (this.detectors[detectorName]) {\n        let lookup = this.detectors[detectorName].lookup(this.options);\n        if (lookup && typeof lookup === 'string') lookup = [lookup];\n        if (lookup) detected = detected.concat(lookup);\n      }\n    });\n    detected = detected.map(d => this.options.convertDetectedLanguage(d));\n    if (this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n    return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n  }\n  cacheUserLanguage(lng) {\n    let caches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.options.caches;\n    if (!caches) return;\n    if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n    caches.forEach(cacheName => {\n      if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n    });\n  }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction install(Vue, { i18next, rerenderOn = ['languageChanged', 'loaded', 'added', 'removed'], }) {\r\n    const genericT = i18next.t.bind(i18next);\r\n    const changeTracker = Vue.observable({ lastI18nChange: new Date() });\r\n    const invalidate = () => changeTracker.lastI18nChange = new Date();\r\n    const usingTranslation = () => changeTracker.lastI18nChange;\r\n    rerenderOn.forEach(event => {\r\n        var _a;\r\n        switch (event) {\r\n            case 'added':\r\n            case 'removed':\r\n                (_a = i18next.store) === null || _a === void 0 ? void 0 : _a.on(event, invalidate);\r\n                break;\r\n            default:\r\n                i18next.on(event, invalidate);\r\n                break;\r\n        }\r\n    });\r\n    Vue.mixin({\r\n        beforeCreate() {\r\n            var _a, _b;\r\n            const options = this.$options;\r\n            if (!options.__i18n && !options.i18nOptions) {\r\n                this.__translate = undefined;\r\n                return;\r\n            }\r\n            const name = this.$options.name;\r\n            const rand = ((Math.random() * 10 ** 8) | 0).toString();\r\n            const localNs = [name, rand].filter(x => !!x).join(\"-\");\r\n            this.__bundles = [];\r\n            const loadBundle = (bundle) => {\r\n                Object.entries(bundle).forEach(([lng, resources]) => {\r\n                    i18next.addResourceBundle(lng, localNs, resources, true, false);\r\n                    this.__bundles.push([lng, localNs]);\r\n                });\r\n            };\r\n            (_a = options.__i18n) === null || _a === void 0 ? void 0 : _a.forEach(bundle => {\r\n                loadBundle(JSON.parse(bundle));\r\n            });\r\n            let { lng, ns, keyPrefix } = handleI18nOptions(options, loadBundle);\r\n            if ((_b = this.__bundles) === null || _b === void 0 ? void 0 : _b.length) {\r\n                ns = [localNs].concat(ns !== null && ns !== void 0 ? ns : []);\r\n            }\r\n            const t = getTranslationFunction(lng, ns);\r\n            this.__translate = (key, options) => {\r\n                if (!keyPrefix || includesNs(key)) {\r\n                    return t(key, options);\r\n                }\r\n                else {\r\n                    return t(keyPrefix + '.' + key, options);\r\n                }\r\n            };\r\n        },\r\n        destroyed() {\r\n            var _a;\r\n            (_a = this.__bundles) === null || _a === void 0 ? void 0 : _a.forEach(([lng, ns]) => i18next.removeResourceBundle(lng, ns));\r\n        }\r\n    });\r\n    Vue.prototype.$t = function (key, options) {\r\n        var _a;\r\n        usingTranslation();\r\n        if (i18next.isInitialized) {\r\n            return ((_a = this === null || this === void 0 ? void 0 : this.__translate) !== null && _a !== void 0 ? _a : genericT)(key, options);\r\n        }\r\n        else {\r\n            return key;\r\n        }\r\n    };\r\n    Vue.prototype.$i18next = typeof Proxy === 'function' ?\r\n        new Proxy(i18next, {\r\n            get(target, prop) {\r\n                usingTranslation();\r\n                return Reflect.get(target, prop);\r\n            }\r\n        }) : i18next;\r\n    function getTranslationFunction(lng, ns) {\r\n        if (lng) {\r\n            return i18next.getFixedT(lng, ns);\r\n        }\r\n        else if (ns) {\r\n            return i18next.getFixedT(null, ns);\r\n        }\r\n        else {\r\n            return genericT;\r\n        }\r\n    }\r\n    function includesNs(key) {\r\n        const nsSeparator = i18next.options.nsSeparator;\r\n        return typeof nsSeparator === \"string\" && key.includes(nsSeparator);\r\n    }\r\n    function handleI18nOptions(options, loadBundle) {\r\n        let lng;\r\n        let ns;\r\n        let keyPrefix;\r\n        if (options.i18nOptions) {\r\n            let messages;\r\n            let namespaces;\r\n            ({\r\n                lng,\r\n                namespaces = i18next.options.defaultNS,\r\n                keyPrefix,\r\n                messages,\r\n            } = options.i18nOptions);\r\n            if (messages) {\r\n                loadBundle(messages);\r\n            }\r\n            ns = typeof namespaces === 'string' ? [namespaces] : namespaces;\r\n            if (ns) {\r\n                i18next.loadNamespaces(ns);\r\n            }\r\n        }\r\n        return { lng, ns, keyPrefix };\r\n    }\r\n    const slotNamePattern = new RegExp('{\\\\s*([a-z0-9\\\\-]+)\\\\s*}', 'gi');\r\n    const TranslationComponent = {\r\n        functional: true,\r\n        props: {\r\n            translation: {\r\n                type: String,\r\n                required: true,\r\n            }\r\n        },\r\n        render(_createElement, context) {\r\n            const textNode = context._v;\r\n            const translation = context.props.translation;\r\n            const result = [];\r\n            let match;\r\n            let lastIndex = 0;\r\n            while ((match = slotNamePattern.exec(translation)) !== null) {\r\n                result.push(textNode(translation.substring(lastIndex, match.index)));\r\n                const slot = context.scopedSlots[match[1]];\r\n                if (slot) {\r\n                    const nodes = slot({});\r\n                    nodes === null || nodes === void 0 ? void 0 : nodes.forEach(n => result.push(n));\r\n                }\r\n                else {\r\n                    result.push(textNode(match[0]));\r\n                }\r\n                lastIndex = slotNamePattern.lastIndex;\r\n            }\r\n            result.push(textNode(translation.substring(lastIndex)));\r\n            return result;\r\n        }\r\n    };\r\n    Vue.component('i18next', TranslationComponent);\r\n}\r\nexports.default = install;\r\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  common: {\n    canvas: {\n      label: 'Kartenanwendung',\n    },\n    error: {\n      serviceUnavailable:\n        'Der Kartendienst \"{{serviceName}}\" (ID: {{serviceId}}) ist derzeit nicht verfügbar. Dies kann die Funktionalität der Karte einschränken.',\n    },\n    overlay: {\n      noControlOnZoom: 'Verwenden Sie Strg+Scrollen zum Zoomen der Karte',\n      noCommandOnZoom:\n        'Verwenden Sie Command ⌘ + Scrollen zum Zoomen der Karte',\n      oneFingerPan:\n        'Verwenden Sie mindestens zwei Finger zum Verschieben der Karte',\n    },\n  },\n}\n\nexport const resourcesEn = {\n  common: {\n    canvas: {\n      label: 'Map application',\n    },\n    error: {\n      serviceUnavailable:\n        'Service  \"{{serviceName}}\" (ID: {{serviceId}}) is unavailable. This may limit the map\\'s functionality.',\n    },\n    overlay: {\n      noControlOnZoom: 'Use Ctrl+Mousewheel to zoom into the map',\n      noCommandOnZoom: 'Use Command ⌘ + Mousewheel to zoom into the map',\n      oneFingerPan: 'Use at least two fingers to pan the map',\n    },\n  },\n}\n\n// first type will be used as fallback language\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import i18next, { init, use } from 'i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport Vue from 'vue'\nimport VueI18Next from 'i18next-vue'\nimport locales from '../locales'\n\nuse(LanguageDetector)\nVue.use(VueI18Next, { i18next })\n\nconst supportedLngs = locales.map(({ type }) => type)\n\n/**\n * @param initialLanguage - If given, the initial language set in the mapConfiguration.\n */\nexport default (initialLanguage?: string) =>\n  init({\n    resources: locales.reduce((accumulator, { type, resources }) => {\n      accumulator[type] = resources\n      return accumulator\n    }, {}),\n    detection: {\n      lookupQuerystring: 'lng',\n      order: ['querystring', 'navigator', 'htmlTag'],\n    },\n    load: 'languageOnly',\n    fallbackLng: supportedLngs[0],\n    fallbackNS: 'common',\n    ns: ['common'],\n    supportedLngs,\n    ...(initialLanguage ? { lng: initialLanguage } : {}),\n  })\n    .then(() => {\n      // eslint-disable-next-line no-console\n      console.info(`i18next: Successfully initialized.`)\n    })\n    .catch((error: Error) => {\n      console.error('i18next: Error while initializing.', error)\n    })\n","import defaults from \"../defaults\";\r\n\r\n/**\r\n * Returns the layers to be initialized as soon as services are known.\r\n * @param {object} config - configuration object\r\n * @returns {object[]} array of layer initialization objects\r\n * @ignore\r\n */\r\nexport default function (config) {\r\n    // user specified what to do => use that\r\n    if (Array.isArray(config.layers)) {\r\n        return config.layers;\r\n    }\r\n\r\n    // user didn't specify, layerConf is lgv services => use default for lgv services\r\n    if (typeof config.layerConf === \"undefined\" || config.layerConf === defaults.layerConf) {\r\n        return defaults.layers;\r\n    }\r\n\r\n    // user didn't specify, layerConf is not known => don't set anything initially\r\n    return [];\r\n}\r\n","import {Map} from \"ol\";\r\nimport {DragPan, defaults as olDefaultInteractions} from \"ol/interaction.js\";\r\nimport setBackgroundImage from \"../../lib/setBackgroundImage\";\r\nimport getInitialLayers from \"../../lib/getInitialLayers\";\r\nimport defaults from \"../../defaults\";\r\nimport * as wms from \"../../layer/wms\";\r\nimport wmts from \"../../layer/wmts\";\r\nimport * as geojson from \"../../layer/geojson\";\r\nimport wfs from \"../../layer/wfs\";\r\nimport * as vectortile from \"../../layer/vectorTile\";\r\nimport oaf from \"../../layer/oaf\";\r\nimport {createMapView} from \"../../maps/mapView\";\r\nimport rawLayerList from \"../../rawLayerList\";\r\nimport crs from \"../../crs\";\r\nimport {setGazetteerUrl} from \"../../searchAddress\";\r\n\r\nlet mapIdCounter = 0;\r\n\r\n/**\r\n * lookup for layer constructors\r\n * @ignore\r\n */\r\nconst layerBuilderMap = {\r\n        wms,\r\n        \"wmts\": wmts,\r\n        wfs,\r\n        geojson,\r\n        vectortile,\r\n        oaf\r\n    },\r\n    originalAddLayer = Map.prototype.addLayer;\r\n\r\n/**\r\n * Flattens a Layer/LayerGroup to an array of non-group instances.\r\n * @param {ol/layer/Base} layer any layer, possibly a LayerGroup\r\n * @returns {ol/layer/Base[]} array of all given layers\r\n */\r\nfunction flattenLayerGroups (layer) {\r\n    return layer.getLayers\r\n        ? layer\r\n            .getLayers()\r\n            .getArray()\r\n            .map(l => flattenLayerGroups(l))\r\n            .flat(1)\r\n        : [layer];\r\n}\r\n\r\n/**\r\n * Adds an error handling function to an arbitrary layer. The event will be\r\n * registered to the tileloaderror, imageloaderror, featuresloaderror, and\r\n * generic error event. Depending on the type of layer and error, only one of\r\n * these events will fire.\r\n * @param {ol/layer/Base} layer Any type of layer implemented.\r\n * @param {Function} errorCallback Error callback, called from OL event.\r\n * @returns {void} side-effect to layer\r\n */\r\nfunction injectErrorCallback (layer, errorCallback) {\r\n    const layers = flattenLayerGroups(layer);\r\n\r\n    layers.forEach(l => {\r\n        const source = l.getSource?.();\r\n\r\n        if (source) {\r\n            source.on?.(\"tileloaderror\", errorCallback);\r\n            source.on?.(\"imageloaderror\", errorCallback);\r\n            source.on?.(\"featuresloaderror\", errorCallback);\r\n            source.on?.(\"error\", errorCallback);\r\n        }\r\n        else {\r\n            console.error(\"Could not register error callback on layer:\", l);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Adds a layer to the map, or adds a layer to the map by id.\r\n * This id is looked up within the array of all known services.\r\n *\r\n * Make sure services have been loaded with a callback on createMap\r\n * if you request the services from the internet.\r\n *\r\n * This function is available on all ol/Map instances.\r\n * @param {(string|ol/layer/Base)} layerOrId - if of layer to add to map\r\n * @param {object} [params] - optional parameter object\r\n * @param {boolean} [params.layerParams={}] - additional layerParams specified in portalConfig\r\n * @param {boolean} [params.layerParams.visibility=true] - if params.visibility not given, this is used\r\n * @param {Number} [params.layerParams.transparency=0] - if params.transparency not given, this is used\r\n * @param {boolean} [params.visibility=params.layerParams.visibility] - whether added layer is initially visible\r\n * @param {Number} [params.transparency=params.layerParams.transparency] - how visible the layer is initially\r\n * @param {Function} [params.errorCallback=console.error] - callback for layer source error events\r\n * @returns {?ol.Layer} added layer\r\n */\r\nfunction addLayer (layerOrId, params) {\r\n    const visibility = params?.visibility ?? params?.layerParams?.visibility ?? true,\r\n        transparency = params?.transparency ?? params?.layerParams?.transparency ?? 0,\r\n        layerParams = {...params?.layerParams || {}, visibility, transparency},\r\n        errorCallback = typeof params?.errorCallback === \"function\"\r\n            ? params?.errorCallback\r\n            : console.error;\r\n    let layer, layerBuilder;\r\n\r\n    // if parameter is id, create and add layer with masterportalAPI mechanisms\r\n    if (typeof layerOrId === \"string\") {\r\n        const rawLayer = rawLayerList.getLayerWhere({id: layerOrId});\r\n\r\n        if (!rawLayer) {\r\n            console.error(\"Layer with id '\" + layerOrId + \"' not found. No layer added to map.\");\r\n            return null;\r\n        }\r\n        layerBuilder = layerBuilderMap[rawLayer.typ.toLowerCase()];\r\n        if (!layerBuilder) {\r\n            console.error(\"Layer with id '\" + layerOrId + \"' has unknown type '\" + rawLayer.typ + \"'. No layer added to map.\");\r\n            return null;\r\n        }\r\n        layer = layerBuilder.createLayer(rawLayer, {layerParams}, {map: this});\r\n        layer.setVisible(typeof visibility === \"boolean\" ? visibility : true);\r\n        layer.setOpacity(typeof transparency === \"number\" ? (100 - transparency) / 100 : 1);\r\n        injectErrorCallback(layer, errorCallback);\r\n        originalAddLayer.call(this, layer);\r\n        return layer;\r\n    }\r\n\r\n    // else use original function\r\n    injectErrorCallback(layerOrId, errorCallback);\r\n    return originalAddLayer.call(this, layerOrId);\r\n}\r\n\r\nMap.prototype.addLayer = addLayer;\r\n\r\n/**\r\n * Creates an openlayers map according to configuration. Does not set many default values itself, but uses function that do.\r\n * Check the called functions for default values, or [the defaults file]{@link ./defaults.js}.\r\n * @param {object} [config] - configuration object - falls back to defaults if none given\r\n * @param {string} [config.target=\"map\"] - div id to render map to\r\n * @param {string} [config.namedProjections] - projections to create the map\r\n * @param {string} [config.backgroundImage] - background image for map; \"\" to use none\r\n * @param {string} [config.epsg] - CRS to use\r\n * @param {number[]} [config.extent] - extent to use\r\n * @param {Array.<{resolution: number, scale: number, zoomLevel: number}>} [config.options] - zoom level definition\r\n * @param {Array.<string[]>} [config.options] - each sub-array has two values: projection name, and projection description\r\n * @param {number} [config.startResolution] - initial resolution\r\n * @param {number[]} [config.startCenter] - initial position\r\n * @param {(string|object)} [config.layerConf] - services registry or URL thereof\r\n * @param {string} [config.gazetteerUrl] - url of gazetteer to use in searchAddress\r\n * @param {object}  [settings={}] - setings object\r\n * @param {object} [settings.mapParams] - additional parameter object that is spread into the ol.Map constructor object\r\n * @param {function} [settings.callback] - optional callback for layer list loading\r\n * @param {function} [settings.errorCallback] – method called on error events\r\n * @param {String} [mapMode = \"2D\"] The map mode. '2D' to craete a 2D-map and '3D' to create a 3D-map.\r\n * @returns {object} map object from ol\r\n */\r\nexport function createMap (config = defaults, {mapParams, callback, errorCallback} = {}) {\r\n    crs.registerProjections(config.namedProjections);\r\n    setBackgroundImage(config);\r\n    setGazetteerUrl(config.gazetteerUrl);\r\n\r\n    const selectedInteractions = Object.assign({}, {dragPan: false, altShiftDragRotate: false, pinchRotate: false}, config.mapInteractions?.interactionModes),\r\n        map = new Map(Object.assign({\r\n            target: config.target || defaults.target,\r\n            interactions: olDefaultInteractions(selectedInteractions).extend([\r\n                new DragPan({\r\n                    condition: function (event) {\r\n                        if (event.originalEvent.shiftKey) {\r\n                            return false;\r\n                        }\r\n                        return (!event.originalEvent.pointerType || event.originalEvent.pointerType === \"mouse\") || (config.mapInteractions?.interactionModes?.twoFingerPan && this.getPointerCount() === 2) || !config.mapInteractions?.interactionModes?.twoFingerPan;\r\n                    }\r\n                })\r\n            ]),\r\n            controls: [],\r\n            view: createMapView(config),\r\n            keyboardEventTarget: config.mapInteractions?.keyboardEventTarget ? document : false\r\n        }, mapParams));\r\n\r\n    map.set(\"mapMode\", \"2D\");\r\n    map.set(\"id\", `map2D_${mapIdCounter++}`);\r\n\r\n    // extend callback to load configured initial layers\r\n    rawLayerList.initializeLayerList(config.layerConf, (param, error) => {\r\n        getInitialLayers(config)\r\n            .forEach(layer => {\r\n                map.addLayer(layer.id, {layerParams: layer, errorCallback});\r\n            });\r\n\r\n        if (typeof callback === \"function\") {\r\n            return callback(param, error);\r\n        }\r\n\r\n        return null;\r\n    });\r\n\r\n    return map;\r\n}\r\n","let _imageRenderingPixelatedSupported = undefined;\nlet _imageRenderingValue = undefined;\n/**\n * https://caniuse.com/mdn-css_properties_image-rendering_pixelated\n * @return whether the browser supports\n */\nexport function supportsImageRenderingPixelated() {\n    if (_imageRenderingPixelatedSupported === undefined) {\n        const canvas = document.createElement('canvas');\n        canvas.setAttribute('style', 'image-rendering: -moz-crisp-edges; image-rendering: crisp-edges; image-rendering: pixelated;');\n        // canvas.style.imageRendering will be undefined, null or an\n        // empty string on unsupported browsers.\n        const imageRenderingValue = canvas.style.imageRendering;\n        _imageRenderingPixelatedSupported = !!imageRenderingValue;\n        if (_imageRenderingPixelatedSupported) {\n            _imageRenderingValue = imageRenderingValue;\n        }\n    }\n    return _imageRenderingPixelatedSupported;\n}\n/**\n * The value supported by thie browser for the CSS property \"image-rendering\"\n * @return {string}\n */\nexport function imageRenderingValue() {\n    supportsImageRenderingPixelated();\n    return _imageRenderingValue || '';\n}\n/**\n * Return the projection of the source that Cesium should use.\n *\n * @param source Source.\n * @return The projection of the source.\n */\nexport function getSourceProjection(source) {\n    return source.get('olcs_projection') || source.getProjection();\n}\n/**\n * Counter for getUid.\n * @type {number}\n */\nlet uidCounter_ = 0;\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. Similar to OL getUid.\n *\n * @param obj The object to get the unique ID for.\n * @return The unique ID for the object.\n */\nexport function getUid(obj) {\n    return obj.olcs_uid || (obj.olcs_uid = ++uidCounter_);\n}\nexport function waitReady(object) {\n    const o = object;\n    const p = o.readyPromise;\n    if (p) {\n        return p;\n    }\n    if (o.ready !== undefined) {\n        if (o.ready) {\n            return Promise.resolve(object);\n        }\n        return new Promise((resolve, _) => {\n            // FIXME: this is crazy\n            // alternative: intercept _ready = true\n            // altnerative: pass a timeout\n            const stopper = setInterval(() => {\n                if (o.ready) {\n                    clearInterval(stopper);\n                    resolve(object);\n                }\n            }, 20);\n        });\n    }\n    return Promise.reject('Not a readyable object');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsSUFBSSxpQ0FBaUMsR0FBWSxTQUFTLENBQUM7QUFDM0QsSUFBSSxvQkFBb0IsR0FBVyxTQUFTLENBQUM7QUFHN0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxJQUFJLGlDQUFpQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsOEZBQThGLENBQUMsQ0FBQztRQUM3SCw0REFBNEQ7UUFDNUQsd0NBQXdDO1FBQ3hDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDeEQsaUNBQWlDLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1FBQzFELElBQUksaUNBQWlDLEVBQUUsQ0FBQztZQUN0QyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8saUNBQWlDLENBQUM7QUFDM0MsQ0FBQztBQUdEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyxPQUFPLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBYztJQUNoRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQWUsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDL0UsQ0FBQztBQUdEOzs7R0FHRztBQUNILElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztBQUVwQjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFRO0lBQzdCLE9BQU8sR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBTyxNQUFZO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLE1BQWEsQ0FBQztJQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDTixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsdUJBQXVCO1lBQ3ZCLHVDQUF1QztZQUN2Qyw4QkFBOEI7WUFDOUIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1osYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=","/**\n * @module ol/source/static\n */\n\nimport {decode} from '../Image.js';\nimport {getHeight, getWidth} from '../extent.js';\n\n/**\n * @typedef {Object} LoaderOptions\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {import(\"../extent.js\").Extent} imageExtent Extent of the image in map coordinates.\n * This is the [left, bottom, right, top] map coordinates of your image. When using this loader with an\n * `ol/source/Image`, the same extent must be set as `extent` of the `ol/layer/Image`.\n * @property {string} url Image URL.\n * @property {function(HTMLImageElement, string): Promise<import('../DataTile.js').ImageLike>} [load] Function\n * to perform loading of the image. Receives the created `HTMLImageElement` and the desired `src` as argument and\n * returns a promise resolving to the loaded or decoded image. Default is {@link module:ol/Image.decode}.\n */\n\n/**\n * Creates a loader for static images.\n * @param {LoaderOptions} options Loader options.\n * @return {import(\"../Image.js\").ImageObjectPromiseLoader} Loader.\n * @api\n */\nexport function createLoader(options) {\n  const load = options.load || decode;\n  const extent = options.imageExtent;\n  const crossOrigin = options.crossOrigin ?? null;\n\n  return () => {\n    const image = new Image();\n    image.crossOrigin = crossOrigin;\n    return load(image, options.url).then((image) => {\n      const resolutionX = getWidth(extent) / image.width;\n      const resolutionY = getHeight(extent) / image.height;\n      const resolution =\n        resolutionX !== resolutionY ? [resolutionX, resolutionY] : resolutionY;\n      return {image, extent, resolution, pixelRatio: 1};\n    });\n  };\n}\n","/**\n * @module ol/source/ImageStatic\n */\n\nimport ImageWrapper, {decode} from '../Image.js';\nimport EventType from '../events/EventType.js';\nimport {intersects} from '../extent.js';\nimport {get as getProjection} from '../proj.js';\nimport ImageSource, {defaultImageLoadFunction} from './Image.js';\nimport {createLoader} from './static.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {import(\"../extent.js\").Extent} imageExtent Extent of the image in map coordinates.\n * This is the [left, bottom, right, top] map coordinates of your image.\n * @property {import(\"../Image.js\").LoadFunction} [imageLoadFunction] Optional function to load an image given a URL.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {string} url Image URL.\n */\n\n/**\n * @classdesc\n * A layer source for displaying a single, static image.\n * @api\n */\nclass Static extends ImageSource {\n  /**\n   * @param {Options} options ImageStatic options.\n   */\n  constructor(options) {\n    const crossOrigin =\n      options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n    const /** @type {import(\"../Image.js\").LoadFunction} */ imageLoadFunction =\n        options.imageLoadFunction !== undefined\n          ? options.imageLoadFunction\n          : defaultImageLoadFunction;\n\n    super({\n      attributions: options.attributions,\n      interpolate: options.interpolate,\n      projection: getProjection(options.projection),\n    });\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.url_ = options.url;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.imageExtent_ = options.imageExtent;\n\n    /**\n     * @private\n     * @type {import(\"../Image.js\").default}\n     */\n    this.image = null;\n\n    this.image = new ImageWrapper(\n      this.imageExtent_,\n      undefined,\n      1,\n      createLoader({\n        url: options.url,\n        imageExtent: options.imageExtent,\n        crossOrigin,\n        load: (image, src) => {\n          this.image.setImage(image);\n          imageLoadFunction(this.image, src);\n          return decode(image);\n        },\n      }),\n    );\n\n    this.image.addEventListener(\n      EventType.CHANGE,\n      this.handleImageChange.bind(this),\n    );\n  }\n\n  /**\n   * Returns the image extent\n   * @return {import(\"../extent.js\").Extent} image extent.\n   * @api\n   */\n  getImageExtent() {\n    return this.imageExtent_;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../Image.js\").default} Single image.\n   * @override\n   */\n  getImageInternal(extent, resolution, pixelRatio, projection) {\n    if (intersects(extent, this.image.getExtent())) {\n      return this.image;\n    }\n    return null;\n  }\n\n  /**\n   * Return the URL used for this image source.\n   * @return {string} URL.\n   * @api\n   */\n  getUrl() {\n    return this.url_;\n  }\n}\n\nexport default Static;\n","import { getSourceProjection } from '../util.js';\nimport {} from 'ol/source.js';\nimport { attributionsFunctionToCredits } from '../core.js';\nexport function createEmptyCanvas() {\n    const canvas = document.createElement('canvas');\n    canvas.width = 1;\n    canvas.height = 1;\n    return canvas;\n}\nexport default class OLImageryProvider {\n    source_;\n    projection_;\n    fallbackProj_;\n    map_;\n    shouldRequestNextLevel;\n    emptyCanvas_ = createEmptyCanvas();\n    emptyCanvasPromise_ = Promise.resolve(this.emptyCanvas_);\n    tilingScheme_;\n    ready_;\n    rectangle_;\n    /**\n   * When <code>true</code>, this model is ready to render, i.e., the external binary, image,\n   * and shader files were downloaded and the WebGL resources were created.\n   */\n    get ready() {\n        return this.ready_;\n    }\n    /**\n   * Gets the rectangle, in radians, of the imagery provided by the instance.\n   */\n    get rectangle() {\n        return this.rectangle_;\n    }\n    /**\n     * Gets the tiling scheme used by the provider.\n     */\n    get tilingScheme() {\n        return this.tilingScheme_;\n    }\n    /**\n     * Gets an event that is raised when the imagery provider encounters an asynchronous error.  By subscribing\n     * to the event, you will be notified of the error and can potentially recover from it.  Event listeners\n     * are passed an instance of {@link Cesium.TileProviderError}.\n     */\n    errorEvent = new Cesium.Event();\n    /**\n     * Gets the credit to display when this imagery provider is active.  Typically this is used to credit\n     * the source of the imagery.\n     */\n    credit;\n    /**\n     * Gets the proxy used by this provider.\n     */\n    proxy;\n    get _ready() {\n        return this.ready_;\n    }\n    /**\n     * Gets the width of each tile, in pixels.\n     */\n    get tileWidth() {\n        const tileGrid = this.source_.getTileGrid();\n        if (tileGrid) {\n            const tileSizeAtZoom0 = tileGrid.getTileSize(0);\n            if (Array.isArray(tileSizeAtZoom0)) {\n                return tileSizeAtZoom0[0];\n            }\n            else {\n                return tileSizeAtZoom0; // same width and height\n            }\n        }\n        return 256;\n    }\n    /**\n     * Gets the height of each tile, in pixels.\n     */\n    get tileHeight() {\n        const tileGrid = this.source_.getTileGrid();\n        if (tileGrid) {\n            const tileSizeAtZoom0 = tileGrid.getTileSize(0);\n            if (Array.isArray(tileSizeAtZoom0)) {\n                return tileSizeAtZoom0[1];\n            }\n            else {\n                return tileSizeAtZoom0; // same width and height\n            }\n        }\n        return 256;\n    }\n    /**\n     * Gets the maximum level-of-detail that can be requested.\n     */\n    get maximumLevel() {\n        const tileGrid = this.source_.getTileGrid();\n        if (tileGrid) {\n            return tileGrid.getMaxZoom();\n        }\n        else {\n            return 18; // some arbitrary value\n        }\n    }\n    // FIXME: to implement, we could check the number of tiles at minzoom (for this rectangle) and return 0 if too big\n    /**\n     * Gets the minimum level-of-detail that can be requested.  Generally,\n     * a minimum level should only be used when the rectangle of the imagery is small\n     * enough that the number of tiles at the minimum level is small.  An imagery\n     * provider with more than a few tiles at the minimum level will lead to\n     * rendering problems.\n     */\n    get minimumLevel() {\n        // WARNING: Do not use the minimum level (at least until the extent is\n        // properly set). Cesium assumes the minimumLevel to contain only\n        // a few tiles and tries to load them all at once -- this can\n        // freeze and/or crash the browser !\n        return 0;\n        //var tg = this.source_.getTileGrid();\n        //return tg ? tg.getMinZoom() : 0;\n    }\n    /**\n     * Gets the tile discard policy.  If not undefined, the discard policy is responsible\n     * for filtering out \"missing\" tiles via its shouldDiscardImage function.  If this function\n     * returns undefined, no tiles are filtered.\n     */\n    get tileDiscardPolicy() {\n        return undefined;\n    }\n    // FIXME: this might be exposed\n    /**\n     * Gets a value indicating whether or not the images provided by this imagery provider\n     * include an alpha channel.  If this property is false, an alpha channel, if present, will\n     * be ignored.  If this property is true, any images without an alpha channel will be treated\n     * as if their alpha is 1.0 everywhere.  When this property is false, memory usage\n     * and texture upload time are reduced.\n     */\n    get hasAlphaChannel() {\n        return true;\n    }\n    // FIXME: this could be implemented by proxying to OL\n    /**\n     * Asynchronously determines what features, if any, are located at a given longitude and latitude within\n     * a tile.\n     * This function is optional, so it may not exist on all ImageryProviders.\n     * @param x - The tile X coordinate.\n     * @param y - The tile Y coordinate.\n     * @param level - The tile level.\n     * @param longitude - The longitude at which to pick features.\n     * @param latitude - The latitude at which to pick features.\n     * @return A promise for the picked features that will resolve when the asynchronous\n     *                   picking completes.  The resolved value is an array of {@link ImageryLayerFeatureInfo}\n     *                   instances.  The array may be empty if no features are found at the given location.\n     *                   It may also be undefined if picking is not supported.\n     */\n    pickFeatures(x, y, level, longitude, latitude) {\n        return undefined;\n    }\n    /**\n     * Special class derived from Cesium.ImageryProvider\n     * that is connected to the given ol.source.TileImage.\n     * @param olMap OL map\n     * @param source Tile image source\n     * @param [opt_fallbackProj] Projection to assume if source has no projection\n     */\n    constructor(olMap, source, opt_fallbackProj) {\n        this.source_ = source;\n        this.projection_ = null;\n        this.ready_ = false;\n        this.fallbackProj_ = opt_fallbackProj || null;\n        // cesium v107+ don't wait for ready anymore so we put somehing here while it loads\n        this.tilingScheme_ = new Cesium.WebMercatorTilingScheme();\n        this.rectangle_ = null;\n        this.map_ = olMap;\n        this.shouldRequestNextLevel = false;\n        const proxy = this.source_.get('olcs_proxy');\n        if (proxy) {\n            if (typeof proxy === 'function') {\n                // Duck typing a proxy\n                this.proxy = {\n                    'getURL': proxy\n                };\n            }\n            else if (typeof proxy === 'string') {\n                this.proxy = new Cesium.DefaultProxy(proxy);\n            }\n        }\n        this.source_.on('change', (e) => {\n            this.handleSourceChanged_();\n        });\n        this.handleSourceChanged_();\n    }\n    /**\n     * Checks if the underlying source is ready and cached required data.\n     */\n    handleSourceChanged_() {\n        if (!this.ready_ && this.source_.getState() == 'ready') {\n            this.projection_ = getSourceProjection(this.source_) || this.fallbackProj_;\n            const options = { numberOfLevelZeroTilesX: 1, numberOfLevelZeroTilesY: 1 };\n            if (this.source_.getTileGrid() !== null) {\n                // Get the number of tiles at level 0 if it is defined\n                this.source_.getTileGrid().forEachTileCoord(this.projection_.getExtent(), 0, ([zoom, xIndex, yIndex]) => {\n                    options.numberOfLevelZeroTilesX = xIndex + 1;\n                    options.numberOfLevelZeroTilesY = yIndex + 1;\n                });\n            }\n            if (this.projection_.getCode() === 'EPSG:4326') {\n                // Cesium zoom level 0 is OpenLayers zoom level 1 for layer in EPSG:4326 with a single tile on level 0\n                this.shouldRequestNextLevel = options.numberOfLevelZeroTilesX === 1 && options.numberOfLevelZeroTilesY === 1;\n                this.tilingScheme_ = new Cesium.GeographicTilingScheme(options);\n            }\n            else if (this.projection_.getCode() === 'EPSG:3857') {\n                this.shouldRequestNextLevel = false;\n                this.tilingScheme_ = new Cesium.WebMercatorTilingScheme(options);\n            }\n            else {\n                return;\n            }\n            this.rectangle_ = this.tilingScheme_.rectangle;\n            this.ready_ = true;\n        }\n    }\n    /**\n     * Generates the proper attributions for a given position and zoom\n     * level.\n     * @implements\n     */\n    getTileCredits(x, y, level) {\n        const attributionsFunction = this.source_.getAttributions();\n        if (!attributionsFunction) {\n            return [];\n        }\n        const extent = this.map_.getView().calculateExtent(this.map_.getSize());\n        const center = this.map_.getView().getCenter();\n        const zoom = this.shouldRequestNextLevel ? level + 1 : level;\n        return attributionsFunctionToCredits(attributionsFunction, zoom, center, extent);\n    }\n    /**\n     * @implements\n     */\n    requestImage(x, y, level, request) {\n        const tileUrlFunction = this.source_.getTileUrlFunction();\n        if (tileUrlFunction && this.projection_) {\n            const z_ = this.shouldRequestNextLevel ? level + 1 : level;\n            let url = tileUrlFunction.call(this.source_, [z_, x, y], 1, this.projection_);\n            if (this.proxy) {\n                url = this.proxy.getURL(url);\n            }\n            if (url) {\n                // It is probably safe to cast here\n                return Cesium.ImageryProvider.loadImage(this, url);\n            }\n            return this.emptyCanvasPromise_;\n        }\n        else {\n            // return empty canvas to stop Cesium from retrying later\n            return this.emptyCanvasPromise_;\n        }\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0xJbWFnZXJ5UHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb2xjcy9jb3JlL09MSW1hZ2VyeVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQU16RCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDakIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8saUJBQWlCO0lBQzVCLE9BQU8sQ0FBWTtJQUNuQixXQUFXLENBQXlCO0lBQ3BDLGFBQWEsQ0FBeUI7SUFDdEMsSUFBSSxDQUFNO0lBQ1Ysc0JBQXNCLENBQVU7SUFDaEMsWUFBWSxHQUFzQixpQkFBaUIsRUFBRSxDQUFDO0lBQ3RELG1CQUFtQixHQUErQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRixhQUFhLENBQWU7SUFDNUIsTUFBTSxDQUFVO0lBQ2hCLFVBQVUsQ0FBWTtJQUU5Qjs7O0tBR0M7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztLQUVDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixD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","import MVT from 'ol/format/MVT.js';\nimport Style, {} from 'ol/style/Style.js';\nimport Stroke from 'ol/style/Stroke.js';\nimport { toContext } from 'ol/render.js';\nimport { get as getProjection } from 'ol/proj.js';\nimport LRUCache from 'ol/structs/LRUCache.js';\nimport { getForProjection as getTilegridForProjection } from 'ol/tilegrid.js';\nimport { createFromTemplates as createTileUrlFunctions } from 'ol/tileurlfunction.js';\nimport RenderFeature from 'ol/render/Feature.js';\nimport { createEmptyCanvas } from './core/OLImageryProvider.js';\nconst format = new MVT({\n    featureClass: RenderFeature\n});\nconst styles = [new Style({\n        stroke: new Stroke({\n            color: 'blue',\n            width: 2\n        })\n    })];\nexport default class MVTImageryProvider {\n    urls;\n    emptyCanvas_ = createEmptyCanvas();\n    emptyCanvasPromise_ = Promise.resolve(this.emptyCanvas_);\n    tilingScheme_ = new Cesium.WebMercatorTilingScheme;\n    ready_ = true;\n    rectangle_;\n    tileRectangle_;\n    tileWidth = 256;\n    tileHeight = 256;\n    maximumLevel = 20;\n    minimumLevel_ = 0;\n    get minimumLevel() {\n        return this.minimumLevel_;\n    }\n    featureCache;\n    tileCache;\n    tileFunction_;\n    styleFunction_;\n    projection_ = getProjection('EPSG:3857');\n    /**\n   * When <code>true</code>, this model is ready to render, i.e., the external binary, image,\n   * and shader files were downloaded and the WebGL resources were created.\n   */\n    get ready() {\n        return this.ready_;\n    }\n    /**\n   * Gets the rectangle, in radians, of the imagery provided by the instance.\n   */\n    get rectangle() {\n        return this.rectangle_;\n    }\n    /**\n     * Gets the tiling scheme used by the provider.\n     */\n    get tilingScheme() {\n        return this.tilingScheme_;\n    }\n    /**\n     * Gets an event that is raised when the imagery provider encounters an asynchronous error.  By subscribing\n     * to the event, you will be notified of the error and can potentially recover from it.  Event listeners\n     * are passed an instance of {@link Cesium.TileProviderError}.\n     */\n    errorEvent = new Cesium.Event();\n    /**\n     * Gets the credit to display when this imagery provider is active.  Typically this is used to credit\n     * the source of the imagery.\n     */\n    credit;\n    getTileCredits(x, y, level) {\n        return [];\n    }\n    /**\n     * Gets the proxy used by this provider.\n     */\n    proxy;\n    get _ready() {\n        return this.ready_;\n    }\n    /**\n     * Gets the tile discard policy.  If not undefined, the discard policy is responsible\n     * for filtering out \"missing\" tiles via its shouldDiscardImage function.  If this function\n     * returns undefined, no tiles are filtered.\n     */\n    get tileDiscardPolicy() {\n        return undefined;\n    }\n    // FIXME: this might be exposed\n    /**\n     * Gets a value indicating whether or not the images provided by this imagery provider\n     * include an alpha channel.  If this property is false, an alpha channel, if present, will\n     * be ignored.  If this property is true, any images without an alpha channel will be treated\n     * as if their alpha is 1.0 everywhere.  When this property is false, memory usage\n     * and texture upload time are reduced.\n     */\n    get hasAlphaChannel() {\n        return true;\n    }\n    // FIXME: this could be implemented by proxying to OL\n    /**\n     * Asynchronously determines what features, if any, are located at a given longitude and latitude within\n     * a tile.\n     * This function is optional, so it may not exist on all ImageryProviders.\n     * @param x - The tile X coordinate.\n     * @param y - The tile Y coordinate.\n     * @param level - The tile level.\n     * @param longitude - The longitude at which to pick features.\n     * @param latitude - The latitude at which to pick features.\n     * @return A promise for the picked features that will resolve when the asynchronous\n     *                   picking completes.  The resolved value is an array of {@link ImageryLayerFeatureInfo}\n     *                   instances.  The array may be empty if no features are found at the given location.\n     *                   It may also be undefined if picking is not supported.\n     */\n    pickFeatures(x, y, level, longitude, latitude) {\n        return undefined;\n    }\n    constructor(options) {\n        this.urls = options.urls;\n        this.rectangle_ = options.rectangle || this.tilingScheme.rectangle;\n        this.credit = options.credit;\n        this.styleFunction_ = options.styleFunction || (() => styles);\n        this.tileRectangle_ = new Cesium.Rectangle();\n        // to avoid too frequent cache grooming we allow x2 capacity\n        const cacheSize = options.cacheSize !== undefined ? options.cacheSize : 50;\n        this.tileCache = new LRUCache(cacheSize);\n        this.featureCache = options.featureCache || new LRUCache(cacheSize);\n        this.minimumLevel_ = options.minimumLevel || 0;\n        const tileGrid = getTilegridForProjection(this.projection_);\n        this.tileFunction_ = createTileUrlFunctions(this.urls, tileGrid);\n    }\n    getTileFeatures(z, x, y) {\n        const cacheKey = this.getCacheKey_(z, x, y);\n        let promise;\n        if (this.featureCache.containsKey(cacheKey)) {\n            promise = this.featureCache.get(cacheKey);\n        }\n        if (!promise) {\n            const url = this.getUrl_(z, x, y);\n            promise = fetch(url)\n                .then(r => (r.ok ? r : Promise.reject(r)))\n                .then(r => r.arrayBuffer())\n                .then(buffer => this.readFeaturesFromBuffer(buffer));\n            this.featureCache.set(cacheKey, promise);\n            if (this.featureCache.getCount() > 2 * this.featureCache.highWaterMark) {\n                while (this.featureCache.canExpireCache()) {\n                    this.featureCache.pop();\n                }\n            }\n        }\n        return promise;\n    }\n    readFeaturesFromBuffer(buffer) {\n        const features = format.readFeatures(buffer);\n        const scaleFactor = this.tileWidth / 4096;\n        features.forEach((f) => {\n            const flatCoordinates = f.getFlatCoordinates();\n            for (let i = 0; i < flatCoordinates.length; ++i) {\n                flatCoordinates[i] *= scaleFactor;\n            }\n        });\n        return features;\n    }\n    getUrl_(z, x, y) {\n        // FIXME: probably we should not pass 1 as pixelRatio\n        const url = this.tileFunction_([z, x, y], 1, this.projection_);\n        return url;\n    }\n    getCacheKey_(z, x, y) {\n        return `${z}_${x}_${y}`;\n    }\n    requestImage(x, y, z, request) {\n        if (z < this.minimumLevel_) {\n            return this.emptyCanvasPromise_;\n        }\n        try {\n            const cacheKey = this.getCacheKey_(z, x, y);\n            let promise;\n            if (this.tileCache.containsKey(cacheKey)) {\n                promise = this.tileCache.get(cacheKey);\n            }\n            if (!promise) {\n                promise = this.getTileFeatures(z, x, y)\n                    .then((features) => {\n                    // FIXME: here we suppose the 2D projection is in meters\n                    this.tilingScheme.tileXYToNativeRectangle(x, y, z, this.tileRectangle_);\n                    const resolution = (this.tileRectangle_.east - this.tileRectangle_.west) / this.tileWidth;\n                    return this.rasterizeFeatures(features, this.styleFunction_, resolution);\n                });\n                this.tileCache.set(cacheKey, promise);\n                if (this.tileCache.getCount() > 2 * this.tileCache.highWaterMark) {\n                    while (this.tileCache.canExpireCache()) {\n                        this.tileCache.pop();\n                    }\n                }\n            }\n            return promise;\n        }\n        catch (e) {\n            console.trace(e);\n            // FIXME: open PR on Cesium to fix incorrect typing\n            // @ts-ignore\n            this.errorEvent.raiseEvent('could not render pbf to tile', e);\n        }\n    }\n    rasterizeFeatures(features, styleFunction, resolution) {\n        const canvas = document.createElement('canvas');\n        const vectorContext = toContext(canvas.getContext('2d'), { size: [this.tileWidth, this.tileHeight] });\n        features.forEach((f) => {\n            const styles = styleFunction(f, resolution);\n            if (styles) {\n                if (Array.isArray(styles)) {\n                    styles.forEach((style) => {\n                        vectorContext.setStyle(style);\n                        vectorContext.drawGeometry(f);\n                    });\n                }\n                else {\n                    vectorContext.setStyle(styles);\n                    vectorContext.drawGeometry(f);\n                }\n            }\n        });\n        return canvas;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTVZUSW1hZ2VyeVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29sY3MvTVZUSW1hZ2VyeVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxFQUFFLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUMsR0FBRyxJQUFJLGFBQWEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLFFBQVEsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLElBQUksd0JBQXdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsbUJBQW1CLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRixPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQWE5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNyQixZQUFZLEVBQUUsYUFBYTtDQUM1QixDQUFDLENBQUM7QUFFSCxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNqQixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztLQUNILENBQUMsQ0FBQyxDQUFDO0FBR0osTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBa0I7SUFDN0IsSUFBSSxDQUFXO0lBQ2YsWUFBWSxHQUFzQixpQkFBaUIsRUFBRSxDQUFDO0lBQ3RELG1CQUFtQixHQUErQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUks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","import { linear as linearEasing } from 'ol/easing.js';\nimport olLayerTile from 'ol/layer/Tile.js';\nimport olLayerImage from 'ol/layer/Image.js';\nimport { get as getProjection, transformExtent } from 'ol/proj.js';\nimport olSourceImageStatic from 'ol/source/ImageStatic.js';\nimport olSourceImageWMS from 'ol/source/ImageWMS.js';\nimport olSourceTileImage from 'ol/source/TileImage.js';\nimport olSourceTileWMS from 'ol/source/TileWMS.js';\nimport olSourceVectorTile from 'ol/source/VectorTile.js';\nimport olcsCoreOLImageryProvider from './core/OLImageryProvider.js';\nimport { getSourceProjection } from './util.js';\nimport MVTImageryProvider from './MVTImageryProvider.js';\nimport VectorTileLayer from 'ol/layer/VectorTile.js';\nimport { getCenter as getExtentCenter } from 'ol/extent.js';\n/**\n * Compute the pixel width and height of a point in meters using the\n * camera frustum.\n */\nexport function computePixelSizeAtCoordinate(scene, target) {\n    const camera = scene.camera;\n    const canvas = scene.canvas;\n    const frustum = camera.frustum;\n    const distance = Cesium.Cartesian3.magnitude(Cesium.Cartesian3.subtract(camera.position, target, new Cesium.Cartesian3()));\n    // @ts-ignore TS2341\n    return frustum.getPixelDimensions(canvas.clientWidth, canvas.clientHeight, distance, scene.pixelRatio, new Cesium.Cartesian2());\n}\n/**\n * Compute bounding box around a target point.\n * @param {!Cesium.Scene} scene\n * @param {!Cesium.Cartesian3} target\n * @param {number} amount Half the side of the box, in pixels.\n * @return {Array<Cesium.Cartographic>} bottom left and top right\n * coordinates of the box\n */\nexport function computeBoundingBoxAtTarget(scene, target, amount) {\n    const pixelSize = computePixelSizeAtCoordinate(scene, target);\n    const transform = Cesium.Transforms.eastNorthUpToFixedFrame(target);\n    const bottomLeft = Cesium.Matrix4.multiplyByPoint(transform, new Cesium.Cartesian3(-pixelSize.x * amount, -pixelSize.y * amount, 0), new Cesium.Cartesian3());\n    const topRight = Cesium.Matrix4.multiplyByPoint(transform, new Cesium.Cartesian3(pixelSize.x * amount, pixelSize.y * amount, 0), new Cesium.Cartesian3());\n    return Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray([bottomLeft, topRight]);\n}\nexport function applyHeightOffsetToGeometry(geometry, height) {\n    geometry.applyTransform((input, output, stride) => {\n        console.assert(input === output);\n        if (stride !== undefined && stride >= 3) {\n            for (let i = 0; i < output.length; i += stride) {\n                output[i + 2] = output[i + 2] + height;\n            }\n        }\n        return output;\n    });\n}\nexport function createMatrixAtCoordinates(coordinates, rotation = 0, translation = Cesium.Cartesian3.ZERO, scale = new Cesium.Cartesian3(1, 1, 1)) {\n    const position = ol4326CoordinateToCesiumCartesian(coordinates);\n    const rawMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n    const quaternion = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, -rotation);\n    const rotationMatrix = Cesium.Matrix4.fromTranslationQuaternionRotationScale(translation, quaternion, scale);\n    return Cesium.Matrix4.multiply(rawMatrix, rotationMatrix, new Cesium.Matrix4());\n}\nexport function rotateAroundAxis(camera, angle, axis, transform, opt_options) {\n    const clamp = Cesium.Math.clamp;\n    const defaultValue = Cesium.defaultValue;\n    const options = opt_options;\n    const duration = defaultValue(options?.duration, 500); // ms\n    const easing = defaultValue(options?.easing, linearEasing);\n    const callback = options?.callback;\n    let lastProgress = 0;\n    const oldTransform = new Cesium.Matrix4();\n    const start = Date.now();\n    const step = function () {\n        const timestamp = Date.now();\n        const timeDifference = timestamp - start;\n        const progress = easing(clamp(timeDifference / duration, 0, 1));\n        console.assert(progress >= lastProgress);\n        camera.transform.clone(oldTransform);\n        const stepAngle = (progress - lastProgress) * angle;\n        lastProgress = progress;\n        camera.lookAtTransform(transform);\n        camera.rotate(axis, stepAngle);\n        camera.lookAtTransform(oldTransform);\n        if (progress < 1) {\n            window.requestAnimationFrame(step);\n        }\n        else {\n            if (callback) {\n                callback();\n            }\n        }\n    };\n    window.requestAnimationFrame(step);\n}\nexport function setHeadingUsingBottomCenter(scene, heading, bottomCenter, options) {\n    const camera = scene.camera;\n    // Compute the camera position to zenith quaternion\n    const angleToZenith = computeAngleToZenith(scene, bottomCenter);\n    const axis = camera.right;\n    const quaternion = Cesium.Quaternion.fromAxisAngle(axis, angleToZenith);\n    const rotation = Cesium.Matrix3.fromQuaternion(quaternion);\n    // Get the zenith point from the rotation of the position vector\n    const vector = new Cesium.Cartesian3();\n    Cesium.Cartesian3.subtract(camera.position, bottomCenter, vector);\n    const zenith = new Cesium.Cartesian3();\n    Cesium.Matrix3.multiplyByVector(rotation, vector, zenith);\n    Cesium.Cartesian3.add(zenith, bottomCenter, zenith);\n    // Actually rotate around the zenith normal\n    const transform = Cesium.Matrix4.fromTranslation(zenith);\n    rotateAroundAxis(camera, heading, zenith, transform, options);\n}\n/**\n * Get the 3D position of the given pixel of the canvas.\n */\nexport function pickOnTerrainOrEllipsoid(scene, pixel) {\n    const ray = scene.camera.getPickRay(pixel);\n    const target = scene.globe.pick(ray, scene);\n    return target || scene.camera.pickEllipsoid(pixel);\n}\n/**\n * Get the 3D position of the point at the bottom-center of the screen.\n */\nexport function pickBottomPoint(scene) {\n    const canvas = scene.canvas;\n    const bottom = new Cesium.Cartesian2(canvas.clientWidth / 2, canvas.clientHeight);\n    return pickOnTerrainOrEllipsoid(scene, bottom);\n}\n/**\n * Get the 3D position of the point at the center of the screen.\n */\nexport function pickCenterPoint(scene) {\n    const canvas = scene.canvas;\n    const center = new Cesium.Cartesian2(canvas.clientWidth / 2, canvas.clientHeight / 2);\n    return pickOnTerrainOrEllipsoid(scene, center);\n}\n/**\n * Compute the signed tilt angle on globe, between the opposite of the\n * camera direction and the target normal. Return undefined if there is no\n */\nexport function computeSignedTiltAngleOnGlobe(scene) {\n    const camera = scene.camera;\n    const ray = new Cesium.Ray(camera.position, camera.direction);\n    let target = scene.globe.pick(ray, scene);\n    if (!target) {\n        // no tiles in the area were loaded?\n        const ellipsoid = Cesium.Ellipsoid.WGS84;\n        const obj = Cesium.IntersectionTests.rayEllipsoid(ray, ellipsoid);\n        if (obj) {\n            target = Cesium.Ray.getPoint(ray, obj.start);\n        }\n    }\n    if (!target) {\n        return undefined;\n    }\n    const normal = new Cesium.Cartesian3();\n    Cesium.Ellipsoid.WGS84.geocentricSurfaceNormal(target, normal);\n    const angleBetween = signedAngleBetween;\n    const angle = angleBetween(camera.direction, normal, camera.right) - Math.PI;\n    return Cesium.Math.convertLongitudeRange(angle);\n}\n/**\n * Compute the ray from the camera to the bottom-center of the screen.\n */\nexport function bottomFovRay(scene) {\n    const camera = scene.camera;\n    // @ts-ignore TS2341\n    const fovy2 = camera.frustum.fovy / 2;\n    const direction = camera.direction;\n    const rotation = Cesium.Quaternion.fromAxisAngle(camera.right, fovy2);\n    const matrix = Cesium.Matrix3.fromQuaternion(rotation);\n    const vector = new Cesium.Cartesian3();\n    Cesium.Matrix3.multiplyByVector(matrix, direction, vector);\n    return new Cesium.Ray(camera.position, vector);\n}\n/**\n * Compute the angle between two Cartesian3.\n */\nexport function signedAngleBetween(first, second, normal) {\n    // We are using the dot for the angle.\n    // Then the cross and the dot for the sign.\n    const a = new Cesium.Cartesian3();\n    const b = new Cesium.Cartesian3();\n    const c = new Cesium.Cartesian3();\n    Cesium.Cartesian3.normalize(first, a);\n    Cesium.Cartesian3.normalize(second, b);\n    Cesium.Cartesian3.cross(a, b, c);\n    const cosine = Cesium.Cartesian3.dot(a, b);\n    const sine = Cesium.Cartesian3.magnitude(c);\n    // Sign of the vector product and the orientation normal\n    const sign = Cesium.Cartesian3.dot(normal, c);\n    const angle = Math.atan2(sine, cosine);\n    return sign >= 0 ? angle : -angle;\n}\n/**\n * Compute the rotation angle around a given point, needed to reach the\n * zenith position.\n * At a zenith position, the camera direction is going througth the earth\n * center and the frustrum bottom ray is going through the chosen pivot\n * point.\n * The bottom-center of the screen is a good candidate for the pivot point.\n */\nexport function computeAngleToZenith(scene, pivot) {\n    // This angle is the sum of the angles 'fy' and 'a', which are defined\n    // using the pivot point and its surface normal.\n    //        Zenith |    camera\n    //           \\   |   /\n    //            \\fy|  /\n    //             \\ |a/\n    //              \\|/pivot\n    const camera = scene.camera;\n    // @ts-ignore TS2341\n    const fy = camera.frustum.fovy / 2;\n    const ray = bottomFovRay(scene);\n    const direction = Cesium.Cartesian3.clone(ray.direction);\n    Cesium.Cartesian3.negate(direction, direction);\n    const normal = new Cesium.Cartesian3();\n    Cesium.Ellipsoid.WGS84.geocentricSurfaceNormal(pivot, normal);\n    const left = new Cesium.Cartesian3();\n    Cesium.Cartesian3.negate(camera.right, left);\n    const a = signedAngleBetween(normal, direction, left);\n    return a + fy;\n}\n/**\n * Convert an OpenLayers extent to a Cesium rectangle.\n * @param {ol.Extent} extent Extent.\n * @param {ol.ProjectionLike} projection Extent projection.\n * @return {Cesium.Rectangle} The corresponding Cesium rectangle.\n */\nexport function extentToRectangle(extent, projection) {\n    if (extent && projection) {\n        const ext = transformExtent(extent, projection, 'EPSG:4326');\n        return Cesium.Rectangle.fromDegrees(ext[0], ext[1], ext[2], ext[3]);\n    }\n    else {\n        return null;\n    }\n}\nexport function sourceToImageryProvider(olMap, source, viewProj, olLayer) {\n    const skip = source.get('olcs_skip');\n    if (skip) {\n        return null;\n    }\n    let provider = null;\n    // Convert ImageWMS to TileWMS\n    if (source instanceof olSourceImageWMS && source.getUrl()) {\n        const sourceProps = {\n            'olcs_proxy': source.get('olcs_proxy'),\n            'olcs_extent': source.get('olcs_extent'),\n            'olcs_projection': source.get('olcs_projection'),\n            'olcs.imagesource': source\n        };\n        const imageLoadFunction = source.getImageLoadFunction();\n        const tileLoadFunction = source.get('olcs_tileLoadFunction') || function tileLoadFunction(tile, src) {\n            // An imageLoadFunction takes an ImageWrapperm which has a getImage method.\n            // A tile also has a getImage method.\n            // We incorrectly passe a tile as an ImageWrapper and hopes for the best.\n            imageLoadFunction(tile, src);\n        };\n        source = new olSourceTileWMS({\n            url: source.getUrl(),\n            attributions: source.getAttributions(),\n            projection: source.getProjection(),\n            tileLoadFunction,\n            params: source.getParams()\n        });\n        source.setProperties(sourceProps);\n    }\n    if (source instanceof olSourceTileImage) {\n        let projection = getSourceProjection(source);\n        if (!projection) {\n            // if not explicit, assume the same projection as view\n            projection = viewProj;\n        }\n        if (isCesiumProjection(projection)) {\n            provider = new olcsCoreOLImageryProvider(olMap, source, viewProj);\n        }\n        // Projection not supported by Cesium\n        else {\n            return null;\n        }\n    }\n    else if (source instanceof olSourceImageStatic) {\n        let projection = getSourceProjection(source);\n        if (!projection) {\n            projection = viewProj;\n        }\n        if (isCesiumProjection(projection)) {\n            const rectangle = Cesium.Rectangle.fromDegrees(source.getImageExtent()[0], source.getImageExtent()[1], source.getImageExtent()[2], source.getImageExtent()[3], new Cesium.Rectangle());\n            provider = new Cesium.SingleTileImageryProvider({\n                url: source.getUrl(),\n                rectangle\n            });\n        }\n        // Projection not supported by Cesium\n        else {\n            return null;\n        }\n    }\n    else if (source instanceof olSourceVectorTile && olLayer instanceof VectorTileLayer) {\n        let projection = getSourceProjection(source);\n        if (!projection) {\n            projection = viewProj;\n        }\n        if (skip === false) {\n            // MVT is experimental, it should be whitelisted to be synchronized\n            const fromCode = projection.getCode().split(':')[1];\n            // @ts-ignore TS2341\n            const urls = source.urls.map(u => u.replace(fromCode, '3857'));\n            const extent = olLayer.getExtent();\n            const rectangle = extentToRectangle(extent, projection);\n            const minimumLevel = source.get('olcs_minimumLevel');\n            const attributionsFunction = source.getAttributions();\n            const styleFunction = olLayer.getStyleFunction();\n            let credit;\n            if (extent && attributionsFunction) {\n                const center = getExtentCenter(extent);\n                credit = attributionsFunctionToCredits(attributionsFunction, 0, center, extent)[0];\n            }\n            provider = new MVTImageryProvider({\n                credit,\n                rectangle,\n                minimumLevel,\n                styleFunction,\n                urls\n            });\n            return provider;\n        }\n        return null; // FIXME: it is disabled by default right now\n    }\n    else {\n        // sources other than TileImage|Imageexport function are currently not supported\n        return null;\n    }\n    return provider;\n}\n/**\n * Creates Cesium.ImageryLayer best corresponding to the given ol.layer.Layer.\n * Only supports raster layers and export function images\n */\nexport function tileLayerToImageryLayer(olMap, olLayer, viewProj) {\n    if (!(olLayer instanceof olLayerTile) && !(olLayer instanceof olLayerImage) &&\n        !(olLayer instanceof VectorTileLayer)) {\n        return null;\n    }\n    const source = olLayer.getSource();\n    if (!source) {\n        return null;\n    }\n    let provider = source.get('olcs_provider');\n    if (!provider) {\n        provider = sourceToImageryProvider(olMap, source, viewProj, olLayer);\n    }\n    if (!provider) {\n        return null;\n    }\n    const layerOptions = {};\n    const forcedExtent = (olLayer.get('olcs_extent'));\n    const ext = forcedExtent || olLayer.getExtent();\n    if (ext) {\n        layerOptions.rectangle = extentToRectangle(ext, viewProj);\n    }\n    const cesiumLayer = new Cesium.ImageryLayer(provider, layerOptions);\n    return cesiumLayer;\n}\n/**\n * Synchronizes the layer rendering properties (opacity, visible)\n * to the given Cesium ImageryLayer.\n */\nexport function updateCesiumLayerProperties(olLayerWithParents, csLayer) {\n    let opacity = 1;\n    let visible = true;\n    [olLayerWithParents.layer].concat(olLayerWithParents.parents).forEach((olLayer) => {\n        const layerOpacity = olLayer.getOpacity();\n        if (layerOpacity !== undefined) {\n            opacity *= layerOpacity;\n        }\n        const layerVisible = olLayer.getVisible();\n        if (layerVisible !== undefined) {\n            visible = visible && layerVisible;\n        }\n    });\n    csLayer.alpha = opacity;\n    csLayer.show = visible;\n}\n/**\n * Convert a 2D or 3D OpenLayers coordinate to Cesium.\n */\nexport function ol4326CoordinateToCesiumCartesian(coordinate) {\n    const coo = coordinate;\n    return coo.length > 2 ?\n        Cesium.Cartesian3.fromDegrees(coo[0], coo[1], coo[2]) :\n        Cesium.Cartesian3.fromDegrees(coo[0], coo[1]);\n}\n/**\n * Convert an array of 2D or 3D OpenLayers coordinates to Cesium.\n */\nexport function ol4326CoordinateArrayToCsCartesians(coordinates) {\n    console.assert(coordinates !== null);\n    const toCartesian = ol4326CoordinateToCesiumCartesian;\n    const cartesians = [];\n    for (let i = 0; i < coordinates.length; ++i) {\n        cartesians.push(toCartesian(coordinates[i]));\n    }\n    return cartesians;\n}\n/**\n * Reproject an OpenLayers geometry to EPSG:4326 if needed.\n * The geometry will be cloned only when original projection is not EPSG:4326\n * and the properties will be shallow copied.\n */\nexport function olGeometryCloneTo4326(geometry, projection) {\n    console.assert(projection);\n    const proj4326 = getProjection('EPSG:4326');\n    const proj = getProjection(projection);\n    if (proj.getCode() !== proj4326.getCode()) {\n        const properties = geometry.getProperties();\n        geometry = geometry.clone();\n        geometry.transform(proj, proj4326);\n        geometry.setProperties(properties);\n    }\n    return geometry;\n}\n/**\n * Convert an OpenLayers color to Cesium.\n */\nexport function convertColorToCesium(olColor) {\n    olColor = olColor || 'black';\n    if (Array.isArray(olColor)) {\n        return new Cesium.Color(Cesium.Color.byteToFloat(olColor[0]), Cesium.Color.byteToFloat(olColor[1]), Cesium.Color.byteToFloat(olColor[2]), olColor[3]);\n    }\n    else if (typeof olColor == 'string') {\n        return Cesium.Color.fromCssColorString(olColor);\n    }\n    else if (olColor instanceof CanvasPattern || olColor instanceof CanvasGradient) {\n        // Render the CanvasPattern/CanvasGradient into a canvas that will be sent to Cesium as material\n        const canvas = document.createElement('canvas');\n        const ctx = canvas.getContext('2d');\n        canvas.width = canvas.height = 256;\n        ctx.fillStyle = olColor;\n        ctx.fillRect(0, 0, canvas.width, canvas.height);\n        return new Cesium.ImageMaterialProperty({\n            image: canvas\n        });\n    }\n    console.assert(false, 'impossible');\n}\n/**\n * Convert an OpenLayers url to Cesium.\n */\nexport function convertUrlToCesium(url) {\n    let subdomains = '';\n    const re = /\\{(\\d|[a-z])-(\\d|[a-z])\\}/;\n    const match = re.exec(url);\n    if (match) {\n        url = url.replace(re, '{s}');\n        const startCharCode = match[1].charCodeAt(0);\n        const stopCharCode = match[2].charCodeAt(0);\n        let charCode;\n        for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {\n            subdomains += String.fromCharCode(charCode);\n        }\n    }\n    return {\n        url,\n        subdomains\n    };\n}\n/**\n * Animate the return to a top-down view from the zenith.\n * The camera is rotated to orient to the North.\n */\nexport function resetToNorthZenith(map, scene) {\n    return new Promise((resolve, reject) => {\n        const camera = scene.camera;\n        const pivot = pickBottomPoint(scene);\n        if (!pivot) {\n            reject('Could not get bottom pivot');\n            return;\n        }\n        const currentHeading = map.getView().getRotation();\n        if (currentHeading === undefined) {\n            reject('The view is not initialized');\n            return;\n        }\n        const angle = computeAngleToZenith(scene, pivot);\n        // Point to North\n        setHeadingUsingBottomCenter(scene, currentHeading, pivot);\n        // Go to zenith\n        const transform = Cesium.Matrix4.fromTranslation(pivot);\n        const axis = camera.right;\n        const options = {\n            callback: () => {\n                const view = map.getView();\n                normalizeView(view);\n                resolve(undefined);\n            }\n        };\n        rotateAroundAxis(camera, -angle, axis, transform, options);\n    });\n}\n/**\n * @param {!Cesium.Scene} scene\n * @param {number} angle in radian\n * @return {Promise<undefined>}\n * @api\n */\nexport function rotateAroundBottomCenter(scene, angle) {\n    return new Promise((resolve, reject) => {\n        const camera = scene.camera;\n        const pivot = pickBottomPoint(scene);\n        if (!pivot) {\n            reject('could not get bottom pivot');\n            return;\n        }\n        const options = { callback: () => resolve(undefined) };\n        const transform = Cesium.Matrix4.fromTranslation(pivot);\n        const axis = camera.right;\n        rotateAroundAxis(camera, -angle, axis, transform, options);\n    });\n}\n/**\n * Set the OpenLayers view to a specific rotation and\n * the nearest resolution.\n */\nexport function normalizeView(view, angle = 0) {\n    const resolution = view.getResolution();\n    view.setRotation(angle);\n    // @ts-ignore TS2341\n    if (view.constrainResolution) {\n        // @ts-ignore TS2341\n        view.setResolution(view.constrainResolution(resolution));\n    }\n    else {\n        view.setResolution(view.getConstrainedResolution(resolution));\n    }\n}\n/**\n * Check if the given projection is managed by Cesium (WGS84 or Mercator Spheric)\n */\nexport function isCesiumProjection(projection) {\n    const is3857 = projection.getCode() === 'EPSG:3857';\n    const is4326 = projection.getCode() === 'EPSG:4326';\n    return is3857 || is4326;\n}\nexport function attributionsFunctionToCredits(attributionsFunction, zoom, center, extent) {\n    if (!attributionsFunction) {\n        return [];\n    }\n    let attributions = attributionsFunction({\n        viewState: { zoom, center, projection: undefined, resolution: undefined, rotation: undefined },\n        extent,\n    });\n    if (!Array.isArray(attributions)) {\n        attributions = [attributions];\n    }\n    return attributions.map(html => new Cesium.Credit(html, true));\n}\n/**\n * calculate the distance between camera and centerpoint based on the resolution and latitude value\n */\nexport function calcDistanceForResolution(resolution, latitude, scene, projection) {\n    const canvas = scene.canvas;\n    const camera = scene.camera;\n    // @ts-ignore TS2341\n    const fovy = camera.frustum.fovy; // vertical field of view\n    console.assert(!isNaN(fovy));\n    const metersPerUnit = projection.getMetersPerUnit();\n    // number of \"map units\" visible in 2D (vertically)\n    const visibleMapUnits = resolution * canvas.clientHeight;\n    // The metersPerUnit does not take latitude into account, but it should\n    // be lower with increasing latitude -- we have to compensate.\n    // In 3D it is not possible to maintain the resolution at more than one point,\n    // so it only makes sense to use the latitude of the \"target\" point.\n    const relativeCircumference = Math.cos(Math.abs(latitude));\n    // how many meters should be visible in 3D\n    const visibleMeters = visibleMapUnits * metersPerUnit * relativeCircumference;\n    // distance required to view the calculated length in meters\n    //\n    //  fovy/2\n    //    |\\\n    //  x | \\\n    //    |--\\\n    // visibleMeters/2\n    const requiredDistance = (visibleMeters / 2) / Math.tan(fovy / 2);\n    // NOTE: This calculation is not absolutely precise, because metersPerUnit\n    // is a great simplification. It does not take ellipsoid/terrain into account.\n    return requiredDistance;\n}\n/**\n * calculate the resolution based on a distance(camera to position) and latitude value\n */\nexport function calcResolutionForDistance(distance, latitude, scene, projection) {\n    // See the reverse calculation (calcDistanceForResolution) for details\n    const canvas = scene.canvas;\n    const camera = scene.camera;\n    // @ts-ignore TS2341\n    const fovy = camera.frustum.fovy; // vertical field of view\n    console.assert(!isNaN(fovy));\n    const metersPerUnit = projection.getMetersPerUnit();\n    const visibleMeters = 2 * distance * Math.tan(fovy / 2);\n    const relativeCircumference = Math.cos(Math.abs(latitude));\n    const visibleMapUnits = visibleMeters / metersPerUnit / relativeCircumference;\n    const resolution = visibleMapUnits / canvas.clientHeight;\n    return resolution;\n}\n/**\n * Constrain the camera so that it stays close to the bounding sphere of the map extent.\n * Near the ground the allowed distance is shorter.\n */\nexport function limitCameraToBoundingSphere(camera, boundingSphere, ratio) {\n    let blockLimiter = false;\n    return function () {\n        if (!blockLimiter) {\n            const position = camera.position;\n            const carto = Cesium.Cartographic.fromCartesian(position);\n            if (Cesium.Cartesian3.distance(boundingSphere.center, position) > boundingSphere.radius * ratio(carto.height)) {\n                // @ts-ignore TS2339: FIXME, there is no flying property in Camera\n                const currentlyFlying = camera.flying;\n                if (currentlyFlying === true) {\n                    // There is a flying property and its value is true\n                    return;\n                }\n                else {\n                    blockLimiter = true;\n                    const unblockLimiter = () => (blockLimiter = false);\n                    camera.flyToBoundingSphere(boundingSphere, {\n                        complete: unblockLimiter,\n                        cancel: unblockLimiter,\n                    });\n                }\n            }\n        }\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sSUFBSSxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxXQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxZQUFZLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFDLEdBQUcsSUFBSSxhQUFhLEVBQXVCLGVBQWUsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN0RixPQUFPLG1CQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sZ0JBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxpQkFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLGtCQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXpELE9BQU8seUJBQXlCLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sa0JBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxlQUFlLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFjLFNBQVMsSUFBSSxlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFtRHZFOzs7R0FHRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxLQUFZLEVBQUUsTUFBa0I7SUFDM0UsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzVCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUs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","/**\n * By default Cesium (used to?) renders as often as possible.\n * This is a waste of resources (CPU/GPU/battery).\n * An alternative mechanism in Cesium is on-demand rendering.\n * This class makes use of this alternative method and add some additionnal render points.\n */\nexport default class AutoRenderLoop {\n    ol3d;\n    scene_;\n    canvas_;\n    _boundNotifyRepaintRequired;\n    repaintEventNames_ = [\n        'mousemove', 'mousedown', 'mouseup',\n        'touchstart', 'touchend', 'touchmove',\n        'pointerdown', 'pointerup', 'pointermove',\n        'wheel'\n    ];\n    /**\n     * @param ol3d\n     */\n    constructor(ol3d) {\n        this.ol3d = ol3d;\n        this.scene_ = ol3d.getCesiumScene();\n        this.canvas_ = this.scene_.canvas;\n        this._boundNotifyRepaintRequired = this.notifyRepaintRequired.bind(this);\n        this.enable();\n    }\n    /**\n     * Enable.\n     */\n    enable() {\n        this.scene_.requestRenderMode = true;\n        this.scene_.maximumRenderTimeChange = 1000;\n        for (const repaintKey of this.repaintEventNames_) {\n            this.canvas_.addEventListener(repaintKey, this._boundNotifyRepaintRequired, false);\n        }\n        window.addEventListener('resize', this._boundNotifyRepaintRequired, false);\n        // Listen for changes on the layer group\n        this.ol3d.getOlMap().getLayerGroup().on('change', this._boundNotifyRepaintRequired);\n    }\n    /**\n     * Disable.\n     */\n    disable() {\n        for (const repaintKey of this.repaintEventNames_) {\n            this.canvas_.removeEventListener(repaintKey, this._boundNotifyRepaintRequired, false);\n        }\n        window.removeEventListener('resize', this._boundNotifyRepaintRequired, false);\n        this.ol3d.getOlMap().getLayerGroup().un('change', this._boundNotifyRepaintRequired);\n        this.scene_.requestRenderMode = false;\n    }\n    /**\n     * Restart render loop.\n     * Force a restart of the render loop.\n     */\n    restartRenderLoop() {\n        this.notifyRepaintRequired();\n    }\n    notifyRepaintRequired() {\n        if (!this.scene_.isDestroyed()) {\n            this.scene_.requestRender();\n        }\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b1JlbmRlckxvb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb2xjcy9BdXRvUmVuZGVyTG9vcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQyxJQUFJLENBQVc7SUFDUCxNQUFNLENBQVE7SUFDZCxPQUFPLENBQW9CO0lBQzNCLDJCQUEyQixDQUFvQztJQUMvRCxrQkFBa0IsR0FBRztRQUMzQixXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVM7UUFDbkMsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXO1FBQ3JDLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYTtRQUN6QyxPQUFPO0tBQ0MsQ0FBQztJQUVYOztPQUVHO0lBQ0gsWUFBWSxJQUFjO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUMzQyxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFM0Usd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7Q0FDRiJ9","/**\n * Converts radians to to degrees.\n *\n * @param angleInRadians Angle in radians.\n * @return Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n    return angleInRadians * 180 / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param angleInDegrees Angle in degrees.\n * @return Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n    return angleInDegrees * Math.PI / 180;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLGNBQXNCO0lBQzlDLE9BQU8sY0FBYyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3hDLENBQUM7QUFHRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsY0FBc0I7SUFDOUMsT0FBTyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDeEMsQ0FBQyJ9","import { unByKey as olObservableUnByKey } from 'ol/Observable.js';\nimport { toRadians, toDegrees } from './math.js';\nimport { getTransform } from 'ol/proj.js';\nimport { pickCenterPoint, calcDistanceForResolution, calcResolutionForDistance } from './core.js';\n/**\n * @param input Input coordinate array.\n * @param opt_output Output array of coordinate values.\n * @param opt_dimension Dimension.\n * @return Input coordinate array (same array as input).\n */\nexport function identityProjection(input, opt_output, opt_dimension) {\n    const dim = opt_dimension || input.length;\n    if (opt_output) {\n        for (let i = 0; i < dim; ++i) {\n            opt_output[i] = input[i];\n        }\n    }\n    return input;\n}\nexport default class Camera {\n    scene_;\n    cam_;\n    map_;\n    view_;\n    viewListenKey_ = null;\n    toLonLat_ = identityProjection;\n    fromLonLat_ = identityProjection;\n    /**\n     * 0 -- topdown, PI/2 -- the horizon\n     */\n    tilt_ = 0;\n    distance_ = 0;\n    lastCameraViewMatrix_ = null;\n    /**\n     * This is used to discard change events on view caused by updateView method.\n     */\n    viewUpdateInProgress_ = false;\n    /**\n     * This object takes care of additional 3d-specific properties of the view and\n     * ensures proper synchronization with the underlying raw Cesium.Camera object.\n     */\n    constructor(scene, map) {\n        this.scene_ = scene;\n        this.cam_ = scene.camera;\n        this.map_ = map;\n        this.map_.on('change:view', (e) => {\n            this.setView_(this.map_.getView());\n        });\n        this.setView_(this.map_.getView());\n    }\n    destroy() {\n        olObservableUnByKey(this.viewListenKey_);\n        this.viewListenKey_ = null;\n    }\n    /**\n     * @param {?ol.View} view New view to use.\n     * @private\n     */\n    setView_(view) {\n        olObservableUnByKey(this.viewListenKey_);\n        this.viewListenKey_ = null;\n        this.view_ = view;\n        if (view) {\n            const toLonLat = getTransform(view.getProjection(), 'EPSG:4326');\n            const fromLonLat = getTransform('EPSG:4326', view.getProjection());\n            console.assert(toLonLat && fromLonLat);\n            this.toLonLat_ = toLonLat;\n            this.fromLonLat_ = fromLonLat;\n            this.viewListenKey_ = view.on('propertychange', e => this.handleViewChangedEvent_());\n            this.readFromView();\n        }\n        else {\n            this.toLonLat_ = identityProjection;\n            this.fromLonLat_ = identityProjection;\n        }\n    }\n    handleViewChangedEvent_() {\n        if (!this.viewUpdateInProgress_) {\n            this.readFromView();\n        }\n    }\n    /**\n     * @deprecated\n     * @param heading In radians.\n     */\n    setHeading(heading) {\n        if (!this.view_) {\n            return;\n        }\n        this.view_.setRotation(heading);\n    }\n    /**\n     * @deprecated\n     * @return Heading in radians.\n     */\n    getHeading() {\n        if (!this.view_) {\n            return undefined;\n        }\n        const rotation = this.view_.getRotation();\n        return rotation || 0;\n    }\n    /**\n     * @param tilt In radians.\n     */\n    setTilt(tilt) {\n        this.tilt_ = tilt;\n        this.updateCamera_();\n    }\n    /**\n     * @return Tilt in radians.\n     */\n    getTilt() {\n        return this.tilt_;\n    }\n    /**\n     * @param distance In meters.\n     */\n    setDistance(distance) {\n        this.distance_ = distance;\n        this.updateCamera_();\n        this.updateView();\n    }\n    /**\n     * @return Distance in meters.\n     */\n    getDistance() {\n        return this.distance_;\n    }\n    /**\n     * @deprecated\n     * Shortcut for ol.View.setCenter().\n     * @param center Same projection as the ol.View.\n     */\n    setCenter(center) {\n        if (!this.view_) {\n            return;\n        }\n        this.view_.setCenter(center);\n    }\n    /**\n     * @deprecated\n     * Shortcut for ol.View.getCenter().\n     * @return {ol.Coordinate|undefined} Same projection as the ol.View.\n     * @api\n     */\n    getCenter() {\n        if (!this.view_) {\n            return undefined;\n        }\n        return this.view_.getCenter();\n    }\n    /**\n     * Sets the position of the camera.\n     * @param position Same projection as the ol.View.\n     */\n    setPosition(position) {\n        if (!this.toLonLat_) {\n            return;\n        }\n        const ll = this.toLonLat_(position);\n        console.assert(ll);\n        const carto = new Cesium.Cartographic(toRadians(ll[0]), toRadians(ll[1]), this.getAltitude());\n        this.cam_.setView({\n            destination: Cesium.Ellipsoid.WGS84.cartographicToCartesian(carto)\n        });\n        this.updateView();\n    }\n    /**\n     * Calculates position under the camera.\n     * @return Coordinates in same projection as the ol.View.\n     * @api\n     */\n    getPosition() {\n        if (!this.fromLonLat_) {\n            return undefined;\n        }\n        const carto = Cesium.Ellipsoid.WGS84.cartesianToCartographic(this.cam_.position);\n        const pos = this.fromLonLat_([\n            toDegrees(carto.longitude),\n            toDegrees(carto.latitude)\n        ]);\n        console.assert(pos);\n        return pos;\n    }\n    /**\n     * @param altitude In meters.\n     */\n    setAltitude(altitude) {\n        const carto = Cesium.Ellipsoid.WGS84.cartesianToCartographic(this.cam_.position);\n        carto.height = altitude;\n        this.cam_.position = Cesium.Ellipsoid.WGS84.cartographicToCartesian(carto);\n        this.updateView();\n    }\n    /**\n     * @return Altitude in meters.\n     */\n    getAltitude() {\n        const carto = Cesium.Ellipsoid.WGS84.cartesianToCartographic(this.cam_.position);\n        return carto.height;\n    }\n    /**\n     * Updates the state of the underlying Cesium.Camera\n     * according to the current values of the properties.\n     */\n    updateCamera_() {\n        if (!this.view_ || !this.toLonLat_) {\n            return;\n        }\n        const center = this.view_.getCenter();\n        if (!center) {\n            return;\n        }\n        const ll = this.toLonLat_(center);\n        console.assert(ll);\n        const carto = new Cesium.Cartographic(toRadians(ll[0]), toRadians(ll[1]));\n        if (this.scene_.globe) {\n            const height = this.scene_.globe.getHeight(carto);\n            carto.height = height || 0;\n        }\n        const destination = Cesium.Ellipsoid.WGS84.cartographicToCartesian(carto);\n        const orientation = {\n            pitch: this.tilt_ - Cesium.Math.PI_OVER_TWO,\n            heading: -this.view_.getRotation(),\n            roll: undefined\n        };\n        this.cam_.setView({\n            destination,\n            orientation\n        });\n        this.cam_.moveBackward(this.distance_);\n        this.checkCameraChange(true);\n    }\n    /**\n     * Calculates the values of the properties from the current ol.View state.\n     */\n    readFromView() {\n        if (!this.view_ || !this.toLonLat_) {\n            return;\n        }\n        const center = this.view_.getCenter();\n        if (center === undefined || center === null) {\n            return;\n        }\n        const ll = this.toLonLat_(center);\n        console.assert(ll);\n        const resolution = this.view_.getResolution();\n        this.distance_ = this.calcDistanceForResolution(resolution || 0, toRadians(ll[1]));\n        this.updateCamera_();\n    }\n    /**\n     * Calculates the values of the properties from the current Cesium.Camera state.\n     * Modifies the center, resolution and rotation properties of the view.\n     */\n    updateView() {\n        if (!this.view_ || !this.fromLonLat_) {\n            return;\n        }\n        this.viewUpdateInProgress_ = true;\n        // target & distance\n        const ellipsoid = Cesium.Ellipsoid.WGS84;\n        const scene = this.scene_;\n        const target = pickCenterPoint(scene);\n        let bestTarget = target;\n        if (!bestTarget) {\n            //TODO: how to handle this properly ?\n            const globe = scene.globe;\n            const carto = this.cam_.positionCartographic.clone();\n            const height = globe.getHeight(carto);\n            carto.height = height || 0;\n            bestTarget = Cesium.Ellipsoid.WGS84.cartographicToCartesian(carto);\n        }\n        this.distance_ = Cesium.Cartesian3.distance(bestTarget, this.cam_.position);\n        const bestTargetCartographic = ellipsoid.cartesianToCartographic(bestTarget);\n        this.view_.setCenter(this.fromLonLat_([\n            toDegrees(bestTargetCartographic.longitude),\n            toDegrees(bestTargetCartographic.latitude)\n        ]));\n        // resolution\n        this.view_.setResolution(this.calcResolutionForDistance(this.distance_, bestTargetCartographic ? bestTargetCartographic.latitude : 0));\n        /*\n         * Since we are positioning the target, the values of heading and tilt\n         * need to be calculated _at the target_.\n         */\n        if (target) {\n            const pos = this.cam_.position;\n            // normal to the ellipsoid at the target\n            const targetNormal = new Cesium.Cartesian3();\n            ellipsoid.geocentricSurfaceNormal(target, targetNormal);\n            // vector from the target to the camera\n            const targetToCamera = new Cesium.Cartesian3();\n            Cesium.Cartesian3.subtract(pos, target, targetToCamera);\n            Cesium.Cartesian3.normalize(targetToCamera, targetToCamera);\n            // HEADING\n            const up = this.cam_.up;\n            const right = this.cam_.right;\n            const normal = new Cesium.Cartesian3(-target.y, target.x, 0); // what is it?\n            const heading = Cesium.Cartesian3.angleBetween(right, normal);\n            const cross = Cesium.Cartesian3.cross(target, up, new Cesium.Cartesian3());\n            const orientation = cross.z;\n            this.view_.setRotation((orientation < 0 ? heading : -heading));\n            // TILT\n            const tiltAngle = Math.acos(Cesium.Cartesian3.dot(targetNormal, targetToCamera));\n            this.tilt_ = isNaN(tiltAngle) ? 0 : tiltAngle;\n        }\n        else {\n            // fallback when there is no target\n            this.view_.setRotation(this.cam_.heading);\n            this.tilt_ = -this.cam_.pitch + Math.PI / 2;\n        }\n        // delay resetting the guard flag to account for asynchronous event generation in ol maps\n        setTimeout(() => this.viewUpdateInProgress_ = false, 1000);\n    }\n    /**\n     * Check if the underlying camera state has changed and ensure synchronization.\n     * @param opt_dontSync Do not synchronize the view.\n     */\n    checkCameraChange(opt_dontSync) {\n        const old = this.lastCameraViewMatrix_;\n        const current = this.cam_.viewMatrix;\n        if (!old || !Cesium.Matrix4.equalsEpsilon(old, current, 1e-7)) {\n            this.lastCameraViewMatrix_ = current.clone();\n            if (opt_dontSync !== true) {\n                this.updateView();\n            }\n        }\n    }\n    /**\n     * calculate the distance between camera and centerpoint based on the resolution and latitude value\n     * @param resolution Number of map units per pixel.\n     * @param latitude Latitude in radians.\n     * @return The calculated distance.\n     */\n    calcDistanceForResolution(resolution, latitude) {\n        return calcDistanceForResolution(resolution, latitude, this.scene_, this.view_.getProjection());\n    }\n    /**\n     * calculate the resolution based on a distance(camera to position) and latitude value\n     * @param distance\n     * @param latitude\n     * @return} The calculated resolution.\n     */\n    calcResolutionForDistance(distance, latitude) {\n        return calcResolutionForDistance(distance, latitude, this.scene_, this.view_.getProjection());\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29sY3MvQ2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLElBQUksbUJBQW1CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxlQUFlLEVBQUUseUJBQXlCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFLaEc7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBZSxFQUFFLFVBQXFCLEVBQUUsYUFBc0I7SUFDL0YsTUFBTSxHQUFHLEdBQUcsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDMUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFNO0lBQ2pCLE1BQU0sQ0FBUTtJQUNkLElBQUksQ0FBZTtJQUNuQixJQUFJLENBQU07SUFDVixLQUFLLENBQU87SUFFWixjQUFjLEdBQWMsSUFBSSxDQUFDO0lBRWpDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQixXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFFekM7O09BRUc7SUFDSyxLQUFLLEdBQVcsQ0FBQyxDQUFDO0lBQ2xCLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxxQkFBcUIsR0FBWSxJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFdEM7OztPQUdHO0lBQ0gsWUFBWSxLQUFZLEVBQUUsR0FBUTtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTztRQUNMLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQXNCO1FBQzdCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUUzQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNqRSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1lBRXZDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1lBRTlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7WUFFckYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLE9BQU8sUUFBUSxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLE1BQWdCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsUUFBa0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuQixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQ2pDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNoQixXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDO1NBQ25FLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDM0IsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDMUIsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFLE1BQU0sV0FBVyxHQUEyQjtZQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDM0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDbEMsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2hCLFdBQVc7WUFDWCxXQUFXO1NBQ1osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FDM0MsVUFBVSxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFbEMsb0JBQW9CO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIscUNBQXFDO1lBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUMzQixVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUUsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNwQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7U0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUN6QyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR3ZFOzs7V0FHRztRQUNILElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUUvQix3Q0FBd0M7WUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUV4RCx1Q0FBdUM7WUFDdkMsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFHNUQsVUFBVTtZQUNWLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWM7WUFDNUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMzRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTVCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFL0QsT0FBTztZQUNQLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQseUZBQXlGO1FBQ3pGLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxZQUFzQjtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFckMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx5QkFBeUIsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQzVELE9BQU8seUJBQXlCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx5QkFBeUIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQzFELE9BQU8seUJBQXlCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0NBQ0YifQ==","import { unByKey as olObservableUnByKey } from 'ol/Observable.js';\nimport LayerGroup from 'ol/layer/Group.js';\nimport { getUid } from './util.js';\nexport default class AbstractSynchronizer {\n    map;\n    view;\n    scene;\n    olLayers;\n    mapLayerGroup;\n    /**\n     * Map of OpenLayers layer ids (from getUid) to the Cesium ImageryLayers.\n     * Null value means, that we are unable to create equivalent layers.\n     */\n    layerMap = {};\n    /**\n     * Map of listen keys for OpenLayers layer layers ids (from getUid).\n     */\n    olLayerListenKeys = {};\n    /**\n     * Map of listen keys for OpenLayers layer groups ids (from getUid).\n     */\n    olGroupListenKeys_ = {};\n    constructor(map, scene) {\n        this.map = map;\n        this.view = map.getView();\n        this.scene = scene;\n        this.olLayers = map.getLayerGroup().getLayers();\n        this.mapLayerGroup = map.getLayerGroup();\n    }\n    /**\n     * Destroy all and perform complete synchronization of the layers.\n     */\n    synchronize() {\n        this.destroyAll();\n        this.addLayers_(this.mapLayerGroup);\n    }\n    /**\n     * Order counterparts using the same algorithm as the Openlayers renderer:\n     * z-index then original sequence order.\n     */\n    orderLayers() {\n        // Ordering logics is handled in subclasses.\n    }\n    /**\n     * Add a layer hierarchy.\n     */\n    addLayers_(root) {\n        const fifo = [{\n                layer: root,\n                parents: []\n            }];\n        while (fifo.length > 0) {\n            const olLayerWithParents = fifo.splice(0, 1)[0];\n            const olLayer = olLayerWithParents.layer;\n            const olLayerId = getUid(olLayer).toString();\n            this.olLayerListenKeys[olLayerId] = [];\n            console.assert(!this.layerMap[olLayerId]);\n            let cesiumObjects = null;\n            if (olLayer instanceof LayerGroup) {\n                this.listenForGroupChanges_(olLayer);\n                if (olLayer !== this.mapLayerGroup) {\n                    cesiumObjects = this.createSingleLayerCounterparts(olLayerWithParents);\n                }\n                if (!cesiumObjects) {\n                    olLayer.getLayers().forEach((l) => {\n                        if (l) {\n                            const newOlLayerWithParents = {\n                                layer: l,\n                                parents: olLayer === this.mapLayerGroup ?\n                                    [] :\n                                    [olLayerWithParents.layer].concat(olLayerWithParents.parents)\n                            };\n                            fifo.push(newOlLayerWithParents);\n                        }\n                    });\n                }\n            }\n            else {\n                cesiumObjects = this.createSingleLayerCounterparts(olLayerWithParents);\n                if (!cesiumObjects) {\n                    // keep an eye on the layers that once failed to be added (might work when the layer is updated)\n                    // for example when a source is set after the layer is added to the map\n                    const layerId = olLayerId;\n                    const layerWithParents = olLayerWithParents;\n                    const onLayerChange = () => {\n                        const cesiumObjs = this.createSingleLayerCounterparts(layerWithParents);\n                        if (cesiumObjs) {\n                            // unsubscribe event listener\n                            layerWithParents.layer.un('change', onLayerChange);\n                            this.addCesiumObjects_(cesiumObjs, layerId, layerWithParents.layer);\n                            this.orderLayers();\n                        }\n                    };\n                    this.olLayerListenKeys[olLayerId].push(layerWithParents.layer.on('change', onLayerChange));\n                }\n            }\n            // add Cesium layers\n            if (cesiumObjects) {\n                this.addCesiumObjects_(cesiumObjects, olLayerId, olLayer);\n            }\n        }\n        this.orderLayers();\n    }\n    /**\n     * Add Cesium objects.\n     */\n    addCesiumObjects_(cesiumObjects, layerId, layer) {\n        this.layerMap[layerId] = cesiumObjects;\n        this.olLayerListenKeys[layerId].push(layer.on('change:zIndex', () => this.orderLayers()));\n        cesiumObjects.forEach((cesiumObject) => {\n            this.addCesiumObject(cesiumObject);\n        });\n    }\n    /**\n     * Remove and destroy a single layer.\n     * @param {ol.layer.Layer} layer\n     * @return {boolean} counterpart destroyed\n     */\n    removeAndDestroySingleLayer_(layer) {\n        const uid = getUid(layer).toString();\n        const counterparts = this.layerMap[uid];\n        if (!!counterparts) {\n            counterparts.forEach((counterpart) => {\n                this.removeSingleCesiumObject(counterpart, false);\n                this.destroyCesiumObject(counterpart);\n            });\n            this.olLayerListenKeys[uid].forEach(olObservableUnByKey);\n            delete this.olLayerListenKeys[uid];\n        }\n        delete this.layerMap[uid];\n        return !!counterparts;\n    }\n    /**\n     * Unlisten a single layer group.\n     */\n    unlistenSingleGroup_(group) {\n        if (group === this.mapLayerGroup) {\n            return;\n        }\n        const uid = getUid(group).toString();\n        const keys = this.olGroupListenKeys_[uid];\n        keys.forEach((key) => {\n            olObservableUnByKey(key);\n        });\n        delete this.olGroupListenKeys_[uid];\n        delete this.layerMap[uid];\n    }\n    /**\n     * Remove layer hierarchy.\n     */\n    removeLayer_(root) {\n        if (!!root) {\n            const fifo = [root];\n            while (fifo.length > 0) {\n                const olLayer = fifo.splice(0, 1)[0];\n                const done = this.removeAndDestroySingleLayer_(olLayer);\n                if (olLayer instanceof LayerGroup) {\n                    this.unlistenSingleGroup_(olLayer);\n                    if (!done) {\n                        // No counterpart for the group itself so removing\n                        // each of the child layers.\n                        olLayer.getLayers().forEach((l) => {\n                            fifo.push(l);\n                        });\n                    }\n                }\n            }\n        }\n    }\n    /**\n     * Register listeners for single layer group change.\n     */\n    listenForGroupChanges_(group) {\n        const uuid = getUid(group).toString();\n        console.assert(this.olGroupListenKeys_[uuid] === undefined);\n        const listenKeyArray = [];\n        this.olGroupListenKeys_[uuid] = listenKeyArray;\n        // only the keys that need to be relistened when collection changes\n        let contentKeys = [];\n        const listenAddRemove = (function () {\n            const collection = group.getLayers();\n            if (collection) {\n                contentKeys = [\n                    collection.on('add', (event) => {\n                        this.addLayers_(event.element);\n                    }),\n                    collection.on('remove', (event) => {\n                        this.removeLayer_(event.element);\n                    })\n                ];\n                listenKeyArray.push(...contentKeys);\n            }\n        }).bind(this);\n        listenAddRemove();\n        listenKeyArray.push(group.on('change:layers', (e) => {\n            contentKeys.forEach((el) => {\n                const i = listenKeyArray.indexOf(el);\n                if (i >= 0) {\n                    listenKeyArray.splice(i, 1);\n                }\n                olObservableUnByKey(el);\n            });\n            listenAddRemove();\n        }));\n    }\n    /**\n     * Destroys all the created Cesium objects.\n     */\n    destroyAll() {\n        this.removeAllCesiumObjects(true); // destroy\n        let objKey;\n        for (objKey in this.olGroupListenKeys_) {\n            const keys = this.olGroupListenKeys_[objKey];\n            keys.forEach(olObservableUnByKey);\n        }\n        for (objKey in this.olLayerListenKeys) {\n            this.olLayerListenKeys[objKey].forEach(olObservableUnByKey);\n        }\n        this.olGroupListenKeys_ = {};\n        this.olLayerListenKeys = {};\n        this.layerMap = {};\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RTeW5jaHJvbml6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb2xjcy9BYnN0cmFjdFN5bmNocm9uaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxJQUFJLG1CQUFtQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQVdqQyxNQUFNLENBQUMsT0FBTyxPQUFnQixvQkFBb0I7SUFDdEMsR0FBRyxDQUFNO0lBQ1QsSUFBSSxDQUFPO0lBQ1gsS0FBSyxDQUFRO0lBQ2IsUUFBUSxDQUF3QjtJQUMxQyxhQUFhLENBQWE7SUFDMUI7OztPQUdHO0lBQ08sUUFBUSxHQUE2QixFQUFFLENBQUM7SUFDbEQ7O09BRUc7SUFDTyxpQkFBaUIsR0FBcUMsRUFBRSxDQUFDO0lBQ25FOztPQUVHO0lBQ0ssa0JBQWtCLEdBQXFDLEVBQUUsQ0FBQztJQUVsRSxZQUFzQixHQUFRLEVBQUUsS0FBWTtRQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJ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","import { getUid } from './util.js';\nimport olcsAbstractSynchronizer from './AbstractSynchronizer.js';\nimport { tileLayerToImageryLayer, updateCesiumLayerProperties } from './core.js';\nimport BaseVectorLayer from 'ol/layer/BaseVector.js';\nimport LayerGroup from 'ol/layer/Group.js';\nexport default class RasterSynchronizer extends olcsAbstractSynchronizer {\n    cesiumLayers_;\n    ourLayers_;\n    /**\n     * This object takes care of one-directional synchronization of\n     * Openlayers raster layers to the given Cesium globe.\n     */\n    constructor(map, scene) {\n        super(map, scene);\n        this.cesiumLayers_ = scene.imageryLayers;\n        this.ourLayers_ = new Cesium.ImageryLayerCollection();\n    }\n    addCesiumObject(object) {\n        this.cesiumLayers_.add(object);\n        this.ourLayers_.add(object);\n    }\n    destroyCesiumObject(object) {\n        object.destroy();\n    }\n    removeSingleCesiumObject(object, destroy) {\n        this.cesiumLayers_.remove(object, destroy);\n        this.ourLayers_.remove(object, false);\n    }\n    removeAllCesiumObjects(destroy) {\n        for (let i = 0; i < this.ourLayers_.length; ++i) {\n            this.cesiumLayers_.remove(this.ourLayers_.get(i), destroy);\n        }\n        this.ourLayers_.removeAll(false);\n    }\n    /**\n     * Creates an array of Cesium.ImageryLayer.\n     * May be overriden by child classes to implement custom behavior.\n     * The default implementation handles tiled imageries in EPSG:4326 or\n     * EPSG:3859.\n     */\n    convertLayerToCesiumImageries(olLayer, viewProj) {\n        const result = tileLayerToImageryLayer(this.map, olLayer, viewProj);\n        return result ? [result] : null;\n    }\n    createSingleLayerCounterparts(olLayerWithParents) {\n        const olLayer = olLayerWithParents.layer;\n        const uid = getUid(olLayer).toString();\n        const viewProj = this.view.getProjection();\n        console.assert(viewProj);\n        const cesiumObjects = this.convertLayerToCesiumImageries(olLayer, viewProj);\n        if (cesiumObjects) {\n            const listenKeyArray = [];\n            [olLayerWithParents.layer].concat(olLayerWithParents.parents).forEach((olLayerItem) => {\n                listenKeyArray.push(olLayerItem.on(['change:opacity', 'change:visible'], () => {\n                    // the compiler does not seem to be able to infer this\n                    console.assert(cesiumObjects);\n                    for (let i = 0; i < cesiumObjects.length; ++i) {\n                        updateCesiumLayerProperties(olLayerWithParents, cesiumObjects[i]);\n                    }\n                }));\n            });\n            if (olLayer instanceof BaseVectorLayer) {\n                let previousStyleFunction = olLayer.getStyleFunction();\n                // there is no convenient way to detect a style function change in OL\n                listenKeyArray.push(olLayer.on('change', () => {\n                    const currentStyleFunction = olLayer.getStyleFunction();\n                    if (previousStyleFunction === currentStyleFunction) {\n                        return;\n                    }\n                    previousStyleFunction = currentStyleFunction;\n                    for (let i = 0; i < cesiumObjects.length; ++i) {\n                        const csObj = cesiumObjects[i];\n                        // clear cache and set new style\n                        // @ts-ignore TS2341\n                        if (csObj._imageryCache) {\n                            // @ts-ignore TS2341\n                            csObj._imageryCache = {};\n                        }\n                        const ip = csObj.imageryProvider;\n                        if (ip) {\n                            // @ts-ignore TS2341\n                            ip.tileCache?.clear();\n                            // @ts-ignore TS2341\n                            ip.styleFunction_ = currentStyleFunction;\n                        }\n                    }\n                    this.scene.requestRender();\n                }));\n            }\n            for (let i = 0; i < cesiumObjects.length; ++i) {\n                updateCesiumLayerProperties(olLayerWithParents, cesiumObjects[i]);\n            }\n            // there is no way to modify Cesium layer extent,\n            // we have to recreate when OpenLayers layer extent changes:\n            listenKeyArray.push(olLayer.on('change:extent', (e) => {\n                for (let i = 0; i < cesiumObjects.length; ++i) {\n                    this.cesiumLayers_.remove(cesiumObjects[i], true); // destroy\n                    this.ourLayers_.remove(cesiumObjects[i], false);\n                }\n                delete this.layerMap[getUid(olLayer)]; // invalidate the map entry\n                this.synchronize();\n            }));\n            listenKeyArray.push(olLayer.on('change', (e) => {\n                // when the source changes, re-add the layer to force update\n                for (let i = 0; i < cesiumObjects.length; ++i) {\n                    const position = this.cesiumLayers_.indexOf(cesiumObjects[i]);\n                    if (position >= 0) {\n                        this.cesiumLayers_.remove(cesiumObjects[i], false);\n                        this.cesiumLayers_.add(cesiumObjects[i], position);\n                    }\n                }\n            }));\n            this.olLayerListenKeys[uid].push(...listenKeyArray);\n        }\n        return Array.isArray(cesiumObjects) ? cesiumObjects : null;\n    }\n    /**\n     * Order counterparts using the same algorithm as the Openlayers renderer:\n     * z-index then original sequence order.\n     * @override\n     * @protected\n     */\n    orderLayers() {\n        const layers = [];\n        const zIndices = {};\n        const queue = [this.mapLayerGroup];\n        while (queue.length > 0) {\n            const olLayer = queue.splice(0, 1)[0];\n            layers.push(olLayer);\n            zIndices[getUid(olLayer)] = olLayer.getZIndex() || 0;\n            if (olLayer instanceof LayerGroup) {\n                const sublayers = olLayer.getLayers();\n                if (sublayers) {\n                    // Prepend queue with sublayers in order\n                    queue.unshift(...sublayers.getArray());\n                }\n            }\n        }\n        // We assume sort is stable (which has been in the spec since a long time already).\n        // See https://caniuse.com/mdn-javascript_builtins_array_sort_stable\n        layers.sort((layer1, layer2) => zIndices[getUid(layer1)] - zIndices[getUid(layer2)]);\n        layers.forEach((olLayer) => {\n            const olLayerId = getUid(olLayer).toString();\n            const cesiumObjects = this.layerMap[olLayerId];\n            if (cesiumObjects) {\n                cesiumObjects.forEach((cesiumObject) => { this.raiseToTop(cesiumObject); });\n            }\n        });\n    }\n    raiseToTop(counterpart) {\n        this.cesiumLayers_.raiseToTop(counterpart);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFzdGVyU3luY2hyb25pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29sY3MvUmFzdGVyU3luY2hyb25pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyx3QkFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQXdCLHVCQUF1QixFQUFFLDJCQUEyQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSXRHLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sVUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0JBQW1CLFNBQVEsd0JBQXNDO0lBQzVFLGFBQWEsQ0FBeUI7SUFDdEMsVUFBVSxDQUF5QjtJQUMzQzs7O09BR0c7SUFDSCxZQUFZLEdBQVEsRUFBRSxLQUFZO1FBQ2hDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQW9CO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFvQjtRQUN0QyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQW9CLEVBQUUsT0FBZ0I7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FB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","import { unByKey as olObservableUnByKey } from 'ol/Observable.js';\nexport default class VectorLayerCounterpart {\n    olListenKeys = [];\n    context;\n    rootCollection_;\n    /**\n    * Result of the conversion of an OpenLayers layer to Cesium.\n    */\n    constructor(layerProjection, scene) {\n        const billboards = new Cesium.BillboardCollection({ scene });\n        const primitives = new Cesium.PrimitiveCollection();\n        this.rootCollection_ = new Cesium.PrimitiveCollection();\n        this.context = {\n            projection: layerProjection,\n            billboards,\n            featureToCesiumMap: {},\n            primitives\n        };\n        this.rootCollection_.add(billboards);\n        this.rootCollection_.add(primitives);\n    }\n    /**\n    * Unlisten.\n    */\n    destroy() {\n        this.olListenKeys.forEach(olObservableUnByKey);\n        this.olListenKeys.length = 0;\n    }\n    getRootPrimitive() {\n        return this.rootCollection_;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yTGF5ZXJDb3VudGVycGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vbGNzL2NvcmUvVmVjdG9yTGF5ZXJDb3VudGVycGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxJQUFJLG1CQUFtQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFpQmhFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0JBQXNCO0lBQ3pDLFlBQVksR0FBZ0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sQ0FBMkI7SUFDMUIsZUFBZSxDQUFzQjtJQUM3Qzs7TUFFRTtJQUNGLFlBQVksZUFBb0MsRUFBRSxLQUFZO1FBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsVUFBVSxFQUFFLGVBQWU7WUFDM0IsVUFBVTtZQUNWLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsVUFBVTtTQUNYLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O01BRUU7SUFDRixPQUFPO1FBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0NBQ0YifQ==","\nexport default function quickselect(arr, k, left, right, compare) {\n    quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselectStep(arr, k, newLeft, newRight, compare);\n        }\n\n        var t = arr[k];\n        var i = left;\n        var j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n","import quickselect from 'quickselect';\n\nexport default class RBush {\n    constructor(maxEntries = 9) {\n        // max entries in a node is 9 by default; min node fill is 40% for best performance\n        this._maxEntries = Math.max(4, maxEntries);\n        this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n        this.clear();\n    }\n\n    all() {\n        return this._all(this.data, []);\n    }\n\n    search(bbox) {\n        let node = this.data;\n        const result = [];\n\n        if (!intersects(bbox, node)) return result;\n\n        const toBBox = this.toBBox;\n        const nodesToSearch = [];\n\n        while (node) {\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf) result.push(child);\n                    else if (contains(bbox, childBBox)) this._all(child, result);\n                    else nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return result;\n    }\n\n    collides(bbox) {\n        let node = this.data;\n\n        if (!intersects(bbox, node)) return false;\n\n        const nodesToSearch = [];\n        while (node) {\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const childBBox = node.leaf ? this.toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf || contains(bbox, childBBox)) return true;\n                    nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return false;\n    }\n\n    load(data) {\n        if (!(data && data.length)) return this;\n\n        if (data.length < this._minEntries) {\n            for (let i = 0; i < data.length; i++) {\n                this.insert(data[i]);\n            }\n            return this;\n        }\n\n        // recursively build the tree with the given data from scratch using OMT algorithm\n        let node = this._build(data.slice(), 0, data.length - 1, 0);\n\n        if (!this.data.children.length) {\n            // save as is if tree is empty\n            this.data = node;\n\n        } else if (this.data.height === node.height) {\n            // split root if trees have the same height\n            this._splitRoot(this.data, node);\n\n        } else {\n            if (this.data.height < node.height) {\n                // swap trees if inserted one is bigger\n                const tmpNode = this.data;\n                this.data = node;\n                node = tmpNode;\n            }\n\n            // insert the small tree into the large tree at appropriate level\n            this._insert(node, this.data.height - node.height - 1, true);\n        }\n\n        return this;\n    }\n\n    insert(item) {\n        if (item) this._insert(item, this.data.height - 1);\n        return this;\n    }\n\n    clear() {\n        this.data = createNode([]);\n        return this;\n    }\n\n    remove(item, equalsFn) {\n        if (!item) return this;\n\n        let node = this.data;\n        const bbox = this.toBBox(item);\n        const path = [];\n        const indexes = [];\n        let i, parent, goingUp;\n\n        // depth-first iterative tree traversal\n        while (node || path.length) {\n\n            if (!node) { // go up\n                node = path.pop();\n                parent = path[path.length - 1];\n                i = indexes.pop();\n                goingUp = true;\n            }\n\n            if (node.leaf) { // check current node\n                const index = findItem(item, node.children, equalsFn);\n\n                if (index !== -1) {\n                    // item found, remove the item and condense tree upwards\n                    node.children.splice(index, 1);\n                    path.push(node);\n                    this._condense(path);\n                    return this;\n                }\n            }\n\n            if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n                path.push(node);\n                indexes.push(i);\n                i = 0;\n                parent = node;\n                node = node.children[0];\n\n            } else if (parent) { // go right\n                i++;\n                node = parent.children[i];\n                goingUp = false;\n\n            } else node = null; // nothing found\n        }\n\n        return this;\n    }\n\n    toBBox(item) { return item; }\n\n    compareMinX(a, b) { return a.minX - b.minX; }\n    compareMinY(a, b) { return a.minY - b.minY; }\n\n    toJSON() { return this.data; }\n\n    fromJSON(data) {\n        this.data = data;\n        return this;\n    }\n\n    _all(node, result) {\n        const nodesToSearch = [];\n        while (node) {\n            if (node.leaf) result.push(...node.children);\n            else nodesToSearch.push(...node.children);\n\n            node = nodesToSearch.pop();\n        }\n        return result;\n    }\n\n    _build(items, left, right, height) {\n\n        const N = right - left + 1;\n        let M = this._maxEntries;\n        let node;\n\n        if (N <= M) {\n            // reached leaf level; return leaf\n            node = createNode(items.slice(left, right + 1));\n            calcBBox(node, this.toBBox);\n            return node;\n        }\n\n        if (!height) {\n            // target height of the bulk-loaded tree\n            height = Math.ceil(Math.log(N) / Math.log(M));\n\n            // target number of root entries to maximize storage utilization\n            M = Math.ceil(N / Math.pow(M, height - 1));\n        }\n\n        node = createNode([]);\n        node.leaf = false;\n        node.height = height;\n\n        // split the items into M mostly square tiles\n\n        const N2 = Math.ceil(N / M);\n        const N1 = N2 * Math.ceil(Math.sqrt(M));\n\n        multiSelect(items, left, right, N1, this.compareMinX);\n\n        for (let i = left; i <= right; i += N1) {\n\n            const right2 = Math.min(i + N1 - 1, right);\n\n            multiSelect(items, i, right2, N2, this.compareMinY);\n\n            for (let j = i; j <= right2; j += N2) {\n\n                const right3 = Math.min(j + N2 - 1, right2);\n\n                // pack each entry recursively\n                node.children.push(this._build(items, j, right3, height - 1));\n            }\n        }\n\n        calcBBox(node, this.toBBox);\n\n        return node;\n    }\n\n    _chooseSubtree(bbox, node, level, path) {\n        while (true) {\n            path.push(node);\n\n            if (node.leaf || path.length - 1 === level) break;\n\n            let minArea = Infinity;\n            let minEnlargement = Infinity;\n            let targetNode;\n\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const area = bboxArea(child);\n                const enlargement = enlargedArea(bbox, child) - area;\n\n                // choose entry with the least area enlargement\n                if (enlargement < minEnlargement) {\n                    minEnlargement = enlargement;\n                    minArea = area < minArea ? area : minArea;\n                    targetNode = child;\n\n                } else if (enlargement === minEnlargement) {\n                    // otherwise choose one with the smallest area\n                    if (area < minArea) {\n                        minArea = area;\n                        targetNode = child;\n                    }\n                }\n            }\n\n            node = targetNode || node.children[0];\n        }\n\n        return node;\n    }\n\n    _insert(item, level, isNode) {\n        const bbox = isNode ? item : this.toBBox(item);\n        const insertPath = [];\n\n        // find the best node for accommodating the item, saving all nodes along the path too\n        const node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n        // put the item into the node\n        node.children.push(item);\n        extend(node, bbox);\n\n        // split on node overflow; propagate upwards if necessary\n        while (level >= 0) {\n            if (insertPath[level].children.length > this._maxEntries) {\n                this._split(insertPath, level);\n                level--;\n            } else break;\n        }\n\n        // adjust bboxes along the insertion path\n        this._adjustParentBBoxes(bbox, insertPath, level);\n    }\n\n    // split overflowed node into two\n    _split(insertPath, level) {\n        const node = insertPath[level];\n        const M = node.children.length;\n        const m = this._minEntries;\n\n        this._chooseSplitAxis(node, m, M);\n\n        const splitIndex = this._chooseSplitIndex(node, m, M);\n\n        const newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n        newNode.height = node.height;\n        newNode.leaf = node.leaf;\n\n        calcBBox(node, this.toBBox);\n        calcBBox(newNode, this.toBBox);\n\n        if (level) insertPath[level - 1].children.push(newNode);\n        else this._splitRoot(node, newNode);\n    }\n\n    _splitRoot(node, newNode) {\n        // split root node\n        this.data = createNode([node, newNode]);\n        this.data.height = node.height + 1;\n        this.data.leaf = false;\n        calcBBox(this.data, this.toBBox);\n    }\n\n    _chooseSplitIndex(node, m, M) {\n        let index;\n        let minOverlap = Infinity;\n        let minArea = Infinity;\n\n        for (let i = m; i <= M - m; i++) {\n            const bbox1 = distBBox(node, 0, i, this.toBBox);\n            const bbox2 = distBBox(node, i, M, this.toBBox);\n\n            const overlap = intersectionArea(bbox1, bbox2);\n            const area = bboxArea(bbox1) + bboxArea(bbox2);\n\n            // choose distribution with minimum overlap\n            if (overlap < minOverlap) {\n                minOverlap = overlap;\n                index = i;\n\n                minArea = area < minArea ? area : minArea;\n\n            } else if (overlap === minOverlap) {\n                // otherwise choose distribution with minimum area\n                if (area < minArea) {\n                    minArea = area;\n                    index = i;\n                }\n            }\n        }\n\n        return index || M - m;\n    }\n\n    // sorts node children by the best axis for split\n    _chooseSplitAxis(node, m, M) {\n        const compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n        const compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n        const xMargin = this._allDistMargin(node, m, M, compareMinX);\n        const yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n        // if total distributions margin value is minimal for x, sort by minX,\n        // otherwise it's already sorted by minY\n        if (xMargin < yMargin) node.children.sort(compareMinX);\n    }\n\n    // total margin of all possible split distributions where each node is at least m full\n    _allDistMargin(node, m, M, compare) {\n        node.children.sort(compare);\n\n        const toBBox = this.toBBox;\n        const leftBBox = distBBox(node, 0, m, toBBox);\n        const rightBBox = distBBox(node, M - m, M, toBBox);\n        let margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n        for (let i = m; i < M - m; i++) {\n            const child = node.children[i];\n            extend(leftBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(leftBBox);\n        }\n\n        for (let i = M - m - 1; i >= m; i--) {\n            const child = node.children[i];\n            extend(rightBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(rightBBox);\n        }\n\n        return margin;\n    }\n\n    _adjustParentBBoxes(bbox, path, level) {\n        // adjust bboxes along the given tree path\n        for (let i = level; i >= 0; i--) {\n            extend(path[i], bbox);\n        }\n    }\n\n    _condense(path) {\n        // go through the path, removing empty nodes and updating bboxes\n        for (let i = path.length - 1, siblings; i >= 0; i--) {\n            if (path[i].children.length === 0) {\n                if (i > 0) {\n                    siblings = path[i - 1].children;\n                    siblings.splice(siblings.indexOf(path[i]), 1);\n\n                } else this.clear();\n\n            } else calcBBox(path[i], this.toBBox);\n        }\n    }\n}\n\nfunction findItem(item, items, equalsFn) {\n    if (!equalsFn) return items.indexOf(item);\n\n    for (let i = 0; i < items.length; i++) {\n        if (equalsFn(item, items[i])) return i;\n    }\n    return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n    distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n    if (!destNode) destNode = createNode(null);\n    destNode.minX = Infinity;\n    destNode.minY = Infinity;\n    destNode.maxX = -Infinity;\n    destNode.maxY = -Infinity;\n\n    for (let i = k; i < p; i++) {\n        const child = node.children[i];\n        extend(destNode, node.leaf ? toBBox(child) : child);\n    }\n\n    return destNode;\n}\n\nfunction extend(a, b) {\n    a.minX = Math.min(a.minX, b.minX);\n    a.minY = Math.min(a.minY, b.minY);\n    a.maxX = Math.max(a.maxX, b.maxX);\n    a.maxY = Math.max(a.maxY, b.maxY);\n    return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a)   { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n    return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n           (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n    const minX = Math.max(a.minX, b.minX);\n    const minY = Math.max(a.minY, b.minY);\n    const maxX = Math.min(a.maxX, b.maxX);\n    const maxY = Math.min(a.maxY, b.maxY);\n\n    return Math.max(0, maxX - minX) *\n           Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n    return a.minX <= b.minX &&\n           a.minY <= b.minY &&\n           b.maxX <= a.maxX &&\n           b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n    return b.minX <= a.maxX &&\n           b.minY <= a.maxY &&\n           b.maxX >= a.minX &&\n           b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n    return {\n        children,\n        height: 1,\n        leaf: true,\n        minX: Infinity,\n        minY: Infinity,\n        maxX: -Infinity,\n        maxY: -Infinity\n    };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n    const stack = [left, right];\n\n    while (stack.length) {\n        right = stack.pop();\n        left = stack.pop();\n\n        if (right - left <= n) continue;\n\n        const mid = left + Math.ceil((right - left) / n / 2) * n;\n        quickselect(arr, mid, left, right, compare);\n\n        stack.push(left, mid, mid, right);\n    }\n}\n","import OLStyleIcon from 'ol/style/Icon.js';\nimport VectorSource, {} from 'ol/source/Vector.js';\nimport OLClusterSource from 'ol/source/Cluster.js';\nimport { circular as olCreateCircularPolygon } from 'ol/geom/Polygon.js';\nimport { boundingExtent, getCenter } from 'ol/extent.js';\nimport olGeomSimpleGeometry from 'ol/geom/SimpleGeometry.js';\nimport { convertColorToCesium, olGeometryCloneTo4326, ol4326CoordinateToCesiumCartesian, ol4326CoordinateArrayToCsCartesians } from './core.js';\nimport VectorLayerCounterpart, {} from './core/VectorLayerCounterpart.js';\nimport { getUid, waitReady } from './util.js';\nimport {} from 'cesium';\nimport {} from 'ol/style/Style.js';\nimport { Geometry as OLGeometry } from 'ol/geom.js';\nexport default class FeatureConverter {\n    scene;\n    /**\n     * Bind once to have a unique function for using as a listener\n     */\n    boundOnRemoveOrClearFeatureListener_ = this.onRemoveOrClearFeature_.bind(this);\n    defaultBillboardEyeOffset_ = new Cesium.Cartesian3(0, 0, 10);\n    /**\n     * Concrete base class for converting from OpenLayers3 vectors to Cesium\n     * primitives.\n     * Extending this class is possible provided that the extending class and\n     * the library are compiled together by the closure compiler.\n     * @param scene Cesium scene.\n     * @api\n     */\n    constructor(scene) {\n        this.scene = scene;\n        this.scene = scene;\n    }\n    /**\n     * @param evt\n     */\n    onRemoveOrClearFeature_(evt) {\n        const source = evt.target;\n        console.assert(source instanceof VectorSource);\n        const cancellers = source['olcs_cancellers'];\n        if (cancellers) {\n            const feature = evt.feature;\n            if (feature) {\n                // remove\n                const id = getUid(feature);\n                const canceller = cancellers[id];\n                if (canceller) {\n                    canceller();\n                    delete cancellers[id];\n                }\n            }\n            else {\n                // clear\n                for (const key in cancellers) {\n                    if (cancellers.hasOwnProperty(key)) {\n                        cancellers[key]();\n                    }\n                }\n                source['olcs_cancellers'] = {};\n            }\n        }\n    }\n    /**\n     * @param layer\n     * @param feature OpenLayers feature.\n     * @param primitive\n     */\n    setReferenceForPicking(layer, feature, primitive) {\n        primitive.olLayer = layer;\n        primitive.olFeature = feature;\n    }\n    /**\n     * Basics primitive creation using a color attribute.\n     * Note that Cesium has 'interior' and outline geometries.\n     * @param layer\n     * @param feature OpenLayers feature.\n     * @param olGeometry OpenLayers geometry.\n     * @param geometry\n     * @param color\n     * @param opt_lineWidth\n     * @return primitive\n     */\n    createColoredPrimitive(layer, feature, olGeometry, geometry, color, opt_lineWidth) {\n        const createInstance = function (geometry, color) {\n            const instance = new Cesium.GeometryInstance({\n                geometry\n            });\n            if (color && !(color instanceof Cesium.ImageMaterialProperty)) {\n                instance.attributes = {\n                    color: Cesium.ColorGeometryInstanceAttribute.fromColor(color)\n                };\n            }\n            return instance;\n        };\n        const options = {\n            flat: true, // work with all geometries\n            renderState: {\n                depthTest: {\n                    enabled: true\n                }\n            }\n        };\n        if (opt_lineWidth !== undefined) {\n            options.renderState.lineWidth = opt_lineWidth;\n        }\n        const instances = createInstance(geometry, color);\n        const heightReference = this.getHeightReference(layer, feature, olGeometry);\n        let primitive;\n        if (heightReference === Cesium.HeightReference.CLAMP_TO_GROUND) {\n            if (!('createShadowVolume' in instances.geometry.constructor)) {\n                // This is not a ground geometry\n                return null;\n            }\n            primitive = new Cesium.GroundPrimitive({\n                geometryInstances: instances\n            });\n        }\n        else {\n            primitive = new Cesium.Primitive({\n                geometryInstances: instances\n            });\n        }\n        if (color instanceof Cesium.ImageMaterialProperty) {\n            // FIXME: we created stylings which are not time related\n            // What should we pass here?\n            // @ts-ignore\n            const dataUri = color.image.getValue().toDataURL();\n            primitive.appearance = new Cesium.MaterialAppearance({\n                flat: true,\n                renderState: {\n                    depthTest: {\n                        enabled: true,\n                    }\n                },\n                material: new Cesium.Material({\n                    fabric: {\n                        type: 'Image',\n                        uniforms: {\n                            image: dataUri\n                        }\n                    }\n                })\n            });\n        }\n        else {\n            primitive.appearance = new Cesium.MaterialAppearance({\n                ...options,\n                material: new Cesium.Material({\n                    translucent: color.alpha !== 1,\n                    fabric: {\n                        type: 'Color',\n                        uniforms: {\n                            color,\n                        }\n                    }\n                })\n            });\n            if (primitive instanceof Cesium.Primitive && (feature.get('olcs_shadows') || layer.get('olcs_shadows'))) {\n                primitive.shadows = 1;\n            }\n        }\n        this.setReferenceForPicking(layer, feature, primitive);\n        return primitive;\n    }\n    /**\n     * Return the fill or stroke color from a plain ol style.\n     */\n    extractColorFromOlStyle(style, outline) {\n        const fillColor = style.getFill()?.getColor();\n        const strokeColor = style.getStroke() ? style.getStroke().getColor() : null;\n        let olColor = 'black';\n        if (strokeColor && outline) {\n            olColor = strokeColor;\n        }\n        else if (fillColor) {\n            olColor = fillColor;\n        }\n        const csColor = convertColorToCesium(olColor);\n        if ('red' in csColor) {\n            return csColor;\n        }\n        else {\n            // Fallback to black if that was not a plain color\n            return Cesium.Color.BLACK;\n        }\n    }\n    /**\n     * Return the width of stroke from a plain ol style.\n     * @param style\n     * @return {number}\n     */\n    extractLineWidthFromOlStyle(style) {\n        // Handling of line width WebGL limitations is handled by Cesium.\n        const width = style.getStroke() ? style.getStroke().getWidth() : undefined;\n        return width !== undefined ? width : 1;\n    }\n    /**\n     * Create a primitive collection out of two Cesium geometries.\n     * Only the OpenLayers style colors will be used.\n     */\n    wrapFillAndOutlineGeometries(layer, feature, olGeometry, fillGeometry, outlineGeometry, olStyle) {\n        const fillColor = this.extractColorFromOlStyle(olStyle, false);\n        const outlineColor = this.extractColorFromOlStyle(olStyle, true);\n        const primitives = new Cesium.PrimitiveCollection();\n        if (olStyle.getFill()) {\n            const p1 = this.createColoredPrimitive(layer, feature, olGeometry, fillGeometry, fillColor);\n            console.assert(!!p1);\n            primitives.add(p1);\n        }\n        if (olStyle.getStroke() && outlineGeometry) {\n            const width = this.extractLineWidthFromOlStyle(olStyle);\n            const p2 = this.createColoredPrimitive(layer, feature, olGeometry, outlineGeometry, outlineColor, width);\n            if (p2) {\n                // Some outline geometries are not supported by Cesium in clamp to ground\n                // mode. These primitives are skipped.\n                primitives.add(p2);\n            }\n        }\n        return primitives;\n    }\n    // Geometry converters\n    // FIXME: would make more sense to only accept primitive collection.\n    /**\n     * Create a Cesium primitive if style has a text component.\n     * Eventually return a PrimitiveCollection including current primitive.\n     */\n    addTextStyle(layer, feature, geometry, style, primitive) {\n        let primitives;\n        if (!(primitive instanceof Cesium.PrimitiveCollection)) {\n            primitives = new Cesium.PrimitiveCollection();\n            primitives.add(primitive);\n        }\n        else {\n            primitives = primitive;\n        }\n        if (!style.getText()) {\n            return primitives;\n        }\n        const text = /** @type {!ol.style.Text} */ (style.getText());\n        const label = this.olGeometry4326TextPartToCesium(layer, feature, geometry, text);\n        if (label) {\n            primitives.add(label);\n        }\n        return primitives;\n    }\n    /**\n     * Add a billboard to a Cesium.BillboardCollection.\n     * Overriding this wrapper allows manipulating the billboard options.\n     * @param billboards\n     * @param bbOptions\n     * @param layer\n     * @param feature OpenLayers feature.\n     * @param geometry\n     * @param style\n     * @return newly created billboard\n     * @api\n     */\n    csAddBillboard(billboards, bbOptions, layer, feature, geometry, style) {\n        if (!bbOptions.eyeOffset) {\n            bbOptions.eyeOffset = this.defaultBillboardEyeOffset_;\n        }\n        const bb = billboards.add(bbOptions);\n        this.setReferenceForPicking(layer, feature, bb);\n        return bb;\n    }\n    /**\n     * Convert an OpenLayers circle geometry to Cesium.\n     * @api\n     */\n    olCircleGeometryToCesium(layer, feature, olGeometry, projection, olStyle) {\n        olGeometry = olGeometryCloneTo4326(olGeometry, projection);\n        console.assert(olGeometry.getType() == 'Circle');\n        // ol.Coordinate\n        const olCenter = olGeometry.getCenter();\n        const height = olCenter.length == 3 ? olCenter[2] : 0.0;\n        const olPoint = olCenter.slice();\n        olPoint[0] += olGeometry.getRadius();\n        // Cesium\n        const center = ol4326CoordinateToCesiumCartesian(olCenter);\n        const point = ol4326CoordinateToCesiumCartesian(olPoint);\n        // Accurate computation of straight distance\n        const radius = Cesium.Cartesian3.distance(center, point);\n        const fillGeometry = new Cesium.CircleGeometry({\n            center,\n            radius,\n            height\n        });\n        let outlinePrimitive;\n        let outlineGeometry;\n        if (this.getHeightReference(layer, feature, olGeometry) === Cesium.HeightReference.CLAMP_TO_GROUND) {\n            const width = this.extractLineWidthFromOlStyle(olStyle);\n            if (width) {\n                const circlePolygon = olCreateCircularPolygon(olGeometry.getCenter(), radius);\n                const positions = ol4326CoordinateArrayToCsCartesians(circlePolygon.getLinearRing(0).getCoordinates());\n                const op = outlinePrimitive = new Cesium.GroundPolylinePrimitive({\n                    geometryInstances: new Cesium.GeometryInstance({\n                        geometry: new Cesium.GroundPolylineGeometry({ positions, width }),\n                    }),\n                    appearance: new Cesium.PolylineMaterialAppearance({\n                        material: this.olStyleToCesium(feature, olStyle, true),\n                    }),\n                    classificationType: Cesium.ClassificationType.TERRAIN,\n                });\n                waitReady(outlinePrimitive).then(() => {\n                    this.setReferenceForPicking(layer, feature, op._primitive);\n                });\n            }\n        }\n        else {\n            outlineGeometry = new Cesium.CircleOutlineGeometry({\n                center,\n                radius,\n                extrudedHeight: height,\n                height\n            });\n        }\n        const primitives = this.wrapFillAndOutlineGeometries(layer, feature, olGeometry, fillGeometry, outlineGeometry, olStyle);\n        if (outlinePrimitive) {\n            primitives.add(outlinePrimitive);\n        }\n        return this.addTextStyle(layer, feature, olGeometry, olStyle, primitives);\n    }\n    /**\n     * Convert an OpenLayers line string geometry to Cesium.\n     * @api\n     */\n    olLineStringGeometryToCesium(layer, feature, olGeometry, projection, olStyle) {\n        olGeometry = olGeometryCloneTo4326(olGeometry, projection);\n        console.assert(olGeometry.getType() == 'LineString');\n        const positions = ol4326CoordinateArrayToCsCartesians(olGeometry.getCoordinates());\n        const width = this.extractLineWidthFromOlStyle(olStyle);\n        let outlinePrimitive;\n        const heightReference = this.getHeightReference(layer, feature, olGeometry);\n        const appearance = new Cesium.PolylineMaterialAppearance({\n            material: this.olStyleToCesium(feature, olStyle, true)\n        });\n        if (heightReference === Cesium.HeightReference.CLAMP_TO_GROUND) {\n            const geometry = new Cesium.GroundPolylineGeometry({\n                positions,\n                width,\n            });\n            const op = outlinePrimitive = new Cesium.GroundPolylinePrimitive({\n                appearance,\n                geometryInstances: new Cesium.GeometryInstance({\n                    geometry\n                })\n            });\n            waitReady(outlinePrimitive).then(() => {\n                this.setReferenceForPicking(layer, feature, op._primitive);\n            });\n        }\n        else {\n            const geometry = new Cesium.PolylineGeometry({\n                positions,\n                width,\n                vertexFormat: appearance.vertexFormat\n            });\n            outlinePrimitive = new Cesium.Primitive({\n                appearance,\n                geometryInstances: new Cesium.GeometryInstance({\n                    geometry\n                }),\n            });\n        }\n        this.setReferenceForPicking(layer, feature, outlinePrimitive);\n        return this.addTextStyle(layer, feature, olGeometry, olStyle, outlinePrimitive);\n    }\n    /**\n     * Convert an OpenLayers polygon geometry to Cesium.\n     * @api\n     */\n    olPolygonGeometryToCesium(layer, feature, olGeometry, projection, olStyle) {\n        olGeometry = olGeometryCloneTo4326(olGeometry, projection);\n        console.assert(olGeometry.getType() == 'Polygon');\n        const heightReference = this.getHeightReference(layer, feature, olGeometry);\n        let fillGeometry, outlineGeometry;\n        let outlinePrimitive;\n        if ((olGeometry.getCoordinates()[0].length == 5) &&\n            (feature.get('olcs_polygon_kind') === 'rectangle')) {\n            // Create a rectangle according to the longitude and latitude curves\n            const coordinates = olGeometry.getCoordinates()[0];\n            // Extract the West, South, East, North coordinates\n            const extent = boundingExtent(coordinates);\n            const rectangle = Cesium.Rectangle.fromDegrees(extent[0], extent[1], extent[2], extent[3]);\n            // Extract the average height of the vertices\n            let maxHeight = 0.0;\n            if (coordinates[0].length == 3) {\n                for (let c = 0; c < coordinates.length; c++) {\n                    maxHeight = Math.max(maxHeight, coordinates[c][2]);\n                }\n            }\n            const featureExtrudedHeight = feature.get('olcs_extruded_height');\n            // Render the cartographic rectangle\n            fillGeometry = new Cesium.RectangleGeometry({\n                ellipsoid: Cesium.Ellipsoid.WGS84,\n                rectangle,\n                height: maxHeight,\n                extrudedHeight: featureExtrudedHeight,\n            });\n            outlineGeometry = new Cesium.RectangleOutlineGeometry({\n                ellipsoid: Cesium.Ellipsoid.WGS84,\n                rectangle,\n                height: maxHeight,\n                extrudedHeight: featureExtrudedHeight,\n            });\n        }\n        else {\n            const rings = olGeometry.getLinearRings();\n            const hierarchy = {\n                positions: [],\n                holes: [],\n            };\n            const polygonHierarchy = hierarchy;\n            console.assert(rings.length > 0);\n            for (let i = 0; i < rings.length; ++i) {\n                const olPos = rings[i].getCoordinates();\n                const positions = ol4326CoordinateArrayToCsCartesians(olPos);\n                console.assert(positions && positions.length > 0);\n                if (i === 0) {\n                    hierarchy.positions = positions;\n                }\n                else {\n                    hierarchy.holes.push({\n                        positions,\n                        holes: [],\n                    });\n                }\n            }\n            const featureExtrudedHeight = feature.get('olcs_extruded_height');\n            fillGeometry = new Cesium.PolygonGeometry({\n                polygonHierarchy,\n                perPositionHeight: true,\n                extrudedHeight: featureExtrudedHeight,\n            });\n            // Since Cesium doesn't yet support Polygon outlines on terrain yet (coming soon...?)\n            // we don't create an outline geometry if clamped, but instead do the polyline method\n            // for each ring. Most of this code should be removeable when Cesium adds\n            // support for Polygon outlines on terrain.\n            if (heightReference === Cesium.HeightReference.CLAMP_TO_GROUND) {\n                const width = this.extractLineWidthFromOlStyle(olStyle);\n                if (width > 0) {\n                    const positions = [hierarchy.positions];\n                    if (hierarchy.holes) {\n                        for (let i = 0; i < hierarchy.holes.length; ++i) {\n                            positions.push(hierarchy.holes[i].positions);\n                        }\n                    }\n                    const appearance = new Cesium.PolylineMaterialAppearance({\n                        material: this.olStyleToCesium(feature, olStyle, true)\n                    });\n                    const geometryInstances = [];\n                    for (const linePositions of positions) {\n                        const polylineGeometry = new Cesium.GroundPolylineGeometry({ positions: linePositions, width });\n                        geometryInstances.push(new Cesium.GeometryInstance({\n                            geometry: polylineGeometry\n                        }));\n                    }\n                    outlinePrimitive = new Cesium.GroundPolylinePrimitive({\n                        appearance,\n                        geometryInstances\n                    });\n                    waitReady(outlinePrimitive).then(() => {\n                        this.setReferenceForPicking(layer, feature, outlinePrimitive._primitive);\n                    });\n                }\n            }\n            else {\n                // Actually do the normal polygon thing. This should end the removable\n                // section of code described above.\n                outlineGeometry = new Cesium.PolygonOutlineGeometry({\n                    polygonHierarchy: hierarchy,\n                    perPositionHeight: true,\n                    extrudedHeight: featureExtrudedHeight,\n                });\n            }\n        }\n        const primitives = this.wrapFillAndOutlineGeometries(layer, feature, olGeometry, fillGeometry, outlineGeometry, olStyle);\n        if (outlinePrimitive) {\n            primitives.add(outlinePrimitive);\n        }\n        return this.addTextStyle(layer, feature, olGeometry, olStyle, primitives);\n    }\n    /**\n     * @api\n     */\n    getHeightReference(layer, feature, geometry) {\n        // Read from the geometry\n        let altitudeMode = geometry.get('altitudeMode');\n        // Or from the feature\n        if (altitudeMode === undefined) {\n            altitudeMode = feature.get('altitudeMode');\n        }\n        // Or from the layer\n        if (altitudeMode === undefined) {\n            altitudeMode = layer.get('altitudeMode');\n        }\n        let heightReference = Cesium.HeightReference.NONE;\n        if (altitudeMode === 'clampToGround') {\n            heightReference = Cesium.HeightReference.CLAMP_TO_GROUND;\n        }\n        else if (altitudeMode === 'relativeToGround') {\n            heightReference = Cesium.HeightReference.RELATIVE_TO_GROUND;\n        }\n        return heightReference;\n    }\n    /**\n     * Convert a point geometry to a Cesium BillboardCollection.\n     * @param {ol.layer.Vector|ol.layer.Image} layer\n     * @param {!ol.Feature} feature OpenLayers feature..\n     * @param {!ol.geom.Point} olGeometry OpenLayers point geometry.\n     * @param {!ol.ProjectionLike} projection\n     * @param {!ol.style.Style} style\n     * @param {!ol.style.Image} imageStyle\n     * @param {!Cesium.BillboardCollection} billboards\n     * @param {function(!Cesium.Billboard)=} opt_newBillboardCallback Called when the new billboard is added.\n     * @api\n     */\n    createBillboardFromImage(layer, feature, olGeometry, projection, style, imageStyle, billboards, opt_newBillboardCallback) {\n        if (imageStyle instanceof OLStyleIcon) {\n            // make sure the image is scheduled for load\n            imageStyle.load();\n        }\n        const image = imageStyle.getImage(1); // get normal density\n        const isImageLoaded = function (image) {\n            return image.src != '' &&\n                image.naturalHeight != 0 &&\n                image.naturalWidth != 0 &&\n                image.complete;\n        };\n        const reallyCreateBillboard = (function () {\n            if (!image) {\n                return;\n            }\n            if (!(image instanceof HTMLCanvasElement ||\n                image instanceof Image ||\n                image instanceof HTMLImageElement)) {\n                return;\n            }\n            const center = olGeometry.getCoordinates();\n            const position = ol4326CoordinateToCesiumCartesian(center);\n            let color;\n            const opacity = imageStyle.getOpacity();\n            if (opacity !== undefined) {\n                color = new Cesium.Color(1.0, 1.0, 1.0, opacity);\n            }\n            const scale = imageStyle.getScale();\n            const heightReference = this.getHeightReference(layer, feature, olGeometry);\n            const bbOptions = {\n                image: image,\n                color,\n                scale: Array.isArray(scale) ? (scale[0] + scale[1]) / 2 : scale,\n                heightReference,\n                position\n            };\n            // merge in cesium options from openlayers feature\n            Object.assign(bbOptions, feature.get('cesiumOptions'));\n            if (imageStyle instanceof OLStyleIcon) {\n                const anchor = imageStyle.getAnchor();\n                if (anchor) {\n                    const xScale = (Array.isArray(scale) ? scale[0] : scale);\n                    const yScale = (Array.isArray(scale) ? scale[1] : scale);\n                    bbOptions.pixelOffset = new Cesium.Cartesian2((image.width / 2 - anchor[0]) * xScale, (image.height / 2 - anchor[1]) * yScale);\n                }\n            }\n            const bb = this.csAddBillboard(billboards, bbOptions, layer, feature, olGeometry, style);\n            if (opt_newBillboardCallback) {\n                opt_newBillboardCallback(bb);\n            }\n        }).bind(this);\n        if (image instanceof Image && !isImageLoaded(image)) {\n            // Cesium requires the image to be loaded\n            let cancelled = false;\n            const source = layer.getSource();\n            const canceller = function () {\n                cancelled = true;\n            };\n            source.on(['removefeature', 'clear'], this.boundOnRemoveOrClearFeatureListener_);\n            let cancellers = source['olcs_cancellers'];\n            if (!cancellers) {\n                cancellers = source['olcs_cancellers'] = {};\n            }\n            const fuid = getUid(feature);\n            if (cancellers[fuid]) {\n                // When the feature change quickly, a canceller may still be present so\n                // we cancel it here to prevent creation of a billboard.\n                cancellers[fuid]();\n            }\n            cancellers[fuid] = canceller;\n            const listener = function () {\n                image.removeEventListener('load', listener);\n                if (!billboards.isDestroyed() && !cancelled) {\n                    // Create billboard if the feature is still displayed on the map.\n                    reallyCreateBillboard();\n                }\n            };\n            image.addEventListener('load', listener);\n        }\n        else {\n            reallyCreateBillboard();\n        }\n    }\n    /**\n     * Convert a point geometry to a Cesium BillboardCollection.\n     * @param layer\n     * @param feature OpenLayers feature..\n     * @param olGeometry OpenLayers point geometry.\n     * @param projection\n     * @param style\n     * @param billboards\n     * @param opt_newBillboardCallback Called when the new billboard is added.\n     * @return primitives\n     * @api\n     */\n    olPointGeometryToCesium(layer, feature, olGeometry, projection, style, billboards, opt_newBillboardCallback) {\n        console.assert(olGeometry.getType() == 'Point');\n        olGeometry = olGeometryCloneTo4326(olGeometry, projection);\n        let modelPrimitive = null;\n        const imageStyle = style.getImage();\n        if (imageStyle) {\n            const olcsModelFunction = olGeometry.get('olcs_model') || feature.get('olcs_model');\n            if (olcsModelFunction) {\n                modelPrimitive = new Cesium.PrimitiveCollection();\n                const olcsModel = olcsModelFunction();\n                const options = Object.assign({}, { scene: this.scene }, olcsModel.cesiumOptions);\n                if ('fromGltf' in Cesium.Model) {\n                    // pre Cesium v107\n                    // @ts-ignore\n                    const model = Cesium.Model.fromGltf(options);\n                    modelPrimitive.add(model);\n                }\n                else {\n                    Cesium.Model.fromGltfAsync(options).then((model) => {\n                        modelPrimitive.add(model);\n                    });\n                }\n                if (olcsModel.debugModelMatrix) {\n                    modelPrimitive.add(new Cesium.DebugModelMatrixPrimitive({\n                        modelMatrix: olcsModel.debugModelMatrix\n                    }));\n                }\n            }\n            else {\n                this.createBillboardFromImage(layer, feature, olGeometry, projection, style, imageStyle, billboards, opt_newBillboardCallback);\n            }\n        }\n        if (style.getText()) {\n            return this.addTextStyle(layer, feature, olGeometry, style, modelPrimitive || new Cesium.Primitive());\n        }\n        else {\n            return modelPrimitive;\n        }\n    }\n    /**\n     * Convert an OpenLayers multi-something geometry to Cesium.\n     * @param {ol.layer.Vector|ol.layer.Image} layer\n     * @param {!ol.Feature} feature OpenLayers feature..\n     * @param {!ol.geom.Geometry} geometry OpenLayers geometry.\n     * @param {!ol.ProjectionLike} projection\n     * @param {!ol.style.Style} olStyle\n     * @param {!Cesium.BillboardCollection} billboards\n     * @param {function(!Cesium.Billboard)=} opt_newBillboardCallback Called when\n     * the new billboard is added.\n     * @return {Cesium.Primitive} primitives\n     * @api\n     */\n    olMultiGeometryToCesium(layer, feature, geometry, projection, olStyle, billboards, opt_newBillboardCallback) {\n        // Do not reproject to 4326 now because it will be done later.\n        switch (geometry.getType()) {\n            case 'MultiPoint': {\n                const points = geometry.getPoints();\n                if (olStyle.getText()) {\n                    const primitives = new Cesium.PrimitiveCollection();\n                    points.forEach((geom) => {\n                        console.assert(geom);\n                        const result = this.olPointGeometryToCesium(layer, feature, geom, projection, olStyle, billboards, opt_newBillboardCallback);\n                        if (result) {\n                            primitives.add(result);\n                        }\n                    });\n                    return primitives;\n                }\n                else {\n                    points.forEach((geom) => {\n                        console.assert(geom);\n                        this.olPointGeometryToCesium(layer, feature, geom, projection, olStyle, billboards, opt_newBillboardCallback);\n                    });\n                    return null;\n                }\n            }\n            case 'MultiLineString': {\n                const lineStrings = geometry.getLineStrings();\n                // FIXME: would be better to combine all child geometries in one primitive\n                // instead we create n primitives for simplicity.\n                const primitives = new Cesium.PrimitiveCollection();\n                lineStrings.forEach((geom) => {\n                    const p = this.olLineStringGeometryToCesium(layer, feature, geom, projection, olStyle);\n                    primitives.add(p);\n                });\n                return primitives;\n            }\n            case 'MultiPolygon': {\n                const polygons = geometry.getPolygons();\n                // FIXME: would be better to combine all child geometries in one primitive\n                // instead we create n primitives for simplicity.\n                const primitives = new Cesium.PrimitiveCollection();\n                polygons.forEach((geom) => {\n                    const p = this.olPolygonGeometryToCesium(layer, feature, geom, projection, olStyle);\n                    primitives.add(p);\n                });\n                return primitives;\n            }\n            default:\n                console.assert(false, `Unhandled multi geometry type${geometry.getType()}`);\n        }\n    }\n    /**\n     * Convert an OpenLayers text style to Cesium.\n     * @api\n     */\n    olGeometry4326TextPartToCesium(layer, feature, geometry, style) {\n        const text = style.getText();\n        if (!text) {\n            return null;\n        }\n        const labels = new Cesium.LabelCollection({ scene: this.scene });\n        // TODO: export and use the text draw position from OpenLayers .\n        // See src/ol/render/vector.js\n        const extentCenter = getCenter(geometry.getExtent());\n        if (geometry instanceof olGeomSimpleGeometry) {\n            const first = geometry.getFirstCoordinate();\n            extentCenter[2] = first.length == 3 ? first[2] : 0.0;\n        }\n        const options = {\n            position: ol4326CoordinateToCesiumCartesian(extentCenter)\n        };\n        options.text = Array.isArray(text) ? text.join(' ') : text;\n        options.heightReference = this.getHeightReference(layer, feature, geometry);\n        const offsetX = style.getOffsetX();\n        const offsetY = style.getOffsetY();\n        if (offsetX != 0 || offsetY != 0) {\n            const offset = new Cesium.Cartesian2(offsetX, offsetY);\n            options.pixelOffset = offset;\n        }\n        options.font = style.getFont() || '10px sans-serif'; // OpenLayers default\n        let labelStyle = undefined;\n        if (style.getFill()) {\n            options.fillColor = this.extractColorFromOlStyle(style, false);\n            labelStyle = Cesium.LabelStyle.FILL;\n        }\n        if (style.getStroke()) {\n            options.outlineWidth = this.extractLineWidthFromOlStyle(style);\n            options.outlineColor = this.extractColorFromOlStyle(style, true);\n            labelStyle = Cesium.LabelStyle.OUTLINE;\n        }\n        if (style.getFill() && style.getStroke()) {\n            labelStyle = Cesium.LabelStyle.FILL_AND_OUTLINE;\n        }\n        options.style = labelStyle;\n        let horizontalOrigin;\n        switch (style.getTextAlign()) {\n            case 'left':\n                horizontalOrigin = Cesium.HorizontalOrigin.LEFT;\n                break;\n            case 'right':\n                horizontalOrigin = Cesium.HorizontalOrigin.RIGHT;\n                break;\n            case 'center':\n            default:\n                horizontalOrigin = Cesium.HorizontalOrigin.CENTER;\n        }\n        options.horizontalOrigin = horizontalOrigin;\n        if (style.getTextBaseline()) {\n            let verticalOrigin;\n            switch (style.getTextBaseline()) {\n                case 'top':\n                    verticalOrigin = Cesium.VerticalOrigin.TOP;\n                    break;\n                case 'middle':\n                    verticalOrigin = Cesium.VerticalOrigin.CENTER;\n                    break;\n                case 'bottom':\n                    verticalOrigin = Cesium.VerticalOrigin.BOTTOM;\n                    break;\n                case 'alphabetic':\n                    verticalOrigin = Cesium.VerticalOrigin.TOP;\n                    break;\n                case 'hanging':\n                    verticalOrigin = Cesium.VerticalOrigin.BOTTOM;\n                    break;\n                default:\n                    console.assert(false, `unhandled baseline ${style.getTextBaseline()}`);\n            }\n            options.verticalOrigin = verticalOrigin;\n        }\n        const l = labels.add(options);\n        this.setReferenceForPicking(layer, feature, l);\n        return labels;\n    }\n    /**\n     * Convert an OpenLayers style to a Cesium Material.\n     * @api\n     */\n    olStyleToCesium(feature, style, outline) {\n        const fill = style.getFill();\n        const stroke = style.getStroke();\n        if ((outline && !stroke) || (!outline && !fill)) {\n            return null; // FIXME use a default style? Developer error?\n        }\n        const olColor = outline ? stroke.getColor() : fill.getColor();\n        const color = convertColorToCesium(olColor);\n        const lineDash = stroke.getLineDash();\n        if (outline && lineDash) {\n            return Cesium.Material.fromType('PolylineDash', {\n                dashPattern: dashPattern(lineDash),\n                color\n            });\n        }\n        else {\n            return Cesium.Material.fromType('Color', {\n                color\n            });\n        }\n    }\n    /**\n     * Compute OpenLayers plain style.\n     * Evaluates style function, blend arrays, get default style.\n     * @api\n     */\n    computePlainStyle(layer, feature, fallbackStyleFunction, resolution) {\n        /**\n         * @type {ol.FeatureStyleFunction|undefined}\n         */\n        const featureStyleFunction = feature.getStyleFunction();\n        /**\n         * @type {ol.style.Style|Array.<ol.style.Style>}\n         */\n        let style = null;\n        if (featureStyleFunction) {\n            style = featureStyleFunction(feature, resolution);\n        }\n        if (!style && fallbackStyleFunction) {\n            style = fallbackStyleFunction(feature, resolution);\n        }\n        if (!style) {\n            // The feature must not be displayed\n            return null;\n        }\n        // FIXME combine materials as in cesium-materials-pack?\n        // then this function must return a custom material\n        // More simply, could blend the colors like described in\n        // http://en.wikipedia.org/wiki/Alpha_compositing\n        return Array.isArray(style) ? style : [style];\n    }\n    /**\n     */\n    getGeometryFromFeature(feature, style, opt_geom) {\n        if (opt_geom) {\n            return opt_geom;\n        }\n        const geom3d = feature.get('olcs_3d_geometry');\n        if (geom3d && geom3d instanceof OLGeometry) {\n            return geom3d;\n        }\n        if (style) {\n            const geomFuncRes = style.getGeometryFunction()(feature);\n            if (geomFuncRes instanceof OLGeometry) {\n                return geomFuncRes;\n            }\n        }\n        return feature.getGeometry();\n    }\n    /**\n     * Convert one OpenLayers feature up to a collection of Cesium primitives.\n     * @api\n     */\n    olFeatureToCesium(layer, feature, style, context, opt_geom) {\n        const geom = this.getGeometryFromFeature(feature, style, opt_geom);\n        if (!geom) {\n            // OpenLayers features may not have a geometry\n            // See http://geojson.org/geojson-spec.html#feature-objects\n            return null;\n        }\n        const proj = context.projection;\n        const newBillboardAddedCallback = function (bb) {\n            const featureBb = context.featureToCesiumMap[getUid(feature)];\n            if (featureBb instanceof Array) {\n                featureBb.push(bb);\n            }\n            else {\n                context.featureToCesiumMap[getUid(feature)] = [bb];\n            }\n        };\n        switch (geom.getType()) {\n            case 'GeometryCollection':\n                const primitives = new Cesium.PrimitiveCollection();\n                geom.getGeometriesArray().forEach((geom) => {\n                    if (geom) {\n                        const prims = this.olFeatureToCesium(layer, feature, style, context, geom);\n                        if (prims) {\n                            primitives.add(prims);\n                        }\n                    }\n                });\n                return primitives;\n            case 'Point':\n                const bbs = context.billboards;\n                const result = this.olPointGeometryToCesium(layer, feature, geom, proj, style, bbs, newBillboardAddedCallback);\n                if (!result) {\n                    // no wrapping primitive\n                    return null;\n                }\n                else {\n                    return result;\n                }\n            case 'Circle':\n                return this.olCircleGeometryToCesium(layer, feature, geom, proj, style);\n            case 'LineString':\n                return this.olLineStringGeometryToCesium(layer, feature, geom, proj, style);\n            case 'Polygon':\n                return this.olPolygonGeometryToCesium(layer, feature, geom, proj, style);\n            case 'MultiPoint':\n                return this.olMultiGeometryToCesium(layer, feature, geom, proj, style, context.billboards, newBillboardAddedCallback) || null;\n            case 'MultiLineString':\n                return this.olMultiGeometryToCesium(layer, feature, geom, proj, style, context.billboards, newBillboardAddedCallback) || null;\n            case 'MultiPolygon':\n                return this.olMultiGeometryToCesium(layer, feature, geom, proj, style, context.billboards, newBillboardAddedCallback) || null;\n            case 'LinearRing':\n                throw new Error('LinearRing should only be part of polygon.');\n            default:\n                throw new Error(`Ol geom type not handled : ${geom.getType()}`);\n        }\n    }\n    /**\n     * Convert an OpenLayers vector layer to Cesium primitive collection.\n     * For each feature, the associated primitive will be stored in\n     * `featurePrimitiveMap`.\n     * @api\n     */\n    olVectorLayerToCesium(olLayer, olView, featurePrimitiveMap) {\n        const proj = olView.getProjection();\n        const resolution = olView.getResolution();\n        if (resolution === undefined || !proj) {\n            console.assert(false, 'View not ready');\n            // an assertion is not enough for closure to assume resolution and proj\n            // are defined\n            throw new Error('View not ready');\n        }\n        let source = olLayer.getSource();\n        if (source instanceof OLClusterSource) {\n            source = source.getSource();\n        }\n        console.assert(source instanceof VectorSource);\n        const features = source.getFeatures();\n        const counterpart = new VectorLayerCounterpart(proj, this.scene);\n        const context = counterpart.context;\n        for (let i = 0; i < features.length; ++i) {\n            const feature = features[i];\n            if (!feature) {\n                continue;\n            }\n            const layerStyle = olLayer.getStyleFunction();\n            const styles = this.computePlainStyle(olLayer, feature, layerStyle, resolution);\n            if (!styles || !styles.length) {\n                // only 'render' features with a style\n                continue;\n            }\n            let primitives = null;\n            for (let i = 0; i < styles.length; i++) {\n                const prims = this.olFeatureToCesium(olLayer, feature, styles[i], context);\n                if (prims) {\n                    if (!primitives) {\n                        primitives = prims;\n                    }\n                    else if (prims) {\n                        let i = 0, prim;\n                        while ((prim = prims.get(i))) {\n                            primitives.add(prim);\n                            i++;\n                        }\n                    }\n                }\n            }\n            if (!primitives) {\n                continue;\n            }\n            featurePrimitiveMap[getUid(feature)] = primitives;\n            counterpart.getRootPrimitive().add(primitives);\n        }\n        return counterpart;\n    }\n    /**\n     * Convert an OpenLayers feature to Cesium primitive collection.\n     * @api\n     */\n    convert(layer, view, feature, context) {\n        const proj = view.getProjection();\n        const resolution = view.getResolution();\n        if (resolution == undefined || !proj) {\n            return null;\n        }\n        /**\n         * @type {ol.StyleFunction|undefined}\n         */\n        const layerStyle = layer.getStyleFunction();\n        const styles = this.computePlainStyle(layer, feature, layerStyle, resolution);\n        if (!styles || !styles.length) {\n            // only 'render' features with a style\n            return null;\n        }\n        context.projection = proj;\n        /**\n         * @type {Cesium.Primitive|null}\n         */\n        let primitives = null;\n        for (let i = 0; i < styles.length; i++) {\n            const prims = this.olFeatureToCesium(layer, feature, styles[i], context);\n            if (!primitives) {\n                primitives = prims;\n            }\n            else if (prims) {\n                let i = 0, prim;\n                while ((prim = prims.get(i))) {\n                    primitives.add(prim);\n                    i++;\n                }\n            }\n        }\n        return primitives;\n    }\n}\n/**\n * Transform a canvas line dash pattern to a Cesium dash pattern\n * See https://cesium.com/learn/cesiumjs/ref-doc/PolylineDashMaterialProperty.html#dashPattern\n * @param lineDash\n */\nexport function dashPattern(lineDash) {\n    if (lineDash.length < 2) {\n        lineDash = [1, 1];\n    }\n    const segments = lineDash.length % 2 === 0 ? lineDash : [...lineDash, ...lineDash];\n    const total = segments.reduce((a, b) => a + b, 0);\n    const div = total / 16;\n    // create a 16 bit binary string\n    let binaryString = segments.map((segment, index) => {\n        // we alternate between 1 and 0\n        const digit = index % 2 === 0 ? '1' : '0';\n        // We scale the segment length to fit 16 slots.\n        let count = Math.round(segment / div);\n        if (index === 0 && count === 0) {\n            // We need to start with a 1\n            count = 1;\n        }\n        return digit.repeat(count);\n    }).join('');\n    // We rounded so it might be that the string is too short or too long.\n    // We try to fix it by padding or truncating the string.\n    if (binaryString.length < 16) {\n        binaryString = binaryString.padEnd(16, '0');\n    }\n    else if (binaryString.length > 16) {\n        binaryString = binaryString.substring(0, 16);\n    }\n    if (binaryString[15] === '1') {\n        // We need to really finish with a 0\n        binaryString = binaryString.substring(0, 15) + '0';\n    }\n    console.assert(binaryString.length === 16);\n    return parseInt(binaryString, 2);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZUNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL0ZlYXR1cmVDb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxZQUFZLEVBQUUsRUFBd0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLGVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxJQUFJLHVCQUF1QixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxvQkFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDOUksT0FBTyxzQkFBc0IsRUFBRSxFQUErQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBOFosTUFBTSxRQUFRLENBQUM7QUFLcGIsT0FBTyxFQUEyQyxNQUFNLG1CQUFtQixDQUFDO0FBSTVFLE9BQU8sRUFBQyxRQUFRLElBQUksVUFBVSxFQUE0SSxNQUFNLFlBQVksQ0FBQztBQStEN0wsTUFBTSxDQUFDLE9BQU8sT0FBTyxnQkFBZ0I7SUFpQmI7SUFmdEI7O09BRUc7SUFDSyxvQ0FBb0MsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRS9FLDBCQUEwQixHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXJFOzs7Ozs7O09BT0c7SUFDSCxZQUFzQixLQUFZ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","import olSourceVector, {} from 'ol/source/Vector.js';\nimport olLayerLayer from 'ol/layer/Layer.js';\nimport olSourceCluster from 'ol/source/Cluster.js';\nimport { getUid } from './util.js';\nimport olLayerVector from 'ol/layer/Vector.js';\nimport olLayerVectorTile from 'ol/layer/VectorTile.js';\nimport olcsAbstractSynchronizer from './AbstractSynchronizer.js';\nimport olcsFeatureConverter from './FeatureConverter.js';\n// eslint-disable-next-line no-duplicate-imports\nimport {} from './core/VectorLayerCounterpart.js';\nimport {} from './core.js';\nexport default class VectorSynchronizer extends olcsAbstractSynchronizer {\n    converter;\n    csAllPrimitives_;\n    /**\n     * Unidirectionally synchronize OpenLayers vector layers to Cesium.\n     */\n    constructor(map, scene, opt_converter) {\n        super(map, scene);\n        this.converter = opt_converter || new olcsFeatureConverter(scene);\n        this.csAllPrimitives_ = new Cesium.PrimitiveCollection();\n        scene.primitives.add(this.csAllPrimitives_);\n        this.csAllPrimitives_.destroyPrimitives = false;\n    }\n    addCesiumObject(counterpart) {\n        console.assert(counterpart);\n        const collection = counterpart.getRootPrimitive();\n        collection.counterpart = counterpart;\n        this.csAllPrimitives_.add(counterpart.getRootPrimitive());\n    }\n    destroyCesiumObject(object) {\n        object.getRootPrimitive().destroy();\n    }\n    removeSingleCesiumObject(object, destroy) {\n        object.destroy();\n        this.csAllPrimitives_.destroyPrimitives = destroy;\n        this.csAllPrimitives_.remove(object.getRootPrimitive());\n        this.csAllPrimitives_.destroyPrimitives = false;\n    }\n    removeAllCesiumObjects(destroy) {\n        this.csAllPrimitives_.destroyPrimitives = destroy;\n        if (destroy) {\n            for (let i = 0; i < this.csAllPrimitives_.length; ++i) {\n                this.csAllPrimitives_.get(i)['counterpart'].destroy();\n            }\n        }\n        this.csAllPrimitives_.removeAll();\n        this.csAllPrimitives_.destroyPrimitives = false;\n    }\n    /**\n     * Synchronizes the layer visibility properties\n     * to the given Cesium Primitive.\n     */\n    updateLayerVisibility(olLayerWithParents, csPrimitive) {\n        let visible = true;\n        [olLayerWithParents.layer].concat(olLayerWithParents.parents).forEach((olLayer) => {\n            const layerVisible = olLayer.getVisible();\n            if (layerVisible !== undefined) {\n                visible = visible && layerVisible;\n            }\n            else {\n                visible = false;\n            }\n        });\n        csPrimitive.show = visible;\n    }\n    createSingleLayerCounterparts(olLayerWithParents) {\n        const olLayer = olLayerWithParents.layer;\n        if (!(olLayer instanceof olLayerVector) || olLayer instanceof olLayerVectorTile) {\n            return null;\n        }\n        console.assert(olLayer instanceof olLayerLayer);\n        let source = olLayer.getSource();\n        if (source instanceof olSourceCluster) {\n            source = source.getSource();\n        }\n        if (!source) {\n            return null;\n        }\n        console.assert(source instanceof olSourceVector);\n        console.assert(this.view);\n        const view = this.view;\n        const featurePrimitiveMap = {};\n        const counterpart = this.converter.olVectorLayerToCesium(olLayer, view, featurePrimitiveMap);\n        const csPrimitives = counterpart.getRootPrimitive();\n        const olListenKeys = counterpart.olListenKeys;\n        [olLayerWithParents.layer].concat(olLayerWithParents.parents).forEach((olLayerItem) => {\n            olListenKeys.push(olLayerItem.on('change:visible', () => {\n                this.updateLayerVisibility(olLayerWithParents, csPrimitives);\n            }));\n        });\n        this.updateLayerVisibility(olLayerWithParents, csPrimitives);\n        const onAddFeature = (feature) => {\n            const context = counterpart.context;\n            const prim = this.converter.convert(olLayer, view, feature, context);\n            if (prim) {\n                featurePrimitiveMap[getUid(feature)] = prim;\n                csPrimitives.add(prim);\n            }\n        };\n        const onRemoveFeature = (feature) => {\n            const id = getUid(feature);\n            const context = counterpart.context;\n            const bbs = context.featureToCesiumMap[id];\n            if (bbs) {\n                delete context.featureToCesiumMap[id];\n                bbs.forEach((bb) => {\n                    if (bb instanceof Cesium.Billboard) {\n                        context.billboards.remove(bb);\n                    }\n                });\n            }\n            const csPrimitive = featurePrimitiveMap[id];\n            delete featurePrimitiveMap[id];\n            if (csPrimitive) {\n                csPrimitives.remove(csPrimitive);\n            }\n        };\n        olListenKeys.push(source.on('addfeature', (e) => {\n            console.assert(e.feature);\n            onAddFeature(e.feature);\n        }));\n        olListenKeys.push(source.on('removefeature', (e) => {\n            console.assert(e.feature);\n            onRemoveFeature(e.feature);\n        }));\n        olListenKeys.push(source.on('changefeature', (e) => {\n            const feature = e.feature;\n            console.assert(feature);\n            onRemoveFeature(feature);\n            onAddFeature(feature);\n        }));\n        return counterpart ? [counterpart] : null;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yU3luY2hyb25pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29sY3MvVmVjdG9yU3luY2hyb25pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxFQUFFLEVBQXdCLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxZQUFZLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxlQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLGlCQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sd0JBQXdCLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxvQkFBb0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxnREFBZ0Q7QUFDaEQsT0FBTyxFQUdOLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsT0FBTyxFQUF1QixNQUFNLFdBQVcsQ0FBQztBQUtoRCxNQUFNLENBQUMsT0FBTyxPQUFPLGtCQUFtQixTQUFRLHdCQUFnRDtJQUNwRixTQUFTLENBQXVCO0lBQ2xDLGdCQUFnQixDQUFzQjtJQUM5Qzs7T0FFRztJQUNILFlBQVksR0FBUSxFQUFFLEtBQVksRUFBRSxhQUFvQztRQUN0RSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxJQUFJLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFH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","import OLOverlay from 'ol/Overlay.js';\nimport { transform } from 'ol/proj.js';\nimport { unByKey as olObservableUnByKey } from 'ol/Observable.js';\n/**\n * @param node The node to remove.\n * @return The node that was removed or null.\n */\nfunction removeNode(node) {\n    return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nfunction removeChildren(node) {\n    while (node.lastChild) {\n        node.removeChild(node.lastChild);\n    }\n}\nfunction cloneNode(node, parent) {\n    const clone = node.cloneNode();\n    if (node.nodeName === 'CANVAS') {\n        const ctx = clone.getContext('2d');\n        ctx.drawImage(node, 0, 0);\n    }\n    if (parent) {\n        parent.appendChild(clone);\n    }\n    if (node.nodeType !== Node.TEXT_NODE) {\n        clone.addEventListener('click', (event) => {\n            node.dispatchEvent(new MouseEvent('click', event));\n            event.stopPropagation();\n        });\n    }\n    const nodes = node.childNodes;\n    for (let i = 0; i < nodes.length; i++) {\n        if (!nodes[i]) {\n            continue;\n        }\n        cloneNode(nodes[i], clone);\n    }\n    return clone;\n}\nexport default class SynchronizedOverlay extends OLOverlay {\n    scenePostRenderListenerRemover_ = null;\n    scene_;\n    synchronizer_;\n    parent_;\n    positionWGS84_;\n    observer_;\n    attributeObserver_ = [];\n    listenerKeys_;\n    /**\n     * @param options SynchronizedOverlay Options.\n     * @api\n     */\n    constructor(options) {\n        const parent = options.parent;\n        super(parent.getOptions());\n        this.scene_ = options.scene;\n        this.synchronizer_ = options.synchronizer;\n        this.parent_ = parent;\n        this.positionWGS84_ = undefined;\n        this.observer_ = new MutationObserver(this.handleElementChanged.bind(this));\n        this.attributeObserver_ = [];\n        this.listenerKeys_ = [];\n        // synchronize our Overlay with the parent Overlay\n        const setPropertyFromEvent = (event) => this.setPropertyFromEvent_(event);\n        this.listenerKeys_.push(this.parent_.on('change:element', setPropertyFromEvent));\n        this.listenerKeys_.push(this.parent_.on('change:offset', setPropertyFromEvent));\n        this.listenerKeys_.push(this.parent_.on('change:position', setPropertyFromEvent));\n        this.listenerKeys_.push(this.parent_.on('change:positioning', setPropertyFromEvent));\n        this.setProperties(this.parent_.getProperties());\n        this.handleMapChanged();\n        this.handleElementChanged();\n        this.handlePositionChanged();\n    }\n    /**\n     * @param target\n     */\n    observeTarget_(target) {\n        if (!this.observer_) {\n            // not ready, skip the event (this occurs on construction)\n            return;\n        }\n        this.observer_.disconnect();\n        this.observer_.observe(target, {\n            attributes: false,\n            childList: true,\n            characterData: true,\n            subtree: true\n        });\n        this.attributeObserver_.forEach((observer) => {\n            observer.disconnect();\n        });\n        this.attributeObserver_.length = 0;\n        for (let i = 0; i < target.childNodes.length; i++) {\n            const node = target.childNodes[i];\n            if (node.nodeType === 1) {\n                const observer = new MutationObserver(this.handleElementChanged.bind(this));\n                observer.observe(node, {\n                    attributes: true,\n                    subtree: true\n                });\n                this.attributeObserver_.push(observer);\n            }\n        }\n    }\n    /**\n     *\n     * @param event\n     */\n    setPropertyFromEvent_(event) {\n        if (event.target && event.key) {\n            this.set(event.key, event.target.get(event.key));\n        }\n    }\n    /**\n     * Get the scene associated with this overlay.\n     * @see ol.Overlay.prototype.getMap\n     * @return The scene that the overlay is part of.\n     * @api\n     */\n    getScene() {\n        return this.scene_;\n    }\n    /**\n     * @override\n     */\n    handleMapChanged() {\n        if (this.scenePostRenderListenerRemover_) {\n            this.scenePostRenderListenerRemover_();\n            removeNode(this.element);\n        }\n        this.scenePostRenderListenerRemover_ = null;\n        const scene = this.getScene();\n        if (scene) {\n            this.scenePostRenderListenerRemover_ = scene.postRender.addEventListener(this.updatePixelPosition.bind(this));\n            this.updatePixelPosition();\n            const container = this.stopEvent ?\n                this.synchronizer_.getOverlayContainerStopEvent() : this.synchronizer_.getOverlayContainer();\n            if (this.insertFirst) {\n                container.insertBefore(this.element, container.childNodes[0] || null);\n            }\n            else {\n                container.appendChild(this.element);\n            }\n        }\n    }\n    /**\n     * @override\n     */\n    handlePositionChanged() {\n        // check if constructor has completed\n        if (!this.parent_) {\n            return;\n        }\n        // transform position to WGS84\n        const position = this.getPosition();\n        if (position) {\n            const sourceProjection = this.parent_.getMap().getView().getProjection();\n            this.positionWGS84_ = transform(position, sourceProjection, 'EPSG:4326');\n        }\n        else {\n            this.positionWGS84_ = undefined;\n        }\n        this.updatePixelPosition();\n    }\n    /**\n     * @override\n     */\n    handleElementChanged() {\n        removeChildren(this.element);\n        const element = this.getElement();\n        if (element) {\n            if (element.parentNode && element.parentNode.childNodes) {\n                for (const node of Array.from(element.parentNode.childNodes)) {\n                    const clonedNode = cloneNode(node, null);\n                    this.element.appendChild(clonedNode);\n                }\n            }\n        }\n        if (element.parentNode) {\n            // set new Observer\n            this.observeTarget_(element.parentNode);\n        }\n    }\n    /**\n     * @override\n     */\n    updatePixelPosition() {\n        const position = this.positionWGS84_;\n        if (!this.scene_ || !position) {\n            this.setVisible(false);\n            return;\n        }\n        let height = 0;\n        if (position.length === 2) {\n            const globeHeight = this.scene_.globe.getHeight(Cesium.Cartographic.fromDegrees(position[0], position[1]));\n            if (globeHeight && this.scene_.globe.tilesLoaded) {\n                position[2] = globeHeight;\n            }\n            if (globeHeight) {\n                height = globeHeight;\n            }\n        }\n        else {\n            height = position[2];\n        }\n        const cartesian = Cesium.Cartesian3.fromDegrees(position[0], position[1], height);\n        const camera = this.scene_.camera;\n        const ellipsoidBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(), 6356752);\n        const occluder = new Cesium.Occluder(ellipsoidBoundingSphere, camera.position);\n        // check if overlay position is behind the horizon\n        if (!occluder.isPointVisible(cartesian)) {\n            this.setVisible(false);\n            return;\n        }\n        const cullingVolume = camera.frustum.computeCullingVolume(camera.position, camera.direction, camera.up);\n        // check if overlay position is visible from the camera\n        if (cullingVolume.computeVisibility(new Cesium.BoundingSphere(cartesian)) !== 1) {\n            this.setVisible(false);\n            return;\n        }\n        this.setVisible(true);\n        const pixelCartesian = this.scene_.cartesianToCanvasCoordinates(cartesian);\n        const pixel = [pixelCartesian.x, pixelCartesian.y];\n        const mapSize = [this.scene_.canvas.width, this.scene_.canvas.height];\n        this.updateRenderedPosition(pixel, mapSize);\n    }\n    /**\n     * Destroys the overlay, removing all its listeners and elements\n     * @api\n     */\n    destroy() {\n        if (this.scenePostRenderListenerRemover_) {\n            this.scenePostRenderListenerRemover_();\n        }\n        if (this.observer_) {\n            this.observer_.disconnect();\n        }\n        olObservableUnByKey(this.listenerKeys_);\n        this.listenerKeys_.splice(0);\n        if ('removeNode' in this.element) {\n            // @ts-ignore\n            this.element.removeNode(true);\n        }\n        else {\n            this.element.remove();\n        }\n        this.element = null;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3luY2hyb25pemVkT3ZlcmxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL1N5bmNocm9uaXplZE92ZXJsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFDLE9BQU8sSUFBSSxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBT2hFOzs7R0FHRztBQUNILFNBQVMsVUFBVSxDQUFDLElBQVU7SUFDNUIsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxJQUFVO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQWlDLElBQU8sRUFBRSxNQUFTO0lBQ25FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQU8sQ0FBQztJQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQUksS0FBc0MsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFvQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIs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","import SynchronizedOverlay from './SynchronizedOverlay.js';\nimport { getUid } from './util.js';\nimport { unByKey as olObservableUnByKey } from 'ol/Observable.js';\nexport default class OverlaySynchronizer {\n    map;\n    scene;\n    overlayCollection_;\n    overlayContainerStopEvent_;\n    overlayContainer_;\n    overlayMap_ = new Map();\n    overlayEvents = ['click', 'dblclick', 'mousedown', 'touchstart', 'pointerdown', 'mousewheel', 'wheel'];\n    listenerKeys_ = [];\n    /**\n    * @param map\n    * @param scene\n    * @constructor\n    * @api\n    */\n    constructor(map, scene) {\n        this.map = map;\n        this.scene = scene;\n        this.map = map;\n        this.overlayCollection_ = this.map.getOverlays();\n        this.scene = scene;\n        this.overlayContainerStopEvent_ = document.createElement('div');\n        this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n        this.overlayEvents.forEach((name) => {\n            this.overlayContainerStopEvent_.addEventListener(name, evt => evt.stopPropagation());\n        });\n        this.scene.canvas.parentElement.appendChild(this.overlayContainerStopEvent_);\n        this.overlayContainer_ = document.createElement('div');\n        this.overlayContainer_.className = 'ol-overlaycontainer';\n        this.scene.canvas.parentElement.appendChild(this.overlayContainer_);\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 ol.MapBrowserEvent}.\n    * @return The map's overlay container that stops events.\n    */\n    getOverlayContainerStopEvent() {\n        return this.overlayContainerStopEvent_;\n    }\n    /**\n    * Get the element that serves as a container for overlays.\n    * @return The map's overlay container.\n    */\n    getOverlayContainer() {\n        return this.overlayContainer_;\n    }\n    /**\n    * Destroy all and perform complete synchronization of the overlays.\n    * @api\n    */\n    synchronize() {\n        this.destroyAll();\n        this.overlayCollection_.forEach((overlay) => { this.addOverlay(overlay); });\n        this.listenerKeys_.push(this.overlayCollection_.on('add', (evt) => this.addOverlay(evt.element)));\n        this.listenerKeys_.push(this.overlayCollection_.on('remove', (evt) => this.removeOverlay(evt.element)));\n    }\n    /**\n    * @api\n    */\n    addOverlay(overlay) {\n        if (!overlay) {\n            return;\n        }\n        const cesiumOverlay = new SynchronizedOverlay({\n            scene: this.scene,\n            synchronizer: this,\n            parent: overlay\n        });\n        this.overlayMap_.set(getUid(overlay), cesiumOverlay);\n    }\n    /**\n    * Removes an overlay from the scene\n    * @api\n    */\n    removeOverlay(overlay) {\n        const overlayId = getUid(overlay);\n        const csOverlay = this.overlayMap_.get(overlayId);\n        if (csOverlay) {\n            csOverlay.destroy();\n            this.overlayMap_.delete(overlayId);\n        }\n    }\n    /**\n    * Destroys all the created Cesium objects.\n    */\n    destroyAll() {\n        this.overlayMap_.forEach((overlay) => {\n            overlay.destroy();\n        });\n        this.overlayMap_.clear();\n        olObservableUnByKey(this.listenerKeys_);\n        this.listenerKeys_.length = 0;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3ZlcmxheVN5bmNocm9uaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL092ZXJsYXlTeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxtQkFBbUIsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBR2pDLE9BQU8sRUFBQyxPQUFPLElBQUksbUJBQW1CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRSxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFtQjtJQWNoQjtJQUFzQjtJQWJwQyxrQkFBa0IsQ0FBc0I7SUFDeEMsMEJBQTBCLENBQWlCO0lBQzNDLGlCQUFpQixDQUFpQjtJQUNsQyxXQUFXLEdBQXFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDMUQsYUFBYSxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkcsYUFBYSxHQUFnQixFQUFFLENBQUM7SUFFeEM7Ozs7O01BS0U7SUFDRixZQUFzQixHQUFVLEVBQVksS0FBWTtRQUFsQyxRQUFHLEdBQUgsR0FBRyxDQUFPO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN0RCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEdBQUcsK0JBQStCLENBQUM7UUFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENB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","import olGeomPoint from 'ol/geom/Point.js';\nimport { supportsImageRenderingPixelated, imageRenderingValue } from './util.js';\nimport { ol4326CoordinateToCesiumCartesian } from './core.js';\nimport { getTransform } from 'ol/proj.js';\nimport olcsAutoRenderLoop from './AutoRenderLoop.js';\nimport olcsCamera from './Camera.js';\nimport olcsRasterSynchronizer from './RasterSynchronizer.js';\nimport olcsVectorSynchronizer from './VectorSynchronizer.js';\nimport olcsOverlaySynchronizer from './OverlaySynchronizer.js';\n/**\n * Moved from Cesium\n * The state of a BoundingSphere computation being performed by a {@link Visualizer}.\n */\nconst BoundingSphereState = {\n    /**\n     * The BoundingSphere has been computed.\n     */\n    DONE: 0,\n    /**\n     * The BoundingSphere is still being computed.\n     */\n    PENDING: 1,\n    /**\n     * The BoundingSphere does not exist.\n     */\n    FAILED: 2,\n};\n/**\n * @typedef {Object} OLCesiumOptions\n * @property {import('ol/Map.js').default} map The OpenLayers map we want to show on a Cesium scene.\n * @property {Element|string} [target] Target element for the Cesium scene.\n * @property {function(!import('ol/Map.js').default, !Cesium.Scene, !Cesium.DataSourceCollection): Array<import('olcs/AbstractSynchronizer.js').default>}\n *      [createSynchronizers] Callback function which will be called by the {@link olcs.OLCesium}\n *      constructor to create custom synchronizers. Receives an `ol.Map` and a `Cesium.Scene` as arguments,\n *      and needs to return an array of {@link import('olcs/AbstractSynchronizer.js').default}.\n * @property {function(): Cesium.JulianDate} [time] Control the current time used by Cesium.\n * @property {boolean} [stopOpenLayersEventsPropagation] Prevent propagation of mouse/touch events to\n *      OpenLayers when Cesium is active.\n * @property {Cesium.SceneOptions} [sceneOptions] Allows the passing of property value to the\n *      `Cesium.Scene`.\n */\nexport default class OLCesium {\n    autoRenderLoop_ = null;\n    map_;\n    time_;\n    to4326Transform_;\n    resolutionScale_ = 1.0;\n    canvasClientWidth_ = 0.0;\n    canvasClientHeight_ = 0.0;\n    resolutionScaleChanged_ = true; // force resize\n    container_;\n    isOverMap_;\n    canvas_;\n    enabled_ = false;\n    pausedInteractions_ = [];\n    hiddenRootGroup_ = null;\n    scene_;\n    camera_;\n    globe_;\n    dataSourceCollection_;\n    dataSourceDisplay_;\n    /** Time of the last rendered frame, as returned by `performance.now()`. */\n    lastFrameTime_ = 0;\n    /** The identifier returned by `requestAnimationFrame`. */\n    renderId_;\n    /** Target frame rate for the render loop.  */\n    targetFrameRate_ = Number.POSITIVE_INFINITY;\n    /** If the Cesium render loop is being blocked. */\n    blockCesiumRendering_ = false;\n    /** If the warmup routine is active. */\n    warmingUp_ = false;\n    trackedFeature_ = null;\n    trackedEntity_ = null;\n    entityView_ = null;\n    needTrackedEntityUpdate_ = false;\n    boundingSphereScratch_ = new Cesium.BoundingSphere();\n    synchronizers_;\n    refresh2DAfterCameraMoveEndOnly = false;\n    moveEndRemoveCallback_;\n    constructor(options) {\n        this.map_ = options.map;\n        this.time_ = options.time || function () {\n            return Cesium.JulianDate.now();\n        };\n        /**\n         * No change of the view projection.\n         */\n        this.to4326Transform_ = getTransform(this.map_.getView().getProjection(), 'EPSG:4326');\n        const fillArea = 'position:absolute;top:0;left:0;width:100%;height:100%;touch-action:none;';\n        this.container_ = document.createElement('DIV');\n        const containerAttribute = document.createAttribute('style');\n        containerAttribute.value = `${fillArea}visibility:hidden;`;\n        this.container_.setAttributeNode(containerAttribute);\n        let targetElement = options.target || this.map_.getViewport();\n        if (typeof targetElement === 'string') {\n            targetElement = document.getElementById(targetElement);\n        }\n        targetElement.appendChild(this.container_);\n        /**\n         * Whether the Cesium container is placed over the ol map.\n         * a target => side by side mode\n         * no target => over map mode\n         */\n        this.isOverMap_ = !options.target;\n        if (this.isOverMap_ && options.stopOpenLayersEventsPropagation) {\n            const overlayEvents = ['click', 'dblclick', 'mousedown', 'touchstart', 'pointerdown', 'mousewheel', 'wheel'];\n            for (let i = 0, ii = overlayEvents.length; i < ii; ++i) {\n                this.container_.addEventListener(overlayEvents[i], evt => evt.stopPropagation());\n            }\n        }\n        this.canvas_ = document.createElement('canvas');\n        const canvasAttribute = document.createAttribute('style');\n        canvasAttribute.value = fillArea;\n        this.canvas_.setAttributeNode(canvasAttribute);\n        if (supportsImageRenderingPixelated()) {\n            // non standard CSS4\n            this.canvas_.style['imageRendering'] = imageRenderingValue();\n        }\n        this.canvas_.oncontextmenu = function () {\n            return false;\n        };\n        this.canvas_.onselectstart = function () {\n            return false;\n        };\n        this.container_.appendChild(this.canvas_);\n        const sceneOptions = options.sceneOptions !== undefined ?\n            { ...options.sceneOptions, canvas: this.canvas_, scene3DOnly: true } :\n            { canvas: this.canvas_, scene3DOnly: true };\n        this.scene_ = new Cesium.Scene(sceneOptions);\n        const sscc = this.scene_.screenSpaceCameraController;\n        if (!Array.isArray(sscc.tiltEventTypes)) {\n            console.log('sscc is not an array');\n        }\n        else {\n            sscc.tiltEventTypes.push({\n                'eventType': Cesium.CameraEventType.LEFT_DRAG,\n                'modifier': Cesium.KeyboardEventModifier.SHIFT\n            });\n            sscc.tiltEventTypes.push({\n                'eventType': Cesium.CameraEventType.LEFT_DRAG,\n                'modifier': Cesium.KeyboardEventModifier.ALT\n            });\n        }\n        sscc.enableLook = false;\n        this.scene_.camera.constrainedAxis = Cesium.Cartesian3.UNIT_Z;\n        this.camera_ = new olcsCamera(this.scene_, this.map_);\n        this.globe_ = new Cesium.Globe(Cesium.Ellipsoid.WGS84);\n        this.globe_.baseColor = Cesium.Color.WHITE;\n        this.scene_.globe = this.globe_;\n        this.scene_.skyAtmosphere = new Cesium.SkyAtmosphere();\n        // The first layer of Cesium is special; using a 1x1 transparent image to workaround it.\n        // See https://github.com/AnalyticalGraphicsInc/cesium/issues/1323 for details.\n        const firstImageryProvider = new Cesium.SingleTileImageryProvider({\n            tileHeight: 1,\n            tileWidth: 1,\n            url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=',\n            rectangle: Cesium.Rectangle.fromDegrees(0, 0, 1, 1) // the Rectangle dimensions are arbitrary\n        });\n        this.globe_.imageryLayers.addImageryProvider(firstImageryProvider, 0);\n        this.dataSourceCollection_ = new Cesium.DataSourceCollection();\n        this.dataSourceDisplay_ = new Cesium.DataSourceDisplay({\n            scene: this.scene_,\n            dataSourceCollection: this.dataSourceCollection_\n        });\n        this.synchronizers_ = options.createSynchronizers ?\n            options.createSynchronizers(this.map_, this.scene_, this.dataSourceCollection_) : [\n            new olcsRasterSynchronizer(this.map_, this.scene_),\n            new olcsVectorSynchronizer(this.map_, this.scene_),\n            new olcsOverlaySynchronizer(this.map_, this.scene_)\n        ];\n        // Assures correct canvas size after initialisation\n        this.handleResize_();\n        for (let i = this.synchronizers_.length - 1; i >= 0; --i) {\n            this.synchronizers_[i].synchronize();\n        }\n        const eventHelper = new Cesium.EventHelper();\n        eventHelper.add(this.scene_.postRender, OLCesium.prototype.updateTrackedEntity_, this);\n        this.moveEndRemoveCallback_ = this.scene_.camera.moveEnd.addEventListener(() => {\n            if (this.refresh2DAfterCameraMoveEndOnly) {\n                this.camera_.checkCameraChange();\n            }\n        });\n    }\n    /**\n     * Destroys the Cesium resources held by this object.\n     */\n    destroy() {\n        cancelAnimationFrame(this.renderId_);\n        this.renderId_ = undefined;\n        this.synchronizers_.forEach(synchronizer => synchronizer.destroyAll());\n        this.camera_.destroy();\n        this.scene_.destroy();\n        // @ts-ignore TS2341\n        this.scene_._postRender = null;\n        this.moveEndRemoveCallback_();\n        this.container_.remove();\n    }\n    /**\n     * Render the Cesium scene.\n     */\n    render_() {\n        // if a call to `requestAnimationFrame` is pending, cancel it\n        if (this.renderId_ !== undefined) {\n            cancelAnimationFrame(this.renderId_);\n            this.renderId_ = undefined;\n        }\n        // only render if Cesium is enabled/warming and rendering hasn't been blocked\n        if ((this.enabled_ || this.warmingUp_) && !this.blockCesiumRendering_) {\n            this.renderId_ = requestAnimationFrame(this.onAnimationFrame_.bind(this));\n        }\n    }\n    /**\n     * Callback for `requestAnimationFrame`.\n     * @param {number} frameTime The frame time, from `performance.now()`.\n     */\n    onAnimationFrame_(frameTime) {\n        this.renderId_ = undefined;\n        // check if a frame was rendered within the target frame rate\n        const interval = 1000.0 / this.targetFrameRate_;\n        const delta = frameTime - this.lastFrameTime_;\n        if (delta < interval) {\n            // too soon, don't render yet\n            this.render_();\n            return;\n        }\n        // time to render a frame, save the time\n        this.lastFrameTime_ = frameTime;\n        const julianDate = this.time_();\n        // initializeFrame private property\n        // @ts-ignore TS2341\n        this.scene_.initializeFrame();\n        this.handleResize_();\n        this.dataSourceDisplay_.update(julianDate);\n        // Update tracked entity\n        if (this.entityView_) {\n            const trackedEntity = this.trackedEntity_;\n            // getBoundingSphere private property\n            // @ts-ignore TS2341\n            const trackedState = this.dataSourceDisplay_.getBoundingSphere(trackedEntity, false, this.boundingSphereScratch_);\n            if (trackedState === BoundingSphereState.DONE) {\n                this.boundingSphereScratch_.radius = 1; // a radius of 1 is enough for tracking points\n                this.entityView_.update(julianDate, this.boundingSphereScratch_);\n            }\n        }\n        this.scene_.render(julianDate);\n        if (!this.refresh2DAfterCameraMoveEndOnly) {\n            this.camera_.checkCameraChange();\n        }\n        // request the next render call after this one completes to ensure the browser doesn't get backed up\n        this.render_();\n    }\n    updateTrackedEntity_() {\n        if (!this.needTrackedEntityUpdate_) {\n            return;\n        }\n        const trackedEntity = this.trackedEntity_;\n        const scene = this.scene_;\n        // getBoundingSphere private property\n        // @ts-ignore TS2341\n        const state = this.dataSourceDisplay_.getBoundingSphere(trackedEntity, false, this.boundingSphereScratch_);\n        if (state === BoundingSphereState.PENDING) {\n            return;\n        }\n        scene.screenSpaceCameraController.enableTilt = false;\n        const bs = state !== BoundingSphereState.FAILED ? this.boundingSphereScratch_ : undefined;\n        if (bs) {\n            bs.radius = 1;\n        }\n        this.entityView_ = new Cesium.EntityView(trackedEntity, scene, scene.mapProjection.ellipsoid);\n        this.entityView_.update(this.time_(), bs);\n        this.needTrackedEntityUpdate_ = false;\n    }\n    handleResize_() {\n        let width = this.canvas_.clientWidth;\n        let height = this.canvas_.clientHeight;\n        if (width === 0 || height === 0) {\n            // The canvas DOM element is not ready yet.\n            return;\n        }\n        if (width === this.canvasClientWidth_ &&\n            height === this.canvasClientHeight_ &&\n            !this.resolutionScaleChanged_) {\n            return;\n        }\n        let resolutionScale = this.resolutionScale_;\n        if (!supportsImageRenderingPixelated()) {\n            resolutionScale *= window.devicePixelRatio || 1.0;\n        }\n        this.resolutionScaleChanged_ = false;\n        this.canvasClientWidth_ = width;\n        this.canvasClientHeight_ = height;\n        width *= resolutionScale;\n        height *= resolutionScale;\n        this.canvas_.width = width;\n        this.canvas_.height = height;\n        this.scene_.camera.frustum.aspectRatio = width / height;\n    }\n    getCamera() {\n        return this.camera_;\n    }\n    getOlMap() {\n        return this.map_;\n    }\n    getOlView() {\n        const view = this.map_.getView();\n        console.assert(view);\n        return view;\n    }\n    getCesiumScene() {\n        return this.scene_;\n    }\n    getDataSources() {\n        return this.dataSourceCollection_;\n    }\n    getDataSourceDisplay() {\n        return this.dataSourceDisplay_;\n    }\n    getEnabled() {\n        return this.enabled_;\n    }\n    /**\n     * Enables/disables the Cesium.\n     * This modifies the visibility style of the container element.\n     */\n    setEnabled(enable) {\n        if (this.enabled_ === enable) {\n            return;\n        }\n        this.enabled_ = enable;\n        // some Cesium operations are operating with canvas.clientWidth,\n        // so we can't remove it from DOM or even make display:none;\n        this.container_.style.visibility = this.enabled_ ? 'visible' : 'hidden';\n        let interactions;\n        if (this.enabled_) {\n            this.throwOnUnitializedMap_();\n            if (this.isOverMap_) {\n                interactions = this.map_.getInteractions();\n                interactions.forEach((el, i, arr) => {\n                    this.pausedInteractions_.push(el);\n                });\n                interactions.clear();\n                this.map_.addInteraction = interaction => this.pausedInteractions_.push(interaction);\n                this.map_.removeInteraction = (interaction) => {\n                    let interactionRemoved = false;\n                    this.pausedInteractions_ = this.pausedInteractions_.filter((i) => {\n                        const removed = i !== interaction;\n                        if (!interactionRemoved) {\n                            interactionRemoved = removed;\n                        }\n                        return removed;\n                    });\n                    return interactionRemoved ? interaction : undefined;\n                };\n                const rootGroup = this.map_.getLayerGroup();\n                if (rootGroup.getVisible()) {\n                    this.hiddenRootGroup_ = rootGroup;\n                    this.hiddenRootGroup_.setVisible(false);\n                }\n                this.map_.getOverlayContainer().classList.add('olcs-hideoverlay');\n            }\n            this.camera_.readFromView();\n            this.render_();\n        }\n        else {\n            if (this.isOverMap_) {\n                interactions = this.map_.getInteractions();\n                this.pausedInteractions_.forEach((interaction) => {\n                    interactions.push(interaction);\n                });\n                this.pausedInteractions_.length = 0;\n                this.map_.addInteraction = interaction => this.map_.getInteractions().push(interaction);\n                this.map_.removeInteraction = interaction => this.map_.getInteractions().remove(interaction);\n                this.map_.getOverlayContainer().classList.remove('olcs-hideoverlay');\n                if (this.hiddenRootGroup_) {\n                    this.hiddenRootGroup_.setVisible(true);\n                    this.hiddenRootGroup_ = null;\n                }\n            }\n            this.camera_.updateView();\n        }\n    }\n    /**\n     * Preload Cesium so that it is ready when transitioning from 2D to 3D.\n     * @param {number} height Target height of the camera\n     * @param {number} timeout Milliseconds after which the warming will stop\n    */\n    warmUp(height, timeout) {\n        if (this.enabled_) {\n            // already enabled\n            return;\n        }\n        this.throwOnUnitializedMap_();\n        this.camera_.readFromView();\n        const ellipsoid = this.globe_.ellipsoid;\n        const csCamera = this.scene_.camera;\n        const position = ellipsoid.cartesianToCartographic(csCamera.position);\n        if (position.height < height) {\n            position.height = height;\n            csCamera.position = ellipsoid.cartographicToCartesian(position);\n        }\n        this.warmingUp_ = true;\n        this.render_();\n        setTimeout(() => {\n            this.warmingUp_ = false;\n        }, timeout);\n    }\n    /**\n     * Block Cesium rendering to save resources.\n     * @param {boolean} block True to block.\n    */\n    setBlockCesiumRendering(block) {\n        if (this.blockCesiumRendering_ !== block) {\n            this.blockCesiumRendering_ = block;\n            // reset the render loop\n            this.render_();\n        }\n    }\n    /**\n     * Render the globe only when necessary in order to save resources.\n     * Experimental.\n     */\n    enableAutoRenderLoop() {\n        if (!this.autoRenderLoop_) {\n            this.autoRenderLoop_ = new olcsAutoRenderLoop(this);\n        }\n    }\n    /**\n     * Get the autorender loop.\n    */\n    getAutoRenderLoop() {\n        return this.autoRenderLoop_;\n    }\n    /**\n     * The 3D Cesium globe is rendered in a canvas with two different dimensions:\n     * clientWidth and clientHeight which are the dimension on the screen and\n     * width and height which are the dimensions of the drawing buffer.\n     *\n     * By using a resolution scale lower than 1.0, it is possible to render the\n     * globe in a buffer smaller than the canvas client dimensions and improve\n     * performance, at the cost of quality.\n     *\n     * Pixel ratio should also be taken into account; by default, a device with\n     * pixel ratio of 2.0 will have a buffer surface 4 times bigger than the client\n     * surface.\n     */\n    setResolutionScale(value) {\n        value = Math.max(0, value);\n        if (value !== this.resolutionScale_) {\n            this.resolutionScale_ = Math.max(0, value);\n            this.resolutionScaleChanged_ = true;\n            if (this.autoRenderLoop_) {\n                this.autoRenderLoop_.restartRenderLoop();\n            }\n        }\n    }\n    /**\n     * Set the target frame rate for the renderer. Set to `Number.POSITIVE_INFINITY`\n     * to render as quickly as possible.\n     * @param {number} value The frame rate, in frames per second.\n     */\n    setTargetFrameRate(value) {\n        if (this.targetFrameRate_ !== value) {\n            this.targetFrameRate_ = value;\n            // reset the render loop\n            this.render_();\n        }\n    }\n    /**\n     * Set if the synchronization back to the OL 2D map happens continuously or only after the camera is at rest again.\n     * @param {boolean} value true: synch after camera move end only; false: synch continuously\n     */\n    setRefresh2DAfterCameraMoveEndOnly(value) {\n        this.refresh2DAfterCameraMoveEndOnly = value;\n    }\n    /**\n     * Check if OpenLayers map is not properly initialized.\n     */\n    throwOnUnitializedMap_() {\n        const map = this.map_;\n        const view = map.getView();\n        const center = view.getCenter();\n        if (!view.isDef() || isNaN(center[0]) || isNaN(center[1])) {\n            throw new Error(`The OpenLayers map is not properly initialized: ${center} / ${view.getResolution()}`);\n        }\n    }\n    get trackedFeature() {\n        return this.trackedFeature_;\n    }\n    set trackedFeature(feature) {\n        if (this.trackedFeature_ !== feature) {\n            const scene = this.scene_;\n            //Stop tracking\n            if (!feature || !feature.getGeometry()) {\n                this.needTrackedEntityUpdate_ = false;\n                scene.screenSpaceCameraController.enableTilt = true;\n                if (this.trackedEntity_) {\n                    this.dataSourceDisplay_.defaultDataSource.entities.remove(this.trackedEntity_);\n                }\n                this.trackedEntity_ = null;\n                this.trackedFeature_ = null;\n                this.entityView_ = null;\n                scene.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n                return;\n            }\n            this.trackedFeature_ = feature;\n            //We can't start tracking immediately, so we set a flag and start tracking\n            //when the bounding sphere is ready (most likely next frame).\n            this.needTrackedEntityUpdate_ = true;\n            const to4326Transform = this.to4326Transform_;\n            const toCesiumPosition = function () {\n                const geometry = feature.getGeometry();\n                console.assert(geometry instanceof olGeomPoint);\n                const coo = geometry instanceof olGeomPoint ? geometry.getCoordinates() : [];\n                const coo4326 = to4326Transform(coo, undefined, coo.length);\n                return ol4326CoordinateToCesiumCartesian(coo4326);\n            };\n            // Create an invisible point entity for tracking.\n            // It is independent of the primitive/geometry created by the vector synchronizer.\n            const options = {\n                // @ts-ignore according to Cesium types, not possible to pass CallbackProperty\n                position: new Cesium.CallbackProperty((time, result) => toCesiumPosition(), false),\n                point: {\n                    pixelSize: 1,\n                    color: Cesium.Color.TRANSPARENT\n                }\n            };\n            this.trackedEntity_ = this.dataSourceDisplay_.defaultDataSource.entities.add(options);\n        }\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0xDZXNpdW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb2xjcy9PTENlc2l1bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsK0JBQStCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0UsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQXlCLE1BQU0sWUFBWSxDQUFDO0FBQ2hFLE9BQU8sa0JBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sc0JBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxzQkFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLHVCQUF1QixNQUFNLDBCQUEwQixDQUFDO0FBb0IvRDs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQixHQUEyQjtJQUNsRDs7T0FFRztJQUNILElBQUksRUFBRSxDQUFDO0lBQ1A7O09BRUc7SUFDSCxPQUFPLEVBQUUsQ0FBQztJQUNWOztPQUVHO0lBQ0gsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFDO0FBOEJGOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLFFBQVE7SUFDbkIsZUFBZSxHQUE4QixJQUFJLENBQUM7SUFDbEQsSUFBSSxDQUFNO0lBQ1YsS0FBSyxDQUFtQjtJQUN4QixnQkFBZ0IsQ0FBb0I7SUFDcEMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztJQUN6QixtQkFBbUIsR0FBRyxHQUFHLENBQUM7SUFDMUIsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUMsZUFBZTtJQUMvQyxVQUFVLENBQWM7SUFDeEIsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBb0I7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","import OverlaySynchronizer from \"olcs/lib/olcs/OverlaySynchronizer.js\";\r\n\r\n/**\r\n * Represents a FixedOverlaySynchronizer.\r\n */\r\nclass FixedOverlaySynchronizer extends OverlaySynchronizer {\r\n    /* eslint-disable no-useless-constructor */\r\n    /**\r\n     * This object takes care of one-directional synchronization of\r\n     * Openlayers WMS raster layers to the given Cesium globe. This Synchronizer\r\n     * assumes that the given WMS supports EPSG Code 4326 (WGS84)\r\n     * @param {!ol.Map} map -\r\n     * @param {!Cesium.Scene} scene -\r\n     * @constructor\r\n     * @extends {olcs.AbstractSynchronizer.<Cesium.ImageryLayer>}\r\n     * @api\r\n     * @struct\r\n     */\r\n    constructor (map, scene) {\r\n        super(map, scene);\r\n    }\r\n\r\n    /**\r\n     * @api\r\n     * @returns {void}\r\n     */\r\n    addOverlays () {\r\n        /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"overlays_\"] }]*/\r\n        this.overlays_.forEach((overlay) => {\r\n            if (overlay.getId() !== undefined) {\r\n                this.addOverlay(overlay);\r\n            }\r\n        });\r\n    }\r\n}\r\n\r\nexport default FixedOverlaySynchronizer;\r\n\r\n/* eslint-enable no-useless-constructor */\r\n","/**\r\n * @module olcs.WMSRasterSynchronizer\r\n */\r\nimport olLayerGroup from \"ol/layer/Group.js\";\r\nimport {getUid} from \"olcs/lib/olcs/util.js\";\r\nimport TileWMS from \"ol/source/TileWMS.js\";\r\nimport ImageWMS from \"ol/source/ImageWMS.js\";\r\nimport WMTS from \"ol/source/WMTS.js\";\r\nimport AbstractSynchronizer from \"olcs/lib/olcs/AbstractSynchronizer.js\";\r\nimport {extentToRectangle, tileLayerToImageryLayer, updateCesiumLayerProperties} from \"olcs/lib/olcs/core.js\";\r\nimport {Tile, Image as ImageLayer} from \"ol/layer.js\";\r\nimport {stableSort} from \"ol/array.js\";\r\nimport {getBottomLeft, getBottomRight, getTopRight, getTopLeft} from \"ol/extent.js\";\r\nimport {transformExtent} from \"ol/proj.js\";\r\nimport StaticImageSource from \"ol/source/ImageStatic\";\r\nimport proj4 from \"proj4\";\r\n\r\n/**\r\n * Represents a WMSRasterSynchronizer.\r\n */\r\nclass WMSRasterSynchronizer extends AbstractSynchronizer {\r\n    /**\r\n     * This object takes care of one-directional synchronization of\r\n     * Openlayers WMS raster layers to the given Cesium globe. This Synchronizer\r\n     * assumes that the given WMS supports EPSG Code 4326 (WGS84)\r\n     * @param {!ol.Map} map -\r\n     * @param {!Cesium.Scene} scene -\r\n     * @constructor\r\n     * @extends {olcs.AbstractSynchronizer.<Cesium.ImageryLayer>}\r\n     * @api\r\n     * @struct\r\n     */\r\n    constructor (map, scene) {\r\n        super(map, scene);\r\n        /**\r\n         * @type {!Cesium.ImageryLayerCollection}\r\n         * @private\r\n         */\r\n        this.cesiumLayers = scene.imageryLayers;\r\n\r\n        /**\r\n         * @type {!Cesium.ImageryLayerCollection}\r\n         * @private\r\n         */\r\n        this.ourLayers = new Cesium.ImageryLayerCollection();\r\n    }\r\n\r\n\r\n    /**\r\n     * @inheritDoc\r\n     */\r\n    addCesiumObject (object) {\r\n        this.cesiumLayers.add(object);\r\n        this.ourLayers.add(object);\r\n    }\r\n\r\n\r\n    /**\r\n     * @inheritDoc\r\n     */\r\n    destroyCesiumObject (object) {\r\n        object.destroy();\r\n    }\r\n\r\n\r\n    /**\r\n     * @inheritDoc\r\n     */\r\n    removeSingleCesiumObject (object, destroy) {\r\n        this.cesiumLayers.remove(object, destroy);\r\n        this.ourLayers.remove(object, false);\r\n    }\r\n\r\n\r\n    /**\r\n     * @inheritDoc\r\n     */\r\n    removeAllCesiumObjects (destroy) {\r\n        for (let i = 0; i < this.ourLayers.length; ++i) {\r\n            this.cesiumLayers.remove(this.ourLayers.get(i), destroy);\r\n        }\r\n        this.ourLayers.removeAll(false);\r\n    }\r\n\r\n\r\n    /**\r\n     * Creates an array of Cesium.ImageryLayer.\r\n     * May be overriden by child classes to implement custom behavior.\r\n     * The default implementation handles tiled imageries in EPSG:4326 or\r\n     * EPSG:3859.\r\n     * @param {module:ol/layer/Base~BaseLayer } olLayer The raster layer.\r\n     * @param {module:ol/proj} viewProj Projection of the view.\r\n     * @return {?Array.<!Cesium.ImageryLayer>} Array or null if not possible.\r\n     * (or supported)\r\n     * @protected\r\n     */\r\n    convertLayerToCesiumImageries (olLayer, viewProj) {\r\n        const layerOptions = {\r\n            \"show\": false\r\n        };\r\n        let source = {},\r\n            cesiumLayer = {},\r\n            provider = null;\r\n\r\n        if (!(olLayer instanceof Tile) && !(olLayer instanceof ImageLayer)) {\r\n            return null;\r\n        }\r\n\r\n        source = olLayer.getSource();\r\n\r\n        if (source instanceof TileWMS) {\r\n            provider = this.createProviderForTileWMS(source, viewProj, olLayer);\r\n        }\r\n        else if (source instanceof ImageWMS) {\r\n            cesiumLayer = this.createImageryLayerForImageWMS(olLayer, viewProj);\r\n            return cesiumLayer ? [cesiumLayer] : null;\r\n        }\r\n        else if (source instanceof StaticImageSource) {\r\n            provider = this.createProviderForStaticImageSource(source);\r\n        }\r\n        else if (source instanceof WMTS) {\r\n            if (typeof source.getUrls !== \"function\" || !Array.isArray(source.getUrls())) {\r\n                return null;\r\n            }\r\n            provider = new Cesium.WebMapTileServiceImageryProvider({\r\n                url: source.getUrls()[0],\r\n                format: source.getFormat(),\r\n                layer: source.getLayer(),\r\n                style: source.getStyle(),\r\n                tileMatrixSetID: source.getMatrixSet(),\r\n                tileMatrixLabels: source.getTileGrid().getMatrixIds(),\r\n                credit: source.getAttributions()\r\n            });\r\n        }\r\n        else {\r\n            console.warn(\"Sources other than TileImage are currently not supported.\");\r\n            return null;\r\n        }\r\n\r\n        cesiumLayer = new Cesium.ImageryLayer(provider, layerOptions);\r\n\r\n        return cesiumLayer ? [cesiumLayer] : null;\r\n    }\r\n\r\n    /**\r\n     * Creates an Cesium.WebMapServiceImageryProvider for RasterLayer of the type TileWMS.\r\n     * @param {module:ol/source/TileWMS} source The raster layer source.\r\n     * @param {module:ol/proj} viewProj Projection of the view.\r\n     * @param {module:ol/layer/Base~BaseLayer } olLayer The raster layer.\r\n     * @returns {WebMapServiceImageryProvider} The imagery provider.\r\n     */\r\n    createProviderForTileWMS (source, viewProj, olLayer) {\r\n        const params = source.getParams(),\r\n            options = {\r\n                \"url\": source.getUrls()[0],\r\n                \"parameters\": params,\r\n                \"layers\": params.LAYERS,\r\n                \"show\": false\r\n            },\r\n            tileGrid = source.getTileGrid();\r\n\r\n        if (tileGrid) {\r\n            const ext = olLayer.getExtent();\r\n\r\n            if (ext && viewProj) {\r\n                options.rectangle = extentToRectangle(ext, viewProj);\r\n                const minMax = this.getMinMaxLevelFromTileGrid(tileGrid, ext, viewProj);\r\n\r\n                options.tileWidth = tileGrid.getTileSize(0)[0];\r\n                options.tileHeight = tileGrid.getTileSize(0)[1];\r\n                options.minimumLevel = minMax[0];\r\n                options.maximumLevel = minMax[1];\r\n            }\r\n        }\r\n\r\n        return new Cesium.WebMapServiceImageryProvider(options);\r\n    }\r\n\r\n    /**\r\n     * Creates an Cesium.ImageryLayer for RasterLayer of the type ImageWMS.\r\n     * @param {module:ol/layer/Base~BaseLayer } olLayer The raster layer.\r\n     * @param {module:ol/proj} viewProj Projection of the view.\r\n     * @returns {Cesium.ImageryLayer} The imagery layer.\r\n     */\r\n    createImageryLayerForImageWMS (olLayer, viewProj) {\r\n        return tileLayerToImageryLayer(this.map, olLayer, viewProj);\r\n    }\r\n\r\n    /**\r\n     * Creates an Cesium.SingleTileImageryProvider for RasterLayer of the type StaticImageSource.\r\n     * @param {module:ol/source/ImageStatic} source The raster layer source.\r\n     * @returns {SingleTileImageryProvider} The imagery provider.\r\n     */\r\n    createProviderForStaticImageSource (source) {\r\n        const extent = source.getImageExtent(),\r\n            options = {\r\n                \"url\": source.getUrl(),\r\n                \"show\": false\r\n            },\r\n            bottomLeftCorner = proj4(source.getProjection().getCode(), \"EPSG:4326\", getBottomLeft(extent)),\r\n            topRightCorner = proj4(source.getProjection().getCode(), \"EPSG:4326\", getTopRight(extent));\r\n\r\n        options.rectangle = Cesium.Rectangle.fromDegrees(bottomLeftCorner[0], bottomLeftCorner[1], topRightCorner[0], topRightCorner[1]);\r\n\r\n        return new Cesium.SingleTileImageryProvider(options);\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param {ol.Extent} extent -\r\n     * @param {ol.ProjectionLike} projection -\r\n     * @return {Array.<Cesium.Cartographic>} -\r\n     * @private\r\n     */\r\n    getExtentPoints (extent, projection) {\r\n        const wgs84Extent = transformExtent(extent, projection, \"EPSG:4326\"),\r\n            olCoords = [\r\n                getBottomLeft(wgs84Extent),\r\n                getBottomRight(wgs84Extent),\r\n                getTopRight(wgs84Extent),\r\n                getTopLeft(wgs84Extent)\r\n            ];\r\n\r\n        return olCoords.map(coord => Cesium.Cartographic.fromDegrees(coord[0], coord[1]));\r\n    }\r\n    /**\r\n     *\r\n     * @param {ol.tilegrid.TileGrid} tilegrid -\r\n     * @param {ol.Extent} extent -\r\n     * @param {ol.ProjectionLike} projection -\r\n     * @return {Array.<Number>} -\r\n     */\r\n    getMinMaxLevelFromTileGrid (tilegrid, extent, projection) {\r\n        const olCoords = [\r\n                getBottomLeft(extent),\r\n                getBottomRight(extent),\r\n                getTopRight(extent),\r\n                getTopLeft(extent)\r\n            ],\r\n            resolution = tilegrid.getResolutions().slice(-1).pop(),\r\n            tileCoordsLocal = olCoords.map(position => tilegrid.getTileCoordForCoordAndResolution(position, resolution)),\r\n            distanceLocalX = Math.abs(tileCoordsLocal[0][1] - tileCoordsLocal[1][1]),\r\n            distanceLocalY = Math.abs(tileCoordsLocal[0][2] - tileCoordsLocal[3][2]),\r\n            extentCoords = this.getExtentPoints(extent, projection),\r\n            tilingScheme = new Cesium.GeographicTilingScheme({});\r\n        let minLevel = 0,\r\n            maxLevel = 20;\r\n\r\n        while (minLevel < maxLevel) {\r\n            /* eslint-disable no-loop-func */\r\n\r\n            const tileCoords = extentCoords.map(position => tilingScheme.positionToTileXY(position, minLevel)),\r\n                distances = [];\r\n            /* eslint-enable  no-loop-func */\r\n\r\n            distances.push(Math.abs(tileCoords[0].x - tileCoords[1].x));\r\n            distances.push(Math.abs(tileCoords[0].y - tileCoords[3].y));\r\n            if (distances[0] > 1 || distances[1] > 1) {\r\n                minLevel--;\r\n                break;\r\n            }\r\n            minLevel++;\r\n        }\r\n        while (maxLevel > minLevel) {\r\n            /* eslint-disable no-loop-func */\r\n\r\n            const tileCoords = extentCoords.map(position => tilingScheme.positionToTileXY(position, maxLevel)),\r\n                distances = [];\r\n            /* eslint-enable  no-loop-func */\r\n\r\n            distances.push(Math.abs(tileCoords[0].x - tileCoords[1].x));\r\n            distances.push(Math.abs(tileCoords[0].y - tileCoords[3].y));\r\n            if (distances[0] < distanceLocalX || distances[1] < distanceLocalY) {\r\n                maxLevel++;\r\n                break;\r\n            }\r\n            maxLevel--;\r\n        }\r\n        return [minLevel, maxLevel];\r\n    }\r\n\r\n    /**\r\n     * @inheritDoc\r\n     */\r\n    createSingleLayerCounterparts (olLayerWithParents) {\r\n        const olLayer = olLayerWithParents.layer,\r\n            uid = getUid(olLayer).toString(),\r\n            viewProj = this.view.getProjection(),\r\n            cesiumObjects = this.convertLayerToCesiumImageries(olLayer, viewProj);\r\n\r\n        if (cesiumObjects) {\r\n            const listenKeyArray = [];\r\n\r\n            [olLayerWithParents.layer].concat(olLayerWithParents.parents).forEach((olLayerItem) => {\r\n                listenKeyArray.push(olLayerItem.on([\"change:opacity\", \"change:visible\"], () => {\r\n                // the compiler does not seem to be able to infer this\r\n                    /* eslint-disable no-console */\r\n\r\n                    console.assert(cesiumObjects);\r\n                    /* eslint-enable no-console */\r\n                    for (let i = 0; i < cesiumObjects.length; ++i) {\r\n                        updateCesiumLayerProperties(olLayerWithParents, cesiumObjects[i]);\r\n                    }\r\n                }));\r\n            });\r\n\r\n            for (let i = 0; i < cesiumObjects.length; ++i) {\r\n                updateCesiumLayerProperties(olLayerWithParents, cesiumObjects[i]);\r\n            }\r\n\r\n            // there is no way to modify Cesium layer extent,\r\n            // we have to recreate when OpenLayers layer extent changes:\r\n            listenKeyArray.push(olLayer.on(\"change:extent\", function () {\r\n                for (let i = 0; i < cesiumObjects.length; ++i) {\r\n                    this.cesiumLayers.remove(cesiumObjects[i], true); // destroy\r\n                    this.ourLayers.remove(cesiumObjects[i], false);\r\n                }\r\n                delete this.layerMap[getUid(olLayer)]; // invalidate the map entry\r\n                this.synchronize();\r\n            }, this));\r\n\r\n            listenKeyArray.push(olLayer.on(\"change\", function () {\r\n                // when the source changes, re-add the layer to force update\r\n                for (let i = 0; i < cesiumObjects.length; ++i) {\r\n                    const position = this.cesiumLayers.indexOf(cesiumObjects[i]);\r\n\r\n                    if (position >= 0) {\r\n                        this.cesiumLayers.remove(cesiumObjects[i], false);\r\n                        this.cesiumLayers.add(cesiumObjects[i], position);\r\n                    }\r\n                }\r\n            }.bind(this)));\r\n\r\n            this.olLayerListenKeys[uid].push(...listenKeyArray);\r\n        }\r\n\r\n        return Array.isArray(cesiumObjects) ? cesiumObjects : null;\r\n    }\r\n\r\n    /**\r\n     * Order counterparts using the same algorithm as the Openlayers renderer:\r\n     * z-index then original sequence order.\r\n     * @override\r\n     * @protected\r\n     */\r\n    orderLayers () {\r\n        const layers = [],\r\n            zIndices = {},\r\n            queue = [this.mapLayerGroup];\r\n\r\n        while (queue.length > 0) {\r\n            const olLayer = queue.splice(0, 1)[0];\r\n\r\n            layers.push(olLayer);\r\n            zIndices[getUid(olLayer)] = olLayer.getZIndex();\r\n\r\n            if (olLayer instanceof olLayerGroup) {\r\n                const sublayers = olLayer.getLayers();\r\n\r\n                if (sublayers) {\r\n                    // Prepend queue with sublayers in order\r\n                    queue.unshift(...sublayers.getArray());\r\n                }\r\n            }\r\n        }\r\n\r\n        stableSort(layers, (layer1, layer2) => zIndices[getUid(layer1)] - zIndices[getUid(layer2)]);\r\n\r\n        layers.forEach(function (olLayer) {\r\n            const olLayerId = getUid(olLayer).toString(),\r\n                cesiumObjects = this.layerMap[olLayerId];\r\n\r\n            if (cesiumObjects) {\r\n                cesiumObjects.forEach(this.raiseToTop, this);\r\n            }\r\n        }, this);\r\n    }\r\n\r\n    /**\r\n     * @param {Cesium.ImageryLayer} counterpart -\r\n     * @returns {void}\r\n     */\r\n    raiseToTop (counterpart) {\r\n        this.cesiumLayers.raiseToTop(counterpart);\r\n    }\r\n}\r\n\r\nexport default WMSRasterSynchronizer;\r\n","import OLCesium from \"olcs\";\r\nimport {transform, get} from \"ol/proj.js\";\r\nimport VectorSynchronizer from \"olcs/lib/olcs/VectorSynchronizer.js\";\r\n\r\nimport FixedOverlaySynchronizer from \"./3dUtils/fixedOverlaySynchronizer.js\";\r\nimport WMSRasterSynchronizer from \"./3dUtils/wmsRasterSynchronizer.js\";\r\nimport defaults from \"../../defaults\";\r\n\r\nlet mapIdCounter = 0;\r\n\r\n/**\r\n * Recursively sets parameters on the Cesium scene.\r\n *\r\n * Certain keys are excluded from being set directly on the scene object:\r\n * - \"0\", \"1\", \"2\": These is placeholder keys or indices from certain configurations that should not be interpreted as scene properties.\r\n * - \"heading\", \"tilt\", \"altitude\": These are camera-related properties and should be handled separately via specific camera functions.\r\n *\r\n * @param {Cesium.Scene} scene - The Cesium scene instance.\r\n * @param {Object} params - Configuration parameters.\r\n * @returns {void}\r\n */\r\nexport function setCesiumSceneParams (scene, params) {\r\n    if (!scene || !params || typeof params !== \"object\") {\r\n        console.warn(\"setCesiumSceneParams: Invalid scene or params.\");\r\n        return;\r\n    }\r\n\r\n    Object.entries(params).forEach(([key, value]) => {\r\n        if ([\"0\", \"1\", \"2\", \"heading\", \"tilt\", \"altitude\"].includes(key)) {\r\n            return;\r\n        }\r\n\r\n        if (typeof value === \"object\" && scene[key]) {\r\n            setCesiumSceneParams(scene[key], value);\r\n        }\r\n        else {\r\n            scene[key] = value;\r\n        }\r\n    });\r\n}\r\n/**\r\n * Sets the camera parameters either from config or from an trigger.\r\n * @param {Object} params - Parameters for setting the camera.\r\n * @param {Object} map3D - olcs map instance.\r\n * @param {Cesium} cesium - Cesium instance.\r\n * @returns {void}\r\n */\r\nexport function setCameraParameter (params, map3D, cesium) {\r\n    if (!params || !map3D) {\r\n        console.warn(\"setCameraParameter: Missing parameters or map3D instance.\");\r\n        return;\r\n    }\r\n\r\n    let camera = map3D.getCesiumScene()?.camera;\r\n    const heading = parseFloat(params.heading ?? params.camera?.heading ?? 0),\r\n        pitch = parseFloat(params.pitch ?? params.camera?.pitch ?? 0),\r\n        roll = parseFloat(params.roll ?? 0),\r\n        tilt = parseFloat(params.tilt ?? params.camera?.tilt ?? 0),\r\n        altitude = parseFloat(params.altitude ?? params.camera?.altitude ?? 0);\r\n\r\n    if (params.cameraPosition || params.camera?.cameraPosition) {\r\n        const cameraPosition = params.cameraPosition ?? params.camera.cameraPosition,\r\n            destination = cesium.Cartesian3.fromDegrees(cameraPosition[0], cameraPosition[1], cameraPosition[2]),\r\n            orientation = {\r\n                heading: cesium.Math.toRadians(heading),\r\n                pitch: cesium.Math.toRadians(pitch),\r\n                roll: cesium.Math.toRadians(roll)\r\n            };\r\n\r\n        if (params.cameraPosition) {\r\n            camera.setView({destination, orientation});\r\n        }\r\n        else {\r\n            camera.flyTo({destination, orientation});\r\n        }\r\n\r\n        return;\r\n    }\r\n\r\n    camera = map3D.getCamera();\r\n\r\n    if (tilt) {\r\n        camera.setTilt(tilt);\r\n    }\r\n    if (heading) {\r\n        camera.setHeading(heading);\r\n    }\r\n    if (altitude) {\r\n        camera.setAltitude(altitude);\r\n    }\r\n}\r\n\r\n/**\r\n * Creates a 3D-map.\r\n * @param {object} [settings] The settings for the 3D-map.\r\n * @param {module:ol/Map~Map} [settings.map2D] The 2D-Map\r\n * @param {Cesium.JulianDate} [settings.shadowTime] The shadow time in julian date format if undefined olcs default is Cesium.JulianDate.now().\r\n * @returns {module:OLCesium} the 3d-map\r\n */\r\nexport function createMap (settings) {\r\n    const map3D = new OLCesium({\r\n        map: settings.map2D,\r\n        time: settings?.shadowTime,\r\n        stopOpenLayersEventsPropagation: true,\r\n        createSynchronizers: (olMap, scene) => {\r\n            return [new WMSRasterSynchronizer(olMap, scene), new VectorSynchronizer(olMap, scene), new FixedOverlaySynchronizer(olMap, scene)];\r\n        }\r\n    });\r\n\r\n    map3D.id = `map3D_${mapIdCounter++}`;\r\n    map3D.mapMode = \"3D\";\r\n\r\n    setCesiumSceneParams(map3D.getCesiumScene(), defaults.sceneOptions);\r\n    if (settings?.cesiumParameter) {\r\n        setCesiumSceneParams(map3D.getCesiumScene(), settings.cesiumParameter);\r\n        setCameraParameter(settings.cesiumParameter, map3D, Cesium);\r\n    }\r\n\r\n    return map3D;\r\n}\r\n\r\n/**\r\n * Reacts to 3D click event in cesium scene.\r\n * @param {Event} event The cesium event.\r\n * @returns {Function} Returns the callbackfunction with click informations.\r\n */\r\nfunction reactTo3DClickEvent (event) {\r\n    const scene = this.scene,\r\n        ray = scene.camera.getPickRay(event.position),\r\n        cartesian = scene.globe.pick(ray, scene),\r\n        mapProjection = this.map3D.getOlView().getProjection();\r\n    let height,\r\n        coords,\r\n        cartographic,\r\n        distance,\r\n        resolution,\r\n        transformedCoords,\r\n        transformedPickedPosition,\r\n        pickedPositionCartesian,\r\n        cartographicPickedPosition,\r\n        clickObject;\r\n\r\n    if (cartesian) {\r\n        if (document.querySelector(\".nav li\")?.classList.contains(\"open\")) {\r\n            document.querySelector(\".nav li\").classList.remove(\"open\");\r\n        }\r\n        cartographic = scene.globe.ellipsoid.cartesianToCartographic(cartesian);\r\n        coords = [Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude)];\r\n        height = scene.globe.getHeight(cartographic);\r\n        if (height) {\r\n            coords = coords.concat([height]);\r\n        }\r\n\r\n        distance = Cesium.Cartesian3.distance(cartesian, scene.camera.position);\r\n        resolution = this.map3D.getCamera().calcResolutionForDistance(distance, cartographic.latitude);\r\n        transformedCoords = transform(coords, get(\"EPSG:4326\"), mapProjection);\r\n        transformedPickedPosition = null;\r\n\r\n        if (scene.pickPositionSupported) {\r\n            const pickedObject = scene.pick(event.position);\r\n\r\n            pickedPositionCartesian = scene.pickPosition(event.position);\r\n\r\n            if (!pickedPositionCartesian && pickedObject?.primitive instanceof window.Cesium.Billboard) {\r\n                pickedPositionCartesian = pickedObject.primitive?.position;\r\n            }\r\n\r\n            if (pickedPositionCartesian) {\r\n                cartographicPickedPosition = scene.globe.ellipsoid.cartesianToCartographic(pickedPositionCartesian);\r\n                transformedPickedPosition = transform([Cesium.Math.toDegrees(cartographicPickedPosition.longitude), Cesium.Math.toDegrees(cartographicPickedPosition.latitude)], get(\"EPSG:4326\"), mapProjection);\r\n                transformedPickedPosition.push(cartographicPickedPosition.height);\r\n            }\r\n        }\r\n        clickObject = {\r\n            map3D: this,\r\n            position: event.position,\r\n            pickedPosition: transformedPickedPosition,\r\n            coordinate: transformedCoords,\r\n            latitude: coords[0],\r\n            longitude: coords[1],\r\n            resolution: resolution,\r\n            originalEvent: event\r\n        };\r\n    }\r\n    return this.callback(clickObject);\r\n}\r\n\r\n/**\r\n * Logic to listen to click events in 3D mode.\r\n * @param {Object} map3DObject Contains the scene, 3D map and a callback function.\r\n * @returns {void}\r\n */\r\nexport function handle3DEvents (map3DObject) {\r\n    let eventHandler;\r\n\r\n    if (Cesium) {\r\n        eventHandler = new Cesium.ScreenSpaceEventHandler(map3DObject.scene.canvas);\r\n        eventHandler.setInputAction(reactTo3DClickEvent.bind(map3DObject), Cesium.ScreenSpaceEventType.LEFT_CLICK);\r\n    }\r\n}\r\n\r\n/**\r\n * Prepares the camera and listens to camera changed events.\r\n * @param {Cesium.scene} scene Cesium scene.\r\n * @param {Object} urlParams optional urlParams for camera.\r\n * @param {Object} config optional configuration parameters.\r\n * @returns {Cesium.scene.camera} Cesium camera.\r\n */\r\nexport function prepareCamera (scene, urlParams, config) {\r\n    const camera = scene.camera;\r\n    let cameraParameter = Object.prototype.hasOwnProperty.call(config, \"cameraParameter\") ? config.cameraParameter : {};\r\n\r\n    cameraParameter = urlParams?.altitude ? Object.assign(cameraParameter || {}, {altitude: urlParams?.altitude}) : cameraParameter;\r\n    cameraParameter = urlParams?.heading ? Object.assign(cameraParameter || {}, {heading: urlParams?.heading}) : cameraParameter;\r\n    cameraParameter = urlParams?.tilt ? Object.assign(cameraParameter || {}, {tilt: urlParams?.tilt}) : cameraParameter;\r\n\r\n    if (Object.keys(cameraParameter).length > 0) {\r\n        setCesiumSceneParams(scene, {camera: cameraParameter});\r\n    }\r\n\r\n    return camera;\r\n}\r\n","import {default as map} from \"./map.js\";\r\n\r\nexport default {\r\n    map\r\n};\r\n","import * as olMap from \"./ol/olMap.js\";\r\nimport * as olcsMap from \"./olcs/olcsMap.js\";\r\n\r\nexport default {\r\n    /**\r\n    * Creates a map and adds it to the mapCollection. Depending on param 'mapMode' a 2D or a 3D map is created. Default ist 2D.\r\n    * @param {object} [config] - configuration object - falls back to defaults if none given\r\n    * @param {string} [config.target=\"map\"] - div id to render map to\r\n    * @param {string} [config.namedProjections] - projections to create the map\r\n    * @param {string} [config.backgroundImage] - background image for map; \"\" to use none\r\n    * @param {string} [config.epsg] - CRS to use\r\n    * @param {number[]} [config.extent] - extent to use\r\n    * @param {Array.<{resolution: number, scale: number, zoomLevel: number}>} [config.options] - zoom level definition\r\n    * @param {Array.<string[]>} [config.options] - each sub-array has two values: projection name, and projection description\r\n    * @param {number} [config.startResolution] - initial resolution\r\n    * @param {number[]} [config.startCenter] - initial position\r\n    * @param {(string|object)} [config.layerConf] - services registry or URL thereof\r\n    * @param {string} [config.gazetteerUrl] - url of gazetteer to use in searchAddress\r\n    * @param {String} [mapMode = \"2D\"] The map mode. '2D' to create a 2D-map and '3D' to create a 3D-map.\r\n    * @param {object}  [settings={}] - settings object\r\n    * @param {object} [settings.mapParams] - additional parameter object that is spread into the ol.Map constructor object\r\n    * @param {function} [settings.callback] - optional callback for layer list loading\r\n    * @param {function} [settings.errorCallback] - optional callback for layer error events\r\n    * @returns {module:ol/Map~Map} The map.\r\n    */\r\n    createMap: function (config, mapMode = \"2D\", settings = {}) {\r\n        const createMapFunctions = {\r\n                \"2D\": olMap.createMap,\r\n                \"3D\": olcsMap.createMap\r\n            },\r\n            map = createMapFunctions[mapMode](config, settings);\r\n\r\n        return map;\r\n    },\r\n    olcsMap\r\n};\r\n","<template>\n  <div\n    id=\"polar-move-handle\"\n    tabindex=\"0\"\n    @focus=\"moveHandle($event.key)\"\n    @keydown=\"moveHandle($event.key)\"\n    @mousedown.stop=\"onMouseDown\"\n    @touchstart.stop=\"onTouchStart\"\n  >\n    <v-icon id=\"polar-move-handle-grip-icon\"> fa-grip-lines </v-icon>\n    <v-card-actions>\n      <slot name=\"actionButton\" />\n      <v-spacer></v-spacer>\n      <v-btn icon small :aria-label=\"closeLabel\" @click=\"close(true)\">\n        <v-icon><slot name=\"closeIcon\">fa-xmark</slot></v-icon>\n      </v-btn>\n    </v-card-actions>\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\nimport { MoveEventName, MoveEventNames, PolarMoveEvent } from './types'\n\nconst minHeight = 0.1\nlet top: null | number = null\n\nfunction calculateTop(\n  topValue: number,\n  containerHeight: number,\n  maxHeight: number\n) {\n  let newTop = topValue\n\n  if (containerHeight - newTop < containerHeight * minHeight) {\n    newTop = containerHeight - containerHeight * minHeight\n  }\n  if (containerHeight - newTop > containerHeight * maxHeight) {\n    newTop = containerHeight - containerHeight * maxHeight\n  }\n  top = newTop\n  return newTop\n}\n\nexport default Vue.extend({\n  name: 'MoveHandle',\n  props: {\n    closeLabel: {\n      type: String,\n      required: true,\n    },\n    closeFunction: {\n      type: Function,\n      required: true,\n    },\n  },\n  data: (): {\n    initialCursorY: number\n    isMoving: boolean\n    maxHeight: number\n    preMoveHandleTop: number\n    resizeObserver: null | ResizeObserver\n    touchDevice: boolean\n    timeoutReference: number\n  } => ({\n    initialCursorY: 0,\n    isMoving: false,\n    maxHeight: Number.MAX_SAFE_INTEGER,\n    preMoveHandleTop: 0,\n    resizeObserver: null,\n    touchDevice: false,\n    timeoutReference: 0,\n  }),\n  computed: {\n    ...mapGetters(['deviceIsHorizontal', 'hasSmallHeight', 'hasWindowSize']),\n    moveEventNames(): MoveEventNames {\n      return this.touchDevice\n        ? { move: 'touchmove', end: 'touchend' }\n        : { move: 'mousemove', end: 'mouseup' }\n    },\n  },\n  watch: {\n    // Fixes an issue if the orientation of a mobile device is changed while a plugin is open\n    deviceIsHorizontal(newVal: boolean) {\n      if (!newVal) {\n        this.updateMaxHeight()\n      }\n    },\n    isMoving(newValue: boolean): void {\n      const { move, end } = this.moveEventNames\n\n      if (newValue) {\n        this.$el.classList.add('polar-move-handle-is-moving')\n        document.addEventListener<MoveEventName>(move, this.onMove)\n        document.addEventListener(end, this.onMoveEnd, { once: true })\n        return\n      }\n      this.$el.classList.remove('polar-move-handle-is-moving')\n      document.removeEventListener<MoveEventName>(move, this.onMove)\n      document.removeEventListener(end, this.onMoveEnd)\n    },\n    maxHeight(newValue: number, oldValue: number): void {\n      // reset position if content shrank\n      if (newValue < oldValue) {\n        this.savePreMoveHandleTop()\n        this.setNewPosition(0)\n      }\n    },\n  },\n  mounted() {\n    if (top === null) {\n      top = this.$root.$el.clientHeight * 0.55\n    }\n    const handleElement = this.$el as HTMLDivElement\n    handleElement.style.position = 'fixed'\n    handleElement.style.width = '100%'\n    handleElement.style['z-index'] = 1\n    handleElement.style.left = '0'\n    handleElement.style.top = `${calculateTop(\n      top,\n      this.$root.$el.clientHeight,\n      this.maxHeight\n    )}px`\n    this.resizeObserver = new ResizeObserver(this.updateMaxHeight)\n    this.resizeObserver.observe(handleElement)\n    this.updateMaxHeight()\n  },\n  beforeDestroy() {\n    if (this.resizeObserver !== null) {\n      this.resizeObserver.disconnect()\n      this.resizeObserver = null\n    }\n    top = null\n  },\n  methods: {\n    ...mapMutations(['setMoveHandle']),\n    close(userInteraction: boolean) {\n      this.setMoveHandle(null)\n      this.closeFunction(userInteraction)\n    },\n    moveHandle(key: string): void {\n      if (key === 'ArrowUp' || key === 'ArrowDown') {\n        this.savePreMoveHandleTop()\n        this.setNewPosition(key === 'ArrowUp' ? -5 : 5)\n      }\n    },\n    onMouseDown(event: PolarMoveEvent) {\n      this.touchDevice = false\n      this.startMoving(event)\n    },\n    onMove(event: PolarMoveEvent): void {\n      const clientX =\n        event instanceof MouseEvent ? event.clientX : event.touches[0].clientX\n      const clientY =\n        event instanceof MouseEvent ? event.clientY : event.touches[0].clientY\n      const deltaY = clientY - this.initialCursorY\n\n      if (\n        clientX < 0 ||\n        clientX > window.innerWidth ||\n        clientY < 0 ||\n        clientY > window.innerHeight\n      ) {\n        this.isMoving = false\n      }\n      this.setNewPosition(deltaY)\n    },\n    onMoveEnd(): void {\n      this.isMoving = false\n    },\n    onTouchStart(event: PolarMoveEvent): void {\n      this.touchDevice = true\n      this.startMoving(event)\n    },\n    saveInitialCursorCoordinates(event: PolarMoveEvent): void {\n      this.initialCursorY =\n        event instanceof MouseEvent ? event.clientY : event.touches[0].clientY\n    },\n    savePreMoveHandleTop(): void {\n      this.preMoveHandleTop = (this.$el as HTMLDivElement).offsetTop\n    },\n    setNewPosition(deltaY: number): void {\n      ;(this.$el as HTMLDivElement).style.top = `${calculateTop(\n        Math.round(this.preMoveHandleTop + deltaY),\n        this.$root.$el.clientHeight,\n        this.maxHeight\n      )}px`\n    },\n    startMoving(event: PolarMoveEvent): void {\n      this.saveInitialCursorCoordinates(event)\n      this.savePreMoveHandleTop()\n      this.isMoving = true\n    },\n    updateMaxHeight() {\n      this.maxHeight = this.$el.clientHeight / this.$root.$el.clientHeight\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n#polar-move-handle {\n  position: static;\n  height: auto;\n  width: auto;\n  background-color: transparent;\n  cursor: ns-resize;\n  box-shadow: rgba(0, 0, 0, 0.3) 0 19px 38px, rgba(0, 0, 0, 0.22) 0 15px 12px;\n\n  &-is-moving * {\n    -webkit-touch-callout: none;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none !important;\n    user-select: none;\n  }\n\n  #polar-move-handle-grip-icon {\n    width: 100%;\n    color: var(--polar-primary);\n    background-color: var(--polar-primary-contrast);\n  }\n\n  .v-card__actions {\n    background-color: var(--polar-primary-contrast);\n\n    .v-btn {\n      color: var(--polar-primary);\n    }\n  }\n}\n</style>\n\n<style lang=\"scss\">\n#polar-move-handle {\n  .v-card {\n    box-shadow: none;\n  }\n}\n</style>\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n    define(function() {\n        return Hammer;\n    });\n} else if (typeof module != 'undefined' && module.exports) {\n    module.exports = Hammer;\n} else {\n    window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","import { MapConfig } from '@polar/lib-custom-types'\nimport { Feature } from 'ol'\nimport { InvisibleStyle, isVisible } from '@polar/lib-invisible-style'\nimport { getDefaultStyle } from './markers'\n\n// optimization to keep getDefaultStyle memoization intact\nconst defaultStyle = {}\n\nexport const addClusterStyle = (mapConfiguration: MapConfig): MapConfig => {\n  mapConfiguration.layerConf.forEach((layerConfiguration) => {\n    if (layerConfiguration.clusterDistance !== undefined) {\n      const style =\n        mapConfiguration.extendedMasterportalapiMarkers?.defaultStyle ||\n        defaultStyle\n      // @masterportal/masterportalapi hook\n      layerConfiguration.style = (feature: Feature) => {\n        const visibleFeaturesCount: number = (\n          feature.get('features') || []\n        ).filter(isVisible).length\n        if (visibleFeaturesCount === 0) {\n          return InvisibleStyle\n        }\n        return getDefaultStyle(style, visibleFeaturesCount > 1)\n      }\n    }\n  })\n  return mapConfiguration\n}\n","import {getValueFromObjectByPath} from \"../../lib/getValueFromObjectByPath\";\r\n\r\nclass StyleClass {\r\n    /**\r\n     * @param {ol/feature} feature Feature to be styled.\r\n     * @param {object} style styling properties to overwrite defaults\r\n     * @param {Boolean} isClustered Flag to show if feature is clustered.\r\n     * @constructor\r\n     */\r\n    constructor (feature, style, isClustered) {\r\n        this.feature = feature;\r\n        this.style = style;\r\n        this.isClustered = isClustered;\r\n        this.attributes = {};\r\n        this.legendInfos = [];\r\n        this.styleMultiGeomOnlyWithRule = false;\r\n        this.nullStyle = false;\r\n    }\r\n\r\n    /**\r\n     * setter for feature\r\n     * @param {ol/feature} value the feature to set\r\n     * @returns {void}\r\n     */\r\n    setFeature (value) {\r\n        this.feature = value;\r\n    }\r\n\r\n    /**\r\n     * Setter for style.\r\n     * @param {object} value the style to set\r\n     * @returns {void}\r\n     */\r\n    setStyle (value) {\r\n        this.style = value;\r\n    }\r\n\r\n    /**\r\n     * Getter for style.\r\n     * @returns {ol/style} - The style.\r\n     */\r\n    getStyle () {\r\n        return this.style;\r\n    }\r\n\r\n    /*\r\n     * setter for styles\r\n     * @param {object} styles styles\r\n     * @returns {void}\r\n     */\r\n    overwriteStyling (styles) {\r\n        // check if styles object is defined\r\n        // if not, use defaults instead\r\n        if (styles) {\r\n            this.nullStyle = false;\r\n            Object.keys(styles).forEach(element => {\r\n                const value = styles[element];\r\n\r\n                this.attributes[element] = value;\r\n            });\r\n        }\r\n        else {\r\n            this.nullStyle = true;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * setter for isClustered\r\n     * @param {Boolean} value isClustered\r\n     * @returns {void}\r\n     */\r\n    setIsClustered (value) {\r\n        this.isClustered = value;\r\n    }\r\n\r\n    /**\r\n     * returns the legend info\r\n     * @returns {object[]} legend objects\r\n     */\r\n    getLegendInfos () {\r\n        return this.legendInfos;\r\n    }\r\n\r\n    /**\r\n     * Returns an id created from geometryType and conditions using encodeURIComponent.\r\n     * @param   {string} geometryType features geometry type\r\n     * @param   {object} rule         a rule description\r\n     * @returns {string} id\r\n     */\r\n    createLegendId (geometryType, rule) {\r\n        const properties = rule?.conditions ? rule.conditions : null;\r\n\r\n        return encodeURIComponent(geometryType + JSON.stringify(properties));\r\n    }\r\n\r\n    /**\r\n     * Returns the label or null examining some attributes. Giving precedence to \"legendValue\". Otherwhile creates a string out of rules conditions.\r\n     * @param   {Object} rule conditions\r\n     * @param   {vectorStyle/style} styleObject a vector style needed in\r\n     * @returns {String | null} label for styleObject\r\n     */\r\n    createLegendLabel (rule, styleObject) {\r\n        if (styleObject?.attributes?.legendValue) {\r\n            return styleObject.attributes.legendValue.toString();\r\n        }\r\n        else if (rule?.conditions) {\r\n            let label = \"\";\r\n\r\n            if (rule.conditions?.properties) {\r\n                label = Object.values(rule.conditions.properties).join(\", \");\r\n            }\r\n\r\n            if (rule.conditions?.sequence\r\n                && Array.isArray(rule.conditions.sequence)\r\n                && rule.conditions.sequence.every(element => typeof element === \"number\")\r\n                && rule.conditions.sequence.length === 2\r\n                && rule.conditions.sequence[1] >= rule.conditions.sequence[0]) {\r\n                label = label + \" (\" + rule.conditions.sequence.join(\"-\") + \")\";\r\n            }\r\n\r\n            return label;\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Adds a unique legendInfo for each id to vectorStyle model to be used for legend descriptions.\r\n     * @param {string} geometryType features geometry type needed in legend model\r\n     * @param {vectorStyle/style} styleObject  a vector style needed in\r\n     * @param {Object} rule conditions\r\n     * @returns {void}\r\n     */\r\n    addLegendInfo (geometryType, styleObject, rule) {\r\n        const {legendInfos} = styleObject,\r\n            id = this.createLegendId(geometryType, rule),\r\n            hasLegendInfo = legendInfos.some(legend => {\r\n                return legend.id === id;\r\n            });\r\n\r\n        if (!hasLegendInfo) {\r\n            this.legendInfos.push({\r\n                \"id\": id,\r\n                \"geometryType\": geometryType,\r\n                \"styleObject\": styleObject.attributes.type === \"NOMINAL\" ? {attributes: styleObject.attributes, style: styleObject.style} : styleObject.attributes,\r\n                \"label\": this.createLegendLabel(rule, styleObject)\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Returns the value of the given field. Also considers that the field can be an object path.\r\n     * @param {Object} featureProperties Feature properties.\r\n     * @param {String} field Field to get value.\r\n     * @returns {*} - Value from given field.\r\n     */\r\n    prepareField (featureProperties, field) {\r\n        const isPath = field.startsWith(\"@\");\r\n        let value = field;\r\n\r\n        if (isPath) {\r\n            value = getValueFromObjectByPath(featureProperties, value);\r\n            if (typeof value === \"undefined\") {\r\n                value = \"undefined\";\r\n            }\r\n        }\r\n        else {\r\n            value = Object.prototype.hasOwnProperty.call(featureProperties, field) ? featureProperties[field] : \"undefined\";\r\n        }\r\n        return value;\r\n    }\r\n}\r\n\r\nexport default StyleClass;\r\n","import {Style, Icon} from \"ol/style.js\";\r\nimport {prepareValue, isObjectPath} from \"../../../lib/attributeMapper\";\r\n\r\n/**\r\n* Returns the rotation value and its corresponding value according to style.json.\r\n* @param {Object} rotation - The rotation object from the style.json\r\n* @param {Object} featureValues - The values object from the feature\r\n* @returns {number} - The rotation value in degrees or radiants.\r\n*/\r\nexport function getRotationValue (rotation, featureValues) {\r\n    if (typeof rotation === \"object\") {\r\n        const {value, isDegree} = rotation;\r\n\r\n        if (isObjectPath(value) && featureValues !== undefined) {\r\n            const rotationValueFromService = parseInt(prepareValue(featureValues, value), 10);\r\n\r\n            return isDegree ? rotationValueFromService * Math.PI / 180 : rotationValueFromService;\r\n        }\r\n        return isDegree ? parseInt(value, 10) * Math.PI / 180 : parseInt(value, 10);\r\n    }\r\n    return 0;\r\n}\r\n\r\n/**\r\n* Creates pointStyle as icon.\r\n* All features get same image.\r\n* @see {@link https://community.cesium.com/t/cors-and-billboard-image/3920/2} crossOrigin: \"anonymous\", is necessary for the 3D mode.\r\n* @param {Object} attributes - The attributes from the icon\r\n* @param {Object} feature - The feature\r\n* @param {Boolean} isClustered - true if features are clustered\r\n* @returns {ol/style} - The created style.\r\n*/\r\nexport function createIconStyle (attributes, feature, isClustered) {\r\n    const showCluster = isClustered && feature.get(\"features\")?.length > 1,\r\n        imageName = showCluster ? attributes.clusterImageName : attributes.imageName,\r\n        imageOffsetX = showCluster ? attributes.clusterImageOffsetY : attributes.imageOffsetX,\r\n        imageOffsetY = showCluster ? attributes.clusterImageOffsetX : attributes.imageOffsetY,\r\n        scale = showCluster ? attributes.clusterImageScale : attributes.imageScale,\r\n        wfsImgPath = attributes.imagePath;\r\n    let iconOptions = {},\r\n        src = imageName;\r\n\r\n    if (!imageName.startsWith(\"https:\") && !imageName.startsWith(\"<svg\")) {\r\n        src = wfsImgPath + imageName;\r\n    }\r\n    iconOptions = {\r\n        crossOrigin: \"anonymous\",\r\n        src: src.startsWith(\"<svg\") ? \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(src) : src,\r\n        scale,\r\n        anchor: [parseFloat(imageOffsetX), parseFloat(imageOffsetY)]\r\n    };\r\n\r\n    if (!showCluster) {\r\n        iconOptions.anchorXUnits = attributes.imageOffsetXUnit;\r\n        iconOptions.anchorYUnits = attributes.imageOffsetYUnit;\r\n        iconOptions.rotation = feature ? getRotationValue(attributes.rotation, feature.getProperties()) : 0;\r\n    }\r\n\r\n    return new Style({\r\n        image: new Icon(iconOptions)\r\n    });\r\n}\r\n\r\n/**\r\n * create Style for SVG\r\n * @param  {String} svgPath - contains the params to be draw\r\n * @see {@link https://community.cesium.com/t/cors-and-billboard-image/3920/2} crossOrigin: \"anonymous\", is necessary for the 3D mode.\r\n * @return {ol.Style} style\r\n */\r\nexport function createSVGStyle (svgPath) {\r\n    return new Style({\r\n        image: new Icon({\r\n            crossOrigin: \"anonymous\",\r\n            src: \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(svgPath)\r\n        })\r\n    });\r\n}\r\n","import {Circle as CircleStyle, Fill, Stroke, Style} from \"ol/style.js\";\r\nimport {returnColor} from \"../../lib/colorConvertions\";\r\n\r\n/**\r\n* Creates pointStyle as circle.\r\n* all features get same circle.\r\n* @param {Object} attributes - The attributes from the circle\r\n* @param {Object} feature - The feature\r\n* @param {Boolean} isClustered - true if features are clustered\r\n* @returns {ol/style} - The created style.\r\n*/\r\nexport function createCircleStyle (attributes, feature, isClustered) {\r\n    const showCluster = isClustered && feature.get(\"features\")?.length > 1,\r\n        radius = showCluster ? parseFloat(attributes.clusterCircleRadius, 10) : parseFloat(attributes.circleRadius, 10),\r\n        fillcolor = showCluster ? returnColor(attributes.clusterCircleFillColor, \"rgb\") : returnColor(attributes.circleFillColor, \"rgb\"),\r\n        strokecolor = showCluster ? returnColor(attributes.clusterCircleStrokeColor, \"rgb\") : returnColor(attributes.circleStrokeColor, \"rgb\"),\r\n        strokewidth = showCluster ? parseFloat(attributes.clusterCircleStrokeWidth, 10) : parseFloat(attributes.circleStrokeWidth, 10);\r\n\r\n    return new Style({\r\n        image: new CircleStyle({\r\n            radius: radius,\r\n            fill: new Fill({\r\n                color: fillcolor\r\n            }),\r\n            stroke: new Stroke({\r\n                color: strokecolor,\r\n                width: strokewidth\r\n            })\r\n        }),\r\n        zIndex: -1\r\n    });\r\n}","import {RegularShape, Fill, Stroke, Style} from \"ol/style.js\";\r\nimport {returnColor} from \"../../lib/colorConvertions\";\r\nimport {getRotationValue} from \"../point/stylePointIcon\";\r\n\r\n/**\r\n     * Creates RegularShape Style.\r\n     * all features get same shape styöe.\r\n     * @param {Object} attributes - The attributes from the circle\r\n     * @returns {ol/style} - The created RegularShape style.\r\n     */\r\nexport function createRegularShapeStyle (attributes) {\r\n    const radius = parseFloat(attributes.rsRadius, 10),\r\n        radius2 = parseFloat(attributes.rsRadius2, 10),\r\n        points = parseFloat(attributes.rsPoints, 10),\r\n        angle = parseFloat(attributes.rsAngle, 10),\r\n        rotation = getRotationValue(attributes.rotation),\r\n        scale = attributes.rsScale,\r\n        fillcolor = returnColor(attributes.rsFillColor, \"rgb\"),\r\n        strokecolor = returnColor(attributes.rsStrokeColor, \"rgb\"),\r\n        strokewidth = parseFloat(attributes.rsStrokeWidth, 10);\r\n\r\n    return new Style({\r\n        image: new RegularShape({\r\n            radius: radius,\r\n            radius2: radius2,\r\n            points: points,\r\n            scale: scale,\r\n            rotation: rotation,\r\n            angle: angle,\r\n            fill: new Fill({\r\n                color: fillcolor\r\n            }),\r\n            stroke: new Stroke({\r\n                color: strokecolor,\r\n                width: strokewidth\r\n            })\r\n        })\r\n    });\r\n}","import {createSVGStyle} from \"./stylePointIcon\";\r\nimport PointStyle from \"./stylePoint\";\r\nimport {returnColor} from \"../../lib/colorConvertions\";\r\n\r\n/**\r\n * Calculate size for intervalscaled circle bar\r\n * @param  {number} stateValue - value from feature\r\n * @param  {number} circleBarScalingFactor - factor is multiplied by the stateValue\r\n * @param  {number} circleBarLineStroke - stroke from bar\r\n * @param  {number} circleBarRadius - radius from point\r\n * @return {number} size - size of the section to be drawn\r\n */\r\nexport function calculateSizeIntervalCircleBar (stateValue, circleBarScalingFactor, circleBarLineStroke, circleBarRadius) {\r\n    let size = circleBarRadius * 2;\r\n\r\n    if (((stateValue * circleBarScalingFactor) + circleBarLineStroke) >= size) {\r\n        size = size + (stateValue * circleBarScalingFactor) + circleBarLineStroke;\r\n    }\r\n\r\n    return size;\r\n}\r\n\r\n/**\r\n * Calculate the length for the bar\r\n * @param  {number} size - size of the section to be drawn\r\n * @param  {number} circleBarRadius - radius from point\r\n * @param  {number} stateValue - value from feature\r\n * @param  {number} circleBarScalingFactor - factor is multiplied by the stateValue\r\n * @return {number} barLength\r\n */\r\nexport function calculateLengthIntervalCircleBar (size, circleBarRadius, stateValue, circleBarScalingFactor) {\r\n    let barLength;\r\n\r\n    if (stateValue >= 0) {\r\n        barLength = (size / 2) - circleBarRadius - (stateValue * circleBarScalingFactor);\r\n    }\r\n    else if (stateValue < 0) {\r\n        barLength = (size / 2) + circleBarRadius - (stateValue * circleBarScalingFactor);\r\n    }\r\n    else {\r\n        barLength = 0;\r\n    }\r\n\r\n    return barLength;\r\n}\r\n\r\n/**\r\n * Create SVG for intervalscaled circle bars\r\n * @param  {number} size - size of the section to be drawn\r\n * @param  {number} barLength - length from bar\r\n * @param  {String} circleBarCircleFillColor - fill color from circle\r\n * @param  {String} circleBarCircleStrokeColor - stroke color from circle\r\n * @param  {number} circleBarCircleStrokeWidth - stroke width from circle\r\n * @param  {String} circleBarLineStrokeColor - stroke color from bar\r\n * @param  {number} circleBarLineStroke - stroke from bar\r\n * @param  {number} circleBarRadius - radius from point\r\n * @return {String} svg\r\n */\r\n// eslint-disable-next-line max-params\r\nexport function createSvgIntervalCircleBar (size, barLength, circleBarCircleFillColor, circleBarCircleStrokeColor, circleBarCircleStrokeWidth, circleBarLineStrokeColor, circleBarLineStroke, circleBarRadius) {\r\n    let svg = \"<svg width='\" + size + \"'\" +\r\n                \" height='\" + size + \"'\" +\r\n                \" xmlns='http://www.w3.org/2000/svg'\" +\r\n                \" xmlns:xlink='http://www.w3.org/1999/xlink'>\";\r\n\r\n    // draw bar\r\n    svg = svg + \"<line x1='\" + (size / 2) + \"'\" +\r\n            \" y1='\" + (size / 2) + \"'\" +\r\n            \" x2='\" + (size / 2) + \"'\" +\r\n            \" y2='\" + barLength + \"'\" +\r\n            \" stroke='\" + circleBarLineStrokeColor + \"'\" +\r\n            \" stroke-width='\" + circleBarLineStroke + \"' />\";\r\n\r\n    // draw circle\r\n    svg = svg + \"<circle cx='\" + (size / 2) + \"'\" +\r\n            \" cy='\" + (size / 2) + \"'\" +\r\n            \" r='\" + circleBarRadius + \"'\" +\r\n            \" stroke='\" + circleBarCircleStrokeColor + \"'\" +\r\n            \" stroke-width='\" + circleBarCircleStrokeWidth + \"'\" +\r\n            \" fill='\" + circleBarCircleFillColor + \"' />\";\r\n    svg = svg + \"</svg>\";\r\n\r\n    return svg;\r\n}\r\n\r\n/**\r\n * Create interval circle bar\r\n * @param  {ol.Feature} feature - contains features to draw\r\n * @param  {ol.Feature} attributes - The attributes of the feature\r\n * @return {String} svg\r\n */\r\nexport function createIntervalCircleBar (feature, attributes) {\r\n    const circleBarScalingFactor = parseFloat(attributes.circleBarScalingFactor),\r\n        circleBarRadius = parseFloat(attributes.circleBarRadius, 10),\r\n        circleBarLineStroke = parseFloat(attributes.circleBarLineStroke, 10),\r\n        circleBarCircleFillColor = returnColor(attributes.circleBarCircleFillColor, \"hex\"),\r\n        circleBarCircleStrokeColor = returnColor(attributes.circleBarCircleStrokeColor, \"hex\"),\r\n        circleBarCircleStrokeWidth = attributes.circleBarCircleStrokeWidth,\r\n        circleBarLineStrokeColor = returnColor(attributes.circleBarLineStrokeColor, \"hex\"),\r\n        featureProperties = feature.getProperties(),\r\n        preparedField = PointStyle.prototype.prepareField(featureProperties, attributes.scalingAttribute),\r\n        scalingAttribute = preparedField === \"undefined\" ? undefined : preparedField,\r\n        stateValue = scalingAttribute !== undefined && scalingAttribute.indexOf(\" \") !== -1 ? scalingAttribute.split(\" \")[0] : scalingAttribute,\r\n        size = calculateSizeIntervalCircleBar(stateValue, circleBarScalingFactor, circleBarLineStroke, circleBarRadius),\r\n        barLength = calculateLengthIntervalCircleBar(size, circleBarRadius, stateValue, circleBarScalingFactor);\r\n\r\n    PointStyle.prototype.setSize(size);\r\n\r\n    // create svg\r\n    return createSvgIntervalCircleBar(size, barLength, circleBarCircleFillColor, circleBarCircleStrokeColor, circleBarCircleStrokeWidth, circleBarLineStrokeColor, circleBarLineStroke, circleBarRadius);\r\n}\r\n\r\n/**\r\n * create interval scaled advanced style for pointFeatures\r\n * @param  {ol.Feature} feature - The feature\r\n * @param  {ol.Feature} attributes - The attributes of the feature\r\n * @return {ol.Style} style\r\n */\r\nexport function createIntervalPointStyle (feature, attributes) {\r\n    const styleScalingShape = attributes.scalingShape.toUpperCase(),\r\n        svgPath = styleScalingShape === \"CIRCLE_BAR\" ? createIntervalCircleBar(feature, attributes) : \"\";\r\n\r\n    return createSVGStyle(svgPath);\r\n}","import {createIconStyle, createSVGStyle} from \"./stylePointIcon\";\r\nimport PointStyle from \"./stylePoint\";\r\nimport {returnColor} from \"../../lib/colorConvertions\";\r\n\r\n/**\r\n * Create SVG for nominalscaled circle segments\r\n * @param  {number} size - size of the section to be drawn\r\n * @param  {number} circleSegmentsRadius - radius from circlesegment\r\n * @param  {String} circleSegmentsBackgroundColor - backgroundcolor from circlesegment\r\n * @param  {number} circleSegmentsStrokeWidth - strokewidth from circlesegment\r\n * @param  {String} circleSegmentsFillOpacity - opacity from circlesegment\r\n * @return {String} svg\r\n */\r\nexport function createSvgNominalCircleSegments (size, circleSegmentsRadius, circleSegmentsBackgroundColor, circleSegmentsStrokeWidth, circleSegmentsFillOpacity) {\r\n    const halfSize = size / 2;\r\n    let svg = \"<svg width='\" + size + \"'\" +\r\n            \" height='\" + size + \"'\" +\r\n            \" xmlns='http://www.w3.org/2000/svg'\" +\r\n            \" xmlns:xlink='http://www.w3.org/1999/xlink'>\";\r\n\r\n    svg = svg + \"<circle cx='\" + halfSize + \"'\" +\r\n        \" cy='\" + halfSize + \"'\" +\r\n        \" r='\" + circleSegmentsRadius + \"'\" +\r\n        \" stroke='\" + circleSegmentsBackgroundColor + \"'\" +\r\n        \" stroke-width='\" + circleSegmentsStrokeWidth + \"'\" +\r\n        \" fill='\" + circleSegmentsBackgroundColor + \"'\" +\r\n        \" fill-opacity='\" + circleSegmentsFillOpacity + \"'/>\";\r\n\r\n    return svg;\r\n}\r\n\r\n/**\r\n * Fills the object with values\r\n * @param {object} scalingAttributesAsObject - object with possible attributes as keys and values = 0\r\n * @param {string} scalingAttribute - actual states from feature\r\n * @return {Object} scalingObject - contains the states\r\n */\r\nexport function fillScalingAttributes (scalingAttributesAsObject, scalingAttribute) {\r\n    const scalingObject = scalingAttributesAsObject === undefined || Object.keys(scalingAttributesAsObject).length === 0\r\n        ? {empty: 0} : scalingAttributesAsObject;\r\n    let states = scalingAttribute;\r\n\r\n    if (states === undefined) {\r\n        return scalingObject;\r\n    }\r\n\r\n    states = states.split(\" | \");\r\n\r\n    states.forEach(function (state) {\r\n        if (Object.prototype.hasOwnProperty.call(scalingObject, state)) {\r\n            scalingObject[state] = scalingObject[state] + 1;\r\n        }\r\n        else {\r\n            scalingObject.empty = scalingObject.empty + 1;\r\n        }\r\n    });\r\n\r\n    return scalingObject;\r\n}\r\n\r\n/**\r\n * Convert scalingAttributes to object\r\n * @param {object} scalingValues - contains attribute with color\r\n * @return {object} scalingAttribute with value 0\r\n */\r\nexport function getScalingAttributesAsObject (scalingValues) {\r\n    const obj = {};\r\n    let key;\r\n\r\n    if (scalingValues !== undefined) {\r\n        for (key in scalingValues) {\r\n            obj[key] = 0;\r\n        }\r\n    }\r\n\r\n    obj.empty = 0;\r\n\r\n    return obj;\r\n}\r\n\r\n/**\r\n * Create circle segments\r\n * @param  {number} startAngelDegree - start with circle segment\r\n * @param  {number} endAngelDegree - finish with circle segment\r\n * @param  {number} circleRadius - radius from circle\r\n * @param  {number} size - size of the window to be draw\r\n * @param  {number} gap - gap between segments\r\n * @return {String} all circle segments\r\n */\r\nexport function calculateCircleSegment (startAngelDegree, endAngelDegree, circleRadius, size, gap) {\r\n    const rad = Math.PI / 180,\r\n        xy = size / 2,\r\n        isCircle = startAngelDegree === 0 && endAngelDegree === 360,\r\n        endAngelDegreeActual = isCircle ? endAngelDegree / 2 : endAngelDegree,\r\n        gapActual = isCircle ? 0 : gap,\r\n        // convert angle from degree to radiant\r\n        startAngleRad = (startAngelDegree + (gapActual / 2)) * rad,\r\n        endAngleRad = (endAngelDegreeActual - (gapActual / 2)) * rad,\r\n        xStart = xy + (Math.cos(startAngleRad) * circleRadius),\r\n        yStart = xy - (Math.sin(startAngleRad) * circleRadius),\r\n        xEnd = xy + (Math.cos(endAngleRad) * circleRadius),\r\n        yEnd = xy - (Math.sin(endAngleRad) * circleRadius);\r\n\r\n    if (isCircle) {\r\n        return [\r\n            \"M\", xStart, yStart,\r\n            \"A\", circleRadius, circleRadius, 0, 0, 0, xEnd, yEnd,\r\n            \"A\", circleRadius, circleRadius, 0, 0, 0, xStart, yStart\r\n        ].join(\" \");\r\n    }\r\n\r\n    return [\r\n        \"M\", xStart, yStart,\r\n        \"A\", circleRadius, circleRadius, 0, 0, 0, xEnd, yEnd\r\n    ].join(\" \");\r\n}\r\n\r\n/**\r\n * Extends the SVG with given tags\r\n * @param  {String} svg - String with svg tags\r\n * @param  {number} circleSegmentsStrokeWidth strokewidth from circlesegment\r\n * @param  {String} strokeColor - strokecolor from circlesegment\r\n * @param  {String} d - circle segment\r\n * @return {String} extended svg\r\n */\r\nexport function extendsSvgNominalCircleSegments (svg, circleSegmentsStrokeWidth, strokeColor, d) {\r\n    return svg + \"<path\" +\r\n            \" fill='none'\" +\r\n            \" stroke-width='\" + circleSegmentsStrokeWidth + \"'\" +\r\n            \" stroke='\" + strokeColor + \"'\" +\r\n            \" d='\" + d + \"'/>\";\r\n}\r\n\r\n/**\r\n * Create a svg with colored circle segments by nominal scaling\r\n * @param  {ol.Feature} feature - feature to be drawn\r\n * @param {Object} attributes - The attributes from the nominal circle segment\r\n * @return {String} svg with colored circle segments\r\n */\r\nexport function createNominalCircleSegments (feature, attributes) {\r\n    const circleSegmentsRadius = parseFloat(attributes.circleSegmentsRadius, 10),\r\n        circleSegmentsStrokeWidth = parseFloat(attributes.circleSegmentsStrokeWidth, 10),\r\n        circleSegBCArray = attributes.circleSegmentsBackgroundColor,\r\n        circleSegmentsFillOpacity = Array.isArray(circleSegBCArray) && circleSegBCArray[circleSegBCArray.length - 1],\r\n        circleSegmentsBackgroundColor = returnColor(attributes.circleSegmentsBackgroundColor, \"hex\"),\r\n        scalingValueDefaultColor = returnColor(attributes.scalingValueDefaultColor, \"hex\"),\r\n        scalingValues = attributes.scalingValues,\r\n        scalingAttributesAsObject = getScalingAttributesAsObject(scalingValues),\r\n        scalingAttribute = feature.get(attributes.scalingAttribute),\r\n        scalingObject = fillScalingAttributes(scalingAttributesAsObject, scalingAttribute),\r\n        totalSegments = Object.values(scalingObject).reduce(function (memo, num) {\r\n            return memo + num;\r\n        }, 0),\r\n        degreeSegment = totalSegments >= 0 ? 360 / totalSegments : 360,\r\n        gap = parseFloat(attributes.circleSegmentsGap, 10);\r\n    let size = 10,\r\n        startAngelDegree = 0,\r\n        endAngelDegree = degreeSegment,\r\n        svg,\r\n        d,\r\n        strokeColor,\r\n        i,\r\n        key,\r\n        value;\r\n\r\n    // calculate size\r\n    if (((circleSegmentsRadius + circleSegmentsStrokeWidth) * 2) >= size) {\r\n        size = size + ((circleSegmentsRadius + circleSegmentsStrokeWidth) * 2);\r\n    }\r\n\r\n    // is required for the display in the Internet Explorer,\r\n    // because in addition to the SVG and the size must be specified\r\n    PointStyle.prototype.setSize(size);\r\n\r\n    svg = createSvgNominalCircleSegments(size, circleSegmentsRadius, circleSegmentsBackgroundColor, circleSegmentsStrokeWidth, circleSegmentsFillOpacity);\r\n\r\n    for (key in scalingObject) {\r\n        value = scalingObject[key];\r\n        if (scalingValues !== undefined && (key !== \"empty\")) {\r\n            strokeColor = returnColor(scalingValues[key], \"hex\");\r\n        }\r\n        else {\r\n            strokeColor = scalingValueDefaultColor;\r\n        }\r\n\r\n        // create segments\r\n        for (i = 0; i < value; i++) {\r\n\r\n            d = calculateCircleSegment(startAngelDegree, endAngelDegree, circleSegmentsRadius, size, gap);\r\n\r\n            svg = extendsSvgNominalCircleSegments(svg, circleSegmentsStrokeWidth, strokeColor, d);\r\n\r\n            // set degree for next circular segment\r\n            startAngelDegree = startAngelDegree + degreeSegment;\r\n            endAngelDegree = endAngelDegree + degreeSegment;\r\n        }\r\n    }\r\n\r\n    svg = svg + \"</svg>\";\r\n\r\n    return svg;\r\n}\r\n\r\n/**\r\n * create nominal scaled advanced style for pointFeatures\r\n * @param {Object} attributes - The attributes from the nominal point\r\n * @param {Object} feature - the feature to be drawn\r\n * @param {Object} defaultImageName - The image name from the default style\r\n * @return {ol.Style} style\r\n */\r\nexport function createNominalPointStyle (attributes, feature, defaultImageName) {\r\n    const workingFeature = Array.isArray(feature.get(\"features\")) ? feature.get(\"features\")[0] : feature,\r\n        styleScalingShape = attributes.scalingShape.toUpperCase(),\r\n        imageName = attributes.imageName;\r\n\r\n    let svgPath,\r\n        style,\r\n        imageStyle;\r\n\r\n    if (styleScalingShape === \"CIRCLESEGMENTS\") {\r\n        svgPath = createNominalCircleSegments(workingFeature, attributes);\r\n        style = createSVGStyle(svgPath, 5);\r\n        style.type = \"CIRCLESEGMENTS\";\r\n        style.scalingAttribute = workingFeature.get(attributes.scalingAttribute);\r\n    }\r\n\r\n    // create style from svg and image\r\n    if (imageName !== defaultImageName) {\r\n        imageStyle = createIconStyle(attributes, feature);\r\n        imageStyle.type = \"imageStyle\";\r\n        style = [style, imageStyle];\r\n    }\r\n\r\n    return style;\r\n}\r\n","import StyleClass from \"../style\";\r\nimport {createIconStyle} from \"./stylePointIcon\";\r\nimport {createCircleStyle} from \"./stylePointCircle\";\r\nimport {createRegularShapeStyle} from \"./stylePointRegularShape\";\r\nimport {createIntervalPointStyle} from \"./stylePointInterval\";\r\nimport {createNominalPointStyle} from \"./stylePointNominal\";\r\nimport {Style} from \"ol/style.js\";\r\nimport defaultStyle from \"../defaultStyles\";\r\n\r\nclass PointStyle extends StyleClass {\r\n    /**\r\n     * @description Class to create ol.style.Style\r\n     * @constructor\r\n     * @class PointStyle\r\n     * @extends StyleClass\r\n     * @memberof VectorStyle.Style\r\n     */\r\n    constructor () {\r\n        super();\r\n        this.attributes = {...defaultStyle.point};\r\n    }\r\n\r\n    /**\r\n     * This function initializes the Linestring Object by setting or overwriting some attributes.\r\n     * @param {ol/feature} feature Feature to be styled.\r\n     * @param {object} styles styling properties to overwrite defaults\r\n     * @param {Boolean} isClustered Flag to show if feature is clustered.\r\n     * @param {Boolean} wfsImgPathFromConfig image Path of the wfs.\r\n     * @returns {void}\r\n     */\r\n    initialize (feature, styles, isClustered, wfsImgPathFromConfig) {\r\n        if (wfsImgPathFromConfig !== undefined) {\r\n            this.setImagePath(wfsImgPathFromConfig);\r\n        }\r\n        else {\r\n            console.warn(\"wfsImgPath at Config.js is not defined\");\r\n        }\r\n        this.setFeature(feature);\r\n        this.setIsClustered(isClustered);\r\n        this.overwriteStyling(styles);\r\n        this.setStyle(this.createStyle());\r\n    }\r\n\r\n    /**\r\n     * This function returns a style for each feature.\r\n     * @returns {ol/style} - The created style.\r\n     */\r\n    createStyle () {\r\n        if (this.nullStyle) {\r\n            return null;\r\n        }\r\n\r\n        const isClustered = this.isClustered;\r\n        let type = this.attributes.type.toLowerCase();\r\n\r\n        if (isClustered && this.feature.get(\"features\")?.length > 1) {\r\n            type = this.attributes.clusterType.toLowerCase();\r\n        }\r\n\r\n        if (type === \"icon\") {\r\n            return createIconStyle(this.attributes, this.feature, isClustered);\r\n        }\r\n        else if (type === \"circle\") {\r\n            return createCircleStyle(this.attributes, this.feature, isClustered);\r\n        }\r\n        else if (type === \"nominal\") {\r\n            return isClustered ? createIconStyle(this.attributes, this.feature, isClustered) : createNominalPointStyle(this.attributes, this.feature, defaultStyle.point.imageName);\r\n        }\r\n        else if (type === \"interval\") {\r\n            return createIntervalPointStyle(this.feature, this.attributes);\r\n        }\r\n        else if (type === \"regularshape\") {\r\n            return createRegularShapeStyle(this.attributes);\r\n        }\r\n\r\n        return new Style();\r\n    }\r\n\r\n    /**\r\n     * Setter for circleSegmentsBackgroundColor\r\n     * @param {Number[]} value Color\r\n     * @returns {void}\r\n     */\r\n    setCircleSegmentsBackgroundColor (value) {\r\n        this.attributes.circleSegmentsBackgroundColor = value;\r\n    }\r\n\r\n    /**\r\n     * Setter for size.\r\n     * @param {*} value Size\r\n     * @returns {void}\r\n     */\r\n    setSize (value) {\r\n        this.size = value;\r\n    }\r\n\r\n    /**\r\n     * Getter for size.\r\n     * @param {*} size Size\r\n     * @returns {void}\r\n     */\r\n    getSize () {\r\n        return this.size;\r\n    }\r\n\r\n    /**\r\n     * Setter for imagePath.\r\n     * @param {String} value Image path.\r\n     * @returns {void}\r\n     */\r\n    setImagePath (value) {\r\n        this.attributes.imagePath = value;\r\n    }\r\n}\r\n\r\nexport default PointStyle;\r\n","import StyleClass from \"./style\";\r\nimport {Text, Fill, Stroke} from \"ol/style.js\";\r\nimport {mapAttributes} from \"../../lib/attributeMapper\";\r\nimport {prepareValue, isObjectPath} from \"../../lib/attributeMapper\";\r\nimport defaultStyle from \"./defaultStyles\";\r\n\r\nclass TextStyle extends StyleClass {\r\n    /**\r\n     * @description Class to create ol.style/Text\r\n     * @class TextStyle\r\n     * @constructor\r\n     * @extends StyleClass\r\n     * @memberof VectorStyle.Style\r\n     */\r\n    constructor () {\r\n        super();\r\n        this.attributes = {...defaultStyle.text};\r\n    }\r\n\r\n    /**\r\n    * This function initializes the styleText Object by setting or overwriting some attributes.\r\n    * @param {ol/feature} feature Feature to be styled.\r\n    * @param {object} styles styling properties to overwrite defaults\r\n    * @param {Boolean} isClustered Flag to show if feature is clustered.\r\n    * @returns {void}\r\n    */\r\n    initialize (feature, styles, isClustered) {\r\n        this.setFeature(feature);\r\n        this.setIsClustered(isClustered);\r\n        this.overwriteStyling(styles);\r\n        this.setStyle(this.createStyle());\r\n    }\r\n\r\n    /**\r\n    * This function returns a style for each feature.\r\n    * @returns {ol/style} - The created style.\r\n    */\r\n    createStyle () {\r\n        if (this.nullStyle) {\r\n            return null;\r\n        }\r\n\r\n        const isClustered = this.isClustered,\r\n            feature = this.feature,\r\n            labelField = this.attributes.labelField;\r\n\r\n        if (isClustered && feature.get(\"features\")?.length > 1 && this.attributes.clusterTextType !== \"none\") {\r\n            return this.createClusteredTextStyle();\r\n        }\r\n        else if (labelField) {\r\n            return this.createLabeledTextStyle();\r\n        }\r\n\r\n        return new Text();\r\n    }\r\n\r\n    /**\r\n     * Returns the rotation value and its corresponding value according to style.json.\r\n     * @param {Object} rotation - The rotation object from the style.json\r\n     * @param {Object} featureValues - The values object from the feature\r\n     * @returns {number} - The rotation value in degrees or radiants.\r\n     */\r\n    getRotationValue (rotation, featureValues) {\r\n        if (typeof rotation === \"object\") {\r\n            const {value, isDegree} = rotation;\r\n\r\n            if (isObjectPath(value) && featureValues !== undefined) {\r\n                const rotationValueFromService = parseInt(prepareValue(featureValues, value), 10);\r\n\r\n                return isDegree ? rotationValueFromService * Math.PI / 180 : rotationValueFromService;\r\n            }\r\n            return isDegree ? parseInt(value, 10) * Math.PI / 180 : parseInt(value, 10);\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    /**\r\n    * Creates text style for clustered features. The text attribute is set according to \"clusterTextType\".\r\n    * \"clusterTextType\" === \"counter\" sets the number of clustered features.\r\n    * \"clusterTextType\" === \"text\" sets the value of \"clusterText\" or \"undefined\".\r\n    * @returns {ol/style/Text} - The created style.\r\n    */\r\n    createClusteredTextStyle () {\r\n        const feature = this.feature;\r\n        let text;\r\n\r\n        if (this.attributes.clusterTextType === \"counter\") {\r\n            text = feature.get(\"features\").length.toString();\r\n        }\r\n        else if (this.attributes.clusterTextType === \"text\" && typeof this.attributes.clusterText === \"string\") {\r\n            text = this.attributes.clusterText;\r\n        }\r\n        else {\r\n            text = \"undefined\";\r\n        }\r\n\r\n        return new Text({\r\n            text: text,\r\n            textAlign: this.attributes.clusterTextAlign,\r\n            offsetX: this.attributes.clusterTextOffsetX,\r\n            offsetY: this.attributes.clusterTextOffsetY,\r\n            font: this.attributes.clusterTextFont,\r\n            scale: this.attributes.clusterTextScale,\r\n            fill: new Fill({\r\n                color: this.attributes.clusterTextFillColor\r\n            }),\r\n            stroke: new Stroke({\r\n                color: this.attributes.clusterTextStrokeColor,\r\n                width: this.attributes.clusterTextStrokeWidth\r\n            }),\r\n            rotation: this.getRotationValue(this.attributes.rotation, feature.getProperties())\r\n        });\r\n    }\r\n\r\n    /**\r\n    * Creates text style for simple features. The text attribute is set using \"labelField\".\r\n    * @returns {ol/style/Text} - The created style.\r\n    */\r\n    createLabeledTextStyle () {\r\n        const feature = this.feature,\r\n            featureProperties = feature.getProperties(),\r\n            textSuffix = this.attributes.textSuffix;\r\n        let text = mapAttributes(featureProperties, this.attributes.labelField, false);\r\n\r\n        if (textSuffix !== \"\") {\r\n            text = text + \" \" + textSuffix;\r\n        }\r\n        return new Text({\r\n            text: text.toString(),\r\n            textAlign: this.attributes.textAlign,\r\n            offsetX: this.attributes.textOffsetX,\r\n            offsetY: this.attributes.textOffsetY,\r\n            font: this.attributes.textFont,\r\n            scale: this.attributes.textScale,\r\n            fill: new Fill({\r\n                color: this.attributes.textFillColor\r\n            }),\r\n            stroke: new Stroke({\r\n                color: this.attributes.textStrokeColor,\r\n                width: this.attributes.textStrokeWidth\r\n            }),\r\n            rotation: this.getRotationValue(this.attributes.rotation, featureProperties)\r\n        });\r\n    }\r\n}\r\n\r\nexport default TextStyle;\r\n","// pattern library – default draw instructions as described in style.json.md\r\nconst diagonal = {\r\n        draw: [\r\n            {type: \"line\", parameters: [[1, -0.5], [-0.5, 1]]},\r\n            {type: \"line\", parameters: [[1.5, 0], [0, 1.5]]}\r\n        ]\r\n    },\r\n    zigLine = {\r\n        draw: [\r\n            {type: \"line\", parameters: [[0, -0.25], [0.75, 0.5], [0, 1.25]]}\r\n        ]\r\n    },\r\n    namedHatches = {\r\n        diagonal,\r\n        \"zig-line\": zigLine,\r\n        \"diagonal-right\": {...diagonal, rotate: 90},\r\n        \"zig-line-horizontal\": {...zigLine, rotate: 90},\r\n        rectangle: {\r\n            draw: [\r\n                {type: \"rect\", parameters: [\r\n                    [0.125, 0.125, 0.25, 0.25],\r\n                    [0.625, 0.625, 0.25, 0.25]\r\n                ]}\r\n            ]\r\n        },\r\n        triangle: {\r\n            draw: [\r\n                {type: \"line\", parameters: [\r\n                    [0.25, 0], [0.5, 0.5], [0, 0.5], [0.25, 0]\r\n                ]},\r\n                {type: \"line\", parameters: [\r\n                    [0.75, 0.5], [1, 1], [0.5, 1], [0.75, 0.5]\r\n                ]}\r\n            ]\r\n        },\r\n        diamond: {\r\n            draw: [\r\n                {type: \"line\", parameters: [\r\n                    [0.25, 0], [0.5, 0.25], [0.25, 0.5], [0, 0.25], [0.25, 0]\r\n                ]},\r\n                {type: \"line\", parameters: [\r\n                    [0.75, 0.5], [1, 0.75], [0.75, 1], [0.5, 0.75], [0.75, 0.5]\r\n                ]}\r\n            ]\r\n        },\r\n        circle: {\r\n            draw: [\r\n                {type: \"arc\", parameters: [\r\n                    0.25, 0.25,\r\n                    ({size, lineWidth}) => (size - (2 * lineWidth)) / 4\r\n                ]},\r\n                {type: \"arc\", parameters: [\r\n                    0.75, 0.75,\r\n                    ({size, lineWidth}) => (size - (2 * lineWidth)) / 4\r\n                ]}\r\n            ]\r\n        }\r\n    };\r\n\r\n/**\r\n * Determines the absolute position of a relative segment coordinate.\r\n * @param {Number} size side length of context\r\n * @returns {Function} gets absolute position in context (x or y)\r\n */\r\nfunction makeCalculateAbsolutePosition (size) {\r\n    return relativePosition => relativePosition * size;\r\n}\r\n\r\n/**\r\n * Draws a singular draw instruction to context, i.e., a single line, rect, or arc.\r\n * @param {CanvasRenderingContext2D} context draw context\r\n * @param {Number} size side length of context\r\n * @param {Object} segment draw segment, i.e. a singular draw instruction\r\n * @param {('rect'|'line'|'arc')} segment.type what kind of segment it is\r\n * @param {Array} segment.parameters type-specific parameters, see style.json.md\r\n * @returns {void} side-effect on context\r\n */\r\nfunction drawSegment (context, size, {type, parameters}) {\r\n    const calculateAbsolutePosition = makeCalculateAbsolutePosition(size);\r\n\r\n    context.beginPath();\r\n\r\n    if (type === \"rect\") {\r\n        parameters.forEach(rect => context.rect(...rect.map(calculateAbsolutePosition)));\r\n    }\r\n    else if (type === \"line\") {\r\n        const [start, ...waypoints] = parameters;\r\n\r\n        context.moveTo(...start.map(calculateAbsolutePosition));\r\n        waypoints.forEach(waypoint => context.lineTo(...waypoint.map(calculateAbsolutePosition)));\r\n    }\r\n    else if (type === \"arc\") {\r\n        const [\r\n                x, y, getRadiusOrRadius, startAngle, endAngle, counterclockwise\r\n            ] = parameters,\r\n            radius = typeof getRadiusOrRadius === \"function\"\r\n                ? getRadiusOrRadius({size, lineWidth: context.lineWidth})\r\n                : getRadiusOrRadius;\r\n\r\n        context.arc(makeCalculateAbsolutePosition(size)(x),\r\n            makeCalculateAbsolutePosition(size)(y),\r\n            radius,\r\n            // default to full circle\r\n            startAngle || 0,\r\n            endAngle || 2 * Math.PI,\r\n            counterclockwise || false);\r\n    }\r\n    else {\r\n        console.error(`polygonStyleHatches: Unknown segment type \"${type}\". Skipping segment.`);\r\n\r\n        return;\r\n    }\r\n\r\n    context.stroke();\r\n}\r\n\r\n\r\n/**\r\n * Rotates a given context of side length \"size\" by \"degrees\" around its center.\r\n * Normally, rotation would happen based on the top left corner.\r\n * @param {CanvasRenderingContext2D} context draw context\r\n * @param {Number} size side length of context\r\n * @param {Number} [degrees=90] degrees to rotate context by\r\n * @returns {void} side-effect on context\r\n */\r\nfunction rotateContextCenter (context, size, degrees = 90) {\r\n    const halfSize = 0.5 * size;\r\n\r\n    context.translate(halfSize, halfSize);\r\n    context.rotate(degrees * (Math.PI / 180));\r\n    context.translate(-halfSize, -halfSize);\r\n}\r\n\r\n/**\r\n * Draws a hatch pattern to the context element.\r\n * @param {CanvasRenderingContext2D} context draw context\r\n * @param {Number} size side length of context\r\n * @param {((\"diagonal\"|\"zig-line\"|\"diagonal-right\"|\"zig-line-horizontal\"|\"rectangle\"|\"triangle\"|\"diamond\"|\"circle\")|Object)} pattern Name of pattern library object, or draw instructions as described in style.json.md\r\n * @returns {void} side-effect on context\r\n */\r\nexport function drawHatch (context, size, pattern) {\r\n    const hatchDefinition = typeof pattern === \"string\"\r\n        ? namedHatches[pattern]\r\n        : pattern;\r\n\r\n    if (hatchDefinition) {\r\n        const {draw, rotate} = hatchDefinition;\r\n\r\n        if (draw) {\r\n            draw.forEach(segment => drawSegment(context, size, segment));\r\n        }\r\n\r\n        if (rotate) {\r\n            rotateContextCenter(context, size, rotate);\r\n        }\r\n    }\r\n    else {\r\n        console.error(`polygonStyleHatches: Unknown polygon style \"${pattern}\". Skipping hatching.`);\r\n    }\r\n}","import StyleClass from \"../style\";\r\nimport {Style, Fill, Stroke} from \"ol/style.js\";\r\nimport defaultStyle from \"../defaultStyles\";\r\nimport {drawHatch} from \"./polygonStyleHatch\";\r\nimport {returnColor} from \"../../lib/colorConvertions\";\r\n\r\nclass PolygonStyle extends StyleClass {\r\n    /**\r\n     * @description Class to create ol.style.Style\r\n     * @constructor\r\n     * @class PolygonStyle\r\n     * @extends StyleClass\r\n     * @memberof VectorStyle.Style\r\n     */\r\n    constructor () {\r\n        super();\r\n        this.attributes = {...defaultStyle.polygon};\r\n    }\r\n\r\n    /**\r\n     * This function initializes the stylePolygon Object by setting or overwriting some attributes.\r\n     * @param {ol/feature} feature Feature to be styled.\r\n     * @param {object} styles styling properties to overwrite defaults\r\n     * @param {Boolean} isClustered Flag to show if feature is clustered.\r\n     * @returns {void}\r\n     */\r\n    initialize (feature, styles, isClustered) {\r\n        this.setFeature(feature);\r\n        this.setIsClustered(isClustered);\r\n        this.overwriteStyling(styles);\r\n        this.setStyle(this.createStyle());\r\n    }\r\n\r\n    /**\r\n     * This function returns a style for each feature.\r\n     * @returns {ol/style} - The created style.\r\n     */\r\n    createStyle () {\r\n        if (this.nullStyle) {\r\n            return null;\r\n        }\r\n\r\n        const polygonFillColor = this.attributes.polygonFillColor,\r\n            polygonFillHatch = this.attributes.polygonFillHatch;\r\n\r\n        return new Style({\r\n            stroke: new Stroke({\r\n                lineCap: this.attributes.polygonStrokeCap,\r\n                lineJoin: this.attributes.polygonStrokeJoin,\r\n                lineDash: this.attributes.polygonStrokeDash,\r\n                lineDashOffset: this.attributes.polygonStrokeDashOffset,\r\n                miterLimit: this.attributes.polygonStrokeMiterLimit,\r\n                color: this.attributes.polygonStrokeColor,\r\n                width: this.attributes.polygonStrokeWidth\r\n            }),\r\n            fill: new Fill({color:\r\n                polygonFillHatch\r\n                    ? this.getPolygonFillHatch(polygonFillHatch)\r\n                        .getContext(\"2d\")\r\n                        .fillStyle\r\n                    : polygonFillColor\r\n            })\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Generates a polygon fill pattern.\r\n     * @param {object} params parameters as defined in style.json.md#Polygon.polygonFillHatch\r\n     * @returns {HTMLCanvasElement} contains polygon fill pattern\r\n     */\r\n    getPolygonFillHatch ({\r\n        pattern = \"diagonal\",\r\n        size = 30,\r\n        lineWidth = 10,\r\n        backgroundColor = [0, 0, 0, 1],\r\n        patternColor = [255, 255, 255, 1]\r\n    }) {\r\n        const canvas = document.createElement(\"canvas\"),\r\n            context = canvas.getContext(\"2d\");\r\n\r\n        canvas.width = size;\r\n        canvas.height = size;\r\n\r\n        context.fillStyle = `rgba(${backgroundColor.join(\",\")})`;\r\n        context.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n        context.lineWidth = lineWidth;\r\n        context.strokeStyle = `rgba(${patternColor.join(\",\")})`;\r\n\r\n        drawHatch(context, size, pattern);\r\n\r\n        context.fillStyle = context.createPattern(canvas, \"repeat\");\r\n\r\n        return canvas;\r\n    }\r\n\r\n    getPolygonFillHatchLegendDataUrl (style) {\r\n        const originalCanvas = this.getPolygonFillHatch(style.polygonFillHatch),\r\n            strokeColor = returnColor(style.polygonStrokeColor, \"hex\"),\r\n            strokeWidth = parseInt(style.polygonStrokeWidth, 10),\r\n            strokeOpacity = style.polygonStrokeColor[3].toString() || 0,\r\n            legendCanvas = document.createElement(\"canvas\"),\r\n            legendContext = legendCanvas.getContext(\"2d\"),\r\n            halfStroke = strokeWidth / 2,\r\n            doubleStroke = strokeWidth * 2;\r\n\r\n        legendCanvas.width = originalCanvas.width + doubleStroke;\r\n        legendCanvas.height = originalCanvas.height + doubleStroke;\r\n\r\n        legendContext.drawImage(originalCanvas,\r\n            strokeWidth,\r\n            strokeWidth);\r\n\r\n        legendContext.lineCap = \"round\";\r\n        legendContext.lineJoin = \"round\";\r\n        legendContext.strokeStyle = strokeColor;\r\n        legendContext.lineWidth = strokeWidth;\r\n        legendContext.globalAlpha = strokeOpacity;\r\n\r\n        legendContext.strokeRect(halfStroke,\r\n            halfStroke,\r\n            legendCanvas.width - strokeWidth,\r\n            legendCanvas.height - strokeWidth);\r\n\r\n        return legendCanvas.toDataURL();\r\n    }\r\n}\r\n\r\nexport default PolygonStyle;\r\n","import StyleClass from \"./style\";\r\nimport {Style, Stroke} from \"ol/style.js\";\r\nimport defaultStyle from \"./defaultStyles\";\r\n\r\nclass LineStringStyle extends StyleClass {\r\n    /**\r\n     * @description Class to create ol.style.Style\r\n     * @constructor\r\n     * @class LineStringStyle\r\n     * @extends StyleClass\r\n     * @memberof VectorStyle.Style\r\n     */\r\n    constructor () {\r\n        super();\r\n        this.attributes = {...defaultStyle.line};\r\n    }\r\n\r\n    /**\r\n     * This function initializes the Linestring Object by setting or overwriting some attributes.\r\n     * @param {ol/feature} feature Feature to be styled.\r\n     * @param {object} styles styling properties to overwrite defaults\r\n     * @param {Boolean} isClustered Flag to show if feature is clustered.\r\n     * @returns {void}\r\n     */\r\n    initialize (feature, styles, isClustered) {\r\n        this.setFeature(feature);\r\n        this.setIsClustered(isClustered);\r\n        this.overwriteStyling(styles);\r\n        this.setStyle(this.createStyle());\r\n    }\r\n\r\n    /**\r\n     * This function returns a style for each feature.\r\n     * @returns {ol/style/Style} - The created style.\r\n     */\r\n    createStyle () {\r\n        if (this.nullStyle) {\r\n            return null;\r\n        }\r\n\r\n        return new Style({\r\n            stroke: new Stroke({\r\n                lineCap: this.attributes.lineStrokeCap,\r\n                lineJoin: this.attributes.lineStrokeJoin,\r\n                lineDash: this.attributes.lineStrokeDash,\r\n                lineDashOffset: this.attributes.lineStrokeDashOffset,\r\n                miterLimit: this.attributes.lineStrokeMiterLimit,\r\n                color: this.attributes.lineStrokeColor,\r\n                width: this.attributes.lineStrokeWidth\r\n            })\r\n        });\r\n    }\r\n}\r\n\r\nexport default LineStringStyle;\r\n","import StyleClass from \"./style\";\r\nimport {Circle, Fill, Stroke, Style} from \"ol/style.js\";\r\nimport defaultStyle from \"./defaultStyles\";\r\n\r\nclass CircleStyle extends StyleClass {\r\n    /**\r\n     * @description Class to create ol.style.Style\r\n     * @constructor\r\n     * @class CircleStyle\r\n     * @extends StyleClass\r\n     * @memberof VectorStyle.Style\r\n     */\r\n    constructor () {\r\n        super();\r\n        this.attributes = {...defaultStyle.circle};\r\n    }\r\n\r\n    /**\r\n     * This function initializes the Linestring Object by setting or overwriting some attributes.\r\n     * @param {ol/feature} feature Feature to be styled.\r\n     * @param {object} styles styling properties to overwrite defaults\r\n     * @param {Boolean} isClustered Flag to show if feature is clustered.\r\n     * @returns {void}\r\n     */\r\n    initialize (feature, styles, isClustered) {\r\n        this.setFeature(feature);\r\n        this.setIsClustered(isClustered);\r\n        this.overwriteStyling(styles);\r\n        this.setStyle(this.createStyle());\r\n    }\r\n\r\n    /**\r\n     * This function returns a style for each feature.\r\n     * @returns {ol/style/Style} - The created style.\r\n     */\r\n    createStyle () {\r\n        if (this.nullStyle) {\r\n            return null;\r\n        }\r\n\r\n        const fill = new Fill({\r\n                color: this.attributes.circleFillColor\r\n            }),\r\n            stroke = new Stroke({\r\n                color: this.attributes.circleStrokeColor,\r\n                width: this.attributes.circleStrokeWidth\r\n            });\r\n\r\n        return new Style({\r\n            image: new Circle({\r\n                fill: fill,\r\n                stroke: stroke,\r\n                radius: 0\r\n            }),\r\n            fill: fill,\r\n            stroke: stroke\r\n        });\r\n    }\r\n}\r\n\r\nexport default CircleStyle;\r\n","import StyleClass from \"./style\";\r\nimport defaultStyle from \"./defaultStyles\";\r\nclass CesiumStyle extends StyleClass {\r\n    /**\r\n     * @description Class to create ol.style.Style\r\n     * @constructor\r\n     * @class CesiumStyleMode\r\n     * @extends StyleClass\r\n     * @memberof VectorStyle.Style\r\n     */\r\n    constructor () {\r\n        super();\r\n        this.attributes = {...defaultStyle.point};\r\n        this.conditions = [];\r\n    }\r\n\r\n    /**\r\n     * This function initializes the Linestring Object by setting or overwriting some attributes.\r\n     * @param {ol/feature} rule styling rule of the feature.\r\n     * @returns {void}\r\n     */\r\n    initialize (rule) {\r\n        this.overwriteStyling(rule.style);\r\n        this.setConditions(rule.conditions);\r\n        this.setStyle(this.createStyle());\r\n    }\r\n\r\n    /**\r\n     * This function returns a style for each feature.\r\n     * @returns {ol/style} - The created style.\r\n     */\r\n    createStyle () {\r\n        return this.createCondition(this.attributes.conditions, this.style);\r\n    }\r\n\r\n    /**\r\n     * Creates the cesium tile style conditions.\r\n     * @param {Object} conditions Condition.\r\n     * @param {Object} style Style.\r\n     * @returns {*} - Condition for cesium 3d tile style.\r\n     */\r\n    createCondition (conditions, style) {\r\n        const color = style?.color || this.attributes.color,\r\n            condition = [];\r\n        let ruleCondition;\r\n\r\n        if (conditions && Object.keys(conditions).length > 0) {\r\n            Object.keys(conditions).forEach(key => {\r\n                const value = conditions[key];\r\n\r\n                condition.push([key, value]);\r\n            });\r\n            ruleCondition = [this.createCesiumConditionForRule(condition), color];\r\n        }\r\n        else {\r\n            ruleCondition = [\"true\", color];\r\n        }\r\n        return ruleCondition;\r\n    }\r\n\r\n    /**\r\n     * Creates a cesium condition.\r\n     * @param {*} conditions Conditions.\r\n     * @returns {String[]} - Cesium condition for rule.\r\n     */\r\n    createCesiumConditionForRule (conditions) {\r\n        let cesiumCondition = [],\r\n            singleCondition = \"\";\r\n\r\n        conditions.forEach(condition => {\r\n            const cesiumKey = \"${\" + condition[0] + \"}\";\r\n            let value = condition[1],\r\n                minValue,\r\n                maxValue;\r\n\r\n            if (Array.isArray(value)) {\r\n                minValue = value[0];\r\n                maxValue = value[1];\r\n                singleCondition = \"(\" + cesiumKey + \" > \" + minValue + \" && \" + cesiumKey + \" <= \" + maxValue + \")\";\r\n            }\r\n            else {\r\n                if (typeof value === \"string\") {\r\n                    value = \"'\" + value + \"'\";\r\n                }\r\n                singleCondition = \"(\" + cesiumKey + \" === \" + value + \")\";\r\n            }\r\n\r\n            cesiumCondition.push(singleCondition);\r\n        });\r\n\r\n        cesiumCondition = \"(\" + cesiumCondition.join(\" && \") + \")\";\r\n\r\n        return cesiumCondition;\r\n    }\r\n\r\n    /**\r\n     * Setter for attribute \"conditions\"\r\n     * @param {*} conditions conditions\r\n     * @returns {void}\r\n     */\r\n    setConditions (conditions) {\r\n        this.attributes.conditions = conditions;\r\n    }\r\n}\r\n\r\nexport default CesiumStyle;\r\n","import {Style} from \"ol/style.js\";\r\nimport PointStyle from \"./styles/point/stylePoint\";\r\nimport TextStyle from \"./styles/styleText\";\r\nimport PolygonStyle from \"./styles/polygon/stylePolygon\";\r\nimport LineStringStyle from \"./styles/styleLine\";\r\nimport CircleStyle from \"./styles/styleCircle\";\r\nimport CesiumStyle from \"./styles/styleCesium\";\r\nimport {getRuleForIndex, getRulesForFeature} from \"./lib/getRuleForIndex\";\r\n\r\nconst legendsOfAllStyles = [];\r\nlet legendInformationLength = 0;\r\n\r\n/**\r\n * Returns true if feature contains some kind of MultiGeometry\r\n * @param   {string}  geometryType     the geometry type to check\r\n * @returns {Boolean} is geometrytype a multiGeometry\r\n */\r\nfunction isMultiGeometry (geometryType) {\r\n    return geometryType === \"MultiPoint\" || geometryType === \"MultiLineString\" || geometryType === \"MultiPolygon\" || geometryType === \"GeometryCollection\" || geometryType === \"cesium\";\r\n}\r\n\r\n/**\r\n * Returns the style for simple (non-multi) geometry types\r\n * @param   {string}  geometryType GeometryType\r\n * @param   {ol/feature}  feature     the ol/feature to style\r\n * @param   {object}  rule       styling rules to check.\r\n * @param   {Boolean} isClustered  Flag to show if feature is clustered.\r\n * @param   {String} wfsImgPathFromConfig path to wfsImg from Config\r\n * @returns {ol/style/Style}    style is always returned\r\n */\r\nfunction getSimpleGeometryStyle (geometryType, feature, rule, isClustered, wfsImgPathFromConfig) {\r\n    const style = rule?.style,\r\n        legendValue = style ? style.legendValue : null;\r\n    let styleObject,\r\n        styleObjectForLegend = null;\r\n\r\n    if (feature) {\r\n        feature.legendValue = legendValue ? legendValue : null;\r\n    }\r\n\r\n    if (geometryType === \"Point\") {\r\n        styleObject = new PointStyle(feature, style, isClustered);\r\n        if (isClustered) {\r\n            styleObjectForLegend = new PointStyle(feature, style, false);\r\n        }\r\n    }\r\n    else if (geometryType === \"LineString\") {\r\n        styleObject = new LineStringStyle(feature, style, isClustered);\r\n        if (isClustered) {\r\n            styleObjectForLegend = new LineStringStyle(feature, style, false);\r\n        }\r\n    }\r\n    else if (geometryType === \"Polygon\") {\r\n        styleObject = new PolygonStyle(feature, style, isClustered);\r\n        if (isClustered) {\r\n            styleObjectForLegend = new PolygonStyle(feature, style, false);\r\n        }\r\n    }\r\n    else if (geometryType === \"cesium\") {\r\n        styleObject = new CesiumStyle(rule);\r\n        styleObject.initialize(rule);\r\n        styleObject.addLegendInfo(\"cesium\", styleObject, rule);\r\n        styleObject.legendValue = legendValue;\r\n        return styleObject;\r\n    }\r\n    else if (geometryType === \"Circle\") {\r\n        styleObject = new CircleStyle(feature, style, isClustered);\r\n        if (isClustered) {\r\n            styleObjectForLegend = new CircleStyle(feature, style, false);\r\n        }\r\n    }\r\n    else if (geometryType === \"LinearRing\") {\r\n        console.warn(\"Geometry type not implemented: \" + geometryType + \" default style ist used for feature \" + feature);\r\n        return new Style();\r\n    }\r\n    else {\r\n        console.warn(\"Geometry type not implemented: \" + geometryType + \" default style ist used for feature \" + feature);\r\n        return new Style();\r\n    }\r\n\r\n    if (styleObjectForLegend !== null) {\r\n        styleObjectForLegend.initialize(feature, style, false, wfsImgPathFromConfig);\r\n        styleObjectForLegend.legendValue = legendValue;\r\n    }\r\n    styleObject.initialize(feature, style, isClustered, wfsImgPathFromConfig);\r\n    styleObject.addLegendInfo(geometryType, styleObjectForLegend === null ? styleObject : styleObjectForLegend, rule);\r\n    styleObject.legendValue = legendValue;\r\n    return styleObject;\r\n}\r\n\r\n/**\r\n * Returns an array of simple geometry styles.\r\n * @param   {string}  geometryType GeometryType\r\n * @param   {ol/feature}  feature     the ol/feature to style\r\n * @param   {object[]}  rules       styling rules to check.\r\n * @param   {Boolean} isClustered  Flag to show if feature is clustered.\r\n * @param   {String} wfsImgPathFromConfig path to wfsImg from Config\r\n * @returns {ol/style/Style[]}    style array of simple geometry styles is always returned\r\n */\r\nfunction getMultiGeometryStyle (geometryType, feature, rules, isClustered, wfsImgPathFromConfig) {\r\n    const olStyle = [];\r\n    let geometries = [];\r\n\r\n    if (typeof feature === \"object\") {\r\n        if (geometryType === \"MultiPoint\") {\r\n            geometries = feature.getGeometry().getPoints();\r\n        }\r\n        else if (geometryType === \"MultiLineString\") {\r\n            geometries = feature.getGeometry().getLineStrings();\r\n        }\r\n        else if (geometryType === \"MultiPolygon\") {\r\n            geometries = feature.getGeometry().getPolygons();\r\n        }\r\n        else if (geometryType === \"GeometryCollection\") {\r\n            geometries = feature.getGeometry().getGeometries();\r\n        }\r\n\r\n        geometries.forEach((geometry, index) => {\r\n            const geometryTypeSimpleGeom = geometry.getType(),\r\n                rule = rules ? getRuleForIndex(rules, index) : undefined,\r\n                simpleStyle = getSimpleGeometryStyle(geometryTypeSimpleGeom, feature, rule, isClustered, wfsImgPathFromConfig);\r\n\r\n            // For simplicity reasons we do not support multi encasulated multi geometries but ignore them.\r\n            if (isMultiGeometry(geometryTypeSimpleGeom)) {\r\n                console.warn(\"Multi encapsulated multiGeometries are not supported.\");\r\n            }\r\n            else if (!simpleStyle.styleMultiGeomOnlyWithRule || rule) {\r\n                simpleStyle.getStyle()?.setGeometry(geometry);\r\n                olStyle.push(simpleStyle);\r\n            }\r\n        });\r\n    }\r\n    else if (geometryType === \"cesium\") {\r\n        rules.forEach(rule => {\r\n            const simpleStyle = getSimpleGeometryStyle(geometryType, feature, rule, isClustered, wfsImgPathFromConfig);\r\n\r\n            olStyle.push(simpleStyle);\r\n        });\r\n    }\r\n    else {\r\n        const simpleStyle = getSimpleGeometryStyle(geometryType, feature, rules, isClustered, wfsImgPathFromConfig);\r\n\r\n        simpleStyle.getStyle()?.setGeometry(geometryType);\r\n        olStyle.push(simpleStyle);\r\n    }\r\n    return olStyle;\r\n}\r\n\r\n/**\r\n * Returns the style for the geometry object\r\n * @param   {ol/feature}  feature     the ol/feature to style\r\n * @param   {object[]}  rules       styling rules to check. Array can be empty.\r\n * @param   {Boolean} isClustered Flag to show if feature is clustered.\r\n * @param   {String} wfsImgPathFromConfig path to wfsImg from Config\r\n * @returns {ol/style/Style}    style is always returned\r\n */\r\nfunction getGeometryStyle (feature, rules, isClustered, wfsImgPathFromConfig) {\r\n    const geometryType = feature ? feature.getGeometry().getType() : \"cesium\";\r\n\r\n    // For simple geometries the first styling rule is used.\r\n    // That algorithm implements an OR statement between multiple valid conditions giving precedence to its order in the style.json.\r\n    if (!isMultiGeometry(geometryType) && Object.prototype.hasOwnProperty.call(rules, 0) && Object.prototype.hasOwnProperty.call(rules[0], \"style\")) {\r\n        return getSimpleGeometryStyle(geometryType, feature, rules[0], isClustered, wfsImgPathFromConfig);\r\n    }\r\n    // MultiGeometries must be checked against all rules because there might be a \"sequence\" in the condition.\r\n    else if (isMultiGeometry(geometryType) && rules.length > 0 && rules.every(element => element?.style)) {\r\n        return getMultiGeometryStyle(geometryType, feature, rules, isClustered, wfsImgPathFromConfig);\r\n    }\r\n\r\n    // fall back to default styles as configured in geomType specific styles, if no rule is matched\r\n    console.warn(\"No valid styling rule found. Falling back to defaults\");\r\n    return isMultiGeometry(geometryType)\r\n        ? getMultiGeometryStyle(geometryType, feature, undefined, isClustered, wfsImgPathFromConfig)\r\n        : getSimpleGeometryStyle(geometryType, feature, undefined, isClustered, wfsImgPathFromConfig);\r\n}\r\n\r\n/**\r\n * Returns the style to label the object\r\n * @param   {ol/feature}  feature     the ol/feature to style\r\n * @param   {object}  style       styling rule from style.json\r\n * @param   {Boolean} isClustered Flag to show if feature is clustered.\r\n * @returns {ol/style/Text}    style is always returned\r\n */\r\nfunction getLabelStyle (feature, style, isClustered) {\r\n    const styleObject = new TextStyle(feature, style, isClustered);\r\n\r\n    styleObject.initialize(feature, style, isClustered);\r\n    return styleObject.getStyle();\r\n}\r\n\r\n/**\r\n * Captures the legend from a feature and pushes it to an array of all legends.\r\n * @param   {string}  styleId styleId from a given feature\r\n * @param   {object}  legendInformation legendInformation from a given feature\r\n * @returns {void}\r\n */\r\nfunction captureLegendFromFeature (styleId, legendInformation) {\r\n    let legend = legendsOfAllStyles.find(element => element.id === styleId);\r\n\r\n    if (!legend) {\r\n        legend = {id: styleId, legendInformation: []};\r\n        legendsOfAllStyles.push(legend);\r\n    }\r\n    else if (styleId === \"default\" && legend.legendInformation !== legendInformation) {\r\n        legend.legendInformation = legendInformation;\r\n        legendInformationLength = legendInformation.length;\r\n    }\r\n    else if (!legend.legendInformation.find(element => element.label === legendInformation[0].label)) {\r\n        legend.legendInformation.push(legendInformation[0]);\r\n\r\n        const event = new CustomEvent(\"legendCaptured\");\r\n\r\n        event.id = legend.id;\r\n        if (this) {\r\n            this.dispatchEvent(event);\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n     * Creates the style for the feature regarding the styleObject and sets style at feature.\r\n     * @param   {String}  styleObject     id of the style\r\n     * @param   {ol/feature}  feature     the feature to style\r\n     * @param   {Boolean} isClustered is feature clustered\r\n     * @param   {String} wfsImgPathFromConfig path to wfsImg from Config\r\n     * @returns {ol/style/Style} style used in layer model\r\n     */\r\nfunction createStyle (styleObject, feature, isClustered, wfsImgPathFromConfig) {\r\n    const rules = getRulesForFeature(styleObject, feature),\r\n        // Takes first rule in array for labeling so that is giving precedence to the order in the style.json\r\n        style = Array.isArray(rules) && rules.length > 0 ? rules[0].style : null,\r\n        hasLabelField = style?.labelField,\r\n        geometryStyle = getGeometryStyle(feature, rules, isClustered, wfsImgPathFromConfig),\r\n        legendInformation = Array.isArray(geometryStyle) ? geometryStyle[0].legendInfos : geometryStyle.legendInfos;\r\n    let styleObjectGeometry = null;\r\n\r\n    if (Array.isArray(geometryStyle)) {\r\n        styleObjectGeometry = [];\r\n        geometryStyle.forEach(styleItem => {\r\n            if (styleItem.getStyle() !== null) {\r\n                styleObjectGeometry.push(styleItem.getStyle());\r\n            }\r\n        });\r\n    }\r\n    else {\r\n        styleObjectGeometry = geometryStyle.getStyle();\r\n    }\r\n\r\n    if (Array.isArray(geometryStyle) && geometryStyle.length > 1) {\r\n        for (const i in geometryStyle) {\r\n            captureLegendFromFeature(styleObject.styleId, geometryStyle[i].legendInfos);\r\n        }\r\n    }\r\n    else {\r\n        captureLegendFromFeature(styleObject.styleId, legendInformation);\r\n    }\r\n    // label style is optional and depends on some fields\r\n    if (styleObjectGeometry !== null && (isClustered || hasLabelField)) {\r\n        if (Array.isArray(styleObjectGeometry)) {\r\n            styleObjectGeometry[0].setText(getLabelStyle(feature, style, isClustered));\r\n        }\r\n        else {\r\n            styleObjectGeometry.setText(getLabelStyle(feature, style, isClustered));\r\n        }\r\n    }\r\n    if (feature?.getGeometry().getType() === \"Point\" || feature?.getGeometry().getType() === \"MultiPoint\") {\r\n        feature.setStyle(styleObjectGeometry);\r\n    }\r\n    return styleObjectGeometry;\r\n}\r\n\r\nasync function returnLegendByStyleId (styleId) {\r\n    return new Promise(function (resolve) {\r\n        const legend = legendsOfAllStyles.find(element => element.id === styleId);\r\n\r\n        if (legend && (styleId.id !== \"default\" || legend.legendInformation.length === legendInformationLength)) {\r\n            resolve(legend);\r\n        }\r\n\r\n        this.addEventListener(\"legendCaptured\", event => {\r\n            if (event.id === styleId && event.id !== \"default\") {\r\n                resolve(legendsOfAllStyles.find(element => element.id === event.id));\r\n            }\r\n            else if (legend && legend.legendInformation.length === legendInformationLength) {\r\n                resolve(legendsOfAllStyles.find(element => element.id === event.id));\r\n            }\r\n        }, false);\r\n    });\r\n}\r\n\r\nexport default {\r\n    isMultiGeometry,\r\n    getSimpleGeometryStyle,\r\n    getMultiGeometryStyle,\r\n    getGeometryStyle,\r\n    getLabelStyle,\r\n    createStyle,\r\n    returnLegendByStyleId\r\n};\r\n","import { MapConfig } from '@polar/lib-custom-types'\nimport noop from '@repositoryname/noop'\nimport styleList from '@masterportal/masterportalapi/src/vectorStyle/styleList'\nimport createStyle from '@masterportal/masterportalapi/src/vectorStyle/createStyle'\nimport VectorLayer from 'ol/layer/Vector'\nimport { Feature, Map } from 'ol'\nimport { FeatureLike } from 'ol/Feature'\n\nexport async function setupStyling(mapConfiguration: MapConfig, map: Map) {\n  if (mapConfiguration.featureStyles) {\n    await styleList.initializeStyleList(\n      // Masterportal specific field not required by POLAR\n      {},\n      { styleConf: mapConfiguration.featureStyles },\n      mapConfiguration.layers.map((layer) => {\n        const layerConfig = mapConfiguration.layerConf.find(\n          (l) => l.id === layer.id\n        )\n        if (layerConfig) {\n          return {\n            ...layer,\n            // Required by @masterportal/masterportalapi\n            typ: layerConfig.typ,\n          }\n        }\n        return layer\n      }),\n      // Masterportal specific field not required by POLAR\n      [],\n      // Callback currently yields no relevant benefit\n      noop\n    )\n    map.getLayers().forEach((layer) => {\n      if (!layer.get('styleId')) {\n        return\n      }\n      const styleObject = styleList.returnStyleObject(layer.get('styleId'))\n      if (styleObject) {\n        ;(layer as VectorLayer).setStyle((feature: Feature | FeatureLike) =>\n          createStyle.createStyle(\n            styleObject,\n            feature,\n            feature.get('features') !== undefined,\n            // NOTE: This field may be implemented in the future to be able to style points with graphics\n            ''\n          )\n        )\n      }\n    })\n  }\n}\n","import { MapConfig } from '@polar/lib-custom-types'\n\n/**\n * NOTE This is a workaround addressing the recent change in `minZoom` logic in\n * the `@masterportal/masterportalapi`. Previously, the `minZoom` would be used\n * to decide for a resolution, which was inclusive, but now `minZoom` is\n * forwarded, which is exclusive.\n *\n * To avoid breaking changes, we're simply mapping the `minZoom` before\n * forwarding the configuration to the value usage intended in POLAR; that is,\n * inclusive.\n */\nexport const mapZoomOffset = (mapConfiguration: MapConfig): MapConfig => {\n  if (mapConfiguration.layers) {\n    return {\n      ...mapConfiguration,\n      layers: mapConfiguration.layers.map((entry) => {\n        if (typeof entry.minZoom !== 'undefined') {\n          return { ...entry, minZoom: entry.minZoom - 1 }\n        }\n        return entry\n      }),\n    }\n  }\n  return mapConfiguration\n}\n","let layout = null\n\nexport const setLayout = (l) => {\n  layout = l\n}\n\nexport const getLayout = () => layout\n","<template>\n  <component :is=\"layout\" class=\"map-ui\" />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\nimport { getLayout } from '../utils/layout'\n\nexport default Vue.extend({\n  data: (): { resizeObserver: null | ResizeObserver } => ({\n    resizeObserver: null,\n  }),\n  computed: {\n    ...mapGetters(['components']),\n    layout() {\n      return getLayout() // not reactive\n    },\n  },\n  mounted() {\n    this.resizeObserver = new ResizeObserver(this.updateClientDimensions)\n    this.resizeObserver.observe(this.$root.$el)\n    this.updateClientDimensions()\n  },\n  beforeDestroy() {\n    if (this.resizeObserver instanceof ResizeObserver) {\n      this.resizeObserver.unobserve(this.$root.$el)\n    }\n  },\n  methods: {\n    ...mapMutations(['setClientWidth', 'setClientHeight']),\n    updateClientDimensions() {\n      this.setClientWidth(this.$root.$el.clientWidth)\n      this.setClientHeight(this.$root.$el.clientHeight)\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.map-ui {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  pointer-events: none;\n}\n\n.map-ui > .nine-layout {\n  max-width: 100%;\n}\n</style>\n","<template>\n  <v-app class=\"polar-wrapper\" :lang=\"lang\">\n    <transition name=\"fade\">\n      <div\n        v-if=\"!hasWindowSize && (noControlOnZoom || oneFingerPan)\"\n        class=\"polar-map-overlay\"\n      >\n        <template v-if=\"noControlOnZoom\">\n          {{ $t(overlayLocale) }}\n        </template>\n        <template v-else-if=\"oneFingerPan\">\n          {{ $t('overlay.oneFingerPan') }}\n        </template>\n      </div>\n    </transition>\n    <div\n      ref=\"polar-map-container\"\n      class=\"polar-map\"\n      tabindex=\"0\"\n      role=\"region\"\n      :aria-label=\"$t('canvas.label')\"\n    ></div>\n    <MapUi></MapUi>\n    <MoveHandle\n      v-if=\"renderMoveHandle\"\n      ref=\"moveHandleElement\"\n      :key=\"moveHandleKey\"\n      :close-label=\"moveHandle.closeLabel\"\n      :close-function=\"moveHandle.closeFunction\"\n    >\n      <template v-if=\"moveHandleActionButton\" #actionButton>\n        <component\n          :is=\"moveHandleActionButton.component\"\n          v-bind=\"moveHandleActionButton.props\"\n        />\n      </template>\n      <template v-if=\"moveHandle.closeIcon\" #closeIcon>\n        {{ moveHandle.closeIcon }}\n      </template>\n      <template #default>\n        <component :is=\"moveHandle.component\" v-bind=\"moveHandle.props || {}\" />\n      </template>\n    </MoveHandle>\n  </v-app>\n</template>\n\n<script lang=\"ts\">\nimport Vue, { PropType } from 'vue'\nimport { mapActions, mapGetters, mapMutations } from 'vuex'\nimport api from '@masterportal/masterportalapi/src/maps/api'\nimport { MoveHandle } from '@polar/components'\nimport Hammer from 'hammerjs'\nimport i18next from 'i18next'\nimport { defaults } from 'ol/interaction'\nimport {\n  Locale,\n  MapConfig,\n  MoveHandleProperties,\n} from '@polar/lib-custom-types'\nimport { SMALL_DISPLAY_HEIGHT, SMALL_DISPLAY_WIDTH } from '../utils/constants'\nimport { addClusterStyle } from '../utils/addClusterStyle'\nimport { setupStyling } from '../utils/setupStyling'\nimport { mapZoomOffset } from '../utils/mapZoomOffset'\nimport MapUi from './MapUi.vue'\n// NOTE: OpenLayers styles need to be imported as the map resides in the shadow DOM\nimport 'ol/ol.css'\n\nconst isMacOS = navigator.userAgent.indexOf('Mac') !== -1\n\nexport default Vue.extend({\n  components: {\n    MapUi,\n    MoveHandle,\n  },\n  props: {\n    mapConfiguration: {\n      type: Object as PropType<MapConfig>,\n      required: true,\n    },\n  },\n  data: (): {\n    lang: 'de' | 'en'\n    moveHandleKey: number\n    noControlOnZoom: boolean\n    noControlOnZoomTimeout: number | undefined\n    oneFingerPan: boolean\n    oneFingerPanTimeout: number | undefined\n  } => ({\n    lang: 'de',\n    moveHandleKey: 0,\n    noControlOnZoom: false,\n    noControlOnZoomTimeout: undefined,\n    oneFingerPan: false,\n    oneFingerPanTimeout: undefined,\n  }),\n  computed: {\n    ...mapGetters([\n      'hasSmallDisplay',\n      'hasSmallWidth',\n      'hasWindowSize',\n      'map',\n      'moveHandle',\n      'moveHandleActionButton',\n    ]),\n    overlayLocale() {\n      return `overlay.${isMacOS ? 'noCommandOnZoom' : 'noControlOnZoom'}`\n    },\n    renderMoveHandle() {\n      return (\n        this.moveHandle !== null && this.hasWindowSize && this.hasSmallWidth\n      )\n    },\n  },\n  watch: {\n    // NOTE: Updates can happen if a user resizes the window or the fullscreen plugin is used.\n    //       Added as a watcher to trigger the update at the correct time.\n    hasWindowSize(newVal) {\n      this.updateDragAndZoomInteractions()\n      this.updateListeners(newVal)\n    },\n    moveHandle(_: MoveHandleProperties, oldHandle: MoveHandleProperties) {\n      // Makes sure the previous plugin is properly closed if the \"normal\" way of closing isn't used\n      if (\n        oldHandle &&\n        typeof oldHandle.closeFunction === 'function' &&\n        (this.moveHandle === null ||\n          this.moveHandle.plugin !== oldHandle.plugin)\n      ) {\n        oldHandle.closeFunction(false)\n      }\n      // Make sure the element is properly updated.\n      this.moveHandleKey += 1\n    },\n  },\n  mounted() {\n    const map = api.map.createMap(\n      {\n        target: this.$refs['polar-map-container'],\n        ...mapZoomOffset(\n          this.mapConfiguration.extendedMasterportalapiMarkers\n            ? addClusterStyle(this.mapConfiguration)\n            : this.mapConfiguration\n        ),\n      },\n      '2D',\n      {\n        mapParams: {\n          interactions: defaults({\n            altShiftDragRotate: false,\n            pinchRotate: false,\n            dragPan: false,\n            mouseWheelZoom: false,\n          }),\n        },\n      }\n    )\n    setupStyling(this.mapConfiguration, map)\n    this.setMap(map)\n    this.updateDragAndZoomInteractions()\n    if (this.mapConfiguration.extendedMasterportalapiMarkers) {\n      this.useExtendedMasterportalapiMarkers(\n        this.mapConfiguration.extendedMasterportalapiMarkers\n      )\n    }\n    this.updateListeners(this.hasWindowSize)\n    this.mapConfiguration.locales?.forEach?.((locale: Locale) =>\n      i18next.addResourceBundle(locale.type, 'common', locale.resources, true)\n    )\n    i18next.on('languageChanged', (lang) => (this.lang = lang))\n    if (this.mapConfiguration.checkServiceAvailability) {\n      this.checkServiceAvailability()\n    }\n    addEventListener('resize', this.updateHasSmallDisplay)\n    this.updateHasSmallDisplay()\n  },\n  beforeDestroy() {\n    removeEventListener('resize', this.updateHasSmallDisplay)\n    const mapContainer = this.$refs['polar-map-container']\n    if (!this.hasWindowSize && mapContainer) {\n      ;(mapContainer as HTMLDivElement).removeEventListener(\n        'wheel',\n        this.wheelEffect\n      )\n    }\n  },\n  methods: {\n    ...mapMutations(['setHasSmallDisplay', 'setMap']),\n    ...mapActions([\n      'checkServiceAvailability',\n      'updateDragAndZoomInteractions',\n      'useExtendedMasterportalapiMarkers',\n    ]),\n    updateHasSmallDisplay() {\n      this.setHasSmallDisplay(\n        window.innerHeight <= SMALL_DISPLAY_HEIGHT ||\n          window.innerWidth <= SMALL_DISPLAY_WIDTH\n      )\n    },\n    updateListeners(hasWindowSize: boolean) {\n      const mapContainer = this.$refs['polar-map-container']\n      if (!hasWindowSize && mapContainer) {\n        ;(mapContainer as HTMLDivElement).addEventListener(\n          'wheel',\n          this.wheelEffect\n        )\n\n        if (this.hasSmallDisplay) {\n          new Hammer(mapContainer).on('pan', (e) => {\n            if (\n              e.maxPointers === 1 &&\n              !this.map\n                .getInteractions()\n                .getArray()\n                .some((interaction) =>\n                  interaction.get('_isPolarDragLikeInteraction')\n                )\n            ) {\n              this.oneFingerPan = true\n              setTimeout(() => (this.oneFingerPan = false), 2000)\n            }\n          })\n        }\n      }\n    },\n    wheelEffect(event: WheelEvent) {\n      clearTimeout(this.noControlOnZoomTimeout)\n      this.noControlOnZoom = isMacOS ? !event.metaKey : !event.ctrlKey\n      this.noControlOnZoomTimeout = setTimeout(\n        () => (this.noControlOnZoom = false),\n        2000\n      )\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-wrapper {\n  position: absolute;\n  height: 100%;\n  width: 100%;\n  .polar-map {\n    width: 100%;\n    height: 100%;\n  }\n  .polar-map-overlay {\n    position: absolute;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    width: inherit;\n    height: inherit;\n    z-index: 42;\n    font-size: 22px;\n    text-align: center;\n    color: white;\n    background-color: rgba(0, 0, 0, 0.45);\n    pointer-events: none;\n  }\n  .fade-enter-active,\n  .fade-leave-active {\n    transition: opacity 0.5s;\n  }\n  .fade-enter,\n  .fade-leave-to {\n    opacity: 0;\n  }\n}\n</style>\n\n<style lang=\"scss\">\n.polar-shadow {\n  height: 100%;\n  width: 100%;\n}\n.v-tooltip__content {\n  background-color: #595959;\n  border: 2px solid #fff;\n}\n.v-application {\n  font-family: sans-serif !important;\n}\n.v-list-item--highlighted {\n  outline: 2px solid var(--polar-primary);\n  outline-offset: -2px;\n}\n/* Override v-app default styling (must be global to take effect) */\n.polar-wrapper .v-application--wrap {\n  min-height: initial;\n  max-height: 100%;\n  width: 100%;\n  height: 100%;\n  position: relative;\n}\n.polar-wrapper.v-application .v-btn:focus {\n  border: solid var(--polar-primary-contrast) !important;\n  outline: solid var(--polar-primary);\n  outline-offset: 1px;\n}\n.polar-wrapper.v-application .v-btn:hover {\n  border: solid var(--polar-primary-contrast) !important;\n  outline: solid var(--polar-primary);\n  outline-offset: 1px;\n}\n</style>\n","<template>\n  <div>\n    <v-card-title :id=\"`polar-${id}`\">{{ $t(title) }}</v-card-title>\n    <v-card-text>\n      <v-radio-group\n        :aria-labelledby=\"`polar-${id}`\"\n        dense\n        hide-details\n        :value=\"initialValue\"\n        @change=\"changeCallback\"\n      >\n        <v-radio\n          v-for=\"[key, value] in Object.entries(values)\"\n          :key=\"key\"\n          :label=\"$t(value)\"\n          :value=\"key\"\n          @keydown.up.stop\n          @keydown.right.stop\n          @keydown.down.stop\n          @keydown.left.stop\n        ></v-radio>\n      </v-radio-group>\n    </v-card-text>\n  </div>\n</template>\n\n<script>\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  name: 'RadioCard',\n  props: {\n    id: {\n      type: String,\n      required: true,\n    },\n    title: {\n      type: String,\n      required: true,\n    },\n    values: {\n      type: Object,\n      required: true,\n    },\n    initialValue: {\n      type: String,\n      required: true,\n    },\n    changeCallback: {\n      type: Function,\n      required: true,\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.v-card__title {\n  padding-top: 0;\n  padding-bottom: 0;\n  font-size: 100%;\n}\n\n.v-input--radio-group {\n  margin-top: 0;\n  padding-top: 0;\n  padding-bottom: 0.5em;\n}\n\n.v-card__text {\n  padding-bottom: 0;\n}\n</style>\n","import { MasterportalApiConfig, PartialBy } from '@polar/lib-custom-types'\n\n// Default configuration parameters for @masterportal/masterportalapi\nexport default {\n  epsg: 'EPSG:25832',\n  options: [\n    { resolution: 66.14579761460263, scale: 250000, zoomLevel: 0 },\n    { resolution: 26.458319045841044, scale: 100000, zoomLevel: 1 },\n    { resolution: 15.874991427504629, scale: 60000, zoomLevel: 2 },\n    { resolution: 10.583327618336419, scale: 40000, zoomLevel: 3 },\n    { resolution: 5.2916638091682096, scale: 20000, zoomLevel: 4 },\n    { resolution: 2.6458319045841048, scale: 10000, zoomLevel: 5 },\n    { resolution: 1.3229159522920524, scale: 5000, zoomLevel: 6 },\n    { resolution: 0.6614579761460262, scale: 2500, zoomLevel: 7 },\n    { resolution: 0.2645831904584105, scale: 1000, zoomLevel: 8 },\n    { resolution: 0.1322915952292052, scale: 500, zoomLevel: 9 },\n  ],\n  namedProjections: [\n    [\n      'EPSG:25832',\n      '+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\n    ],\n    [\n      'EPSG:3857',\n      '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext  +no_defs',\n    ],\n    [\n      'EPSG:4326',\n      '+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs',\n    ],\n    [\n      'EPSG:31467',\n      '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.70 +units=m +no_defs',\n    ],\n    [\n      'EPSG:4647',\n      '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\n    ],\n  ],\n  startResolution: 15.874991427504629,\n} as PartialBy<\n  // The type is this weird as CoreState.configuration has some values required ...\n  MasterportalApiConfig &\n    Required<\n      Pick<\n        MasterportalApiConfig,\n        'epsg' | 'namedProjections' | 'options' | 'startResolution'\n      >\n    >,\n  'layerConf' | 'startCenter'\n>\n","export const badPathSymbol = Symbol('Path could not be resolved.')\n\n/**\n * Utility function (idx) for traversing the given path of the given object\n * to retrieve data.\n * Inspired by https://medium.com/javascript-inside/safely-accessing-deeply-nested-values-in-javascript-99bf72a0855a.\n *\n * @param object - The object to traverse.\n * @param path - The path of keys / indices to traverse through the object.\n * @returns The value(s) to be retrieved from the given object.\n */\nexport default (object: object, path: string[]): unknown | symbol =>\n  path.reduce(\n    (acc, currentVal) =>\n      acc && Object.prototype.hasOwnProperty.call(acc, currentVal)\n        ? acc[currentVal]\n        : badPathSymbol,\n    object\n  )\n","import Vue from 'vue'\nimport idx from '@polar/lib-idx'\n\ntype SubscribeCallback = (value: unknown, oldValue: unknown) => void\n\n// registers a callback to a vuex watcher\nfunction subscribe(\n  this: Vue,\n  path: string,\n  callback: SubscribeCallback,\n  immediate = true\n): () => void {\n  const steps: string[] = path.split('/')\n  return this.$store.watch((state: object) => idx(state, steps), callback, {\n    immediate,\n  })\n}\n\nexport default subscribe\n","import Vue from 'vue'\n\n/*\n * Albeit the map will render without this in Firefox, it won't in Chromium-\n * based browsers. The map reports \"No map visible because the map\n * container's width or height are 0.\". However, if updating the map's size\n * after letting all other tasks in callback queue execute, the DOM is\n * prepared, and we're good to go.\n *\n * For some reason, we'll have to wait two callback queues sometimes.\n * The waiting is arbitrarily limited to 100 queues before an error is shown.\n */\nexport const updateSizeOnReady = (instance: Vue) => {\n  let attemptCounter = 0\n  const intervalId = setInterval(() => {\n    const size = instance.$store.getters.map.getSize()\n    if (attemptCounter++ < 100 && (size[0] === 0 || size[1] === 0)) {\n      instance.$store.getters.map.updateSize()\n    } else if (attemptCounter === 100) {\n      console.error(\n        `@polar/core: The POLAR map client could not update its size. The map is probably invisible due to having 0 width or 0 height. This might be a CSS issue – please check the wrapper's size.`\n      )\n      instance.$store.commit('setMapHasDimensions', false)\n    } else {\n      // OL prints warnings – add this log to reduce confusion\n      // eslint-disable-next-line no-console\n      console.log(\n        `@polar/core: The map now has dimensions and can be rendered.`\n      )\n      instance.$store.commit('setMapHasDimensions', true)\n      clearInterval(intervalId)\n    }\n  }, 0)\n}\n","const waitTime = 500\nconst maxAttempts = 10\n\n/*\n * CSS code taken from vuetify@2. While most of the vuetify@2 CSS is pulled to\n * within the shadow, this is required on the outside to make it all work.\n * Comments are from CSS source.\n */\nconst makeContainerCss = (containerId: string) => `\n#${containerId} {\n  box-sizing: border-box;\n  /* All browsers without overlaying scrollbars */\n  -webkit-text-size-adjust: 100%;\n  /* Prevent adjustments of font size after orientation changes in iOS */\n  word-break: normal;\n  -moz-tab-size: 4;\n  tab-size: 4;\n}\n\n#${containerId} * {\n  background-repeat: no-repeat;\n  /* Set \\`background-repeat: no-repeat\\` to all elements and pseudo elements */\n  box-sizing: inherit;\n}\n`\n\nconst buildShadowDom = (\n  shadowHost: HTMLElement,\n  containerId: string\n): ShadowRoot => {\n  const wrapper = document.createElement('div')\n  wrapper.id = `${containerId}-wrapper`\n  const style = document.createElement('style')\n  style.innerHTML = makeContainerCss(containerId)\n\n  shadowHost.parentElement?.insertBefore(wrapper, shadowHost)\n  wrapper.appendChild(shadowHost)\n  wrapper.appendChild(style)\n\n  return shadowHost.attachShadow({ mode: 'open' })\n}\n\nexport const makeShadowRoot = (containerId: string): Promise<ShadowRoot> =>\n  new Promise((resolve, reject) => {\n    let counter = 0\n    const intervalId = setInterval(() => {\n      const shadowHost = document.getElementById(containerId)\n\n      if (!shadowHost) {\n        if (counter >= maxAttempts) {\n          clearInterval(intervalId)\n          reject(\n            new Error(`containerId \"${containerId}\" not found on website.\n                        POLAR map client won't render.\n                        Giving up after ${counter} attempts.`)\n          )\n          return\n        }\n        console.error(\n          `@polar/core: containerId \"${containerId}\" not found on website.\n            POLAR map client won't render.\n            Retrying in ${waitTime}ms ...`\n        )\n        counter++\n      } else {\n        clearInterval(intervalId)\n\n        const shadowRoot = buildShadowDom(shadowHost, containerId)\n\n        // Monkey patch querySelector to properly find shadowRoot element\n        const { querySelector } = document\n        document.querySelector = function (selector) {\n          if (selector === '[data-app]') return shadowRoot\n          return querySelector.call(this, selector)\n        }\n\n        resolve(shadowRoot)\n      }\n    })\n  })\n","const defaultStylePath = './style.css'\n\nexport const pullPolarStyleToShadow = (\n  shadowRoot: ShadowRoot,\n  stylePath = defaultStylePath\n) => {\n  // @ts-expect-error | 'TS2339: Property 'env' does not exist on type 'ImportMeta'.' - It does since we're using vite as a bundler.\n  if (import.meta.env.DEV) {\n    const stylesheets = [...document.getElementsByTagName('style')]\n    const polarStylesheets = stylesheets.filter((el) =>\n      el.getAttribute('data-vite-dev-id')\n    )\n    polarStylesheets.forEach((style) => shadowRoot.appendChild(style))\n  } else {\n    const link = document.createElement('link')\n    link.href = stylePath\n    link.rel = 'stylesheet'\n    link.onerror = (e) =>\n      console.error(\n        `@polar/core: Couldn't find required stylesheets, map won't render. ${\n          stylePath === defaultStylePath\n            ? `The default stylePath ${defaultStylePath} did not work. Please check @polar/core's documentation of 'stylePath' on how this can be configured.`\n            : `It seems the provided stylePath (${stylePath}) did not work. Please verify its correctness. The value should be given as it would be correct in a link tag's href.`\n        }`,\n        e\n      )\n    shadowRoot.appendChild(link)\n  }\n}\n","/*\n * Vuetify creates a stylesheet upon setup. To have it correctly applied to the\n * map client, it needs to be pulled to the shadow realm.\n */\nexport const pullVuetifyStyleToShadow = (shadowRoot: ShadowRoot) => {\n  const vuetifyStyle = document.getElementById('vuetify-theme-stylesheet')\n  if (vuetifyStyle === null) {\n    console.error(\n      `@polar/core: The POLAR map client did not find the vuetify theme stylesheet. It is supposed to be created programmatically. This is probably a bug in POLAR.`\n    )\n    return\n  }\n  shadowRoot.appendChild(vuetifyStyle)\n\n  // tooltips are technically a neighbour of the app; add missing font style\n  const tooltipStyle = document.createElement('style')\n  tooltipStyle.innerHTML = `.v-tooltip__content {\n  font-family: sans-serif;\n}`\n  shadowRoot.appendChild(tooltipStyle)\n}\n","// @ts-expect-error | This CSS package doesn't have any type declarations.\nimport fontawesomeFree from '@fortawesome/fontawesome-free/css/all.css?inline'\n\nconst outerNodeId = 'polar-fontawesome-outer-node'\n\nexport const setupFontawesome = (\n  shadowRoot: ShadowRoot,\n  renderFaToLightDom = true\n) => {\n  const styleNode = document.createElement('style')\n  styleNode.innerHTML = fontawesomeFree\n  shadowRoot.appendChild(styleNode)\n\n  /*\n   * - https://stackoverflow.com/questions/62129243/external-font-does-not-load-when-link-is-loaded-from-inside-the-shadowdom\n   * - https://bugs.chromium.org/p/chromium/issues/detail?id=336876\n   *\n   * Due to an unfixed bug in chromium and other browsers, FontAwesome is also\n   * required in the Light/Root DOM outside our ShadowDOM.\n   */\n  if (!document.getElementById(outerNodeId) && renderFaToLightDom) {\n    const outerNode = document.createElement('style')\n    outerNode.id = outerNodeId\n    outerNode.innerHTML = fontawesomeFree\n    document.head.appendChild(outerNode)\n  }\n}\n","import Vue from 'vue'\nimport { makeStore } from '../../vuePlugins/vuex'\nimport vuetify from '../../vuePlugins/vuetify'\nimport initializeI18n from '../../i18n'\nimport { MapContainer } from '../../components'\nimport { CreateOptions, MapInstance } from '../../types'\nimport defaults from './defaults'\nimport subscribeFunction from './subscribe'\nimport { updateSizeOnReady } from './updateSizeOnReady'\nimport { makeShadowRoot } from './makeShadowRoot'\nimport { pullPolarStyleToShadow } from './pullPolarStyleToShadow'\nimport { pullVuetifyStyleToShadow } from './pullVuetifyStyleToShadow'\nimport { setupFontawesome } from './setupFontawesome'\n\n/**\n * createMap handles plugging all the parts together to create a configured map.\n * This method is loosely based on\n * {@link https://github.com/vuetifyjs/vuetify/issues/7622#issuecomment-624500549}\n * to create a shadow-dom'd map client unaffected by css issues of the\n * run-time environment.\n */\nexport default async function createMap({\n  containerId,\n  mapConfiguration,\n}: CreateOptions): Promise<MapInstance> {\n  const shadowRoot = await makeShadowRoot(containerId)\n\n  await initializeI18n(mapConfiguration?.language)\n\n  // Do not break outside Vuetify app's theme\n  const externalStylesheet = document.getElementById('vuetify-theme-stylesheet')\n  if (externalStylesheet) {\n    externalStylesheet.id = 'vuetify-theme-stylesheet-external'\n  }\n\n  const defaultedConfiguration = { ...defaults, ...mapConfiguration }\n\n  const instance: MapInstance = new Vue({\n    vuetify: vuetify(defaultedConfiguration?.vuetify),\n    el: shadowRoot.appendChild(document.createElement('div')),\n    render: (createElement) =>\n      createElement(MapContainer, {\n        props: {\n          mapConfiguration: defaultedConfiguration,\n        },\n      }),\n    store: makeStore(defaultedConfiguration),\n  })\n  instance.subscribe = subscribeFunction\n\n  pullPolarStyleToShadow(shadowRoot, defaultedConfiguration.stylePath)\n  pullVuetifyStyleToShadow(shadowRoot)\n  setupFontawesome(shadowRoot, defaultedConfiguration.renderFaToLightDom)\n  updateSizeOnReady(instance)\n\n  // Restore theme ID such that external Vuetify app can find it again\n  if (externalStylesheet) {\n    externalStylesheet.id = 'vuetify-theme-stylesheet'\n  }\n\n  return instance\n}\n","import { Map } from 'ol'\nimport { ImageWMS } from 'ol/source'\n\n// Original addLayer method\nconst originalAddLayer = Map.prototype.addLayer\n// Monkey patch\nMap.prototype.addLayer = function (...parameters) {\n  // Add layer to map\n  originalAddLayer.call(this, ...parameters)\n  // Change all layers to be crossOrigin safe\n  Map.prototype.getLayers\n    .call(this)\n    .getArray() // Change layers with wrong crossOrigin\n    .forEach((layer) => {\n      // @ts-expect-error | All layers here are instantiated layers including a source.\n      const source = layer.getSource()\n      // @ts-expect-error | Set private param for ol class ImageWMS to prevent error in canvas rendering.\n      // Might break after ol upgrade because its undocumented.\n      if (source instanceof ImageWMS) source.crossOrigin_ = 'anonymous'\n      else source.crossOrigin = 'anonymous'\n      // @ts-expect-error | All layers here are instantiated layers including a source.\n      layer.setSource(source)\n    })\n}\n","import { Map } from 'ol'\n\n// @ts-expect-error | Most modern browsers already support named capturing groups. This should be fine.\nconst headerRegex = /{(?<key>[^=]+)=(?<value>[^}]+)}/gm\n\n/**\n * A header is defined by `{key=value}` as part of the configured url of a service.\n * Note, that the parenthesis are necessary.\n */\nfunction customLoader(tile, url) {\n  // TODO: Check if type any is valid\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const headers: any = {}\n  const src = url.replaceAll(headerRegex, (_, key, value) => {\n    headers[key] = value\n    return ''\n  })\n\n  fetch(src, { method: 'GET', headers })\n    .then((response) =>\n      response.ok\n        ? response.blob()\n        : response.text().then((msg) => {\n            throw msg\n          })\n    )\n    .then((blob) => {\n      if (blob) {\n        tile.getImage().src = URL.createObjectURL(blob)\n      }\n    })\n    .catch((e) => console.error('@polar/core', e))\n}\n\n// Original addLayer method\nconst originalAddLayer = Map.prototype.addLayer\n// Monkey patch\nMap.prototype.addLayer = function (...parameters) {\n  // Add layer to map\n  originalAddLayer.call(this, ...parameters)\n  Map.prototype.getLayers\n    .call(this)\n    .getArray()\n    .forEach((layer) => {\n      // @ts-expect-error | All layers here are instantiated layers including a source.\n      const source = layer.getSource()\n      const headerRequired = source?.urls?.some((url) => headerRegex.test(url))\n      if (headerRequired && typeof source.setTileLoadFunction === 'function') {\n        source.setTileLoadFunction(customLoader)\n        // @ts-expect-error | All layers here are instantiated layers including a source.\n        layer.setSource(source)\n      }\n    })\n}\n","<template>\n  <component\n    :is=\"pluginContainer.plugin\"\n    v-bind=\"pluginContainer.options.props\"\n    class=\"polar-clickable\"\n  />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  props: {\n    pluginContainer: {\n      type: Object,\n      required: true,\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.polar-clickable > * {\n  pointer-events: all;\n}\n</style>\n","import { PluginContainer } from '@polar/lib-custom-types'\n\nexport function sortPlugins(\n  components: PluginContainer[],\n  tag: string\n): PluginContainer[] {\n  const sortedComponents: PluginContainer[] = []\n  for (let i = 0; i < components.length; i++) {\n    if (components[i].options.layoutTag === tag) {\n      sortedComponents.push(components[i])\n    }\n  }\n  return sortedComponents\n}\n","export enum NineLayoutTag {\n  TOP_LEFT = 'top-left top left nine-layout',\n  TOP_MIDDLE = 'top-mid mid top nine-layout',\n  TOP_RIGHT = 'top-right top right nine-layout',\n  MIDDLE_LEFT = 'mid-left mid left nine-layout',\n  MIDDLE_MIDDLE = 'mid-mid mid nine-layout',\n  MIDDLE_RIGHT = 'mid-right mid right nine-layout',\n  BOTTOM_LEFT = 'bottom-left bottom left nine-layout',\n  BOTTOM_MIDDLE = 'bottom-mid mid bottom nine-layout',\n  BOTTOM_RIGHT = 'bottom-right bottom right nine-layout',\n}\n","<template>\n  <div class=\"wrapper\">\n    <div\n      v-for=\"(tag, index) of tags\"\n      :key=\"index\"\n      :class=\"{\n        [tag]: true,\n        'has-window-size': hasWindowSize,\n      }\"\n    >\n      <plugin-vessel\n        v-for=\"(pluginContainer, innerIndex) of getSortedTo(tag)\"\n        :key=\"`${index}-${innerIndex}`\"\n        v-bind=\"{ pluginContainer }\"\n      />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport { PluginContainer } from '@polar/lib-custom-types'\nimport PluginVessel from '../MapPlugin.vue'\nimport { sortPlugins } from '../../utils/sortPluginsByLayout'\nimport { NineLayoutTag } from './NineLayoutTag'\n\nconst tags = Object.values(NineLayoutTag)\n\nexport default Vue.extend({\n  components: {\n    PluginVessel,\n  },\n  data: () => ({\n    tags,\n  }),\n  computed: {\n    ...mapGetters(['components', 'hasWindowSize']),\n    // creating plugin lists for all enums\n    //  reduces to list of functions, each returning a list of plugins which are sorted by layout\n    ...tags.reduce((acc, curr) => {\n      acc[curr] = function () {\n        return sortPlugins(this.components, curr) as PluginContainer[]\n      }\n      return acc\n    }, {}),\n  },\n  methods: {\n    getSortedTo(name) {\n      return this[name]\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.wrapper {\n  width: 100%;\n  height: 100%;\n  padding: 6px;\n\n  .nine-layout {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    position: absolute;\n\n    &.has-window-size {\n      max-height: 100%;\n    }\n\n    &.mid {\n      top: 33%;\n      left: 33%;\n      right: 33%;\n      bottom: 33%;\n    }\n\n    &.left {\n      left: 0;\n      right: auto;\n      align-items: flex-start;\n    }\n\n    &.right {\n      right: 0;\n      left: 66%;\n      align-items: flex-end;\n    }\n\n    &.top {\n      top: 0;\n      justify-content: flex-start;\n    }\n\n    &.bottom {\n      bottom: 0;\n      justify-content: flex-end;\n    }\n  }\n}\n</style>\n","import * as mpapi from '@masterportal/masterportalapi'\nimport addPlugins, { resetPlugins } from './utils/addPlugins'\nimport createMap from './utils/createMap'\n\n// NOTE: This is needed to be able to properly use the export\nimport './monkeyCrossOrigin'\n// NOTE: Allow url parameters to become headers if used like `{key=value}`\nimport './monkeyHeaderLoader'\n\nexport { NineLayout, NineLayoutTag } from './components/layouts'\nexport { RadioCard } from './components'\nexport { setLayout, getLayout } from './utils/layout'\nexport { default as mpapiDefaults } from './utils/createMap/defaults'\nexport type { MapInstance } from './types'\n\nexport type PolarCore = typeof mpapi & {\n  // TODO add more\n  addPlugins: typeof addPlugins\n  resetPlugins: typeof resetPlugins\n  createMap: typeof createMap\n}\n\nconst core: PolarCore = {\n  ...mpapi,\n  addPlugins,\n  resetPlugins,\n  createMap,\n}\n\nexport default core\n","<template>\n  <v-select\n    v-if=\"hasMultipleGroups\"\n    v-model=\"selectedItem\"\n    dense\n    class=\"polar-plugin-address-search-group-select\"\n    :aria-label=\"$t('plugins.addressSearch.groupSelector')\"\n    :items=\"\n      // mapping in template to guarantee update on language change\n      groupSelectOptions.map(({ value, text }) => ({ value, text: $t(text) }))\n    \"\n  >\n    <div slot=\"selection\">\n      <!--\n        empty node on purpose to reduce UI;\n        label is shown on input element and would be a duplicate\n      -->\n    </div>\n  </v-select>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'AddressSearchGroupSelect',\n  computed: {\n    ...mapGetters('plugin/addressSearch', [\n      'selectedGroupId',\n      'groupSelectOptions',\n      'hasMultipleGroups',\n    ]),\n    selectedItem: {\n      get(): string {\n        return this.selectedGroupId\n      },\n      set(value: string): void {\n        this.setSelectedGroupId(value)\n      },\n    },\n  },\n  methods: {\n    ...mapActions('plugin/addressSearch', ['setSelectedGroupId']),\n  },\n})\n</script>\n\n<style lang=\"scss\">\n/* minimal select element UI – labeling etc. is done via\n * neighbouring input element, to which this directly relates */\n.polar-plugin-address-search-group-select {\n  margin-right: 4px;\n  flex: 0 1 auto;\n\n  .v-select__selections {\n    width: 0;\n    max-width: 0;\n  }\n\n  .v-input__append-inner {\n    margin-left: 0 !important;\n    padding-left: 0 !important;\n  }\n}\n\n/* structurally a sibling to v-app; hence font-family is not\n * styled according to v-app choices; doing it locally until\n * configurability required */\n.v-menu__content {\n  font-family: sans-serif !important;\n}\n</style>\n","export function focusFirstResult(featureListsLength: number) {\n  for (let i = 0; i < featureListsLength; i++) {\n    const firstFocusableElement =\n      // @ts-expect-error | Type conversion is fine here as the querySelector method is monkeyPatched in core/createMap\n      (document.querySelector('[data-app]') as ShadowRoot).getElementById(\n        `polar-plugin-address-search-results-feature-${i}-0`\n      )\n    if (firstFocusableElement) {\n      firstFocusableElement.focus()\n      break\n    }\n  }\n}\n","export const emTitleByInput = (title: string, inputValue: string): string => {\n  const index = title.toLowerCase().indexOf(inputValue.toLowerCase())\n  if (index === -1) {\n    return title\n  }\n  return (\n    title.substring(0, index) +\n    '<em>' +\n    title.substring(index, index + inputValue.length) +\n    '</em>' +\n    title.substring(index + inputValue.length)\n  )\n}\n","<template>\n  <v-card\n    v-if=\"featuresAvailable\"\n    tile\n    dense\n    class=\"mx-auto overflow-y-auto rounded-b-xl polar-plugin-address-search-toolbar-results\"\n    :max-height=\"maxHeight\"\n    :ripple=\"false\"\n    tabindex=\"-1\"\n    @keydown.escape.prevent.stop=\"escapeSelection\"\n  >\n    <v-list\n      v-for=\"(\n        { features, category, categoryId }, index\n      ) in featureListsWithCategory\"\n      :key=\"['results-list', index].join('-')\"\n      tag=\"ul\"\n      class=\"polar-plugin-address-search-results-list\"\n      subheader\n    >\n      <v-subheader\n        v-if=\"Boolean(category)\"\n        :key=\"['results-category', index].join('-')\"\n      >\n        {{ $t(category) }}\n        {{\n          $t('plugins.addressSearch.resultCount', {\n            count: features.length,\n          })\n        }}\n      </v-subheader>\n      <template v-for=\"(feature, innerDex) in features\">\n        <v-list-item\n          v-if=\"innerDex < limitResults || areResultsExpanded(category)\"\n          :id=\"\n            [\n              'polar-plugin-address-search-results-feature',\n              index,\n              innerDex,\n            ].join('-')\n          \"\n          :key=\"['results-feature', index, innerDex].join('-')\"\n          :ripple=\"false\"\n          tag=\"li\"\n          tabindex=\"-1\"\n          :class=\"{\n            'polar-plugin-address-search-hidden-result':\n              innerDex >=\n              (areResultsExpanded(category)\n                ? Number.MAX_SAFE_INTEGER\n                : limitResults),\n          }\"\n          @keydown.down.prevent.stop=\"(event) => focusNextElement(true, event)\"\n          @keydown.up.prevent.stop=\"(event) => focusNextElement(false, event)\"\n          @click=\"selectResult({ feature, categoryId })\"\n          @focus=\"focusIndex = `${index}-${innerDex}`\"\n          @blur=\"focusIndex = ''\"\n        >\n          <v-list-item-title>\n            <!-- eslint-disable-next-line vue/no-v-html -->\n            <span v-html=\"emTitleByInput($t(feature.title), inputValue)\"></span>\n          </v-list-item-title>\n          <component\n            :is=\"afterResultComponent\"\n            v-if=\"afterResultComponent\"\n            :feature=\"feature\"\n            :focus=\"focusIndex === `${index}-${innerDex}`\"\n          ></component>\n        </v-list-item>\n      </template>\n      <v-btn\n        v-if=\"features.length > limitResults\"\n        :id=\"`polar-plugin-address-search-results-feature-expand-button-${index}`\"\n        text\n        tile\n        block\n        class=\"text-none\"\n        @keydown.down.prevent.stop=\"(event) => focusNextElement(true, event)\"\n        @keydown.up.prevent.stop=\"(event) => focusNextElement(false, event)\"\n        @click=\"toggle(category)\"\n      >\n        <v-icon x-small class=\"mr-1\">\n          {{\n            areResultsExpanded(category) ? 'fa-chevron-up' : 'fa-chevron-down'\n          }}\n        </v-icon>\n        {{\n          $t(\n            `plugins.addressSearch.resultList.${\n              areResultsExpanded(category)\n                ? 'reduce'\n                : `extend${hasMaximum(selectedGroup[index]) ? 'Max' : ''}`\n            }`,\n            selectedGroup[index]\n          )\n        }}\n      </v-btn>\n      <v-divider\n        v-if=\"Boolean(category)\"\n        :key=\"['results-divider', index].join('-')\"\n      ></v-divider>\n    </v-list>\n  </v-card>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\nimport { focusFirstResult } from '../utils/focusFirstResult'\nimport { emTitleByInput } from '../utils/emTitleByInput'\n\nexport default Vue.extend({\n  name: 'AddressSearchResults',\n  data: () => ({\n    openCategories: [] as string[],\n    focusIndex: '',\n  }),\n  computed: {\n    ...mapGetters(['clientHeight', 'hasWindowSize']),\n    ...mapGetters('plugin/addressSearch', [\n      'afterResultComponent',\n      'featuresAvailable',\n      'featureListsWithCategory',\n      'focusAfterSearch',\n      'inputValue',\n      'limitResults',\n      'selectedGroupId',\n      'selectedGroup',\n    ]),\n    maxHeight(): number {\n      return this.hasWindowSize ? this.clientHeight * 0.6 : 400\n    },\n  },\n  watch: {\n    featuresAvailable(): void {\n      if (this.focusAfterSearch) {\n        this.$nextTick(() =>\n          focusFirstResult(this.featureListsWithCategory.length)\n        )\n      }\n    },\n    /* reset opened categories on group change */\n    selectedGroupId(): void {\n      this.openCategories = []\n    },\n  },\n  methods: {\n    ...mapActions('plugin/addressSearch', ['selectResult', 'escapeSelection']),\n    toggle(category: string): void {\n      this.openCategories =\n        this.openCategories.indexOf(category) === -1\n          ? [...this.openCategories, category]\n          : this.openCategories.filter((s) => s !== category)\n    },\n    hasMaximum(searchService) {\n      return Boolean(searchService?.queryParameters?.maxFeatures)\n    },\n    emTitleByInput,\n    isExpandButtonVisible(featureListLength: number): boolean {\n      return featureListLength > this.limitResults\n    },\n    areResultsExpanded(category: string): boolean {\n      return this.openCategories.includes(category)\n    },\n    focusNextElement(down: boolean, { target }: { target: HTMLElement }): void {\n      const focus = ['BUTTON', 'LI']\n      const sibling = down ? 'nextElementSibling' : 'previousElementSibling'\n\n      let searchBase: Element = target\n      let candidateElement: Element | null = searchBase[sibling]\n\n      while (candidateElement && !focus.includes(candidateElement.tagName)) {\n        candidateElement = candidateElement[sibling]\n\n        if (!candidateElement) {\n          const children = searchBase?.parentElement?.[sibling]?.children\n          if (children) {\n            searchBase = children[down ? 0 : children.length - 1]\n            candidateElement = searchBase\n          }\n        }\n      }\n\n      if (candidateElement) {\n        // @ts-expect-error | we have no non-HTML elements in this DOM part\n        candidateElement.focus()\n        return\n      }\n\n      if (down) {\n        focusFirstResult(this.featureListsWithCategory.length)\n        return\n      }\n\n      // @ts-expect-error | Type conversion is fine here as the querySelector method is monkeyPatched in core/createMap\n      ;(document.querySelector('[data-app]') as ShadowRoot)\n        .getElementById('polar-plugin-address-search-input')\n        ?.focus()\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.polar-plugin-address-search-toolbar-results {\n  em {\n    font-style: unset;\n    font-weight: bold;\n  }\n\n  .v-list {\n    padding-bottom: 0;\n  }\n}\n\n/* hidden results are still 'rendered' to take horizontal space:\n * that prevents width hopping on result expansion */\n.polar-plugin-address-search-hidden-result {\n  visibility: hidden;\n  overflow: hidden;\n  max-height: 0;\n  height: 0;\n  min-height: 0;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.polar-plugin-address-search-results-list {\n  padding-left: 0;\n}\n</style>\n","<template>\n  <v-text-field\n    id=\"polar-plugin-address-search-input\"\n    prepend-icon=\"fa-magnifying-glass\"\n    clearable\n    :label=\"$t(label)\"\n    :placeholder=\"$t(placeholder)\"\n    :hint=\"$t(hint, { minLength })\"\n    :aria-description=\"$t(hint, { minLength })\"\n    :loading=\"loading\"\n    :value=\"inputValue\"\n    @input=\"input\"\n    @keydown.enter=\"abortAndRequest\"\n    @keydown.down.prevent.stop=\"\n      focusFirstResult(featureListsWithCategory.length)\n    \"\n    @click:clear=\"clear\"\n  />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\nimport { focusFirstResult } from '../utils/focusFirstResult'\n\nexport default Vue.extend({\n  name: 'AddressSearchInput',\n  computed: {\n    ...mapGetters('plugin/addressSearch', [\n      'featureListsWithCategory',\n      'label',\n      'placeholder',\n      'hint',\n      'minLength',\n      'loading',\n      'inputValue',\n    ]),\n  },\n  methods: {\n    ...mapActions('plugin/addressSearch', [\n      'input',\n      'abortAndRequest',\n      'clear',\n    ]),\n    focusFirstResult,\n  },\n})\n</script>\n","<template>\n  <v-container :style=\"style\">\n    <v-toolbar\n      class=\"polar-plugin-address-search-toolbar pt-1\"\n      :class=\"toolbarClass\"\n      height=\"72\"\n    >\n      <GroupSelect></GroupSelect>\n      <SearchInput />\n    </v-toolbar>\n    <Results></Results>\n  </v-container>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport GroupSelect from './GroupSelect.vue'\nimport Results from './Results.vue'\nimport SearchInput from './Input.vue'\n\nexport default Vue.extend({\n  name: 'SearchContainer',\n  components: { SearchInput, Results, GroupSelect },\n  computed: {\n    ...mapGetters(['clientWidth', 'hasSmallWidth', 'hasWindowSize']),\n    ...mapGetters('plugin/addressSearch', ['component', 'featuresAvailable']),\n    style(): string {\n      return this.hasWindowSize && this.hasSmallWidth\n        ? `max-width: ${this.clientWidth * 0.75}px`\n        : ''\n    },\n    toolbarClass(): string {\n      return this.featuresAvailable ? 'rounded-t-xl' : 'rounded-xl'\n    },\n  },\n})\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n  <component :is=\"component\" v-if=\"component\" />\n  <SearchContainer v-else />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport SearchContainer from './SearchContainer.vue'\n\nexport default Vue.extend({\n  name: 'AddressSearch',\n  components: {\n    SearchContainer,\n  },\n  computed: {\n    ...mapGetters('plugin/addressSearch', ['component']),\n  },\n})\n</script>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    addressSearch: {\n      hint: {\n        error: 'Etwas ist bei der Suche schiefgegangen.',\n        noResults: 'Keine Ergebnisse gefunden.',\n        loading: 'Suche ...',\n        tooShort:\n          'Für die Suche bitte mindestens {{minLength}} Zeichen eingeben.',\n      },\n      defaultGroup: 'Adresssuche',\n      groupSelector: 'Suchthema auswählen',\n      resultCount: '({{count}} Ergebnisse)',\n      resultList: {\n        extend: 'Alle Ergebnisse anzeigen',\n        extendMax:\n          'Alle Ergebnisse (max. {{queryParameters.maxFeatures}}) anzeigen',\n        reduce: 'Ergebnisliste reduzieren',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    addressSearch: {\n      hint: {\n        error: 'Something went wrong.',\n        noResults: 'No results for the current query.',\n        loading: 'Searching ...',\n        tooShort: 'Please enter at least {{minLength}} characters.',\n      },\n      defaultGroup: 'Address Search',\n      groupSelector: 'Select search topic',\n      resultCount: '({{count}} results)',\n      resultList: {\n        extend: 'Show all results',\n        extendMax: 'Show all results (max. {{queryParameters.maxFeatures}})',\n        reduce: 'Reduce result list',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * prints a helpful message regarding network errors\n */\nexport function errorCheck(response: Response) {\n  if (!response.ok) {\n    throw new Error(\n      `getFeatures/parseGazetteerResponse: ${\n        response.status === 418\n          ? 'The server refuses to brew coffee because it is, permanently, a teapot.'\n          : `The received status code ${response.status} indicates an error.`\n      }`\n    )\n  }\n}\n","// code doesn't produce RegExpMatchArray where index is not set ... :|\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { KeyValueSetArray } from '../types'\n\nexport type Separator = string\nexport type Slot = RegExpMatchArray\nexport type Block = Slot | Separator\n\nconst blockMemo = {} // memoize\n\n/**\n * splits pattern strings to slots/separators by handlebars\n */\nexport const getBlocks = (pattern: string): Block[] => {\n  if (blockMemo[pattern]) {\n    return blockMemo[pattern]\n  }\n\n  const matches: RegExpMatchArray[] = Array.from(pattern.matchAll(/{{(.*?)}}/g))\n  const blocks: Block[] = []\n\n  let index = 0\n\n  for (const match of matches) {\n    if (index < match.index!) {\n      blocks.push(pattern.substring(index, match.index))\n      index = match.index!\n    }\n    blocks.push(match)\n    index += match[0].length\n  }\n\n  blockMemo[pattern] = blocks\n\n  return blocks\n}\n\nconst sortComparableMatches = (comparableA, comparableB) => {\n  // first sort by uninterpreted search string (strong indicator)\n  if (comparableA.uninterpreted > comparableB.uninterpreted) return 1\n  if (comparableA.uninterpreted < comparableB.uninterpreted) return -1\n  // if same, sort by pattern fulfillment (weaker, searches will be incomplete)\n  // NOTE currently deactivated\n  // if (comparableA.patternLengthDiff > comparableB.patternLengthDiff) return 1\n  // if (comparableA.patternLengthDiff < comparableB.patternLengthDiff) return -1\n  // prefer first declared\n  if (comparableA.index > comparableB.index) return 1\n  if (comparableA.index < comparableB.index) return -1\n  // don't go here\n  return 0\n}\n\n/**\n * rates matches by\n *  1. uninterpreted string rest (strong weight)\n *  2. pattern fulfillment\n */\nconst sortMatches = (\n  matches: KeyValueSetArray,\n  patterns: string[],\n  uninterpretedCharacters: number[]\n): KeyValueSetArray => {\n  const comparableMatches = matches.map((match, index) => ({\n    match,\n    uninterpreted: uninterpretedCharacters[index],\n    patternLengthDiff:\n      (patterns[index].match(/{{/g) || []).length - match.length,\n    index,\n  }))\n  const sortedMatches = [...comparableMatches]\n    .sort(sortComparableMatches)\n    .map(({ match }) => match)\n\n  // remove duplicates and empty matches\n  const known: string[] = []\n  return sortedMatches.filter((match) => {\n    if (match.length === 0) {\n      return false\n    }\n    const asString = JSON.stringify(match)\n    if (known.includes(asString)) {\n      return false\n    }\n    known.push(asString)\n    return true\n  })\n}\n\n/**\n * matches an input string to patterns\n */\nexport const match = (\n  patterns: string[] | undefined,\n  patternKeys: Record<string, string> | undefined,\n  inputValue: string\n): KeyValueSetArray => {\n  if (!patterns) {\n    throw new Error(\n      '@polar/lib-get-features: Parameter \"patterns\" is missing on wfs configuration for pattern-based search.'\n    )\n  }\n  if (!patternKeys) {\n    throw new Error(\n      '@polar/lib-get-features: Parameter \"patternKeys\" is missing on wfs configuration for pattern-based search.'\n    )\n  }\n  const matches: KeyValueSetArray = []\n  const uninterpretedCharacters: number[] = []\n  patterns.forEach((pattern) => {\n    const patternBlocks = getBlocks(pattern)\n    const patternMapping: KeyValueSetArray[number] = []\n    let traverseInput = inputValue\n\n    patternBlocks.forEach((block) => {\n      let skipper = ''\n      if (Array.isArray(block)) {\n        // Slot case\n        const patternName = block[1]\n        const patternRegExp = patternKeys[patternName]\n        const value = traverseInput.match(new RegExp('^' + patternRegExp))\n        if (value !== null) {\n          const capturingGroupContent = value[1]\n          patternMapping.push([patternName, capturingGroupContent.trim()])\n          skipper = value[0].trim()\n        }\n      } else {\n        // Separator case\n        skipper = block.trim()\n      }\n      if (traverseInput.startsWith(skipper)) {\n        traverseInput = traverseInput.substring(skipper.length).trim()\n      }\n    })\n\n    uninterpretedCharacters.push(traverseInput.length)\n    matches.push(patternMapping)\n  })\n  return sortMatches(matches, patterns, uninterpretedCharacters)\n}\n","import { PolarGeoJsonFeature } from '../types'\nimport { getBlocks } from './match'\n\nconst sortOptions = (optionA, optionB) => {\n  // prefer best fit\n  if (optionA.fillPercentage > optionB.fillPercentage) return -1\n  if (optionA.fillPercentage < optionB.fillPercentage) return 1\n  // prefer longest fit of best fits\n  if (optionA.keys.length > optionB.keys.length) return -1\n  if (optionA.keys.length < optionB.keys.length) return 1\n  // masterworks all, you can't go wrong\n  if (optionA.index > optionB.index) return -1\n  if (optionA.index < optionB.index) return 1\n  // this never happens, until it does\n  return 0\n}\n\n/**\n * identifies the best-matching search pattern and fills it with found values\n */\nexport const getFeatureTitleFromPattern = (\n  feature: PolarGeoJsonFeature,\n  patterns: string[]\n): string => {\n  const properties = feature.properties || {}\n  const comparableOptions = patterns.map((pattern, index) => {\n    const blocks = getBlocks(pattern)\n    const keys = blocks.reduce(\n      (keyAccumulator, block) =>\n        Array.isArray(block) ? [...keyAccumulator, block[1]] : keyAccumulator,\n      [] as string[]\n    )\n    const foundKeys = keys.reduce(\n      (sum, key) =>\n        typeof properties[key] !== 'undefined' && properties[key] !== ''\n          ? sum + 1\n          : sum,\n      0\n    )\n    return {\n      pattern,\n      keys,\n      index,\n      fillPercentage: foundKeys / keys.length,\n    }\n  })\n\n  const sortedOptions = [...comparableOptions].sort(sortOptions)\n\n  const bestOption = sortedOptions[0]\n\n  const filledPattern = bestOption.keys.reduce(\n    (fillPattern, key) =>\n      fillPattern.replace(`{{${key}}}`, properties[key] || ''),\n    bestOption.pattern\n  )\n\n  return filledPattern\n}\n","import { GeoJSON, WFS } from 'ol/format'\nimport { FeatureCollection } from 'geojson'\nimport { PolarGeoJsonFeature } from '../types'\nimport { getFeatureTitleFromPattern } from './getFeatureTitleFromPattern'\n\n/**\n * Parses the response from a GetRequest to a WFS.\n *\n * @param response - Response from the fetch request.\n * @param title - {@link AdditionalSearchOptions.title}\n * @param useTitleAsPattern - whether title contains patterns from config\n */\nexport function parseWfsResponse(\n  response: Response,\n  title: string | string[] | undefined,\n  useTitleAsPattern: boolean\n): Promise<FeatureCollection> {\n  const features: PolarGeoJsonFeature[] = []\n  const featureCollection: FeatureCollection = {\n    type: 'FeatureCollection',\n    features,\n  }\n\n  return response.text().then((text) => {\n    const parser = new WFS()\n    const writer = new GeoJSON()\n    const parsedFeatures = parser.readFeatures(text)\n    // @ts-expect-error | srsName is there, I've seen it – probably a bug in OL?\n    const { srsName } = parser.readFeatureCollectionMetadata(text)\n\n    parsedFeatures.forEach((f) => {\n      const featureObject = JSON.parse(writer.writeFeature(f))\n      featureObject.title = ''\n      if (title) {\n        if (useTitleAsPattern) {\n          featureObject.title = getFeatureTitleFromPattern(\n            featureObject,\n            title as string[]\n          )\n        } else {\n          featureObject.title = Array.isArray(title)\n            ? title.map((part) => featureObject.properties[part]).join(' ')\n            : featureObject.properties[title]\n        }\n      }\n      if (srsName) {\n        featureObject.epsg = 'EPSG:' + srsName.split('::')[1]\n      }\n      features.push(featureObject)\n    })\n\n    return featureCollection\n  })\n}\n","import merge from 'lodash.merge'\nimport { KeyValueSetArray, WfsParameters } from '../types'\n\nconst removeLinebreaks = (s) => s.replace(/\\r?\\n|\\r/g, '')\n\nconst getFeaturePrefix = ({ maxFeatures }: WfsParameters) =>\n  `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wfs:GetFeature xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" service=\"WFS\" version=\"1.1.0\" xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\"${\n    maxFeatures ? ` maxFeatures=\"${maxFeatures}\"` : ''\n  }>`\n\nconst defaultLikeFilterAttributes = {\n  wildCard: '*',\n  singleChar: '.',\n  escapeChar: '!',\n}\n\nconst queryPrefix = ({\n  srsName,\n  featurePrefix,\n  typeName,\n  xmlns,\n}: WfsParameters) => `\n<wfs:Query typeName=\"${featurePrefix}:${typeName}\" xmlns:${featurePrefix}=\"${xmlns}\"${\n  srsName ? ` srsName=\"${srsName}\"` : ''\n}>\n<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">`\n\nconst wfsLike = (\n  fieldName: string,\n  input: string,\n  { featurePrefix, useRightHandWildcard, likeFilterAttributes }: WfsParameters\n) => {\n  const mergedLikeFilterAttributes = merge(\n    {},\n    defaultLikeFilterAttributes,\n    likeFilterAttributes\n  )\n  return `\n<ogc:PropertyIsLike${Object.entries(mergedLikeFilterAttributes).reduce(\n    (acc, [key, value]) => `${acc} ${key}=\"${value}\"`,\n    ''\n  )}>\n<ogc:PropertyName>${featurePrefix}:${fieldName}</ogc:PropertyName>\n<ogc:Literal>${input}${\n    typeof useRightHandWildcard === 'boolean' && !useRightHandWildcard\n      ? ''\n      : Object.hasOwn(mergedLikeFilterAttributes, 'wildCard')\n      ? mergedLikeFilterAttributes.wildCard\n      : '*'\n  }</ogc:Literal>\n</ogc:PropertyIsLike>`\n}\n\nconst querySuffix = `</ogc:Filter></wfs:Query>`\n\nconst getFeatureSuffix = `</wfs:GetFeature>`\n\nconst buildWfsFilterQuery = (\n  patternMatch: string[][],\n  parameters: WfsParameters\n) => {\n  let request = queryPrefix(parameters)\n\n  if (patternMatch.length > 1) {\n    request += `<ogc:And>${patternMatch\n      .map(([key, value]) => wfsLike(key, value, parameters))\n      .join('')}</ogc:And>`\n  } else if (patternMatch.length === 1) {\n    const [key, value] = patternMatch[0]\n    request += wfsLike(key, value, parameters)\n  }\n\n  return request + querySuffix\n}\n\n/**\n * Builds filter of multiple queries from possible interpretations of inputs.\n * Multiple queries are sent so that service may stop computing after\n * maxFeatures has been fulfilled.\n * @returns request xml\n */\nexport const buildWfsFilter = (\n  inputs: KeyValueSetArray,\n  parameters: WfsParameters\n) =>\n  removeLinebreaks(\n    getFeaturePrefix(parameters) +\n      inputs.map((input) => buildWfsFilterQuery(input, parameters)).join('') +\n      getFeatureSuffix\n  )\n","import { KeyValueSetArray, WfsParameters } from '../types'\nimport { errorCheck } from '../utils/errorCheck'\nimport { parseWfsResponse } from './parse'\nimport { buildWfsFilter } from './buildWfsFilter'\nimport { match } from './match'\n\nexport async function getWfsFeatures(\n  signal: AbortSignal | null,\n  url: string,\n  inputValue: string,\n  parameters: WfsParameters\n) {\n  const { fieldName, patterns, patternKeys } = parameters\n  if (!fieldName && (!patterns || !patternKeys)) {\n    throw new Error(\n      'Incomplete WFS search configuration. Either \"fieldName\" or \"patterns\" and \"patternKeys\" are required.'\n    )\n  }\n  if (fieldName && patterns) {\n    console.error(\n      '@polar/lib-get-features: Using both fieldName and patterns for WFS search. These are mutually exclusive. Patterns will be ignored.'\n    )\n  }\n  // arrays of sets of key-value-pairs\n  const inputs: KeyValueSetArray = fieldName\n    ? [[[fieldName, inputValue]]]\n    : match(patterns, patternKeys, inputValue)\n\n  const body = buildWfsFilter(inputs, parameters)\n\n  const response = await fetch(encodeURI(url), { signal, method: 'POST', body })\n  errorCheck(response)\n  return parseWfsResponse(response, fieldName || patterns, !fieldName)\n}\n","import { rawLayerList } from '@masterportal/masterportalapi'\nimport { Feature } from 'ol'\n\nconst supportedFormats = ['OAF', 'WFS']\n\nexport const getVectorFeaturesByBboxRequest = ({\n  bbox,\n  fetchLayerId,\n  projectionCode,\n  signal,\n}: {\n  bbox: number[]\n  fetchLayerId: string\n  projectionCode: string\n  signal?: AbortSignal\n}) => {\n  const serviceDefinition = rawLayerList.getLayerWhere({ id: fetchLayerId })\n  if (!supportedFormats.includes(serviceDefinition.typ)) {\n    throw new Error(\n      `@polar/lib-get-features#getVectorFeaturesByBboxRequest: Layer with ID \"${fetchLayerId}\" of type \"${serviceDefinition.typ}\" was used to retrieve vector data, but is not within the range of supported types [${supportedFormats}].`\n    )\n  }\n\n  const [codeName, codeNumber] = projectionCode.split(':')\n\n  const url =\n    serviceDefinition.typ === 'OAF'\n      ? [\n          serviceDefinition.url,\n          'collections',\n          serviceDefinition.collection,\n          `items?f=json&limit=100&bbox=${bbox}&bbox-crs=http://www.opengis.net/def/crs/${codeName}/0/${codeNumber}&crs=http://www.opengis.net/def/crs/${codeName}/0/${codeNumber}`,\n        ].join('/')\n      : `${serviceDefinition.url}${[\n          `?service=${serviceDefinition.typ}`,\n          `version=${serviceDefinition.version}`,\n          `request=GetFeature`,\n          `srsName=${projectionCode}`,\n          `typeName=${serviceDefinition.featureType}`,\n          `bbox=${bbox},${projectionCode}`,\n        ].join('&')}`\n\n  return fetch(url, { signal })\n}\n\nexport const getVectorFeaturesByFeatureRequest = ({\n  feature,\n  fetchLayerId,\n  projectionCode,\n  signal,\n}: {\n  feature: Feature\n  fetchLayerId: string\n  projectionCode: string\n  signal?: AbortSignal\n}) => {\n  const bbox = feature.getGeometry()?.getExtent?.()\n\n  if (typeof bbox === 'undefined') {\n    throw new Error(\n      '@polar/lib-get-features#getVectorFeaturesByFeatureRequest: Given feature had no extent.'\n    )\n  }\n\n  return getVectorFeaturesByBboxRequest({\n    bbox,\n    fetchLayerId,\n    projectionCode,\n    signal,\n  })\n}\n","import { FeatureCollection } from 'geojson'\nimport { transform as transformCoordinates } from 'ol/proj'\nimport { BKGParameters } from '../../types'\n\nconst getRequestUrlQuery = (\n  inputValue: string,\n  queryParameters: BKGParameters\n): string => {\n  let query = `query=${inputValue.replace(' ', '+')}`\n  if (queryParameters) {\n    for (const [key, value] of Object.entries(queryParameters).filter(\n      ([key]) =>\n        key !== 'filter' &&\n        key !== 'epsg' &&\n        key !== 'apiKey' &&\n        key !== 'accessToken'\n    )) {\n      query += `&${key}=${value}`\n    }\n    if (\n      queryParameters.filter &&\n      Object.keys(queryParameters.filter).length > 0\n    ) {\n      query += '&filter='\n      query = Object.entries(queryParameters.filter)\n        .reduce((prev, [key, value]) => `${prev + key}:${value}&`, query)\n        .slice(0, -1)\n    }\n  }\n  return query\n}\n\nexport default function (\n  signal: AbortSignal,\n  url: string,\n  inputValue: string,\n  queryParameters: BKGParameters\n): Promise<FeatureCollection> {\n  const requestUrl = `${url}?` + getRequestUrlQuery(inputValue, queryParameters)\n  // TODO: Add proper type for fetch options\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const options: any = { signal }\n  // Note: https://stackoverflow.com/a/45640164/10995014\n  // TODO: These parameters should rather be implemented for all search methods instead of only for bkg.\n  if (queryParameters.accessToken) {\n    // TODO must be legal to match API\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    options.headers = { Authorization: `Bearer ${queryParameters.accessToken}` }\n  } else if (queryParameters.apiKey) {\n    // TODO must be legal to match API\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    options.headers = { 'X-Api-Key': queryParameters.apiKey }\n  }\n  return fetch(encodeURI(requestUrl), options)\n    .then((response: Response) => response.json())\n    .then((geo) => ({\n      ...geo,\n      features: geo.features.map((feature) => ({\n        ...feature,\n        geometry: {\n          ...feature.geometry,\n          coordinates:\n            queryParameters.epsg === 'EPSG:4326'\n              ? feature.geometry.coordinates\n              : transformCoordinates(\n                  feature.geometry.coordinates,\n                  'EPSG:4326',\n                  queryParameters.epsg\n                ),\n        },\n        epsg: queryParameters.epsg,\n        title: feature.properties.text,\n      })),\n    }))\n}\n","import { search, setGazetteerUrl } from '@masterportal/masterportalapi'\nimport { transform as transformCoordinates } from 'ol/proj'\nimport { FeatureCollection, Feature } from 'geojson'\nimport { MpApiParameters } from '../../types'\n\nconst getFeatureEPSG = (srsName: string): string => {\n  if (srsName.includes('::')) {\n    // Case 1 example: \"urn:ogc:def:crs:EPSG::25832\"\n    const parts = srsName.split('::')\n\n    return `EPSG:${parts[1]}`\n  } else if (srsName.includes(':')) {\n    // Case 2 example: \"EPSG:25832\"\n    return srsName\n  }\n  console.error(\n    '@polar/plugin-address-search: Unknown formatting of projection:',\n    srsName\n  )\n  throw Error('Unknown formatting of projection: ' + srsName)\n}\n\nconst mapFeatures = (\n  results,\n  signal: AbortSignal,\n  queryEpsg: string,\n  featureEpsg: string\n): Feature[] =>\n  results.map((result) => {\n    const { name, geometry } = result\n    const coordsAsIntegers = [\n      parseInt(geometry.coordinates[0]),\n      parseInt(geometry.coordinates[1]),\n    ]\n    const transformedCoordinates =\n      featureEpsg === queryEpsg\n        ? coordsAsIntegers\n        : transformCoordinates(coordsAsIntegers, featureEpsg, queryEpsg)\n\n    return {\n      ...result,\n      signal,\n      title: name,\n      epsg: featureEpsg,\n      geometry: {\n        ...geometry,\n        coordinates: transformedCoordinates,\n      },\n    }\n  })\n\nexport default async function (\n  signal: AbortSignal,\n  url: string,\n  input: string,\n  queryParameters: MpApiParameters\n): Promise<FeatureCollection> {\n  setGazetteerUrl(url)\n\n  try {\n    let results = await search(input, {\n      ...queryParameters,\n      searchStreetBeforeWord: false,\n      // always trigger search – control done on a higher level as minLength\n      minCharacters: 0,\n    })\n\n    // If no results were found without using the wildcard, try again with the wildcard\n    if (results.length === 0) {\n      results = await search(input, {\n        ...queryParameters,\n        // always trigger search – control done on a higher level as minLength\n        minCharacters: 0,\n      })\n      if (results.length === 0) {\n        return {\n          type: 'FeatureCollection',\n          features: [],\n        }\n      }\n    }\n\n    const firstResult = results[0]\n    const srsName = firstResult.properties.position.Point[0].$.srsName\n\n    const featureEPSG = getFeatureEPSG(srsName)\n\n    const featureCollection: FeatureCollection = {\n      type: 'FeatureCollection',\n      features: mapFeatures(results, signal, queryParameters.epsg, featureEPSG),\n    }\n\n    return featureCollection\n  } catch (error) {\n    console.error('@polar/plugin-address-search', error)\n    throw new Error('An error occurred while fetching the feature collection.')\n  }\n}\n","import { getWfsFeatures as wfs } from '@polar/lib-get-features'\nimport { SearchMethodFunction } from '@polar/lib-custom-types'\nimport bkg from './bkg'\nimport mpapi from './mpapi'\n\nexport const getMethodContainer = () => {\n  const methods = { bkg, wfs, mpapi }\n\n  const registerSearchMethods = (\n    additionalMethods: Record<string, SearchMethodFunction>\n  ): void =>\n    Object.entries(additionalMethods).forEach(([type, searchMethod]) => {\n      if (methods[type]) {\n        console.error(\n          `@polar/plugin-address-search: Method \"${type}\" already exists. Please choose a different name. Overrides are not allowed.`\n        )\n      } else {\n        methods[type] = searchMethod\n      }\n    })\n\n  function getSearchMethod(type: string): SearchMethodFunction {\n    const method = methods[type]\n    if (method) {\n      return method\n    }\n    throw new Error(\n      `@polar/plugin-address-search: The given type \"${type}\" does not define a valid searchMethod.`\n    )\n  }\n\n  return {\n    registerSearchMethods,\n    getSearchMethod,\n  }\n}\n","import debounce from 'lodash.debounce'\nimport { FeatureCollection, GeoJsonProperties, Geometry } from 'geojson'\nimport { PolarActionTree } from '@polar/lib-custom-types'\nimport { SearchResultSymbols } from '../'\nimport { getMethodContainer } from '../utils/searchMethods/getSearchMethod'\nimport {\n  AddressSearchGetters,\n  AddressSearchState,\n  AddressSearchAutoselect,\n} from '../types'\n\nconst getResultsFromPromises = (\n  promises: PromiseSettledResult<\n    FeatureCollection<Geometry, GeoJsonProperties>\n  >[],\n  abortController: AbortController\n) => {\n  const results = promises.reduce((accumulator, promise, index) => {\n    if (promise.status === 'fulfilled') {\n      return [\n        ...accumulator,\n        {\n          value: promise.value,\n          index,\n        },\n      ]\n    }\n    return accumulator\n  }, [] as object[])\n\n  // only print errors if search was not aborted\n  if (!abortController.signal.aborted) {\n    ;(\n      promises.filter(\n        ({ status }) => status === 'rejected'\n      ) as PromiseRejectedResult[]\n    ).forEach(({ reason }) =>\n      console.error(\n        '@polar/plugin-address-search: An error occurred while sending a request: ',\n        reason\n      )\n    )\n  }\n\n  return results\n}\n\nexport const makeActions = () => {\n  let abortController\n  let debouncedLoad\n  let methodContainer\n\n  const actions: PolarActionTree<AddressSearchState, AddressSearchGetters> = {\n    setupModule({ getters }): void {\n      debouncedLoad = debounce(\n        () => this.dispatch('plugin/addressSearch/load'),\n        getters.waitMs\n      ).bind(this)\n\n      // searchMethod without url is invalid – print error\n      getters.searchMethods\n        .filter(({ url }) => !url)\n        .forEach((miss) =>\n          console.error(\n            `@polar/plugin-address-search: A specification is missing an URL: (${JSON.stringify(\n              miss\n            )})`\n          )\n        )\n\n      methodContainer = getMethodContainer()\n\n      // add custom added search implementations, if any configured\n      const customSearchMethods =\n        getters.addressSearchConfiguration.customSearchMethods\n      if (customSearchMethods) {\n        methodContainer.registerSearchMethods(\n          Object.fromEntries(\n            Object.entries(customSearchMethods).map(([key, value]) => [\n              key,\n              value.bind(this),\n            ])\n          )\n        )\n      }\n    },\n    setSelectedGroupId(\n      { commit, dispatch, state },\n      selectedGroupId: string\n    ): void {\n      commit('setSelectedGroupId', selectedGroupId)\n\n      /* whenever the selected search group name changes,\n       * redo input – if it triggers a search, the user\n       * will probably want to see the results in new\n       * search service group */\n      commit('setSearchResults', SearchResultSymbols.NO_SEARCH)\n      dispatch('input', state.inputValue)\n    },\n    input({ commit, dispatch }, input: string): void {\n      commit('setInputValue', input)\n      dispatch('abortAndRequest')\n    },\n    abortAndRequest() {\n      if (abortController) {\n        abortController.abort()\n        abortController = undefined\n      }\n      debouncedLoad()\n    },\n    clear({ commit }): void {\n      commit('setSearchResults', SearchResultSymbols.NO_SEARCH)\n      commit('setChosenAddress', null)\n    },\n    load({\n      state: { inputValue },\n      rootGetters,\n      getters,\n      commit,\n      dispatch,\n    }): Promise<void> | void {\n      const activeSearchMethods = getters.selectedGroup\n      // Value is null when the input is cleared; extra undefined check for safety\n      if (\n        typeof inputValue === 'undefined' ||\n        inputValue === null ||\n        inputValue.length < getters.minLength\n      ) {\n        commit('setSearchResults', SearchResultSymbols.NO_SEARCH)\n        dispatch('indicateLoading', false)\n        return\n      }\n      dispatch('indicateLoading', true)\n      abortController = new AbortController()\n      const localAbortControllerReference = abortController\n      const searchPromises: Promise<FeatureCollection>[] =\n        activeSearchMethods.map((method) =>\n          methodContainer.getSearchMethod(method.type)(\n            abortController.signal,\n            method.url,\n            inputValue,\n            {\n              ...method.queryParameters,\n              epsg: rootGetters.configuration.epsg,\n              map: rootGetters.map,\n            }\n          )\n        )\n      return Promise.allSettled(searchPromises)\n        .then((results) =>\n          commit(\n            'setSearchResults',\n            getResultsFromPromises(results, localAbortControllerReference)\n          )\n        )\n        .catch((error: Error) => {\n          console.error(\n            '@polar/plugin-address-search: An error occurred while searching.',\n            error\n          )\n          commit('setSearchResults', SearchResultSymbols.ERROR)\n        })\n        .finally(() => dispatch('indicateLoading', false))\n    },\n    indicateLoading(\n      { getters: { addressSearchConfiguration }, commit },\n      loading: boolean\n    ): void {\n      commit('setLoading', loading)\n      const { addLoading, removeLoading } = addressSearchConfiguration\n      if (loading && addLoading && addLoading.length > 0) {\n        commit(addLoading, 'AddressSearch', { root: true })\n      } else if (!loading && removeLoading && removeLoading.length > 0) {\n        commit(removeLoading, 'AddressSearch', { root: true })\n      }\n    },\n    selectResult(actionContext, payload): void {\n      const { commit, getters } = actionContext\n      const { feature, categoryId } = payload\n      const customMethod =\n        getters.addressSearchConfiguration.customSelectResult?.[categoryId]\n      if (customMethod) {\n        customMethod.call(this, actionContext, payload)\n      } else {\n        // default behaviour\n        commit('setChosenAddress', feature)\n        commit('setInputValue', feature.title)\n        commit('setSearchResults', SearchResultSymbols.NO_SEARCH)\n      }\n    },\n    escapeSelection({ commit }): void {\n      commit('setSearchResults', SearchResultSymbols.NO_SEARCH)\n    },\n\n    /**\n     * `search` is meant for programmatic access. User search is triggered from\n     * the `input` action effects and features a debouncing mechanism.\n     * @param vuexParameters - vuex standard parameter object\n     * @param payload - input to search for and an autoselect mode\n     */\n    async search(\n      { state, commit, dispatch, getters },\n      {\n        input,\n        autoselect,\n      }: { input: string; autoselect: AddressSearchAutoselect }\n    ): Promise<void> {\n      commit('setInputValue', input)\n      if (abortController) {\n        abortController.abort()\n        abortController = undefined\n      }\n      await dispatch('load')\n\n      if (typeof state.searchResults === 'symbol') {\n        // error or word too short, nothing to do\n        return\n      }\n\n      const firstFound = state.searchResults.find(\n        ({ value }) => value.features.length\n      )\n      const firstFeatures = firstFound?.value?.features || []\n\n      if (\n        (autoselect === 'first' && firstFeatures.length >= 1) ||\n        (autoselect === 'only' && firstFeatures.length === 1)\n      ) {\n        dispatch('selectResult', {\n          feature: firstFeatures[0],\n          categoryId:\n            getters.selectedGroup[firstFound?.index || 0].categoryId || '',\n        })\n      }\n    },\n  }\n\n  return actions\n}\n","export default {\n  ERROR: Symbol('error'),\n  NO_SEARCH: Symbol('noSearch'),\n}\n","import { AddressSearchState } from '../types'\nimport SearchResults from '../utils/searchResultSymbols'\n\nexport const getInitialState = (): AddressSearchState => ({\n  chosenAddress: null,\n  inputValue: '',\n  loading: false,\n  searchResults: SearchResults.NO_SEARCH,\n  selectedGroupId: null,\n})\n","import { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport {\n  AddressSearchConfiguration,\n  AddressSearchGroupProperties,\n  PolarGetterTree,\n  SearchMethodConfiguration,\n} from '@polar/lib-custom-types'\nimport SearchResults from '../utils/searchResultSymbols'\nimport {\n  AddressSearchGetters,\n  AddressSearchState,\n  FeatureListWithCategory,\n} from '../types'\nimport { getInitialState } from './state'\n\nconst defaultGroupProperties: AddressSearchGroupProperties = {\n  label: 'plugins.addressSearch.defaultGroup',\n  placeholder: '',\n  hint: '',\n  resultDisplayMode: 'mixed',\n  limitResults: Number.MAX_SAFE_INTEGER,\n}\n\nconst defaultConfiguration: Partial<AddressSearchConfiguration> = {\n  minLength: 0,\n  waitMs: 0,\n  searchMethods: [] as SearchMethodConfiguration[],\n}\n\n/** same pattern for label/hint/placeholder retrieval */\nconst retrieve = ({\n  searchMethodsByGroupId,\n  selectedGroupProperties,\n  selectedGroupId,\n  key,\n}): string => {\n  return (\n    selectedGroupProperties[key] ||\n    // if not set, first entry defines [key] value\n    searchMethodsByGroupId[selectedGroupId][0][key] ||\n    defaultGroupProperties[key]\n  )\n}\n\nconst getters: PolarGetterTree<AddressSearchState, AddressSearchGetters> = {\n  ...generateSimpleGetters(getInitialState()),\n  /** true if any service of selected group yielded features */\n  featuresAvailable(_, { searchResults }) {\n    return (\n      Array.isArray(searchResults) &&\n      searchResults.length > 0 &&\n      searchResults.some(\n        ({ value }) =>\n          Array.isArray(value?.features) && value.features?.length > 0\n      )\n    )\n  },\n  addressSearchConfiguration(_, __, ___, rootGetters) {\n    return {\n      ...defaultConfiguration,\n      ...(rootGetters.configuration?.addressSearch || {}),\n    }\n  },\n  afterResultComponent(_, { addressSearchConfiguration }) {\n    return addressSearchConfiguration.afterResultComponent || null\n  },\n  component: (_, getters) =>\n    getters.addressSearchConfiguration.component || null,\n  minLength(_, { addressSearchConfiguration }) {\n    return addressSearchConfiguration.minLength\n  },\n  waitMs(_, { addressSearchConfiguration }) {\n    return addressSearchConfiguration.waitMs\n  },\n  searchMethods(_, { addressSearchConfiguration }) {\n    return addressSearchConfiguration.searchMethods\n  },\n  searchMethodsByGroupId(_, { searchMethods }) {\n    const searchMethodGroups = {}\n    searchMethods.forEach((searchMethod) => {\n      const searchMethodName = searchMethod.groupId || 'defaultGroup'\n      if (searchMethodGroups[searchMethodName]) {\n        searchMethodGroups[searchMethodName].push(searchMethod)\n      } else {\n        searchMethodGroups[searchMethodName] = [searchMethod]\n      }\n    })\n    return searchMethodGroups\n  },\n  groupIds(_, { searchMethodsByGroupId }) {\n    return Object.keys(searchMethodsByGroupId)\n  },\n  selectedGroupId({ selectedGroupId }, { groupIds }) {\n    return selectedGroupId || groupIds[0]\n  },\n  selectedGroup(_, { searchMethodsByGroupId, selectedGroupId }) {\n    return searchMethodsByGroupId[selectedGroupId]\n  },\n  getGroupProperties(_, { addressSearchConfiguration }) {\n    return (groupId) => {\n      const selectedGroupProperties =\n        addressSearchConfiguration.groupProperties?.[groupId] || {}\n\n      if (groupId === 'defaultGroup') {\n        // defaultGroup is only one with predefined values\n        return {\n          ...defaultGroupProperties,\n          ...selectedGroupProperties,\n        }\n      }\n      return selectedGroupProperties\n    }\n  },\n  selectedGroupProperties(_, { selectedGroupId, getGroupProperties }) {\n    return getGroupProperties(selectedGroupId)\n  },\n  limitResults(_, { selectedGroupProperties }) {\n    return (\n      selectedGroupProperties.limitResults ||\n      defaultGroupProperties.limitResults\n    )\n  },\n  categoryProperties(_, { addressSearchConfiguration }) {\n    return addressSearchConfiguration.categoryProperties || {}\n  },\n  label(\n    _,\n    { searchMethodsByGroupId, selectedGroupProperties, selectedGroupId }\n  ) {\n    return retrieve({\n      searchMethodsByGroupId,\n      selectedGroupProperties,\n      selectedGroupId,\n      key: 'label',\n    })\n  },\n  placeholder(\n    _,\n    { searchMethodsByGroupId, selectedGroupProperties, selectedGroupId }\n  ) {\n    return retrieve({\n      searchMethodsByGroupId,\n      selectedGroupProperties,\n      selectedGroupId,\n      key: 'placeholder',\n    })\n  },\n  selectedGroupHint(\n    _,\n    { searchMethodsByGroupId, selectedGroupId, selectedGroupProperties }\n  ) {\n    return retrieve({\n      searchMethodsByGroupId,\n      selectedGroupProperties,\n      selectedGroupId,\n      key: 'hint',\n    })\n  },\n  hint(\n    { inputValue, searchResults },\n    { selectedGroupHint, minLength, featuresAvailable, loading }\n  ) {\n    if (loading) {\n      return 'plugins.addressSearch.hint.loading'\n    }\n\n    if (searchResults === SearchResults.ERROR) {\n      return 'plugins.addressSearch.hint.error'\n    }\n\n    if (inputValue && inputValue.length > 0 && inputValue.length < minLength) {\n      return 'plugins.addressSearch.hint.tooShort'\n    }\n\n    if (searchResults !== SearchResults.NO_SEARCH && !featuresAvailable) {\n      return 'plugins.addressSearch.hint.noResults'\n    }\n\n    return selectedGroupHint\n  },\n  hasMultipleGroups(_, { groupIds }) {\n    return groupIds.length > 1\n  },\n  groupSelectOptions(_, { searchMethodsByGroupId, getGroupProperties }) {\n    return Object.keys(searchMethodsByGroupId).map((key) => ({\n      value: key,\n      text: retrieve({\n        searchMethodsByGroupId,\n        selectedGroupProperties: getGroupProperties(key),\n        selectedGroupId: key,\n        key: 'label',\n      }),\n    }))\n  },\n  featureListsWithCategory(\n    { searchResults },\n    { selectedGroup, categoryProperties }\n  ) {\n    if (typeof searchResults === 'symbol') {\n      return [] as FeatureListWithCategory[]\n    }\n    return searchResults.map((entry) => ({\n      features: entry.value.features,\n      categoryId: selectedGroup[entry.index]?.categoryId || '',\n      category:\n        categoryProperties[selectedGroup[entry.index]?.categoryId || '']\n          ?.label || '',\n    }))\n  },\n  focusAfterSearch: (_, __, ___, rootGetters) =>\n    rootGetters.configuration?.addressSearch?.focusAfterSearch || false,\n}\n\nexport default getters\n","import { generateSimpleMutations } from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { AddressSearchGetters, AddressSearchState } from '../types'\nimport { makeActions } from './actions'\nimport getters from './getters'\nimport { getInitialState } from './state'\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<AddressSearchState, AddressSearchGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: makeActions(),\n    getters,\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { AddressSearchConfiguration } from '@polar/lib-custom-types'\n\nimport { AddressSearch } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nimport SearchContainer from './components/SearchContainer.vue'\nimport SearchResultSymbols from './utils/searchResultSymbols'\nexport { SearchContainer, SearchResultSymbols }\n\nexport type {\n  AddressSearchState,\n  AddressSearchGetters,\n  BKGParameters,\n  MpApiParameters,\n} from './types'\n\nexport default (options: AddressSearchConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'addressSearch',\n    plugin: AddressSearch,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <v-btn\n    class=\"buttonSecondary\"\n    x-small\n    fab\n    color=\"secondary\"\n    :title=\"\n      $t(`plugins.attributions.button.${windowIsOpen ? 'close' : 'open'}Title`)\n    \"\n    @click=\"toggleMapInfo\"\n  >\n    <v-icon color=\"secondaryContrast\">{{ mapInfoIcon }}</v-icon>\n  </v-btn>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\n\nexport default Vue.extend({\n  name: 'AttributionButton',\n  computed: {\n    ...mapGetters('plugin/attributions', ['mapInfoIcon', 'windowIsOpen']),\n  },\n  methods: {\n    ...mapMutations('plugin/attributions', ['setWindowIsOpen']),\n    toggleMapInfo() {\n      this.setWindowIsOpen(!this.windowIsOpen)\n    },\n  },\n})\n</script>\n\n<style scoped lang=\"scss\">\n.buttonSecondary.v-btn:hover {\n  border: solid var(--polar-secondary-contrast) !important;\n  outline: solid var(--polar-secondary);\n  outline-offset: 1px;\n}\n.buttonSecondary.v-btn:focus {\n  border: solid var(--polar-secondary-contrast) !important;\n  outline: solid var(--polar-secondary);\n  outline-offset: 1px;\n}\n</style>\n","<template>\n  <v-scroll-x-reverse-transition>\n    <v-card\n      :class=\"renderType === 'footer' ? 'polar-plugin-attributions-footer' : ''\"\n      dense\n      filled\n      :width=\"width\"\n      :color=\"color\"\n      :max-width=\"maxWidth\"\n    >\n      <v-card-title v-if=\"renderType !== 'footer'\">\n        {{ $t('plugins.attributions.title') }}\n      </v-card-title>\n      <!-- NOTE: The usage of v-html is considered unsafe as it\n        opens a window for XSS attacks. In this case, the information is retrieved\n        from the mapConfiguration. This is fine by configuration. -->\n      <!-- eslint-disable-next-line vue/no-v-html vue/no-v-text-v-html-on-component -->\n      <v-card-text ref=\"sources\" v-html=\"cardText\" />\n    </v-card>\n  </v-scroll-x-reverse-transition>\n</template>\n\n<script lang=\"ts\">\nimport { t } from 'i18next'\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport noop from '@repositoryname/noop'\n\nexport default Vue.extend({\n  name: 'AttributionContent',\n  computed: {\n    ...mapGetters([\n      'clientWidth',\n      'hasSmallWidth',\n      'hasWindowSize',\n      'language',\n    ]),\n    ...mapGetters('plugin/attributions', [\n      'mapInfo',\n      'renderType',\n      'windowWidth',\n    ]),\n    cardText(): string {\n      noop(this.language)\n      return this.mapInfo\n        .map((x) =>\n          t(x, {\n            MONTH: `${new Date().getMonth() + 1}`.padStart(2, '0'),\n            YEAR: new Date().getFullYear().toString(),\n          })\n        )\n        .join('<br>')\n    },\n    renderIndependently() {\n      return this.renderType === 'independent'\n    },\n    color() {\n      return this.renderType === 'independent' || this.renderType === 'footer'\n        ? '#ffffffdd'\n        : ''\n    },\n    maxWidth() {\n      return this.renderIndependently\n        ? this.hasWindowSize && this.hasSmallWidth\n          ? this.clientWidth * 0.85\n          : 1080\n        : 'inherit'\n    },\n    width() {\n      return this.renderIndependently ? this.windowWidth : 'inherit'\n    },\n  },\n  mounted() {\n    // NOTE: sources will always be defined unless someone removes the ref from the v-card-text element\n    if (\n      (this.$refs.sources as HTMLElement).getElementsByTagName('a').length > 0\n    ) {\n      this.$nextTick(() =>\n        (this.$refs.sources as HTMLElement)\n          .getElementsByTagName('a')[0]\n          .focus({ focusVisible: true })\n      )\n    }\n  },\n})\n</script>\n\n<style scoped lang=\"scss\">\n.polar-plugin-attributions-footer {\n  margin: 4px;\n}\n.polar-plugin-attributions-footer .v-card__text {\n  font-size: 0.8rem;\n  padding: 2px;\n  line-height: 1.1;\n}\n</style>\n","<template>\n  <div\n    v-if=\"renderType === 'independent'\"\n    class=\"polar-plugin-attributions-wrapper\"\n  >\n    <template v-if=\"openLeft\">\n      <AttributionContent v-if=\"windowIsOpen\" class=\"mr-2\" />\n      <component :is=\"buttonComponent\" />\n    </template>\n    <template v-else>\n      <component :is=\"buttonComponent\" />\n      <AttributionContent v-if=\"windowIsOpen\" class=\"ml-2\" />\n    </template>\n  </div>\n  <AttributionContent v-else></AttributionContent>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport AttributionButton from './AttributionButton.vue'\nimport AttributionContent from './AttributionContent.vue'\n\nexport default Vue.extend({\n  name: 'AttributionsPlugin',\n  components: {\n    AttributionButton,\n    AttributionContent,\n  },\n  computed: {\n    ...mapGetters('plugin/attributions', [\n      'buttonComponent',\n      'configuration',\n      'renderType',\n      'windowIsOpen',\n    ]),\n    // If the button is rendered independent and on the right, the content should be opened to the left\n    openLeft() {\n      return this.configuration.layoutTag?.includes('right')\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-plugin-attributions-wrapper {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  align-items: flex-end;\n  padding: 6px;\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    attributions: {\n      button: {\n        closeTitle: 'Quellennachweis ausblenden',\n        openTitle: 'Quellennachweis einblenden',\n      },\n      sourceCode:\n        '<span><a href=\"https://github.com/Dataport/polar\" target=\"_blank\">Quellcode</a> lizenziert unter <a href=\"https://github.com/Dataport/polar/blob/main/LICENSE\" target=\"_blank\">EUPL v1.2</a></span>',\n      title: 'Quellennachweis',\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    attributions: {\n      button: {\n        closeTitle: 'Hide Attributions',\n        openTitle: 'Show Attributions',\n      },\n      sourceCode:\n        '<span><a href=\"https://github.com/Dataport/polar\" target=\"_blank\">Source code</a> licensed under <a href=\"https://github.com/Dataport/polar/blob/main/LICENSE\" target=\"_blank\">EUPL v1.2</a></span>',\n      title: 'Attributions',\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import { Collection } from 'ol'\nimport BaseLayer from 'ol/layer/Base'\nimport { Attribution } from '@polar/lib-custom-types'\n\n/**\n * Returns a string which contains the attributions for every visible Layer\n * @param layers - the visible layers which are stored in the state\n * @param attributions - the List of Attributions for this Map, which is stored in the state\n * @param staticAttributions - list of attributions to always display\n * @returns contains all (copyRight-)information of this Map.\n */\nexport function updateMapInfo(\n  layers: string[],\n  attributions: Attribution[],\n  staticAttributions: string[]\n): string[] {\n  return buildMapInfo(\n    getVisibleAttributions(layers, attributions),\n    staticAttributions\n  )\n}\n\n/**\n * looks for all Layers that are currently visible\n * @param layers - contains all Layers\n * @returns an array of LayerIDs\n */\nexport function getVisibleLayers(layers: Collection<BaseLayer>): string[] {\n  const layerIDs: string[] = []\n  layers.forEach((layer) => {\n    // Only layers added through the services include the id property\n    if (layer.getVisible() && layer.get('id')) {\n      layerIDs.push(layer.get('id'))\n    }\n  })\n  return layerIDs\n}\n\n/**\n * Builds a string which contains the attributions for every visible Layer\n * @param infos - are all visible Layers\n * @param staticAttributions - list of attributions to always display\n * @returns an array of localizing string which contain all (copyRight-)information of this Map.\n */\nfunction buildMapInfo(\n  infos: Attribution[],\n  staticAttributions: string[] = []\n): string[] {\n  const text: string[] = []\n  infos.forEach((attribution) => {\n    text.push(attribution.title)\n  })\n  staticAttributions.forEach((attribution) => text.push(attribution))\n  text.push('plugins.attributions.sourceCode')\n  return text\n}\n\n/**\n * checks every layer (passed in layers) for visibility and returns an Attribution[] for every visible Layer\n * @param layers - is an array of LayerIDs (number[]) for visible Layers\n * @param attributions - is an array of all Attributions for this Map\n * @returns an array for all attributions whose id matches the id of a visible layer\n */\nfunction getVisibleAttributions(\n  layers: string[],\n  attributions: Attribution[]\n): Attribution[] {\n  const visibleAttributions: Attribution[] = []\n  attributions.forEach((attribution) => {\n    if (layers.includes(attribution.id)) {\n      visibleAttributions.push(attribution)\n    }\n  })\n  return visibleAttributions\n}\n\n/**\n * Formats the attribution-string and replaces <YEAR> with the current year and\n * <MONTH> with the current month.\n * @param text - the attribution text defined in the mapConfig\n * @returns a formatted string, which can be displayed in the Attributions\n */\nexport function formatAttributionText(text: string): string {\n  const now = new Date()\n  return text\n    .replaceAll('<YEAR>', now.getFullYear().toString())\n    .replaceAll('<MONTH>', `${now.getMonth() + 1}`.padStart(2, '0'))\n}\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport * as lib from '../utils/lib'\nimport { AttributionsGetters, AttributionsState } from '../types'\nimport AttributionButton from '../components/AttributionButton.vue'\n\nconst getInitialState = (): AttributionsState => ({\n  layer: [],\n  attributions: [],\n  windowIsOpen: false,\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<AttributionsState, AttributionsGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({\n        commit,\n        dispatch,\n        getters: { listenToChanges, renderType },\n        rootGetters,\n      }): void {\n        const { map } = rootGetters\n        listenToChanges.forEach((listenPath) =>\n          this.watch(\n            () => rootGetters[listenPath],\n            () => dispatch('setLayer'),\n            { deep: true }\n          )\n        )\n        const layer = map.getLayers()\n        layer.on('add', () => dispatch('setLayer'))\n        layer.on('add', () => dispatch('setAttributions'))\n        layer.on('change', () => dispatch('setLayer'))\n        map.on('moveend', () => dispatch('setLayer'))\n\n        dispatch('setLayer')\n        dispatch('setAttributions')\n\n        if (\n          typeof rootGetters.configuration.attributions?.initiallyOpen ===\n            'boolean' &&\n          renderType === 'independent'\n        ) {\n          commit(\n            'setWindowIsOpen',\n            rootGetters.configuration.attributions.initiallyOpen\n          )\n        }\n      },\n      setLayer({ rootGetters: { map }, commit }) {\n        commit('setLayer', lib.getVisibleLayers(map.getLayers()))\n      },\n      setAttributions({ rootGetters: { configuration }, commit }) {\n        commit(\n          'setAttributions',\n          configuration.attributions?.layerAttributions === undefined\n            ? []\n            : configuration.attributions.layerAttributions.map((a) => ({\n                ...a,\n                title: lib.formatAttributionText(a.title),\n              }))\n        )\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      buttonComponent: (_, getters) =>\n        getters.configuration.buttonComponent || AttributionButton,\n      configuration: (_, __, ___, rootGetters) =>\n        rootGetters.configuration.attributions || {},\n      listenToChanges: (_, getters) =>\n        getters.configuration.listenToChanges || [],\n      mapInfo: (_, { layer, attributions, staticAttributions }) =>\n        lib.updateMapInfo(layer, attributions, staticAttributions),\n      mapInfoIcon: (_, getters) => {\n        const { icons } = getters.configuration\n        return getters.windowIsOpen\n          ? icons?.close ?? 'fa-chevron-right'\n          : icons?.open ?? 'fa-regular fa-copyright'\n      },\n      renderType: (_, getters) =>\n        getters.configuration.renderType || 'independent',\n      staticAttributions: (_, getters) =>\n        getters.configuration.staticAttributions || [],\n      windowWidth: (_, getters) => getters.configuration.windowWidth || 500,\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { AttributionsConfiguration } from '@polar/lib-custom-types'\n\nimport { Attributions } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nimport AttributionButton from './components/AttributionButton.vue'\nexport { AttributionButton }\n\nexport default (options: AttributionsConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'attributions',\n    plugin: Attributions,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <div>\n    <v-card-title>{{ $t('plugins.draw.title.options') }}</v-card-title>\n    <v-card-actions>\n      <v-col>\n        <v-btn\n          class=\"polar-draw-color-picker-button\"\n          @click=\"toggleColorPicker\"\n        >\n          <v-label>{{ $t('plugins.draw.options.stroke') }}</v-label>\n          <v-icon right>\n            {{\n              isColorPickerVisible\n                ? 'fa-solid fa-chevron-up'\n                : 'fa-solid fa-chevron-down'\n            }}\n          </v-icon>\n        </v-btn>\n        <v-expand-transition>\n          <v-color-picker\n            v-if=\"isColorPickerVisible\"\n            class=\"polar-draw-color-picker\"\n            :value=\"selectedStrokeColor\"\n            @input=\"setSelectedStrokeColor\"\n          ></v-color-picker>\n        </v-expand-transition>\n      </v-col>\n    </v-card-actions>\n  </div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\n\nexport default Vue.extend({\n  name: 'DrawOptions',\n  data: () => ({\n    isColorPickerVisible: false,\n  }),\n  computed: {\n    ...mapGetters('plugin/draw', ['selectedStrokeColor']),\n  },\n  methods: {\n    ...mapActions('plugin/draw', ['setSelectedStrokeColor']),\n    toggleColorPicker() {\n      this.isColorPickerVisible = !this.isColorPickerVisible\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.v-card__title {\n  padding-top: 0;\n  padding-bottom: 0;\n  font-size: 100%;\n}\n\n.v-card__actions {\n  padding-top: 0;\n}\n\n.polar-draw-color-picker {\n  margin-top: 0.5em;\n}\n.polar-draw-color-picker-button {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  border: solid transparent;\n  color: var(--polar-secondary);\n  background-color: var(--polar-secondary-contrast);\n\n  label {\n    color: var(--polar-secondary);\n  }\n}\n</style>\n","<template>\n  <v-scroll-x-reverse-transition>\n    <v-card class=\"polar-draw-menu\" :style=\"flexStyle\">\n      <RadioCard\n        id=\"draw-mode\"\n        title=\"plugins.draw.title.mode\"\n        :initial-value=\"mode\"\n        :values=\"selectableModes\"\n        :change-callback=\"setMode\"\n      ></RadioCard>\n      <RadioCard\n        v-if=\"mode === 'draw'\"\n        id=\"draw-drawMode\"\n        title=\"plugins.draw.title.drawMode\"\n        :initial-value=\"drawMode\"\n        :values=\"selectableDrawModes\"\n        :change-callback=\"setDrawMode\"\n      ></RadioCard>\n      <DrawOptions v-if=\"showDrawOptions\" />\n      <RadioCard\n        v-if=\"showMeasureOptions\"\n        id=\"draw-measure\"\n        title=\"plugins.draw.title.measureMode\"\n        :initial-value=\"measureMode\"\n        :values=\"selectableMeasureModes\"\n        :change-callback=\"setMeasureMode\"\n      ></RadioCard>\n      <v-subheader v-if=\"showSizeSlider\" class=\"align-end\">{{\n        $t('plugins.draw.label.textSize')\n      }}</v-subheader>\n      <v-slider\n        v-if=\"showSizeSlider\"\n        class=\"mx-4\"\n        :tick-labels=\"fontSizes\"\n        :max=\"fontSizes.length - 1\"\n        :value=\"selectedSize\"\n        step=\"1\"\n        ticks=\"always\"\n        tick-size=\"4\"\n        @change=\"setSelectedSize\"\n      ></v-slider>\n      <v-textarea\n        v-if=\"showTextInput\"\n        :value=\"textInput\"\n        class=\"ml-4\"\n        rows=\"1\"\n        background-color=\"grey lighten-3\"\n        @input=\"setTextInput\"\n      ></v-textarea>\n    </v-card>\n  </v-scroll-x-reverse-transition>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\nimport { RadioCard } from '@polar/core'\nimport DrawOptions from './DrawOptions.vue'\n\nexport default Vue.extend({\n  name: 'PolarDraw',\n  components: {\n    RadioCard,\n    DrawOptions,\n  },\n  data: () => ({\n    isColorPickerVisible: false,\n  }),\n  computed: {\n    ...mapGetters(['hasSmallHeight', 'hasWindowSize']),\n    ...mapGetters('plugin/draw', [\n      'drawMode',\n      'fontSizes',\n      'measureMode',\n      'mode',\n      'selectableDrawModes',\n      'selectableMeasureModes',\n      'selectableModes',\n      'showDrawOptions',\n      'showMeasureOptions',\n      'selectedSize',\n      'showSizeSlider',\n      'showTextInput',\n      'textInput',\n    ]),\n    flexStyle(): string {\n      return `flex-direction: ${\n        this.hasWindowSize && this.hasSmallHeight ? 'row-reverse' : 'column'\n      }`\n    },\n  },\n  methods: {\n    ...mapActions('plugin/draw', [\n      'setDrawMode',\n      'setMeasureMode',\n      'setMode',\n      'setSelectedSize',\n      'setTextInput',\n    ]),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-draw-menu {\n  display: flex;\n  flex-direction: column;\n  max-width: inherit;\n}\n\n.mx-4 {\n  font-size: 80%;\n  height: 32px;\n}\n\n.align-end {\n  height: 32px;\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    draw: {\n      mode: {\n        none: 'Keine Interaktion',\n        draw: 'Zeichnen',\n        measure: 'Zeichnen und Messen',\n        write: 'Zeichnen und Schreiben',\n        writeAndMeasure: 'Zeichnen, Schreiben und Messen',\n        lasso: 'Lasso',\n        duplicate: 'Duplizieren',\n        cut: 'Polygone auftrennen',\n        merge: 'Polygone kombinieren',\n        edit: 'Bearbeiten',\n        translate: 'Verschieben',\n        delete: 'Löschen',\n      },\n      drawMode: {\n        circle: 'Kreis',\n        lineString: 'Linie',\n        point: 'Punkt',\n        polygon: 'Polygon',\n        text: 'Text',\n      },\n      measureMode: {\n        none: 'Keine Messung',\n        metres: 'm',\n        metresArea: 'm / m²',\n        kilometres: 'km',\n        kilometresArea: 'km / km²',\n        hectares: 'km / ha',\n      },\n      metaInformationRetrieval: {\n        errorToast:\n          'Der Bezug von Metadaten zur gezeichneten Geometrie ist fehlgeschlagen. Die Geometrie wird ohne Metadaten weitergereicht.',\n      },\n      options: {\n        stroke: 'Linienfarbe',\n      },\n      title: {\n        drawMode: 'Zeichenmodus',\n        mode: 'Modus',\n        measureMode: 'Messmodus',\n        options: 'Zeichenoptionen',\n      },\n      label: {\n        textSize: 'Textgröße (px) wählen:',\n      },\n      lasso: {\n        layerRejected:\n          'Die Antwort des Layers \"{{id}}\" konnte nicht gelesen werden. Es wurden keine Geometrien aus diesem Layer bezogen.',\n        internalError:\n          'Ein unerwarteter Fehler ist in der Verarbeitung der Lasso-Daten aufgetreten.',\n      },\n      cut: {\n        error: {\n          cutFailed:\n            'Das Polygon konnte aufgrund eines unbekannten Fehlers leider nicht geschnitten werden.',\n        },\n        warn: {\n          unevenCut:\n            'Leider konnte kein Schnitt hergestellt werden, da entweder der Start- oder Endpunkt der Schnittkante innerhalb des zu schneidenden Polygons lag, oder kein Polygon geschnitten wurde. Bitte versuchen Sie es erneut.',\n        },\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    draw: {\n      mode: {\n        none: 'No interaction',\n        draw: 'Draw',\n        measure: 'Draw and measure',\n        write: 'Draw and write',\n        writeAndMeasure: 'Draw, write and measure',\n        lasso: 'Lasso',\n        duplicate: 'Duplicate',\n        cut: 'Cut polygons',\n        merge: 'Merge polygons',\n        edit: 'Edit',\n        translate: 'Translate',\n        delete: 'Delete',\n      },\n      drawMode: {\n        circle: 'Circle',\n        lineString: 'Line',\n        point: 'Point',\n        polygon: 'Polygon',\n        text: 'Text',\n      },\n      measureMode: {\n        none: 'No measure',\n        metres: 'm',\n        metresArea: 'm / m²',\n        kilometres: 'km',\n        kilometresArea: 'km / km²',\n        hectares: 'km / ha',\n      },\n      options: {\n        stroke: 'Stroke color',\n      },\n      title: {\n        drawMode: 'Drawing mode',\n        mode: 'Mode',\n        measureMode: 'Measure mode',\n        options: 'Draw options',\n      },\n      label: {\n        textSize: 'Choose text size (px):',\n      },\n      lasso: {\n        layerRejected:\n          'The response of layer \"{{id}}\" could not be read. No geometries were fetched from that layer.',\n        internalError:\n          'An unexpected error occured in the processing of lasso data.',\n      },\n      cut: {\n        error: {\n          cutFailed: 'The polygon could not be cut due to unknown reasons.',\n        },\n        warn: {\n          unevenCut:\n            'No cut could be produced since either the start or end point of the cut line is within the polygon to cut, or no polygon was cut. Please try again.',\n        },\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import VectorLayer from 'ol/layer/Vector'\nimport { Circle as CircleStyle, Fill, Stroke, Style } from 'ol/style'\nimport { DrawStyle } from '@polar/lib-custom-types'\nimport { PolarVectorOptions } from '../types'\n\n/**\n * Creates a new VectorLayer.\n * If certain style parameters, they are used instead of the default styling.\n *\n * @returns VectorLayer for the drawn features to reside in.\n */\nexport default function (source, style?: DrawStyle) {\n  const options: PolarVectorOptions = { source }\n  if (style) {\n    // TODO: The styling for Stroke and Circle have many more options.\n    //  Thus, it could be interesting to divide this function even further\n    //  so that every possible option can be used.\n    const { fill, stroke, circle } = style\n    options.style = new Style({\n      fill: new Fill(fill),\n      stroke: new Stroke(stroke),\n      image: new CircleStyle({\n        radius: circle.radius,\n        fill: new Fill({ color: circle.fillColor }),\n      }),\n    })\n  }\n  return new VectorLayer(options)\n}\n","import { TextStyle } from '@polar/lib-custom-types'\nimport { Circle as CircleStyle, Fill, Style, Text } from 'ol/style'\n\nexport function createTextStyle(\n  drawText: string,\n  textStyle?: TextStyle,\n  textSize?: number\n) {\n  return new Style({\n    image: new CircleStyle({\n      radius: 5,\n      fill: new Fill({ color: '#ffcc3300' }),\n    }),\n    text: new Text({\n      textAlign: 'center',\n      text: drawText,\n      font: createFont(textStyle, textSize),\n      fill: textStyle?.textColor\n        ? new Fill({ color: textStyle.textColor })\n        : undefined,\n      textBaseline: 'middle',\n    }),\n  })\n}\n\nfunction createFont(textStyle?: TextStyle, textSize?: number) {\n  if (typeof textStyle === 'undefined' || textStyle === null) {\n    // if empty string apply default open layers style\n    return ''\n  }\n  const { font } = textStyle\n  if (typeof font === 'string') {\n    return font\n  }\n  const fontFamily = font.family ? font.family : 'sans-serif'\n  return textSize + 'px ' + fontFamily\n}\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n  centimeters: earthRadius * 100,\n  centimetres: earthRadius * 100,\n  degrees: 360 / (2 * Math.PI),\n  feet: earthRadius * 3.28084,\n  inches: earthRadius * 39.37,\n  kilometers: earthRadius / 1e3,\n  kilometres: earthRadius / 1e3,\n  meters: earthRadius,\n  metres: earthRadius,\n  miles: earthRadius / 1609.344,\n  millimeters: earthRadius * 1e3,\n  millimetres: earthRadius * 1e3,\n  nauticalmiles: earthRadius / 1852,\n  radians: 1,\n  yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n  acres: 247105e-9,\n  centimeters: 1e4,\n  centimetres: 1e4,\n  feet: 10.763910417,\n  hectares: 1e-4,\n  inches: 1550.003100006,\n  kilometers: 1e-6,\n  kilometres: 1e-6,\n  meters: 1,\n  metres: 1,\n  miles: 386e-9,\n  nauticalmiles: 29155334959812285e-23,\n  millimeters: 1e6,\n  millimetres: 1e6,\n  yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n  const feat = { type: \"Feature\" };\n  if (options.id === 0 || options.id) {\n    feat.id = options.id;\n  }\n  if (options.bbox) {\n    feat.bbox = options.bbox;\n  }\n  feat.properties = properties || {};\n  feat.geometry = geom;\n  return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n  switch (type) {\n    case \"Point\":\n      return point(coordinates).geometry;\n    case \"LineString\":\n      return lineString(coordinates).geometry;\n    case \"Polygon\":\n      return polygon(coordinates).geometry;\n    case \"MultiPoint\":\n      return multiPoint(coordinates).geometry;\n    case \"MultiLineString\":\n      return multiLineString(coordinates).geometry;\n    case \"MultiPolygon\":\n      return multiPolygon(coordinates).geometry;\n    default:\n      throw new Error(type + \" is invalid\");\n  }\n}\nfunction point(coordinates, properties, options = {}) {\n  if (!coordinates) {\n    throw new Error(\"coordinates is required\");\n  }\n  if (!Array.isArray(coordinates)) {\n    throw new Error(\"coordinates must be an Array\");\n  }\n  if (coordinates.length < 2) {\n    throw new Error(\"coordinates must be at least 2 numbers long\");\n  }\n  if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n    throw new Error(\"coordinates must contain numbers\");\n  }\n  const geom = {\n    type: \"Point\",\n    coordinates\n  };\n  return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n  return featureCollection(\n    coordinates.map((coords) => {\n      return point(coords, properties);\n    }),\n    options\n  );\n}\nfunction polygon(coordinates, properties, options = {}) {\n  for (const ring of coordinates) {\n    if (ring.length < 4) {\n      throw new Error(\n        \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n      );\n    }\n    if (ring[ring.length - 1].length !== ring[0].length) {\n      throw new Error(\"First and last Position are not equivalent.\");\n    }\n    for (let j = 0; j < ring[ring.length - 1].length; j++) {\n      if (ring[ring.length - 1][j] !== ring[0][j]) {\n        throw new Error(\"First and last Position are not equivalent.\");\n      }\n    }\n  }\n  const geom = {\n    type: \"Polygon\",\n    coordinates\n  };\n  return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n  return featureCollection(\n    coordinates.map((coords) => {\n      return polygon(coords, properties);\n    }),\n    options\n  );\n}\nfunction lineString(coordinates, properties, options = {}) {\n  if (coordinates.length < 2) {\n    throw new Error(\"coordinates must be an array of two or more positions\");\n  }\n  const geom = {\n    type: \"LineString\",\n    coordinates\n  };\n  return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n  return featureCollection(\n    coordinates.map((coords) => {\n      return lineString(coords, properties);\n    }),\n    options\n  );\n}\nfunction featureCollection(features, options = {}) {\n  const fc = { type: \"FeatureCollection\" };\n  if (options.id) {\n    fc.id = options.id;\n  }\n  if (options.bbox) {\n    fc.bbox = options.bbox;\n  }\n  fc.features = features;\n  return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n  const geom = {\n    type: \"MultiLineString\",\n    coordinates\n  };\n  return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n  const geom = {\n    type: \"MultiPoint\",\n    coordinates\n  };\n  return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n  const geom = {\n    type: \"MultiPolygon\",\n    coordinates\n  };\n  return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n  const geom = {\n    type: \"GeometryCollection\",\n    geometries\n  };\n  return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n  if (precision && !(precision >= 0)) {\n    throw new Error(\"precision must be a positive number\");\n  }\n  const multiplier = Math.pow(10, precision || 0);\n  return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n  const factor = factors[units];\n  if (!factor) {\n    throw new Error(units + \" units is invalid\");\n  }\n  return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n  const factor = factors[units];\n  if (!factor) {\n    throw new Error(units + \" units is invalid\");\n  }\n  return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n  return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n  let angle = bearing % 360;\n  if (angle < 0) {\n    angle += 360;\n  }\n  return angle;\n}\nfunction azimuthToBearing(angle) {\n  angle = angle % 360;\n  if (angle > 180) {\n    return angle - 360;\n  } else if (angle < -180) {\n    return angle + 360;\n  }\n  return angle;\n}\nfunction radiansToDegrees(radians) {\n  const normalisedRadians = radians % (2 * Math.PI);\n  return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n  const normalisedDegrees = degrees % 360;\n  return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n  if (!(length >= 0)) {\n    throw new Error(\"length must be a positive number\");\n  }\n  return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n  if (!(area >= 0)) {\n    throw new Error(\"area must be a positive number\");\n  }\n  const startFactor = areaFactors[originalUnit];\n  if (!startFactor) {\n    throw new Error(\"invalid original units\");\n  }\n  const finalFactor = areaFactors[finalUnit];\n  if (!finalFactor) {\n    throw new Error(\"invalid final units\");\n  }\n  return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n  return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n  return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n  if (!bbox) {\n    throw new Error(\"bbox is required\");\n  }\n  if (!Array.isArray(bbox)) {\n    throw new Error(\"bbox must be an Array\");\n  }\n  if (bbox.length !== 4 && bbox.length !== 6) {\n    throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n  }\n  bbox.forEach((num) => {\n    if (!isNumber(num)) {\n      throw new Error(\"bbox must only contain numbers\");\n    }\n  });\n}\nfunction validateId(id) {\n  if (!id) {\n    throw new Error(\"id is required\");\n  }\n  if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n    throw new Error(\"id must be a number or a string\");\n  }\n}\nexport {\n  areaFactors,\n  azimuthToBearing,\n  bearingToAzimuth,\n  convertArea,\n  convertLength,\n  degreesToRadians,\n  earthRadius,\n  factors,\n  feature,\n  featureCollection,\n  geometry,\n  geometryCollection,\n  isNumber,\n  isObject,\n  lengthToDegrees,\n  lengthToRadians,\n  lineString,\n  lineStrings,\n  multiLineString,\n  multiPoint,\n  multiPolygon,\n  point,\n  points,\n  polygon,\n  polygons,\n  radiansToDegrees,\n  radiansToLength,\n  round,\n  validateBBox,\n  validateId\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  if (geojson === null) return;\n  var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n    isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n    stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n      wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (callback(\n            coords,\n            coordIndex,\n            featureIndex,\n            multiFeatureIndex,\n            geometryIndex\n          ) === false)\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (callback(\n              coords[j],\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false)\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (callback(\n                coords[j][k],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false)\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (callback(\n                  coords[j][k][l],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false)\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (coordIndex === 0 && initialValue === void 0)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function(currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === void 0)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function(currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === void 0)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function(coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\nfunction geomEach(geojson, callback) {\n  var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n    featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n    featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n    featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n    isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n    stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n      if (geometry === null) {\n        if (callback(\n          null,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        ) === false)\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (callback(\n            geometry,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false)\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (callback(\n              geometry.geometries[j],\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false)\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    featureIndex++;\n  }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n      if (featureIndex === 0 && initialValue === void 0)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (callback(\n          feature(geometry, properties, { bbox, id }),\n          featureIndex,\n          0\n        ) === false)\n          return false;\n        return;\n    }\n    var geomType;\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n    for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate\n      };\n      if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n        return false;\n    }\n  });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function(currentFeature, featureIndex, multiFeatureIndex) {\n      if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n    if (!feature2.geometry) return;\n    var type = feature2.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (coordEach(\n      feature2,\n      function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n        if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n          previousCoords = currentCoord;\n          previousFeatureIndex = featureIndex;\n          previousMultiIndex = multiPartIndexCoord;\n          prevGeomIndex = geometryIndex;\n          segmentIndex = 0;\n          return;\n        }\n        var currentSegment = lineString(\n          [previousCoords, currentCoord],\n          feature2.properties\n        );\n        if (callback(\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        ) === false)\n          return false;\n        segmentIndex++;\n        previousCoords = currentCoord;\n      }\n    ) === false)\n      return false;\n  });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n      if (started === false && initialValue === void 0)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\nfunction lineEach(geojson, callback) {\n  if (!geojson) throw new Error(\"geojson is required\");\n  flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n    if (feature2.geometry === null) return;\n    var type = feature2.geometry.type;\n    var coords = feature2.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n          if (callback(\n            lineString(coords[geometryIndex], feature2.properties),\n            featureIndex,\n            multiFeatureIndex,\n            geometryIndex\n          ) === false)\n            return false;\n        }\n        break;\n    }\n  });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === void 0)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\nfunction findSegment(geojson, options) {\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n  var properties = options.properties;\n  var geometry;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1]\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1]\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n  var properties = options.properties;\n  var geometry;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\nexport {\n  coordAll,\n  coordEach,\n  coordReduce,\n  featureEach,\n  featureReduce,\n  findPoint,\n  findSegment,\n  flattenEach,\n  flattenReduce,\n  geomEach,\n  geomReduce,\n  lineEach,\n  lineReduce,\n  propEach,\n  propReduce,\n  segmentEach,\n  segmentReduce\n};\n//# sourceMappingURL=index.js.map","\nexport default class TinyQueue {\n    constructor(data = [], compare = defaultCompare) {\n        this.data = data;\n        this.length = this.data.length;\n        this.compare = compare;\n\n        if (this.length > 0) {\n            for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n        }\n    }\n\n    push(item) {\n        this.data.push(item);\n        this.length++;\n        this._up(this.length - 1);\n    }\n\n    pop() {\n        if (this.length === 0) return undefined;\n\n        const top = this.data[0];\n        const bottom = this.data.pop();\n        this.length--;\n\n        if (this.length > 0) {\n            this.data[0] = bottom;\n            this._down(0);\n        }\n\n        return top;\n    }\n\n    peek() {\n        return this.data[0];\n    }\n\n    _up(pos) {\n        const {data, compare} = this;\n        const item = data[pos];\n\n        while (pos > 0) {\n            const parent = (pos - 1) >> 1;\n            const current = data[parent];\n            if (compare(item, current) >= 0) break;\n            data[pos] = current;\n            pos = parent;\n        }\n\n        data[pos] = item;\n    }\n\n    _down(pos) {\n        const {data, compare} = this;\n        const halfLength = this.length >> 1;\n        const item = data[pos];\n\n        while (pos < halfLength) {\n            let left = (pos << 1) + 1;\n            let best = data[left];\n            const right = left + 1;\n\n            if (right < this.length && compare(data[right], best) < 0) {\n                left = right;\n                best = data[right];\n            }\n            if (compare(best, item) >= 0) break;\n\n            data[pos] = best;\n            pos = left;\n        }\n\n        data[pos] = item;\n    }\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n","module.exports = function pointInPolygonFlat (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = (end-start)/2;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[start+i*2+0], yi = vs[start+i*2+1];\n        var xj = vs[start+j*2+0], yj = vs[start+j*2+1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n","// ray-casting algorithm based on\n// https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n\nmodule.exports = function pointInPolygonNested (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = end - start;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[i+start][0], yi = vs[i+start][1];\n        var xj = vs[j+start][0], yj = vs[j+start][1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n","var pointInPolygonFlat = require('./flat.js')\nvar pointInPolygonNested = require('./nested.js')\n\nmodule.exports = function pointInPolygon (point, vs, start, end) {\n    if (vs.length > 0 && Array.isArray(vs[0])) {\n        return pointInPolygonNested(point, vs, start, end);\n    } else {\n        return pointInPolygonFlat(point, vs, start, end);\n    }\n}\nmodule.exports.nested = pointInPolygonNested\nmodule.exports.flat = pointInPolygonFlat\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).predicates={})}(this,function(t){\"use strict\";const e=134217729,n=33306690738754706e-32;function r(t,e,n,r,o){let f,i,u,c,s=e[0],a=r[0],d=0,l=0;a>s==a>-s?(f=s,s=e[++d]):(f=a,a=r[++l]);let p=0;if(d<t&&l<n)for(a>s==a>-s?(u=f-((i=s+f)-s),s=e[++d]):(u=f-((i=a+f)-a),a=r[++l]),f=i,0!==u&&(o[p++]=u);d<t&&l<n;)a>s==a>-s?(u=f-((i=f+s)-(c=i-f))+(s-c),s=e[++d]):(u=f-((i=f+a)-(c=i-f))+(a-c),a=r[++l]),f=i,0!==u&&(o[p++]=u);for(;d<t;)u=f-((i=f+s)-(c=i-f))+(s-c),s=e[++d],f=i,0!==u&&(o[p++]=u);for(;l<n;)u=f-((i=f+a)-(c=i-f))+(a-c),a=r[++l],f=i,0!==u&&(o[p++]=u);return 0===f&&0!==p||(o[p++]=f),p}function o(t){return new Float64Array(t)}const f=33306690738754716e-32,i=22204460492503146e-32,u=11093356479670487e-47,c=o(4),s=o(8),a=o(12),d=o(16),l=o(4);t.orient2d=function(t,o,p,b,y,h){const M=(o-h)*(p-y),x=(t-y)*(b-h),j=M-x;if(0===M||0===x||M>0!=x>0)return j;const m=Math.abs(M+x);return Math.abs(j)>=f*m?j:-function(t,o,f,p,b,y,h){let M,x,j,m,_,v,w,A,F,O,P,g,k,q,z,B,C,D;const E=t-b,G=f-b,H=o-y,I=p-y;_=(z=(A=E-(w=(v=e*E)-(v-E)))*(O=I-(F=(v=e*I)-(v-I)))-((q=E*I)-w*F-A*F-w*O))-(P=z-(C=(A=H-(w=(v=e*H)-(v-H)))*(O=G-(F=(v=e*G)-(v-G)))-((B=H*G)-w*F-A*F-w*O))),c[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),c[1]=k-(P+_)+(_-B),_=(D=g+P)-g,c[2]=g-(D-_)+(P-_),c[3]=D;let J=function(t,e){let n=e[0];for(let r=1;r<t;r++)n+=e[r];return n}(4,c),K=i*h;if(J>=K||-J>=K)return J;if(M=t-(E+(_=t-E))+(_-b),j=f-(G+(_=f-G))+(_-b),x=o-(H+(_=o-H))+(_-y),m=p-(I+(_=p-I))+(_-y),0===M&&0===x&&0===j&&0===m)return J;if(K=u*h+n*Math.abs(J),(J+=E*m+I*M-(H*j+G*x))>=K||-J>=K)return J;_=(z=(A=M-(w=(v=e*M)-(v-M)))*(O=I-(F=(v=e*I)-(v-I)))-((q=M*I)-w*F-A*F-w*O))-(P=z-(C=(A=x-(w=(v=e*x)-(v-x)))*(O=G-(F=(v=e*G)-(v-G)))-((B=x*G)-w*F-A*F-w*O))),l[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),l[1]=k-(P+_)+(_-B),_=(D=g+P)-g,l[2]=g-(D-_)+(P-_),l[3]=D;const L=r(4,c,4,l,s);_=(z=(A=E-(w=(v=e*E)-(v-E)))*(O=m-(F=(v=e*m)-(v-m)))-((q=E*m)-w*F-A*F-w*O))-(P=z-(C=(A=H-(w=(v=e*H)-(v-H)))*(O=j-(F=(v=e*j)-(v-j)))-((B=H*j)-w*F-A*F-w*O))),l[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),l[1]=k-(P+_)+(_-B),_=(D=g+P)-g,l[2]=g-(D-_)+(P-_),l[3]=D;const N=r(L,s,4,l,a);_=(z=(A=M-(w=(v=e*M)-(v-M)))*(O=m-(F=(v=e*m)-(v-m)))-((q=M*m)-w*F-A*F-w*O))-(P=z-(C=(A=x-(w=(v=e*x)-(v-x)))*(O=j-(F=(v=e*j)-(v-j)))-((B=x*j)-w*F-A*F-w*O))),l[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),l[1]=k-(P+_)+(_-B),_=(D=g+P)-g,l[2]=g-(D-_)+(P-_),l[3]=D;const Q=r(N,a,4,l,d);return d[Q-1]}(t,o,p,b,y,h,m)},t.orient2dfast=function(t,e,n,r,o,f){return(e-f)*(n-o)-(t-o)*(r-f)},Object.defineProperty(t,\"__esModule\",{value:!0})});\n","'use strict';\n\nvar RBush = require('rbush');\nvar Queue = require('tinyqueue');\nvar pointInPolygon = require('point-in-polygon');\nvar orient = require('robust-predicates/umd/orient2d.min.js').orient2d;\n\n// Fix for require issue in webpack https://github.com/mapbox/concaveman/issues/18\nif (Queue.default) {\n    Queue = Queue.default;\n}\n\nmodule.exports = concaveman;\nmodule.exports.default = concaveman;\n\nfunction concaveman(points, concavity, lengthThreshold) {\n    // a relative measure of concavity; higher value means simpler hull\n    concavity = Math.max(0, concavity === undefined ? 2 : concavity);\n\n    // when a segment goes below this length threshold, it won't be drilled down further\n    lengthThreshold = lengthThreshold || 0;\n\n    // start with a convex hull of the points\n    var hull = fastConvexHull(points);\n\n    // index the points with an R-tree\n    var tree = new RBush(16);\n    tree.toBBox = function (a) {\n        return {\n            minX: a[0],\n            minY: a[1],\n            maxX: a[0],\n            maxY: a[1]\n        };\n    };\n    tree.compareMinX = function (a, b) { return a[0] - b[0]; };\n    tree.compareMinY = function (a, b) { return a[1] - b[1]; };\n\n    tree.load(points);\n\n    // turn the convex hull into a linked list and populate the initial edge queue with the nodes\n    var queue = [];\n    for (var i = 0, last; i < hull.length; i++) {\n        var p = hull[i];\n        tree.remove(p);\n        last = insertNode(p, last);\n        queue.push(last);\n    }\n\n    // index the segments with an R-tree (for intersection checks)\n    var segTree = new RBush(16);\n    for (i = 0; i < queue.length; i++) segTree.insert(updateBBox(queue[i]));\n\n    var sqConcavity = concavity * concavity;\n    var sqLenThreshold = lengthThreshold * lengthThreshold;\n\n    // process edges one by one\n    while (queue.length) {\n        var node = queue.shift();\n        var a = node.p;\n        var b = node.next.p;\n\n        // skip the edge if it's already short enough\n        var sqLen = getSqDist(a, b);\n        if (sqLen < sqLenThreshold) continue;\n\n        var maxSqLen = sqLen / sqConcavity;\n\n        // find the best connection point for the current edge to flex inward to\n        p = findCandidate(tree, node.prev.p, a, b, node.next.next.p, maxSqLen, segTree);\n\n        // if we found a connection and it satisfies our concavity measure\n        if (p && Math.min(getSqDist(p, a), getSqDist(p, b)) <= maxSqLen) {\n            // connect the edge endpoints through this point and add 2 new edges to the queue\n            queue.push(node);\n            queue.push(insertNode(p, node));\n\n            // update point and segment indexes\n            tree.remove(p);\n            segTree.remove(node);\n            segTree.insert(updateBBox(node));\n            segTree.insert(updateBBox(node.next));\n        }\n    }\n\n    // convert the resulting hull linked list to an array of points\n    node = last;\n    var concave = [];\n    do {\n        concave.push(node.p);\n        node = node.next;\n    } while (node !== last);\n\n    concave.push(node.p);\n\n    return concave;\n}\n\nfunction findCandidate(tree, a, b, c, d, maxDist, segTree) {\n    var queue = new Queue([], compareDist);\n    var node = tree.data;\n\n    // search through the point R-tree with a depth-first search using a priority queue\n    // in the order of distance to the edge (b, c)\n    while (node) {\n        for (var i = 0; i < node.children.length; i++) {\n            var child = node.children[i];\n\n            var dist = node.leaf ? sqSegDist(child, b, c) : sqSegBoxDist(b, c, child);\n            if (dist > maxDist) continue; // skip the node if it's farther than we ever need\n\n            queue.push({\n                node: child,\n                dist: dist\n            });\n        }\n\n        while (queue.length && !queue.peek().node.children) {\n            var item = queue.pop();\n            var p = item.node;\n\n            // skip all points that are as close to adjacent edges (a,b) and (c,d),\n            // and points that would introduce self-intersections when connected\n            var d0 = sqSegDist(p, a, b);\n            var d1 = sqSegDist(p, c, d);\n            if (item.dist < d0 && item.dist < d1 &&\n                noIntersections(b, p, segTree) &&\n                noIntersections(c, p, segTree)) return p;\n        }\n\n        node = queue.pop();\n        if (node) node = node.node;\n    }\n\n    return null;\n}\n\nfunction compareDist(a, b) {\n    return a.dist - b.dist;\n}\n\n// square distance from a segment bounding box to the given one\nfunction sqSegBoxDist(a, b, bbox) {\n    if (inside(a, bbox) || inside(b, bbox)) return 0;\n    var d1 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.minY, bbox.maxX, bbox.minY);\n    if (d1 === 0) return 0;\n    var d2 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.minY, bbox.minX, bbox.maxY);\n    if (d2 === 0) return 0;\n    var d3 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY);\n    if (d3 === 0) return 0;\n    var d4 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY);\n    if (d4 === 0) return 0;\n    return Math.min(d1, d2, d3, d4);\n}\n\nfunction inside(a, bbox) {\n    return a[0] >= bbox.minX &&\n           a[0] <= bbox.maxX &&\n           a[1] >= bbox.minY &&\n           a[1] <= bbox.maxY;\n}\n\n// check if the edge (a,b) doesn't intersect any other edges\nfunction noIntersections(a, b, segTree) {\n    var minX = Math.min(a[0], b[0]);\n    var minY = Math.min(a[1], b[1]);\n    var maxX = Math.max(a[0], b[0]);\n    var maxY = Math.max(a[1], b[1]);\n\n    var edges = segTree.search({minX: minX, minY: minY, maxX: maxX, maxY: maxY});\n    for (var i = 0; i < edges.length; i++) {\n        if (intersects(edges[i].p, edges[i].next.p, a, b)) return false;\n    }\n    return true;\n}\n\nfunction cross(p1, p2, p3) {\n    return orient(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\n// check if the edges (p1,q1) and (p2,q2) intersect\nfunction intersects(p1, q1, p2, q2) {\n    return p1 !== q2 && q1 !== p2 &&\n        cross(p1, q1, p2) > 0 !== cross(p1, q1, q2) > 0 &&\n        cross(p2, q2, p1) > 0 !== cross(p2, q2, q1) > 0;\n}\n\n// update the bounding box of a node's edge\nfunction updateBBox(node) {\n    var p1 = node.p;\n    var p2 = node.next.p;\n    node.minX = Math.min(p1[0], p2[0]);\n    node.minY = Math.min(p1[1], p2[1]);\n    node.maxX = Math.max(p1[0], p2[0]);\n    node.maxY = Math.max(p1[1], p2[1]);\n    return node;\n}\n\n// speed up convex hull by filtering out points inside quadrilateral formed by 4 extreme points\nfunction fastConvexHull(points) {\n    var left = points[0];\n    var top = points[0];\n    var right = points[0];\n    var bottom = points[0];\n\n    // find the leftmost, rightmost, topmost and bottommost points\n    for (var i = 0; i < points.length; i++) {\n        var p = points[i];\n        if (p[0] < left[0]) left = p;\n        if (p[0] > right[0]) right = p;\n        if (p[1] < top[1]) top = p;\n        if (p[1] > bottom[1]) bottom = p;\n    }\n\n    // filter out points that are inside the resulting quadrilateral\n    var cull = [left, top, right, bottom];\n    var filtered = cull.slice();\n    for (i = 0; i < points.length; i++) {\n        if (!pointInPolygon(points[i], cull)) filtered.push(points[i]);\n    }\n\n    // get convex hull around the filtered points\n    return convexHull(filtered);\n}\n\n// create a new node in a doubly linked list\nfunction insertNode(p, prev) {\n    var node = {\n        p: p,\n        prev: null,\n        next: null,\n        minX: 0,\n        minY: 0,\n        maxX: 0,\n        maxY: 0\n    };\n\n    if (!prev) {\n        node.prev = node;\n        node.next = node;\n\n    } else {\n        node.next = prev.next;\n        node.prev = prev;\n        prev.next.prev = node;\n        prev.next = node;\n    }\n    return node;\n}\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n\n    var dx = p1[0] - p2[0],\n        dy = p1[1] - p2[1];\n\n    return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction sqSegDist(p, p1, p2) {\n\n    var x = p1[0],\n        y = p1[1],\n        dx = p2[0] - x,\n        dy = p2[1] - y;\n\n    if (dx !== 0 || dy !== 0) {\n\n        var t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n        if (t > 1) {\n            x = p2[0];\n            y = p2[1];\n\n        } else if (t > 0) {\n            x += dx * t;\n            y += dy * t;\n        }\n    }\n\n    dx = p[0] - x;\n    dy = p[1] - y;\n\n    return dx * dx + dy * dy;\n}\n\n// segment to segment distance, ported from http://geomalgorithms.com/a07-_distance.html by Dan Sunday\nfunction sqSegSegDist(x0, y0, x1, y1, x2, y2, x3, y3) {\n    var ux = x1 - x0;\n    var uy = y1 - y0;\n    var vx = x3 - x2;\n    var vy = y3 - y2;\n    var wx = x0 - x2;\n    var wy = y0 - y2;\n    var a = ux * ux + uy * uy;\n    var b = ux * vx + uy * vy;\n    var c = vx * vx + vy * vy;\n    var d = ux * wx + uy * wy;\n    var e = vx * wx + vy * wy;\n    var D = a * c - b * b;\n\n    var sc, sN, tc, tN;\n    var sD = D;\n    var tD = D;\n\n    if (D === 0) {\n        sN = 0;\n        sD = 1;\n        tN = e;\n        tD = c;\n    } else {\n        sN = b * e - c * d;\n        tN = a * e - b * d;\n        if (sN < 0) {\n            sN = 0;\n            tN = e;\n            tD = c;\n        } else if (sN > sD) {\n            sN = sD;\n            tN = e + b;\n            tD = c;\n        }\n    }\n\n    if (tN < 0.0) {\n        tN = 0.0;\n        if (-d < 0.0) sN = 0.0;\n        else if (-d > a) sN = sD;\n        else {\n            sN = -d;\n            sD = a;\n        }\n    } else if (tN > tD) {\n        tN = tD;\n        if ((-d + b) < 0.0) sN = 0;\n        else if (-d + b > a) sN = sD;\n        else {\n            sN = -d + b;\n            sD = a;\n        }\n    }\n\n    sc = sN === 0 ? 0 : sN / sD;\n    tc = tN === 0 ? 0 : tN / tD;\n\n    var cx = (1 - sc) * x0 + sc * x1;\n    var cy = (1 - sc) * y0 + sc * y1;\n    var cx2 = (1 - tc) * x2 + tc * x3;\n    var cy2 = (1 - tc) * y2 + tc * y3;\n    var dx = cx2 - cx;\n    var dy = cy2 - cy;\n\n    return dx * dx + dy * dy;\n}\n\nfunction compareByX(a, b) {\n    return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0];\n}\n\nfunction convexHull(points) {\n    points.sort(compareByX);\n\n    var lower = [];\n    for (var i = 0; i < points.length; i++) {\n        while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n            lower.pop();\n        }\n        lower.push(points[i]);\n    }\n\n    var upper = [];\n    for (var ii = points.length - 1; ii >= 0; ii--) {\n        while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[ii]) <= 0) {\n            upper.pop();\n        }\n        upper.push(points[ii]);\n    }\n\n    upper.pop();\n    lower.pop();\n    return lower.concat(upper);\n}\n","// index.ts\nimport { polygon } from \"@turf/helpers\";\nimport { coordEach } from \"@turf/meta\";\nimport concaveman from \"concaveman\";\nfunction convex(geojson, options = {}) {\n  options.concavity = options.concavity || Infinity;\n  const points = [];\n  coordEach(geojson, (coord) => {\n    points.push([coord[0], coord[1]]);\n  });\n  if (!points.length) {\n    return null;\n  }\n  const convexHull = concaveman(points, options.concavity);\n  if (convexHull.length > 3) {\n    return polygon([convexHull]);\n  }\n  return null;\n}\nvar turf_convex_default = convex;\nexport {\n  convex,\n  turf_convex_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { point } from \"@turf/helpers\";\nimport { coordEach } from \"@turf/meta\";\nfunction centroid(geojson, options = {}) {\n  let xSum = 0;\n  let ySum = 0;\n  let len = 0;\n  coordEach(\n    geojson,\n    function(coord) {\n      xSum += coord[0];\n      ySum += coord[1];\n      len++;\n    },\n    true\n  );\n  return point([xSum / len, ySum / len], options.properties);\n}\nvar turf_centroid_default = centroid;\nexport {\n  centroid,\n  turf_centroid_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n  if (!coord) {\n    throw new Error(\"coord is required\");\n  }\n  if (!Array.isArray(coord)) {\n    if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n      return [...coord.geometry.coordinates];\n    }\n    if (coord.type === \"Point\") {\n      return [...coord.coordinates];\n    }\n  }\n  if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n    return [...coord];\n  }\n  throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n  if (Array.isArray(coords)) {\n    return coords;\n  }\n  if (coords.type === \"Feature\") {\n    if (coords.geometry !== null) {\n      return coords.geometry.coordinates;\n    }\n  } else {\n    if (coords.coordinates) {\n      return coords.coordinates;\n    }\n  }\n  throw new Error(\n    \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n  );\n}\nfunction containsNumber(coordinates) {\n  if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n    return true;\n  }\n  if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n    return containsNumber(coordinates[0]);\n  }\n  throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n  if (!type || !name) {\n    throw new Error(\"type and name required\");\n  }\n  if (!value || value.type !== type) {\n    throw new Error(\n      \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n    );\n  }\n}\nfunction featureOf(feature, type, name) {\n  if (!feature) {\n    throw new Error(\"No feature passed\");\n  }\n  if (!name) {\n    throw new Error(\".featureOf() requires a name\");\n  }\n  if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n    throw new Error(\n      \"Invalid input to \" + name + \", Feature with geometry required\"\n    );\n  }\n  if (!feature.geometry || feature.geometry.type !== type) {\n    throw new Error(\n      \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n    );\n  }\n}\nfunction collectionOf(featureCollection, type, name) {\n  if (!featureCollection) {\n    throw new Error(\"No featureCollection passed\");\n  }\n  if (!name) {\n    throw new Error(\".collectionOf() requires a name\");\n  }\n  if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n    throw new Error(\n      \"Invalid input to \" + name + \", FeatureCollection required\"\n    );\n  }\n  for (const feature of featureCollection.features) {\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n      throw new Error(\n        \"Invalid input to \" + name + \", Feature with geometry required\"\n      );\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n      throw new Error(\n        \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n      );\n    }\n  }\n}\nfunction getGeom(geojson) {\n  if (geojson.type === \"Feature\") {\n    return geojson.geometry;\n  }\n  return geojson;\n}\nfunction getType(geojson, _name) {\n  if (geojson.type === \"FeatureCollection\") {\n    return \"FeatureCollection\";\n  }\n  if (geojson.type === \"GeometryCollection\") {\n    return \"GeometryCollection\";\n  }\n  if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n    return geojson.geometry.type;\n  }\n  return geojson.type;\n}\nexport {\n  collectionOf,\n  containsNumber,\n  featureOf,\n  geojsonType,\n  getCoord,\n  getCoords,\n  getGeom,\n  getType\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { convex } from \"@turf/convex\";\nimport { centroid } from \"@turf/centroid\";\nimport { point } from \"@turf/helpers\";\nimport { getType, getCoord } from \"@turf/invariant\";\nimport { coordEach } from \"@turf/meta\";\nfunction centerOfMass(geojson, options = {}) {\n  switch (getType(geojson)) {\n    case \"Point\":\n      return point(getCoord(geojson), options.properties);\n    case \"Polygon\":\n      var coords = [];\n      coordEach(geojson, function(coord) {\n        coords.push(coord);\n      });\n      var centre = centroid(geojson, { properties: options.properties });\n      var translation = centre.geometry.coordinates;\n      var sx = 0;\n      var sy = 0;\n      var sArea = 0;\n      var i, pi, pj, xi, xj, yi, yj, a;\n      var neutralizedPoints = coords.map(function(point2) {\n        return [point2[0] - translation[0], point2[1] - translation[1]];\n      });\n      for (i = 0; i < coords.length - 1; i++) {\n        pi = neutralizedPoints[i];\n        xi = pi[0];\n        yi = pi[1];\n        pj = neutralizedPoints[i + 1];\n        xj = pj[0];\n        yj = pj[1];\n        a = xi * yj - xj * yi;\n        sArea += a;\n        sx += (xi + xj) * a;\n        sy += (yi + yj) * a;\n      }\n      if (sArea === 0) {\n        return centre;\n      } else {\n        var area = sArea * 0.5;\n        var areaFactor = 1 / (6 * area);\n        return point(\n          [translation[0] + areaFactor * sx, translation[1] + areaFactor * sy],\n          options.properties\n        );\n      }\n    default:\n      var hull = convex(geojson);\n      if (hull) return centerOfMass(hull, { properties: options.properties });\n      else return centroid(geojson, { properties: options.properties });\n  }\n}\nvar turf_center_of_mass_default = centerOfMass;\nexport {\n  centerOfMass,\n  turf_center_of_mass_default as default\n};\n//# sourceMappingURL=index.js.map","import { type DrawStyle, type MeasureMode } from '@polar/lib-custom-types'\nimport centerOfMass from '@turf/center-of-mass'\nimport { type Color } from 'ol/color'\nimport { type ColorLike } from 'ol/colorlike'\nimport { Feature } from 'ol'\nimport { LineString, Point, Polygon } from 'ol/geom'\nimport { type Projection } from 'ol/proj'\nimport { getArea, getLength } from 'ol/sphere'\nimport { Circle as CircleStyle, Fill, Stroke } from 'ol/style'\nimport Style, { type Options, StyleFunction } from 'ol/style/Style'\nimport Text, { type Options as TextOptions } from 'ol/style/Text'\n\nconst roundMeasurement = (measurement: number, divisor: number) =>\n  Math.round((measurement * 100) / divisor + Number.EPSILON) / 100\n\nfunction calculatePartialDistances(\n  styles: Style[],\n  styleOptions: Options,\n  textOptions: TextOptions,\n  feature: Feature,\n  unit: 'm' | 'km',\n  projection: Projection\n) {\n  const geometry = feature.getGeometry() as LineString | Polygon\n  const coordinates =\n    geometry instanceof Polygon\n      ? geometry.getCoordinates()[0]\n      : geometry.getCoordinates()\n  for (let i = 1; i < coordinates.length; i++) {\n    const lineString = new LineString([coordinates[i - 1], coordinates[i]])\n    const lengthInMetres = getLength(lineString, {\n      projection,\n    })\n    const length = roundMeasurement(lengthInMetres, unit === 'km' ? 1000 : 1)\n    const text = `${length} ${unit}`\n    feature.set(`length-${i}`, roundMeasurement(lengthInMetres, 1))\n    const style = new Style({\n      ...styleOptions,\n      text: new Text({\n        ...textOptions,\n        text,\n      }),\n    })\n    style.setGeometry(lineString)\n    styles.push(style)\n  }\n  // This only happens once the drawing has been finished\n  if (\n    Object.keys(feature.getProperties()).filter((key) =>\n      key.startsWith('length-')\n    ).length === coordinates.length\n  ) {\n    feature.unset(`length-${coordinates.length}`)\n  }\n\n  return styles\n}\n\nfunction getAreaUnitAndDivisor(measureMode: Exclude<MeasureMode, 'none'>) {\n  let areaUnit = ''\n  let divisor: number\n  if (measureMode === 'metres') {\n    areaUnit = 'm²'\n    divisor = 1\n  } else if (measureMode === 'kilometres') {\n    areaUnit = 'km²'\n    divisor = 1000000\n  } else {\n    areaUnit = 'ha'\n    divisor = 10000\n  }\n  return { areaUnit, divisor }\n}\n\nconst measureStyle: (\n  styleOptions: Options,\n  measureMode: Exclude<MeasureMode, 'none'>,\n  projection: Projection,\n  measureStyleOptions?: TextOptions\n) => StyleFunction =\n  (styleOptions, measureMode, projection, measureStyleOptions) => (feature) => {\n    const geometry = feature.getGeometry()\n    if (geometry instanceof Polygon || geometry instanceof LineString) {\n      const styles = [new Style(styleOptions)]\n      const textOptions: TextOptions = {\n        font: '16px sans-serif',\n        placement: 'line',\n        fill: new Fill({ color: 'black' }),\n        stroke: new Stroke({ color: 'black' }),\n        offsetY: -5,\n        ...measureStyleOptions,\n      }\n      if (geometry instanceof Polygon) {\n        const { areaUnit, divisor } = getAreaUnitAndDivisor(measureMode)\n        const areaInMetres = getArea(geometry, { projection })\n        const area = roundMeasurement(areaInMetres, divisor)\n        const text = `${area} ${areaUnit}`\n        const style = new Style({\n          text: new Text({\n            ...textOptions,\n            placement: 'point',\n            text,\n          }),\n        })\n        // @ts-expect-error | Features in this StyleFunction are always of type Feature<Geometry>\n        feature.set('area', roundMeasurement(areaInMetres, 1))\n        style.setGeometry(\n          new Point(\n            centerOfMass({\n              type: 'Feature',\n              geometry: {\n                type: 'Polygon',\n                coordinates: geometry.getCoordinates(),\n              },\n            }).geometry.coordinates\n          )\n        )\n        styles.push(style)\n      }\n      return calculatePartialDistances(\n        styles,\n        styleOptions,\n        textOptions,\n        feature as Feature,\n        measureMode === 'metres' ? 'm' : 'km',\n        projection\n      )\n    }\n    return new Style(styleOptions)\n  }\n\nexport default function (\n  drawMode: string,\n  strokeColor: string,\n  measureMode: MeasureMode,\n  projection: Projection,\n  drawStyle?: DrawStyle\n): Style | StyleFunction {\n  const defaultFillColor = 'rgba(255, 255, 255, 0.5)'\n  if (drawMode === 'Point') {\n    return createPointStyle(\n      strokeColor,\n      drawStyle?.circle?.fillColor\n        ? drawStyle.circle.fillColor\n        : defaultFillColor,\n      drawStyle?.circle?.radius\n    )\n  }\n  const fillColor = drawStyle?.fill?.color\n    ? drawStyle.fill.color\n    : defaultFillColor\n  const styleOptions: Options = {\n    image: new CircleStyle({\n      radius: 5,\n      fill: new Fill({\n        color: fillColor,\n      }),\n      stroke: new Stroke({ color: strokeColor }),\n    }),\n    stroke: new Stroke({\n      color: strokeColor,\n      width: drawStyle?.stroke?.width || 2,\n    }),\n    fill: new Fill({\n      color: fillColor,\n    }),\n  }\n  return measureMode === 'none'\n    ? new Style(styleOptions)\n    : measureStyle(styleOptions, measureMode, projection, drawStyle?.measure)\n}\n\nfunction createPointStyle(\n  strokeColor: string,\n  fillColor: Color | ColorLike,\n  radius = 5\n) {\n  return new Style({\n    image: new CircleStyle({\n      radius,\n      fill: new Fill({\n        color: fillColor,\n      }),\n      stroke: new Stroke({ color: strokeColor }),\n    }),\n  })\n}\n","import Interaction from 'ol/interaction/Interaction'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { CreateInteractionsPayload, DrawGetters, DrawState } from '../../types'\n\nexport default function (\n  { dispatch, getters: { mode } }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource, drawLayer }: CreateInteractionsPayload\n): Interaction[] | Promise<Interaction[]> {\n  if (mode === 'draw') {\n    return dispatch('createDrawInteractions', { drawSource })\n  } else if (mode === 'edit') {\n    return dispatch('createModifyInteractions', { drawSource, drawLayer })\n  } else if (mode === 'translate') {\n    return dispatch('createTranslateInteractions', { drawSource, drawLayer })\n  } else if (mode === 'delete') {\n    return dispatch('createDeleteInteractions', { drawSource, drawLayer })\n  } else if (mode === 'lasso') {\n    return dispatch('createLassoInteractions')\n  } else if (mode === 'duplicate') {\n    return dispatch('createDuplicateInteractions', { drawSource, drawLayer })\n  } else if (mode === 'cut') {\n    return dispatch('createCutInteractions', { drawSource })\n  } else if (mode === 'merge') {\n    return dispatch('createMergeInteractions', { drawSource })\n  }\n  return []\n}\n","import { Collection, Feature, Map, MapBrowserEvent } from 'ol'\nimport { CreateInteractionsPayload } from '../../types'\n\n/* sets the topmost hovered feature as singleton feature in collection */\nexport const makeLocalSelector =\n  (\n    map: Map,\n    activeContainer: { active: boolean },\n    features: Collection<Feature>,\n    drawLayer: CreateInteractionsPayload['drawLayer']\n  ) =>\n  // bound event processor\n  (e: MapBrowserEvent<UIEvent>) => {\n    if (!activeContainer.active) {\n      map.forEachFeatureAtPixel(\n        e.pixel,\n        (f) => {\n          if (f !== features.item(0)) {\n            features.setAt(0, f as Feature)\n          }\n          return true\n        },\n        {\n          layerFilter: (l) => l === drawLayer,\n        }\n      )\n    }\n  }\n","import { Map } from 'ol'\nimport { Snap } from 'ol/interaction'\nimport VectorLayer from 'ol/layer/Vector'\nimport VectorSource from 'ol/source/Vector'\n\nexport const getSnaps = (map: Map, snapIds: string[]): Snap[] =>\n  snapIds.reduce((accumulator, layerId) => {\n    const layer = map\n      .getLayers()\n      .getArray()\n      .find((layer) => layer.get('id') === layerId) as VectorLayer\n    const source = layer?.getSource?.()\n    if (source instanceof VectorSource) {\n      const snap = new Snap({ source })\n      const visibilityToggler = () => snap.setActive(layer.getVisible())\n      layer.on('propertychange', visibilityToggler)\n      visibilityToggler()\n      // @ts-expect-error | riding piggyback\n      snap._onRemove = () => layer.un('propertychange', visibilityToggler)\n      accumulator.push(snap)\n    } else {\n      console.warn(\n        `@polar/plugin-draw: Layer with ID \"${layerId}\" configured for 'snapTo', but it has no source to snap to. The layer does probably not hold any vector data.`\n      )\n    }\n    return accumulator\n  }, [] as Snap[])\n","import { Modify, Select, Snap } from 'ol/interaction'\nimport Interaction from 'ol/interaction/Interaction'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { Collection, Feature, Map } from 'ol'\nimport { CreateInteractionsPayload, DrawGetters, DrawState } from '../../types'\nimport { makeLocalSelector } from './localSelector'\nimport { getSnaps } from './getSnaps'\n\nconst createModify = (\n  map: Map,\n  drawLayer: CreateInteractionsPayload['drawLayer']\n) => {\n  const activeContainer = { active: false }\n  const features: Collection<Feature> = new Collection()\n  const modify = new Modify({ features })\n  modify.set('_isPolarDragLikeInteraction', true, true)\n  modify.on('modifystart', () => {\n    activeContainer.active = true\n  })\n  modify.on('modifyend', () => {\n    activeContainer.active = false\n  })\n\n  const localSelector = makeLocalSelector(\n    map,\n    activeContainer,\n    features,\n    drawLayer\n  )\n  map.on('pointermove', localSelector)\n  // @ts-expect-error | \"un on removal\" riding piggyback as _onRemove\n  modify._onRemove = () => map.un('pointermove', localSelector)\n\n  return modify\n}\n\nexport default function (\n  {\n    commit,\n    dispatch,\n    getters,\n    rootGetters,\n  }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource, drawLayer }: CreateInteractionsPayload\n): Interaction[] {\n  const { drawMode } = getters\n  // clear input - no feature selected initially\n  commit('setTextInput', '')\n  const select = new Select({\n    layers: [drawLayer],\n    style: null,\n    hitTolerance: 50,\n  })\n  let lastSelectedFeature\n  select.on('select', (event) => {\n    if (event.selected.length > 0) {\n      lastSelectedFeature = event.selected[event.selected.length - 1]\n      commit('setSelectedFeature', lastSelectedFeature)\n      const featureStyle = lastSelectedFeature.getStyle()\n      dispatch(\n        featureStyle && 'getText' in featureStyle && featureStyle.getText()\n          ? 'modifyTextStyle'\n          : 'modifyDrawStyle',\n        featureStyle\n      )\n    } else if (event.selected.length === 0) {\n      if (lastSelectedFeature && lastSelectedFeature.get('text') === '') {\n        drawSource.removeFeature(lastSelectedFeature)\n        commit('updateFeatures')\n      }\n      if (drawMode === 'Text') {\n        commit('setTextInput', '')\n        commit('setSelectedFeature', null)\n      }\n    }\n  })\n  return [\n    createModify(rootGetters.map, drawLayer),\n    ...getSnaps(rootGetters.map, rootGetters.configuration?.draw?.snapTo || []),\n    new Snap({ source: drawSource }),\n    select,\n  ]\n}\n","import { Draw, Snap } from 'ol/interaction'\nimport Interaction from 'ol/interaction/Interaction'\nimport VectorSource from 'ol/source/Vector'\nimport { DrawConfiguration, PolarActionContext } from '@polar/lib-custom-types'\nimport { DrawGetters, DrawState } from '../../types'\nimport { createTextStyle } from '../../utils/createTextStyle'\nimport { getSnaps } from './getSnaps'\n\ninterface CreateTextInteractionsPayload {\n  textInput: DrawState['textInput']\n  textSize: DrawGetters['textSize']\n  drawSource: VectorSource\n  drawConfiguration?: DrawConfiguration\n}\n\nexport default function (\n  { rootGetters }: PolarActionContext<DrawState, DrawGetters>,\n  {\n    textInput,\n    textSize,\n    drawSource,\n    drawConfiguration,\n  }: CreateTextInteractionsPayload\n): Interaction[] {\n  if (!textInput) {\n    // nothing to draw yet\n    return []\n  }\n  const textStyle = createTextStyle(\n    textInput,\n    drawConfiguration?.textStyle,\n    textSize\n  )\n  const draw = new Draw({\n    source: drawSource,\n    type: 'Point',\n    style: textStyle,\n  })\n  // @ts-expect-error | internal hack to detect it in @polar/plugin-pins and @polar/plugin-gfi\n  draw._isDrawPlugin = true\n  draw.on('drawend', function (e) {\n    e.feature.setStyle(textStyle)\n    e.feature.set('text', textInput)\n  })\n  // prevent the creation of empty text features\n  drawSource.on('addfeature', (event) => {\n    if (event.feature?.get('text') && !event.feature.get('text').trim()) {\n      drawSource.removeFeature(event.feature)\n    }\n  })\n  return [\n    draw,\n    ...getSnaps(rootGetters.map, rootGetters.configuration?.draw?.snapTo || []),\n    new Snap({ source: drawSource }),\n  ]\n}\n","import { Translate, Snap } from 'ol/interaction'\nimport Interaction from 'ol/interaction/Interaction'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { Collection, Feature, Map } from 'ol'\nimport { CreateInteractionsPayload, DrawGetters, DrawState } from '../../types'\nimport { makeLocalSelector } from './localSelector'\nimport { getSnaps } from './getSnaps'\n\nconst createTranslate = (\n  map: Map,\n  drawLayer: CreateInteractionsPayload['drawLayer']\n) => {\n  const activeContainer = { active: false }\n  const features: Collection<Feature> = new Collection()\n  const translate = new Translate({ features })\n  translate.set('_isPolarDragLikeInteraction', true, true)\n  translate.on('translatestart', () => {\n    activeContainer.active = true\n  })\n  translate.on('translateend', () => {\n    activeContainer.active = false\n  })\n\n  const localSelector = makeLocalSelector(\n    map,\n    activeContainer,\n    features,\n    drawLayer\n  )\n  map.on('pointermove', localSelector)\n  // @ts-expect-error | \"un on removal\" riding piggyback as _onRemove\n  translate._onRemove = () => map.un('pointermove', localSelector)\n\n  return translate\n}\n\nexport default function (\n  { rootGetters }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource, drawLayer }: CreateInteractionsPayload\n): Interaction[] {\n  return [\n    createTranslate(rootGetters.map, drawLayer),\n    ...getSnaps(rootGetters.map, rootGetters.configuration?.draw?.snapTo || []),\n    new Snap({ source: drawSource }),\n  ]\n}\n","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n  if (geojson.bbox != null && true !== options.recompute) {\n    return geojson.bbox;\n  }\n  const result = [Infinity, Infinity, -Infinity, -Infinity];\n  coordEach(geojson, (coord) => {\n    if (result[0] > coord[0]) {\n      result[0] = coord[0];\n    }\n    if (result[1] > coord[1]) {\n      result[1] = coord[1];\n    }\n    if (result[2] < coord[0]) {\n      result[2] = coord[0];\n    }\n    if (result[3] < coord[1]) {\n      result[3] = coord[1];\n    }\n  });\n  return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n  bbox,\n  turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n    let Q, Qnew, hh, bvirt;\n    let enow = e[0];\n    let fnow = f[0];\n    let eindex = 0;\n    let findex = 0;\n    if ((fnow > enow) === (fnow > -enow)) {\n        Q = enow;\n        enow = e[++eindex];\n    } else {\n        Q = fnow;\n        fnow = f[++findex];\n    }\n    let hindex = 0;\n    if (eindex < elen && findex < flen) {\n        if ((fnow > enow) === (fnow > -enow)) {\n            Qnew = enow + Q;\n            hh = Q - (Qnew - enow);\n            enow = e[++eindex];\n        } else {\n            Qnew = fnow + Q;\n            hh = Q - (Qnew - fnow);\n            fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n            if ((fnow > enow) === (fnow > -enow)) {\n                Qnew = Q + enow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (enow - bvirt);\n                enow = e[++eindex];\n            } else {\n                Qnew = Q + fnow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n                fnow = f[++findex];\n            }\n            Q = Qnew;\n            if (hh !== 0) {\n                h[hindex++] = hh;\n            }\n        }\n    }\n    while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n    return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n    let Q, sum, hh, product1, product0;\n    let bvirt, c, ahi, alo, bhi, blo;\n\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    let enow = e[0];\n    Q = enow * b;\n    c = splitter * enow;\n    ahi = c - (c - enow);\n    alo = enow - ahi;\n    hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n    let hindex = 0;\n    if (hh !== 0) {\n        h[hindex++] = hh;\n    }\n    for (let i = 1; i < elen; i++) {\n        enow = e[i];\n        product1 = enow * b;\n        c = splitter * enow;\n        ahi = c - (c - enow);\n        alo = enow - ahi;\n        product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n        sum = Q + product0;\n        bvirt = sum - Q;\n        hh = Q - (sum - bvirt) + (product0 - bvirt);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        Q = product1 + sum;\n        hh = sum - (Q - product1);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function negate(elen, e) {\n    for (let i = 0; i < elen; i++) e[i] = -e[i];\n    return elen;\n}\n\nexport function estimate(elen, e) {\n    let Q = e[0];\n    for (let i = 1; i < elen; i++) Q += e[i];\n    return Q;\n}\n\nexport function vec(n) {\n    return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n    let acxtail, acytail, bcxtail, bcytail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const acx = ax - cx;\n    const bcx = bx - cx;\n    const acy = ay - cy;\n    const bcy = by - cy;\n\n    s1 = acx * bcy;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcx;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    B[3] = u3;\n\n    let det = estimate(4, B);\n    let errbound = ccwerrboundB * detsum;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - acx;\n    acxtail = ax - (acx + bvirt) + (bvirt - cx);\n    bvirt = bx - bcx;\n    bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n    bvirt = ay - acy;\n    acytail = ay - (acy + bvirt) + (bvirt - cy);\n    bvirt = by - bcy;\n    bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n    if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n    }\n\n    errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n    det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n    if (det >= errbound || -det >= errbound) return det;\n\n    s1 = acxtail * bcy;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcx;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C1len = sum(4, B, 4, u, C1);\n\n    s1 = acx * bcytail;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcxtail;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C2len = sum(C1len, C1, 4, u, C2);\n\n    s1 = acxtail * bcytail;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcxtail;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const Dlen = sum(C2len, C2, 4, u, D);\n\n    return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n    const detleft = (ay - cy) * (bx - cx);\n    const detright = (ax - cx) * (by - cy);\n    const det = detleft - detright;\n\n    const detsum = Math.abs(detleft + detright);\n    if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n    return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n    return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import { orient2d } from 'robust-predicates';\n\nfunction pointInPolygon(p, polygon) {\n    var i;\n    var ii;\n    var k = 0;\n    var f;\n    var u1;\n    var v1;\n    var u2;\n    var v2;\n    var currentP;\n    var nextP;\n\n    var x = p[0];\n    var y = p[1];\n\n    var numContours = polygon.length;\n    for (i = 0; i < numContours; i++) {\n        ii = 0;\n        var contour = polygon[i];\n        var contourLen = contour.length - 1;\n\n        currentP = contour[0];\n        if (currentP[0] !== contour[contourLen][0] &&\n            currentP[1] !== contour[contourLen][1]) {\n            throw new Error('First and last coordinates in a ring must be the same')\n        }\n\n        u1 = currentP[0] - x;\n        v1 = currentP[1] - y;\n\n        for (ii; ii < contourLen; ii++) {\n            nextP = contour[ii + 1];\n\n            u2 = nextP[0] - x;\n            v2 = nextP[1] - y;\n\n            if (v1 === 0 && v2 === 0) {\n                if ((u2 <= 0 && u1 >= 0) || (u1 <= 0 && u2 >= 0)) { return 0 }\n            } else if ((v2 >= 0 && v1 <= 0) || (v2 <= 0 && v1 >= 0)) {\n                f = orient2d(u1, u2, v1, v2, 0, 0);\n                if (f === 0) { return 0 }\n                if ((f > 0 && v2 > 0 && v1 <= 0) || (f < 0 && v2 <= 0 && v1 > 0)) { k++; }\n            }\n            currentP = nextP;\n            v1 = v2;\n            u1 = u2;\n        }\n    }\n\n    if (k % 2 === 0) { return false }\n    return true\n}\n\nexport { pointInPolygon as default };\n","// index.ts\nimport pip from \"point-in-polygon-hao\";\nimport { getCoord, getGeom } from \"@turf/invariant\";\nfunction booleanPointInPolygon(point, polygon, options = {}) {\n  if (!point) {\n    throw new Error(\"point is required\");\n  }\n  if (!polygon) {\n    throw new Error(\"polygon is required\");\n  }\n  const pt = getCoord(point);\n  const geom = getGeom(polygon);\n  const type = geom.type;\n  const bbox = polygon.bbox;\n  let polys = geom.coordinates;\n  if (bbox && inBBox(pt, bbox) === false) {\n    return false;\n  }\n  if (type === \"Polygon\") {\n    polys = [polys];\n  }\n  let result = false;\n  for (var i = 0; i < polys.length; ++i) {\n    const polyResult = pip(pt, polys[i]);\n    if (polyResult === 0) return options.ignoreBoundary ? false : true;\n    else if (polyResult) result = true;\n  }\n  return result;\n}\nfunction inBBox(pt, bbox) {\n  return bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1];\n}\nvar turf_boolean_point_in_polygon_default = booleanPointInPolygon;\nexport {\n  booleanPointInPolygon,\n  turf_boolean_point_in_polygon_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { getCoord, getCoords } from \"@turf/invariant\";\nfunction booleanPointOnLine(pt, line, options = {}) {\n  const ptCoords = getCoord(pt);\n  const lineCoords = getCoords(line);\n  for (let i = 0; i < lineCoords.length - 1; i++) {\n    let ignoreBoundary = false;\n    if (options.ignoreEndVertices) {\n      if (i === 0) {\n        ignoreBoundary = \"start\";\n      }\n      if (i === lineCoords.length - 2) {\n        ignoreBoundary = \"end\";\n      }\n      if (i === 0 && i + 1 === lineCoords.length - 1) {\n        ignoreBoundary = \"both\";\n      }\n    }\n    if (isPointOnLineSegment(\n      lineCoords[i],\n      lineCoords[i + 1],\n      ptCoords,\n      ignoreBoundary,\n      typeof options.epsilon === \"undefined\" ? null : options.epsilon\n    )) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, excludeBoundary, epsilon) {\n  const x = pt[0];\n  const y = pt[1];\n  const x1 = lineSegmentStart[0];\n  const y1 = lineSegmentStart[1];\n  const x2 = lineSegmentEnd[0];\n  const y2 = lineSegmentEnd[1];\n  const dxc = pt[0] - x1;\n  const dyc = pt[1] - y1;\n  const dxl = x2 - x1;\n  const dyl = y2 - y1;\n  const cross = dxc * dyl - dyc * dxl;\n  if (epsilon !== null) {\n    if (Math.abs(cross) > epsilon) {\n      return false;\n    }\n  } else if (cross !== 0) {\n    return false;\n  }\n  if (Math.abs(dxl) === Math.abs(dyl) && Math.abs(dxl) === 0) {\n    if (excludeBoundary) {\n      return false;\n    }\n    if (pt[0] === lineSegmentStart[0] && pt[1] === lineSegmentStart[1]) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n  if (!excludeBoundary) {\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n      return dxl > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1;\n    }\n    return dyl > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1;\n  } else if (excludeBoundary === \"start\") {\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n      return dxl > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1;\n    }\n    return dyl > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1;\n  } else if (excludeBoundary === \"end\") {\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n      return dxl > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1;\n    }\n    return dyl > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1;\n  } else if (excludeBoundary === \"both\") {\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n      return dxl > 0 ? x1 < x && x < x2 : x2 < x && x < x1;\n    }\n    return dyl > 0 ? y1 < y && y < y2 : y2 < y && y < y1;\n  }\n  return false;\n}\nvar turf_boolean_point_on_line_default = booleanPointOnLine;\nexport {\n  booleanPointOnLine,\n  turf_boolean_point_on_line_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { bbox as calcBbox } from \"@turf/bbox\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { booleanPointOnLine as isPointOnLine } from \"@turf/boolean-point-on-line\";\nimport { getGeom } from \"@turf/invariant\";\nfunction booleanContains(feature1, feature2) {\n  const geom1 = getGeom(feature1);\n  const geom2 = getGeom(feature2);\n  const type1 = geom1.type;\n  const type2 = geom2.type;\n  const coords1 = geom1.coordinates;\n  const coords2 = geom2.coordinates;\n  switch (type1) {\n    case \"Point\":\n      switch (type2) {\n        case \"Point\":\n          return compareCoords(coords1, coords2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    case \"MultiPoint\":\n      switch (type2) {\n        case \"Point\":\n          return isPointInMultiPoint(geom1, geom2);\n        case \"MultiPoint\":\n          return isMultiPointInMultiPoint(geom1, geom2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    case \"LineString\":\n      switch (type2) {\n        case \"Point\":\n          return isPointOnLine(geom2, geom1, { ignoreEndVertices: true });\n        case \"LineString\":\n          return isLineOnLine(geom1, geom2);\n        case \"MultiPoint\":\n          return isMultiPointOnLine(geom1, geom2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    case \"Polygon\":\n      switch (type2) {\n        case \"Point\":\n          return booleanPointInPolygon(geom2, geom1, { ignoreBoundary: true });\n        case \"LineString\":\n          return isLineInPoly(geom1, geom2);\n        case \"Polygon\":\n          return isPolyInPoly(geom1, geom2);\n        case \"MultiPoint\":\n          return isMultiPointInPoly(geom1, geom2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    case \"MultiPolygon\":\n      switch (type2) {\n        case \"Polygon\":\n          return isPolygonInMultiPolygon(geom1, geom2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    default:\n      throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n  }\n}\nfunction isPolygonInMultiPolygon(multiPolygon, polygon) {\n  return multiPolygon.coordinates.some(\n    (coords) => isPolyInPoly({ type: \"Polygon\", coordinates: coords }, polygon)\n  );\n}\nfunction isPointInMultiPoint(multiPoint, pt) {\n  let i;\n  let output = false;\n  for (i = 0; i < multiPoint.coordinates.length; i++) {\n    if (compareCoords(multiPoint.coordinates[i], pt.coordinates)) {\n      output = true;\n      break;\n    }\n  }\n  return output;\n}\nfunction isMultiPointInMultiPoint(multiPoint1, multiPoint2) {\n  for (const coord2 of multiPoint2.coordinates) {\n    let matchFound = false;\n    for (const coord1 of multiPoint1.coordinates) {\n      if (compareCoords(coord2, coord1)) {\n        matchFound = true;\n        break;\n      }\n    }\n    if (!matchFound) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isMultiPointOnLine(lineString, multiPoint) {\n  let haveFoundInteriorPoint = false;\n  for (const coord of multiPoint.coordinates) {\n    if (isPointOnLine(coord, lineString, { ignoreEndVertices: true })) {\n      haveFoundInteriorPoint = true;\n    }\n    if (!isPointOnLine(coord, lineString)) {\n      return false;\n    }\n  }\n  if (haveFoundInteriorPoint) {\n    return true;\n  }\n  return false;\n}\nfunction isMultiPointInPoly(polygon, multiPoint) {\n  for (const coord of multiPoint.coordinates) {\n    if (!booleanPointInPolygon(coord, polygon, { ignoreBoundary: true })) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isLineOnLine(lineString1, lineString2) {\n  let haveFoundInteriorPoint = false;\n  for (const coords of lineString2.coordinates) {\n    if (isPointOnLine({ type: \"Point\", coordinates: coords }, lineString1, {\n      ignoreEndVertices: true\n    })) {\n      haveFoundInteriorPoint = true;\n    }\n    if (!isPointOnLine({ type: \"Point\", coordinates: coords }, lineString1, {\n      ignoreEndVertices: false\n    })) {\n      return false;\n    }\n  }\n  return haveFoundInteriorPoint;\n}\nfunction isLineInPoly(polygon, linestring) {\n  let output = false;\n  let i = 0;\n  const polyBbox = calcBbox(polygon);\n  const lineBbox = calcBbox(linestring);\n  if (!doBBoxOverlap(polyBbox, lineBbox)) {\n    return false;\n  }\n  for (i; i < linestring.coordinates.length - 1; i++) {\n    const midPoint = getMidpoint(\n      linestring.coordinates[i],\n      linestring.coordinates[i + 1]\n    );\n    if (booleanPointInPolygon({ type: \"Point\", coordinates: midPoint }, polygon, {\n      ignoreBoundary: true\n    })) {\n      output = true;\n      break;\n    }\n  }\n  return output;\n}\nfunction isPolyInPoly(feature1, feature2) {\n  if (feature1.type === \"Feature\" && feature1.geometry === null) {\n    return false;\n  }\n  if (feature2.type === \"Feature\" && feature2.geometry === null) {\n    return false;\n  }\n  const poly1Bbox = calcBbox(feature1);\n  const poly2Bbox = calcBbox(feature2);\n  if (!doBBoxOverlap(poly1Bbox, poly2Bbox)) {\n    return false;\n  }\n  const coords = getGeom(feature2).coordinates;\n  for (const ring of coords) {\n    for (const coord of ring) {\n      if (!booleanPointInPolygon(coord, feature1)) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction doBBoxOverlap(bbox1, bbox2) {\n  if (bbox1[0] > bbox2[0]) {\n    return false;\n  }\n  if (bbox1[2] < bbox2[2]) {\n    return false;\n  }\n  if (bbox1[1] > bbox2[1]) {\n    return false;\n  }\n  if (bbox1[3] < bbox2[3]) {\n    return false;\n  }\n  return true;\n}\nfunction compareCoords(pair1, pair2) {\n  return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nfunction getMidpoint(pair1, pair2) {\n  return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2];\n}\nvar turf_boolean_contains_default = booleanContains;\nexport {\n  booleanContains,\n  compareCoords,\n  turf_boolean_contains_default as default,\n  doBBoxOverlap,\n  getMidpoint,\n  isLineInPoly,\n  isLineOnLine,\n  isMultiPointInMultiPoint,\n  isMultiPointInPoly,\n  isMultiPointOnLine,\n  isPointInMultiPoint,\n  isPolyInPoly,\n  isPolygonInMultiPolygon\n};\n//# sourceMappingURL=index.js.map","import Draw from 'ol/interaction/Draw'\nimport i18next from 'i18next'\nimport { GeoJSON } from 'ol/format'\nimport { booleanContains } from '@turf/boolean-contains'\nimport { rawLayerList } from '@masterportal/masterportalapi'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { Feature } from 'ol'\nimport { Polygon } from 'ol/geom'\nimport {\n  parseWfsResponse,\n  getVectorFeaturesByFeatureRequest,\n} from '@polar/lib-get-features'\nimport {\n  FeatureCollection,\n  Feature as GeoJsonFeature,\n  Geometry,\n  GeometryCollection,\n} from 'geojson'\nimport { DrawGetters, DrawState } from '../../types'\n\nlet loaderKeyCounter = 0\nconst loaderKeyBase = 'draw-lasso-load'\n\nconst requestError = `@polar/plugin-draw: An error occurred on creating the lasso request: `\nconst rejectedError =\n  '@polar/plugin-draw: The response to a lasso request indicated an error.'\nconst parseError =\n  '@polar/plugin-draw: Client failure in reading responses in lasso action.'\nconst internalError = () => ({\n  type: 'error',\n  text: i18next.t('plugins.draw.lasso.internalError'),\n})\n\nconst buildAddFeaturesPayload = (\n  featureCollections: FeatureCollection[],\n  drawnLasso: Feature\n) => {\n  const drawnLassoGeoJson = JSON.parse(new GeoJSON().writeFeature(drawnLasso))\n\n  return {\n    geoJSON: {\n      type: 'FeatureCollection',\n      features: featureCollections\n        .reduce(\n          (accumulator, { features }) => accumulator.concat(features),\n          [] as GeoJsonFeature[]\n        )\n        .filter((feature) => {\n          if (feature.geometry.type.startsWith('Multi')) {\n            return (\n              // since .type on GeometryCollection doesn't start with 'Multi'\n              (\n                feature.geometry as Exclude<Geometry, GeometryCollection>\n              ).coordinates.every((partialCoordinates) =>\n                booleanContains(drawnLassoGeoJson, {\n                  type: 'Feature',\n                  geometry: {\n                    type: feature.geometry.type.slice(5), // un«Multi»ed\n                    coordinates: partialCoordinates,\n                  },\n                  properties: {},\n                })\n              )\n            )\n          }\n          return booleanContains(drawnLassoGeoJson, feature)\n        }),\n    },\n  }\n}\n\nexport default function ({\n  rootGetters,\n  getters,\n  commit,\n  dispatch,\n}: PolarActionContext<DrawState, DrawGetters>) {\n  const draw = new Draw({ type: 'Polygon', freehand: true })\n\n  draw.on('drawend', (e) => {\n    const toast = (toastObject) =>\n      getters.toastAction &&\n      dispatch(getters.toastAction, toastObject, { root: true })\n    const drawnLasso = e.feature as Feature<Polygon> // due to Draw 'type' param\n    const requests = getters.activeLassoIds.reduce((accumulator, id) => {\n      try {\n        const request = getVectorFeaturesByFeatureRequest({\n          feature: drawnLasso,\n          fetchLayerId: id,\n          projectionCode: rootGetters.map.getView().getProjection().getCode(),\n        })\n        accumulator.push(request)\n      } catch (e) {\n        console.error(requestError, e)\n        toast(internalError())\n      }\n      return accumulator\n    }, [] as Promise<Response>[])\n\n    let loaderKey\n    if (getters.configuration.addLoading) {\n      loaderKey = `${loaderKeyBase}-${loaderKeyCounter++}`\n      commit(getters.configuration.addLoading, loaderKey, { root: true })\n    }\n\n    Promise.allSettled(requests)\n      .then((settledRequests) =>\n        Promise.all(\n          (\n            settledRequests.filter((promiseSettledResult, index) => {\n              if (promiseSettledResult.status === 'rejected') {\n                console.error(rejectedError, promiseSettledResult.reason)\n                toast({\n                  type: 'error',\n                  text: i18next.t('plugins.draw.lasso.layerRejected', {\n                    id: getters.activeLassoIds[index],\n                  }),\n                })\n                return false\n              }\n              return true\n            }) as PromiseFulfilledResult<Response>[]\n          ).map(async (result, index) =>\n            rawLayerList.getLayerWhere({ id: getters.activeLassoIds[index] })\n              .typ === 'WFS'\n              ? await parseWfsResponse(result.value, undefined, false)\n              : ((await result.value.json()) as FeatureCollection)\n          )\n        )\n      )\n      .then((featureCollections) =>\n        dispatch(\n          'addFeatures',\n          buildAddFeaturesPayload(featureCollections, drawnLasso)\n        )\n      )\n      .catch((error) => {\n        console.error(parseError, error)\n        toast(internalError())\n      })\n      .finally(\n        () =>\n          getters.configuration.removeLoading &&\n          commit(getters.configuration.removeLoading, loaderKey, { root: true })\n      )\n  })\n\n  return [draw]\n}\n","import { PolarActionContext } from '@polar/lib-custom-types'\nimport { Style } from 'ol/style'\nimport { Color } from 'ol/color'\nimport { ColorLike } from 'ol/colorlike'\nimport { DrawGetters, DrawState } from '../../types'\n\nexport default function (\n  { commit }: PolarActionContext<DrawState, DrawGetters>,\n  featureStyle: Style\n): void {\n  let strokeColor: Color | ColorLike\n  if (featureStyle && 'getImage' in featureStyle && featureStyle.getImage()) {\n    // @ts-expect-error | For some reason getStroke is not defined on the type but is callable.\n    strokeColor = featureStyle.getImage().getStroke().getColor()\n  } else {\n    strokeColor = featureStyle.getStroke()?.getColor() || 'black'\n  }\n  commit('setSelectedStrokeColor', strokeColor)\n}\n","import { PolarActionContext } from '@polar/lib-custom-types'\nimport { Style } from 'ol/style'\nimport { DrawGetters, DrawState } from '../../types'\n\nexport default function (\n  { commit, getters }: PolarActionContext<DrawState, DrawGetters>,\n  featureStyle: Style\n): void {\n  const featureText = featureStyle.getText()?.getText()\n  const font = featureStyle.getText()?.getFont() as string\n  // set selectedSize of feature to prevent unintentional size change\n  const fontSize = font.match(/\\b\\d+(?:.\\d+)?/)\n  commit('setSelectedSize', getters.fontSizes.indexOf(Number(fontSize)))\n  commit('setTextInput', featureText)\n}\n","import { Draw, Snap } from 'ol/interaction'\nimport Interaction from 'ol/interaction/Interaction'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { CreateInteractionsPayload, DrawGetters, DrawState } from '../../types'\nimport createDrawStyle from '../../utils/createDrawStyle'\nimport { getSnaps } from './getSnaps'\n\nexport default function (\n  {\n    dispatch,\n    rootGetters,\n    getters: {\n      configuration,\n      drawMode,\n      measureMode,\n      selectedStrokeColor,\n      textInput,\n      textSize,\n    },\n  }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource }: CreateInteractionsPayload\n): Promise<Interaction[]> | Interaction[] {\n  if (drawMode === 'Text') {\n    return dispatch('createTextInteractions', {\n      textInput,\n      textSize,\n      drawSource,\n      drawConfiguration: configuration,\n    })\n  }\n  const style = createDrawStyle(\n    drawMode,\n    selectedStrokeColor,\n    measureMode,\n    rootGetters.map.getView().getProjection(),\n    configuration?.style\n  )\n  const draw = new Draw({\n    source: drawSource,\n    type: drawMode,\n    style,\n  })\n  // @ts-expect-error | internal hack to detect it in @polar/plugin-pins and @polar/plugin-gfi\n  draw._isDrawPlugin = true\n  draw.on('drawend', (e) => e.feature.setStyle(style))\n  return [\n    draw,\n    ...getSnaps(rootGetters.map, rootGetters.configuration?.draw?.snapTo || []),\n    new Snap({ source: drawSource }),\n  ]\n}\n","import VectorLayer from 'ol/layer/Vector'\nimport Interaction from 'ol/interaction/Interaction'\nimport { DragBox, Select } from 'ol/interaction'\nimport { platformModifierKeyOnly } from 'ol/events/condition'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { Map } from 'ol'\nimport { CreateInteractionsPayload, DrawGetters, DrawState } from '../../types'\n\nconst pointerStyle = (map: Map, drawLayer: VectorLayer) => (e) => {\n  const found = map.hasFeatureAtPixel(e.pixel, {\n    layerFilter: (l) => l === drawLayer,\n  })\n\n  if (found) {\n    map.getTargetElement().setAttribute('style', 'cursor: pointer')\n  } else {\n    map.getTargetElement().setAttribute('style', '')\n  }\n}\n\nexport default function (\n  { rootGetters }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource, drawLayer }: CreateInteractionsPayload\n): Interaction[] {\n  const selectInteraction = new Select({ layers: [drawLayer] })\n  const selectedFeatures = selectInteraction.getFeatures()\n  const dragBoxInteraction = new DragBox({\n    condition: platformModifierKeyOnly,\n  })\n\n  const boundPointerStyle = pointerStyle(rootGetters.map, drawLayer)\n  rootGetters.map.on('pointermove', boundPointerStyle)\n\n  dragBoxInteraction.on('boxend', () => {\n    const extent = dragBoxInteraction.getGeometry().getExtent()\n    selectedFeatures.extend(\n      drawSource\n        .getFeaturesInExtent(extent)\n        .filter((feature) => feature.getGeometry()?.intersectsExtent(extent))\n    )\n  })\n\n  selectedFeatures.on(['add'], () => {\n    selectedFeatures.forEach((feature) => drawSource.removeFeature(feature))\n    selectedFeatures.clear()\n  })\n\n  // @ts-expect-error | internal hack to detect it in other plugins\n  selectInteraction._isDeleteSelect = true\n\n  // @ts-expect-error | local piggyback\n  selectInteraction._onRemove = () => {\n    rootGetters.map.un('pointermove', boundPointerStyle)\n    rootGetters.map.getTargetElement().setAttribute('style', '')\n  }\n\n  return [selectInteraction, dragBoxInteraction]\n}\n","import { PolarActionContext } from '@polar/lib-custom-types'\nimport { Map } from 'ol'\nimport { Select } from 'ol/interaction'\nimport { Vector } from 'ol/layer'\nimport { CreateInteractionsPayload, DrawGetters, DrawState } from '../../types'\n\nconst pointerStyle = (map: Map, drawLayer: Vector) => (e) => {\n  const found = map.hasFeatureAtPixel(e.pixel, {\n    layerFilter: (l) => l === drawLayer,\n  })\n\n  if (found) {\n    map.getTargetElement().setAttribute('style', 'cursor: copy')\n  } else {\n    map.getTargetElement().setAttribute('style', '')\n  }\n}\n\nexport function createDuplicateInteractions(\n  { rootGetters }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource, drawLayer }: CreateInteractionsPayload\n) {\n  const selectInteraction = new Select({ layers: [drawLayer], style: null })\n  const selectedFeatures = selectInteraction.getFeatures()\n  // TODO temp solution, not actually _isDeleteSelect; normalizing these flags is part of a future effort\n  // @ts-expect-error | internal hack to detect it in @polar/plugin-pins and @polar/plugin-gfi\n  selectInteraction._isDeleteSelect = true\n\n  const boundPointerStyle = pointerStyle(rootGetters.map, drawLayer)\n  rootGetters.map.on('pointermove', boundPointerStyle)\n\n  selectedFeatures.on('add', () => {\n    drawSource.addFeature(selectedFeatures.getArray()[0].clone())\n    selectedFeatures.clear()\n  })\n\n  // @ts-expect-error | local piggyback\n  selectInteraction._onRemove = () => {\n    rootGetters.map.un('pointermove', boundPointerStyle)\n    rootGetters.map.getTargetElement().setAttribute('style', '')\n  }\n\n  return [selectInteraction]\n}\n","// index.ts\nimport { bbox } from \"@turf/bbox\";\nimport { point } from \"@turf/helpers\";\nfunction center(geojson, options = {}) {\n  const ext = bbox(geojson);\n  const x = (ext[0] + ext[2]) / 2;\n  const y = (ext[1] + ext[3]) / 2;\n  return point([x, y], options.properties, options);\n}\nvar turf_center_default = center;\nexport {\n  center,\n  turf_center_default as default\n};\n//# sourceMappingURL=index.js.map","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).jsts=e()}(this,(function(){\"use strict\";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n<e;n++)i[n]=t[n];return i}function e(t,e,n){return e=u(e),function(t,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t)}(t,h()?Reflect.construct(e,n||[],u(t).constructor):e.apply(t,n))}function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e,n){if(h())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var r=new(t.bind.apply(t,i));return n&&c(r,n.prototype),r}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,v(i.key),i)}}function s(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function a(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!n){if(Array.isArray(t)||(n=y(t))||e){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,s=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw s}}}}function o(){return o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,n){var i=function(t,e){for(;!{}.hasOwnProperty.call(t,e)&&null!==(t=u(t)););return t}(t,e);if(i){var r=Object.getOwnPropertyDescriptor(i,e);return r.get?r.get.call(arguments.length<3?t:n):r.value}},o.apply(null,arguments)}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},u(t)}function l(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&c(t,e)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function c(t,e){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},c(t,e)}function f(t,e,n,i){var r=o(u(1&i?t.prototype:t),e,n);return 2&i&&\"function\"==typeof r?function(t){return r.apply(n,t)}:r}function g(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(e)||y(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function v(t){var e=function(t,e){if(\"object\"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if(\"object\"!=typeof i)return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(t,\"string\");return\"symbol\"==typeof e?e:e+\"\"}function y(e,n){if(e){if(\"string\"==typeof e)return t(e,n);var i={}.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}function d(t){var e=\"function\"==typeof Map?new Map:void 0;return d=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf(\"[native code]\")}catch(e){return\"function\"==typeof t}}(t))return t;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return i(t,arguments,u(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),c(n,t)},d(t)}var _=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getEndCapStyle\",value:function(){return this._endCapStyle}},{key:\"isSingleSided\",value:function(){return this._isSingleSided}},{key:\"setQuadrantSegments\",value:function(e){this._quadrantSegments=e,0===this._quadrantSegments&&(this._joinStyle=t.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=t.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),e<=0&&(this._quadrantSegments=1),this._joinStyle!==t.JOIN_ROUND&&(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS)}},{key:\"getJoinStyle\",value:function(){return this._joinStyle}},{key:\"setJoinStyle\",value:function(t){this._joinStyle=t}},{key:\"setSimplifyFactor\",value:function(t){this._simplifyFactor=t<0?0:t}},{key:\"getSimplifyFactor\",value:function(){return this._simplifyFactor}},{key:\"getQuadrantSegments\",value:function(){return this._quadrantSegments}},{key:\"setEndCapStyle\",value:function(t){this._endCapStyle=t}},{key:\"getMitreLimit\",value:function(){return this._mitreLimit}},{key:\"setMitreLimit\",value:function(t){this._mitreLimit=t}},{key:\"setSingleSided\",value:function(t){this._isSingleSided=t}}],[{key:\"constructor_\",value:function(){if(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=t.CAP_ROUND,this._joinStyle=t.JOIN_ROUND,this._mitreLimit=t.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=t.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.setQuadrantSegments(e)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(s),this.setJoinStyle(a),this.setMitreLimit(o)}}},{key:\"bufferDistanceError\",value:function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)}}])}();_.CAP_ROUND=1,_.CAP_FLAT=2,_.CAP_SQUARE=3,_.JOIN_ROUND=1,_.JOIN_MITRE=2,_.JOIN_BEVEL=3,_.DEFAULT_QUADRANT_SEGMENTS=8,_.DEFAULT_MITRE_LIMIT=5,_.DEFAULT_SIMPLIFY_FACTOR=.01;var p=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({Exception:i})[0],r}return l(i,t),s(i,[{key:\"toString\",value:function(){return this.message}}])}(d(Error)),m=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({IllegalArgumentException:i})[0],r}return l(i,t),s(i)}(p),k=function(){return s((function t(){n(this,t)}),[{key:\"filter\",value:function(t){}}])}();function x(){}function I(){}function E(){}var N,T,S,L,C,R,w,O,b=function(){return s((function t(){n(this,t)}),null,[{key:\"equalsWithTolerance\",value:function(t,e,n){return Math.abs(t-e)<=n}}])}(),M=function(){return s((function t(e,i){n(this,t),this.low=i||0,this.high=e||0}),null,[{key:\"toBinaryString\",value:function(t){var e,n=\"\";for(e=2147483648;e>0;e>>>=1)n+=(t.high&e)===e?\"1\":\"0\";for(e=2147483648;e>0;e>>>=1)n+=(t.low&e)===e?\"1\":\"0\";return n}}])}();function A(){}function P(){}A.NaN=NaN,A.isNaN=function(t){return Number.isNaN(t)},A.isInfinite=function(t){return!Number.isFinite(t)},A.MAX_VALUE=Number.MAX_VALUE,A.POSITIVE_INFINITY=Number.POSITIVE_INFINITY,A.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,\"function\"==typeof Float64Array&&\"function\"==typeof Int32Array?(R=2146435072,w=new Float64Array(1),O=new Int32Array(w.buffer),A.doubleToLongBits=function(t){w[0]=t;var e=0|O[0],n=0|O[1];return(n&R)===R&&1048575&n&&0!==e&&(e=0,n=2146959360),new M(n,e)},A.longBitsToDouble=function(t){return O[0]=t.low,O[1]=t.high,w[0]}):(N=1023,T=Math.log2,S=Math.floor,L=Math.pow,C=function(){for(var t=53;t>0;t--){var e=L(2,t)-1;if(S(T(e))+1===t)return e}return 0}(),A.doubleToLongBits=function(t){var e,n,i,r,s,a,o,u,l;if(t<0||1/t===Number.NEGATIVE_INFINITY?(a=1<<31,t=-t):a=0,0===t)return new M(u=a,l=0);if(t===1/0)return new M(u=2146435072|a,l=0);if(t!=t)return new M(u=2146959360,l=0);if(r=0,l=0,(e=S(t))>1)if(e<=C)(r=S(T(e)))<=20?(l=0,u=e<<20-r&1048575):(l=e%(n=L(2,i=r-20))<<32-i,u=e/n&1048575);else for(i=e,l=0;0!==(i=S(n=i/2));)r++,l>>>=1,l|=(1&u)<<31,u>>>=1,n!==i&&(u|=524288);if(o=r+N,s=0===e,e=t-e,r<52&&0!==e)for(i=0;;){if((n=2*e)>=1?(e=n-1,s?(o--,s=!1):(i<<=1,i|=1,r++)):(e=n,s?0==--o&&(r++,s=!1):(i<<=1,r++)),20===r)u|=i,i=0;else if(52===r){l|=i;break}if(1===n){r<20?u|=i<<20-r:r<52&&(l|=i<<52-r);break}}return u|=o<<20,new M(u|=a,l)},A.longBitsToDouble=function(t){var e,n,i,r,s=t.high,a=t.low,o=s&1<<31?-1:1;for(i=((2146435072&s)>>20)-N,r=0,n=1<<19,e=1;e<=20;e++)s&n&&(r+=L(2,-e)),n>>>=1;for(n=1<<31,e=21;e<=52;e++)a&n&&(r+=L(2,-e)),n>>>=1;if(-1023===i){if(0===r)return 0*o;i=-1022}else{if(1024===i)return 0===r?o/0:NaN;r+=1}return o*r*L(2,i)});var D=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({RuntimeException:i})[0],r}return l(i,t),s(i)}(p),F=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,null,[{key:\"constructor_\",value:function(){if(0===arguments.length)D.constructor_.call(this);else if(1===arguments.length){var t=arguments[0];D.constructor_.call(this,t)}}}])}(D),G=function(){function t(){n(this,t)}return s(t,null,[{key:\"shouldNeverReachHere\",value:function(){if(0===arguments.length)t.shouldNeverReachHere(null);else if(1===arguments.length){var e=arguments[0];throw new F(\"Should never reach here\"+(null!==e?\": \"+e:\"\"))}}},{key:\"isTrue\",value:function(){if(1===arguments.length){var e=arguments[0];t.isTrue(e,null)}else if(2===arguments.length){var n=arguments[1];if(!arguments[0])throw null===n?new F:new F(n)}}},{key:\"equals\",value:function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];t.equals(e,n,null)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];if(!r.equals(i))throw new F(\"Expected \"+i+\" but encountered \"+r+(null!==s?\": \"+s:\"\"))}}}])}(),q=new ArrayBuffer(8),Y=new Float64Array(q),z=new Int32Array(q),X=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getM\",value:function(){return A.NaN}},{key:\"setOrdinate\",value:function(e,n){switch(e){case t.X:this.x=n;break;case t.Y:this.y=n;break;case t.Z:this.setZ(n);break;default:throw new m(\"Invalid ordinate index: \"+e)}}},{key:\"equals2D\",value:function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!b.equalsWithTolerance(this.x,e.x,n)&&!!b.equalsWithTolerance(this.y,e.y,n)}}},{key:\"setM\",value:function(e){throw new m(\"Invalid ordinate index: \"+t.M)}},{key:\"getZ\",value:function(){return this.z}},{key:\"getOrdinate\",value:function(e){switch(e){case t.X:return this.x;case t.Y:return this.y;case t.Z:return this.getZ()}throw new m(\"Invalid ordinate index: \"+e)}},{key:\"equals3D\",value:function(t){return this.x===t.x&&this.y===t.y&&(this.getZ()===t.getZ()||A.isNaN(this.getZ())&&A.isNaN(t.getZ()))}},{key:\"equals\",value:function(e){return e instanceof t&&this.equals2D(e)}},{key:\"equalInZ\",value:function(t,e){return b.equalsWithTolerance(this.getZ(),t.getZ(),e)}},{key:\"setX\",value:function(t){this.x=t}},{key:\"compareTo\",value:function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0}},{key:\"getX\",value:function(){return this.x}},{key:\"setZ\",value:function(t){this.z=t}},{key:\"clone\",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return G.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\"),null;throw t}}},{key:\"copy\",value:function(){return new t(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.getZ()+\")\"}},{key:\"distance3D\",value:function(t){var e=this.x-t.x,n=this.y-t.y,i=this.getZ()-t.getZ();return Math.sqrt(e*e+n*n+i*i)}},{key:\"getY\",value:function(){return this.y}},{key:\"setY\",value:function(t){this.y=t}},{key:\"distance\",value:function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)}},{key:\"hashCode\",value:function(){var e=17;return e=37*(e=37*e+t.hashCode(this.x))+t.hashCode(this.y)}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}},{key:\"interfaces_\",get:function(){return[x,I,E]}}],[{key:\"constructor_\",value:function(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)t.constructor_.call(this,0,0);else if(1===arguments.length){var e=arguments[0];t.constructor_.call(this,e.x,e.y,e.getZ())}else if(2===arguments.length){var n=arguments[0],i=arguments[1];t.constructor_.call(this,n,i,t.NULL_ORDINATE)}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this.x=r,this.y=s,this.z=a}}},{key:\"hashCode\",value:function(t){return Y[0]=t,z[0]^z[1]}}])}(),B=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"compare\",value:function(e,n){var i=t.compare(e.x,n.x);if(0!==i)return i;var r=t.compare(e.y,n.y);return 0!==r?r:this._dimensionsToTest<=2?0:t.compare(e.getZ(),n.getZ())}},{key:\"interfaces_\",get:function(){return[P]}}],[{key:\"constructor_\",value:function(){if(this._dimensionsToTest=2,0===arguments.length)t.constructor_.call(this,2);else if(1===arguments.length){var e=arguments[0];if(2!==e&&3!==e)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=e}}},{key:\"compare\",value:function(t,e){return t<e?-1:t>e?1:A.isNaN(t)?A.isNaN(e)?0:-1:A.isNaN(e)?1:0}}])}();X.DimensionalComparator=B,X.NULL_ORDINATE=A.NaN,X.X=0,X.Y=1,X.Z=2,X.M=3;var U=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getArea\",value:function(){return this.getWidth()*this.getHeight()}},{key:\"equals\",value:function(e){if(!(e instanceof t))return!1;var n=e;return this.isNull()?n.isNull():this._maxx===n.getMaxX()&&this._maxy===n.getMaxY()&&this._minx===n.getMinX()&&this._miny===n.getMinY()}},{key:\"intersection\",value:function(e){if(this.isNull()||e.isNull()||!this.intersects(e))return new t;var n=this._minx>e._minx?this._minx:e._minx,i=this._miny>e._miny?this._miny:e._miny;return new t(n,this._maxx<e._maxx?this._maxx:e._maxx,i,this._maxy<e._maxy?this._maxy:e._maxy)}},{key:\"isNull\",value:function(){return this._maxx<this._minx}},{key:\"getMaxX\",value:function(){return this._maxx}},{key:\"covers\",value:function(){if(1===arguments.length){if(arguments[0]instanceof X){var e=arguments[0];return this.covers(e.x,e.y)}if(arguments[0]instanceof t){var n=arguments[0];return!this.isNull()&&!n.isNull()&&(n.getMinX()>=this._minx&&n.getMaxX()<=this._maxx&&n.getMinY()>=this._miny&&n.getMaxY()<=this._maxy)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return!this.isNull()&&(i>=this._minx&&i<=this._maxx&&r>=this._miny&&r<=this._maxy)}}},{key:\"intersects\",value:function(){if(1===arguments.length){if(arguments[0]instanceof t){var e=arguments[0];return!this.isNull()&&!e.isNull()&&!(e._minx>this._maxx||e._maxx<this._minx||e._miny>this._maxy||e._maxy<this._miny)}if(arguments[0]instanceof X){var n=arguments[0];return this.intersects(n.x,n.y)}}else if(2===arguments.length){if(arguments[0]instanceof X&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1];return!this.isNull()&&(!((i.x<r.x?i.x:r.x)>this._maxx)&&(!((i.x>r.x?i.x:r.x)<this._minx)&&(!((i.y<r.y?i.y:r.y)>this._maxy)&&!((i.y>r.y?i.y:r.y)<this._miny))))}if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1];return!this.isNull()&&!(s>this._maxx||s<this._minx||a>this._maxy||a<this._miny)}}}},{key:\"getMinY\",value:function(){return this._miny}},{key:\"getDiameter\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return Math.sqrt(t*t+e*e)}},{key:\"getMinX\",value:function(){return this._minx}},{key:\"expandToInclude\",value:function(){if(1===arguments.length){if(arguments[0]instanceof X){var e=arguments[0];this.expandToInclude(e.x,e.y)}else if(arguments[0]instanceof t){var n=arguments[0];if(n.isNull())return null;this.isNull()?(this._minx=n.getMinX(),this._maxx=n.getMaxX(),this._miny=n.getMinY(),this._maxy=n.getMaxY()):(n._minx<this._minx&&(this._minx=n._minx),n._maxx>this._maxx&&(this._maxx=n._maxx),n._miny<this._miny&&(this._miny=n._miny),n._maxy>this._maxy&&(this._maxy=n._maxy))}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.isNull()?(this._minx=i,this._maxx=i,this._miny=r,this._maxy=r):(i<this._minx&&(this._minx=i),i>this._maxx&&(this._maxx=i),r<this._miny&&(this._miny=r),r>this._maxy&&(this._maxy=r))}}},{key:\"minExtent\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e}},{key:\"getWidth\",value:function(){return this.isNull()?0:this._maxx-this._minx}},{key:\"compareTo\",value:function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0}},{key:\"translate\",value:function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)}},{key:\"copy\",value:function(){return new t(this)}},{key:\"toString\",value:function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"}},{key:\"setToNull\",value:function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}},{key:\"disjoint\",value:function(t){return!(!this.isNull()&&!t.isNull())||(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}},{key:\"getHeight\",value:function(){return this.isNull()?0:this._maxy-this._miny}},{key:\"maxExtent\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e}},{key:\"expandBy\",value:function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}},{key:\"contains\",value:function(){if(1===arguments.length){if(arguments[0]instanceof t){var e=arguments[0];return this.covers(e)}if(arguments[0]instanceof X){var n=arguments[0];return this.covers(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return this.covers(i,r)}}},{key:\"centre\",value:function(){return this.isNull()?null:new X((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}},{key:\"init\",value:function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof X){var e=arguments[0];this.init(e.x,e.x,e.y,e.y)}else if(arguments[0]instanceof t){var n=arguments[0];this._minx=n._minx,this._maxx=n._maxx,this._miny=n._miny,this._maxy=n._maxy}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];s<a?(this._minx=s,this._maxx=a):(this._minx=a,this._maxx=s),o<u?(this._miny=o,this._maxy=u):(this._miny=u,this._maxy=o)}}},{key:\"getMaxY\",value:function(){return this._maxy}},{key:\"distance\",value:function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)}},{key:\"hashCode\",value:function(){var t=17;return t=37*(t=37*(t=37*(t=37*t+X.hashCode(this._minx))+X.hashCode(this._maxx))+X.hashCode(this._miny))+X.hashCode(this._maxy)}},{key:\"interfaces_\",get:function(){return[x,E]}}],[{key:\"constructor_\",value:function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof X){var e=arguments[0];this.init(e.x,e.x,e.y,e.y)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];this.init(s,a,o,u)}}},{key:\"intersects\",value:function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=Math.min(s.x,a.x),u=Math.max(s.x,a.x),l=Math.min(i.x,r.x),h=Math.max(i.x,r.x);return!(l>u)&&(!(h<o)&&(o=Math.min(s.y,a.y),u=Math.max(s.y,a.y),l=Math.min(i.y,r.y),h=Math.max(i.y,r.y),!(l>u)&&!(h<o)))}}}])}(),V=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"isGeometryCollection\",value:function(){return this.getTypeCode()===t.TYPECODE_GEOMETRYCOLLECTION}},{key:\"getFactory\",value:function(){return this._factory}},{key:\"getGeometryN\",value:function(t){return this}},{key:\"getArea\",value:function(){return 0}},{key:\"isRectangle\",value:function(){return!1}},{key:\"equalsExact\",value:function(t){return this===t||this.equalsExact(t,0)}},{key:\"geometryChanged\",value:function(){this.apply(t.geometryChangedFilter)}},{key:\"geometryChangedAction\",value:function(){this._envelope=null}},{key:\"equalsNorm\",value:function(t){return null!==t&&this.norm().equalsExact(t.norm())}},{key:\"getLength\",value:function(){return 0}},{key:\"getNumGeometries\",value:function(){return 1}},{key:\"compareTo\",value:function(){var t;if(1===arguments.length){var e=arguments[0];return t=e,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return t=n,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(n,i)}}},{key:\"getUserData\",value:function(){return this._userData}},{key:\"getSRID\",value:function(){return this._SRID}},{key:\"getEnvelope\",value:function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())}},{key:\"checkNotGeometryCollection\",value:function(e){if(e.getTypeCode()===t.TYPECODE_GEOMETRYCOLLECTION)throw new m(\"This method does not support GeometryCollection arguments\")}},{key:\"equal\",value:function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n}},{key:\"norm\",value:function(){var t=this.copy();return t.normalize(),t}},{key:\"reverse\",value:function(){var t=this.reverseInternal();return null!=this.envelope&&(t.envelope=this.envelope.copy()),t.setSRID(this.getSRID()),t}},{key:\"copy\",value:function(){var t=this.copyInternal();return t.envelope=null==this._envelope?null:this._envelope.copy(),t._SRID=this._SRID,t._userData=this._userData,t}},{key:\"getPrecisionModel\",value:function(){return this._factory.getPrecisionModel()}},{key:\"getEnvelopeInternal\",value:function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new U(this._envelope)}},{key:\"setSRID\",value:function(t){this._SRID=t}},{key:\"setUserData\",value:function(t){this._userData=t}},{key:\"compare\",value:function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),s=i.next(),a=r.compareTo(s);if(0!==a)return a}return n.hasNext()?1:i.hasNext()?-1:0}},{key:\"hashCode\",value:function(){return this.getEnvelopeInternal().hashCode()}},{key:\"isEquivalentClass\",value:function(t){return this.getClass()===t.getClass()}},{key:\"isGeometryCollectionOrDerived\",value:function(){return this.getTypeCode()===t.TYPECODE_GEOMETRYCOLLECTION||this.getTypeCode()===t.TYPECODE_MULTIPOINT||this.getTypeCode()===t.TYPECODE_MULTILINESTRING||this.getTypeCode()===t.TYPECODE_MULTIPOLYGON}},{key:\"interfaces_\",get:function(){return[I,x,E]}},{key:\"getClass\",value:function(){return t}}],[{key:\"hasNonEmptyElements\",value:function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1}},{key:\"hasNullElements\",value:function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1}}])}();V.constructor_=function(t){t&&(this._envelope=null,this._userData=null,this._factory=t,this._SRID=t.getSRID())},V.TYPECODE_POINT=0,V.TYPECODE_MULTIPOINT=1,V.TYPECODE_LINESTRING=2,V.TYPECODE_LINEARRING=3,V.TYPECODE_MULTILINESTRING=4,V.TYPECODE_POLYGON=5,V.TYPECODE_MULTIPOLYGON=6,V.TYPECODE_GEOMETRYCOLLECTION=7,V.TYPENAME_POINT=\"Point\",V.TYPENAME_MULTIPOINT=\"MultiPoint\",V.TYPENAME_LINESTRING=\"LineString\",V.TYPENAME_LINEARRING=\"LinearRing\",V.TYPENAME_MULTILINESTRING=\"MultiLineString\",V.TYPENAME_POLYGON=\"Polygon\",V.TYPENAME_MULTIPOLYGON=\"MultiPolygon\",V.TYPENAME_GEOMETRYCOLLECTION=\"GeometryCollection\",V.geometryChangedFilter={get interfaces_(){return[k]},filter:function(t){t.geometryChangedAction()}};var H=function(){function t(){n(this,t)}return s(t,null,[{key:\"toLocationSymbol\",value:function(e){switch(e){case t.EXTERIOR:return\"e\";case t.BOUNDARY:return\"b\";case t.INTERIOR:return\"i\";case t.NONE:return\"-\"}throw new m(\"Unknown location value: \"+e)}}])}();H.INTERIOR=0,H.BOUNDARY=1,H.EXTERIOR=2,H.NONE=-1;var Z=function(){return s((function t(){n(this,t)}),[{key:\"add\",value:function(){}},{key:\"addAll\",value:function(){}},{key:\"isEmpty\",value:function(){}},{key:\"iterator\",value:function(){}},{key:\"size\",value:function(){}},{key:\"toArray\",value:function(){}},{key:\"remove\",value:function(){}}])}(),j=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({NoSuchElementException:i})[0],r}return l(i,t),s(i)}(p),W=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({UnsupportedOperationException:i})[0],r}return l(i,t),s(i)}(p),K=function(t){function i(){return n(this,i),e(this,i,arguments)}return l(i,t),s(i,[{key:\"contains\",value:function(){}}])}(Z),J=function(t){function i(t){var r;return n(this,i),(r=e(this,i)).map=new Map,t instanceof Z&&r.addAll(t),r}return l(i,t),s(i,[{key:\"contains\",value:function(t){var e=t.hashCode?t.hashCode():t;return!!this.map.has(e)}},{key:\"add\",value:function(t){var e=t.hashCode?t.hashCode():t;return!this.map.has(e)&&!!this.map.set(e,t)}},{key:\"addAll\",value:function(t){var e,n=a(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:\"remove\",value:function(){throw new W}},{key:\"size\",value:function(){return this.map.size}},{key:\"isEmpty\",value:function(){return 0===this.map.size}},{key:\"toArray\",value:function(){return Array.from(this.map.values())}},{key:\"iterator\",value:function(){return new Q(this.map)}},{key:Symbol.iterator,value:function(){return this.map}}])}(K),Q=function(){return s((function t(e){n(this,t),this.iterator=e.values();var i=this.iterator.next(),r=i.done,s=i.value;this.done=r,this.value=s}),[{key:\"next\",value:function(){if(this.done)throw new j;var t=this.value,e=this.iterator.next(),n=e.done,i=e.value;return this.done=n,this.value=i,t}},{key:\"hasNext\",value:function(){return!this.done}},{key:\"remove\",value:function(){throw new W}}])}(),$=function(){function t(){n(this,t)}return s(t,null,[{key:\"opposite\",value:function(e){return e===t.LEFT?t.RIGHT:e===t.RIGHT?t.LEFT:e}}])}();$.ON=0,$.LEFT=1,$.RIGHT=2;var tt=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({EmptyStackException:i})[0],r}return l(i,t),s(i)}(p),et=function(t){function i(t){var r;return n(this,i),(r=e(this,i,[t])).name=Object.keys({IndexOutOfBoundsException:i})[0],r}return l(i,t),s(i)}(p),nt=function(t){function i(){return n(this,i),e(this,i,arguments)}return l(i,t),s(i,[{key:\"get\",value:function(){}},{key:\"set\",value:function(){}},{key:\"isEmpty\",value:function(){}}])}(Z),it=function(t){function i(){var t;return n(this,i),(t=e(this,i)).array=[],t}return l(i,t),s(i,[{key:\"add\",value:function(t){return this.array.push(t),!0}},{key:\"get\",value:function(t){if(t<0||t>=this.size())throw new et;return this.array[t]}},{key:\"push\",value:function(t){return this.array.push(t),t}},{key:\"pop\",value:function(){if(0===this.array.length)throw new tt;return this.array.pop()}},{key:\"peek\",value:function(){if(0===this.array.length)throw new tt;return this.array[this.array.length-1]}},{key:\"empty\",value:function(){return 0===this.array.length}},{key:\"isEmpty\",value:function(){return this.empty()}},{key:\"search\",value:function(t){return this.array.indexOf(t)}},{key:\"size\",value:function(){return this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}}])}(nt);function rt(t,e){return t.interfaces_&&t.interfaces_.indexOf(e)>-1}var st=function(){return s((function t(e){n(this,t),this.str=e}),[{key:\"append\",value:function(t){this.str+=t}},{key:\"setCharAt\",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:\"toString\",value:function(){return this.str}}])}(),at=function(){function t(e){n(this,t),this.value=e}return s(t,[{key:\"intValue\",value:function(){return this.value}},{key:\"compareTo\",value:function(t){return this.value<t?-1:this.value>t?1:0}}],[{key:\"compare\",value:function(t,e){return t<e?-1:t>e?1:0}},{key:\"isNan\",value:function(t){return Number.isNaN(t)}},{key:\"valueOf\",value:function(e){return new t(e)}}])}(),ot=function(){return s((function t(){n(this,t)}),null,[{key:\"isWhitespace\",value:function(t){return t<=32&&t>=0||127===t}},{key:\"toUpperCase\",value:function(t){return t.toUpperCase()}}])}(),ut=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"le\",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<=t._lo}},{key:\"extractSignificantDigits\",value:function(e,n){var i=this.abs(),r=t.magnitude(i._hi),s=t.TEN.pow(r);(i=i.divide(s)).gt(t.TEN)?(i=i.divide(t.TEN),r+=1):i.lt(t.ONE)&&(i=i.multiply(t.TEN),r-=1);for(var a=r+1,o=new st,u=t.MAX_PRINT_DIGITS-1,l=0;l<=u;l++){e&&l===a&&o.append(\".\");var h=Math.trunc(i._hi);if(h<0)break;var c=!1,f=0;h>9?(c=!0,f=\"9\"):f=\"0\"+h,o.append(f),i=i.subtract(t.valueOf(h)).multiply(t.TEN),c&&i.selfAdd(t.TEN);var g=!0,v=t.magnitude(i._hi);if(v<0&&Math.abs(v)>=u-l&&(g=!1),!g)break}return n[0]=r,o.toString()}},{key:\"sqr\",value:function(){return this.multiply(this)}},{key:\"doubleValue\",value:function(){return this._hi+this._lo}},{key:\"subtract\",value:function(){if(arguments[0]instanceof t){var e=arguments[0];return this.add(e.negate())}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.add(-n)}}},{key:\"equals\",value:function(){if(1===arguments.length&&arguments[0]instanceof t){var e=arguments[0];return this._hi===e._hi&&this._lo===e._lo}}},{key:\"isZero\",value:function(){return 0===this._hi&&0===this._lo}},{key:\"selfSubtract\",value:function(){if(arguments[0]instanceof t){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e._hi,-e._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.isNaN()?this:this.selfAdd(-n,0)}}},{key:\"getSpecialNumberString\",value:function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null}},{key:\"min\",value:function(t){return this.le(t)?this:t}},{key:\"selfDivide\",value:function(){if(1===arguments.length){if(arguments[0]instanceof t){var e=arguments[0];return this.selfDivide(e._hi,e._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.selfDivide(n,0)}}else if(2===arguments.length){var i,r,s,a,o=arguments[0],u=arguments[1],l=null,h=null,c=null,f=null;return s=this._hi/o,f=(l=(c=t.SPLIT*s)-(l=c-s))*(h=(f=t.SPLIT*o)-(h=f-o))-(a=s*o)+l*(r=o-h)+(i=s-l)*h+i*r,f=s+(c=(this._hi-a-f+this._lo-s*u)/o),this._hi=f,this._lo=s-f+c,this}}},{key:\"dump\",value:function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"}},{key:\"divide\",value:function(){if(arguments[0]instanceof t){var e,n,i,r,s=arguments[0],a=null,o=null,u=null,l=null;return e=(i=this._hi/s._hi)-(a=(u=t.SPLIT*i)-(a=u-i)),l=a*(o=(l=t.SPLIT*s._hi)-(o=l-s._hi))-(r=i*s._hi)+a*(n=s._hi-o)+e*o+e*n,new t(l=i+(u=(this._hi-r-l+this._lo-i*s._lo)/s._hi),i-l+u)}if(\"number\"==typeof arguments[0]){var h=arguments[0];return A.isNaN(h)?t.createNaN():t.copy(this).selfDivide(h,0)}}},{key:\"ge\",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>=t._lo}},{key:\"pow\",value:function(e){if(0===e)return t.valueOf(1);var n=new t(this),i=t.valueOf(1),r=Math.abs(e);if(r>1)for(;r>0;)r%2==1&&i.selfMultiply(n),(r/=2)>0&&(n=n.sqr());else i=n;return e<0?i.reciprocal():i}},{key:\"ceil\",value:function(){if(this.isNaN())return t.NaN;var e=Math.ceil(this._hi),n=0;return e===this._hi&&(n=Math.ceil(this._lo)),new t(e,n)}},{key:\"compareTo\",value:function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0}},{key:\"rint\",value:function(){return this.isNaN()?this:this.add(.5).floor()}},{key:\"setValue\",value:function(){if(arguments[0]instanceof t){var e=arguments[0];return this.init(e),this}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.init(n),this}}},{key:\"max\",value:function(t){return this.ge(t)?this:t}},{key:\"sqrt\",value:function(){if(this.isZero())return t.valueOf(0);if(this.isNegative())return t.NaN;var e=1/Math.sqrt(this._hi),n=this._hi*e,i=t.valueOf(n),r=this.subtract(i.sqr())._hi*(.5*e);return i.add(r)}},{key:\"selfAdd\",value:function(){if(1===arguments.length){if(arguments[0]instanceof t){var e=arguments[0];return this.selfAdd(e._hi,e._lo)}if(\"number\"==typeof arguments[0]){var n,i,r,s,a,o=arguments[0],u=null;return u=(r=this._hi+o)-(s=r-this._hi),i=(a=(u=o-s+(this._hi-u))+this._lo)+(r-(n=r+a)),this._hi=n+i,this._lo=i+(n-this._hi),this}}else if(2===arguments.length){var l,h,c,f,g=arguments[0],v=arguments[1],y=null,d=null,_=null;c=this._hi+g,h=this._lo+v,d=c-(_=c-this._hi),y=h-(f=h-this._lo);var p=(l=c+(_=(d=g-_+(this._hi-d))+h))+(_=(y=v-f+(this._lo-y))+(_+(c-l))),m=_+(l-p);return this._hi=p,this._lo=m,this}}},{key:\"selfMultiply\",value:function(){if(1===arguments.length){if(arguments[0]instanceof t){var e=arguments[0];return this.selfMultiply(e._hi,e._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.selfMultiply(n,0)}}else if(2===arguments.length){var i,r,s=arguments[0],a=arguments[1],o=null,u=null,l=null,h=null;o=(l=t.SPLIT*this._hi)-this._hi,h=t.SPLIT*s,o=l-o,i=this._hi-o,u=h-s;var c=(l=this._hi*s)+(h=o*(u=h-u)-l+o*(r=s-u)+i*u+i*r+(this._hi*a+this._lo*s)),f=h+(o=l-c);return this._hi=c,this._lo=f,this}}},{key:\"selfSqr\",value:function(){return this.selfMultiply(this)}},{key:\"floor\",value:function(){if(this.isNaN())return t.NaN;var e=Math.floor(this._hi),n=0;return e===this._hi&&(n=Math.floor(this._lo)),new t(e,n)}},{key:\"negate\",value:function(){return this.isNaN()?this:new t(-this._hi,-this._lo)}},{key:\"clone\",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}}},{key:\"multiply\",value:function(){if(arguments[0]instanceof t){var e=arguments[0];return e.isNaN()?t.createNaN():t.copy(this).selfMultiply(e)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return A.isNaN(n)?t.createNaN():t.copy(this).selfMultiply(n,0)}}},{key:\"isNaN\",value:function(){return A.isNaN(this._hi)}},{key:\"intValue\",value:function(){return Math.trunc(this._hi)}},{key:\"toString\",value:function(){var e=t.magnitude(this._hi);return e>=-3&&e<=20?this.toStandardNotation():this.toSciNotation()}},{key:\"toStandardNotation\",value:function(){var e=this.getSpecialNumberString();if(null!==e)return e;var n=new Array(1).fill(null),i=this.extractSignificantDigits(!0,n),r=n[0]+1,s=i;if(\".\"===i.charAt(0))s=\"0\"+i;else if(r<0)s=\"0.\"+t.stringOfChar(\"0\",-r)+i;else if(-1===i.indexOf(\".\")){var a=r-i.length;s=i+t.stringOfChar(\"0\",a)+\".0\"}return this.isNegative()?\"-\"+s:s}},{key:\"reciprocal\",value:function(){var e,n,i,r,s=null,a=null,o=null,u=null;e=(i=1/this._hi)-(s=(o=t.SPLIT*i)-(s=o-i)),a=(u=t.SPLIT*this._hi)-this._hi;var l=i+(o=(1-(r=i*this._hi)-(u=s*(a=u-a)-r+s*(n=this._hi-a)+e*a+e*n)-i*this._lo)/this._hi);return new t(l,i-l+o)}},{key:\"toSciNotation\",value:function(){if(this.isZero())return t.SCI_NOT_ZERO;var e=this.getSpecialNumberString();if(null!==e)return e;var n=new Array(1).fill(null),i=this.extractSignificantDigits(!1,n),r=t.SCI_NOT_EXPONENT_CHAR+n[0];if(\"0\"===i.charAt(0))throw new IllegalStateException(\"Found leading zero: \"+i);var s=\"\";i.length>1&&(s=i.substring(1));var a=i.charAt(0)+\".\"+s;return this.isNegative()?\"-\"+a+r:a+r}},{key:\"abs\",value:function(){return this.isNaN()?t.NaN:this.isNegative()?this.negate():new t(this)}},{key:\"isPositive\",value:function(){return this._hi>0||0===this._hi&&this._lo>0}},{key:\"lt\",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<t._lo}},{key:\"add\",value:function(){if(arguments[0]instanceof t){var e=arguments[0];return t.copy(this).selfAdd(e)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return t.copy(this).selfAdd(n)}}},{key:\"init\",value:function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var e=arguments[0];this._hi=e,this._lo=0}else if(arguments[0]instanceof t){var n=arguments[0];this._hi=n._hi,this._lo=n._lo}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this._hi=i,this._lo=r}}},{key:\"gt\",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>t._lo}},{key:\"isNegative\",value:function(){return this._hi<0||0===this._hi&&this._lo<0}},{key:\"trunc\",value:function(){return this.isNaN()?t.NaN:this.isPositive()?this.floor():this.ceil()}},{key:\"signum\",value:function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}},{key:\"interfaces_\",get:function(){return[E,x,I]}}],[{key:\"constructor_\",value:function(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var e=arguments[0];this.init(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];t.constructor_.call(this,t.parse(i))}}else if(2===arguments.length){var r=arguments[0],s=arguments[1];this.init(r,s)}}},{key:\"determinant\",value:function(){if(\"number\"==typeof arguments[3]&&\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3];return t.determinant(t.valueOf(e),t.valueOf(n),t.valueOf(i),t.valueOf(r))}if(arguments[3]instanceof t&&arguments[2]instanceof t&&arguments[0]instanceof t&&arguments[1]instanceof t){var s=arguments[1],a=arguments[2],o=arguments[3];return arguments[0].multiply(o).selfSubtract(s.multiply(a))}}},{key:\"sqr\",value:function(e){return t.valueOf(e).selfMultiply(e)}},{key:\"valueOf\",value:function(){if(\"string\"==typeof arguments[0]){var e=arguments[0];return t.parse(e)}if(\"number\"==typeof arguments[0])return new t(arguments[0])}},{key:\"sqrt\",value:function(e){return t.valueOf(e).sqrt()}},{key:\"parse\",value:function(e){for(var n=0,i=e.length;ot.isWhitespace(e.charAt(n));)n++;var r=!1;if(n<i){var s=e.charAt(n);\"-\"!==s&&\"+\"!==s||(n++,\"-\"===s&&(r=!0))}for(var a=new t,o=0,u=0,l=0,h=!1;!(n>=i);){var c=e.charAt(n);if(n++,ot.isDigit(c)){var f=c-\"0\";a.selfMultiply(t.TEN),a.selfAdd(f),o++}else{if(\".\"!==c){if(\"e\"===c||\"E\"===c){var g=e.substring(n);try{l=at.parseInt(g)}catch(t){throw t instanceof NumberFormatException?new NumberFormatException(\"Invalid exponent \"+g+\" in string \"+e):t}break}throw new NumberFormatException(\"Unexpected character '\"+c+\"' at position \"+n+\" in string \"+e)}u=o,h=!0}}var v=a;h||(u=o);var y=o-u-l;if(0===y)v=a;else if(y>0){var d=t.TEN.pow(y);v=a.divide(d)}else if(y<0){var _=t.TEN.pow(-y);v=a.multiply(_)}return r?v.negate():v}},{key:\"createNaN\",value:function(){return new t(A.NaN,A.NaN)}},{key:\"copy\",value:function(e){return new t(e)}},{key:\"magnitude\",value:function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i}},{key:\"stringOfChar\",value:function(t,e){for(var n=new st,i=0;i<e;i++)n.append(t);return n.toString()}}])}();ut.PI=new ut(3.141592653589793,12246467991473532e-32),ut.TWO_PI=new ut(6.283185307179586,24492935982947064e-32),ut.PI_2=new ut(1.5707963267948966,6123233995736766e-32),ut.E=new ut(2.718281828459045,14456468917292502e-32),ut.NaN=new ut(A.NaN,A.NaN),ut.EPS=123259516440783e-46,ut.SPLIT=134217729,ut.MAX_PRINT_DIGITS=32,ut.TEN=ut.valueOf(10),ut.ONE=ut.valueOf(1),ut.SCI_NOT_EXPONENT_CHAR=\"E\",ut.SCI_NOT_ZERO=\"0.0E0\";var lt=function(){function t(){n(this,t)}return s(t,null,[{key:\"orientationIndex\",value:function(e,n,i){var r=t.orientationIndexFilter(e,n,i);if(r<=1)return r;var s=ut.valueOf(n.x).selfAdd(-e.x),a=ut.valueOf(n.y).selfAdd(-e.y),o=ut.valueOf(i.x).selfAdd(-n.x),u=ut.valueOf(i.y).selfAdd(-n.y);return s.selfMultiply(u).selfSubtract(a.selfMultiply(o)).signum()}},{key:\"signOfDet2x2\",value:function(){if(arguments[3]instanceof ut&&arguments[2]instanceof ut&&arguments[0]instanceof ut&&arguments[1]instanceof ut){var t=arguments[1],e=arguments[2],n=arguments[3];return arguments[0].multiply(n).selfSubtract(t.multiply(e)).signum()}if(\"number\"==typeof arguments[3]&&\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=ut.valueOf(i),u=ut.valueOf(r),l=ut.valueOf(s),h=ut.valueOf(a);return o.multiply(h).selfSubtract(u.multiply(l)).signum()}}},{key:\"intersection\",value:function(t,e,n,i){var r=new ut(t.y).selfSubtract(e.y),s=new ut(e.x).selfSubtract(t.x),a=new ut(t.x).selfMultiply(e.y).selfSubtract(new ut(e.x).selfMultiply(t.y)),o=new ut(n.y).selfSubtract(i.y),u=new ut(i.x).selfSubtract(n.x),l=new ut(n.x).selfMultiply(i.y).selfSubtract(new ut(i.x).selfMultiply(n.y)),h=s.multiply(l).selfSubtract(u.multiply(a)),c=o.multiply(a).selfSubtract(r.multiply(l)),f=r.multiply(u).selfSubtract(o.multiply(s)),g=h.selfDivide(f).doubleValue(),v=c.selfDivide(f).doubleValue();return A.isNaN(g)||A.isInfinite(g)||A.isNaN(v)||A.isInfinite(v)?null:new X(g,v)}},{key:\"orientationIndexFilter\",value:function(e,n,i){var r=null,s=(e.x-i.x)*(n.y-i.y),a=(e.y-i.y)*(n.x-i.x),o=s-a;if(s>0){if(a<=0)return t.signum(o);r=s+a}else{if(!(s<0))return t.signum(o);if(a>=0)return t.signum(o);r=-s-a}var u=t.DP_SAFE_EPSILON*r;return o>=u||-o>=u?t.signum(o):2}},{key:\"signum\",value:function(t){return t>0?1:t<0?-1:0}}])}();lt.DP_SAFE_EPSILON=1e-15;var ht=function(){return s((function t(){n(this,t)}),[{key:\"getM\",value:function(t){if(this.hasM()){var e=this.getDimension()-this.getMeasures();return this.getOrdinate(t,e)}return A.NaN}},{key:\"setOrdinate\",value:function(t,e,n){}},{key:\"getZ\",value:function(t){return this.hasZ()?this.getOrdinate(t,2):A.NaN}},{key:\"size\",value:function(){}},{key:\"getOrdinate\",value:function(t,e){}},{key:\"getCoordinate\",value:function(){}},{key:\"getCoordinateCopy\",value:function(t){}},{key:\"createCoordinate\",value:function(){}},{key:\"getDimension\",value:function(){}},{key:\"hasM\",value:function(){return this.getMeasures()>0}},{key:\"getX\",value:function(t){}},{key:\"hasZ\",value:function(){return this.getDimension()-this.getMeasures()>2}},{key:\"getMeasures\",value:function(){return 0}},{key:\"expandEnvelope\",value:function(t){}},{key:\"copy\",value:function(){}},{key:\"getY\",value:function(t){}},{key:\"toCoordinateArray\",value:function(){}},{key:\"interfaces_\",get:function(){return[I]}}])}();ht.X=0,ht.Y=1,ht.Z=2,ht.M=3;var ct=function(){function t(){n(this,t)}return s(t,null,[{key:\"index\",value:function(t,e,n){return lt.orientationIndex(t,e,n)}},{key:\"isCCW\",value:function(){if(arguments[0]instanceof Array){var e=arguments[0],n=e.length-1;if(n<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var i=e[0],r=0,s=1;s<=n;s++){var a=e[s];a.y>i.y&&(i=a,r=s)}var o=r;do{(o-=1)<0&&(o=n)}while(e[o].equals2D(i)&&o!==r);var u=r;do{u=(u+1)%n}while(e[u].equals2D(i)&&u!==r);var l=e[o],h=e[u];if(l.equals2D(i)||h.equals2D(i)||l.equals2D(h))return!1;var c=t.index(l,i,h);return 0===c?l.x>h.x:c>0}if(rt(arguments[0],ht)){var f=arguments[0],g=f.size()-1;if(g<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var v=f.getCoordinate(0),y=0,d=1;d<=g;d++){var _=f.getCoordinate(d);_.y>v.y&&(v=_,y=d)}var p=null,k=y;do{(k-=1)<0&&(k=g),p=f.getCoordinate(k)}while(p.equals2D(v)&&k!==y);var x=null,I=y;do{I=(I+1)%g,x=f.getCoordinate(I)}while(x.equals2D(v)&&I!==y);if(p.equals2D(v)||x.equals2D(v)||p.equals2D(x))return!1;var E=t.index(p,v,x);return 0===E?p.x>x.x:E>0}}}])}();ct.CLOCKWISE=-1,ct.RIGHT=ct.CLOCKWISE,ct.COUNTERCLOCKWISE=1,ct.LEFT=ct.COUNTERCLOCKWISE,ct.COLLINEAR=0,ct.STRAIGHT=ct.COLLINEAR;var ft=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getCoordinate\",value:function(){return this._minCoord}},{key:\"getRightmostSide\",value:function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n}},{key:\"findRightmostEdgeAtVertex\",value:function(){var t=this._minDe.getEdge().getCoordinates();G.isTrue(this._minIndex>0&&this._minIndex<t.length,\"rightmost point expected to be interior vertex of edge\");var e=t[this._minIndex-1],n=t[this._minIndex+1],i=ct.index(this._minCoord,n,e),r=!1;(e.y<this._minCoord.y&&n.y<this._minCoord.y&&i===ct.COUNTERCLOCKWISE||e.y>this._minCoord.y&&n.y>this._minCoord.y&&i===ct.CLOCKWISE)&&(r=!0),r&&(this._minIndex=this._minIndex-1)}},{key:\"getRightmostSideOfSegment\",value:function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=$.LEFT;return n[e].y<n[e+1].y&&(i=$.RIGHT),i}},{key:\"getEdge\",value:function(){return this._orientedDe}},{key:\"checkForRightmostCoordinate\",value:function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])}},{key:\"findRightmostEdgeAtNode\",value:function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)}},{key:\"findEdge\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}G.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===$.LEFT&&(this._orientedDe=this._minDe.getSym())}}],[{key:\"constructor_\",value:function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null}}])}(),gt=function(t){function i(t,r){var s;return n(this,i),(s=e(this,i,[r?t+\" [ \"+r+\" ]\":t])).pt=r?new X(r):void 0,s.name=Object.keys({TopologyException:i})[0],s}return l(i,t),s(i,[{key:\"getCoordinate\",value:function(){return this.pt}}])}(D),vt=function(){return s((function t(){n(this,t),this.array=[]}),[{key:\"addLast\",value:function(t){this.array.push(t)}},{key:\"removeFirst\",value:function(){return this.array.shift()}},{key:\"isEmpty\",value:function(){return 0===this.array.length}}])}(),yt=function(t){function i(t){var r;return n(this,i),(r=e(this,i)).array=[],t instanceof Z&&r.addAll(t),r}return l(i,t),s(i,[{key:\"interfaces_\",get:function(){return[nt,Z]}},{key:\"ensureCapacity\",value:function(){}},{key:\"add\",value:function(t){return 1===arguments.length?this.array.push(t):this.array.splice(arguments[0],0,arguments[1]),!0}},{key:\"clear\",value:function(){this.array=[]}},{key:\"addAll\",value:function(t){var e,n=a(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.array.push(i)}}catch(t){n.e(t)}finally{n.f()}}},{key:\"set\",value:function(t,e){var n=this.array[t];return this.array[t]=e,n}},{key:\"iterator\",value:function(){return new dt(this)}},{key:\"get\",value:function(t){if(t<0||t>=this.size())throw new et;return this.array[t]}},{key:\"isEmpty\",value:function(){return 0===this.array.length}},{key:\"sort\",value:function(t){t?this.array.sort((function(e,n){return t.compare(e,n)})):this.array.sort()}},{key:\"size\",value:function(){return this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}},{key:\"remove\",value:function(t){for(var e=0,n=this.array.length;e<n;e++)if(this.array[e]===t)return!!this.array.splice(e,1);return!1}},{key:Symbol.iterator,value:function(){return this.array.values()}}])}(nt),dt=function(){return s((function t(e){n(this,t),this.arrayList=e,this.position=0}),[{key:\"next\",value:function(){if(this.position===this.arrayList.size())throw new j;return this.arrayList.get(this.position++)}},{key:\"hasNext\",value:function(){return this.position<this.arrayList.size()}},{key:\"set\",value:function(t){return this.arrayList.set(this.position-1,t)}},{key:\"remove\",value:function(){this.arrayList.remove(this.arrayList.get(this.position))}}])}(),_t=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"clearVisitedEdges\",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}}},{key:\"getRightmostCoordinate\",value:function(){return this._rightMostCoord}},{key:\"computeNodeDepth\",value:function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new gt(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var s=r.next();s.setVisited(!0),this.copySymDepths(s)}}},{key:\"computeDepth\",value:function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.getNode(),e.getLabel(),e.setEdgeDepths($.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)}},{key:\"create\",value:function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()}},{key:\"findResultEdges\",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth($.RIGHT)>=1&&e.getDepth($.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}}},{key:\"computeDepths\",value:function(t){var e=new J,n=new vt,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var s=r.getEdges().iterator();s.hasNext();){var a=s.next().getSym();if(!a.isVisited()){var o=a.getNode();e.contains(o)||(n.addLast(o),e.add(o))}}}}},{key:\"compareTo\",value:function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0}},{key:\"getEnvelope\",value:function(){if(null===this._env){for(var t=new U,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;i<n.length-1;i++)t.expandToInclude(n[i]);this._env=t}return this._env}},{key:\"addReachable\",value:function(t){var e=new it;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}}},{key:\"copySymDepths\",value:function(t){var e=t.getSym();e.setDepth($.LEFT,t.getDepth($.RIGHT)),e.setDepth($.RIGHT,t.getDepth($.LEFT))}},{key:\"add\",value:function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();this._dirEdgeList.add(i);var r=i.getSym().getNode();r.isVisited()||e.push(r)}}},{key:\"getNodes\",value:function(){return this._nodes}},{key:\"getDirectedEdges\",value:function(){return this._dirEdgeList}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._finder=null,this._dirEdgeList=new yt,this._nodes=new yt,this._rightMostCoord=null,this._env=null,this._finder=new ft}}])}(),pt=function(){return s((function t(){n(this,t)}),null,[{key:\"intersection\",value:function(t,e,n,i){var r=t.x<e.x?t.x:e.x,s=t.y<e.y?t.y:e.y,a=t.x>e.x?t.x:e.x,o=t.y>e.y?t.y:e.y,u=n.x<i.x?n.x:i.x,l=n.y<i.y?n.y:i.y,h=n.x>i.x?n.x:i.x,c=n.y>i.y?n.y:i.y,f=((r>u?r:u)+(a<h?a:h))/2,g=((s>l?s:l)+(o<c?o:c))/2,v=t.x-f,y=t.y-g,d=e.x-f,_=e.y-g,p=n.x-f,m=n.y-g,k=i.x-f,x=i.y-g,I=y-_,E=d-v,N=v*_-d*y,T=m-x,S=k-p,L=p*x-k*m,C=I*S-T*E,R=(E*L-S*N)/C,w=(T*N-I*L)/C;return A.isNaN(R)||A.isInfinite(R)||A.isNaN(w)||A.isInfinite(w)?null:new X(R+f,w+g)}}])}(),mt=function(){return s((function t(){n(this,t)}),null,[{key:\"arraycopy\",value:function(t,e,n,i,r){for(var s=0,a=e;a<e+r;a++)n[i+s]=t[a],s++}},{key:\"getProperty\",value:function(t){return{\"line.separator\":\"\\n\"}[t]}}])}(),kt=function(){function t(){n(this,t)}return s(t,null,[{key:\"log10\",value:function(e){var n=Math.log(e);return A.isInfinite(n)||A.isNaN(n)?n:n/t.LOG_10}},{key:\"min\",value:function(t,e,n,i){var r=t;return e<r&&(r=e),n<r&&(r=n),i<r&&(r=i),r}},{key:\"clamp\",value:function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],s=arguments[2];return i<r?r:i>s?s:i}}},{key:\"wrap\",value:function(t,e){return t<0?e- -t%e:t%e}},{key:\"max\",value:function(){if(3===arguments.length){var t=arguments[1],e=arguments[2],n=arguments[0];return t>n&&(n=t),e>n&&(n=e),n}if(4===arguments.length){var i=arguments[1],r=arguments[2],s=arguments[3],a=arguments[0];return i>a&&(a=i),r>a&&(a=r),s>a&&(a=s),a}}},{key:\"average\",value:function(t,e){return(t+e)/2}}])}();kt.LOG_10=Math.log(10);var xt=function(){function t(){n(this,t)}return s(t,null,[{key:\"segmentToSegment\",value:function(e,n,i,r){if(e.equals(n))return t.pointToSegment(e,i,r);if(i.equals(r))return t.pointToSegment(r,e,n);var s=!1;if(U.intersects(e,n,i,r)){var a=(n.x-e.x)*(r.y-i.y)-(n.y-e.y)*(r.x-i.x);if(0===a)s=!0;else{var o=(e.y-i.y)*(r.x-i.x)-(e.x-i.x)*(r.y-i.y),u=((e.y-i.y)*(n.x-e.x)-(e.x-i.x)*(n.y-e.y))/a,l=o/a;(l<0||l>1||u<0||u>1)&&(s=!0)}}else s=!0;return s?kt.min(t.pointToSegment(e,i,r),t.pointToSegment(n,i,r),t.pointToSegment(i,e,n),t.pointToSegment(r,e,n)):0}},{key:\"pointToSegment\",value:function(t,e,n){if(e.x===n.x&&e.y===n.y)return t.distance(e);var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((t.x-e.x)*(n.x-e.x)+(t.y-e.y)*(n.y-e.y))/i;if(r<=0)return t.distance(e);if(r>=1)return t.distance(n);var s=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(s)*Math.sqrt(i)}},{key:\"pointToLinePerpendicular\",value:function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)}},{key:\"pointToSegmentString\",value:function(e,n){if(0===n.length)throw new m(\"Line array must contain at least one vertex\");for(var i=e.distance(n[0]),r=0;r<n.length-1;r++){var s=t.pointToSegment(e,n[r],n[r+1]);s<i&&(i=s)}return i}}])}(),It=function(){return s((function t(){n(this,t)}),[{key:\"create\",value:function(){if(1===arguments.length)arguments[0]instanceof Array||rt(arguments[0],ht);else if(2===arguments.length);else if(3===arguments.length){var t=arguments[0],e=arguments[1];return this.create(t,e)}}}])}(),Et=function(){return s((function t(){n(this,t)}),[{key:\"filter\",value:function(t){}}])}(),Nt=function(){return s((function t(){n(this,t)}),null,[{key:\"ofLine\",value:function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new X;t.getCoordinate(0,i);for(var r=i.x,s=i.y,a=1;a<e;a++){t.getCoordinate(a,i);var o=i.x,u=i.y,l=o-r,h=u-s;n+=Math.sqrt(l*l+h*h),r=o,s=u}return n}}])}(),Tt=s((function t(){n(this,t)})),St=function(){function t(){n(this,t)}return s(t,null,[{key:\"copyCoord\",value:function(t,e,n,i){for(var r=Math.min(t.getDimension(),n.getDimension()),s=0;s<r;s++)n.setOrdinate(i,s,t.getOrdinate(e,s))}},{key:\"isRing\",value:function(t){var e=t.size();return 0===e||!(e<=3)&&(t.getOrdinate(0,ht.X)===t.getOrdinate(e-1,ht.X)&&t.getOrdinate(0,ht.Y)===t.getOrdinate(e-1,ht.Y))}},{key:\"scroll\",value:function(){if(2===arguments.length){if(rt(arguments[0],ht)&&Number.isInteger(arguments[1])){var e=arguments[0],n=arguments[1];t.scroll(e,n,t.isRing(e))}else if(rt(arguments[0],ht)&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1],s=t.indexOf(r,i);if(s<=0)return null;t.scroll(i,s)}}else if(3===arguments.length){var a=arguments[0],o=arguments[1],u=arguments[2];if(o<=0)return null;for(var l=a.copy(),h=u?a.size()-1:a.size(),c=0;c<h;c++)for(var f=0;f<a.getDimension();f++)a.setOrdinate(c,f,l.getOrdinate((o+c)%h,f));if(u)for(var g=0;g<a.getDimension();g++)a.setOrdinate(h,g,a.getOrdinate(0,g))}}},{key:\"isEqual\",value:function(t,e){var n=t.size();if(n!==e.size())return!1;for(var i=Math.min(t.getDimension(),e.getDimension()),r=0;r<n;r++)for(var s=0;s<i;s++){var a=t.getOrdinate(r,s),o=e.getOrdinate(r,s);if(t.getOrdinate(r,s)!==e.getOrdinate(r,s)&&(!A.isNaN(a)||!A.isNaN(o)))return!1}return!0}},{key:\"minCoordinateIndex\",value:function(){if(1===arguments.length){var e=arguments[0];return t.minCoordinateIndex(e,0,e.size()-1)}if(3===arguments.length){for(var n=arguments[0],i=arguments[2],r=-1,s=null,a=arguments[1];a<=i;a++){var o=n.getCoordinate(a);(null===s||s.compareTo(o)>0)&&(s=o,r=a)}return r}}},{key:\"extend\",value:function(e,n,i){var r=e.create(i,n.getDimension()),s=n.size();if(t.copy(n,0,r,0,s),s>0)for(var a=s;a<i;a++)t.copy(n,s-1,r,a,1);return r}},{key:\"reverse\",value:function(e){for(var n=e.size()-1,i=Math.trunc(n/2),r=0;r<=i;r++)t.swap(e,r,n-r)}},{key:\"swap\",value:function(t,e,n){if(e===n)return null;for(var i=0;i<t.getDimension();i++){var r=t.getOrdinate(e,i);t.setOrdinate(e,i,t.getOrdinate(n,i)),t.setOrdinate(n,i,r)}}},{key:\"copy\",value:function(e,n,i,r,s){for(var a=0;a<s;a++)t.copyCoord(e,n+a,i,r+a)}},{key:\"ensureValidRing\",value:function(e,n){var i=n.size();return 0===i?n:i<=3?t.createClosedRing(e,n,4):n.getOrdinate(0,ht.X)===n.getOrdinate(i-1,ht.X)&&n.getOrdinate(0,ht.Y)===n.getOrdinate(i-1,ht.Y)?n:t.createClosedRing(e,n,i+1)}},{key:\"indexOf\",value:function(t,e){for(var n=0;n<e.size();n++)if(t.x===e.getOrdinate(n,ht.X)&&t.y===e.getOrdinate(n,ht.Y))return n;return-1}},{key:\"createClosedRing\",value:function(e,n,i){var r=e.create(i,n.getDimension()),s=n.size();t.copy(n,0,r,0,s);for(var a=s;a<i;a++)t.copy(n,0,r,a,1);return r}},{key:\"minCoordinate\",value:function(t){for(var e=null,n=0;n<t.size();n++){var i=t.getCoordinate(n);(null===e||e.compareTo(i)>0)&&(e=i)}return e}}])}(),Lt=function(){function t(){n(this,t)}return s(t,null,[{key:\"toDimensionSymbol\",value:function(e){switch(e){case t.FALSE:return t.SYM_FALSE;case t.TRUE:return t.SYM_TRUE;case t.DONTCARE:return t.SYM_DONTCARE;case t.P:return t.SYM_P;case t.L:return t.SYM_L;case t.A:return t.SYM_A}throw new m(\"Unknown dimension value: \"+e)}},{key:\"toDimensionValue\",value:function(e){switch(ot.toUpperCase(e)){case t.SYM_FALSE:return t.FALSE;case t.SYM_TRUE:return t.TRUE;case t.SYM_DONTCARE:return t.DONTCARE;case t.SYM_P:return t.P;case t.SYM_L:return t.L;case t.SYM_A:return t.A}throw new m(\"Unknown dimension symbol: \"+e)}}])}();Lt.P=0,Lt.L=1,Lt.A=2,Lt.FALSE=-1,Lt.TRUE=-2,Lt.DONTCARE=-3,Lt.SYM_FALSE=\"F\",Lt.SYM_TRUE=\"T\",Lt.SYM_DONTCARE=\"*\",Lt.SYM_P=\"0\",Lt.SYM_L=\"1\",Lt.SYM_A=\"2\";var Ct=function(){return s((function t(){n(this,t)}),[{key:\"filter\",value:function(t){}}])}(),Rt=function(){return s((function t(){n(this,t)}),[{key:\"filter\",value:function(t,e){}},{key:\"isDone\",value:function(){}},{key:\"isGeometryChanged\",value:function(){}}])}(),wt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"computeEnvelopeInternal\",value:function(){return this.isEmpty()?new U:this._points.expandEnvelope(new U)}},{key:\"isRing\",value:function(){return this.isClosed()&&this.isSimple()}},{key:\"getCoordinates\",value:function(){return this._points.toCoordinateArray()}},{key:\"copyInternal\",value:function(){return new i(this._points.copy(),this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._points.size()!==n._points.size())return!1;for(var r=0;r<this._points.size();r++)if(!this.equal(this._points.getCoordinate(r),n._points.getCoordinate(r),e))return!1;return!0}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"normalize\",value:function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e))){if(this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0){var n=this._points.copy();St.reverse(n),this._points=n}return null}}}},{key:\"getCoordinate\",value:function(){return this.isEmpty()?null:this._points.getCoordinate(0)}},{key:\"getBoundaryDimension\",value:function(){return this.isClosed()?Lt.FALSE:0}},{key:\"isClosed\",value:function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}},{key:\"reverseInternal\",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLineString(t)}},{key:\"getEndPoint\",value:function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_LINESTRING}},{key:\"getDimension\",value:function(){return 1}},{key:\"getLength\",value:function(){return Nt.ofLine(this._points)}},{key:\"getNumPoints\",value:function(){return this._points.size()}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=0,n=0;e<this._points.size()&&n<t._points.size();){var i=this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));if(0!==i)return i;e++,n++}return e<this._points.size()?1:n<t._points.size()?-1:0}if(2===arguments.length){var r=arguments[0];return arguments[1].compare(this._points,r._points)}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(rt(arguments[0],Rt)){var n=arguments[0];if(0===this._points.size())return null;for(var i=0;i<this._points.size()&&(n.filter(this._points,i),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){arguments[0].filter(this)}else if(rt(arguments[0],k)){arguments[0].filter(this)}}},{key:\"getBoundary\",value:function(){throw new W}},{key:\"isEquivalentClass\",value:function(t){return t instanceof i}},{key:\"getCoordinateN\",value:function(t){return this._points.getCoordinate(t)}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_LINESTRING}},{key:\"getCoordinateSequence\",value:function(){return this._points}},{key:\"isEmpty\",value:function(){return 0===this._points.size()}},{key:\"init\",value:function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new m(\"Invalid number of points in LineString (found \"+t.size()+\" - must be 0 or >= 2)\");this._points=t}},{key:\"isCoordinate\",value:function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1}},{key:\"getStartPoint\",value:function(){return this.isEmpty()?null:this.getPointN(0)}},{key:\"getPointN\",value:function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))}},{key:\"interfaces_\",get:function(){return[Tt]}}],[{key:\"constructor_\",value:function(){if(this._points=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];V.constructor_.call(this,e),this.init(t)}}}])}(V),Ot=s((function t(){n(this,t)})),bt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"computeEnvelopeInternal\",value:function(){if(this.isEmpty())return new U;var t=new U;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t}},{key:\"getCoordinates\",value:function(){return this.isEmpty()?[]:[this.getCoordinate()]}},{key:\"copyInternal\",value:function(){return new i(this._coordinates.copy(),this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&(!(!this.isEmpty()||!t.isEmpty())||this.isEmpty()===t.isEmpty()&&this.equal(t.getCoordinate(),this.getCoordinate(),e))}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"normalize\",value:function(){}},{key:\"getCoordinate\",value:function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"reverseInternal\",value:function(){return this.getFactory().createPoint(this._coordinates.copy())}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_POINT}},{key:\"getDimension\",value:function(){return 0}},{key:\"getNumPoints\",value:function(){return this.isEmpty()?0:1}},{key:\"getX\",value:function(){if(null===this.getCoordinate())throw new IllegalStateException(\"getX called on empty Point\");return this.getCoordinate().x}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0];return this.getCoordinate().compareTo(t.getCoordinate())}if(2===arguments.length){var e=arguments[0];return arguments[1].compare(this._coordinates,e._coordinates)}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(rt(arguments[0],Rt)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){arguments[0].filter(this)}else if(rt(arguments[0],k)){arguments[0].filter(this)}}},{key:\"getBoundary\",value:function(){return this.getFactory().createGeometryCollection()}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_POINT}},{key:\"getCoordinateSequence\",value:function(){return this._coordinates}},{key:\"getY\",value:function(){if(null===this.getCoordinate())throw new IllegalStateException(\"getY called on empty Point\");return this.getCoordinate().y}},{key:\"isEmpty\",value:function(){return 0===this._coordinates.size()}},{key:\"init\",value:function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),G.isTrue(t.size()<=1),this._coordinates=t}},{key:\"isSimple\",value:function(){return!0}},{key:\"interfaces_\",get:function(){return[Ot]}}],[{key:\"constructor_\",value:function(){this._coordinates=null;var t=arguments[0],e=arguments[1];V.constructor_.call(this,e),this.init(t)}}])}(V),Mt=function(){function t(){n(this,t)}return s(t,null,[{key:\"ofRing\",value:function(){if(arguments[0]instanceof Array){var e=arguments[0];return Math.abs(t.ofRingSigned(e))}if(rt(arguments[0],ht)){var n=arguments[0];return Math.abs(t.ofRingSigned(n))}}},{key:\"ofRingSigned\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,i=1;i<t.length-1;i++){var r=t[i].x-n,s=t[i+1].y;e+=r*(t[i-1].y-s)}return e/2}if(rt(arguments[0],ht)){var a=arguments[0],o=a.size();if(o<3)return 0;var u=new X,l=new X,h=new X;a.getCoordinate(0,l),a.getCoordinate(1,h);var c=l.x;h.x-=c;for(var f=0,g=1;g<o-1;g++)u.y=l.y,l.x=h.x,l.y=h.y,a.getCoordinate(g+1,h),h.x-=c,f+=l.x*(u.y-h.y);return f/2}}}])}(),At=function(){return s((function t(){n(this,t)}),null,[{key:\"sort\",value:function(){var t=arguments,e=arguments[0];if(1===arguments.length)e.sort((function(t,e){return t.compareTo(e)}));else if(2===arguments.length)e.sort((function(e,n){return t[1].compare(e,n)}));else if(3===arguments.length){var n=e.slice(arguments[1],arguments[2]);n.sort();var i=e.slice(0,arguments[1]).concat(n,e.slice(arguments[2],e.length));e.splice(0,e.length);var r,s=a(i);try{for(s.s();!(r=s.n()).done;){var o=r.value;e.push(o)}}catch(t){s.e(t)}finally{s.f()}}else if(4===arguments.length){var u=e.slice(arguments[1],arguments[2]);u.sort((function(e,n){return t[3].compare(e,n)}));var l=e.slice(0,arguments[1]).concat(u,e.slice(arguments[2],e.length));e.splice(0,e.length);var h,c=a(l);try{for(c.s();!(h=c.n()).done;){var f=h.value;e.push(f)}}catch(t){c.e(t)}finally{c.f()}}}},{key:\"asList\",value:function(t){var e,n=new yt,i=a(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n.add(r)}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"copyOf\",value:function(t,e){return t.slice(0,e)}}])}(),Pt=s((function t(){n(this,t)})),Dt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"computeEnvelopeInternal\",value:function(){return this._shell.getEnvelopeInternal()}},{key:\"getCoordinates\",value:function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),i=0;i<n.length;i++)t[++e]=n[i];for(var r=0;r<this._holes.length;r++)for(var s=this._holes[r].getCoordinates(),a=0;a<s.length;a++)t[++e]=s[a];return t}},{key:\"getArea\",value:function(){var t=0;t+=Mt.ofRing(this._shell.getCoordinateSequence());for(var e=0;e<this._holes.length;e++)t-=Mt.ofRing(this._holes[e].getCoordinateSequence());return t}},{key:\"copyInternal\",value:function(){for(var t=this._shell.copy(),e=new Array(this._holes.length).fill(null),n=0;n<this._holes.length;n++)e[n]=this._holes[n].copy();return new i(t,e,this._factory)}},{key:\"isRectangle\",value:function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var s=t.getX(0),a=t.getY(0),o=1;o<=4;o++){var u=t.getX(o),l=t.getY(o);if(u!==s===(l!==a))return!1;s=u,a=l}return!0}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t,r=this._shell,s=n._shell;if(!r.equalsExact(s,e))return!1;if(this._holes.length!==n._holes.length)return!1;for(var a=0;a<this._holes.length;a++)if(!this._holes[a].equalsExact(n._holes[a],e))return!1;return!0}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"normalize\",value:function(){if(0===arguments.length){this._shell=this.normalized(this._shell,!0);for(var t=0;t<this._holes.length;t++)this._holes[t]=this.normalized(this._holes[t],!1);At.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var i=e.getCoordinateSequence(),r=St.minCoordinateIndex(i,0,i.size()-2);St.scroll(i,r,!0),ct.isCCW(i)===n&&St.reverse(i)}}},{key:\"getCoordinate\",value:function(){return this._shell.getCoordinate()}},{key:\"getNumInteriorRing\",value:function(){return this._holes.length}},{key:\"getBoundaryDimension\",value:function(){return 1}},{key:\"reverseInternal\",value:function(){for(var t=this.getExteriorRing().reverse(),e=new Array(this.getNumInteriorRing()).fill(null),n=0;n<e.length;n++)e[n]=this.getInteriorRingN(n).reverse();return this.getFactory().createPolygon(t,e)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_POLYGON}},{key:\"getDimension\",value:function(){return 2}},{key:\"getLength\",value:function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t}},{key:\"getNumPoints\",value:function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t}},{key:\"convexHull\",value:function(){return this.getExteriorRing().convexHull()}},{key:\"normalized\",value:function(t,e){var n=t.copy();return this.normalize(n,e),n}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var i=arguments[1],r=arguments[0],s=this._shell,a=r._shell,o=s.compareToSameClass(a,i);if(0!==o)return o;for(var u=this.getNumInteriorRing(),l=r.getNumInteriorRing(),h=0;h<u&&h<l;){var c=this.getInteriorRingN(h),f=r.getInteriorRingN(h),g=c.compareToSameClass(f,i);if(0!==g)return g;h++}return h<u?1:h<l?-1:0}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et)){var t=arguments[0];this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(rt(arguments[0],Rt)){var n=arguments[0];if(this._shell.apply(n),!n.isDone())for(var i=0;i<this._holes.length&&(this._holes[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){arguments[0].filter(this)}else if(rt(arguments[0],k)){var r=arguments[0];r.filter(this),this._shell.apply(r);for(var s=0;s<this._holes.length;s++)this._holes[s].apply(r)}}},{key:\"getBoundary\",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_POLYGON}},{key:\"getExteriorRing\",value:function(){return this._shell}},{key:\"isEmpty\",value:function(){return this._shell.isEmpty()}},{key:\"getInteriorRingN\",value:function(t){return this._holes[t]}},{key:\"interfaces_\",get:function(){return[Pt]}}],[{key:\"constructor_\",value:function(){this._shell=null,this._holes=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(V.constructor_.call(this,n),null===t&&(t=this.getFactory().createLinearRing()),null===e&&(e=[]),V.hasNullElements(e))throw new m(\"holes must not contain null elements\");if(t.isEmpty()&&V.hasNonEmptyElements(e))throw new m(\"shell is empty but holes are not\");this._shell=t,this._holes=e}}])}(V),Ft=function(t){function i(){return n(this,i),e(this,i,arguments)}return l(i,t),s(i)}(K),Gt=function(t){function i(t){var r;return n(this,i),(r=e(this,i)).array=[],t instanceof Z&&r.addAll(t),r}return l(i,t),s(i,[{key:\"contains\",value:function(t){var e,n=a(this.array);try{for(n.s();!(e=n.n()).done;){if(0===e.value.compareTo(t))return!0}}catch(t){n.e(t)}finally{n.f()}return!1}},{key:\"add\",value:function(t){if(this.contains(t))return!1;for(var e=0,n=this.array.length;e<n;e++){if(1===this.array[e].compareTo(t))return!!this.array.splice(e,0,t)}return this.array.push(t),!0}},{key:\"addAll\",value:function(t){var e,n=a(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:\"remove\",value:function(){throw new W}},{key:\"size\",value:function(){return this.array.length}},{key:\"isEmpty\",value:function(){return 0===this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}},{key:\"iterator\",value:function(){return new qt(this.array)}}])}(Ft),qt=function(){return s((function t(e){n(this,t),this.array=e,this.position=0}),[{key:\"next\",value:function(){if(this.position===this.array.length)throw new j;return this.array[this.position++]}},{key:\"hasNext\",value:function(){return this.position<this.array.length}},{key:\"remove\",value:function(){throw new W}}])}(),Yt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"computeEnvelopeInternal\",value:function(){for(var t=new U,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t}},{key:\"getGeometryN\",value:function(t){return this._geometries[t]}},{key:\"getCoordinates\",value:function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var i=this._geometries[n].getCoordinates(),r=0;r<i.length;r++)t[++e]=i[r];return t}},{key:\"getArea\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t}},{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new i(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._geometries.length!==n._geometries.length)return!1;for(var r=0;r<this._geometries.length;r++)if(!this._geometries[r].equalsExact(n._geometries[r],e))return!1;return!0}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"normalize\",value:function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();At.sort(this._geometries)}},{key:\"getCoordinate\",value:function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()}},{key:\"getBoundaryDimension\",value:function(){for(var t=Lt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t}},{key:\"reverseInternal\",value:function(){for(var t=this._geometries.length,e=new yt(t),n=0;n<t;n++)e.add(this._geometries[n].reverse());return this.getFactory().buildGeometry(e)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_GEOMETRYCOLLECTION}},{key:\"getDimension\",value:function(){for(var t=Lt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t}},{key:\"getLength\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t}},{key:\"getNumPoints\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t}},{key:\"getNumGeometries\",value:function(){return this._geometries.length}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=new Gt(At.asList(this._geometries)),n=new Gt(At.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var i=arguments[1],r=arguments[0],s=this.getNumGeometries(),a=r.getNumGeometries(),o=0;o<s&&o<a;){var u=this.getGeometryN(o),l=r.getGeometryN(o),h=u.compareToSameClass(l,i);if(0!==h)return h;o++}return o<s?1:o<a?-1:0}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(rt(arguments[0],Rt)){var n=arguments[0];if(0===this._geometries.length)return null;for(var i=0;i<this._geometries.length&&(this._geometries[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this);for(var s=0;s<this._geometries.length;s++)this._geometries[s].apply(r)}else if(rt(arguments[0],k)){var a=arguments[0];a.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(a)}}},{key:\"getBoundary\",value:function(){return V.checkNotGeometryCollection(this),G.shouldNeverReachHere(),null}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_GEOMETRYCOLLECTION}},{key:\"isEmpty\",value:function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0}}],[{key:\"constructor_\",value:function(){if(this._geometries=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];if(V.constructor_.call(this,e),null===t&&(t=[]),V.hasNullElements(t))throw new m(\"geometries must not contain null elements\");this._geometries=t}}}])}(V),zt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new i(t,this._factory)}},{key:\"isValid\",value:function(){return!0}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(i,\"equalsExact\",this,1).call(this,t,e)}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"getCoordinate\",value:function(){if(1===arguments.length&&Number.isInteger(arguments[0])){var t=arguments[0];return this._geometries[t].getCoordinate()}return f(i,\"getCoordinate\",this,1).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTIPOINT}},{key:\"getDimension\",value:function(){return 0}},{key:\"getBoundary\",value:function(){return this.getFactory().createGeometryCollection()}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTIPOINT}},{key:\"interfaces_\",get:function(){return[Ot]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}])}(Yt),Xt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"copyInternal\",value:function(){return new i(this._points.copy(),this._factory)}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"isClosed\",value:function(){return!!this.isEmpty()||f(i,\"isClosed\",this,1).call(this)}},{key:\"reverseInternal\",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLinearRing(t)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_LINEARRING}},{key:\"validateConstruction\",value:function(){if(!this.isEmpty()&&!f(i,\"isClosed\",this,1).call(this))throw new m(\"Points of LinearRing do not form a closed linestring\");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<i.MINIMUM_VALID_SIZE)throw new m(\"Invalid number of points in LinearRing (found \"+this.getCoordinateSequence().size()+\" - must be 0 or >= 4)\")}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_LINEARRING}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];wt.constructor_.call(this,t,e),this.validateConstruction()}}])}(wt);Xt.MINIMUM_VALID_SIZE=4;var Bt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"setOrdinate\",value:function(t,e){switch(t){case i.X:this.x=e;break;case i.Y:this.y=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"getZ\",value:function(){return X.NULL_ORDINATE}},{key:\"getOrdinate\",value:function(t){switch(t){case i.X:return this.x;case i.Y:return this.y}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"setZ\",value:function(t){throw new m(\"CoordinateXY dimension 2 does not support z-ordinate\")}},{key:\"copy\",value:function(){return new i(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}}],[{key:\"constructor_\",value:function(){if(0===arguments.length)X.constructor_.call(this);else if(1===arguments.length){if(arguments[0]instanceof i){var t=arguments[0];X.constructor_.call(this,t.x,t.y)}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],r=arguments[1];X.constructor_.call(this,n,r,X.NULL_ORDINATE)}}}])}(X);Bt.X=0,Bt.Y=1,Bt.Z=-1,Bt.M=-1;var Ut=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"getM\",value:function(){return this._m}},{key:\"setOrdinate\",value:function(t,e){switch(t){case i.X:this.x=e;break;case i.Y:this.y=e;break;case i.M:this._m=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"setM\",value:function(t){this._m=t}},{key:\"getZ\",value:function(){return X.NULL_ORDINATE}},{key:\"getOrdinate\",value:function(t){switch(t){case i.X:return this.x;case i.Y:return this.y;case i.M:return this._m}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"setZ\",value:function(t){throw new m(\"CoordinateXY dimension 2 does not support z-ordinate\")}},{key:\"copy\",value:function(){return new i(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\" m=\"+this.getM()+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:\"constructor_\",value:function(){if(this._m=null,0===arguments.length)X.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof i){var t=arguments[0];X.constructor_.call(this,t.x,t.y),this._m=t._m}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e.x,e.y),this._m=this.getM()}}else if(3===arguments.length){var n=arguments[0],r=arguments[1],s=arguments[2];X.constructor_.call(this,n,r,X.NULL_ORDINATE),this._m=s}}}])}(X);Ut.X=0,Ut.Y=1,Ut.Z=-1,Ut.M=2;var Vt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"getM\",value:function(){return this._m}},{key:\"setOrdinate\",value:function(t,e){switch(t){case X.X:this.x=e;break;case X.Y:this.y=e;break;case X.Z:this.z=e;break;case X.M:this._m=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"setM\",value:function(t){this._m=t}},{key:\"getOrdinate\",value:function(t){switch(t){case X.X:return this.x;case X.Y:return this.y;case X.Z:return this.getZ();case X.M:return this.getM()}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"copy\",value:function(){return new i(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.getZ()+\" m=\"+this.getM()+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:\"constructor_\",value:function(){if(this._m=null,0===arguments.length)X.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof i){var t=arguments[0];X.constructor_.call(this,t),this._m=t._m}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e),this._m=this.getM()}}else if(4===arguments.length){var n=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3];X.constructor_.call(this,n,r,s),this._m=a}}}])}(X),Ht=function(){function t(){n(this,t)}return s(t,null,[{key:\"measures\",value:function(t){return t instanceof Bt?0:t instanceof Ut||t instanceof Vt?1:0}},{key:\"dimension\",value:function(t){return t instanceof Bt?2:t instanceof Ut?3:t instanceof Vt?4:3}},{key:\"create\",value:function(){if(1===arguments.length){var e=arguments[0];return t.create(e,0)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return 2===n?new Bt:3===n&&0===i?new X:3===n&&1===i?new Ut:4===n&&1===i?new Vt:new X}}}])}(),Zt=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"getCoordinate\",value:function(t){return this.get(t)}},{key:\"addAll\",value:function(){if(2===arguments.length&&\"boolean\"==typeof arguments[1]&&rt(arguments[0],Z)){for(var t=arguments[1],e=!1,n=arguments[0].iterator();n.hasNext();)this.add(n.next(),t),e=!0;return e}return f(i,\"addAll\",this,1).apply(this,arguments)}},{key:\"clone\",value:function(){for(var t=f(i,\"clone\",this,1).call(this),e=0;e<this.size();e++)t.add(e,this.get(e).clone());return t}},{key:\"toCoordinateArray\",value:function(){if(0===arguments.length)return this.toArray(i.coordArrayType);if(1===arguments.length){if(arguments[0])return this.toArray(i.coordArrayType);for(var t=this.size(),e=new Array(t).fill(null),n=0;n<t;n++)e[n]=this.get(t-n-1);return e}}},{key:\"add\",value:function(){if(1===arguments.length){var t=arguments[0];return f(i,\"add\",this,1).call(this,t)}if(2===arguments.length){if(arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];return this.add(e,n,!0),!0}if(arguments[0]instanceof X&&\"boolean\"==typeof arguments[1]){var r=arguments[0];if(!arguments[1]&&this.size()>=1)if(this.get(this.size()-1).equals2D(r))return null;f(i,\"add\",this,1).call(this,r)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var s=arguments[0],a=arguments[1];return this.add(s,a),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var o=arguments[0],u=arguments[1];if(arguments[2])for(var l=0;l<o.length;l++)this.add(o[l],u);else for(var h=o.length-1;h>=0;h--)this.add(o[h],u);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof X){var c=arguments[0],g=arguments[1];if(!arguments[2]){var v=this.size();if(v>0){if(c>0)if(this.get(c-1).equals2D(g))return null;if(c<v)if(this.get(c).equals2D(g))return null}}f(i,\"add\",this,1).call(this,c,g)}}else if(4===arguments.length){var y=arguments[0],d=arguments[1],_=arguments[2],p=arguments[3],m=1;_>p&&(m=-1);for(var k=_;k!==p;k+=m)this.add(y[k],d);return!0}}},{key:\"closeRing\",value:function(){if(this.size()>0){var t=this.get(0).copy();this.add(t,!1)}}}],[{key:\"constructor_\",value:function(){if(0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.ensureCapacity(t.length),this.add(t,!0)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.ensureCapacity(e.length),this.add(e,n)}}}])}(yt);Zt.coordArrayType=new Array(0).fill(null);var jt=function(){function t(){n(this,t)}return s(t,null,[{key:\"isRing\",value:function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])}},{key:\"ptNotInList\",value:function(e,n){for(var i=0;i<e.length;i++){var r=e[i];if(t.indexOf(r,n)<0)return r}return null}},{key:\"scroll\",value:function(e,n){var i=t.indexOf(n,e);if(i<0)return null;var r=new Array(e.length).fill(null);mt.arraycopy(e,i,r,0,e.length-i),mt.arraycopy(e,0,r,e.length-i,i),mt.arraycopy(r,0,e,0,e.length)}},{key:\"equals\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];if(i===r)return!0;if(null===i||null===r)return!1;if(i.length!==r.length)return!1;for(var a=0;a<i.length;a++)if(0!==s.compare(i[a],r[a]))return!1;return!0}}},{key:\"intersection\",value:function(t,e){for(var n=new Zt,i=0;i<t.length;i++)e.intersects(t[i])&&n.add(t[i],!0);return n.toCoordinateArray()}},{key:\"measures\",value:function(t){if(null===t||0===t.length)return 0;var e,n=0,i=a(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n=Math.max(n,Ht.measures(r))}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"hasRepeatedPoints\",value:function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1}},{key:\"removeRepeatedPoints\",value:function(e){return t.hasRepeatedPoints(e)?new Zt(e,!1).toCoordinateArray():e}},{key:\"reverse\",value:function(t){for(var e=t.length-1,n=Math.trunc(e/2),i=0;i<=n;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}}},{key:\"removeNull\",value:function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var i=new Array(e).fill(null);if(0===e)return i;for(var r=0,s=0;s<t.length;s++)null!==t[s]&&(i[r++]=t[s]);return i}},{key:\"copyDeep\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=t[n].copy();return e}if(5===arguments.length)for(var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=arguments[4],u=0;u<o;u++)s[a+u]=i[r+u].copy()}},{key:\"isEqualReversed\",value:function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[t.length-n-1];if(0!==i.compareTo(r))return!1}return!0}},{key:\"envelope\",value:function(t){for(var e=new U,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e}},{key:\"toCoordinateArray\",value:function(e){return e.toArray(t.coordArrayType)}},{key:\"dimension\",value:function(t){if(null===t||0===t.length)return 3;var e,n=0,i=a(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n=Math.max(n,Ht.dimension(r))}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"atLeastNCoordinatesOrNothing\",value:function(t,e){return e.length>=t?e:[]}},{key:\"indexOf\",value:function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1}},{key:\"increasingDirection\",value:function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,i=t[e].compareTo(t[n]);if(0!==i)return i}return 1}},{key:\"compare\",value:function(t,e){for(var n=0;n<t.length&&n<e.length;){var i=t[n].compareTo(e[n]);if(0!==i)return i;n++}return n<e.length?-1:n<t.length?1:0}},{key:\"minCoordinate\",value:function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e}},{key:\"extract\",value:function(t,e,n){e=kt.clamp(e,0,t.length);var i=(n=kt.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),n<e&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var s=0,a=e;a<=n;a++)r[s++]=t[a];return r}}])}(),Wt=function(){return s((function t(){n(this,t)}),[{key:\"compare\",value:function(t,e){var n=t,i=e;return jt.compare(n,i)}},{key:\"interfaces_\",get:function(){return[P]}}])}(),Kt=function(){return s((function t(){n(this,t)}),[{key:\"compare\",value:function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;var r=jt.compare(n,i);return jt.isEqualReversed(n,i)?0:r}},{key:\"OLDcompare\",value:function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;for(var r=jt.increasingDirection(n),s=jt.increasingDirection(i),a=r>0?0:n.length-1,o=s>0?0:n.length-1,u=0;u<n.length;u++){var l=n[a].compareTo(i[o]);if(0!==l)return l;a+=r,o+=s}return 0}},{key:\"interfaces_\",get:function(){return[P]}}])}();jt.ForwardComparator=Wt,jt.BidirectionalComparator=Kt,jt.coordArrayType=new Array(0).fill(null);var Jt=function(){return s((function t(e){n(this,t),this.str=e}),[{key:\"append\",value:function(t){this.str+=t}},{key:\"setCharAt\",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:\"toString\",value:function(){return this.str}}])}(),Qt=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getM\",value:function(t){return this.hasM()?this._coordinates[t].getM():A.NaN}},{key:\"setOrdinate\",value:function(t,e,n){switch(e){case ht.X:this._coordinates[t].x=n;break;case ht.Y:this._coordinates[t].y=n;break;default:this._coordinates[t].setOrdinate(e,n)}}},{key:\"getZ\",value:function(t){return this.hasZ()?this._coordinates[t].getZ():A.NaN}},{key:\"size\",value:function(){return this._coordinates.length}},{key:\"getOrdinate\",value:function(t,e){switch(e){case ht.X:return this._coordinates[t].x;case ht.Y:return this._coordinates[t].y;default:return this._coordinates[t].getOrdinate(e)}}},{key:\"getCoordinate\",value:function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0];arguments[1].setCoordinate(this._coordinates[e])}}},{key:\"getCoordinateCopy\",value:function(t){var e=this.createCoordinate();return e.setCoordinate(this._coordinates[t]),e}},{key:\"createCoordinate\",value:function(){return Ht.create(this.getDimension(),this.getMeasures())}},{key:\"getDimension\",value:function(){return this._dimension}},{key:\"getX\",value:function(t){return this._coordinates[t].x}},{key:\"getMeasures\",value:function(){return this._measures}},{key:\"expandEnvelope\",value:function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t}},{key:\"copy\",value:function(){for(var e=new Array(this.size()).fill(null),n=0;n<this._coordinates.length;n++){var i=this.createCoordinate();i.setCoordinate(this._coordinates[n]),e[n]=i}return new t(e,this._dimension,this._measures)}},{key:\"toString\",value:function(){if(this._coordinates.length>0){var t=new Jt(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(\", \"),t.append(this._coordinates[e]);return t.append(\")\"),t.toString()}return\"()\"}},{key:\"getY\",value:function(t){return this._coordinates[t].y}},{key:\"toCoordinateArray\",value:function(){return this._coordinates}},{key:\"interfaces_\",get:function(){return[ht,E]}}],[{key:\"constructor_\",value:function(){if(this._dimension=3,this._measures=0,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];t.constructor_.call(this,e,jt.dimension(e),jt.measures(e))}else if(Number.isInteger(arguments[0])){var n=arguments[0];this._coordinates=new Array(n).fill(null);for(var i=0;i<n;i++)this._coordinates[i]=new X}else if(rt(arguments[0],ht)){var r=arguments[0];if(null===r)return this._coordinates=new Array(0).fill(null),null;this._dimension=r.getDimension(),this._measures=r.getMeasures(),this._coordinates=new Array(r.size()).fill(null);for(var s=0;s<this._coordinates.length;s++)this._coordinates[s]=r.getCoordinateCopy(s)}}else if(2===arguments.length){if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var a=arguments[0],o=arguments[1];t.constructor_.call(this,a,o,jt.measures(a))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var u=arguments[0],l=arguments[1];this._coordinates=new Array(u).fill(null),this._dimension=l;for(var h=0;h<u;h++)this._coordinates[h]=Ht.create(l)}}else if(3===arguments.length)if(Number.isInteger(arguments[2])&&arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var c=arguments[0],f=arguments[1],g=arguments[2];this._dimension=f,this._measures=g,this._coordinates=null===c?new Array(0).fill(null):c}else if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var v=arguments[0],y=arguments[1],d=arguments[2];this._coordinates=new Array(v).fill(null),this._dimension=y,this._measures=d;for(var _=0;_<v;_++)this._coordinates[_]=this.createCoordinate()}}}])}(),$t=function(){function t(){n(this,t)}return s(t,[{key:\"readResolve\",value:function(){return t.instance()}},{key:\"create\",value:function(){if(1===arguments.length){if(arguments[0]instanceof Array)return new Qt(arguments[0]);if(rt(arguments[0],ht))return new Qt(arguments[0])}else{if(2===arguments.length){var t=arguments[1];return t>3&&(t=3),t<2&&(t=2),new Qt(arguments[0],t)}if(3===arguments.length){var e=arguments[2],n=arguments[1]-e;return e>1&&(e=1),n>3&&(n=3),n<2&&(n=2),new Qt(arguments[0],n+e,e)}}}},{key:\"interfaces_\",get:function(){return[It,E]}}],[{key:\"instance\",value:function(){return t.instanceObject}}])}();$t.instanceObject=new $t;var te=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new i(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(i,\"equalsExact\",this,1).call(this,t,e)}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return 1}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTIPOLYGON}},{key:\"getDimension\",value:function(){return 2}},{key:\"getBoundary\",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new yt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),i=0;i<n.getNumGeometries();i++)t.add(n.getGeometryN(i));var r=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(r))}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTIPOLYGON}},{key:\"interfaces_\",get:function(){return[Pt]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}])}(Yt),ee=function(){return s((function t(){n(this,t)}),[{key:\"get\",value:function(){}},{key:\"put\",value:function(){}},{key:\"size\",value:function(){}},{key:\"values\",value:function(){}},{key:\"entrySet\",value:function(){}}])}(),ne=function(t){function i(){var t;return n(this,i),(t=e(this,i)).map=new Map,t}return l(i,t),s(i,[{key:\"get\",value:function(t){return this.map.get(t)||null}},{key:\"put\",value:function(t,e){return this.map.set(t,e),e}},{key:\"values\",value:function(){for(var t=new yt,e=this.map.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t}},{key:\"entrySet\",value:function(){var t=new J;return this.map.entries().forEach((function(e){return t.add(e)})),t}},{key:\"size\",value:function(){return this.map.size()}}])}(ee),ie=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"equals\",value:function(e){if(!(e instanceof t))return!1;var n=e;return this._modelType===n._modelType&&this._scale===n._scale}},{key:\"compareTo\",value:function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return at.compare(n,i)}},{key:\"getScale\",value:function(){return this._scale}},{key:\"isFloating\",value:function(){return this._modelType===t.FLOATING||this._modelType===t.FLOATING_SINGLE}},{key:\"getType\",value:function(){return this._modelType}},{key:\"toString\",value:function(){var e=\"UNKNOWN\";return this._modelType===t.FLOATING?e=\"Floating\":this._modelType===t.FLOATING_SINGLE?e=\"Floating-Single\":this._modelType===t.FIXED&&(e=\"Fixed (Scale=\"+this.getScale()+\")\"),e}},{key:\"makePrecise\",value:function(){if(\"number\"==typeof arguments[0]){var e=arguments[0];return A.isNaN(e)||this._modelType===t.FLOATING_SINGLE?e:this._modelType===t.FIXED?Math.round(e*this._scale)/this._scale:e}if(arguments[0]instanceof X){var n=arguments[0];if(this._modelType===t.FLOATING)return null;n.x=this.makePrecise(n.x),n.y=this.makePrecise(n.y)}}},{key:\"getMaximumSignificantDigits\",value:function(){var e=16;return this._modelType===t.FLOATING?e=16:this._modelType===t.FLOATING_SINGLE?e=6:this._modelType===t.FIXED&&(e=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),e}},{key:\"setScale\",value:function(t){this._scale=Math.abs(t)}},{key:\"interfaces_\",get:function(){return[E,x]}}],[{key:\"constructor_\",value:function(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=t.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof re){var e=arguments[0];this._modelType=e,e===t.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=t.FIXED,this.setScale(n)}else if(arguments[0]instanceof t){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}}},{key:\"mostPrecise\",value:function(t,e){return t.compareTo(e)>=0?t:e}}])}(),re=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"readResolve\",value:function(){return t.nameToTypeMap.get(this._name)}},{key:\"toString\",value:function(){return this._name}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){this._name=null;var e=arguments[0];this._name=e,t.nameToTypeMap.put(e,this)}}])}();re.nameToTypeMap=new ne,ie.Type=re,ie.FIXED=new re(\"FIXED\"),ie.FLOATING=new re(\"FLOATING\"),ie.FLOATING_SINGLE=new re(\"FLOATING SINGLE\"),ie.maximumPreciseValue=9007199254740992;var se=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new i(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(i,\"equalsExact\",this,1).call(this,t,e)}return f(i,\"equalsExact\",this,1).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return this.isClosed()?Lt.FALSE:0}},{key:\"isClosed\",value:function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTILINESTRING}},{key:\"getDimension\",value:function(){return 1}},{key:\"getBoundary\",value:function(){throw new W}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTILINESTRING}},{key:\"interfaces_\",get:function(){return[Tt]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}])}(Yt),ae=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"createEmpty\",value:function(t){switch(t){case-1:return this.createGeometryCollection();case 0:return this.createPoint();case 1:return this.createLineString();case 2:return this.createPolygon();default:throw new m(\"Invalid dimension: \"+t)}}},{key:\"toGeometry\",value:function(t){return t.isNull()?this.createPoint():t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new X(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new X(t.getMinX(),t.getMinY()),new X(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new X(t.getMinX(),t.getMinY()),new X(t.getMinX(),t.getMaxY()),new X(t.getMaxX(),t.getMaxY()),new X(t.getMaxX(),t.getMinY()),new X(t.getMinX(),t.getMinY())]),null)}},{key:\"createLineString\",value:function(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(rt(arguments[0],ht))return new wt(arguments[0],this)}}},{key:\"createMultiLineString\",value:function(){return 0===arguments.length?new se(null,this):1===arguments.length?new se(arguments[0],this):void 0}},{key:\"buildGeometry\",value:function(e){for(var n=null,i=!1,r=!1,s=e.iterator();s.hasNext();){var a=s.next(),o=a.getTypeCode();null===n&&(n=o),o!==n&&(i=!0),a instanceof Yt&&(r=!0)}if(null===n)return this.createGeometryCollection();if(i||r)return this.createGeometryCollection(t.toGeometryArray(e));var u=e.iterator().next();if(e.size()>1){if(u instanceof Dt)return this.createMultiPolygon(t.toPolygonArray(e));if(u instanceof wt)return this.createMultiLineString(t.toLineStringArray(e));if(u instanceof bt)return this.createMultiPoint(t.toPointArray(e));G.shouldNeverReachHere(\"Unhandled geometry type: \"+u.getGeometryType())}return u}},{key:\"createMultiPointFromCoords\",value:function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)}},{key:\"createPoint\",value:function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(rt(arguments[0],ht))return new bt(arguments[0],this)}}},{key:\"getCoordinateSequenceFactory\",value:function(){return this._coordinateSequenceFactory}},{key:\"createPolygon\",value:function(){if(0===arguments.length)return this.createPolygon(null,null);if(1===arguments.length){if(rt(arguments[0],ht)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof Xt){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){return new Dt(arguments[0],arguments[1],this)}}},{key:\"getSRID\",value:function(){return this._SRID}},{key:\"createGeometryCollection\",value:function(){return 0===arguments.length?new Yt(null,this):1===arguments.length?new Yt(arguments[0],this):void 0}},{key:\"getPrecisionModel\",value:function(){return this._precisionModel}},{key:\"createLinearRing\",value:function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(rt(arguments[0],ht))return new Xt(arguments[0],this)}}},{key:\"createMultiPolygon\",value:function(){return 0===arguments.length?new te(null,this):1===arguments.length?new te(arguments[0],this):void 0}},{key:\"createMultiPoint\",value:function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){if(arguments[0]instanceof Array)return new zt(arguments[0],this);if(rt(arguments[0],ht)){var t=arguments[0];if(null===t)return this.createMultiPoint(new Array(0).fill(null));for(var e=new Array(t.size()).fill(null),n=0;n<t.size();n++){var i=this.getCoordinateSequenceFactory().create(1,t.getDimension(),t.getMeasures());St.copy(t,n,i,0,1),e[n]=this.createPoint(i)}return this.createMultiPoint(e)}}}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){if(this._precisionModel=null,this._coordinateSequenceFactory=null,this._SRID=null,0===arguments.length)t.constructor_.call(this,new ie,0);else if(1===arguments.length){if(rt(arguments[0],It)){var e=arguments[0];t.constructor_.call(this,new ie,0,e)}else if(arguments[0]instanceof ie){var n=arguments[0];t.constructor_.call(this,n,0,t.getDefaultCoordinateSequenceFactory())}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];t.constructor_.call(this,i,r,t.getDefaultCoordinateSequenceFactory())}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this._precisionModel=s,this._coordinateSequenceFactory=o,this._SRID=a}}},{key:\"toMultiPolygonArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toGeometryArray\",value:function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"getDefaultCoordinateSequenceFactory\",value:function(){return $t.instance()}},{key:\"toMultiLineStringArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toLineStringArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toMultiPointArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toLinearRingArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toPointArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toPolygonArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"createPointFromInternalCoord\",value:function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)}}])}(),oe=\"XY\",ue=\"XYZ\",le=\"XYM\",he=\"XYZM\",ce={POINT:\"Point\",LINE_STRING:\"LineString\",LINEAR_RING:\"LinearRing\",POLYGON:\"Polygon\",MULTI_POINT:\"MultiPoint\",MULTI_LINE_STRING:\"MultiLineString\",MULTI_POLYGON:\"MultiPolygon\",GEOMETRY_COLLECTION:\"GeometryCollection\",CIRCLE:\"Circle\"},fe=\"EMPTY\",ge=1,ve=2,ye=3,de=4,_e=5,pe=6;for(var me in ce)ce[me].toUpperCase();var ke=function(){return s((function t(e){n(this,t),this.wkt=e,this.index_=-1}),[{key:\"isAlpha_\",value:function(t){return t>=\"a\"&&t<=\"z\"||t>=\"A\"&&t<=\"Z\"}},{key:\"isNumeric_\",value:function(t,e){return t>=\"0\"&&t<=\"9\"||\".\"==t&&!(void 0!==e&&e)}},{key:\"isWhiteSpace_\",value:function(t){return\" \"==t||\"\\t\"==t||\"\\r\"==t||\"\\n\"==t}},{key:\"nextChar_\",value:function(){return this.wkt.charAt(++this.index_)}},{key:\"nextToken\",value:function(){var t,e=this.nextChar_(),n=this.index_,i=e;if(\"(\"==e)t=ve;else if(\",\"==e)t=_e;else if(\")\"==e)t=ye;else if(this.isNumeric_(e)||\"-\"==e)t=de,i=this.readNumber_();else if(this.isAlpha_(e))t=ge,i=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(\"\"!==e)throw new Error(\"Unexpected character: \"+e);t=pe}return{position:n,value:i,type:t}}},{key:\"readNumber_\",value:function(){var t,e=this.index_,n=!1,i=!1;do{\".\"==t?n=!0:\"e\"!=t&&\"E\"!=t||(i=!0),t=this.nextChar_()}while(this.isNumeric_(t,n)||!i&&(\"e\"==t||\"E\"==t)||i&&(\"-\"==t||\"+\"==t));return parseFloat(this.wkt.substring(e,this.index_--))}},{key:\"readText_\",value:function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()}}])}(),xe=function(){return s((function t(e,i){n(this,t),this.lexer_=e,this.token_,this.layout_=oe,this.factory=i}),[{key:\"consume_\",value:function(){this.token_=this.lexer_.nextToken()}},{key:\"isTokenType\",value:function(t){return this.token_.type==t}},{key:\"match\",value:function(t){var e=this.isTokenType(t);return e&&this.consume_(),e}},{key:\"parse\",value:function(){return this.consume_(),this.parseGeometry_()}},{key:\"parseGeometryLayout_\",value:function(){var t=oe,e=this.token_;if(this.isTokenType(ge)){var n=e.value;\"Z\"===n?t=ue:\"M\"===n?t=le:\"ZM\"===n&&(t=he),t!==oe&&this.consume_()}return t}},{key:\"parseGeometryCollectionText_\",value:function(){if(this.match(ve)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(_e));if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePointText_\",value:function(){if(this.match(ve)){var t=this.parsePoint_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())}},{key:\"parseLineStringText_\",value:function(){if(this.match(ve)){var t=this.parsePointList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePolygonText_\",value:function(){if(this.match(ve)){var t=this.parseLineStringTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiPointText_\",value:function(){var t;if(this.match(ve)){if(t=this.token_.type==ve?this.parsePointTextList_():this.parsePointList_(),this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiLineStringText_\",value:function(){if(this.match(ve)){var t=this.parseLineStringTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiPolygonText_\",value:function(){if(this.match(ve)){var t=this.parsePolygonTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePoint_\",value:function(){for(var t=[],e=this.layout_.length,n=0;n<e;++n){var i=this.token_;if(!this.match(de))break;t.push(i.value)}if(t.length==e)return t;throw new Error(this.formatErrorMessage_())}},{key:\"parsePointList_\",value:function(){for(var t=[this.parsePoint_()];this.match(_e);)t.push(this.parsePoint_());return t}},{key:\"parsePointTextList_\",value:function(){for(var t=[this.parsePointText_()];this.match(_e);)t.push(this.parsePointText_());return t}},{key:\"parseLineStringTextList_\",value:function(){for(var t=[this.parseLineStringText_()];this.match(_e);)t.push(this.parseLineStringText_());return t}},{key:\"parsePolygonTextList_\",value:function(){for(var t=[this.parsePolygonText_()];this.match(_e);)t.push(this.parsePolygonText_());return t}},{key:\"isEmptyGeometry_\",value:function(){var t=this.isTokenType(ge)&&this.token_.value==fe;return t&&this.consume_(),t}},{key:\"formatErrorMessage_\",value:function(){return\"Unexpected `\"+this.token_.value+\"` at position \"+this.token_.position+\" in `\"+this.lexer_.wkt+\"`\"}},{key:\"parseGeometry_\",value:function(){var t=this.factory,e=function(t){return i(X,g(t))},n=function(n){var i=n.map((function(n){return t.createLinearRing(n.map(e))}));return i.length>1?t.createPolygon(i[0],i.slice(1)):t.createPolygon(i[0])},r=this.token_;if(this.match(ge)){var s=r.value;if(this.layout_=this.parseGeometryLayout_(),\"GEOMETRYCOLLECTION\"==s){var a=this.parseGeometryCollectionText_();return t.createGeometryCollection(a)}switch(s){case\"POINT\":var o=this.parsePointText_();return o?t.createPoint(i(X,g(o))):t.createPoint();case\"LINESTRING\":var u=this.parseLineStringText_().map(e);return t.createLineString(u);case\"LINEARRING\":var l=this.parseLineStringText_().map(e);return t.createLinearRing(l);case\"POLYGON\":var h=this.parsePolygonText_();return h&&0!==h.length?n(h):t.createPolygon();case\"MULTIPOINT\":var c=this.parseMultiPointText_();if(!c||0===c.length)return t.createMultiPoint();var f=c.map(e).map((function(e){return t.createPoint(e)}));return t.createMultiPoint(f);case\"MULTILINESTRING\":var v=this.parseMultiLineStringText_().map((function(n){return t.createLineString(n.map(e))}));return t.createMultiLineString(v);case\"MULTIPOLYGON\":var y=this.parseMultiPolygonText_();if(!y||0===y.length)return t.createMultiPolygon();var d=y.map(n);return t.createMultiPolygon(d);default:throw new Error(\"Invalid geometry type: \"+s)}}throw new Error(this.formatErrorMessage_())}}])}();function Ie(t){if(t.isEmpty())return\"\";var e=t.getCoordinate(),n=[e.x,e.y];return void 0===e.z||Number.isNaN(e.z)||n.push(e.z),void 0===e.m||Number.isNaN(e.m)||n.push(e.m),n.join(\" \")}function Ee(t){for(var e=t.getCoordinates().map((function(t){var e=[t.x,t.y];return void 0===t.z||Number.isNaN(t.z)||e.push(t.z),void 0===t.m||Number.isNaN(t.m)||e.push(t.m),e})),n=[],i=0,r=e.length;i<r;++i)n.push(e[i].join(\" \"));return n.join(\", \")}function Ne(t){var e=[];e.push(\"(\"+Ee(t.getExteriorRing())+\")\");for(var n=0,i=t.getNumInteriorRing();n<i;++n)e.push(\"(\"+Ee(t.getInteriorRingN(n))+\")\");return e.join(\", \")}var Te={Point:Ie,LineString:Ee,LinearRing:Ee,Polygon:Ne,MultiPoint:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ie(t.getGeometryN(n))+\")\");return e.join(\", \")},MultiLineString:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ee(t.getGeometryN(n))+\")\");return e.join(\", \")},MultiPolygon:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ne(t.getGeometryN(n))+\")\");return e.join(\", \")},GeometryCollection:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(Se(t.getGeometryN(n)));return e.join(\", \")}};function Se(t){var e=t.getGeometryType(),n=Te[e];e=e.toUpperCase();var i=function(t){var e=\"\";if(t.isEmpty())return e;var n=t.getCoordinate();return void 0===n.z||Number.isNaN(n.z)||(e+=\"Z\"),void 0===n.m||Number.isNaN(n.m)||(e+=\"M\"),e}(t);return i.length>0&&(e+=\" \"+i),t.isEmpty()?e+\" \"+fe:e+\" (\"+n(t)+\")\"}var Le=function(){return s((function t(e){n(this,t),this.geometryFactory=e||new ae,this.precisionModel=this.geometryFactory.getPrecisionModel()}),[{key:\"read\",value:function(t){var e=new ke(t);return new xe(e,this.geometryFactory).parse()}},{key:\"write\",value:function(t){return Se(t)}}])}(),Ce=function(){return s((function t(e){n(this,t),this.parser=new Le(e)}),[{key:\"write\",value:function(t){return this.parser.write(t)}}],[{key:\"toLineString\",value:function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"}}])}(),Re=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getIndexAlongSegment\",value:function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]}},{key:\"getTopologySummary\",value:function(){var t=new Jt;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()}},{key:\"computeIntersection\",value:function(t,e,n,i){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=i,this._result=this.computeIntersect(t,e,n,i)}},{key:\"getIntersectionNum\",value:function(){return this._result}},{key:\"computeIntLineIndex\",value:function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map((function(){return Array(2)})),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}}},{key:\"isProper\",value:function(){return this.hasIntersection()&&this._isProper}},{key:\"setPrecisionModel\",value:function(t){this._precisionModel=t}},{key:\"isInteriorIntersection\",value:function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}}},{key:\"getIntersection\",value:function(t){return this._intPt[t]}},{key:\"isEndPoint\",value:function(){return this.hasIntersection()&&!this._isProper}},{key:\"hasIntersection\",value:function(){return this._result!==t.NO_INTERSECTION}},{key:\"getEdgeDistance\",value:function(e,n){return t.computeEdgeDistance(this._intPt[n],this._inputLines[e][0],this._inputLines[e][1])}},{key:\"isCollinear\",value:function(){return this._result===t.COLLINEAR_INTERSECTION}},{key:\"toString\",value:function(){return Ce.toLineString(this._inputLines[0][0],this._inputLines[0][1])+\" - \"+Ce.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()}},{key:\"getEndpoint\",value:function(t,e){return this._inputLines[t][e]}},{key:\"isIntersection\",value:function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1}},{key:\"getIntersectionAlongSegment\",value:function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]}}],[{key:\"constructor_\",value:function(){this._result=null,this._inputLines=Array(2).fill().map((function(){return Array(2)})),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new X,this._intPt[1]=new X,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0}},{key:\"computeEdgeDistance\",value:function(t,e,n){var i=Math.abs(n.x-e.x),r=Math.abs(n.y-e.y),s=-1;if(t.equals(e))s=0;else if(t.equals(n))s=i>r?i:r;else{var a=Math.abs(t.x-e.x),o=Math.abs(t.y-e.y);0!==(s=i>r?a:o)||t.equals(e)||(s=Math.max(a,o))}return G.isTrue(!(0===s&&!t.equals(e)),\"Bad distance calculation\"),s}},{key:\"nonRobustComputeEdgeDistance\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y,s=Math.sqrt(i*i+r*r);return G.isTrue(!(0===s&&!t.equals(e)),\"Invalid distance calculation\"),s}}])}();Re.DONT_INTERSECT=0,Re.DO_INTERSECT=1,Re.COLLINEAR=2,Re.NO_INTERSECTION=0,Re.POINT_INTERSECTION=1,Re.COLLINEAR_INTERSECTION=2;var we=function(t){function i(){return n(this,i),e(this,i)}return l(i,t),s(i,[{key:\"isInSegmentEnvelopes\",value:function(t){var e=new U(this._inputLines[0][0],this._inputLines[0][1]),n=new U(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)}},{key:\"computeIntersection\",value:function(){if(3!==arguments.length)return f(i,\"computeIntersection\",this,1).apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2];if(this._isProper=!1,U.intersects(e,n,t)&&0===ct.index(e,n,t)&&0===ct.index(n,e,t))return this._isProper=!0,(t.equals(e)||t.equals(n))&&(this._isProper=!1),this._result=Re.POINT_INTERSECTION,null;this._result=Re.NO_INTERSECTION}},{key:\"intersection\",value:function(t,e,n,r){var s=this.intersectionSafe(t,e,n,r);return this.isInSegmentEnvelopes(s)||(s=new X(i.nearestEndpoint(t,e,n,r))),null!==this._precisionModel&&this._precisionModel.makePrecise(s),s}},{key:\"checkDD\",value:function(t,e,n,i,r){var s=lt.intersection(t,e,n,i),a=this.isInSegmentEnvelopes(s);mt.out.println(\"DD in env = \"+a+\"  --------------------- \"+s),r.distance(s)>1e-4&&mt.out.println(\"Distance = \"+r.distance(s))}},{key:\"intersectionSafe\",value:function(t,e,n,r){var s=pt.intersection(t,e,n,r);return null===s&&(s=i.nearestEndpoint(t,e,n,r)),s}},{key:\"computeCollinearIntersection\",value:function(t,e,n,i){var r=U.intersects(t,e,n),s=U.intersects(t,e,i),a=U.intersects(n,i,t),o=U.intersects(n,i,e);return r&&s?(this._intPt[0]=n,this._intPt[1]=i,Re.COLLINEAR_INTERSECTION):a&&o?(this._intPt[0]=t,this._intPt[1]=e,Re.COLLINEAR_INTERSECTION):r&&a?(this._intPt[0]=n,this._intPt[1]=t,!n.equals(t)||s||o?Re.COLLINEAR_INTERSECTION:Re.POINT_INTERSECTION):r&&o?(this._intPt[0]=n,this._intPt[1]=e,!n.equals(e)||s||a?Re.COLLINEAR_INTERSECTION:Re.POINT_INTERSECTION):s&&a?(this._intPt[0]=i,this._intPt[1]=t,!i.equals(t)||r||o?Re.COLLINEAR_INTERSECTION:Re.POINT_INTERSECTION):s&&o?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||r||a?Re.COLLINEAR_INTERSECTION:Re.POINT_INTERSECTION):Re.NO_INTERSECTION}},{key:\"computeIntersect\",value:function(t,e,n,i){if(this._isProper=!1,!U.intersects(t,e,n,i))return Re.NO_INTERSECTION;var r=ct.index(t,e,n),s=ct.index(t,e,i);if(r>0&&s>0||r<0&&s<0)return Re.NO_INTERSECTION;var a=ct.index(n,i,t),o=ct.index(n,i,e);return a>0&&o>0||a<0&&o<0?Re.NO_INTERSECTION:0===r&&0===s&&0===a&&0===o?this.computeCollinearIntersection(t,e,n,i):(0===r||0===s||0===a||0===o?(this._isProper=!1,t.equals2D(n)||t.equals2D(i)?this._intPt[0]=t:e.equals2D(n)||e.equals2D(i)?this._intPt[0]=e:0===r?this._intPt[0]=new X(n):0===s?this._intPt[0]=new X(i):0===a?this._intPt[0]=new X(t):0===o&&(this._intPt[0]=new X(e))):(this._isProper=!0,this._intPt[0]=this.intersection(t,e,n,i)),Re.POINT_INTERSECTION)}}],[{key:\"nearestEndpoint\",value:function(t,e,n,i){var r=t,s=xt.pointToSegment(t,n,i),a=xt.pointToSegment(e,n,i);return a<s&&(s=a,r=e),(a=xt.pointToSegment(n,t,e))<s&&(s=a,r=n),(a=xt.pointToSegment(i,t,e))<s&&(s=a,r=i),r}}])}(Re),Oe=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"countSegment\",value:function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,i=e.x;return n>i&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=ct.index(t,e,this._p);if(r===ct.COLLINEAR)return this._isPointOnSegment=!0,null;e.y<t.y&&(r=-r),r===ct.LEFT&&this._crossingCount++}}},{key:\"isPointInPolygon\",value:function(){return this.getLocation()!==H.EXTERIOR}},{key:\"getLocation\",value:function(){return this._isPointOnSegment?H.BOUNDARY:this._crossingCount%2==1?H.INTERIOR:H.EXTERIOR}},{key:\"isOnSegment\",value:function(){return this._isPointOnSegment}}],[{key:\"constructor_\",value:function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t}},{key:\"locatePointInRing\",value:function(){if(arguments[0]instanceof X&&rt(arguments[1],ht)){for(var e=arguments[1],n=new t(arguments[0]),i=new X,r=new X,s=1;s<e.size();s++)if(e.getCoordinate(s,i),e.getCoordinate(s-1,r),n.countSegment(i,r),n.isOnSegment())return n.getLocation();return n.getLocation()}if(arguments[0]instanceof X&&arguments[1]instanceof Array){for(var a=arguments[1],o=new t(arguments[0]),u=1;u<a.length;u++){var l=a[u],h=a[u-1];if(o.countSegment(l,h),o.isOnSegment())return o.getLocation()}return o.getLocation()}}}])}(),be=function(){function t(){n(this,t)}return s(t,null,[{key:\"isOnLine\",value:function(){if(arguments[0]instanceof X&&rt(arguments[1],ht)){for(var t=arguments[0],e=arguments[1],n=new we,i=new X,r=new X,s=e.size(),a=1;a<s;a++)if(e.getCoordinate(a-1,i),e.getCoordinate(a,r),n.computeIntersection(t,i,r),n.hasIntersection())return!0;return!1}if(arguments[0]instanceof X&&arguments[1]instanceof Array){for(var o=arguments[0],u=arguments[1],l=new we,h=1;h<u.length;h++){var c=u[h-1],f=u[h];if(l.computeIntersection(o,c,f),l.hasIntersection())return!0}return!1}}},{key:\"locateInRing\",value:function(t,e){return Oe.locatePointInRing(t,e)}},{key:\"isInRing\",value:function(e,n){return t.locateInRing(e,n)!==H.EXTERIOR}}])}(),Me=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"setAllLocations\",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t}},{key:\"isNull\",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==H.NONE)return!1;return!0}},{key:\"setAllLocationsIfNull\",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]===H.NONE&&(this.location[e]=t)}},{key:\"isLine\",value:function(){return 1===this.location.length}},{key:\"merge\",value:function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[$.ON]=this.location[$.ON],e[$.LEFT]=H.NONE,e[$.RIGHT]=H.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===H.NONE&&n<t.location.length&&(this.location[n]=t.location[n])}},{key:\"getLocations\",value:function(){return this.location}},{key:\"flip\",value:function(){if(this.location.length<=1)return null;var t=this.location[$.LEFT];this.location[$.LEFT]=this.location[$.RIGHT],this.location[$.RIGHT]=t}},{key:\"toString\",value:function(){var t=new st;return this.location.length>1&&t.append(H.toLocationSymbol(this.location[$.LEFT])),t.append(H.toLocationSymbol(this.location[$.ON])),this.location.length>1&&t.append(H.toLocationSymbol(this.location[$.RIGHT])),t.toString()}},{key:\"setLocations\",value:function(t,e,n){this.location[$.ON]=t,this.location[$.LEFT]=e,this.location[$.RIGHT]=n}},{key:\"get\",value:function(t){return t<this.location.length?this.location[t]:H.NONE}},{key:\"isArea\",value:function(){return this.location.length>1}},{key:\"isAnyNull\",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===H.NONE)return!0;return!1}},{key:\"setLocation\",value:function(){if(1===arguments.length){var t=arguments[0];this.setLocation($.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}}},{key:\"init\",value:function(t){this.location=new Array(t).fill(null),this.setAllLocations(H.NONE)}},{key:\"isEqualOnSide\",value:function(t,e){return this.location[e]===t.location[e]}},{key:\"allPositionsEqual\",value:function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0}}],[{key:\"constructor_\",value:function(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];this.init(e.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[$.ON]=n}else if(arguments[0]instanceof t){var i=arguments[0];if(this.init(i.location.length),null!==i)for(var r=0;r<this.location.length;r++)this.location[r]=i.location[r]}}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this.init(3),this.location[$.ON]=s,this.location[$.LEFT]=a,this.location[$.RIGHT]=o}}}])}(),Ae=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getGeometryCount\",value:function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t}},{key:\"setAllLocations\",value:function(t,e){this.elt[t].setAllLocations(e)}},{key:\"isNull\",value:function(t){return this.elt[t].isNull()}},{key:\"setAllLocationsIfNull\",value:function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}}},{key:\"isLine\",value:function(t){return this.elt[t].isLine()}},{key:\"merge\",value:function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Me(t.elt[e]):this.elt[e].merge(t.elt[e])}},{key:\"flip\",value:function(){this.elt[0].flip(),this.elt[1].flip()}},{key:\"getLocation\",value:function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get($.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}}},{key:\"toString\",value:function(){var t=new st;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()}},{key:\"isArea\",value:function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}}},{key:\"isAnyNull\",value:function(t){return this.elt[t].isAnyNull()}},{key:\"setLocation\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation($.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}}},{key:\"isEqualOnSide\",value:function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)}},{key:\"allPositionsEqual\",value:function(t,e){return this.elt[t].allPositionsEqual(e)}},{key:\"toLine\",value:function(t){this.elt[t].isArea()&&(this.elt[t]=new Me(this.elt[t].location[0]))}}],[{key:\"constructor_\",value:function(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var e=arguments[0];this.elt[0]=new Me(e),this.elt[1]=new Me(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.elt[0]=new Me(n.elt[0]),this.elt[1]=new Me(n.elt[1])}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.elt[0]=new Me(H.NONE),this.elt[1]=new Me(H.NONE),this.elt[i].setLocation(r)}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this.elt[0]=new Me(s,a,o),this.elt[1]=new Me(s,a,o)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2],c=arguments[3];this.elt[0]=new Me(H.NONE,H.NONE,H.NONE),this.elt[1]=new Me(H.NONE,H.NONE,H.NONE),this.elt[u].setLocations(l,h,c)}}},{key:\"toLineLabel\",value:function(e){for(var n=new t(H.NONE),i=0;i<2;i++)n.setLocation(i,e.getLocation(i));return n}}])}(),Pe=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"computeRing\",value:function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=ct.isCCW(this._ring.getCoordinates())}},{key:\"isIsolated\",value:function(){return 1===this._label.getGeometryCount()}},{key:\"computePoints\",value:function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new gt(\"Found null DirectedEdge\");if(e.getEdgeRing()===this)throw new gt(\"Directed Edge visited twice during ring-building at \"+e.getCoordinate());this._edges.add(e);var i=e.getLabel();G.isTrue(i.isArea()),this.mergeLabel(i),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)}},{key:\"getLinearRing\",value:function(){return this._ring}},{key:\"getCoordinate\",value:function(t){return this._pts.get(t)}},{key:\"computeMaxNodeDegree\",value:function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2}},{key:\"addPoints\",value:function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var s=r;s<i.length;s++)this._pts.add(i[s])}else{var a=i.length-2;n&&(a=i.length-1);for(var o=a;o>=0;o--)this._pts.add(i[o])}}},{key:\"isHole\",value:function(){return this._isHole}},{key:\"setInResult\",value:function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)}},{key:\"containsPoint\",value:function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!be.isInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0}},{key:\"addHole\",value:function(t){this._holes.add(t)}},{key:\"isShell\",value:function(){return null===this._shell}},{key:\"getLabel\",value:function(){return this._label}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"getMaxNodeDegree\",value:function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree}},{key:\"getShell\",value:function(){return this._shell}},{key:\"mergeLabel\",value:function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[1],n=arguments[0].getLocation(e,$.RIGHT);if(n===H.NONE)return null;if(this._label.getLocation(e)===H.NONE)return this._label.setLocation(e,n),null}}},{key:\"setShell\",value:function(t){this._shell=t,null!==t&&t.addHole(this)}},{key:\"toPolygon\",value:function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)}}],[{key:\"constructor_\",value:function(){if(this._startDe=null,this._maxNodeDegree=-1,this._edges=new yt,this._pts=new yt,this._label=new Ae(H.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new yt,this._geometryFactory=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()}}}])}(),De=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"setEdgeRing\",value:function(t,e){t.setMinEdgeRing(e)}},{key:\"getNext\",value:function(t){return t.getNextMin()}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Pe.constructor_.call(this,t,e)}}])}(Pe),Fe=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"buildMinimalRings\",value:function(){var t=new yt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new De(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t}},{key:\"setEdgeRing\",value:function(t,e){t.setEdgeRing(e)}},{key:\"linkDirectedEdgesForMinimalEdgeRings\",value:function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)}},{key:\"getNext\",value:function(t){return t.getNext()}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Pe.constructor_.call(this,t,e)}}])}(Pe),Ge=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"setVisited\",value:function(t){this._isVisited=t}},{key:\"setInResult\",value:function(t){this._isInResult=t}},{key:\"isCovered\",value:function(){return this._isCovered}},{key:\"isCoveredSet\",value:function(){return this._isCoveredSet}},{key:\"setLabel\",value:function(t){this._label=t}},{key:\"getLabel\",value:function(){return this._label}},{key:\"setCovered\",value:function(t){this._isCovered=t,this._isCoveredSet=!0}},{key:\"updateIM\",value:function(t){G.isTrue(this._label.getGeometryCount()>=2,\"found partial label\"),this.computeIM(t)}},{key:\"isInResult\",value:function(){return this._isInResult}},{key:\"isVisited\",value:function(){return this._isVisited}}],[{key:\"constructor_\",value:function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}}}])}(),qe=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"isIncidentEdgeInResult\",value:function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1}},{key:\"isIsolated\",value:function(){return 1===this._label.getGeometryCount()}},{key:\"getCoordinate\",value:function(){return this._coord}},{key:\"print\",value:function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)}},{key:\"computeIM\",value:function(t){}},{key:\"computeMergedLocation\",value:function(t,e){var n=H.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==H.BOUNDARY&&(n=i)}return n}},{key:\"setLabel\",value:function(){if(2!==arguments.length||!Number.isInteger(arguments[1])||!Number.isInteger(arguments[0]))return f(i,\"setLabel\",this,1).apply(this,arguments);var t=arguments[0],e=arguments[1];null===this._label?this._label=new Ae(t,e):this._label.setLocation(t,e)}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"mergeLabel\",value:function(){if(arguments[0]instanceof i){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Ae)for(var e=arguments[0],n=0;n<2;n++){var r=this.computeMergedLocation(e,n);this._label.getLocation(n)===H.NONE&&this._label.setLocation(n,r)}}},{key:\"add\",value:function(t){this._edges.insert(t),t.setNode(this)}},{key:\"setLabelBoundary\",value:function(t){if(null===this._label)return null;var e=H.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case H.BOUNDARY:n=H.INTERIOR;break;case H.INTERIOR:default:n=H.BOUNDARY}this._label.setLocation(t,n)}}],[{key:\"constructor_\",value:function(){this._coord=null,this._edges=null;var t=arguments[0],e=arguments[1];this._coord=t,this._edges=e,this._label=new Ae(0,H.NONE)}}])}(Ge),Ye=function(t){function i(){return n(this,i),e(this,i,arguments)}return l(i,t),s(i)}(ee);function ze(t){return null==t?0:t.color}function Xe(t){return null==t?null:t.parent}function Be(t,e){null!==t&&(t.color=e)}function Ue(t){return null==t?null:t.left}function Ve(t){return null==t?null:t.right}var He=function(t){function i(){var t;return n(this,i),(t=e(this,i)).root_=null,t.size_=0,t}return l(i,t),s(i,[{key:\"get\",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null}},{key:\"put\",value:function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:0,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var s=r.value;return r.value=e,s}r=r.right}}while(null!==r);var a={key:t,left:null,right:null,value:e,parent:n,color:0,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=a:n.right=a,this.fixAfterInsertion(a),this.size_++,null}},{key:\"fixAfterInsertion\",value:function(t){var e;for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)Xe(t)===Ue(Xe(Xe(t)))?1===ze(e=Ve(Xe(Xe(t))))?(Be(Xe(t),0),Be(e,0),Be(Xe(Xe(t)),1),t=Xe(Xe(t))):(t===Ve(Xe(t))&&(t=Xe(t),this.rotateLeft(t)),Be(Xe(t),0),Be(Xe(Xe(t)),1),this.rotateRight(Xe(Xe(t)))):1===ze(e=Ue(Xe(Xe(t))))?(Be(Xe(t),0),Be(e,0),Be(Xe(Xe(t)),1),t=Xe(Xe(t))):(t===Ue(Xe(t))&&(t=Xe(t),this.rotateRight(t)),Be(Xe(t),0),Be(Xe(Xe(t)),1),this.rotateLeft(Xe(Xe(t))));this.root_.color=0}},{key:\"values\",value:function(){var t=new yt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=i.successor(e));)t.add(e.value);return t}},{key:\"entrySet\",value:function(){var t=new J,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=i.successor(e));)t.add(e);return t}},{key:\"rotateLeft\",value:function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}}},{key:\"rotateRight\",value:function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}}},{key:\"getFirstEntry\",value:function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t}},{key:\"size\",value:function(){return this.size_}},{key:\"containsKey\",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return!0;e=e.right}}return!1}}],[{key:\"successor\",value:function(t){var e;if(null===t)return null;if(null!==t.right){for(e=t.right;null!==e.left;)e=e.left;return e}e=t.parent;for(var n=t;null!==e&&n===e.right;)n=e,e=e.parent;return e}}])}(Ye),Ze=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"find\",value:function(t){return this.nodeMap.get(t)}},{key:\"addNode\",value:function(){if(arguments[0]instanceof X){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof qe){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}}},{key:\"print\",value:function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"iterator\",value:function(){return this.nodeMap.values().iterator()}},{key:\"values\",value:function(){return this.nodeMap.values()}},{key:\"getBoundaryNodes\",value:function(t){for(var e=new yt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===H.BOUNDARY&&e.add(i)}return e}},{key:\"add\",value:function(t){var e=t.getCoordinate();this.addNode(e).add(t)}}],[{key:\"constructor_\",value:function(){this.nodeMap=new He,this.nodeFact=null;var t=arguments[0];this.nodeFact=t}}])}(),je=function(){function t(){n(this,t)}return s(t,null,[{key:\"isNorthern\",value:function(e){return e===t.NE||e===t.NW}},{key:\"isOpposite\",value:function(t,e){return t!==e&&2===(t-e+4)%4}},{key:\"commonHalfPlane\",value:function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n}},{key:\"isInHalfPlane\",value:function(e,n){return n===t.SE?e===t.SE||e===t.SW:e===n||e===n+1}},{key:\"quadrant\",value:function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];if(0===e&&0===n)throw new m(\"Cannot compute the quadrant for point ( \"+e+\", \"+n+\" )\");return e>=0?n>=0?t.NE:t.SE:n>=0?t.NW:t.SW}if(arguments[0]instanceof X&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1];if(r.x===i.x&&r.y===i.y)throw new m(\"Cannot compute the quadrant for two identical points \"+i);return r.x>=i.x?r.y>=i.y?t.NE:t.SE:r.y>=i.y?t.NW:t.SW}}}])}();je.NE=0,je.NW=1,je.SW=2,je.SE=3;var We=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"compareDirection\",value:function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:ct.index(t._p0,t._p1,this._p1)}},{key:\"getDy\",value:function(){return this._dy}},{key:\"getCoordinate\",value:function(){return this._p0}},{key:\"setNode\",value:function(t){this._node=t}},{key:\"print\",value:function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),i=n.lastIndexOf(\".\"),r=n.substring(i+1);t.print(\"  \"+r+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+e+\"   \"+this._label)}},{key:\"compareTo\",value:function(t){var e=t;return this.compareDirection(e)}},{key:\"getDirectedCoordinate\",value:function(){return this._p1}},{key:\"getDx\",value:function(){return this._dx}},{key:\"getLabel\",value:function(){return this._label}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"getQuadrant\",value:function(){return this._quadrant}},{key:\"getNode\",value:function(){return this._node}},{key:\"toString\",value:function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(\".\");return\"  \"+e.substring(n+1)+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+t+\"   \"+this._label}},{key:\"computeLabel\",value:function(t){}},{key:\"init\",value:function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=je.quadrant(this._dx,this._dy),G.isTrue(!(0===this._dx&&0===this._dy),\"EdgeEnd with identical endpoints found\")}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var e=arguments[0];this._edge=e}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];t.constructor_.call(this,n,i,r,null)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];t.constructor_.call(this,s),this.init(a,o),this._label=u}}}])}(),Ke=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"getNextMin\",value:function(){return this._nextMin}},{key:\"getDepth\",value:function(t){return this._depth[t]}},{key:\"setVisited\",value:function(t){this._isVisited=t}},{key:\"computeDirectedLabel\",value:function(){this._label=new Ae(this._edge.getLabel()),this._isForward||this._label.flip()}},{key:\"getNext\",value:function(){return this._next}},{key:\"setDepth\",value:function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new gt(\"assigned depths do not match\",this.getCoordinate());this._depth[t]=e}},{key:\"isInteriorAreaEdge\",value:function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,$.LEFT)===H.INTERIOR&&this._label.getLocation(e,$.RIGHT)===H.INTERIOR||(t=!1);return t}},{key:\"setNextMin\",value:function(t){this._nextMin=t}},{key:\"print\",value:function(t){f(i,\"print\",this,1).call(this,t),t.print(\" \"+this._depth[$.LEFT]+\"/\"+this._depth[$.RIGHT]),t.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&t.print(\" inResult\")}},{key:\"setMinEdgeRing\",value:function(t){this._minEdgeRing=t}},{key:\"isLineEdge\",value:function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,H.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,H.EXTERIOR);return t&&e&&n}},{key:\"setEdgeRing\",value:function(t){this._edgeRing=t}},{key:\"getMinEdgeRing\",value:function(){return this._minEdgeRing}},{key:\"getDepthDelta\",value:function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t}},{key:\"setInResult\",value:function(t){this._isInResult=t}},{key:\"getSym\",value:function(){return this._sym}},{key:\"isForward\",value:function(){return this._isForward}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"printEdge\",value:function(t){this.print(t),t.print(\" \"),this._isForward?this._edge.print(t):this._edge.printReverse(t)}},{key:\"setSym\",value:function(t){this._sym=t}},{key:\"setVisitedEdge\",value:function(t){this.setVisited(t),this._sym.setVisited(t)}},{key:\"setEdgeDepths\",value:function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===$.LEFT&&(i=-1);var r=$.opposite(t),s=e+n*i;this.setDepth(t,e),this.setDepth(r,s)}},{key:\"getEdgeRing\",value:function(){return this._edgeRing}},{key:\"isInResult\",value:function(){return this._isInResult}},{key:\"setNext\",value:function(t){this._next=t}},{key:\"isVisited\",value:function(){return this._isVisited}}],[{key:\"constructor_\",value:function(){this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999];var t=arguments[0],e=arguments[1];if(We.constructor_.call(this,t),this._isForward=e,e)this.init(t.getCoordinate(0),t.getCoordinate(1));else{var n=t.getNumPoints()-1;this.init(t.getCoordinate(n),t.getCoordinate(n-1))}this.computeDirectedLabel()}},{key:\"depthFactor\",value:function(t,e){return t===H.EXTERIOR&&e===H.INTERIOR?1:t===H.INTERIOR&&e===H.EXTERIOR?-1:0}}])}(We),Je=function(){return s((function t(){n(this,t)}),[{key:\"createNode\",value:function(t){return new qe(t,null)}}])}(),Qe=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"printEdges\",value:function(t){t.println(\"Edges:\");for(var e=0;e<this._edges.size();e++){t.println(\"edge \"+e+\":\");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}}},{key:\"find\",value:function(t){return this._nodes.find(t)}},{key:\"addNode\",value:function(){if(arguments[0]instanceof qe){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof X){var e=arguments[0];return this._nodes.addNode(e)}}},{key:\"getNodeIterator\",value:function(){return this._nodes.iterator()}},{key:\"linkResultDirectedEdges\",value:function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkResultDirectedEdges()}}},{key:\"debugPrintln\",value:function(t){mt.out.println(t)}},{key:\"isBoundaryNode\",value:function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var i=n.getLabel();return null!==i&&i.getLocation(t)===H.BOUNDARY}},{key:\"linkAllDirectedEdges\",value:function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkAllDirectedEdges()}}},{key:\"matchInSameDirection\",value:function(t,e,n,i){return!!t.equals(n)&&(ct.index(t,e,i)===ct.COLLINEAR&&je.quadrant(t,e)===je.quadrant(n,i))}},{key:\"getEdgeEnds\",value:function(){return this._edgeEndList}},{key:\"debugPrint\",value:function(t){mt.out.print(t)}},{key:\"getEdgeIterator\",value:function(){return this._edges.iterator()}},{key:\"findEdgeInSameDirection\",value:function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(this.matchInSameDirection(t,e,r[0],r[1]))return i;if(this.matchInSameDirection(t,e,r[r.length-1],r[r.length-2]))return i}return null}},{key:\"insertEdge\",value:function(t){this._edges.add(t)}},{key:\"findEdgeEnd\",value:function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null}},{key:\"addEdges\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var i=new Ke(n,!0),r=new Ke(n,!1);i.setSym(r),r.setSym(i),this.add(i),this.add(r)}}},{key:\"add\",value:function(t){this._nodes.add(t),this._edgeEndList.add(t)}},{key:\"getNodes\",value:function(){return this._nodes.values()}},{key:\"findEdge\",value:function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(t.equals(r[0])&&e.equals(r[1]))return i}return null}}],[{key:\"constructor_\",value:function(){if(this._edges=new yt,this._nodes=null,this._edgeEndList=new yt,0===arguments.length)this._nodes=new Ze(new Je);else if(1===arguments.length){var t=arguments[0];this._nodes=new Ze(t)}}},{key:\"linkResultDirectedEdges\",value:function(t){for(var e=t.iterator();e.hasNext();){e.next().getEdges().linkResultDirectedEdges()}}}])}(),$e=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"sortShellsAndHoles\",value:function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isHole()?n.add(r):e.add(r)}}},{key:\"computePolygons\",value:function(t){for(var e=new yt,n=t.iterator();n.hasNext();){var i=n.next().toPolygon(this._geometryFactory);e.add(i)}return e}},{key:\"placeFreeHoles\",value:function(e,n){for(var i=n.iterator();i.hasNext();){var r=i.next();if(null===r.getShell()){var s=t.findEdgeRingContaining(r,e);if(null===s)throw new gt(\"unable to assign hole to a shell\",r.getCoordinate(0));r.setShell(s)}}}},{key:\"buildMinimalEdgeRings\",value:function(t,e,n){for(var i=new yt,r=t.iterator();r.hasNext();){var s=r.next();if(s.getMaxNodeDegree()>2){s.linkDirectedEdgesForMinimalEdgeRings();var a=s.buildMinimalRings(),o=this.findShell(a);null!==o?(this.placePolygonHoles(o,a),e.add(o)):n.addAll(a)}else i.add(s)}return i}},{key:\"buildMaximalEdgeRings\",value:function(t){for(var e=new yt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Fe(i,this._geometryFactory);e.add(r),r.setInResult()}}return e}},{key:\"placePolygonHoles\",value:function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}}},{key:\"getPolygons\",value:function(){return this.computePolygons(this._shellList)}},{key:\"findShell\",value:function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return G.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n}},{key:\"add\",value:function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Qe.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new yt,s=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(s,this._shellList,r),this.placeFreeHoles(this._shellList,r)}}}],[{key:\"constructor_\",value:function(){this._geometryFactory=null,this._shellList=new yt;var t=arguments[0];this._geometryFactory=t}},{key:\"findEdgeRingContaining\",value:function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),s=null,a=null,o=e.iterator();o.hasNext();){var u=o.next(),l=u.getLinearRing(),h=l.getEnvelopeInternal();if(!h.equals(i)&&h.contains(i)){r=jt.ptNotInList(n.getCoordinates(),l.getCoordinates());var c=!1;be.isInRing(r,l.getCoordinates())&&(c=!0),c&&(null===s||a.contains(h))&&(a=(s=u).getLinearRing().getEnvelopeInternal())}}return s}}])}(),tn=function(){return s((function t(){n(this,t)}),[{key:\"getBounds\",value:function(){}}])}(),en=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getItem\",value:function(){return this._item}},{key:\"getBounds\",value:function(){return this._bounds}},{key:\"interfaces_\",get:function(){return[tn,E]}}],[{key:\"constructor_\",value:function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e}}])}(),nn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"poll\",value:function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t}},{key:\"size\",value:function(){return this._size}},{key:\"reorder\",value:function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)}},{key:\"clear\",value:function(){this._size=0,this._items.clear()}},{key:\"peek\",value:function(){return this.isEmpty()?null:this._items.get(1)}},{key:\"isEmpty\",value:function(){return 0===this._size}},{key:\"add\",value:function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)}}],[{key:\"constructor_\",value:function(){this._size=null,this._items=null,this._size=0,this._items=new yt,this._items.add(null)}}])}(),rn=function(){return s((function t(){n(this,t)}),[{key:\"insert\",value:function(t,e){}},{key:\"remove\",value:function(t,e){}},{key:\"query\",value:function(){}}])}(),sn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getLevel\",value:function(){return this._level}},{key:\"size\",value:function(){return this._childBoundables.size()}},{key:\"getChildBoundables\",value:function(){return this._childBoundables}},{key:\"addChildBoundable\",value:function(t){G.isTrue(null===this._bounds),this._childBoundables.add(t)}},{key:\"isEmpty\",value:function(){return this._childBoundables.isEmpty()}},{key:\"getBounds\",value:function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds}},{key:\"interfaces_\",get:function(){return[tn,E]}}],[{key:\"constructor_\",value:function(){if(this._childBoundables=new yt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}}}])}(),an={reverseOrder:function(){return{compare:function(t,e){return e.compareTo(t)}}},min:function(t){return an.sort(t),t.get(0)},sort:function(t,e){var n=t.toArray();e?At.sort(n,e):At.sort(n);for(var i=t.iterator(),r=0,s=n.length;r<s;r++)i.next(),i.set(n[r])},singletonList:function(t){var e=new yt;return e.add(t),e}},on=function(){function t(){n(this,t)}return s(t,null,[{key:\"maxDistance\",value:function(e,n,i,r,s,a,o,u){var l=t.distance(e,n,s,a);return l=Math.max(l,t.distance(e,n,o,u)),l=Math.max(l,t.distance(i,r,s,a)),l=Math.max(l,t.distance(i,r,o,u))}},{key:\"distance\",value:function(t,e,n,i){var r=n-t,s=i-e;return Math.sqrt(r*r+s*s)}},{key:\"maximumDistance\",value:function(e,n){var i=Math.min(e.getMinX(),n.getMinX()),r=Math.min(e.getMinY(),n.getMinY()),s=Math.max(e.getMaxX(),n.getMaxX()),a=Math.max(e.getMaxY(),n.getMaxY());return t.distance(i,r,s,a)}},{key:\"minMaxDistance\",value:function(e,n){var i=e.getMinX(),r=e.getMinY(),s=e.getMaxX(),a=e.getMaxY(),o=n.getMinX(),u=n.getMinY(),l=n.getMaxX(),h=n.getMaxY(),c=t.maxDistance(i,r,i,a,o,u,o,h);return c=Math.min(c,t.maxDistance(i,r,i,a,o,u,l,u)),c=Math.min(c,t.maxDistance(i,r,i,a,l,h,o,h)),c=Math.min(c,t.maxDistance(i,r,i,a,l,h,l,u)),c=Math.min(c,t.maxDistance(i,r,s,r,o,u,o,h)),c=Math.min(c,t.maxDistance(i,r,s,r,o,u,l,u)),c=Math.min(c,t.maxDistance(i,r,s,r,l,h,o,h)),c=Math.min(c,t.maxDistance(i,r,s,r,l,h,l,u)),c=Math.min(c,t.maxDistance(s,a,i,a,o,u,o,h)),c=Math.min(c,t.maxDistance(s,a,i,a,o,u,l,u)),c=Math.min(c,t.maxDistance(s,a,i,a,l,h,o,h)),c=Math.min(c,t.maxDistance(s,a,i,a,l,h,l,u)),c=Math.min(c,t.maxDistance(s,a,s,r,o,u,o,h)),c=Math.min(c,t.maxDistance(s,a,s,r,o,u,l,u)),c=Math.min(c,t.maxDistance(s,a,s,r,l,h,o,h)),c=Math.min(c,t.maxDistance(s,a,s,r,l,h,l,u))}}])}(),un=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"maximumDistance\",value:function(){return on.maximumDistance(this._boundable1.getBounds(),this._boundable2.getBounds())}},{key:\"expandToQueue\",value:function(e,n){var i=t.isComposite(this._boundable1),r=t.isComposite(this._boundable2);if(i&&r)return t.area(this._boundable1)>t.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,!1,e,n),null):(this.expand(this._boundable2,this._boundable1,!0,e,n),null);if(i)return this.expand(this._boundable1,this._boundable2,!1,e,n),null;if(r)return this.expand(this._boundable2,this._boundable1,!0,e,n),null;throw new m(\"neither boundable is composite\")}},{key:\"isLeaves\",value:function(){return!(t.isComposite(this._boundable1)||t.isComposite(this._boundable2))}},{key:\"compareTo\",value:function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0}},{key:\"expand\",value:function(e,n,i,r,s){for(var a=e.getChildBoundables().iterator();a.hasNext();){var o=a.next(),u=null;(u=i?new t(n,o,this._itemDistance):new t(o,n,this._itemDistance)).getDistance()<s&&r.add(u)}}},{key:\"getBoundable\",value:function(t){return 0===t?this._boundable1:this._boundable2}},{key:\"getDistance\",value:function(){return this._distance}},{key:\"distance\",value:function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()}},{key:\"area\",value:function(t){return t.getBounds().getArea()}},{key:\"isComposite\",value:function(t){return t instanceof sn}}])}(),ln=function(){return s((function t(){n(this,t)}),[{key:\"visitItem\",value:function(t){}}])}(),hn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"queryInternal\",value:function(){if(rt(arguments[2],ln)&&arguments[0]instanceof Object&&arguments[1]instanceof sn)for(var t=arguments[0],e=arguments[2],n=arguments[1].getChildBoundables(),i=0;i<n.size();i++){var r=n.get(i);this.getIntersectsOp().intersects(r.getBounds(),t)&&(r instanceof sn?this.queryInternal(t,r,e):r instanceof en?e.visitItem(r.getItem()):G.shouldNeverReachHere())}else if(rt(arguments[2],nt)&&arguments[0]instanceof Object&&arguments[1]instanceof sn)for(var s=arguments[0],a=arguments[2],o=arguments[1].getChildBoundables(),u=0;u<o.size();u++){var l=o.get(u);this.getIntersectsOp().intersects(l.getBounds(),s)&&(l instanceof sn?this.queryInternal(s,l,a):l instanceof en?a.add(l.getItem()):G.shouldNeverReachHere())}}},{key:\"getNodeCapacity\",value:function(){return this._nodeCapacity}},{key:\"lastNode\",value:function(t){return t.get(t.size()-1)}},{key:\"size\",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();n instanceof sn?t+=this.size(n):n instanceof en&&(t+=1)}return t}}},{key:\"removeItem\",value:function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof en&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)}},{key:\"itemsTree\",value:function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new yt:t}if(1===arguments.length){for(var e=arguments[0],n=new yt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof sn){var s=this.itemsTree(r);null!==s&&n.add(s)}else r instanceof en?n.add(r.getItem()):G.shouldNeverReachHere()}return n.size()<=0?null:n}}},{key:\"insert\",value:function(t,e){G.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new en(t,e))}},{key:\"boundablesAtLevel\",value:function(){if(1===arguments.length){var t=arguments[0],e=new yt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(G.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var s=i.getChildBoundables().iterator();s.hasNext();){var a=s.next();a instanceof sn?this.boundablesAtLevel(n,a,r):(G.isTrue(a instanceof en),-1===n&&r.add(a))}return null}}},{key:\"query\",value:function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new yt;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.queryInternal(t,this._root,e),e}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.queryInternal(n,this._root,i)}}},{key:\"build\",value:function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0}},{key:\"getRoot\",value:function(){return this.build(),this._root}},{key:\"remove\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=this.removeItem(i,r);if(s)return!0;for(var a=null,o=i.getChildBoundables().iterator();o.hasNext();){var u=o.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&(u instanceof sn&&(s=this.remove(n,u,r)))){a=u;break}}return null!==a&&a.getChildBoundables().isEmpty()&&i.getChildBoundables().remove(a),s}}},{key:\"createHigherLevels\",value:function(t,e){G.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)}},{key:\"depth\",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();if(n instanceof sn){var i=this.depth(n);i>t&&(t=i)}}return t+1}}},{key:\"createParentBoundables\",value:function(t,e){G.isTrue(!t.isEmpty());var n=new yt;n.add(this.createNode(e));var i=new yt(t);an.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var s=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(s)}return n}},{key:\"isEmpty\",value:function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){if(this._root=null,this._built=!1,this._itemBoundables=new yt,this._nodeCapacity=null,0===arguments.length)t.constructor_.call(this,t.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var e=arguments[0];G.isTrue(e>1,\"Node capacity must be greater than 1\"),this._nodeCapacity=e}}},{key:\"compareDoubles\",value:function(t,e){return t>e?1:t<e?-1:0}}])}();hn.IntersectsOp=function(){},hn.DEFAULT_NODE_CAPACITY=10;var cn=function(){return s((function t(){n(this,t)}),[{key:\"distance\",value:function(t,e){}}])}(),fn=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"createParentBoundablesFromVerticalSlices\",value:function(t,e){G.isTrue(t.length>0);for(var n=new yt,i=0;i<t.length;i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i],e));return n}},{key:\"nearestNeighbourK\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.nearestNeighbourK(t,A.POSITIVE_INFINITY,e)}if(3===arguments.length){var n=arguments[0],r=arguments[2],s=arguments[1],a=new nn;a.add(n);for(var o=new nn;!a.isEmpty()&&s>=0;){var u=a.poll(),l=u.getDistance();if(l>=s)break;if(u.isLeaves())if(o.size()<r)o.add(u);else o.peek().getDistance()>l&&(o.poll(),o.add(u)),s=o.peek().getDistance();else u.expandToQueue(a,s)}return i.getItems(o)}}},{key:\"createNode\",value:function(t){return new gn(t)}},{key:\"size\",value:function(){return 0===arguments.length?f(i,\"size\",this,1).call(this):f(i,\"size\",this,1).apply(this,arguments)}},{key:\"insert\",value:function(){if(!(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof U))return f(i,\"insert\",this,1).apply(this,arguments);var t=arguments[0],e=arguments[1];if(t.isNull())return null;f(i,\"insert\",this,1).call(this,t,e)}},{key:\"getIntersectsOp\",value:function(){return i.intersectsOp}},{key:\"verticalSlices\",value:function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),i=new Array(e).fill(null),r=t.iterator(),s=0;s<e;s++){i[s]=new yt;for(var a=0;r.hasNext()&&a<n;){var o=r.next();i[s].add(o),a++}}return i}},{key:\"query\",value:function(){if(1===arguments.length){var t=arguments[0];return f(i,\"query\",this,1).call(this,t)}if(2===arguments.length){var e=arguments[0],n=arguments[1];f(i,\"query\",this,1).call(this,e,n)}}},{key:\"getComparator\",value:function(){return i.yComparator}},{key:\"createParentBoundablesFromVerticalSlice\",value:function(t,e){return f(i,\"createParentBoundables\",this,1).call(this,t,e)}},{key:\"remove\",value:function(){if(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return f(i,\"remove\",this,1).call(this,t,e)}return f(i,\"remove\",this,1).apply(this,arguments)}},{key:\"depth\",value:function(){return 0===arguments.length?f(i,\"depth\",this,1).call(this):f(i,\"depth\",this,1).apply(this,arguments)}},{key:\"createParentBoundables\",value:function(t,e){G.isTrue(!t.isEmpty());var n=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),r=new yt(t);an.sort(r,i.xComparator);var s=this.verticalSlices(r,Math.trunc(Math.ceil(Math.sqrt(n))));return this.createParentBoundablesFromVerticalSlices(s,e)}},{key:\"nearestNeighbour\",value:function(){if(1===arguments.length){if(rt(arguments[0],cn)){var t=arguments[0];if(this.isEmpty())return null;var e=new un(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof un){var n=arguments[0],i=A.POSITIVE_INFINITY,r=null,s=new nn;for(s.add(n);!s.isEmpty()&&i>0;){var a=s.poll(),o=a.getDistance();if(o>=i)break;a.isLeaves()?(i=o,r=a):a.expandToQueue(s,i)}return null===r?null:[r.getBoundable(0).getItem(),r.getBoundable(1).getItem()]}}else{if(2===arguments.length){var u=arguments[0],l=arguments[1];if(this.isEmpty()||u.isEmpty())return null;var h=new un(this.getRoot(),u.getRoot(),l);return this.nearestNeighbour(h)}if(3===arguments.length){var c=arguments[2],f=new en(arguments[0],arguments[1]),g=new un(this.getRoot(),f,c);return this.nearestNeighbour(g)[0]}if(4===arguments.length){var v=arguments[2],y=arguments[3],d=new en(arguments[0],arguments[1]),_=new un(this.getRoot(),d,v);return this.nearestNeighbourK(_,y)}}}},{key:\"isWithinDistance\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=A.POSITIVE_INFINITY,i=new nn;for(i.add(t);!i.isEmpty();){var r=i.poll(),s=r.getDistance();if(s>e)return!1;if(r.maximumDistance()<=e)return!0;if(r.isLeaves()){if((n=s)<=e)return!0}else r.expandToQueue(i,n)}return!1}if(3===arguments.length){var a=arguments[0],o=arguments[1],u=arguments[2],l=new un(this.getRoot(),a.getRoot(),o);return this.isWithinDistance(l,u)}}},{key:\"interfaces_\",get:function(){return[rn,E]}}],[{key:\"constructor_\",value:function(){if(0===arguments.length)i.constructor_.call(this,i.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];hn.constructor_.call(this,t)}}},{key:\"centreX\",value:function(t){return i.avg(t.getMinX(),t.getMaxX())}},{key:\"avg\",value:function(t,e){return(t+e)/2}},{key:\"getItems\",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;!t.isEmpty();){var i=t.poll();e[n]=i.getBoundable(0).getItem(),n++}return e}},{key:\"centreY\",value:function(t){return i.avg(t.getMinY(),t.getMaxY())}}])}(hn),gn=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"computeBounds\",value:function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new U(n.getBounds()):t.expandToInclude(n.getBounds())}return t}}],[{key:\"constructor_\",value:function(){var t=arguments[0];sn.constructor_.call(this,t)}}])}(sn);fn.STRtreeNode=gn,fn.xComparator=new(function(){return s((function t(){n(this,t)}),[{key:\"interfaces_\",get:function(){return[P]}},{key:\"compare\",value:function(t,e){return hn.compareDoubles(fn.centreX(t.getBounds()),fn.centreX(e.getBounds()))}}])}()),fn.yComparator=new(function(){return s((function t(){n(this,t)}),[{key:\"interfaces_\",get:function(){return[P]}},{key:\"compare\",value:function(t,e){return hn.compareDoubles(fn.centreY(t.getBounds()),fn.centreY(e.getBounds()))}}])}()),fn.intersectsOp=new(function(){return s((function t(){n(this,t)}),[{key:\"interfaces_\",get:function(){return[IntersectsOp]}},{key:\"intersects\",value:function(t,e){return t.intersects(e)}}])}()),fn.DEFAULT_NODE_CAPACITY=10;var vn=function(){function t(){n(this,t)}return s(t,null,[{key:\"relativeSign\",value:function(t,e){return t<e?-1:t>e?1:0}},{key:\"compare\",value:function(e,n,i){if(n.equals2D(i))return 0;var r=t.relativeSign(n.x,i.x),s=t.relativeSign(n.y,i.y);switch(e){case 0:return t.compareValue(r,s);case 1:return t.compareValue(s,r);case 2:return t.compareValue(s,-r);case 3:return t.compareValue(-r,s);case 4:return t.compareValue(-r,-s);case 5:return t.compareValue(-s,-r);case 6:return t.compareValue(-s,r);case 7:return t.compareValue(r,-s)}return G.shouldNeverReachHere(\"invalid octant value\"),0}},{key:\"compareValue\",value:function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0}}])}(),yn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getCoordinate\",value:function(){return this.coord}},{key:\"print\",value:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)}},{key:\"compareTo\",value:function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:this._isInterior?e._isInterior?vn.compare(this._segmentOctant,this.coord,e.coord):1:-1}},{key:\"isEndPoint\",value:function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t}},{key:\"toString\",value:function(){return this.segmentIndex+\":\"+this.coord.toString()}},{key:\"isInterior\",value:function(){return this._isInterior}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new X(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))}}])}(),dn=function(){return s((function t(){n(this,t)}),[{key:\"hasNext\",value:function(){}},{key:\"next\",value:function(){}},{key:\"remove\",value:function(){}}])}(),_n=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getSplitCoordinates\",value:function(){var t=new Zt;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()}},{key:\"addCollapsedNodes\",value:function(){var t=new yt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}}},{key:\"createSplitEdgePts\",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2;if(2===n)return[new X(t.coord),new X(e.coord)];var i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),a=0;s[a++]=new X(t.coord);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)s[a++]=this._edge.getCoordinate(o);return r&&(s[a]=new X(e.coord)),s}},{key:\"print\",value:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"findCollapsesFromExistingVertices\",value:function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e);this._edge.getCoordinate(e+1);var i=this._edge.getCoordinate(e+2);n.equals2D(i)&&t.add(at.valueOf(e+1))}}},{key:\"addEdgeCoordinates\",value:function(t,e,n){var i=this.createSplitEdgePts(t,e);n.add(i,!1)}},{key:\"iterator\",value:function(){return this._nodeMap.values().iterator()}},{key:\"addSplitEdges\",value:function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}}},{key:\"findCollapseIndex\",value:function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var i=e.segmentIndex-t.segmentIndex;return e.isInterior()||i--,1===i&&(n[0]=t.segmentIndex+1,!0)}},{key:\"findCollapsesFromInsertedNodes\",value:function(t){for(var e=new Array(1).fill(null),n=this.iterator(),i=n.next();n.hasNext();){var r=n.next();this.findCollapseIndex(i,r,e)&&t.add(at.valueOf(e[0])),i=r}}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"addEndpoints\",value:function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)}},{key:\"createSplitEdge\",value:function(t,e){var n=this.createSplitEdgePts(t,e);return new xn(n,this._edge.getData())}},{key:\"add\",value:function(t,e){var n=new yn(this._edge,t,e,this._edge.getSegmentOctant(e)),i=this._nodeMap.get(n);return null!==i?(G.isTrue(i.coord.equals2D(t),\"Found equal nodes with different coordinates\"),i):(this._nodeMap.put(n,n),n)}},{key:\"checkSplitEdgesCorrectness\",value:function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new D(\"bad split edge start point at \"+n);var i=t.get(t.size()-1).getCoordinates(),r=i[i.length-1];if(!r.equals2D(e[e.length-1]))throw new D(\"bad split edge end point at \"+r)}}],[{key:\"constructor_\",value:function(){this._nodeMap=new He,this._edge=null;var t=arguments[0];this._edge=t}}])}(),pn=function(){function t(){n(this,t)}return s(t,null,[{key:\"octant\",value:function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];if(0===e&&0===n)throw new m(\"Cannot compute the octant for point ( \"+e+\", \"+n+\" )\");var i=Math.abs(e),r=Math.abs(n);return e>=0?n>=0?i>=r?0:1:i>=r?7:6:n>=0?i>=r?3:2:i>=r?4:5}if(arguments[0]instanceof X&&arguments[1]instanceof X){var s=arguments[0],a=arguments[1],o=a.x-s.x,u=a.y-s.y;if(0===o&&0===u)throw new m(\"Cannot compute the octant for two identical points \"+s);return t.octant(o,u)}}}])}(),mn=function(){return s((function t(){n(this,t)}),[{key:\"getCoordinates\",value:function(){}},{key:\"size\",value:function(){}},{key:\"getCoordinate\",value:function(t){}},{key:\"isClosed\",value:function(){}},{key:\"setData\",value:function(t){}},{key:\"getData\",value:function(){}}])}(),kn=function(){return s((function t(){n(this,t)}),[{key:\"addIntersection\",value:function(t,e){}},{key:\"interfaces_\",get:function(){return[mn]}}])}(),xn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getCoordinates\",value:function(){return this._pts}},{key:\"size\",value:function(){return this._pts.length}},{key:\"getCoordinate\",value:function(t){return this._pts[t]}},{key:\"isClosed\",value:function(){return this._pts[0].equals(this._pts[this._pts.length-1])}},{key:\"getSegmentOctant\",value:function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))}},{key:\"setData\",value:function(t){this._data=t}},{key:\"safeOctant\",value:function(t,e){return t.equals2D(e)?0:pn.octant(t,e)}},{key:\"getData\",value:function(){return this._data}},{key:\"addIntersection\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[1],i=arguments[3],r=new X(arguments[0].getIntersection(i));this.addIntersection(r,n)}}},{key:\"toString\",value:function(){return Ce.toLineString(new Qt(this._pts))}},{key:\"getNodeList\",value:function(){return this._nodeList}},{key:\"addIntersectionNode\",value:function(t,e){var n=e,i=n+1;if(i<this._pts.length){var r=this._pts[i];t.equals2D(r)&&(n=i)}return this._nodeList.add(t,n)}},{key:\"addIntersections\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)}},{key:\"interfaces_\",get:function(){return[kn]}}],[{key:\"constructor_\",value:function(){this._nodeList=new _n(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e}},{key:\"getNodedSubstrings\",value:function(){if(1===arguments.length){var e=arguments[0],n=new yt;return t.getNodedSubstrings(e,n),n}if(2===arguments.length)for(var i=arguments[1],r=arguments[0].iterator();r.hasNext();){r.next().getNodeList().addSplitEdges(i)}}}])}(),In=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"minX\",value:function(){return Math.min(this.p0.x,this.p1.x)}},{key:\"orientationIndex\",value:function(){if(arguments[0]instanceof t){var e=arguments[0],n=ct.index(this.p0,this.p1,e.p0),i=ct.index(this.p0,this.p1,e.p1);return n>=0&&i>=0||n<=0&&i<=0?Math.max(n,i):0}if(arguments[0]instanceof X){var r=arguments[0];return ct.index(this.p0,this.p1,r)}}},{key:\"toGeometry\",value:function(t){return t.createLineString([this.p0,this.p1])}},{key:\"isVertical\",value:function(){return this.p0.x===this.p1.x}},{key:\"equals\",value:function(e){if(!(e instanceof t))return!1;var n=e;return this.p0.equals(n.p0)&&this.p1.equals(n.p1)}},{key:\"intersection\",value:function(t){var e=new we;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null}},{key:\"project\",value:function(){if(arguments[0]instanceof X){var e=arguments[0];if(e.equals(this.p0)||e.equals(this.p1))return new X(e);var n=this.projectionFactor(e),i=new X;return i.x=this.p0.x+n*(this.p1.x-this.p0.x),i.y=this.p0.y+n*(this.p1.y-this.p0.y),i}if(arguments[0]instanceof t){var r=arguments[0],s=this.projectionFactor(r.p0),a=this.projectionFactor(r.p1);if(s>=1&&a>=1)return null;if(s<=0&&a<=0)return null;var o=this.project(r.p0);s<0&&(o=this.p0),s>1&&(o=this.p1);var u=this.project(r.p1);return a<0&&(u=this.p0),a>1&&(u=this.p1),new t(o,u)}}},{key:\"normalize\",value:function(){this.p1.compareTo(this.p0)<0&&this.reverse()}},{key:\"angle\",value:function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}},{key:\"getCoordinate\",value:function(t){return 0===t?this.p0:this.p1}},{key:\"distancePerpendicular\",value:function(t){return xt.pointToLinePerpendicular(t,this.p0,this.p1)}},{key:\"minY\",value:function(){return Math.min(this.p0.y,this.p1.y)}},{key:\"midPoint\",value:function(){return t.midPoint(this.p0,this.p1)}},{key:\"projectionFactor\",value:function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;return i<=0?A.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i}},{key:\"closestPoints\",value:function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=A.MAX_VALUE,r=null,s=this.closestPoint(t.p0);i=s.distance(t.p0),n[0]=s,n[1]=t.p0;var a=this.closestPoint(t.p1);(r=a.distance(t.p1))<i&&(i=r,n[0]=a,n[1]=t.p1);var o=t.closestPoint(this.p0);(r=o.distance(this.p0))<i&&(i=r,n[0]=this.p0,n[1]=o);var u=t.closestPoint(this.p1);return(r=u.distance(this.p1))<i&&(i=r,n[0]=this.p1,n[1]=u),n}},{key:\"closestPoint\",value:function(t){var e=this.projectionFactor(t);return e>0&&e<1?this.project(t):this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1}},{key:\"maxX\",value:function(){return Math.max(this.p0.x,this.p1.x)}},{key:\"getLength\",value:function(){return this.p0.distance(this.p1)}},{key:\"compareTo\",value:function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)}},{key:\"reverse\",value:function(){var t=this.p0;this.p0=this.p1,this.p1=t}},{key:\"equalsTopo\",value:function(t){return this.p0.equals(t.p0)&&this.p1.equals(t.p1)||this.p0.equals(t.p1)&&this.p1.equals(t.p0)}},{key:\"lineIntersection\",value:function(t){return pt.intersection(this.p0,this.p1,t.p0,t.p1)}},{key:\"maxY\",value:function(){return Math.max(this.p0.y,this.p1.y)}},{key:\"pointAlongOffset\",value:function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,s=this.p1.y-this.p0.y,a=Math.sqrt(r*r+s*s),o=0,u=0;if(0!==e){if(a<=0)throw new IllegalStateException(\"Cannot compute offset from zero-length line segment\");o=e*r/a,u=e*s/a}return new X(n-u,i+o)}},{key:\"setCoordinates\",value:function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}}},{key:\"segmentFraction\",value:function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||A.isNaN(e))&&(e=1),e}},{key:\"toString\",value:function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"}},{key:\"isHorizontal\",value:function(){return this.p0.y===this.p1.y}},{key:\"reflect\",value:function(t){var e=this.p1.getY()-this.p0.getY(),n=this.p0.getX()-this.p1.getX(),i=this.p0.getY()*(this.p1.getX()-this.p0.getX())-this.p0.getX()*(this.p1.getY()-this.p0.getY()),r=e*e+n*n,s=e*e-n*n,a=t.getX(),o=t.getY();return new X((-s*a-2*e*n*o-2*e*i)/r,(s*o-2*e*n*a-2*n*i)/r)}},{key:\"distance\",value:function(){if(arguments[0]instanceof t){var e=arguments[0];return xt.segmentToSegment(this.p0,this.p1,e.p0,e.p1)}if(arguments[0]instanceof X){var n=arguments[0];return xt.pointToSegment(n,this.p0,this.p1)}}},{key:\"pointAlong\",value:function(t){var e=new X;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}},{key:\"hashCode\",value:function(){var t=A.doubleToLongBits(this.p0.x);t^=31*A.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=A.doubleToLongBits(this.p1.x);return n^=31*A.doubleToLongBits(this.p1.y),e^(Math.trunc(n)^Math.trunc(n>>32))}},{key:\"interfaces_\",get:function(){return[x,E]}}],[{key:\"constructor_\",value:function(){if(this.p0=null,this.p1=null,0===arguments.length)t.constructor_.call(this,new X,new X);else if(1===arguments.length){var e=arguments[0];t.constructor_.call(this,e.p0,e.p1)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.p0=n,this.p1=i}else if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3];t.constructor_.call(this,new X(r,s),new X(a,o))}}},{key:\"midPoint\",value:function(t,e){return new X((t.x+e.x)/2,(t.y+e.y)/2)}}])}(),En=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"overlap\",value:function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[1],e=arguments[2],n=arguments[3];arguments[0].getLineSegment(t,this._overlapSeg1),e.getLineSegment(n,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}}}],[{key:\"constructor_\",value:function(){this._overlapSeg1=new In,this._overlapSeg2=new In}}])}(),Nn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getLineSegment\",value:function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]}},{key:\"computeSelect\",value:function(t,e,n,i){var r=this._pts[e],s=this._pts[n];if(n-e==1)return i.select(this,e),null;if(!t.intersects(r,s))return null;var a=Math.trunc((e+n)/2);e<a&&this.computeSelect(t,e,a,i),a<n&&this.computeSelect(t,a,n,i)}},{key:\"getCoordinates\",value:function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t}},{key:\"computeOverlaps\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.computeOverlaps(this._start,this._end,t,t._start,t._end,e)}else if(6===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=arguments[3],a=arguments[4],o=arguments[5];if(i-n==1&&a-s==1)return o.overlap(this,n,r,s),null;if(!this.overlaps(n,i,r,s,a))return null;var u=Math.trunc((n+i)/2),l=Math.trunc((s+a)/2);n<u&&(s<l&&this.computeOverlaps(n,u,r,s,l,o),l<a&&this.computeOverlaps(n,u,r,l,a,o)),u<i&&(s<l&&this.computeOverlaps(u,i,r,s,l,o),l<a&&this.computeOverlaps(u,i,r,l,a,o))}}},{key:\"setId\",value:function(t){this._id=t}},{key:\"select\",value:function(t,e){this.computeSelect(t,this._start,this._end,e)}},{key:\"getEnvelope\",value:function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new U(t,e)}return this._env}},{key:\"overlaps\",value:function(t,e,n,i,r){return U.intersects(this._pts[t],this._pts[e],n._pts[i],n._pts[r])}},{key:\"getEndIndex\",value:function(){return this._end}},{key:\"getStartIndex\",value:function(){return this._start}},{key:\"getContext\",value:function(){return this._context}},{key:\"getId\",value:function(){return this._id}}],[{key:\"constructor_\",value:function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i}}])}(),Tn=function(){function t(){n(this,t)}return s(t,null,[{key:\"findChainEnd\",value:function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var i=je.quadrant(t[n],t[n+1]),r=e+1;r<t.length;){if(!t[r-1].equals2D(t[r]))if(je.quadrant(t[r-1],t[r])!==i)break;r++}return r-1}},{key:\"getChains\",value:function(){if(1===arguments.length){var e=arguments[0];return t.getChains(e,null)}if(2===arguments.length){var n=arguments[0],i=arguments[1],r=new yt,s=0;do{var a=t.findChainEnd(n,s),o=new Nn(n,s,a,i);r.add(o),s=a}while(s<n.length-1);return r}}}])}(),Sn=function(){return s((function t(){n(this,t)}),[{key:\"computeNodes\",value:function(t){}},{key:\"getNodedSubstrings\",value:function(){}}])}(),Ln=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"setSegmentIntersector\",value:function(t){this._segInt=t}},{key:\"interfaces_\",get:function(){return[Sn]}}],[{key:\"constructor_\",value:function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}}}])}(),Cn=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"getMonotoneChains\",value:function(){return this._monoChains}},{key:\"getNodedSubstrings\",value:function(){return xn.getNodedSubstrings(this._nodedSegStrings)}},{key:\"getIndex\",value:function(){return this._index}},{key:\"add\",value:function(t){for(var e=Tn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}}},{key:\"computeNodes\",value:function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()}},{key:\"intersectChains\",value:function(){for(var t=new Rn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),i=this._index.query(n.getEnvelope()).iterator();i.hasNext();){var r=i.next();if(r.getId()>n.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}}}],[{key:\"constructor_\",value:function(){if(this._monoChains=new yt,this._index=new fn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0,0===arguments.length);else if(1===arguments.length){var t=arguments[0];Ln.constructor_.call(this,t)}}}])}(Ln),Rn=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"overlap\",value:function(){if(4!==arguments.length)return f(i,\"overlap\",this,1).apply(this,arguments);var t=arguments[1],e=arguments[2],n=arguments[3],r=arguments[0].getContext(),s=e.getContext();this._si.processIntersections(r,t,s,n)}}],[{key:\"constructor_\",value:function(){this._si=null;var t=arguments[0];this._si=t}}])}(En);Cn.SegmentOverlapAction=Rn;var wn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"isDeletable\",value:function(t,e,n,i){var r=this._inputLine[t],s=this._inputLine[e],a=this._inputLine[n];return!!this.isConcave(r,s,a)&&(!!this.isShallow(r,s,a,i)&&this.isShallowSampled(r,s,t,n,i))}},{key:\"deleteShallowConcavities\",value:function(){for(var e=1,n=this.findNextNonDeletedIndex(e),i=this.findNextNonDeletedIndex(n),r=!1;i<this._inputLine.length;){var s=!1;this.isDeletable(e,n,i,this._distanceTol)&&(this._isDeleted[n]=t.DELETE,s=!0,r=!0),e=s?i:n,n=this.findNextNonDeletedIndex(e),i=this.findNextNonDeletedIndex(n)}return r}},{key:\"isShallowConcavity\",value:function(t,e,n,i){return ct.index(t,e,n)===this._angleOrientation&&xt.pointToSegment(e,t,n)<i}},{key:\"isShallowSampled\",value:function(e,n,i,r,s){var a=Math.trunc((r-i)/t.NUM_PTS_TO_CHECK);a<=0&&(a=1);for(var o=i;o<r;o+=a)if(!this.isShallow(e,n,this._inputLine[o],s))return!1;return!0}},{key:\"isConcave\",value:function(t,e,n){var i=ct.index(t,e,n)===this._angleOrientation;return i}},{key:\"simplify\",value:function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=ct.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()}},{key:\"findNextNonDeletedIndex\",value:function(e){for(var n=e+1;n<this._inputLine.length&&this._isDeleted[n]===t.DELETE;)n++;return n}},{key:\"isShallow\",value:function(t,e,n,i){return xt.pointToSegment(e,t,n)<i}},{key:\"collapseLine\",value:function(){for(var e=new Zt,n=0;n<this._inputLine.length;n++)this._isDeleted[n]!==t.DELETE&&e.add(this._inputLine[n]);return e.toCoordinateArray()}}],[{key:\"constructor_\",value:function(){this._inputLine=null,this._distanceTol=null,this._isDeleted=null,this._angleOrientation=ct.COUNTERCLOCKWISE;var t=arguments[0];this._inputLine=t}},{key:\"simplify\",value:function(e,n){return new t(e).simplify(n)}}])}();wn.INIT=0,wn.DELETE=1,wn.KEEP=1,wn.NUM_PTS_TO_CHECK=10;var On=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getCoordinates\",value:function(){return this._ptList.toArray(t.COORDINATE_ARRAY_TYPE)}},{key:\"setPrecisionModel\",value:function(t){this._precisionModel=t}},{key:\"addPt\",value:function(t){var e=new X(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)}},{key:\"reverse\",value:function(){}},{key:\"addPts\",value:function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var i=t.length-1;i>=0;i--)this.addPt(t[i])}},{key:\"isRedundant\",value:function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance}},{key:\"toString\",value:function(){return(new ae).createLineString(this.getCoordinates()).toString()}},{key:\"closeRing\",value:function(){if(this._ptList.size()<1)return null;var t=new X(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)}},{key:\"setMinimumVertexDistance\",value:function(t){this._minimimVertexDistance=t}}],[{key:\"constructor_\",value:function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new yt}}])}();On.COORDINATE_ARRAY_TYPE=new Array(0).fill(null);var bn=function(){function t(){n(this,t)}return s(t,null,[{key:\"toDegrees\",value:function(t){return 180*t/Math.PI}},{key:\"normalize\",value:function(e){for(;e>Math.PI;)e-=t.PI_TIMES_2;for(;e<=-Math.PI;)e+=t.PI_TIMES_2;return e}},{key:\"angle\",value:function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}}},{key:\"isAcute\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0}},{key:\"isObtuse\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0}},{key:\"interiorAngle\",value:function(e,n,i){var r=t.angle(n,e),s=t.angle(n,i);return Math.abs(s-r)}},{key:\"normalizePositive\",value:function(e){if(e<0){for(;e<0;)e+=t.PI_TIMES_2;e>=t.PI_TIMES_2&&(e=0)}else{for(;e>=t.PI_TIMES_2;)e-=t.PI_TIMES_2;e<0&&(e=0)}return e}},{key:\"angleBetween\",value:function(e,n,i){var r=t.angle(n,e),s=t.angle(n,i);return t.diff(r,s)}},{key:\"diff\",value:function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n}},{key:\"toRadians\",value:function(t){return t*Math.PI/180}},{key:\"getTurn\",value:function(e,n){var i=Math.sin(n-e);return i>0?t.COUNTERCLOCKWISE:i<0?t.CLOCKWISE:t.NONE}},{key:\"angleBetweenOriented\",value:function(e,n,i){var r=t.angle(n,e),s=t.angle(n,i)-r;return s<=-Math.PI?s+t.PI_TIMES_2:s>Math.PI?s-t.PI_TIMES_2:s}}])}();bn.PI_TIMES_2=2*Math.PI,bn.PI_OVER_2=Math.PI/2,bn.PI_OVER_4=Math.PI/4,bn.COUNTERCLOCKWISE=ct.COUNTERCLOCKWISE,bn.CLOCKWISE=ct.CLOCKWISE,bn.NONE=ct.COLLINEAR;var Mn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"addNextSegment\",value:function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=ct.index(this._s0,this._s1,this._s2),i=n===ct.CLOCKWISE&&this._side===$.LEFT||n===ct.COUNTERCLOCKWISE&&this._side===$.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)}},{key:\"addLineEndCap\",value:function(t,e){var n=new In(t,e),i=new In;this.computeOffsetSegment(n,$.LEFT,this._distance,i);var r=new In;this.computeOffsetSegment(n,$.RIGHT,this._distance,r);var s=e.x-t.x,a=e.y-t.y,o=Math.atan2(a,s);switch(this._bufParams.getEndCapStyle()){case _.CAP_ROUND:this._segList.addPt(i.p1),this.addDirectedFillet(e,o+Math.PI/2,o-Math.PI/2,ct.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case _.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case _.CAP_SQUARE:var u=new X;u.x=Math.abs(this._distance)*Math.cos(o),u.y=Math.abs(this._distance)*Math.sin(o);var l=new X(i.p1.x+u.x,i.p1.y+u.y),h=new X(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(h)}}},{key:\"getCoordinates\",value:function(){return this._segList.getCoordinates()}},{key:\"addMitreJoin\",value:function(t,e,n,i){var r=pt.intersection(e.p0,e.p1,n.p0,n.p1);if(null!==r&&(i<=0?1:r.distance(t)/Math.abs(i))<=this._bufParams.getMitreLimit())return this._segList.addPt(r),null;this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())}},{key:\"addOutsideTurn\",value:function(e,n){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*t.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===_.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===_.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(n&&this._segList.addPt(this._offset0.p1),this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,e,this._distance),this._segList.addPt(this._offset1.p0))}},{key:\"createSquare\",value:function(t){this._segList.addPt(new X(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new X(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new X(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new X(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()}},{key:\"addSegments\",value:function(t,e){this._segList.addPts(t,e)}},{key:\"addFirstSegment\",value:function(){this._segList.addPt(this._offset1.p0)}},{key:\"addCornerFillet\",value:function(t,e,n,i,r){var s=e.x-t.x,a=e.y-t.y,o=Math.atan2(a,s),u=n.x-t.x,l=n.y-t.y,h=Math.atan2(l,u);i===ct.CLOCKWISE?o<=h&&(o+=2*Math.PI):o>=h&&(o-=2*Math.PI),this._segList.addPt(e),this.addDirectedFillet(t,o,h,i,r),this._segList.addPt(n)}},{key:\"addLastSegment\",value:function(){this._segList.addPt(this._offset1.p1)}},{key:\"initSideSegments\",value:function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)}},{key:\"addLimitedMitreJoin\",value:function(t,e,n,i){var r=this._seg0.p1,s=bn.angle(r,this._seg0.p0),a=bn.angleBetweenOriented(this._seg0.p0,r,this._seg1.p1)/2,o=bn.normalize(s+a),u=bn.normalize(o+Math.PI),l=i*n,h=n-l*Math.abs(Math.sin(a)),c=r.x+l*Math.cos(u),f=r.y+l*Math.sin(u),g=new X(c,f),v=new In(r,g),y=v.pointAlongOffset(1,h),d=v.pointAlongOffset(1,-h);this._side===$.LEFT?(this._segList.addPt(y),this._segList.addPt(d)):(this._segList.addPt(d),this._segList.addPt(y))}},{key:\"addDirectedFillet\",value:function(t,e,n,i,r){var s=i===ct.CLOCKWISE?-1:1,a=Math.abs(e-n),o=Math.trunc(a/this._filletAngleQuantum+.5);if(o<1)return null;for(var u=a/o,l=new X,h=0;h<o;h++){var c=e+s*h*u;l.x=t.x+r*Math.cos(c),l.y=t.y+r*Math.sin(c),this._segList.addPt(l)}}},{key:\"computeOffsetSegment\",value:function(t,e,n,i){var r=e===$.LEFT?1:-1,s=t.p1.x-t.p0.x,a=t.p1.y-t.p0.y,o=Math.sqrt(s*s+a*a),u=r*n*s/o,l=r*n*a/o;i.p0.x=t.p0.x-l,i.p0.y=t.p0.y+u,i.p1.x=t.p1.x-l,i.p1.y=t.p1.y+u}},{key:\"addInsideTurn\",value:function(e,n){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*t.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var i=new X((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i);var r=new X((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(r)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}}},{key:\"createCircle\",value:function(t){var e=new X(t.x+this._distance,t.y);this._segList.addPt(e),this.addDirectedFillet(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()}},{key:\"addBevelJoin\",value:function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)}},{key:\"init\",value:function(e){this._distance=e,this._maxCurveSegmentError=e*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new On,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(e*t.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)}},{key:\"addCollinear\",value:function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===_.JOIN_BEVEL||this._bufParams.getJoinStyle()===_.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,ct.CLOCKWISE,this._distance))}},{key:\"closeRing\",value:function(){this._segList.closeRing()}},{key:\"hasNarrowConcaveAngle\",value:function(){return this._hasNarrowConcaveAngle}}],[{key:\"constructor_\",value:function(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new In,this._seg1=new In,this._offset0=new In,this._offset1=new In,this._side=0,this._hasNarrowConcaveAngle=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=e,this._bufParams=n,this._li=new we,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===_.JOIN_ROUND&&(this._closingSegLengthFactor=t.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)}}])}();Mn.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,Mn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,Mn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,Mn.MAX_CLOSING_SEG_LEN_FACTOR=80;var An=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getOffsetCurve\",value:function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var s=r.getCoordinates();return n&&jt.reverse(s),s}},{key:\"computeSingleSidedBufferCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=wn.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],$.LEFT),n.addFirstSegment();for(var a=s-2;a>=0;a--)n.addNextSegment(r[a],!0)}else{n.addSegments(t,!1);var o=wn.simplify(t,i),u=o.length-1;n.initSideSegments(o[0],o[1],$.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(o[l],!0)}n.addLastSegment(),n.closeRing()}},{key:\"computeRingBufferCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);e===$.RIGHT&&(i=-i);var r=wn.simplify(t,i),s=r.length-1;n.initSideSegments(r[s-1],r[0],e);for(var a=1;a<=s;a++){var o=1!==a;n.addNextSegment(r[a],o)}n.closeRing()}},{key:\"computeLineBufferCurve\",value:function(t,e){var n=this.simplifyTolerance(this._distance),i=wn.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],$.LEFT);for(var s=2;s<=r;s++)e.addNextSegment(i[s],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var a=wn.simplify(t,-n),o=a.length-1;e.initSideSegments(a[o],a[o-1],$.LEFT);for(var u=o-2;u>=0;u--)e.addNextSegment(a[u],!0);e.addLastSegment(),e.addLineEndCap(a[1],a[0]),e.closeRing()}},{key:\"computePointCurve\",value:function(t,e){switch(this._bufParams.getEndCapStyle()){case _.CAP_ROUND:e.createCircle(t);break;case _.CAP_SQUARE:e.createSquare(t)}}},{key:\"getLineCurve\",value:function(t,e){if(this._distance=e,this.isLineOffsetEmpty(e))return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()}},{key:\"getBufferParameters\",value:function(){return this._bufParams}},{key:\"simplifyTolerance\",value:function(t){return t*this._bufParams.getSimplifyFactor()}},{key:\"getRingCurve\",value:function(e,n,i){if(this._distance=i,e.length<=2)return this.getLineCurve(e,i);if(0===i)return t.copyCoordinates(e);var r=this.getSegGen(i);return this.computeRingBufferCurve(e,n,r),r.getCoordinates()}},{key:\"computeOffsetCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=wn.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],$.LEFT),n.addFirstSegment();for(var a=s-2;a>=0;a--)n.addNextSegment(r[a],!0)}else{var o=wn.simplify(t,i),u=o.length-1;n.initSideSegments(o[0],o[1],$.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(o[l],!0)}n.addLastSegment()}},{key:\"isLineOffsetEmpty\",value:function(t){return 0===t||t<0&&!this._bufParams.isSingleSided()}},{key:\"getSegGen\",value:function(t){return new Mn(this._precisionModel,this._bufParams,t)}}],[{key:\"constructor_\",value:function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e}},{key:\"copyCoordinates\",value:function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new X(t[n]);return e}}])}(),Pn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"findStabbedSegments\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new yt,n=this._subgraphs.iterator();n.hasNext();){var i=n.next(),r=i.getEnvelope();t.y<r.getMinY()||t.y>r.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(rt(arguments[2],nt)&&arguments[0]instanceof X&&arguments[1]instanceof Ke)for(var s=arguments[0],a=arguments[1],o=arguments[2],u=a.getEdge().getCoordinates(),l=0;l<u.length-1;l++){if(this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse(),!(Math.max(this._seg.p0.x,this._seg.p1.x)<s.x||this._seg.isHorizontal()||s.y<this._seg.p0.y||s.y>this._seg.p1.y||ct.index(this._seg.p0,this._seg.p1,s)===ct.RIGHT)){var h=a.getDepth($.LEFT);this._seg.p0.equals(u[l])||(h=a.getDepth($.RIGHT));var c=new Dn(this._seg,h);o.add(c)}}else if(rt(arguments[2],nt)&&arguments[0]instanceof X&&rt(arguments[1],nt))for(var f=arguments[0],g=arguments[2],v=arguments[1].iterator();v.hasNext();){var y=v.next();y.isForward()&&this.findStabbedSegments(f,y,g)}}},{key:\"getDepth\",value:function(t){var e=this.findStabbedSegments(t);return 0===e.size()?0:an.min(e)._leftDepth}}],[{key:\"constructor_\",value:function(){this._subgraphs=null,this._seg=new In;var t=arguments[0];this._subgraphs=t}}])}(),Dn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"compareTo\",value:function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n||0!==(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)}},{key:\"compareX\",value:function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)}},{key:\"toString\",value:function(){return this._upwardSeg.toString()}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new In(t),this._leftDepth=e}}])}();Pn.DepthSegment=Dn;var Fn=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,null,[{key:\"constructor_\",value:function(){p.constructor_.call(this,\"Projective point not representable on the Cartesian plane.\")}}])}(p),Gn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getY\",value:function(){var t=this.y/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new Fn;return t}},{key:\"getX\",value:function(){var t=this.x/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new Fn;return t}},{key:\"getCoordinate\",value:function(){var t=new X;return t.x=this.getX(),t.y=this.getY(),t}}],[{key:\"constructor_\",value:function(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];this.x=n,this.y=i,this.w=1}else if(arguments[0]instanceof t&&arguments[1]instanceof t){var r=arguments[0],s=arguments[1];this.x=r.y*s.w-s.y*r.w,this.y=s.x*r.w-r.x*s.w,this.w=r.x*s.y-s.x*r.y}else if(arguments[0]instanceof X&&arguments[1]instanceof X){var a=arguments[0],o=arguments[1];this.x=a.y-o.y,this.y=o.x-a.x,this.w=a.x*o.y-o.x*a.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2];this.x=u,this.y=l,this.w=h}else if(4===arguments.length){var c=arguments[0],f=arguments[1],g=arguments[2],v=arguments[3],y=c.y-f.y,d=f.x-c.x,_=c.x*f.y-f.x*c.y,p=g.y-v.y,m=v.x-g.x,k=g.x*v.y-v.x*g.y;this.x=d*k-m*_,this.y=p*_-y*k,this.w=y*m-p*d}}}])}(),qn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"area\",value:function(){return t.area(this.p0,this.p1,this.p2)}},{key:\"signedArea\",value:function(){return t.signedArea(this.p0,this.p1,this.p2)}},{key:\"interpolateZ\",value:function(e){if(null===e)throw new m(\"Supplied point is null.\");return t.interpolateZ(e,this.p0,this.p1,this.p2)}},{key:\"longestSideLength\",value:function(){return t.longestSideLength(this.p0,this.p1,this.p2)}},{key:\"isAcute\",value:function(){return t.isAcute(this.p0,this.p1,this.p2)}},{key:\"circumcentre\",value:function(){return t.circumcentre(this.p0,this.p1,this.p2)}},{key:\"area3D\",value:function(){return t.area3D(this.p0,this.p1,this.p2)}},{key:\"centroid\",value:function(){return t.centroid(this.p0,this.p1,this.p2)}},{key:\"inCentre\",value:function(){return t.inCentre(this.p0,this.p1,this.p2)}}],[{key:\"constructor_\",value:function(){this.p0=null,this.p1=null,this.p2=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.p0=t,this.p1=e,this.p2=n}},{key:\"area\",value:function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)}},{key:\"signedArea\",value:function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2}},{key:\"det\",value:function(t,e,n,i){return t*i-e*n}},{key:\"interpolateZ\",value:function(t,e,n,i){var r=e.x,s=e.y,a=n.x-r,o=i.x-r,u=n.y-s,l=i.y-s,h=a*l-o*u,c=t.x-r,f=t.y-s,g=(l*c-o*f)/h,v=(-u*c+a*f)/h;return e.getZ()+g*(n.getZ()-e.getZ())+v*(i.getZ()-e.getZ())}},{key:\"longestSideLength\",value:function(t,e,n){var i=t.distance(e),r=e.distance(n),s=n.distance(t),a=i;return r>a&&(a=r),s>a&&(a=s),a}},{key:\"circumcentreDD\",value:function(t,e,n){var i=ut.valueOf(t.x).subtract(n.x),r=ut.valueOf(t.y).subtract(n.y),s=ut.valueOf(e.x).subtract(n.x),a=ut.valueOf(e.y).subtract(n.y),o=ut.determinant(i,r,s,a).multiply(2),u=i.sqr().add(r.sqr()),l=s.sqr().add(a.sqr()),h=ut.determinant(r,u,a,l),c=ut.determinant(i,u,s,l),f=ut.valueOf(n.x).subtract(h.divide(o)).doubleValue(),g=ut.valueOf(n.y).add(c.divide(o)).doubleValue();return new X(f,g)}},{key:\"isAcute\",value:function(t,e,n){return!!bn.isAcute(t,e,n)&&(!!bn.isAcute(e,n,t)&&!!bn.isAcute(n,t,e))}},{key:\"circumcentre\",value:function(e,n,i){var r=i.x,s=i.y,a=e.x-r,o=e.y-s,u=n.x-r,l=n.y-s,h=2*t.det(a,o,u,l),c=t.det(o,a*a+o*o,l,u*u+l*l),f=t.det(a,a*a+o*o,u,u*u+l*l);return new X(r-c/h,s+f/h)}},{key:\"perpendicularBisector\",value:function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new Gn(t.x+n/2,t.y+i/2,1),s=new Gn(t.x-i+n/2,t.y+n+i/2,1);return new Gn(r,s)}},{key:\"angleBisector\",value:function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),s=n.x-t.x,a=n.y-t.y;return new X(t.x+r*s,t.y+r*a)}},{key:\"area3D\",value:function(t,e,n){var i=e.x-t.x,r=e.y-t.y,s=e.getZ()-t.getZ(),a=n.x-t.x,o=n.y-t.y,u=n.getZ()-t.getZ(),l=r*u-s*o,h=s*a-i*u,c=i*o-r*a,f=l*l+h*h+c*c,g=Math.sqrt(f)/2;return g}},{key:\"centroid\",value:function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new X(i,r)}},{key:\"inCentre\",value:function(t,e,n){var i=e.distance(n),r=t.distance(n),s=t.distance(e),a=i+r+s,o=(i*t.x+r*e.x+s*n.x)/a,u=(i*t.y+r*e.y+s*n.y)/a;return new X(o,u)}}])}(),Yn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"addRingSide\",value:function(t,e,n,i,r){if(0===e&&t.length<Xt.MINIMUM_VALID_SIZE)return null;var s=i,a=r;t.length>=Xt.MINIMUM_VALID_SIZE&&ct.isCCW(t)&&(s=r,a=i,n=$.opposite(n));var o=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(o,s,a)}},{key:\"addRingBothSides\",value:function(t,e){this.addRingSide(t,e,$.LEFT,H.EXTERIOR,H.INTERIOR),this.addRingSide(t,e,$.RIGHT,H.INTERIOR,H.EXTERIOR)}},{key:\"addPoint\",value:function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,H.EXTERIOR,H.INTERIOR)}},{key:\"addPolygon\",value:function(t){var e=this._distance,n=$.LEFT;this._distance<0&&(e=-this._distance,n=$.RIGHT);var i=t.getExteriorRing(),r=jt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addRingSide(r,e,n,H.EXTERIOR,H.INTERIOR);for(var s=0;s<t.getNumInteriorRing();s++){var a=t.getInteriorRingN(s),o=jt.removeRepeatedPoints(a.getCoordinates());this._distance>0&&this.isErodedCompletely(a,-this._distance)||this.addRingSide(o,e,$.opposite(n),H.INTERIOR,H.EXTERIOR)}}},{key:\"isTriangleErodedCompletely\",value:function(t,e){var n=new qn(t[0],t[1],t[2]),i=n.inCentre();return xt.pointToSegment(i,n.p0,n.p1)<Math.abs(e)}},{key:\"addLineString\",value:function(t){if(this._curveBuilder.isLineOffsetEmpty(this._distance))return null;var e=jt.removeRepeatedPoints(t.getCoordinates());if(jt.isRing(e)&&!this._curveBuilder.getBufferParameters().isSingleSided())this.addRingBothSides(e,this._distance);else{var n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,H.EXTERIOR,H.INTERIOR)}}},{key:\"addCurve\",value:function(t,e,n){if(null===t||t.length<2)return null;var i=new xn(t,new Ae(0,H.BOUNDARY,e,n));this._curveList.add(i)}},{key:\"getCurves\",value:function(){return this.add(this._inputGeom),this._curveList}},{key:\"add\",value:function(t){if(t.isEmpty())return null;if(t instanceof Dt)this.addPolygon(t);else if(t instanceof wt)this.addLineString(t);else if(t instanceof bt)this.addPoint(t);else if(t instanceof zt)this.addCollection(t);else if(t instanceof se)this.addCollection(t);else if(t instanceof te)this.addCollection(t);else{if(!(t instanceof Yt))throw new W(t.getGeometryType());this.addCollection(t)}}},{key:\"isErodedCompletely\",value:function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r}},{key:\"addCollection\",value:function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}}}],[{key:\"constructor_\",value:function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new yt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n}}])}(),zn=function(){return s((function t(){n(this,t)}),[{key:\"locate\",value:function(t){}}])}(),Xn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"next\",value:function(){if(this._atStart)return this._atStart=!1,t.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new j;var e=this._parent.getGeometryN(this._index++);return e instanceof Yt?(this._subcollectionIterator=new t(e),this._subcollectionIterator.next()):e}},{key:\"remove\",value:function(){throw new W(this.getClass().getName())}},{key:\"hasNext\",value:function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}},{key:\"interfaces_\",get:function(){return[dn]}}],[{key:\"constructor_\",value:function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()}},{key:\"isAtomic\",value:function(t){return!(t instanceof Yt)}}])}(),Bn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"locate\",value:function(e){return t.locate(e,this._geom)}},{key:\"interfaces_\",get:function(){return[zn]}}],[{key:\"constructor_\",value:function(){this._geom=null;var t=arguments[0];this._geom=t}},{key:\"locatePointInPolygon\",value:function(e,n){if(n.isEmpty())return H.EXTERIOR;var i=n.getExteriorRing(),r=t.locatePointInRing(e,i);if(r!==H.INTERIOR)return r;for(var s=0;s<n.getNumInteriorRing();s++){var a=n.getInteriorRingN(s),o=t.locatePointInRing(e,a);if(o===H.BOUNDARY)return H.BOUNDARY;if(o===H.INTERIOR)return H.EXTERIOR}return H.INTERIOR}},{key:\"locatePointInRing\",value:function(t,e){return e.getEnvelopeInternal().intersects(t)?be.locateInRing(t,e.getCoordinates()):H.EXTERIOR}},{key:\"containsPointInPolygon\",value:function(e,n){return H.EXTERIOR!==t.locatePointInPolygon(e,n)}},{key:\"locateInGeometry\",value:function(e,n){if(n instanceof Dt)return t.locatePointInPolygon(e,n);if(n instanceof Yt)for(var i=new Xn(n);i.hasNext();){var r=i.next();if(r!==n){var s=t.locateInGeometry(e,r);if(s!==H.EXTERIOR)return s}}return H.EXTERIOR}},{key:\"isContained\",value:function(e,n){return H.EXTERIOR!==t.locate(e,n)}},{key:\"locate\",value:function(e,n){return n.isEmpty()?H.EXTERIOR:n.getEnvelopeInternal().intersects(e)?t.locateInGeometry(e,n):H.EXTERIOR}}])}(),Un=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getNextCW\",value:function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)}},{key:\"propagateSideLabels\",value:function(t){for(var e=H.NONE,n=this.iterator();n.hasNext();){var i=n.next().getLabel();i.isArea(t)&&i.getLocation(t,$.LEFT)!==H.NONE&&(e=i.getLocation(t,$.LEFT))}if(e===H.NONE)return null;for(var r=e,s=this.iterator();s.hasNext();){var a=s.next(),o=a.getLabel();if(o.getLocation(t,$.ON)===H.NONE&&o.setLocation(t,$.ON,r),o.isArea(t)){var u=o.getLocation(t,$.LEFT),l=o.getLocation(t,$.RIGHT);if(l!==H.NONE){if(l!==r)throw new gt(\"side location conflict\",a.getCoordinate());u===H.NONE&&G.shouldNeverReachHere(\"found single null side (at \"+a.getCoordinate()+\")\"),r=u}else G.isTrue(o.getLocation(t,$.LEFT)===H.NONE,\"found single null side\"),o.setLocation(t,$.RIGHT,r),o.setLocation(t,$.LEFT,r)}}}},{key:\"getCoordinate\",value:function(){var t=this.iterator();return t.hasNext()?t.next().getCoordinate():null}},{key:\"print\",value:function(t){mt.out.println(\"EdgeEndStar:   \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"isAreaLabelsConsistent\",value:function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)}},{key:\"checkAreaLabelsConsistent\",value:function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,i=e.get(n).getLabel().getLocation(t,$.LEFT);G.isTrue(i!==H.NONE,\"Found unlabelled area edge\");for(var r=i,s=this.iterator();s.hasNext();){var a=s.next().getLabel();G.isTrue(a.isArea(t),\"Found non-area edge\");var o=a.getLocation(t,$.LEFT),u=a.getLocation(t,$.RIGHT);if(o===u)return!1;if(u!==r)return!1;r=o}return!0}},{key:\"findIndex\",value:function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++){if(this._edgeList.get(e)===t)return e}return-1}},{key:\"iterator\",value:function(){return this.getEdges().iterator()}},{key:\"getEdges\",value:function(){return null===this._edgeList&&(this._edgeList=new yt(this._edgeMap.values())),this._edgeList}},{key:\"getLocation\",value:function(t,e,n){return this._ptInAreaLocation[t]===H.NONE&&(this._ptInAreaLocation[t]=Bn.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]}},{key:\"toString\",value:function(){var t=new st;t.append(\"EdgeEndStar:   \"+this.getCoordinate()),t.append(\"\\n\");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append(\"\\n\")}return t.toString()}},{key:\"computeEdgeEndLabels\",value:function(t){for(var e=this.iterator();e.hasNext();){e.next().computeLabel(t)}}},{key:\"computeLabelling\",value:function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var i=n.next().getLabel(),r=0;r<2;r++)i.isLine(r)&&i.getLocation(r)===H.BOUNDARY&&(e[r]=!0);for(var s=this.iterator();s.hasNext();)for(var a=s.next(),o=a.getLabel(),u=0;u<2;u++)if(o.isAnyNull(u)){var l=H.NONE;if(e[u])l=H.EXTERIOR;else{var h=a.getCoordinate();l=this.getLocation(u,h,t)}o.setAllLocationsIfNull(u,l)}}},{key:\"getDegree\",value:function(){return this._edgeMap.size()}},{key:\"insertEdgeEnd\",value:function(t,e){this._edgeMap.put(t,e),this._edgeList=null}}],[{key:\"constructor_\",value:function(){this._edgeMap=new He,this._edgeList=null,this._ptInAreaLocation=[H.NONE,H.NONE]}}])}(),Vn=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"linkResultDirectedEdges\",value:function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,i=0;i<this._resultAreaEdgeList.size();i++){var r=this._resultAreaEdgeList.get(i),s=r.getSym();if(r.getLabel().isArea())switch(null===t&&r.isInResult()&&(t=r),n){case this._SCANNING_FOR_INCOMING:if(!s.isInResult())continue;e=s,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!r.isInResult())continue;e.setNext(r),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new gt(\"no outgoing dirEdge found\",this.getCoordinate());G.isTrue(t.isInResult(),\"unable to link last incoming dirEdge\"),e.setNext(t)}}},{key:\"insert\",value:function(t){var e=t;this.insertEdgeEnd(e,e)}},{key:\"getRightmostEdge\",value:function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),s=i.getQuadrant();return je.isNorthern(r)&&je.isNorthern(s)?n:je.isNorthern(r)||je.isNorthern(s)?0!==n.getDy()?n:0!==i.getDy()?i:(G.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null):i}},{key:\"print\",value:function(t){mt.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}}},{key:\"getResultAreaEdges\",value:function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new yt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList}},{key:\"updateLabelling\",value:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}}},{key:\"linkAllDirectedEdges\",value:function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)}},{key:\"computeDepths\",value:function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth($.LEFT),i=t.getDepth($.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n);if(this.computeDepths(0,e,r)!==i)throw new gt(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var s=arguments[1],a=arguments[2],o=arguments[0];o<s;o++){var u=this._edgeList.get(o);u.setEdgeDepths($.RIGHT,a),a=u.getDepth($.LEFT)}return a}}},{key:\"mergeSymLabels\",value:function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}}},{key:\"linkMinimalDirectedEdges\",value:function(t){for(var e=null,n=null,i=this._SCANNING_FOR_INCOMING,r=this._resultAreaEdgeList.size()-1;r>=0;r--){var s=this._resultAreaEdgeList.get(r),a=s.getSym();switch(null===e&&s.getEdgeRing()===t&&(e=s),i){case this._SCANNING_FOR_INCOMING:if(a.getEdgeRing()!==t)continue;n=a,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(s.getEdgeRing()!==t)continue;n.setNextMin(s),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(G.isTrue(null!==e,\"found null for first outgoing dirEdge\"),G.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))}},{key:\"getOutgoingDegree\",value:function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){e.next().isInResult()&&t++}return t}if(1===arguments.length){for(var n=arguments[0],i=0,r=this.iterator();r.hasNext();){r.next().getEdgeRing()===n&&i++}return i}}},{key:\"getLabel\",value:function(){return this._label}},{key:\"findCoveredLineEdges\",value:function(){for(var t=H.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=H.INTERIOR;break}if(i.isInResult()){t=H.EXTERIOR;break}}}if(t===H.NONE)return null;for(var r=t,s=this.iterator();s.hasNext();){var a=s.next(),o=a.getSym();a.isLineEdge()?a.getEdge().setCovered(r===H.INTERIOR):(a.isInResult()&&(r=H.EXTERIOR),o.isInResult()&&(r=H.INTERIOR))}}},{key:\"computeLabelling\",value:function(t){f(i,\"computeLabelling\",this,1).call(this,t),this._label=new Ae(H.NONE);for(var e=this.iterator();e.hasNext();)for(var n=e.next().getEdge().getLabel(),r=0;r<2;r++){var s=n.getLocation(r);s!==H.INTERIOR&&s!==H.BOUNDARY||this._label.setLocation(r,H.INTERIOR)}}}],[{key:\"constructor_\",value:function(){this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}}])}(Un),Hn=function(t){function i(){return n(this,i),e(this,i)}return l(i,t),s(i,[{key:\"createNode\",value:function(t){return new qe(t,new Vn)}}])}(Je),Zn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"compareTo\",value:function(e){var n=e;return t.compareOriented(this._pts,this._orientation,n._pts,n._orientation)}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._pts=null,this._orientation=null;var e=arguments[0];this._pts=e,this._orientation=t.orientation(e)}},{key:\"orientation\",value:function(t){return 1===jt.increasingDirection(t)}},{key:\"compareOriented\",value:function(t,e,n,i){for(var r=e?1:-1,s=i?1:-1,a=e?t.length:-1,o=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var h=t[u].compareTo(n[l]);if(0!==h)return h;var c=(u+=r)===a,f=(l+=s)===o;if(c&&!f)return-1;if(!c&&f)return 1;if(c&&f)return 0}}}])}(),jn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"print\",value:function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r<i.length;r++)r>0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\")  \")}},{key:\"addAll\",value:function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())}},{key:\"findEdgeIndex\",value:function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1}},{key:\"iterator\",value:function(){return this._edges.iterator()}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"get\",value:function(t){return this._edges.get(t)}},{key:\"findEqualEdge\",value:function(t){var e=new Zn(t.getCoordinates());return this._ocaMap.get(e)}},{key:\"add\",value:function(t){this._edges.add(t);var e=new Zn(t.getCoordinates());this._ocaMap.put(e,t)}}],[{key:\"constructor_\",value:function(){this._edges=new yt,this._ocaMap=new He}}])}(),Wn=function(){return s((function t(){n(this,t)}),[{key:\"processIntersections\",value:function(t,e,n,i){}},{key:\"isDone\",value:function(){}}])}(),Kn=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"isTrivialIntersection\",value:function(e,n,i,r){if(e===i&&1===this._li.getIntersectionNum()){if(t.isAdjacentSegments(n,r))return!0;if(e.isClosed()){var s=e.size()-1;if(0===n&&r===s||0===r&&n===s)return!0}}return!1}},{key:\"getProperIntersectionPoint\",value:function(){return this._properIntersectionPoint}},{key:\"hasProperInteriorIntersection\",value:function(){return this._hasProperInterior}},{key:\"getLineIntersector\",value:function(){return this._li}},{key:\"hasProperIntersection\",value:function(){return this._hasProper}},{key:\"processIntersections\",value:function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],a=n.getCoordinates()[i],o=n.getCoordinates()[i+1];this._li.computeIntersection(r,s,a,o),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))}},{key:\"hasIntersection\",value:function(){return this._hasIntersection}},{key:\"isDone\",value:function(){return!1}},{key:\"hasInteriorIntersection\",value:function(){return this._hasInterior}},{key:\"interfaces_\",get:function(){return[Wn]}}],[{key:\"constructor_\",value:function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t}},{key:\"isAdjacentSegments\",value:function(t,e){return 1===Math.abs(t-e)}}])}(),Jn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getSegmentIndex\",value:function(){return this.segmentIndex}},{key:\"getCoordinate\",value:function(){return this.coord}},{key:\"print\",value:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex),t.println(\" dist = \"+this.dist)}},{key:\"compareTo\",value:function(t){var e=t;return this.compare(e.segmentIndex,e.dist)}},{key:\"isEndPoint\",value:function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t}},{key:\"toString\",value:function(){return this.coord+\" seg # = \"+this.segmentIndex+\" dist = \"+this.dist}},{key:\"getDistance\",value:function(){return this.dist}},{key:\"compare\",value:function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new X(t),this.segmentIndex=e,this.dist=n}}])}(),Qn=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"print\",value:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"iterator\",value:function(){return this._nodeMap.values().iterator()}},{key:\"addSplitEdges\",value:function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}}},{key:\"addEndpoints\",value:function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)}},{key:\"createSplitEdge\",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),a=0;s[a++]=new X(t.coord);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)s[a++]=this.edge.pts[o];return r&&(s[a]=e.coord),new ri(s,new Ae(this.edge._label))}},{key:\"add\",value:function(t,e,n){var i=new Jn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)}},{key:\"isIntersection\",value:function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1}}],[{key:\"constructor_\",value:function(){this._nodeMap=new He,this.edge=null;var t=arguments[0];this.edge=t}}])}(),$n=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"isIntersects\",value:function(){return!this.isDisjoint()}},{key:\"isCovers\",value:function(){return(t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])||t.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||t.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||t.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY]))&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE}},{key:\"isCoveredBy\",value:function(){return(t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])||t.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||t.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||t.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY]))&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE}},{key:\"set\",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),i=e%3;this._matrix[n][i]=Lt.toDimensionValue(t.charAt(e))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this._matrix[r][s]=a}}},{key:\"isContains\",value:function(){return t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE}},{key:\"setAtLeast\",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),i=e%3;this.setAtLeast(n,i,Lt.toDimensionValue(t.charAt(e)))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this._matrix[r][s]<a&&(this._matrix[r][s]=a)}}},{key:\"setAtLeastIfValid\",value:function(t,e,n){t>=0&&e>=0&&this.setAtLeast(t,e,n)}},{key:\"isWithin\",value:function(){return t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE}},{key:\"isTouches\",value:function(e,n){return e>n?this.isTouches(n,e):(e===Lt.A&&n===Lt.A||e===Lt.L&&n===Lt.L||e===Lt.L&&n===Lt.A||e===Lt.P&&n===Lt.A||e===Lt.P&&n===Lt.L)&&(this._matrix[H.INTERIOR][H.INTERIOR]===Lt.FALSE&&(t.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||t.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||t.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY])))}},{key:\"isOverlaps\",value:function(e,n){return e===Lt.P&&n===Lt.P||e===Lt.A&&n===Lt.A?t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&t.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR])&&t.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]):e===Lt.L&&n===Lt.L&&(1===this._matrix[H.INTERIOR][H.INTERIOR]&&t.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR])&&t.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]))}},{key:\"isEquals\",value:function(e,n){return e===n&&(t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE)}},{key:\"toString\",value:function(){for(var t=new Jt(\"123456789\"),e=0;e<3;e++)for(var n=0;n<3;n++)t.setCharAt(3*e+n,Lt.toDimensionSymbol(this._matrix[e][n]));return t.toString()}},{key:\"setAll\",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this._matrix[e][n]=t}},{key:\"get\",value:function(t,e){return this._matrix[t][e]}},{key:\"transpose\",value:function(){var t=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=t,t=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=t,t=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=t,this}},{key:\"matches\",value:function(e){if(9!==e.length)throw new m(\"Should be length 9: \"+e);for(var n=0;n<3;n++)for(var i=0;i<3;i++)if(!t.matches(this._matrix[n][i],e.charAt(3*n+i)))return!1;return!0}},{key:\"add\",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this.setAtLeast(e,n,t.get(e,n))}},{key:\"isDisjoint\",value:function(){return this._matrix[H.INTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.INTERIOR][H.BOUNDARY]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.INTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.BOUNDARY]===Lt.FALSE}},{key:\"isCrosses\",value:function(e,n){return e===Lt.P&&n===Lt.L||e===Lt.P&&n===Lt.A||e===Lt.L&&n===Lt.A?t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&t.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR]):e===Lt.L&&n===Lt.P||e===Lt.A&&n===Lt.P||e===Lt.A&&n===Lt.L?t.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&t.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]):e===Lt.L&&n===Lt.L&&0===this._matrix[H.INTERIOR][H.INTERIOR]}},{key:\"interfaces_\",get:function(){return[I]}}],[{key:\"constructor_\",value:function(){if(this._matrix=null,0===arguments.length)this._matrix=Array(3).fill().map((function(){return Array(3)})),this.setAll(Lt.FALSE);else if(1===arguments.length)if(\"string\"==typeof arguments[0]){var e=arguments[0];t.constructor_.call(this),this.set(e)}else if(arguments[0]instanceof t){var n=arguments[0];t.constructor_.call(this),this._matrix[H.INTERIOR][H.INTERIOR]=n._matrix[H.INTERIOR][H.INTERIOR],this._matrix[H.INTERIOR][H.BOUNDARY]=n._matrix[H.INTERIOR][H.BOUNDARY],this._matrix[H.INTERIOR][H.EXTERIOR]=n._matrix[H.INTERIOR][H.EXTERIOR],this._matrix[H.BOUNDARY][H.INTERIOR]=n._matrix[H.BOUNDARY][H.INTERIOR],this._matrix[H.BOUNDARY][H.BOUNDARY]=n._matrix[H.BOUNDARY][H.BOUNDARY],this._matrix[H.BOUNDARY][H.EXTERIOR]=n._matrix[H.BOUNDARY][H.EXTERIOR],this._matrix[H.EXTERIOR][H.INTERIOR]=n._matrix[H.EXTERIOR][H.INTERIOR],this._matrix[H.EXTERIOR][H.BOUNDARY]=n._matrix[H.EXTERIOR][H.BOUNDARY],this._matrix[H.EXTERIOR][H.EXTERIOR]=n._matrix[H.EXTERIOR][H.EXTERIOR]}}},{key:\"matches\",value:function(){if(Number.isInteger(arguments[0])&&\"string\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];return n===Lt.SYM_DONTCARE||(n===Lt.SYM_TRUE&&(e>=0||e===Lt.TRUE)||(n===Lt.SYM_FALSE&&e===Lt.FALSE||(n===Lt.SYM_P&&e===Lt.P||(n===Lt.SYM_L&&e===Lt.L||n===Lt.SYM_A&&e===Lt.A))))}if(\"string\"==typeof arguments[0]&&\"string\"==typeof arguments[1]){var i=arguments[1];return new t(arguments[0]).matches(i)}}},{key:\"isTrue\",value:function(t){return t>=0||t===Lt.TRUE}}])}(),ti=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"size\",value:function(){return this._size}},{key:\"addAll\",value:function(t){return null===t||0===t.length?null:(this.ensureCapacity(this._size+t.length),mt.arraycopy(t,0,this._data,this._size,t.length),void(this._size+=t.length))}},{key:\"ensureCapacity\",value:function(t){if(t<=this._data.length)return null;var e=Math.max(t,2*this._data.length);this._data=At.copyOf(this._data,e)}},{key:\"toArray\",value:function(){var t=new Array(this._size).fill(null);return mt.arraycopy(this._data,0,t,0,this._size),t}},{key:\"add\",value:function(t){this.ensureCapacity(this._size+1),this._data[this._size]=t,++this._size}}],[{key:\"constructor_\",value:function(){if(this._data=null,this._size=0,0===arguments.length)t.constructor_.call(this,10);else if(1===arguments.length){var e=arguments[0];this._data=new Array(e).fill(null)}}}])}(),ei=function(){function t(){n(this,t)}return s(t,[{key:\"getChainStartIndices\",value:function(t){var e=0,n=new ti(Math.trunc(t.length/2));n.add(e);do{var i=this.findChainEnd(t,e);n.add(i),e=i}while(e<t.length-1);return n.toArray()}},{key:\"findChainEnd\",value:function(t,e){for(var n=je.quadrant(t[e],t[e+1]),i=e+1;i<t.length;){if(je.quadrant(t[i-1],t[i])!==n)break;i++}return i-1}},{key:\"OLDgetChainStartIndices\",value:function(e){var n=0,i=new yt;i.add(n);do{var r=this.findChainEnd(e,n);i.add(r),n=r}while(n<e.length-1);return t.toIntArray(i)}}],[{key:\"toIntArray\",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e}}])}(),ni=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"getCoordinates\",value:function(){return this.pts}},{key:\"getMaxX\",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n}},{key:\"getMinX\",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n}},{key:\"computeIntersectsForChain\",value:function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3],u=arguments[4],l=arguments[5];if(s-r==1&&u-o==1)return l.addIntersections(this.e,r,a.e,o),null;if(!this.overlaps(r,s,a,o,u))return null;var h=Math.trunc((r+s)/2),c=Math.trunc((o+u)/2);r<h&&(o<c&&this.computeIntersectsForChain(r,h,a,o,c,l),c<u&&this.computeIntersectsForChain(r,h,a,c,u,l)),h<s&&(o<c&&this.computeIntersectsForChain(h,s,a,o,c,l),c<u&&this.computeIntersectsForChain(h,s,a,c,u,l))}}},{key:\"overlaps\",value:function(t,e,n,i,r){return U.intersects(this.pts[t],this.pts[e],n.pts[i],n.pts[r])}},{key:\"getStartIndexes\",value:function(){return this.startIndex}},{key:\"computeIntersects\",value:function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var i=0;i<t.startIndex.length-1;i++)this.computeIntersectsForChain(n,t,i,e)}}],[{key:\"constructor_\",value:function(){this.e=null,this.pts=null,this.startIndex=null;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new ei;this.startIndex=e.getChainStartIndices(this.pts)}}])}(),ii=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"getDepth\",value:function(t,e){return this._depth[t][e]}},{key:\"setDepth\",value:function(t,e,n){this._depth[t][e]=n}},{key:\"isNull\",value:function(){if(0===arguments.length){for(var e=0;e<2;e++)for(var n=0;n<3;n++)if(this._depth[e][n]!==t.NULL_VALUE)return!1;return!0}if(1===arguments.length){var i=arguments[0];return this._depth[i][1]===t.NULL_VALUE}if(2===arguments.length){var r=arguments[0],s=arguments[1];return this._depth[r][s]===t.NULL_VALUE}}},{key:\"normalize\",value:function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var i=0;this._depth[t][n]>e&&(i=1),this._depth[t][n]=i}}}},{key:\"getDelta\",value:function(t){return this._depth[t][$.RIGHT]-this._depth[t][$.LEFT]}},{key:\"getLocation\",value:function(t,e){return this._depth[t][e]<=0?H.EXTERIOR:H.INTERIOR}},{key:\"toString\",value:function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]}},{key:\"add\",value:function(){if(1===arguments.length)for(var e=arguments[0],n=0;n<2;n++)for(var i=1;i<3;i++){var r=e.getLocation(n,i);r!==H.EXTERIOR&&r!==H.INTERIOR||(this.isNull(n,i)?this._depth[n][i]=t.depthAtLocation(r):this._depth[n][i]+=t.depthAtLocation(r))}else if(3===arguments.length){var s=arguments[0],a=arguments[1];arguments[2]===H.INTERIOR&&this._depth[s][a]++}}}],[{key:\"constructor_\",value:function(){this._depth=Array(2).fill().map((function(){return Array(3)}));for(var e=0;e<2;e++)for(var n=0;n<3;n++)this._depth[e][n]=t.NULL_VALUE}},{key:\"depthAtLocation\",value:function(e){return e===H.EXTERIOR?0:e===H.INTERIOR?1:t.NULL_VALUE}}])}();ii.NULL_VALUE=-1;var ri=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"getDepth\",value:function(){return this._depth}},{key:\"getCollapsedEdge\",value:function(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new i(t,Ae.toLineLabel(this._label))}},{key:\"isIsolated\",value:function(){return this._isIsolated}},{key:\"getCoordinates\",value:function(){return this.pts}},{key:\"setIsolated\",value:function(t){this._isIsolated=t}},{key:\"setName\",value:function(t){this._name=t}},{key:\"equals\",value:function(t){if(!(t instanceof i))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var n=!0,r=!0,s=this.pts.length,a=0;a<this.pts.length;a++)if(this.pts[a].equals2D(e.pts[a])||(n=!1),this.pts[a].equals2D(e.pts[--s])||(r=!1),!n&&!r)return!1;return!0}},{key:\"getCoordinate\",value:function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}}},{key:\"print\",value:function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\")  \"+this._label+\" \"+this._depthDelta)}},{key:\"computeIM\",value:function(t){i.updateIM(this._label,t)}},{key:\"isCollapsed\",value:function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))}},{key:\"isClosed\",value:function(){return this.pts[0].equals(this.pts[this.pts.length-1])}},{key:\"getMaximumSegmentIndex\",value:function(){return this.pts.length-1}},{key:\"getDepthDelta\",value:function(){return this._depthDelta}},{key:\"getNumPoints\",value:function(){return this.pts.length}},{key:\"printReverse\",value:function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")}},{key:\"getMonotoneChainEdge\",value:function(){return null===this._mce&&(this._mce=new ni(this)),this._mce}},{key:\"getEnvelope\",value:function(){if(null===this._env){this._env=new U;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env}},{key:\"addIntersection\",value:function(t,e,n,i){var r=new X(t.getIntersection(i)),s=e,a=t.getEdgeDistance(n,i),o=s+1;if(o<this.pts.length){var u=this.pts[o];r.equals2D(u)&&(s=o,a=0)}this.eiList.add(r,s,a)}},{key:\"toString\",value:function(){var t=new Jt;t.append(\"edge \"+this._name+\": \"),t.append(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\")  \"+this._label+\" \"+this._depthDelta),t.toString()}},{key:\"isPointwiseEqual\",value:function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0}},{key:\"setDepthDelta\",value:function(t){this._depthDelta=t}},{key:\"getEdgeIntersectionList\",value:function(){return this.eiList}},{key:\"addIntersections\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)}}],[{key:\"constructor_\",value:function(){if(this.pts=null,this._env=null,this.eiList=new Qn(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ii,this._depthDelta=0,1===arguments.length){var t=arguments[0];i.constructor_.call(this,t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.pts=e,this._label=n}}},{key:\"updateIM\",value:function(){if(!(2===arguments.length&&arguments[1]instanceof $n&&arguments[0]instanceof Ae))return f(i,\"updateIM\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];e.setAtLeastIfValid(t.getLocation(0,$.ON),t.getLocation(1,$.ON),1),t.isArea()&&(e.setAtLeastIfValid(t.getLocation(0,$.LEFT),t.getLocation(1,$.LEFT),2),e.setAtLeastIfValid(t.getLocation(0,$.RIGHT),t.getLocation(1,$.RIGHT),2))}}])}(Ge),si=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"setWorkingPrecisionModel\",value:function(t){this._workingPrecisionModel=t}},{key:\"insertUniqueEdge\",value:function(e){var n=this._edgeList.findEqualEdge(e);if(null!==n){var i=n.getLabel(),r=e.getLabel();n.isPointwiseEqual(e)||(r=new Ae(e.getLabel())).flip(),i.merge(r);var s=t.depthDelta(r),a=n.getDepthDelta()+s;n.setDepthDelta(a)}else this._edgeList.add(e),e.setDepthDelta(t.depthDelta(e.getLabel()))}},{key:\"buildSubgraphs\",value:function(t,e){for(var n=new yt,i=t.iterator();i.hasNext();){var r=i.next(),s=r.getRightmostCoordinate(),a=new Pn(n).getDepth(s);r.computeDepth(a),r.findResultEdges(),n.add(r),e.add(r.getDirectedEdges(),r.getNodes())}}},{key:\"createSubgraphs\",value:function(t){for(var e=new yt,n=t.getNodes().iterator();n.hasNext();){var i=n.next();if(!i.isVisited()){var r=new _t;r.create(i),e.add(r)}}return an.sort(e,an.reverseOrder()),e}},{key:\"createEmptyResultGeometry\",value:function(){return this._geomFact.createPolygon()}},{key:\"getNoder\",value:function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new Cn,n=new we;return n.setPrecisionModel(t),e.setSegmentIntersector(new Kn(n)),e}},{key:\"buffer\",value:function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var i=new An(n,this._bufParams),r=new Yn(t,e,i).getCurves();if(r.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(r,n),this._graph=new Qe(new Hn),this._graph.addEdges(this._edgeList.getEdges());var s=this.createSubgraphs(this._graph),a=new $e(this._geomFact);this.buildSubgraphs(s,a);var o=a.getPolygons();return o.size()<=0?this.createEmptyResultGeometry():this._geomFact.buildGeometry(o)}},{key:\"computeNodedEdges\",value:function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var i=n.getNodedSubstrings().iterator();i.hasNext();){var r=i.next(),s=r.getCoordinates();if(2!==s.length||!s[0].equals2D(s[1])){var a=r.getData(),o=new ri(r.getCoordinates(),new Ae(a));this.insertUniqueEdge(o)}}}},{key:\"setNoder\",value:function(t){this._workingNoder=t}}],[{key:\"constructor_\",value:function(){this._bufParams=null,this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new jn;var t=arguments[0];this._bufParams=t}},{key:\"depthDelta\",value:function(t){var e=t.getLocation(0,$.LEFT),n=t.getLocation(0,$.RIGHT);return e===H.INTERIOR&&n===H.EXTERIOR?1:e===H.EXTERIOR&&n===H.INTERIOR?-1:0}},{key:\"convertSegStrings\",value:function(t){for(var e=new ae,n=new yt;t.hasNext();){var i=t.next(),r=e.createLineString(i.getCoordinates());n.add(r)}return e.buildGeometry(n)}}])}(),ai=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"rescale\",value:function(){if(rt(arguments[0],Z))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.rescale(e.getCoordinates())}else if(arguments[0]instanceof Array){for(var n=arguments[0],i=0;i<n.length;i++)n[i].x=n[i].x/this._scaleFactor+this._offsetX,n[i].y=n[i].y/this._scaleFactor+this._offsetY;2===n.length&&n[0].equals2D(n[1])&&mt.out.println(n)}}},{key:\"scale\",value:function(){if(rt(arguments[0],Z)){for(var t=arguments[0],e=new yt(t.size()),n=t.iterator();n.hasNext();){var i=n.next();e.add(new xn(this.scale(i.getCoordinates()),i.getData()))}return e}if(arguments[0]instanceof Array){for(var r=arguments[0],s=new Array(r.length).fill(null),a=0;a<r.length;a++)s[a]=new X(Math.round((r[a].x-this._offsetX)*this._scaleFactor),Math.round((r[a].y-this._offsetY)*this._scaleFactor),r[a].getZ());return jt.removeRepeatedPoints(s)}}},{key:\"isIntegerPrecision\",value:function(){return 1===this._scaleFactor}},{key:\"getNodedSubstrings\",value:function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t}},{key:\"computeNodes\",value:function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)}},{key:\"interfaces_\",get:function(){return[Sn]}}],[{key:\"constructor_\",value:function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var e=arguments[0],n=arguments[1];t.constructor_.call(this,e,n,0,0)}else if(4===arguments.length){var i=arguments[0],r=arguments[1];this._noder=i,this._scaleFactor=r,this._isScaled=!this.isIntegerPrecision()}}}])}(),oi=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"checkEndPtVertexIntersections\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next().getCoordinates();this.checkEndPtVertexIntersections(e[0],this._segStrings),this.checkEndPtVertexIntersections(e[e.length-1],this._segStrings)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1].iterator();i.hasNext();)for(var r=i.next().getCoordinates(),s=1;s<r.length-1;s++)if(r[s].equals(n))throw new D(\"found endpt/interior pt intersection at index \"+s+\" :pt \"+n)}},{key:\"checkInteriorIntersections\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var i=n.next();this.checkInteriorIntersections(e,i)}else if(2===arguments.length)for(var r=arguments[0],s=arguments[1],a=r.getCoordinates(),o=s.getCoordinates(),u=0;u<a.length-1;u++)for(var l=0;l<o.length-1;l++)this.checkInteriorIntersections(r,u,s,l);else if(4===arguments.length){var h=arguments[0],c=arguments[1],f=arguments[2],g=arguments[3];if(h===f&&c===g)return null;var v=h.getCoordinates()[c],y=h.getCoordinates()[c+1],d=f.getCoordinates()[g],_=f.getCoordinates()[g+1];if(this._li.computeIntersection(v,y,d,_),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,v,y)||this.hasInteriorIntersection(this._li,d,_)))throw new D(\"found non-noded intersection at \"+v+\"-\"+y+\" and \"+d+\"-\"+_)}}},{key:\"checkValid\",value:function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()}},{key:\"checkCollapses\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0].getCoordinates(),i=0;i<n.length-2;i++)this.checkCollapse(n[i],n[i+1],n[i+2])}},{key:\"hasInteriorIntersection\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++){var r=t.getIntersection(i);if(!r.equals(e)&&!r.equals(n))return!0}return!1}},{key:\"checkCollapse\",value:function(e,n,i){if(e.equals(i))throw new D(\"found non-noded collapse at \"+t.fact.createLineString([e,n,i]))}}],[{key:\"constructor_\",value:function(){this._li=new we,this._segStrings=null;var t=arguments[0];this._segStrings=t}}])}();oi.fact=new ae;var ui=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"intersectsScaled\",value:function(t,e){var n=Math.min(t.x,e.x),i=Math.max(t.x,e.x),r=Math.min(t.y,e.y),s=Math.max(t.y,e.y),a=this._maxx<n||this._minx>i||this._maxy<r||this._miny>s;if(a)return!1;var o=this.intersectsToleranceSquare(t,e);return G.isTrue(!(a&&o),\"Found bad envelope test\"),o}},{key:\"initCorners\",value:function(t){var e=.5;this._minx=t.x-e,this._maxx=t.x+e,this._miny=t.y-e,this._maxy=t.y+e,this._corner[0]=new X(this._maxx,this._maxy),this._corner[1]=new X(this._minx,this._maxy),this._corner[2]=new X(this._minx,this._miny),this._corner[3]=new X(this._maxx,this._miny)}},{key:\"intersects\",value:function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))}},{key:\"scale\",value:function(t){return Math.round(t*this._scaleFactor)}},{key:\"getCoordinate\",value:function(){return this._originalPt}},{key:\"copyScaled\",value:function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)}},{key:\"getSafeEnvelope\",value:function(){if(null===this._safeEnv){var e=t.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new U(this._originalPt.x-e,this._originalPt.x+e,this._originalPt.y-e,this._originalPt.y+e)}return this._safeEnv}},{key:\"intersectsPixelClosure\",value:function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))}},{key:\"intersectsToleranceSquare\",value:function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))}},{key:\"addSnappedNode\",value:function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)}}],[{key:\"constructor_\",value:function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new m(\"Scale factor must be non-zero\");1!==e&&(this._pt=new X(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new X,this._p1Scaled=new X),this.initCorners(this._pt)}}])}();ui.SAFE_ENV_EXPANSION_FACTOR=.75;var li=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"select\",value:function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[1];arguments[0].getLineSegment(t,this.selectedSegment),this.select(this.selectedSegment)}}}],[{key:\"constructor_\",value:function(){this.selectedSegment=new In}}])}(),hi=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"snap\",value:function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],i=arguments[1],r=arguments[2],a=e.getSafeEnvelope(),o=new ci(e,i,r);return this._index.query(a,new(function(){return s((function t(){n(this,t)}),[{key:\"interfaces_\",get:function(){return[ln]}},{key:\"visitItem\",value:function(t){t.select(a,o)}}])}())),o.isNodeAdded()}}}],[{key:\"constructor_\",value:function(){this._index=null;var t=arguments[0];this._index=t}}])}(),ci=function(t){function i(){var t;return n(this,i),t=e(this,i),i.constructor_.apply(t,arguments),t}return l(i,t),s(i,[{key:\"isNodeAdded\",value:function(){return this._isNodeAdded}},{key:\"select\",value:function(){if(!(2===arguments.length&&Number.isInteger(arguments[1])&&arguments[0]instanceof Nn))return f(i,\"select\",this,1).apply(this,arguments);var t=arguments[1],e=arguments[0].getContext();if(this._parentEdge===e&&(t===this._hotPixelVertexIndex||t+1===this._hotPixelVertexIndex))return null;this._isNodeAdded|=this._hotPixel.addSnappedNode(e,t)}}],[{key:\"constructor_\",value:function(){this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._hotPixel=t,this._parentEdge=e,this._hotPixelVertexIndex=n}}])}(li);hi.HotPixelSnapAction=ci;var fi=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"processIntersections\",value:function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],a=n.getCoordinates()[i],o=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,s,a,o),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)}}},{key:\"isDone\",value:function(){return!1}},{key:\"getInteriorIntersections\",value:function(){return this._interiorIntersections}},{key:\"interfaces_\",get:function(){return[Wn]}}],[{key:\"constructor_\",value:function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new yt}}])}(),gi=function(){return s((function t(){n(this,t),t.constructor_.apply(this,arguments)}),[{key:\"checkCorrectness\",value:function(t){var e=xn.getNodedSubstrings(t),n=new oi(e);try{n.checkValid()}catch(t){if(!(t instanceof p))throw t;t.printStackTrace()}}},{key:\"getNodedSubstrings\",value:function(){return xn.getNodedSubstrings(this._nodedSegStrings)}},{key:\"snapRound\",value:function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)}},{key:\"findInteriorIntersections\",value:function(t,e){var n=new fi(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()}},{key:\"computeVertexSnaps\",value:function(){if(rt(arguments[0],Z))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.computeVertexSnaps(e)}else if(arguments[0]instanceof xn)for(var n=arguments[0],i=n.getCoordinates(),r=0;r<i.length;r++){var s=new ui(i[r],this._scaleFactor,this._li);this._pointSnapper.snap(s,n,r)&&n.addIntersection(i[r],r)}}},{key:\"computeNodes\",value:function(t){this._nodedSegStrings=t,this._noder=new Cn,this._pointSnapper=new hi(this._noder.getIndex()),this.snapRound(t,this._li)}},{key:\"computeIntersectionSnaps\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=new ui(n,this._scaleFactor,this._li);this._pointSnapper.snap(i)}}},{key:\"interfaces_\",get:function(){return[Sn]}}],[{key:\"constructor_\",value:function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new we,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()}}])}(),vi=function(){function t(){n(this,t),t.constructor_.apply(this,arguments)}return s(t,[{key:\"bufferFixedPrecision\",value:function(t){var e=new ai(new gi(new ie(1)),t.getScale()),n=new si(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)}},{key:\"bufferReducedPrecision\",value:function(){if(0===arguments.length){for(var e=t.MAX_PRECISION_DIGITS;e>=0;e--){try{this.bufferReducedPrecision(e)}catch(t){if(!(t instanceof gt))throw t;this._saveException=t}if(null!==this._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=t.precisionScaleFactor(this._argGeom,this._distance,n),r=new ie(i);this.bufferFixedPrecision(r)}}},{key:\"computeGeometry\",value:function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===ie.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()}},{key:\"setQuadrantSegments\",value:function(t){this._bufParams.setQuadrantSegments(t)}},{key:\"bufferOriginalPrecision\",value:function(){try{var t=new si(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof D))throw t;this._saveException=t}}},{key:\"getResultGeometry\",value:function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry}},{key:\"setEndCapStyle\",value:function(t){this._bufParams.setEndCapStyle(t)}}],[{key:\"constructor_\",value:function(){if(this._argGeom=null,this._distance=null,this._bufParams=new _,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}}},{key:\"bufferOp\",value:function(){if(2===arguments.length){var e=arguments[1];return new t(arguments[0]).getResultGeometry(e)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof V&&\"number\"==typeof arguments[1]){var n=arguments[1],i=arguments[2],r=new t(arguments[0]);return r.setQuadrantSegments(i),r.getResultGeometry(n)}if(arguments[2]instanceof _&&arguments[0]instanceof V&&\"number\"==typeof arguments[1]){var s=arguments[1];return new t(arguments[0],arguments[2]).getResultGeometry(s)}}else if(4===arguments.length){var a=arguments[1],o=arguments[2],u=arguments[3],l=new t(arguments[0]);return l.setQuadrantSegments(o),l.setEndCapStyle(u),l.getResultGeometry(a)}}},{key:\"precisionScaleFactor\",value:function(t,e,n){var i=t.getEnvelopeInternal(),r=kt.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),s=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,s)}}])}();vi.CAP_ROUND=_.CAP_ROUND,vi.CAP_BUTT=_.CAP_FLAT,vi.CAP_FLAT=_.CAP_FLAT,vi.CAP_SQUARE=_.CAP_SQUARE,vi.MAX_PRECISION_DIGITS=12;var yi=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],di=function(){return s((function t(e){n(this,t),this.geometryFactory=e||new ae}),[{key:\"read\",value:function(t){var e,n=(e=\"string\"==typeof t?JSON.parse(t):t).type;if(!_i[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==yi.indexOf(n)?_i[n].call(this,e.coordinates):\"GeometryCollection\"===n?_i[n].call(this,e.geometries):_i[n].call(this,e)}},{key:\"write\",value:function(t){var e=t.getGeometryType();if(!pi[e])throw new Error(\"Geometry is not supported\");return pi[e].call(this,t)}}])}(),_i={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!_i[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=_i.bbox.call(this,t.bbox)),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.call(this,t.bbox)),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var r=t[n];e.push(i(X,g(r)))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new X(t[0],t[1]),new X(t[2],t[1]),new X(t[2],t[3]),new X(t[0],t[3]),new X(t[0],t[1])])},Point:function(t){var e=i(X,g(t));return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(_i.Point.call(this,t[n]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=_i.coordinates.call(this,t);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(_i.LineString.call(this,t[n]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=_i.coordinates.call(this,t[0]),n=this.geometryFactory.createLinearRing(e),i=[],r=1;r<t.length;++r){var s=t[r],a=_i.coordinates.call(this,s),o=this.geometryFactory.createLinearRing(a);i.push(o)}return this.geometryFactory.createPolygon(n,i)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(_i.Polygon.call(this,i))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(this.read(i))}return this.geometryFactory.createGeometryCollection(e)}},pi={coordinate:function(t){var e=[t.x,t.y];return t.z&&e.push(t.z),t.m&&e.push(t.m),e},Point:function(t){return{type:\"Point\",coordinates:pi.coordinate.call(this,t.getCoordinate())}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=pi.Point.call(this,i);e.push(r.coordinates)}return{type:\"MultiPoint\",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),i=0;i<n.length;++i){var r=n[i];e.push(pi.coordinate.call(this,r))}return{type:\"LineString\",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=pi.LineString.call(this,i);e.push(r.coordinates)}return{type:\"MultiLineString\",coordinates:e}},Polygon:function(t){var e=[],n=pi.LineString.call(this,t._shell);e.push(n.coordinates);for(var i=0;i<t._holes.length;++i){var r=t._holes[i],s=pi.LineString.call(this,r);e.push(s.coordinates)}return{type:\"Polygon\",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=pi.Polygon.call(this,i);e.push(r.coordinates)}return{type:\"MultiPolygon\",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=i.getGeometryType();e.push(pi[r].call(this,i))}return{type:\"GeometryCollection\",geometries:e}}};return{BufferOp:vi,GeoJSONReader:function(){return s((function t(e){n(this,t),this.parser=new di(e||new ae)}),[{key:\"read\",value:function(t){return this.parser.read(t)}}])}(),GeoJSONWriter:function(){return s((function t(){n(this,t),this.parser=new di(this.geometryFactory)}),[{key:\"write\",value:function(t){return this.parser.write(t)}}])}()}}));\n//# sourceMappingURL=jsts.min.js.map\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y) {\n      line.push([x, y]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    // If the first and last points of a segment are coincident, then treat as a\n    // closed ring. TODO if all rings are closed, then the winding order of the\n    // exterior ring should be checked.\n    if (pointEqual(p0, p1)) {\n      stream.lineStart();\n      for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n      stream.lineEnd();\n      return;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","export default function(x) {\n  return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(rotate, sink) {\n    var line = clipLine(sink),\n        rotatedStart = rotate.invert(start[0], start[1]),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, rotatedStart);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      var point = rotate(lambda, phi);\n      if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      var point = rotate(lambda, phi);\n      line.point(point[0], point[1]);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      var point = rotate(lambda, phi);\n      ringSink.point(point[0], point[1]);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n  var cr = cos(radius),\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        // Handle degeneracies.\n        // TODO ignore if not clipping polygons.\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n            point1[0] += epsilon;\n            point1[1] += epsilon;\n            v = visible(point1[0], point1[1]);\n          }\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1]);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n  var w = extent[1][0] - extent[0][0],\n      h = extent[1][1] - extent[0][1],\n      clip = projection.clipExtent && projection.clipExtent();\n\n  projection\n      .scale(150)\n      .translate([0, 0]);\n\n  if (clip != null) projection.clipExtent(null);\n\n  geoStream(object, projection.stream(boundsStream));\n\n  var b = boundsStream.result(),\n      k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n      x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n      y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n  if (clip != null) projection.clipExtent(clip);\n\n  return projection\n      .scale(k * 150)\n      .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      dx, dy, lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n      theta = null, preclip = clipAntimeridian, // clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // clip extent\n      delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    point = projectRotate(point[0] * radians, point[1] * radians);\n    return [point[0] * k + dx, dy - point[1] * k];\n  }\n\n  function invert(point) {\n    point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  function projectTransform(x, y) {\n    return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  function recenter() {\n    projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n    var center = project(lambda, phi);\n    dx = x - center[0] * k;\n    dy = y + center[1] * k;\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","// index.js\nimport { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n  feature,\n  featureCollection,\n  radiansToLength,\n  lengthToRadians,\n  earthRadius\n} from \"@turf/helpers\";\nvar { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\nfunction buffer(geojson, radius, options) {\n  options = options || {};\n  var units = options.units || \"kilometers\";\n  var steps = options.steps || 8;\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n  if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n  if (radius === void 0) throw new Error(\"radius is required\");\n  if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n  var results = [];\n  switch (geojson.type) {\n    case \"GeometryCollection\":\n      geomEach(geojson, function(geometry) {\n        var buffered = bufferFeature(geometry, radius, units, steps);\n        if (buffered) results.push(buffered);\n      });\n      return featureCollection(results);\n    case \"FeatureCollection\":\n      featureEach(geojson, function(feature2) {\n        var multiBuffered = bufferFeature(feature2, radius, units, steps);\n        if (multiBuffered) {\n          featureEach(multiBuffered, function(buffered) {\n            if (buffered) results.push(buffered);\n          });\n        }\n      });\n      return featureCollection(results);\n  }\n  return bufferFeature(geojson, radius, units, steps);\n}\nfunction bufferFeature(geojson, radius, units, steps) {\n  var properties = geojson.properties || {};\n  var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n  if (geometry.type === \"GeometryCollection\") {\n    var results = [];\n    geomEach(geojson, function(geometry2) {\n      var buffered2 = bufferFeature(geometry2, radius, units, steps);\n      if (buffered2) results.push(buffered2);\n    });\n    return featureCollection(results);\n  }\n  var projection = defineProjection(geometry);\n  var projected = {\n    type: geometry.type,\n    coordinates: projectCoords(geometry.coordinates, projection)\n  };\n  var reader = new GeoJSONReader();\n  var geom = reader.read(projected);\n  var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n  var buffered = BufferOp.bufferOp(geom, distance, steps);\n  var writer = new GeoJSONWriter();\n  buffered = writer.write(buffered);\n  if (coordsIsNaN(buffered.coordinates)) return void 0;\n  var result = {\n    type: buffered.type,\n    coordinates: unprojectCoords(buffered.coordinates, projection)\n  };\n  return feature(result, properties);\n}\nfunction coordsIsNaN(coords) {\n  if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n  return isNaN(coords[0]);\n}\nfunction projectCoords(coords, proj) {\n  if (typeof coords[0] !== \"object\") return proj(coords);\n  return coords.map(function(coord) {\n    return projectCoords(coord, proj);\n  });\n}\nfunction unprojectCoords(coords, proj) {\n  if (typeof coords[0] !== \"object\") return proj.invert(coords);\n  return coords.map(function(coord) {\n    return unprojectCoords(coord, proj);\n  });\n}\nfunction defineProjection(geojson) {\n  var coords = center(geojson).geometry.coordinates;\n  var rotation = [-coords[0], -coords[1]];\n  return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\nvar turf_buffer_default = buffer;\nexport {\n  buffer,\n  turf_buffer_default as default\n};\n//# sourceMappingURL=index.js.map","/*\r\n *      bignumber.js v9.1.2\r\n *      A JavaScript library for arbitrary-precision arithmetic.\r\n *      https://github.com/MikeMcl/bignumber.js\r\n *      Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>\r\n *      MIT Licensed.\r\n *\r\n *      BigNumber.prototype methods     |  BigNumber methods\r\n *                                      |\r\n *      absoluteValue            abs    |  clone\r\n *      comparedTo                      |  config               set\r\n *      decimalPlaces            dp     |      DECIMAL_PLACES\r\n *      dividedBy                div    |      ROUNDING_MODE\r\n *      dividedToIntegerBy       idiv   |      EXPONENTIAL_AT\r\n *      exponentiatedBy          pow    |      RANGE\r\n *      integerValue                    |      CRYPTO\r\n *      isEqualTo                eq     |      MODULO_MODE\r\n *      isFinite                        |      POW_PRECISION\r\n *      isGreaterThan            gt     |      FORMAT\r\n *      isGreaterThanOrEqualTo   gte    |      ALPHABET\r\n *      isInteger                       |  isBigNumber\r\n *      isLessThan               lt     |  maximum              max\r\n *      isLessThanOrEqualTo      lte    |  minimum              min\r\n *      isNaN                           |  random\r\n *      isNegative                      |  sum\r\n *      isPositive                      |\r\n *      isZero                          |\r\n *      minus                           |\r\n *      modulo                   mod    |\r\n *      multipliedBy             times  |\r\n *      negated                         |\r\n *      plus                            |\r\n *      precision                sd     |\r\n *      shiftedBy                       |\r\n *      squareRoot               sqrt   |\r\n *      toExponential                   |\r\n *      toFixed                         |\r\n *      toFormat                        |\r\n *      toFraction                      |\r\n *      toJSON                          |\r\n *      toNumber                        |\r\n *      toPrecision                     |\r\n *      toString                        |\r\n *      valueOf                         |\r\n *\r\n */\r\n\r\n\r\nvar\r\n  isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n  mathceil = Math.ceil,\r\n  mathfloor = Math.floor,\r\n\r\n  bignumberError = '[BigNumber Error] ',\r\n  tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n  BASE = 1e14,\r\n  LOG_BASE = 14,\r\n  MAX_SAFE_INTEGER = 0x1fffffffffffff,         // 2^53 - 1\r\n  // MAX_INT32 = 0x7fffffff,                   // 2^31 - 1\r\n  POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n  SQRT_BASE = 1e7,\r\n\r\n  // EDITABLE\r\n  // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n  // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n  MAX = 1E9;                                   // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n  var div, convertBase, parseNumeric,\r\n    P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n    ONE = new BigNumber(1),\r\n\r\n\r\n    //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n    // The default values below must be integers within the inclusive ranges stated.\r\n    // The values can also be changed at run-time using BigNumber.set.\r\n\r\n    // The maximum number of decimal places for operations involving division.\r\n    DECIMAL_PLACES = 20,                     // 0 to MAX\r\n\r\n    // The rounding mode used when rounding to the above decimal places, and when using\r\n    // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n    // UP         0 Away from zero.\r\n    // DOWN       1 Towards zero.\r\n    // CEIL       2 Towards +Infinity.\r\n    // FLOOR      3 Towards -Infinity.\r\n    // HALF_UP    4 Towards nearest neighbour. If equidistant, up.\r\n    // HALF_DOWN  5 Towards nearest neighbour. If equidistant, down.\r\n    // HALF_EVEN  6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n    // HALF_CEIL  7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n    // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n    ROUNDING_MODE = 4,                       // 0 to 8\r\n\r\n    // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n    // The exponent value at and beneath which toString returns exponential notation.\r\n    // Number type: -7\r\n    TO_EXP_NEG = -7,                         // 0 to -MAX\r\n\r\n    // The exponent value at and above which toString returns exponential notation.\r\n    // Number type: 21\r\n    TO_EXP_POS = 21,                         // 0 to MAX\r\n\r\n    // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n    // The minimum exponent value, beneath which underflow to zero occurs.\r\n    // Number type: -324  (5e-324)\r\n    MIN_EXP = -1e7,                          // -1 to -MAX\r\n\r\n    // The maximum exponent value, above which overflow to Infinity occurs.\r\n    // Number type:  308  (1.7976931348623157e+308)\r\n    // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n    MAX_EXP = 1e7,                           // 1 to MAX\r\n\r\n    // Whether to use cryptographically-secure random number generation, if available.\r\n    CRYPTO = false,                          // true or false\r\n\r\n    // The modulo mode used when calculating the modulus: a mod n.\r\n    // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n    // The remainder (r) is calculated as: r = a - n * q.\r\n    //\r\n    // UP        0 The remainder is positive if the dividend is negative, else is negative.\r\n    // DOWN      1 The remainder has the same sign as the dividend.\r\n    //             This modulo mode is commonly known as 'truncated division' and is\r\n    //             equivalent to (a % n) in JavaScript.\r\n    // FLOOR     3 The remainder has the same sign as the divisor (Python %).\r\n    // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n    // EUCLID    9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n    //             The remainder is always positive.\r\n    //\r\n    // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n    // modes are commonly used for the modulus operation.\r\n    // Although the other rounding modes can also be used, they may not give useful results.\r\n    MODULO_MODE = 1,                         // 0 to 9\r\n\r\n    // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n    // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n    POW_PRECISION = 0,                       // 0 to MAX\r\n\r\n    // The format specification used by the BigNumber.prototype.toFormat method.\r\n    FORMAT = {\r\n      prefix: '',\r\n      groupSize: 3,\r\n      secondaryGroupSize: 0,\r\n      groupSeparator: ',',\r\n      decimalSeparator: '.',\r\n      fractionGroupSize: 0,\r\n      fractionGroupSeparator: '\\xA0',        // non-breaking space\r\n      suffix: ''\r\n    },\r\n\r\n    // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n    // '-', '.', whitespace, or repeated character.\r\n    // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n    ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n    alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n  //------------------------------------------------------------------------------------------\r\n\r\n\r\n  // CONSTRUCTOR\r\n\r\n\r\n  /*\r\n   * The BigNumber constructor and exported function.\r\n   * Create and return a new instance of a BigNumber object.\r\n   *\r\n   * v {number|string|BigNumber} A numeric value.\r\n   * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n   */\r\n  function BigNumber(v, b) {\r\n    var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n      x = this;\r\n\r\n    // Enable constructor call without `new`.\r\n    if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n    if (b == null) {\r\n\r\n      if (v && v._isBigNumber === true) {\r\n        x.s = v.s;\r\n\r\n        if (!v.c || v.e > MAX_EXP) {\r\n          x.c = x.e = null;\r\n        } else if (v.e < MIN_EXP) {\r\n          x.c = [x.e = 0];\r\n        } else {\r\n          x.e = v.e;\r\n          x.c = v.c.slice();\r\n        }\r\n\r\n        return;\r\n      }\r\n\r\n      if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n        // Use `1 / n` to handle minus zero also.\r\n        x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n        // Fast path for integers, where n < 2147483648 (2**31).\r\n        if (v === ~~v) {\r\n          for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n          if (e > MAX_EXP) {\r\n            x.c = x.e = null;\r\n          } else {\r\n            x.e = e;\r\n            x.c = [v];\r\n          }\r\n\r\n          return;\r\n        }\r\n\r\n        str = String(v);\r\n      } else {\r\n\r\n        if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n        x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n      }\r\n\r\n      // Decimal point?\r\n      if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n      // Exponential form?\r\n      if ((i = str.search(/e/i)) > 0) {\r\n\r\n        // Determine exponent.\r\n        if (e < 0) e = i;\r\n        e += +str.slice(i + 1);\r\n        str = str.substring(0, i);\r\n      } else if (e < 0) {\r\n\r\n        // Integer.\r\n        e = str.length;\r\n      }\r\n\r\n    } else {\r\n\r\n      // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n      intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n      // Allow exponential notation to be used with base 10 argument, while\r\n      // also rounding to DECIMAL_PLACES as with other bases.\r\n      if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n        x = new BigNumber(v);\r\n        return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n      }\r\n\r\n      str = String(v);\r\n\r\n      if (isNum = typeof v == 'number') {\r\n\r\n        // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n        if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n        x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n        // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n        if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n          throw Error\r\n           (tooManyDigits + v);\r\n        }\r\n      } else {\r\n        x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n      }\r\n\r\n      alphabet = ALPHABET.slice(0, b);\r\n      e = i = 0;\r\n\r\n      // Check that str is a valid base b number.\r\n      // Don't use RegExp, so alphabet can contain special characters.\r\n      for (len = str.length; i < len; i++) {\r\n        if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n          if (c == '.') {\r\n\r\n            // If '.' is not the first character and it has not be found before.\r\n            if (i > e) {\r\n              e = len;\r\n              continue;\r\n            }\r\n          } else if (!caseChanged) {\r\n\r\n            // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n            if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n                str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n              caseChanged = true;\r\n              i = -1;\r\n              e = 0;\r\n              continue;\r\n            }\r\n          }\r\n\r\n          return parseNumeric(x, String(v), isNum, b);\r\n        }\r\n      }\r\n\r\n      // Prevent later check for length on converted number.\r\n      isNum = false;\r\n      str = convertBase(str, b, 10, x.s);\r\n\r\n      // Decimal point?\r\n      if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n      else e = str.length;\r\n    }\r\n\r\n    // Determine leading zeros.\r\n    for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n    // Determine trailing zeros.\r\n    for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n    if (str = str.slice(i, ++len)) {\r\n      len -= i;\r\n\r\n      // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n      if (isNum && BigNumber.DEBUG &&\r\n        len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n          throw Error\r\n           (tooManyDigits + (x.s * v));\r\n      }\r\n\r\n       // Overflow?\r\n      if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n        // Infinity.\r\n        x.c = x.e = null;\r\n\r\n      // Underflow?\r\n      } else if (e < MIN_EXP) {\r\n\r\n        // Zero.\r\n        x.c = [x.e = 0];\r\n      } else {\r\n        x.e = e;\r\n        x.c = [];\r\n\r\n        // Transform base\r\n\r\n        // e is the base 10 exponent.\r\n        // i is where to slice str to get the first element of the coefficient array.\r\n        i = (e + 1) % LOG_BASE;\r\n        if (e < 0) i += LOG_BASE;  // i < 1\r\n\r\n        if (i < len) {\r\n          if (i) x.c.push(+str.slice(0, i));\r\n\r\n          for (len -= LOG_BASE; i < len;) {\r\n            x.c.push(+str.slice(i, i += LOG_BASE));\r\n          }\r\n\r\n          i = LOG_BASE - (str = str.slice(i)).length;\r\n        } else {\r\n          i -= len;\r\n        }\r\n\r\n        for (; i--; str += '0');\r\n        x.c.push(+str);\r\n      }\r\n    } else {\r\n\r\n      // Zero.\r\n      x.c = [x.e = 0];\r\n    }\r\n  }\r\n\r\n\r\n  // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n  BigNumber.clone = clone;\r\n\r\n  BigNumber.ROUND_UP = 0;\r\n  BigNumber.ROUND_DOWN = 1;\r\n  BigNumber.ROUND_CEIL = 2;\r\n  BigNumber.ROUND_FLOOR = 3;\r\n  BigNumber.ROUND_HALF_UP = 4;\r\n  BigNumber.ROUND_HALF_DOWN = 5;\r\n  BigNumber.ROUND_HALF_EVEN = 6;\r\n  BigNumber.ROUND_HALF_CEIL = 7;\r\n  BigNumber.ROUND_HALF_FLOOR = 8;\r\n  BigNumber.EUCLID = 9;\r\n\r\n\r\n  /*\r\n   * Configure infrequently-changing library-wide settings.\r\n   *\r\n   * Accept an object with the following optional properties (if the value of a property is\r\n   * a number, it must be an integer within the inclusive range stated):\r\n   *\r\n   *   DECIMAL_PLACES   {number}           0 to MAX\r\n   *   ROUNDING_MODE    {number}           0 to 8\r\n   *   EXPONENTIAL_AT   {number|number[]}  -MAX to MAX  or  [-MAX to 0, 0 to MAX]\r\n   *   RANGE            {number|number[]}  -MAX to MAX (not zero)  or  [-MAX to -1, 1 to MAX]\r\n   *   CRYPTO           {boolean}          true or false\r\n   *   MODULO_MODE      {number}           0 to 9\r\n   *   POW_PRECISION       {number}           0 to MAX\r\n   *   ALPHABET         {string}           A string of two or more unique characters which does\r\n   *                                       not contain '.'.\r\n   *   FORMAT           {object}           An object with some of the following properties:\r\n   *     prefix                 {string}\r\n   *     groupSize              {number}\r\n   *     secondaryGroupSize     {number}\r\n   *     groupSeparator         {string}\r\n   *     decimalSeparator       {string}\r\n   *     fractionGroupSize      {number}\r\n   *     fractionGroupSeparator {string}\r\n   *     suffix                 {string}\r\n   *\r\n   * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n   *\r\n   * E.g.\r\n   * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n   *\r\n   * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n   *\r\n   * Return an object with the properties current values.\r\n   */\r\n  BigNumber.config = BigNumber.set = function (obj) {\r\n    var p, v;\r\n\r\n    if (obj != null) {\r\n\r\n      if (typeof obj == 'object') {\r\n\r\n        // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n        // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, MAX, p);\r\n          DECIMAL_PLACES = v;\r\n        }\r\n\r\n        // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n        // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, 8, p);\r\n          ROUNDING_MODE = v;\r\n        }\r\n\r\n        // EXPONENTIAL_AT {number|number[]}\r\n        // Integer, -MAX to MAX inclusive or\r\n        // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n        // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n          v = obj[p];\r\n          if (v && v.pop) {\r\n            intCheck(v[0], -MAX, 0, p);\r\n            intCheck(v[1], 0, MAX, p);\r\n            TO_EXP_NEG = v[0];\r\n            TO_EXP_POS = v[1];\r\n          } else {\r\n            intCheck(v, -MAX, MAX, p);\r\n            TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n          }\r\n        }\r\n\r\n        // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n        // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n        // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n        if (obj.hasOwnProperty(p = 'RANGE')) {\r\n          v = obj[p];\r\n          if (v && v.pop) {\r\n            intCheck(v[0], -MAX, -1, p);\r\n            intCheck(v[1], 1, MAX, p);\r\n            MIN_EXP = v[0];\r\n            MAX_EXP = v[1];\r\n          } else {\r\n            intCheck(v, -MAX, MAX, p);\r\n            if (v) {\r\n              MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n            } else {\r\n              throw Error\r\n               (bignumberError + p + ' cannot be zero: ' + v);\r\n            }\r\n          }\r\n        }\r\n\r\n        // CRYPTO {boolean} true or false.\r\n        // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n        // '[BigNumber Error] crypto unavailable'\r\n        if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n          v = obj[p];\r\n          if (v === !!v) {\r\n            if (v) {\r\n              if (typeof crypto != 'undefined' && crypto &&\r\n               (crypto.getRandomValues || crypto.randomBytes)) {\r\n                CRYPTO = v;\r\n              } else {\r\n                CRYPTO = !v;\r\n                throw Error\r\n                 (bignumberError + 'crypto unavailable');\r\n              }\r\n            } else {\r\n              CRYPTO = v;\r\n            }\r\n          } else {\r\n            throw Error\r\n             (bignumberError + p + ' not true or false: ' + v);\r\n          }\r\n        }\r\n\r\n        // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n        // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, 9, p);\r\n          MODULO_MODE = v;\r\n        }\r\n\r\n        // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n        // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, MAX, p);\r\n          POW_PRECISION = v;\r\n        }\r\n\r\n        // FORMAT {object}\r\n        // '[BigNumber Error] FORMAT not an object: {v}'\r\n        if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n          v = obj[p];\r\n          if (typeof v == 'object') FORMAT = v;\r\n          else throw Error\r\n           (bignumberError + p + ' not an object: ' + v);\r\n        }\r\n\r\n        // ALPHABET {string}\r\n        // '[BigNumber Error] ALPHABET invalid: {v}'\r\n        if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n          v = obj[p];\r\n\r\n          // Disallow if less than two characters,\r\n          // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n          if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n            alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n            ALPHABET = v;\r\n          } else {\r\n            throw Error\r\n             (bignumberError + p + ' invalid: ' + v);\r\n          }\r\n        }\r\n\r\n      } else {\r\n\r\n        // '[BigNumber Error] Object expected: {v}'\r\n        throw Error\r\n         (bignumberError + 'Object expected: ' + obj);\r\n      }\r\n    }\r\n\r\n    return {\r\n      DECIMAL_PLACES: DECIMAL_PLACES,\r\n      ROUNDING_MODE: ROUNDING_MODE,\r\n      EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n      RANGE: [MIN_EXP, MAX_EXP],\r\n      CRYPTO: CRYPTO,\r\n      MODULO_MODE: MODULO_MODE,\r\n      POW_PRECISION: POW_PRECISION,\r\n      FORMAT: FORMAT,\r\n      ALPHABET: ALPHABET\r\n    };\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if v is a BigNumber instance, otherwise return false.\r\n   *\r\n   * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n   *\r\n   * v {any}\r\n   *\r\n   * '[BigNumber Error] Invalid BigNumber: {v}'\r\n   */\r\n  BigNumber.isBigNumber = function (v) {\r\n    if (!v || v._isBigNumber !== true) return false;\r\n    if (!BigNumber.DEBUG) return true;\r\n\r\n    var i, n,\r\n      c = v.c,\r\n      e = v.e,\r\n      s = v.s;\r\n\r\n    out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n      if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n        // If the first element is zero, the BigNumber value must be zero.\r\n        if (c[0] === 0) {\r\n          if (e === 0 && c.length === 1) return true;\r\n          break out;\r\n        }\r\n\r\n        // Calculate number of digits that c[0] should have, based on the exponent.\r\n        i = (e + 1) % LOG_BASE;\r\n        if (i < 1) i += LOG_BASE;\r\n\r\n        // Calculate number of digits of c[0].\r\n        //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n        if (String(c[0]).length == i) {\r\n\r\n          for (i = 0; i < c.length; i++) {\r\n            n = c[i];\r\n            if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n          }\r\n\r\n          // Last element cannot be zero, unless it is the only element.\r\n          if (n !== 0) return true;\r\n        }\r\n      }\r\n\r\n    // Infinity/NaN\r\n    } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n      return true;\r\n    }\r\n\r\n    throw Error\r\n      (bignumberError + 'Invalid BigNumber: ' + v);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the maximum of the arguments.\r\n   *\r\n   * arguments {number|string|BigNumber}\r\n   */\r\n  BigNumber.maximum = BigNumber.max = function () {\r\n    return maxOrMin(arguments, -1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the minimum of the arguments.\r\n   *\r\n   * arguments {number|string|BigNumber}\r\n   */\r\n  BigNumber.minimum = BigNumber.min = function () {\r\n    return maxOrMin(arguments, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n   * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n   * zeros are produced).\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n   * '[BigNumber Error] crypto unavailable'\r\n   */\r\n  BigNumber.random = (function () {\r\n    var pow2_53 = 0x20000000000000;\r\n\r\n    // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n    // Check if Math.random() produces more than 32 bits of randomness.\r\n    // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n    // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n    var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n     ? function () { return mathfloor(Math.random() * pow2_53); }\r\n     : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n       (Math.random() * 0x800000 | 0); };\r\n\r\n    return function (dp) {\r\n      var a, b, e, k, v,\r\n        i = 0,\r\n        c = [],\r\n        rand = new BigNumber(ONE);\r\n\r\n      if (dp == null) dp = DECIMAL_PLACES;\r\n      else intCheck(dp, 0, MAX);\r\n\r\n      k = mathceil(dp / LOG_BASE);\r\n\r\n      if (CRYPTO) {\r\n\r\n        // Browsers supporting crypto.getRandomValues.\r\n        if (crypto.getRandomValues) {\r\n\r\n          a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n          for (; i < k;) {\r\n\r\n            // 53 bits:\r\n            // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n            // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n            // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n            //                                     11111 11111111 11111111\r\n            // 0x20000 is 2^21.\r\n            v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n            // Rejection sampling:\r\n            // 0 <= v < 9007199254740992\r\n            // Probability that v >= 9e15, is\r\n            // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n            if (v >= 9e15) {\r\n              b = crypto.getRandomValues(new Uint32Array(2));\r\n              a[i] = b[0];\r\n              a[i + 1] = b[1];\r\n            } else {\r\n\r\n              // 0 <= v <= 8999999999999999\r\n              // 0 <= (v % 1e14) <= 99999999999999\r\n              c.push(v % 1e14);\r\n              i += 2;\r\n            }\r\n          }\r\n          i = k / 2;\r\n\r\n        // Node.js supporting crypto.randomBytes.\r\n        } else if (crypto.randomBytes) {\r\n\r\n          // buffer\r\n          a = crypto.randomBytes(k *= 7);\r\n\r\n          for (; i < k;) {\r\n\r\n            // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n            // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n            // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n            // 0 <= v < 9007199254740992\r\n            v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n               (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n               (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n            if (v >= 9e15) {\r\n              crypto.randomBytes(7).copy(a, i);\r\n            } else {\r\n\r\n              // 0 <= (v % 1e14) <= 99999999999999\r\n              c.push(v % 1e14);\r\n              i += 7;\r\n            }\r\n          }\r\n          i = k / 7;\r\n        } else {\r\n          CRYPTO = false;\r\n          throw Error\r\n           (bignumberError + 'crypto unavailable');\r\n        }\r\n      }\r\n\r\n      // Use Math.random.\r\n      if (!CRYPTO) {\r\n\r\n        for (; i < k;) {\r\n          v = random53bitInt();\r\n          if (v < 9e15) c[i++] = v % 1e14;\r\n        }\r\n      }\r\n\r\n      k = c[--i];\r\n      dp %= LOG_BASE;\r\n\r\n      // Convert trailing digits to zeros according to dp.\r\n      if (k && dp) {\r\n        v = POWS_TEN[LOG_BASE - dp];\r\n        c[i] = mathfloor(k / v) * v;\r\n      }\r\n\r\n      // Remove trailing elements which are zero.\r\n      for (; c[i] === 0; c.pop(), i--);\r\n\r\n      // Zero?\r\n      if (i < 0) {\r\n        c = [e = 0];\r\n      } else {\r\n\r\n        // Remove leading elements which are zero and adjust exponent accordingly.\r\n        for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n        // Count the digits of the first element of c to determine leading zeros, and...\r\n        for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n        // adjust the exponent accordingly.\r\n        if (i < LOG_BASE) e -= LOG_BASE - i;\r\n      }\r\n\r\n      rand.e = e;\r\n      rand.c = c;\r\n      return rand;\r\n    };\r\n  })();\r\n\r\n\r\n   /*\r\n   * Return a BigNumber whose value is the sum of the arguments.\r\n   *\r\n   * arguments {number|string|BigNumber}\r\n   */\r\n  BigNumber.sum = function () {\r\n    var i = 1,\r\n      args = arguments,\r\n      sum = new BigNumber(args[0]);\r\n    for (; i < args.length;) sum = sum.plus(args[i++]);\r\n    return sum;\r\n  };\r\n\r\n\r\n  // PRIVATE FUNCTIONS\r\n\r\n\r\n  // Called by BigNumber and BigNumber.prototype.toString.\r\n  convertBase = (function () {\r\n    var decimal = '0123456789';\r\n\r\n    /*\r\n     * Convert string of baseIn to an array of numbers of baseOut.\r\n     * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n     * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n     */\r\n    function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n      var j,\r\n        arr = [0],\r\n        arrL,\r\n        i = 0,\r\n        len = str.length;\r\n\r\n      for (; i < len;) {\r\n        for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n        arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n        for (j = 0; j < arr.length; j++) {\r\n\r\n          if (arr[j] > baseOut - 1) {\r\n            if (arr[j + 1] == null) arr[j + 1] = 0;\r\n            arr[j + 1] += arr[j] / baseOut | 0;\r\n            arr[j] %= baseOut;\r\n          }\r\n        }\r\n      }\r\n\r\n      return arr.reverse();\r\n    }\r\n\r\n    // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n    // If the caller is toString, we are converting from base 10 to baseOut.\r\n    // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n    return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n      var alphabet, d, e, k, r, x, xc, y,\r\n        i = str.indexOf('.'),\r\n        dp = DECIMAL_PLACES,\r\n        rm = ROUNDING_MODE;\r\n\r\n      // Non-integer.\r\n      if (i >= 0) {\r\n        k = POW_PRECISION;\r\n\r\n        // Unlimited precision.\r\n        POW_PRECISION = 0;\r\n        str = str.replace('.', '');\r\n        y = new BigNumber(baseIn);\r\n        x = y.pow(str.length - i);\r\n        POW_PRECISION = k;\r\n\r\n        // Convert str as if an integer, then restore the fraction part by dividing the\r\n        // result by its base raised to a power.\r\n\r\n        y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n         10, baseOut, decimal);\r\n        y.e = y.c.length;\r\n      }\r\n\r\n      // Convert the number as integer.\r\n\r\n      xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n       ? (alphabet = ALPHABET, decimal)\r\n       : (alphabet = decimal, ALPHABET));\r\n\r\n      // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n      e = k = xc.length;\r\n\r\n      // Remove trailing zeros.\r\n      for (; xc[--k] == 0; xc.pop());\r\n\r\n      // Zero?\r\n      if (!xc[0]) return alphabet.charAt(0);\r\n\r\n      // Does str represent an integer? If so, no need for the division.\r\n      if (i < 0) {\r\n        --e;\r\n      } else {\r\n        x.c = xc;\r\n        x.e = e;\r\n\r\n        // The sign is needed for correct rounding.\r\n        x.s = sign;\r\n        x = div(x, y, dp, rm, baseOut);\r\n        xc = x.c;\r\n        r = x.r;\r\n        e = x.e;\r\n      }\r\n\r\n      // xc now represents str converted to baseOut.\r\n\r\n      // THe index of the rounding digit.\r\n      d = e + dp + 1;\r\n\r\n      // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n      i = xc[d];\r\n\r\n      // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n      k = baseOut / 2;\r\n      r = r || d < 0 || xc[d + 1] != null;\r\n\r\n      r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n            : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n             rm == (x.s < 0 ? 8 : 7));\r\n\r\n      // If the index of the rounding digit is not greater than zero, or xc represents\r\n      // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n      // such as 0.00001.\r\n      if (d < 1 || !xc[0]) {\r\n\r\n        // 1^-dp or 0\r\n        str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n      } else {\r\n\r\n        // Truncate xc to the required number of decimal places.\r\n        xc.length = d;\r\n\r\n        // Round up?\r\n        if (r) {\r\n\r\n          // Rounding up may mean the previous digit has to be rounded up and so on.\r\n          for (--baseOut; ++xc[--d] > baseOut;) {\r\n            xc[d] = 0;\r\n\r\n            if (!d) {\r\n              ++e;\r\n              xc = [1].concat(xc);\r\n            }\r\n          }\r\n        }\r\n\r\n        // Determine trailing zeros.\r\n        for (k = xc.length; !xc[--k];);\r\n\r\n        // E.g. [4, 11, 15] becomes 4bf.\r\n        for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n        // Add leading zeros, decimal point and trailing zeros as required.\r\n        str = toFixedPoint(str, e, alphabet.charAt(0));\r\n      }\r\n\r\n      // The caller will add the sign.\r\n      return str;\r\n    };\r\n  })();\r\n\r\n\r\n  // Perform division in the specified base. Called by div and convertBase.\r\n  div = (function () {\r\n\r\n    // Assume non-zero x and k.\r\n    function multiply(x, k, base) {\r\n      var m, temp, xlo, xhi,\r\n        carry = 0,\r\n        i = x.length,\r\n        klo = k % SQRT_BASE,\r\n        khi = k / SQRT_BASE | 0;\r\n\r\n      for (x = x.slice(); i--;) {\r\n        xlo = x[i] % SQRT_BASE;\r\n        xhi = x[i] / SQRT_BASE | 0;\r\n        m = khi * xlo + xhi * klo;\r\n        temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n        carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n        x[i] = temp % base;\r\n      }\r\n\r\n      if (carry) x = [carry].concat(x);\r\n\r\n      return x;\r\n    }\r\n\r\n    function compare(a, b, aL, bL) {\r\n      var i, cmp;\r\n\r\n      if (aL != bL) {\r\n        cmp = aL > bL ? 1 : -1;\r\n      } else {\r\n\r\n        for (i = cmp = 0; i < aL; i++) {\r\n\r\n          if (a[i] != b[i]) {\r\n            cmp = a[i] > b[i] ? 1 : -1;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n\r\n      return cmp;\r\n    }\r\n\r\n    function subtract(a, b, aL, base) {\r\n      var i = 0;\r\n\r\n      // Subtract b from a.\r\n      for (; aL--;) {\r\n        a[aL] -= i;\r\n        i = a[aL] < b[aL] ? 1 : 0;\r\n        a[aL] = i * base + a[aL] - b[aL];\r\n      }\r\n\r\n      // Remove leading zeros.\r\n      for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n    }\r\n\r\n    // x: dividend, y: divisor.\r\n    return function (x, y, dp, rm, base) {\r\n      var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n        yL, yz,\r\n        s = x.s == y.s ? 1 : -1,\r\n        xc = x.c,\r\n        yc = y.c;\r\n\r\n      // Either NaN, Infinity or 0?\r\n      if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n        return new BigNumber(\r\n\r\n         // Return NaN if either NaN, or both Infinity or 0.\r\n         !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n          // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n          xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n       );\r\n      }\r\n\r\n      q = new BigNumber(s);\r\n      qc = q.c = [];\r\n      e = x.e - y.e;\r\n      s = dp + e + 1;\r\n\r\n      if (!base) {\r\n        base = BASE;\r\n        e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n        s = s / LOG_BASE | 0;\r\n      }\r\n\r\n      // Result exponent may be one less then the current value of e.\r\n      // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n      for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n      if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n      if (s < 0) {\r\n        qc.push(1);\r\n        more = true;\r\n      } else {\r\n        xL = xc.length;\r\n        yL = yc.length;\r\n        i = 0;\r\n        s += 2;\r\n\r\n        // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n        n = mathfloor(base / (yc[0] + 1));\r\n\r\n        // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n        // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n        if (n > 1) {\r\n          yc = multiply(yc, n, base);\r\n          xc = multiply(xc, n, base);\r\n          yL = yc.length;\r\n          xL = xc.length;\r\n        }\r\n\r\n        xi = yL;\r\n        rem = xc.slice(0, yL);\r\n        remL = rem.length;\r\n\r\n        // Add zeros to make remainder as long as divisor.\r\n        for (; remL < yL; rem[remL++] = 0);\r\n        yz = yc.slice();\r\n        yz = [0].concat(yz);\r\n        yc0 = yc[0];\r\n        if (yc[1] >= base / 2) yc0++;\r\n        // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n        // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n        do {\r\n          n = 0;\r\n\r\n          // Compare divisor and remainder.\r\n          cmp = compare(yc, rem, yL, remL);\r\n\r\n          // If divisor < remainder.\r\n          if (cmp < 0) {\r\n\r\n            // Calculate trial digit, n.\r\n\r\n            rem0 = rem[0];\r\n            if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n            // n is how many times the divisor goes into the current remainder.\r\n            n = mathfloor(rem0 / yc0);\r\n\r\n            //  Algorithm:\r\n            //  product = divisor multiplied by trial digit (n).\r\n            //  Compare product and remainder.\r\n            //  If product is greater than remainder:\r\n            //    Subtract divisor from product, decrement trial digit.\r\n            //  Subtract product from remainder.\r\n            //  If product was less than remainder at the last compare:\r\n            //    Compare new remainder and divisor.\r\n            //    If remainder is greater than divisor:\r\n            //      Subtract divisor from remainder, increment trial digit.\r\n\r\n            if (n > 1) {\r\n\r\n              // n may be > base only when base is 3.\r\n              if (n >= base) n = base - 1;\r\n\r\n              // product = divisor * trial digit.\r\n              prod = multiply(yc, n, base);\r\n              prodL = prod.length;\r\n              remL = rem.length;\r\n\r\n              // Compare product and remainder.\r\n              // If product > remainder then trial digit n too high.\r\n              // n is 1 too high about 5% of the time, and is not known to have\r\n              // ever been more than 1 too high.\r\n              while (compare(prod, rem, prodL, remL) == 1) {\r\n                n--;\r\n\r\n                // Subtract divisor from product.\r\n                subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n                prodL = prod.length;\r\n                cmp = 1;\r\n              }\r\n            } else {\r\n\r\n              // n is 0 or 1, cmp is -1.\r\n              // If n is 0, there is no need to compare yc and rem again below,\r\n              // so change cmp to 1 to avoid it.\r\n              // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n              if (n == 0) {\r\n\r\n                // divisor < remainder, so n must be at least 1.\r\n                cmp = n = 1;\r\n              }\r\n\r\n              // product = divisor\r\n              prod = yc.slice();\r\n              prodL = prod.length;\r\n            }\r\n\r\n            if (prodL < remL) prod = [0].concat(prod);\r\n\r\n            // Subtract product from remainder.\r\n            subtract(rem, prod, remL, base);\r\n            remL = rem.length;\r\n\r\n             // If product was < remainder.\r\n            if (cmp == -1) {\r\n\r\n              // Compare divisor and new remainder.\r\n              // If divisor < new remainder, subtract divisor from remainder.\r\n              // Trial digit n too low.\r\n              // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n              while (compare(yc, rem, yL, remL) < 1) {\r\n                n++;\r\n\r\n                // Subtract divisor from remainder.\r\n                subtract(rem, yL < remL ? yz : yc, remL, base);\r\n                remL = rem.length;\r\n              }\r\n            }\r\n          } else if (cmp === 0) {\r\n            n++;\r\n            rem = [0];\r\n          } // else cmp === 1 and n will be 0\r\n\r\n          // Add the next digit, n, to the result array.\r\n          qc[i++] = n;\r\n\r\n          // Update the remainder.\r\n          if (rem[0]) {\r\n            rem[remL++] = xc[xi] || 0;\r\n          } else {\r\n            rem = [xc[xi]];\r\n            remL = 1;\r\n          }\r\n        } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n        more = rem[0] != null;\r\n\r\n        // Leading zero?\r\n        if (!qc[0]) qc.splice(0, 1);\r\n      }\r\n\r\n      if (base == BASE) {\r\n\r\n        // To calculate q.e, first get the number of digits of qc[0].\r\n        for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n        round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n      // Caller is convertBase.\r\n      } else {\r\n        q.e = e;\r\n        q.r = +more;\r\n      }\r\n\r\n      return q;\r\n    };\r\n  })();\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n   * notation rounded to the specified decimal places or significant digits.\r\n   *\r\n   * n: a BigNumber.\r\n   * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n   * rm: the rounding mode.\r\n   * id: 1 (toExponential) or 2 (toPrecision).\r\n   */\r\n  function format(n, i, rm, id) {\r\n    var c0, e, ne, len, str;\r\n\r\n    if (rm == null) rm = ROUNDING_MODE;\r\n    else intCheck(rm, 0, 8);\r\n\r\n    if (!n.c) return n.toString();\r\n\r\n    c0 = n.c[0];\r\n    ne = n.e;\r\n\r\n    if (i == null) {\r\n      str = coeffToString(n.c);\r\n      str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n       ? toExponential(str, ne)\r\n       : toFixedPoint(str, ne, '0');\r\n    } else {\r\n      n = round(new BigNumber(n), i, rm);\r\n\r\n      // n.e may have changed if the value was rounded up.\r\n      e = n.e;\r\n\r\n      str = coeffToString(n.c);\r\n      len = str.length;\r\n\r\n      // toPrecision returns exponential notation if the number of significant digits\r\n      // specified is less than the number of digits necessary to represent the integer\r\n      // part of the value in fixed-point notation.\r\n\r\n      // Exponential notation.\r\n      if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n        // Append zeros?\r\n        for (; len < i; str += '0', len++);\r\n        str = toExponential(str, e);\r\n\r\n      // Fixed-point notation.\r\n      } else {\r\n        i -= ne;\r\n        str = toFixedPoint(str, e, '0');\r\n\r\n        // Append zeros?\r\n        if (e + 1 > len) {\r\n          if (--i > 0) for (str += '.'; i--; str += '0');\r\n        } else {\r\n          i += e - len;\r\n          if (i > 0) {\r\n            if (e + 1 == len) str += '.';\r\n            for (; i--; str += '0');\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return n.s < 0 && c0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // Handle BigNumber.max and BigNumber.min.\r\n  // If any number is NaN, return NaN.\r\n  function maxOrMin(args, n) {\r\n    var k, y,\r\n      i = 1,\r\n      x = new BigNumber(args[0]);\r\n\r\n    for (; i < args.length; i++) {\r\n      y = new BigNumber(args[i]);\r\n      if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n        x = y;\r\n      }\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n   * Called by minus, plus and times.\r\n   */\r\n  function normalise(n, c, e) {\r\n    var i = 1,\r\n      j = c.length;\r\n\r\n     // Remove trailing zeros.\r\n    for (; !c[--j]; c.pop());\r\n\r\n    // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n    for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n    // Overflow?\r\n    if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n      // Infinity.\r\n      n.c = n.e = null;\r\n\r\n    // Underflow?\r\n    } else if (e < MIN_EXP) {\r\n\r\n      // Zero.\r\n      n.c = [n.e = 0];\r\n    } else {\r\n      n.e = e;\r\n      n.c = c;\r\n    }\r\n\r\n    return n;\r\n  }\r\n\r\n\r\n  // Handle values that fail the validity test in BigNumber.\r\n  parseNumeric = (function () {\r\n    var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n      dotAfter = /^([^.]+)\\.$/,\r\n      dotBefore = /^\\.([^.]+)$/,\r\n      isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n      whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n    return function (x, str, isNum, b) {\r\n      var base,\r\n        s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n      // No exception on ±Infinity or NaN.\r\n      if (isInfinityOrNaN.test(s)) {\r\n        x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n      } else {\r\n        if (!isNum) {\r\n\r\n          // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n          s = s.replace(basePrefix, function (m, p1, p2) {\r\n            base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n            return !b || b == base ? p1 : m;\r\n          });\r\n\r\n          if (b) {\r\n            base = b;\r\n\r\n            // E.g. '1.' to '1', '.1' to '0.1'\r\n            s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n          }\r\n\r\n          if (str != s) return new BigNumber(s, base);\r\n        }\r\n\r\n        // '[BigNumber Error] Not a number: {n}'\r\n        // '[BigNumber Error] Not a base {b} number: {n}'\r\n        if (BigNumber.DEBUG) {\r\n          throw Error\r\n            (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n        }\r\n\r\n        // NaN\r\n        x.s = null;\r\n      }\r\n\r\n      x.c = x.e = null;\r\n    }\r\n  })();\r\n\r\n\r\n  /*\r\n   * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n   * If r is truthy, it is known that there are more digits after the rounding digit.\r\n   */\r\n  function round(x, sd, rm, r) {\r\n    var d, i, j, k, n, ni, rd,\r\n      xc = x.c,\r\n      pows10 = POWS_TEN;\r\n\r\n    // if x is not Infinity or NaN...\r\n    if (xc) {\r\n\r\n      // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n      // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n      // ni is the index of n within x.c.\r\n      // d is the number of digits of n.\r\n      // i is the index of rd within n including leading zeros.\r\n      // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n      out: {\r\n\r\n        // Get the number of digits of the first element of xc.\r\n        for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n        i = sd - d;\r\n\r\n        // If the rounding digit is in the first element of xc...\r\n        if (i < 0) {\r\n          i += LOG_BASE;\r\n          j = sd;\r\n          n = xc[ni = 0];\r\n\r\n          // Get the rounding digit at index j of n.\r\n          rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n        } else {\r\n          ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n          if (ni >= xc.length) {\r\n\r\n            if (r) {\r\n\r\n              // Needed by sqrt.\r\n              for (; xc.length <= ni; xc.push(0));\r\n              n = rd = 0;\r\n              d = 1;\r\n              i %= LOG_BASE;\r\n              j = i - LOG_BASE + 1;\r\n            } else {\r\n              break out;\r\n            }\r\n          } else {\r\n            n = k = xc[ni];\r\n\r\n            // Get the number of digits of n.\r\n            for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n            // Get the index of rd within n.\r\n            i %= LOG_BASE;\r\n\r\n            // Get the index of rd within n, adjusted for leading zeros.\r\n            // The number of leading zeros of n is given by LOG_BASE - d.\r\n            j = i - LOG_BASE + d;\r\n\r\n            // Get the rounding digit at index j of n.\r\n            rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n          }\r\n        }\r\n\r\n        r = r || sd < 0 ||\r\n\r\n        // Are there any non-zero digits after the rounding digit?\r\n        // The expression  n % pows10[d - j - 1]  returns all digits of n to the right\r\n        // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n         xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n        r = rm < 4\r\n         ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n         : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n          // Check whether the digit to the left of the rounding digit is odd.\r\n          ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n           rm == (x.s < 0 ? 8 : 7));\r\n\r\n        if (sd < 1 || !xc[0]) {\r\n          xc.length = 0;\r\n\r\n          if (r) {\r\n\r\n            // Convert sd to decimal places.\r\n            sd -= x.e + 1;\r\n\r\n            // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n            xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n            x.e = -sd || 0;\r\n          } else {\r\n\r\n            // Zero.\r\n            xc[0] = x.e = 0;\r\n          }\r\n\r\n          return x;\r\n        }\r\n\r\n        // Remove excess digits.\r\n        if (i == 0) {\r\n          xc.length = ni;\r\n          k = 1;\r\n          ni--;\r\n        } else {\r\n          xc.length = ni + 1;\r\n          k = pows10[LOG_BASE - i];\r\n\r\n          // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n          // j > 0 means i > number of leading zeros of n.\r\n          xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n        }\r\n\r\n        // Round up?\r\n        if (r) {\r\n\r\n          for (; ;) {\r\n\r\n            // If the digit to be rounded up is in the first element of xc...\r\n            if (ni == 0) {\r\n\r\n              // i will be the length of xc[0] before k is added.\r\n              for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n              j = xc[0] += k;\r\n              for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n              // if i != k the length has increased.\r\n              if (i != k) {\r\n                x.e++;\r\n                if (xc[0] == BASE) xc[0] = 1;\r\n              }\r\n\r\n              break;\r\n            } else {\r\n              xc[ni] += k;\r\n              if (xc[ni] != BASE) break;\r\n              xc[ni--] = 0;\r\n              k = 1;\r\n            }\r\n          }\r\n        }\r\n\r\n        // Remove trailing zeros.\r\n        for (i = xc.length; xc[--i] === 0; xc.pop());\r\n      }\r\n\r\n      // Overflow? Infinity.\r\n      if (x.e > MAX_EXP) {\r\n        x.c = x.e = null;\r\n\r\n      // Underflow? Zero.\r\n      } else if (x.e < MIN_EXP) {\r\n        x.c = [x.e = 0];\r\n      }\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  function valueOf(n) {\r\n    var str,\r\n      e = n.e;\r\n\r\n    if (e === null) return n.toString();\r\n\r\n    str = coeffToString(n.c);\r\n\r\n    str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n      ? toExponential(str, e)\r\n      : toFixedPoint(str, e, '0');\r\n\r\n    return n.s < 0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n   */\r\n  P.absoluteValue = P.abs = function () {\r\n    var x = new BigNumber(this);\r\n    if (x.s < 0) x.s = 1;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return\r\n   *   1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n   *   -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n   *   0 if they have the same value,\r\n   *   or null if the value of either is NaN.\r\n   */\r\n  P.comparedTo = function (y, b) {\r\n    return compare(this, new BigNumber(y, b));\r\n  };\r\n\r\n\r\n  /*\r\n   * If dp is undefined or null or true or false, return the number of decimal places of the\r\n   * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n   *\r\n   * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n   * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n   * ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   */\r\n  P.decimalPlaces = P.dp = function (dp, rm) {\r\n    var c, n, v,\r\n      x = this;\r\n\r\n    if (dp != null) {\r\n      intCheck(dp, 0, MAX);\r\n      if (rm == null) rm = ROUNDING_MODE;\r\n      else intCheck(rm, 0, 8);\r\n\r\n      return round(new BigNumber(x), dp + x.e + 1, rm);\r\n    }\r\n\r\n    if (!(c = x.c)) return null;\r\n    n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n    // Subtract the number of trailing zeros of the last number.\r\n    if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n    if (n < 0) n = 0;\r\n\r\n    return n;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n / 0 = I\r\n   *  n / N = N\r\n   *  n / I = 0\r\n   *  0 / n = 0\r\n   *  0 / 0 = N\r\n   *  0 / N = N\r\n   *  0 / I = 0\r\n   *  N / n = N\r\n   *  N / 0 = N\r\n   *  N / N = N\r\n   *  N / I = N\r\n   *  I / n = I\r\n   *  I / 0 = I\r\n   *  I / N = N\r\n   *  I / I = N\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n   * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n   */\r\n  P.dividedBy = P.div = function (y, b) {\r\n    return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n   * BigNumber by the value of BigNumber(y, b).\r\n   */\r\n  P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n    return div(this, new BigNumber(y, b), 0, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n   *\r\n   * If m is present, return the result modulo m.\r\n   * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n   * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n   *\r\n   * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n   * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n   *\r\n   * n {number|string|BigNumber} The exponent. An integer.\r\n   * [m] {number|string|BigNumber} The modulus.\r\n   *\r\n   * '[BigNumber Error] Exponent not an integer: {n}'\r\n   */\r\n  P.exponentiatedBy = P.pow = function (n, m) {\r\n    var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n      x = this;\r\n\r\n    n = new BigNumber(n);\r\n\r\n    // Allow NaN and ±Infinity, but not other non-integers.\r\n    if (n.c && !n.isInteger()) {\r\n      throw Error\r\n        (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n    }\r\n\r\n    if (m != null) m = new BigNumber(m);\r\n\r\n    // Exponent of MAX_SAFE_INTEGER is 15.\r\n    nIsBig = n.e > 14;\r\n\r\n    // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n    if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n      // The sign of the result of pow when x is negative depends on the evenness of n.\r\n      // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n      y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n      return m ? y.mod(m) : y;\r\n    }\r\n\r\n    nIsNeg = n.s < 0;\r\n\r\n    if (m) {\r\n\r\n      // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n      if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n      isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n      if (isModExp) x = x.mod(m);\r\n\r\n    // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n    // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n    } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n      // [1, 240000000]\r\n      ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n      // [80000000000000]  [99999750000000]\r\n      : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n      // If x is negative and n is odd, k = -0, else k = 0.\r\n      k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n      // If x >= 1, k = ±Infinity.\r\n      if (x.e > -1) k = 1 / k;\r\n\r\n      // If n is negative return ±0, else return ±Infinity.\r\n      return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n    } else if (POW_PRECISION) {\r\n\r\n      // Truncating each coefficient array to a length of k after each multiplication\r\n      // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n      // i.e. there will be a minimum of 28 guard digits retained.\r\n      k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n    }\r\n\r\n    if (nIsBig) {\r\n      half = new BigNumber(0.5);\r\n      if (nIsNeg) n.s = 1;\r\n      nIsOdd = isOdd(n);\r\n    } else {\r\n      i = Math.abs(+valueOf(n));\r\n      nIsOdd = i % 2;\r\n    }\r\n\r\n    y = new BigNumber(ONE);\r\n\r\n    // Performs 54 loop iterations for n of 9007199254740991.\r\n    for (; ;) {\r\n\r\n      if (nIsOdd) {\r\n        y = y.times(x);\r\n        if (!y.c) break;\r\n\r\n        if (k) {\r\n          if (y.c.length > k) y.c.length = k;\r\n        } else if (isModExp) {\r\n          y = y.mod(m);    //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n        }\r\n      }\r\n\r\n      if (i) {\r\n        i = mathfloor(i / 2);\r\n        if (i === 0) break;\r\n        nIsOdd = i % 2;\r\n      } else {\r\n        n = n.times(half);\r\n        round(n, n.e + 1, 1);\r\n\r\n        if (n.e > 14) {\r\n          nIsOdd = isOdd(n);\r\n        } else {\r\n          i = +valueOf(n);\r\n          if (i === 0) break;\r\n          nIsOdd = i % 2;\r\n        }\r\n      }\r\n\r\n      x = x.times(x);\r\n\r\n      if (k) {\r\n        if (x.c && x.c.length > k) x.c.length = k;\r\n      } else if (isModExp) {\r\n        x = x.mod(m);    //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n      }\r\n    }\r\n\r\n    if (isModExp) return y;\r\n    if (nIsNeg) y = ONE.div(y);\r\n\r\n    return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n   * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n   */\r\n  P.integerValue = function (rm) {\r\n    var n = new BigNumber(this);\r\n    if (rm == null) rm = ROUNDING_MODE;\r\n    else intCheck(rm, 0, 8);\r\n    return round(n, n.e + 1, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n   * otherwise return false.\r\n   */\r\n  P.isEqualTo = P.eq = function (y, b) {\r\n    return compare(this, new BigNumber(y, b)) === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n   */\r\n  P.isFinite = function () {\r\n    return !!this.c;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n   * otherwise return false.\r\n   */\r\n  P.isGreaterThan = P.gt = function (y, b) {\r\n    return compare(this, new BigNumber(y, b)) > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is greater than or equal to the value of\r\n   * BigNumber(y, b), otherwise return false.\r\n   */\r\n  P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n    return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n   */\r\n  P.isInteger = function () {\r\n    return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n   * otherwise return false.\r\n   */\r\n  P.isLessThan = P.lt = function (y, b) {\r\n    return compare(this, new BigNumber(y, b)) < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is less than or equal to the value of\r\n   * BigNumber(y, b), otherwise return false.\r\n   */\r\n  P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n    return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n   */\r\n  P.isNaN = function () {\r\n    return !this.s;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is negative, otherwise return false.\r\n   */\r\n  P.isNegative = function () {\r\n    return this.s < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is positive, otherwise return false.\r\n   */\r\n  P.isPositive = function () {\r\n    return this.s > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n   */\r\n  P.isZero = function () {\r\n    return !!this.c && this.c[0] == 0;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n - 0 = n\r\n   *  n - N = N\r\n   *  n - I = -I\r\n   *  0 - n = -n\r\n   *  0 - 0 = 0\r\n   *  0 - N = N\r\n   *  0 - I = -I\r\n   *  N - n = N\r\n   *  N - 0 = N\r\n   *  N - N = N\r\n   *  N - I = N\r\n   *  I - n = I\r\n   *  I - 0 = I\r\n   *  I - N = N\r\n   *  I - I = N\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n   * BigNumber(y, b).\r\n   */\r\n  P.minus = function (y, b) {\r\n    var i, j, t, xLTy,\r\n      x = this,\r\n      a = x.s;\r\n\r\n    y = new BigNumber(y, b);\r\n    b = y.s;\r\n\r\n    // Either NaN?\r\n    if (!a || !b) return new BigNumber(NaN);\r\n\r\n    // Signs differ?\r\n    if (a != b) {\r\n      y.s = -b;\r\n      return x.plus(y);\r\n    }\r\n\r\n    var xe = x.e / LOG_BASE,\r\n      ye = y.e / LOG_BASE,\r\n      xc = x.c,\r\n      yc = y.c;\r\n\r\n    if (!xe || !ye) {\r\n\r\n      // Either Infinity?\r\n      if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n      // Either zero?\r\n      if (!xc[0] || !yc[0]) {\r\n\r\n        // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n        return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n         // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n         ROUNDING_MODE == 3 ? -0 : 0);\r\n      }\r\n    }\r\n\r\n    xe = bitFloor(xe);\r\n    ye = bitFloor(ye);\r\n    xc = xc.slice();\r\n\r\n    // Determine which is the bigger number.\r\n    if (a = xe - ye) {\r\n\r\n      if (xLTy = a < 0) {\r\n        a = -a;\r\n        t = xc;\r\n      } else {\r\n        ye = xe;\r\n        t = yc;\r\n      }\r\n\r\n      t.reverse();\r\n\r\n      // Prepend zeros to equalise exponents.\r\n      for (b = a; b--; t.push(0));\r\n      t.reverse();\r\n    } else {\r\n\r\n      // Exponents equal. Check digit by digit.\r\n      j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n      for (a = b = 0; b < j; b++) {\r\n\r\n        if (xc[b] != yc[b]) {\r\n          xLTy = xc[b] < yc[b];\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    // x < y? Point xc to the array of the bigger number.\r\n    if (xLTy) {\r\n      t = xc;\r\n      xc = yc;\r\n      yc = t;\r\n      y.s = -y.s;\r\n    }\r\n\r\n    b = (j = yc.length) - (i = xc.length);\r\n\r\n    // Append zeros to xc if shorter.\r\n    // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n    if (b > 0) for (; b--; xc[i++] = 0);\r\n    b = BASE - 1;\r\n\r\n    // Subtract yc from xc.\r\n    for (; j > a;) {\r\n\r\n      if (xc[--j] < yc[j]) {\r\n        for (i = j; i && !xc[--i]; xc[i] = b);\r\n        --xc[i];\r\n        xc[j] += BASE;\r\n      }\r\n\r\n      xc[j] -= yc[j];\r\n    }\r\n\r\n    // Remove leading zeros and adjust exponent accordingly.\r\n    for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n    // Zero?\r\n    if (!xc[0]) {\r\n\r\n      // Following IEEE 754 (2008) 6.3,\r\n      // n - n = +0  but  n - n = -0  when rounding towards -Infinity.\r\n      y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n      y.c = [y.e = 0];\r\n      return y;\r\n    }\r\n\r\n    // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n    // for finite x and y.\r\n    return normalise(y, xc, ye);\r\n  };\r\n\r\n\r\n  /*\r\n   *   n % 0 =  N\r\n   *   n % N =  N\r\n   *   n % I =  n\r\n   *   0 % n =  0\r\n   *  -0 % n = -0\r\n   *   0 % 0 =  N\r\n   *   0 % N =  N\r\n   *   0 % I =  0\r\n   *   N % n =  N\r\n   *   N % 0 =  N\r\n   *   N % N =  N\r\n   *   N % I =  N\r\n   *   I % n =  N\r\n   *   I % 0 =  N\r\n   *   I % N =  N\r\n   *   I % I =  N\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n   * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n   */\r\n  P.modulo = P.mod = function (y, b) {\r\n    var q, s,\r\n      x = this;\r\n\r\n    y = new BigNumber(y, b);\r\n\r\n    // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n    if (!x.c || !y.s || y.c && !y.c[0]) {\r\n      return new BigNumber(NaN);\r\n\r\n    // Return x if y is Infinity or x is zero.\r\n    } else if (!y.c || x.c && !x.c[0]) {\r\n      return new BigNumber(x);\r\n    }\r\n\r\n    if (MODULO_MODE == 9) {\r\n\r\n      // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n      // r = x - qy    where  0 <= r < abs(y)\r\n      s = y.s;\r\n      y.s = 1;\r\n      q = div(x, y, 0, 3);\r\n      y.s = s;\r\n      q.s *= s;\r\n    } else {\r\n      q = div(x, y, 0, MODULO_MODE);\r\n    }\r\n\r\n    y = x.minus(q.times(y));\r\n\r\n    // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n    if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n    return y;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n * 0 = 0\r\n   *  n * N = N\r\n   *  n * I = I\r\n   *  0 * n = 0\r\n   *  0 * 0 = 0\r\n   *  0 * N = N\r\n   *  0 * I = N\r\n   *  N * n = N\r\n   *  N * 0 = N\r\n   *  N * N = N\r\n   *  N * I = N\r\n   *  I * n = I\r\n   *  I * 0 = N\r\n   *  I * N = N\r\n   *  I * I = I\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n   * of BigNumber(y, b).\r\n   */\r\n  P.multipliedBy = P.times = function (y, b) {\r\n    var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n      base, sqrtBase,\r\n      x = this,\r\n      xc = x.c,\r\n      yc = (y = new BigNumber(y, b)).c;\r\n\r\n    // Either NaN, ±Infinity or ±0?\r\n    if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n      // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n      if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n        y.c = y.e = y.s = null;\r\n      } else {\r\n        y.s *= x.s;\r\n\r\n        // Return ±Infinity if either is ±Infinity.\r\n        if (!xc || !yc) {\r\n          y.c = y.e = null;\r\n\r\n        // Return ±0 if either is ±0.\r\n        } else {\r\n          y.c = [0];\r\n          y.e = 0;\r\n        }\r\n      }\r\n\r\n      return y;\r\n    }\r\n\r\n    e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n    y.s *= x.s;\r\n    xcL = xc.length;\r\n    ycL = yc.length;\r\n\r\n    // Ensure xc points to longer array and xcL to its length.\r\n    if (xcL < ycL) {\r\n      zc = xc;\r\n      xc = yc;\r\n      yc = zc;\r\n      i = xcL;\r\n      xcL = ycL;\r\n      ycL = i;\r\n    }\r\n\r\n    // Initialise the result array with zeros.\r\n    for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n    base = BASE;\r\n    sqrtBase = SQRT_BASE;\r\n\r\n    for (i = ycL; --i >= 0;) {\r\n      c = 0;\r\n      ylo = yc[i] % sqrtBase;\r\n      yhi = yc[i] / sqrtBase | 0;\r\n\r\n      for (k = xcL, j = i + k; j > i;) {\r\n        xlo = xc[--k] % sqrtBase;\r\n        xhi = xc[k] / sqrtBase | 0;\r\n        m = yhi * xlo + xhi * ylo;\r\n        xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n        c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n        zc[j--] = xlo % base;\r\n      }\r\n\r\n      zc[j] = c;\r\n    }\r\n\r\n    if (c) {\r\n      ++e;\r\n    } else {\r\n      zc.splice(0, 1);\r\n    }\r\n\r\n    return normalise(y, zc, e);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n   * i.e. multiplied by -1.\r\n   */\r\n  P.negated = function () {\r\n    var x = new BigNumber(this);\r\n    x.s = -x.s || null;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n + 0 = n\r\n   *  n + N = N\r\n   *  n + I = I\r\n   *  0 + n = n\r\n   *  0 + 0 = 0\r\n   *  0 + N = N\r\n   *  0 + I = I\r\n   *  N + n = N\r\n   *  N + 0 = N\r\n   *  N + N = N\r\n   *  N + I = N\r\n   *  I + n = I\r\n   *  I + 0 = I\r\n   *  I + N = N\r\n   *  I + I = I\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n   * BigNumber(y, b).\r\n   */\r\n  P.plus = function (y, b) {\r\n    var t,\r\n      x = this,\r\n      a = x.s;\r\n\r\n    y = new BigNumber(y, b);\r\n    b = y.s;\r\n\r\n    // Either NaN?\r\n    if (!a || !b) return new BigNumber(NaN);\r\n\r\n    // Signs differ?\r\n     if (a != b) {\r\n      y.s = -b;\r\n      return x.minus(y);\r\n    }\r\n\r\n    var xe = x.e / LOG_BASE,\r\n      ye = y.e / LOG_BASE,\r\n      xc = x.c,\r\n      yc = y.c;\r\n\r\n    if (!xe || !ye) {\r\n\r\n      // Return ±Infinity if either ±Infinity.\r\n      if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n      // Either zero?\r\n      // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n      if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n    }\r\n\r\n    xe = bitFloor(xe);\r\n    ye = bitFloor(ye);\r\n    xc = xc.slice();\r\n\r\n    // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n    if (a = xe - ye) {\r\n      if (a > 0) {\r\n        ye = xe;\r\n        t = yc;\r\n      } else {\r\n        a = -a;\r\n        t = xc;\r\n      }\r\n\r\n      t.reverse();\r\n      for (; a--; t.push(0));\r\n      t.reverse();\r\n    }\r\n\r\n    a = xc.length;\r\n    b = yc.length;\r\n\r\n    // Point xc to the longer array, and b to the shorter length.\r\n    if (a - b < 0) {\r\n      t = yc;\r\n      yc = xc;\r\n      xc = t;\r\n      b = a;\r\n    }\r\n\r\n    // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n    for (a = 0; b;) {\r\n      a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n      xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n    }\r\n\r\n    if (a) {\r\n      xc = [a].concat(xc);\r\n      ++ye;\r\n    }\r\n\r\n    // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n    // ye = MAX_EXP + 1 possible\r\n    return normalise(y, xc, ye);\r\n  };\r\n\r\n\r\n  /*\r\n   * If sd is undefined or null or true or false, return the number of significant digits of\r\n   * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n   * If sd is true include integer-part trailing zeros in the count.\r\n   *\r\n   * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n   * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n   * ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n   *                     boolean: whether to count integer-part trailing zeros: true or false.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n   */\r\n  P.precision = P.sd = function (sd, rm) {\r\n    var c, n, v,\r\n      x = this;\r\n\r\n    if (sd != null && sd !== !!sd) {\r\n      intCheck(sd, 1, MAX);\r\n      if (rm == null) rm = ROUNDING_MODE;\r\n      else intCheck(rm, 0, 8);\r\n\r\n      return round(new BigNumber(x), sd, rm);\r\n    }\r\n\r\n    if (!(c = x.c)) return null;\r\n    v = c.length - 1;\r\n    n = v * LOG_BASE + 1;\r\n\r\n    if (v = c[v]) {\r\n\r\n      // Subtract the number of trailing zeros of the last element.\r\n      for (; v % 10 == 0; v /= 10, n--);\r\n\r\n      // Add the number of digits of the first element.\r\n      for (v = c[0]; v >= 10; v /= 10, n++);\r\n    }\r\n\r\n    if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n    return n;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n   * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n   *\r\n   * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n   */\r\n  P.shiftedBy = function (k) {\r\n    intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n    return this.times('1e' + k);\r\n  };\r\n\r\n\r\n  /*\r\n   *  sqrt(-n) =  N\r\n   *  sqrt(N) =  N\r\n   *  sqrt(-I) =  N\r\n   *  sqrt(I) =  I\r\n   *  sqrt(0) =  0\r\n   *  sqrt(-0) = -0\r\n   *\r\n   * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n   * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n   */\r\n  P.squareRoot = P.sqrt = function () {\r\n    var m, n, r, rep, t,\r\n      x = this,\r\n      c = x.c,\r\n      s = x.s,\r\n      e = x.e,\r\n      dp = DECIMAL_PLACES + 4,\r\n      half = new BigNumber('0.5');\r\n\r\n    // Negative/NaN/Infinity/zero?\r\n    if (s !== 1 || !c || !c[0]) {\r\n      return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n    }\r\n\r\n    // Initial estimate.\r\n    s = Math.sqrt(+valueOf(x));\r\n\r\n    // Math.sqrt underflow/overflow?\r\n    // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n    if (s == 0 || s == 1 / 0) {\r\n      n = coeffToString(c);\r\n      if ((n.length + e) % 2 == 0) n += '0';\r\n      s = Math.sqrt(+n);\r\n      e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n      if (s == 1 / 0) {\r\n        n = '5e' + e;\r\n      } else {\r\n        n = s.toExponential();\r\n        n = n.slice(0, n.indexOf('e') + 1) + e;\r\n      }\r\n\r\n      r = new BigNumber(n);\r\n    } else {\r\n      r = new BigNumber(s + '');\r\n    }\r\n\r\n    // Check for zero.\r\n    // r could be zero if MIN_EXP is changed after the this value was created.\r\n    // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n    // coeffToString to throw.\r\n    if (r.c[0]) {\r\n      e = r.e;\r\n      s = e + dp;\r\n      if (s < 3) s = 0;\r\n\r\n      // Newton-Raphson iteration.\r\n      for (; ;) {\r\n        t = r;\r\n        r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n        if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n          // The exponent of r may here be one less than the final result exponent,\r\n          // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n          // are indexed correctly.\r\n          if (r.e < e) --s;\r\n          n = n.slice(s - 3, s + 1);\r\n\r\n          // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n          // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n          // iteration.\r\n          if (n == '9999' || !rep && n == '4999') {\r\n\r\n            // On the first iteration only, check to see if rounding up gives the\r\n            // exact result as the nines may infinitely repeat.\r\n            if (!rep) {\r\n              round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n              if (t.times(t).eq(x)) {\r\n                r = t;\r\n                break;\r\n              }\r\n            }\r\n\r\n            dp += 4;\r\n            s += 4;\r\n            rep = 1;\r\n          } else {\r\n\r\n            // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n            // result. If not, then there are further digits and m will be truthy.\r\n            if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n              // Truncate to the first rounding digit.\r\n              round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n              m = !r.times(r).eq(x);\r\n            }\r\n\r\n            break;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in exponential notation and\r\n   * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   */\r\n  P.toExponential = function (dp, rm) {\r\n    if (dp != null) {\r\n      intCheck(dp, 0, MAX);\r\n      dp++;\r\n    }\r\n    return format(this, dp, rm, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n   * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n   * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   */\r\n  P.toFixed = function (dp, rm) {\r\n    if (dp != null) {\r\n      intCheck(dp, 0, MAX);\r\n      dp = dp + this.e + 1;\r\n    }\r\n    return format(this, dp, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n   * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n   * of the format or FORMAT object (see BigNumber.set).\r\n   *\r\n   * The formatting object may contain some or all of the properties shown below.\r\n   *\r\n   * FORMAT = {\r\n   *   prefix: '',\r\n   *   groupSize: 3,\r\n   *   secondaryGroupSize: 0,\r\n   *   groupSeparator: ',',\r\n   *   decimalSeparator: '.',\r\n   *   fractionGroupSize: 0,\r\n   *   fractionGroupSeparator: '\\xA0',      // non-breaking space\r\n   *   suffix: ''\r\n   * };\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   * [format] {object} Formatting options. See FORMAT pbject above.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   * '[BigNumber Error] Argument not an object: {format}'\r\n   */\r\n  P.toFormat = function (dp, rm, format) {\r\n    var str,\r\n      x = this;\r\n\r\n    if (format == null) {\r\n      if (dp != null && rm && typeof rm == 'object') {\r\n        format = rm;\r\n        rm = null;\r\n      } else if (dp && typeof dp == 'object') {\r\n        format = dp;\r\n        dp = rm = null;\r\n      } else {\r\n        format = FORMAT;\r\n      }\r\n    } else if (typeof format != 'object') {\r\n      throw Error\r\n        (bignumberError + 'Argument not an object: ' + format);\r\n    }\r\n\r\n    str = x.toFixed(dp, rm);\r\n\r\n    if (x.c) {\r\n      var i,\r\n        arr = str.split('.'),\r\n        g1 = +format.groupSize,\r\n        g2 = +format.secondaryGroupSize,\r\n        groupSeparator = format.groupSeparator || '',\r\n        intPart = arr[0],\r\n        fractionPart = arr[1],\r\n        isNeg = x.s < 0,\r\n        intDigits = isNeg ? intPart.slice(1) : intPart,\r\n        len = intDigits.length;\r\n\r\n      if (g2) {\r\n        i = g1;\r\n        g1 = g2;\r\n        g2 = i;\r\n        len -= i;\r\n      }\r\n\r\n      if (g1 > 0 && len > 0) {\r\n        i = len % g1 || g1;\r\n        intPart = intDigits.substr(0, i);\r\n        for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n        if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n        if (isNeg) intPart = '-' + intPart;\r\n      }\r\n\r\n      str = fractionPart\r\n       ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n        ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n         '$&' + (format.fractionGroupSeparator || ''))\r\n        : fractionPart)\r\n       : intPart;\r\n    }\r\n\r\n    return (format.prefix || '') + str + (format.suffix || '');\r\n  };\r\n\r\n\r\n  /*\r\n   * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n   * fraction with an integer numerator and an integer denominator.\r\n   * The denominator will be a positive non-zero value less than or equal to the specified\r\n   * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n   * the lowest value necessary to represent the number exactly.\r\n   *\r\n   * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n   *\r\n   * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n   */\r\n  P.toFraction = function (md) {\r\n    var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n      x = this,\r\n      xc = x.c;\r\n\r\n    if (md != null) {\r\n      n = new BigNumber(md);\r\n\r\n      // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n      if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n        throw Error\r\n          (bignumberError + 'Argument ' +\r\n            (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n      }\r\n    }\r\n\r\n    if (!xc) return new BigNumber(x);\r\n\r\n    d = new BigNumber(ONE);\r\n    n1 = d0 = new BigNumber(ONE);\r\n    d1 = n0 = new BigNumber(ONE);\r\n    s = coeffToString(xc);\r\n\r\n    // Determine initial denominator.\r\n    // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n    e = d.e = s.length - x.e - 1;\r\n    d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n    md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n    exp = MAX_EXP;\r\n    MAX_EXP = 1 / 0;\r\n    n = new BigNumber(s);\r\n\r\n    // n0 = d1 = 0\r\n    n0.c[0] = 0;\r\n\r\n    for (; ;)  {\r\n      q = div(n, d, 0, 1);\r\n      d2 = d0.plus(q.times(d1));\r\n      if (d2.comparedTo(md) == 1) break;\r\n      d0 = d1;\r\n      d1 = d2;\r\n      n1 = n0.plus(q.times(d2 = n1));\r\n      n0 = d2;\r\n      d = n.minus(q.times(d2 = d));\r\n      n = d2;\r\n    }\r\n\r\n    d2 = div(md.minus(d0), d1, 0, 1);\r\n    n0 = n0.plus(d2.times(n1));\r\n    d0 = d0.plus(d2.times(d1));\r\n    n0.s = n1.s = x.s;\r\n    e = e * 2;\r\n\r\n    // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n    r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n        div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n    MAX_EXP = exp;\r\n\r\n    return r;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the value of this BigNumber converted to a number primitive.\r\n   */\r\n  P.toNumber = function () {\r\n    return +valueOf(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n   * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n   * necessary to represent the integer part of the value in fixed-point notation, then use\r\n   * exponential notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n   */\r\n  P.toPrecision = function (sd, rm) {\r\n    if (sd != null) intCheck(sd, 1, MAX);\r\n    return format(this, sd, rm, 2);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n   * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n   * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n   * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n   * TO_EXP_NEG, return exponential notation.\r\n   *\r\n   * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n   *\r\n   * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n   */\r\n  P.toString = function (b) {\r\n    var str,\r\n      n = this,\r\n      s = n.s,\r\n      e = n.e;\r\n\r\n    // Infinity or NaN?\r\n    if (e === null) {\r\n      if (s) {\r\n        str = 'Infinity';\r\n        if (s < 0) str = '-' + str;\r\n      } else {\r\n        str = 'NaN';\r\n      }\r\n    } else {\r\n      if (b == null) {\r\n        str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n         ? toExponential(coeffToString(n.c), e)\r\n         : toFixedPoint(coeffToString(n.c), e, '0');\r\n      } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n        n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n        str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n      } else {\r\n        intCheck(b, 2, ALPHABET.length, 'Base');\r\n        str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n      }\r\n\r\n      if (s < 0 && n.c[0]) str = '-' + str;\r\n    }\r\n\r\n    return str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return as toString, but do not accept a base argument, and include the minus sign for\r\n   * negative zero.\r\n   */\r\n  P.valueOf = P.toJSON = function () {\r\n    return valueOf(this);\r\n  };\r\n\r\n\r\n  P._isBigNumber = true;\r\n\r\n  P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n  // Node.js v10.12.0+\r\n  P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n  if (configObject != null) BigNumber.set(configObject);\r\n\r\n  return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n  var i = n | 0;\r\n  return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n  var s, z,\r\n    i = 1,\r\n    j = a.length,\r\n    r = a[0] + '';\r\n\r\n  for (; i < j;) {\r\n    s = a[i++] + '';\r\n    z = LOG_BASE - s.length;\r\n    for (; z--; s = '0' + s);\r\n    r += s;\r\n  }\r\n\r\n  // Determine trailing zeros.\r\n  for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n  return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n  var a, b,\r\n    xc = x.c,\r\n    yc = y.c,\r\n    i = x.s,\r\n    j = y.s,\r\n    k = x.e,\r\n    l = y.e;\r\n\r\n  // Either NaN?\r\n  if (!i || !j) return null;\r\n\r\n  a = xc && !xc[0];\r\n  b = yc && !yc[0];\r\n\r\n  // Either zero?\r\n  if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n  // Signs differ?\r\n  if (i != j) return i;\r\n\r\n  a = i < 0;\r\n  b = k == l;\r\n\r\n  // Either Infinity?\r\n  if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n  // Compare exponents.\r\n  if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n  j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n  // Compare digit by digit.\r\n  for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n  // Compare lengths.\r\n  return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n  if (n < min || n > max || n !== mathfloor(n)) {\r\n    throw Error\r\n     (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n       ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n       : ' not a primitive number: ') + String(n));\r\n  }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n  var k = n.c.length - 1;\r\n  return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n  return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n   (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n  var len, zs;\r\n\r\n  // Negative exponent?\r\n  if (e < 0) {\r\n\r\n    // Prepend zeros.\r\n    for (zs = z + '.'; ++e; zs += z);\r\n    str = zs + str;\r\n\r\n  // Positive exponent\r\n  } else {\r\n    len = str.length;\r\n\r\n    // Append zeros.\r\n    if (++e > len) {\r\n      for (zs = z, e -= len; --e; zs += z);\r\n      str += zs;\r\n    } else if (e < len) {\r\n      str = str.slice(0, e) + '.' + str.slice(e);\r\n    }\r\n  }\r\n\r\n  return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","// src/index.ts\nvar SplayTreeNode = class {\n  key;\n  left = null;\n  right = null;\n  constructor(key) {\n    this.key = key;\n  }\n};\nvar SplayTreeSetNode = class extends SplayTreeNode {\n  constructor(key) {\n    super(key);\n  }\n};\nvar SplayTreeMapNode = class _SplayTreeMapNode extends SplayTreeNode {\n  value;\n  constructor(key, value) {\n    super(key);\n    this.value = value;\n  }\n  replaceValue(value) {\n    const node = new _SplayTreeMapNode(this.key, value);\n    node.left = this.left;\n    node.right = this.right;\n    return node;\n  }\n};\nvar SplayTree = class {\n  size = 0;\n  modificationCount = 0;\n  splayCount = 0;\n  splay(key) {\n    const root = this.root;\n    if (root == null) {\n      this.compare(key, key);\n      return -1;\n    }\n    let right = null;\n    let newTreeRight = null;\n    let left = null;\n    let newTreeLeft = null;\n    let current = root;\n    const compare = this.compare;\n    let comp;\n    while (true) {\n      comp = compare(current.key, key);\n      if (comp > 0) {\n        let currentLeft = current.left;\n        if (currentLeft == null) break;\n        comp = compare(currentLeft.key, key);\n        if (comp > 0) {\n          current.left = currentLeft.right;\n          currentLeft.right = current;\n          current = currentLeft;\n          currentLeft = current.left;\n          if (currentLeft == null) break;\n        }\n        if (right == null) {\n          newTreeRight = current;\n        } else {\n          right.left = current;\n        }\n        right = current;\n        current = currentLeft;\n      } else if (comp < 0) {\n        let currentRight = current.right;\n        if (currentRight == null) break;\n        comp = compare(currentRight.key, key);\n        if (comp < 0) {\n          current.right = currentRight.left;\n          currentRight.left = current;\n          current = currentRight;\n          currentRight = current.right;\n          if (currentRight == null) break;\n        }\n        if (left == null) {\n          newTreeLeft = current;\n        } else {\n          left.right = current;\n        }\n        left = current;\n        current = currentRight;\n      } else {\n        break;\n      }\n    }\n    if (left != null) {\n      left.right = current.left;\n      current.left = newTreeLeft;\n    }\n    if (right != null) {\n      right.left = current.right;\n      current.right = newTreeRight;\n    }\n    if (this.root !== current) {\n      this.root = current;\n      this.splayCount++;\n    }\n    return comp;\n  }\n  splayMin(node) {\n    let current = node;\n    let nextLeft = current.left;\n    while (nextLeft != null) {\n      const left = nextLeft;\n      current.left = left.right;\n      left.right = current;\n      current = left;\n      nextLeft = current.left;\n    }\n    return current;\n  }\n  splayMax(node) {\n    let current = node;\n    let nextRight = current.right;\n    while (nextRight != null) {\n      const right = nextRight;\n      current.right = right.left;\n      right.left = current;\n      current = right;\n      nextRight = current.right;\n    }\n    return current;\n  }\n  _delete(key) {\n    if (this.root == null) return null;\n    const comp = this.splay(key);\n    if (comp != 0) return null;\n    let root = this.root;\n    const result = root;\n    const left = root.left;\n    this.size--;\n    if (left == null) {\n      this.root = root.right;\n    } else {\n      const right = root.right;\n      root = this.splayMax(left);\n      root.right = right;\n      this.root = root;\n    }\n    this.modificationCount++;\n    return result;\n  }\n  addNewRoot(node, comp) {\n    this.size++;\n    this.modificationCount++;\n    const root = this.root;\n    if (root == null) {\n      this.root = node;\n      return;\n    }\n    if (comp < 0) {\n      node.left = root;\n      node.right = root.right;\n      root.right = null;\n    } else {\n      node.right = root;\n      node.left = root.left;\n      root.left = null;\n    }\n    this.root = node;\n  }\n  _first() {\n    const root = this.root;\n    if (root == null) return null;\n    this.root = this.splayMin(root);\n    return this.root;\n  }\n  _last() {\n    const root = this.root;\n    if (root == null) return null;\n    this.root = this.splayMax(root);\n    return this.root;\n  }\n  clear() {\n    this.root = null;\n    this.size = 0;\n    this.modificationCount++;\n  }\n  has(key) {\n    return this.validKey(key) && this.splay(key) == 0;\n  }\n  defaultCompare() {\n    return (a, b) => a < b ? -1 : a > b ? 1 : 0;\n  }\n  wrap() {\n    return {\n      getRoot: () => {\n        return this.root;\n      },\n      setRoot: (root) => {\n        this.root = root;\n      },\n      getSize: () => {\n        return this.size;\n      },\n      getModificationCount: () => {\n        return this.modificationCount;\n      },\n      getSplayCount: () => {\n        return this.splayCount;\n      },\n      setSplayCount: (count) => {\n        this.splayCount = count;\n      },\n      splay: (key) => {\n        return this.splay(key);\n      },\n      has: (key) => {\n        return this.has(key);\n      }\n    };\n  }\n};\nvar SplayTreeMap = class extends SplayTree {\n  root = null;\n  compare;\n  validKey;\n  constructor(compare, isValidKey) {\n    super();\n    this.compare = compare ?? this.defaultCompare();\n    this.validKey = isValidKey ?? ((a) => a != null && a != void 0);\n  }\n  delete(key) {\n    if (!this.validKey(key)) return false;\n    return this._delete(key) != null;\n  }\n  forEach(f) {\n    const nodes = new SplayTreeMapEntryIterableIterator(this.wrap());\n    let result;\n    while (result = nodes.next(), !result.done) {\n      f(result.value[1], result.value[0], this);\n    }\n  }\n  get(key) {\n    if (!this.validKey(key)) return void 0;\n    if (this.root != null) {\n      const comp = this.splay(key);\n      if (comp == 0) {\n        return this.root.value;\n      }\n    }\n    return void 0;\n  }\n  hasValue(value) {\n    const initialSplayCount = this.splayCount;\n    const visit = (node) => {\n      while (node != null) {\n        if (node.value == value) return true;\n        if (initialSplayCount != this.splayCount) {\n          throw \"Concurrent modification during iteration.\";\n        }\n        if (node.right != null && visit(node.right)) {\n          return true;\n        }\n        node = node.left;\n      }\n      return false;\n    };\n    return visit(this.root);\n  }\n  set(key, value) {\n    const comp = this.splay(key);\n    if (comp == 0) {\n      this.root = this.root.replaceValue(value);\n      this.splayCount += 1;\n      return this;\n    }\n    this.addNewRoot(new SplayTreeMapNode(key, value), comp);\n    return this;\n  }\n  setAll(other) {\n    other.forEach((value, key) => {\n      this.set(key, value);\n    });\n  }\n  setIfAbsent(key, ifAbsent) {\n    let comp = this.splay(key);\n    if (comp == 0) {\n      return this.root.value;\n    }\n    const modificationCount = this.modificationCount;\n    const splayCount = this.splayCount;\n    const value = ifAbsent();\n    if (modificationCount != this.modificationCount) {\n      throw \"Concurrent modification during iteration.\";\n    }\n    if (splayCount != this.splayCount) {\n      comp = this.splay(key);\n    }\n    this.addNewRoot(new SplayTreeMapNode(key, value), comp);\n    return value;\n  }\n  isEmpty() {\n    return this.root == null;\n  }\n  isNotEmpty() {\n    return !this.isEmpty();\n  }\n  firstKey() {\n    if (this.root == null) return null;\n    return this._first().key;\n  }\n  lastKey() {\n    if (this.root == null) return null;\n    return this._last().key;\n  }\n  lastKeyBefore(key) {\n    if (key == null) throw \"Invalid arguments(s)\";\n    if (this.root == null) return null;\n    const comp = this.splay(key);\n    if (comp < 0) return this.root.key;\n    let node = this.root.left;\n    if (node == null) return null;\n    let nodeRight = node.right;\n    while (nodeRight != null) {\n      node = nodeRight;\n      nodeRight = node.right;\n    }\n    return node.key;\n  }\n  firstKeyAfter(key) {\n    if (key == null) throw \"Invalid arguments(s)\";\n    if (this.root == null) return null;\n    const comp = this.splay(key);\n    if (comp > 0) return this.root.key;\n    let node = this.root.right;\n    if (node == null) return null;\n    let nodeLeft = node.left;\n    while (nodeLeft != null) {\n      node = nodeLeft;\n      nodeLeft = node.left;\n    }\n    return node.key;\n  }\n  update(key, update, ifAbsent) {\n    let comp = this.splay(key);\n    if (comp == 0) {\n      const modificationCount = this.modificationCount;\n      const splayCount = this.splayCount;\n      const newValue = update(this.root.value);\n      if (modificationCount != this.modificationCount) {\n        throw \"Concurrent modification during iteration.\";\n      }\n      if (splayCount != this.splayCount) {\n        this.splay(key);\n      }\n      this.root = this.root.replaceValue(newValue);\n      this.splayCount += 1;\n      return newValue;\n    }\n    if (ifAbsent != null) {\n      const modificationCount = this.modificationCount;\n      const splayCount = this.splayCount;\n      const newValue = ifAbsent();\n      if (modificationCount != this.modificationCount) {\n        throw \"Concurrent modification during iteration.\";\n      }\n      if (splayCount != this.splayCount) {\n        comp = this.splay(key);\n      }\n      this.addNewRoot(new SplayTreeMapNode(key, newValue), comp);\n      return newValue;\n    }\n    throw \"Invalid argument (key): Key not in map.\";\n  }\n  updateAll(update) {\n    const root = this.root;\n    if (root == null) return;\n    const iterator = new SplayTreeMapEntryIterableIterator(this.wrap());\n    let node;\n    while (node = iterator.next(), !node.done) {\n      const newValue = update(...node.value);\n      iterator.replaceValue(newValue);\n    }\n  }\n  keys() {\n    return new SplayTreeKeyIterableIterator(this.wrap());\n  }\n  values() {\n    return new SplayTreeValueIterableIterator(this.wrap());\n  }\n  entries() {\n    return this[Symbol.iterator]();\n  }\n  [Symbol.iterator]() {\n    return new SplayTreeMapEntryIterableIterator(this.wrap());\n  }\n  [Symbol.toStringTag] = \"[object Map]\";\n};\nvar SplayTreeSet = class _SplayTreeSet extends SplayTree {\n  root = null;\n  compare;\n  validKey;\n  constructor(compare, isValidKey) {\n    super();\n    this.compare = compare ?? this.defaultCompare();\n    this.validKey = isValidKey ?? ((v) => v != null && v != void 0);\n  }\n  delete(element) {\n    if (!this.validKey(element)) return false;\n    return this._delete(element) != null;\n  }\n  deleteAll(elements) {\n    for (const element of elements) {\n      this.delete(element);\n    }\n  }\n  forEach(f) {\n    const nodes = this[Symbol.iterator]();\n    let result;\n    while (result = nodes.next(), !result.done) {\n      f(result.value, result.value, this);\n    }\n  }\n  add(element) {\n    const compare = this.splay(element);\n    if (compare != 0) this.addNewRoot(new SplayTreeSetNode(element), compare);\n    return this;\n  }\n  addAndReturn(element) {\n    const compare = this.splay(element);\n    if (compare != 0) this.addNewRoot(new SplayTreeSetNode(element), compare);\n    return this.root.key;\n  }\n  addAll(elements) {\n    for (const element of elements) {\n      this.add(element);\n    }\n  }\n  isEmpty() {\n    return this.root == null;\n  }\n  isNotEmpty() {\n    return this.root != null;\n  }\n  single() {\n    if (this.size == 0) throw \"Bad state: No element\";\n    if (this.size > 1) throw \"Bad state: Too many element\";\n    return this.root.key;\n  }\n  first() {\n    if (this.size == 0) throw \"Bad state: No element\";\n    return this._first().key;\n  }\n  last() {\n    if (this.size == 0) throw \"Bad state: No element\";\n    return this._last().key;\n  }\n  lastBefore(element) {\n    if (element == null) throw \"Invalid arguments(s)\";\n    if (this.root == null) return null;\n    const comp = this.splay(element);\n    if (comp < 0) return this.root.key;\n    let node = this.root.left;\n    if (node == null) return null;\n    let nodeRight = node.right;\n    while (nodeRight != null) {\n      node = nodeRight;\n      nodeRight = node.right;\n    }\n    return node.key;\n  }\n  firstAfter(element) {\n    if (element == null) throw \"Invalid arguments(s)\";\n    if (this.root == null) return null;\n    const comp = this.splay(element);\n    if (comp > 0) return this.root.key;\n    let node = this.root.right;\n    if (node == null) return null;\n    let nodeLeft = node.left;\n    while (nodeLeft != null) {\n      node = nodeLeft;\n      nodeLeft = node.left;\n    }\n    return node.key;\n  }\n  retainAll(elements) {\n    const retainSet = new _SplayTreeSet(this.compare, this.validKey);\n    const modificationCount = this.modificationCount;\n    for (const object of elements) {\n      if (modificationCount != this.modificationCount) {\n        throw \"Concurrent modification during iteration.\";\n      }\n      if (this.validKey(object) && this.splay(object) == 0) {\n        retainSet.add(this.root.key);\n      }\n    }\n    if (retainSet.size != this.size) {\n      this.root = retainSet.root;\n      this.size = retainSet.size;\n      this.modificationCount++;\n    }\n  }\n  lookup(object) {\n    if (!this.validKey(object)) return null;\n    const comp = this.splay(object);\n    if (comp != 0) return null;\n    return this.root.key;\n  }\n  intersection(other) {\n    const result = new _SplayTreeSet(this.compare, this.validKey);\n    for (const element of this) {\n      if (other.has(element)) result.add(element);\n    }\n    return result;\n  }\n  difference(other) {\n    const result = new _SplayTreeSet(this.compare, this.validKey);\n    for (const element of this) {\n      if (!other.has(element)) result.add(element);\n    }\n    return result;\n  }\n  union(other) {\n    const u = this.clone();\n    u.addAll(other);\n    return u;\n  }\n  clone() {\n    const set = new _SplayTreeSet(this.compare, this.validKey);\n    set.size = this.size;\n    set.root = this.copyNode(this.root);\n    return set;\n  }\n  copyNode(node) {\n    if (node == null) return null;\n    function copyChildren(node2, dest) {\n      let left;\n      let right;\n      do {\n        left = node2.left;\n        right = node2.right;\n        if (left != null) {\n          const newLeft = new SplayTreeSetNode(left.key);\n          dest.left = newLeft;\n          copyChildren(left, newLeft);\n        }\n        if (right != null) {\n          const newRight = new SplayTreeSetNode(right.key);\n          dest.right = newRight;\n          node2 = right;\n          dest = newRight;\n        }\n      } while (right != null);\n    }\n    const result = new SplayTreeSetNode(node.key);\n    copyChildren(node, result);\n    return result;\n  }\n  toSet() {\n    return this.clone();\n  }\n  entries() {\n    return new SplayTreeSetEntryIterableIterator(this.wrap());\n  }\n  keys() {\n    return this[Symbol.iterator]();\n  }\n  values() {\n    return this[Symbol.iterator]();\n  }\n  [Symbol.iterator]() {\n    return new SplayTreeKeyIterableIterator(this.wrap());\n  }\n  [Symbol.toStringTag] = \"[object Set]\";\n};\nvar SplayTreeIterableIterator = class {\n  tree;\n  path = new Array();\n  modificationCount = null;\n  splayCount;\n  constructor(tree) {\n    this.tree = tree;\n    this.splayCount = tree.getSplayCount();\n  }\n  [Symbol.iterator]() {\n    return this;\n  }\n  next() {\n    if (this.moveNext()) return { done: false, value: this.current() };\n    return { done: true, value: null };\n  }\n  current() {\n    if (!this.path.length) return null;\n    const node = this.path[this.path.length - 1];\n    return this.getValue(node);\n  }\n  rebuildPath(key) {\n    this.path.splice(0, this.path.length);\n    this.tree.splay(key);\n    this.path.push(this.tree.getRoot());\n    this.splayCount = this.tree.getSplayCount();\n  }\n  findLeftMostDescendent(node) {\n    while (node != null) {\n      this.path.push(node);\n      node = node.left;\n    }\n  }\n  moveNext() {\n    if (this.modificationCount != this.tree.getModificationCount()) {\n      if (this.modificationCount == null) {\n        this.modificationCount = this.tree.getModificationCount();\n        let node2 = this.tree.getRoot();\n        while (node2 != null) {\n          this.path.push(node2);\n          node2 = node2.left;\n        }\n        return this.path.length > 0;\n      }\n      throw \"Concurrent modification during iteration.\";\n    }\n    if (!this.path.length) return false;\n    if (this.splayCount != this.tree.getSplayCount()) {\n      this.rebuildPath(this.path[this.path.length - 1].key);\n    }\n    let node = this.path[this.path.length - 1];\n    let next = node.right;\n    if (next != null) {\n      while (next != null) {\n        this.path.push(next);\n        next = next.left;\n      }\n      return true;\n    }\n    this.path.pop();\n    while (this.path.length && this.path[this.path.length - 1].right === node) {\n      node = this.path.pop();\n    }\n    return this.path.length > 0;\n  }\n};\nvar SplayTreeKeyIterableIterator = class extends SplayTreeIterableIterator {\n  getValue(node) {\n    return node.key;\n  }\n};\nvar SplayTreeSetEntryIterableIterator = class extends SplayTreeIterableIterator {\n  getValue(node) {\n    return [node.key, node.key];\n  }\n};\nvar SplayTreeValueIterableIterator = class extends SplayTreeIterableIterator {\n  constructor(map) {\n    super(map);\n  }\n  getValue(node) {\n    return node.value;\n  }\n};\nvar SplayTreeMapEntryIterableIterator = class extends SplayTreeIterableIterator {\n  constructor(map) {\n    super(map);\n  }\n  getValue(node) {\n    return [node.key, node.value];\n  }\n  replaceValue(value) {\n    if (this.modificationCount != this.tree.getModificationCount()) {\n      throw \"Concurrent modification during iteration.\";\n    }\n    if (this.splayCount != this.tree.getSplayCount()) {\n      this.rebuildPath(this.path[this.path.length - 1].key);\n    }\n    const last = this.path.pop();\n    const newLast = last.replaceValue(value);\n    if (!this.path.length) {\n      this.tree.setRoot(newLast);\n    } else {\n      const parent = this.path[this.path.length - 1];\n      if (last === parent.left) {\n        parent.left = newLast;\n      } else {\n        parent.right = newLast;\n      }\n    }\n    this.path.push(newLast);\n    const count = this.tree.getSplayCount() + 1;\n    this.tree.setSplayCount(count);\n    this.splayCount = count;\n  }\n};\nexport {\n  SplayTreeMap,\n  SplayTreeSet\n};\n//# sourceMappingURL=index.js.map","// src/geom-in.ts\nimport BigNumber2 from \"bignumber.js\";\n\n// src/constant.ts\nvar constant_default = (x) => {\n  return () => {\n    return x;\n  };\n};\n\n// src/compare.ts\nvar compare_default = (eps) => {\n  const almostEqual = eps ? (a, b) => b.minus(a).abs().isLessThanOrEqualTo(eps) : constant_default(false);\n  return (a, b) => {\n    if (almostEqual(a, b)) return 0;\n    return a.comparedTo(b);\n  };\n};\n\n// src/orient.ts\nfunction orient_default(eps) {\n  const almostCollinear = eps ? (area2, ax, ay, cx, cy) => area2.exponentiatedBy(2).isLessThanOrEqualTo(\n    cx.minus(ax).exponentiatedBy(2).plus(cy.minus(ay).exponentiatedBy(2)).times(eps)\n  ) : constant_default(false);\n  return (a, b, c) => {\n    const ax = a.x, ay = a.y, cx = c.x, cy = c.y;\n    const area2 = ay.minus(cy).times(b.x.minus(cx)).minus(ax.minus(cx).times(b.y.minus(cy)));\n    if (almostCollinear(area2, ax, ay, cx, cy)) return 0;\n    return area2.comparedTo(0);\n  };\n}\n\n// src/snap.ts\nimport BigNumber from \"bignumber.js\";\nimport { SplayTreeSet } from \"splaytree-ts\";\n\n// src/identity.ts\nvar identity_default = (x) => {\n  return x;\n};\n\n// src/snap.ts\nvar snap_default = (eps) => {\n  if (eps) {\n    const xTree = new SplayTreeSet(compare_default(eps));\n    const yTree = new SplayTreeSet(compare_default(eps));\n    const snapCoord = (coord, tree) => {\n      return tree.addAndReturn(coord);\n    };\n    const snap = (v) => {\n      return {\n        x: snapCoord(v.x, xTree),\n        y: snapCoord(v.y, yTree)\n      };\n    };\n    snap({ x: new BigNumber(0), y: new BigNumber(0) });\n    return snap;\n  }\n  return identity_default;\n};\n\n// src/precision.ts\nvar set = (eps) => {\n  return {\n    set: (eps2) => {\n      precision = set(eps2);\n    },\n    reset: () => set(eps),\n    compare: compare_default(eps),\n    snap: snap_default(eps),\n    orient: orient_default(eps)\n  };\n};\nvar precision = set();\n\n// src/bbox.ts\nvar isInBbox = (bbox, point) => {\n  return bbox.ll.x.isLessThanOrEqualTo(point.x) && point.x.isLessThanOrEqualTo(bbox.ur.x) && bbox.ll.y.isLessThanOrEqualTo(point.y) && point.y.isLessThanOrEqualTo(bbox.ur.y);\n};\nvar getBboxOverlap = (b1, b2) => {\n  if (b2.ur.x.isLessThan(b1.ll.x) || b1.ur.x.isLessThan(b2.ll.x) || b2.ur.y.isLessThan(b1.ll.y) || b1.ur.y.isLessThan(b2.ll.y))\n    return null;\n  const lowerX = b1.ll.x.isLessThan(b2.ll.x) ? b2.ll.x : b1.ll.x;\n  const upperX = b1.ur.x.isLessThan(b2.ur.x) ? b1.ur.x : b2.ur.x;\n  const lowerY = b1.ll.y.isLessThan(b2.ll.y) ? b2.ll.y : b1.ll.y;\n  const upperY = b1.ur.y.isLessThan(b2.ur.y) ? b1.ur.y : b2.ur.y;\n  return { ll: { x: lowerX, y: lowerY }, ur: { x: upperX, y: upperY } };\n};\n\n// src/operation.ts\nimport { SplayTreeSet as SplayTreeSet3 } from \"splaytree-ts\";\n\n// src/vector.ts\nvar crossProduct = (a, b) => a.x.times(b.y).minus(a.y.times(b.x));\nvar dotProduct = (a, b) => a.x.times(b.x).plus(a.y.times(b.y));\nvar length = (v) => dotProduct(v, v).sqrt();\nvar sineOfAngle = (pShared, pBase, pAngle) => {\n  const vBase = { x: pBase.x.minus(pShared.x), y: pBase.y.minus(pShared.y) };\n  const vAngle = { x: pAngle.x.minus(pShared.x), y: pAngle.y.minus(pShared.y) };\n  return crossProduct(vAngle, vBase).div(length(vAngle)).div(length(vBase));\n};\nvar cosineOfAngle = (pShared, pBase, pAngle) => {\n  const vBase = { x: pBase.x.minus(pShared.x), y: pBase.y.minus(pShared.y) };\n  const vAngle = { x: pAngle.x.minus(pShared.x), y: pAngle.y.minus(pShared.y) };\n  return dotProduct(vAngle, vBase).div(length(vAngle)).div(length(vBase));\n};\nvar horizontalIntersection = (pt, v, y) => {\n  if (v.y.isZero()) return null;\n  return { x: pt.x.plus(v.x.div(v.y).times(y.minus(pt.y))), y };\n};\nvar verticalIntersection = (pt, v, x) => {\n  if (v.x.isZero()) return null;\n  return { x, y: pt.y.plus(v.y.div(v.x).times(x.minus(pt.x))) };\n};\nvar intersection = (pt1, v1, pt2, v2) => {\n  if (v1.x.isZero()) return verticalIntersection(pt2, v2, pt1.x);\n  if (v2.x.isZero()) return verticalIntersection(pt1, v1, pt2.x);\n  if (v1.y.isZero()) return horizontalIntersection(pt2, v2, pt1.y);\n  if (v2.y.isZero()) return horizontalIntersection(pt1, v1, pt2.y);\n  const kross = crossProduct(v1, v2);\n  if (kross.isZero()) return null;\n  const ve = { x: pt2.x.minus(pt1.x), y: pt2.y.minus(pt1.y) };\n  const d1 = crossProduct(ve, v1).div(kross);\n  const d2 = crossProduct(ve, v2).div(kross);\n  const x1 = pt1.x.plus(d2.times(v1.x)), x2 = pt2.x.plus(d1.times(v2.x));\n  const y1 = pt1.y.plus(d2.times(v1.y)), y2 = pt2.y.plus(d1.times(v2.y));\n  const x = x1.plus(x2).div(2);\n  const y = y1.plus(y2).div(2);\n  return { x, y };\n};\n\n// src/sweep-event.ts\nvar SweepEvent = class _SweepEvent {\n  point;\n  isLeft;\n  segment;\n  otherSE;\n  consumedBy;\n  // for ordering sweep events in the sweep event queue\n  static compare(a, b) {\n    const ptCmp = _SweepEvent.comparePoints(a.point, b.point);\n    if (ptCmp !== 0) return ptCmp;\n    if (a.point !== b.point) a.link(b);\n    if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n    return Segment.compare(a.segment, b.segment);\n  }\n  // for ordering points in sweep line order\n  static comparePoints(aPt, bPt) {\n    if (aPt.x.isLessThan(bPt.x)) return -1;\n    if (aPt.x.isGreaterThan(bPt.x)) return 1;\n    if (aPt.y.isLessThan(bPt.y)) return -1;\n    if (aPt.y.isGreaterThan(bPt.y)) return 1;\n    return 0;\n  }\n  // Warning: 'point' input will be modified and re-used (for performance)\n  constructor(point, isLeft) {\n    if (point.events === void 0) point.events = [this];\n    else point.events.push(this);\n    this.point = point;\n    this.isLeft = isLeft;\n  }\n  link(other) {\n    if (other.point === this.point) {\n      throw new Error(\"Tried to link already linked events\");\n    }\n    const otherEvents = other.point.events;\n    for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n      const evt = otherEvents[i];\n      this.point.events.push(evt);\n      evt.point = this.point;\n    }\n    this.checkForConsuming();\n  }\n  /* Do a pass over our linked events and check to see if any pair\n   * of segments match, and should be consumed. */\n  checkForConsuming() {\n    const numEvents = this.point.events.length;\n    for (let i = 0; i < numEvents; i++) {\n      const evt1 = this.point.events[i];\n      if (evt1.segment.consumedBy !== void 0) continue;\n      for (let j = i + 1; j < numEvents; j++) {\n        const evt2 = this.point.events[j];\n        if (evt2.consumedBy !== void 0) continue;\n        if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n        evt1.segment.consume(evt2.segment);\n      }\n    }\n  }\n  getAvailableLinkedEvents() {\n    const events = [];\n    for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n      const evt = this.point.events[i];\n      if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n        events.push(evt);\n      }\n    }\n    return events;\n  }\n  /**\n   * Returns a comparator function for sorting linked events that will\n   * favor the event that will give us the smallest left-side angle.\n   * All ring construction starts as low as possible heading to the right,\n   * so by always turning left as sharp as possible we'll get polygons\n   * without uncessary loops & holes.\n   *\n   * The comparator function has a compute cache such that it avoids\n   * re-computing already-computed values.\n   */\n  getLeftmostComparator(baseEvent) {\n    const cache = /* @__PURE__ */ new Map();\n    const fillCache = (linkedEvent) => {\n      const nextEvent = linkedEvent.otherSE;\n      cache.set(linkedEvent, {\n        sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n        cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n      });\n    };\n    return (a, b) => {\n      if (!cache.has(a)) fillCache(a);\n      if (!cache.has(b)) fillCache(b);\n      const { sine: asine, cosine: acosine } = cache.get(a);\n      const { sine: bsine, cosine: bcosine } = cache.get(b);\n      if (asine.isGreaterThanOrEqualTo(0) && bsine.isGreaterThanOrEqualTo(0)) {\n        if (acosine.isLessThan(bcosine)) return 1;\n        if (acosine.isGreaterThan(bcosine)) return -1;\n        return 0;\n      }\n      if (asine.isLessThan(0) && bsine.isLessThan(0)) {\n        if (acosine.isLessThan(bcosine)) return -1;\n        if (acosine.isGreaterThan(bcosine)) return 1;\n        return 0;\n      }\n      if (bsine.isLessThan(asine)) return -1;\n      if (bsine.isGreaterThan(asine)) return 1;\n      return 0;\n    };\n  }\n};\n\n// src/geom-out.ts\nvar RingOut = class _RingOut {\n  events;\n  poly;\n  _isExteriorRing;\n  _enclosingRing;\n  /* Given the segments from the sweep line pass, compute & return a series\n   * of closed rings from all the segments marked to be part of the result */\n  static factory(allSegments) {\n    const ringsOut = [];\n    for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n      const segment = allSegments[i];\n      if (!segment.isInResult() || segment.ringOut) continue;\n      let prevEvent = null;\n      let event = segment.leftSE;\n      let nextEvent = segment.rightSE;\n      const events = [event];\n      const startingPoint = event.point;\n      const intersectionLEs = [];\n      while (true) {\n        prevEvent = event;\n        event = nextEvent;\n        events.push(event);\n        if (event.point === startingPoint) break;\n        while (true) {\n          const availableLEs = event.getAvailableLinkedEvents();\n          if (availableLEs.length === 0) {\n            const firstPt = events[0].point;\n            const lastPt = events[events.length - 1].point;\n            throw new Error(\n              `Unable to complete output ring starting at [${firstPt.x}, ${firstPt.y}]. Last matching segment found ends at [${lastPt.x}, ${lastPt.y}].`\n            );\n          }\n          if (availableLEs.length === 1) {\n            nextEvent = availableLEs[0].otherSE;\n            break;\n          }\n          let indexLE = null;\n          for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n            if (intersectionLEs[j].point === event.point) {\n              indexLE = j;\n              break;\n            }\n          }\n          if (indexLE !== null) {\n            const intersectionLE = intersectionLEs.splice(indexLE)[0];\n            const ringEvents = events.splice(intersectionLE.index);\n            ringEvents.unshift(ringEvents[0].otherSE);\n            ringsOut.push(new _RingOut(ringEvents.reverse()));\n            continue;\n          }\n          intersectionLEs.push({\n            index: events.length,\n            point: event.point\n          });\n          const comparator = event.getLeftmostComparator(prevEvent);\n          nextEvent = availableLEs.sort(comparator)[0].otherSE;\n          break;\n        }\n      }\n      ringsOut.push(new _RingOut(events));\n    }\n    return ringsOut;\n  }\n  constructor(events) {\n    this.events = events;\n    for (let i = 0, iMax = events.length; i < iMax; i++) {\n      events[i].segment.ringOut = this;\n    }\n    this.poly = null;\n  }\n  getGeom() {\n    let prevPt = this.events[0].point;\n    const points = [prevPt];\n    for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n      const pt2 = this.events[i].point;\n      const nextPt2 = this.events[i + 1].point;\n      if (precision.orient(pt2, prevPt, nextPt2) === 0) continue;\n      points.push(pt2);\n      prevPt = pt2;\n    }\n    if (points.length === 1) return null;\n    const pt = points[0];\n    const nextPt = points[1];\n    if (precision.orient(pt, prevPt, nextPt) === 0) points.shift();\n    points.push(points[0]);\n    const step = this.isExteriorRing() ? 1 : -1;\n    const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n    const iEnd = this.isExteriorRing() ? points.length : -1;\n    const orderedPoints = [];\n    for (let i = iStart; i != iEnd; i += step)\n      orderedPoints.push([points[i].x.toNumber(), points[i].y.toNumber()]);\n    return orderedPoints;\n  }\n  isExteriorRing() {\n    if (this._isExteriorRing === void 0) {\n      const enclosing = this.enclosingRing();\n      this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n    }\n    return this._isExteriorRing;\n  }\n  enclosingRing() {\n    if (this._enclosingRing === void 0) {\n      this._enclosingRing = this._calcEnclosingRing();\n    }\n    return this._enclosingRing;\n  }\n  /* Returns the ring that encloses this one, if any */\n  _calcEnclosingRing() {\n    let leftMostEvt = this.events[0];\n    for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n      const evt = this.events[i];\n      if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n    }\n    let prevSeg = leftMostEvt.segment.prevInResult();\n    let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n    while (true) {\n      if (!prevSeg) return null;\n      if (!prevPrevSeg) return prevSeg.ringOut;\n      if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n        if (prevPrevSeg.ringOut?.enclosingRing() !== prevSeg.ringOut) {\n          return prevSeg.ringOut;\n        } else return prevSeg.ringOut?.enclosingRing();\n      }\n      prevSeg = prevPrevSeg.prevInResult();\n      prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n    }\n  }\n};\nvar PolyOut = class {\n  exteriorRing;\n  interiorRings;\n  constructor(exteriorRing) {\n    this.exteriorRing = exteriorRing;\n    exteriorRing.poly = this;\n    this.interiorRings = [];\n  }\n  addInterior(ring) {\n    this.interiorRings.push(ring);\n    ring.poly = this;\n  }\n  getGeom() {\n    const geom0 = this.exteriorRing.getGeom();\n    if (geom0 === null) return null;\n    const geom = [geom0];\n    for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n      const ringGeom = this.interiorRings[i].getGeom();\n      if (ringGeom === null) continue;\n      geom.push(ringGeom);\n    }\n    return geom;\n  }\n};\nvar MultiPolyOut = class {\n  rings;\n  polys;\n  constructor(rings) {\n    this.rings = rings;\n    this.polys = this._composePolys(rings);\n  }\n  getGeom() {\n    const geom = [];\n    for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n      const polyGeom = this.polys[i].getGeom();\n      if (polyGeom === null) continue;\n      geom.push(polyGeom);\n    }\n    return geom;\n  }\n  _composePolys(rings) {\n    const polys = [];\n    for (let i = 0, iMax = rings.length; i < iMax; i++) {\n      const ring = rings[i];\n      if (ring.poly) continue;\n      if (ring.isExteriorRing()) polys.push(new PolyOut(ring));\n      else {\n        const enclosingRing = ring.enclosingRing();\n        if (!enclosingRing?.poly) polys.push(new PolyOut(enclosingRing));\n        enclosingRing?.poly?.addInterior(ring);\n      }\n    }\n    return polys;\n  }\n};\n\n// src/sweep-line.ts\nimport { SplayTreeSet as SplayTreeSet2 } from \"splaytree-ts\";\nvar SweepLine = class {\n  queue;\n  tree;\n  segments;\n  constructor(queue, comparator = Segment.compare) {\n    this.queue = queue;\n    this.tree = new SplayTreeSet2(comparator);\n    this.segments = [];\n  }\n  process(event) {\n    const segment = event.segment;\n    const newEvents = [];\n    if (event.consumedBy) {\n      if (event.isLeft) this.queue.delete(event.otherSE);\n      else this.tree.delete(segment);\n      return newEvents;\n    }\n    if (event.isLeft) this.tree.add(segment);\n    let prevSeg = segment;\n    let nextSeg = segment;\n    do {\n      prevSeg = this.tree.lastBefore(prevSeg);\n    } while (prevSeg != null && prevSeg.consumedBy != void 0);\n    do {\n      nextSeg = this.tree.firstAfter(nextSeg);\n    } while (nextSeg != null && nextSeg.consumedBy != void 0);\n    if (event.isLeft) {\n      let prevMySplitter = null;\n      if (prevSeg) {\n        const prevInter = prevSeg.getIntersection(segment);\n        if (prevInter !== null) {\n          if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n          if (!prevSeg.isAnEndpoint(prevInter)) {\n            const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n        }\n      }\n      let nextMySplitter = null;\n      if (nextSeg) {\n        const nextInter = nextSeg.getIntersection(segment);\n        if (nextInter !== null) {\n          if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n          if (!nextSeg.isAnEndpoint(nextInter)) {\n            const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n        }\n      }\n      if (prevMySplitter !== null || nextMySplitter !== null) {\n        let mySplitter = null;\n        if (prevMySplitter === null) mySplitter = nextMySplitter;\n        else if (nextMySplitter === null) mySplitter = prevMySplitter;\n        else {\n          const cmpSplitters = SweepEvent.comparePoints(\n            prevMySplitter,\n            nextMySplitter\n          );\n          mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n        }\n        this.queue.delete(segment.rightSE);\n        newEvents.push(segment.rightSE);\n        const newEventsFromSplit = segment.split(mySplitter);\n        for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n          newEvents.push(newEventsFromSplit[i]);\n        }\n      }\n      if (newEvents.length > 0) {\n        this.tree.delete(segment);\n        newEvents.push(event);\n      } else {\n        this.segments.push(segment);\n        segment.prev = prevSeg;\n      }\n    } else {\n      if (prevSeg && nextSeg) {\n        const inter = prevSeg.getIntersection(nextSeg);\n        if (inter !== null) {\n          if (!prevSeg.isAnEndpoint(inter)) {\n            const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n          if (!nextSeg.isAnEndpoint(inter)) {\n            const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n        }\n      }\n      this.tree.delete(segment);\n    }\n    return newEvents;\n  }\n  /* Safely split a segment that is currently in the datastructures\n   * IE - a segment other than the one that is currently being processed. */\n  _splitSafely(seg, pt) {\n    this.tree.delete(seg);\n    const rightSE = seg.rightSE;\n    this.queue.delete(rightSE);\n    const newEvents = seg.split(pt);\n    newEvents.push(rightSE);\n    if (seg.consumedBy === void 0) this.tree.add(seg);\n    return newEvents;\n  }\n};\n\n// src/operation.ts\nvar Operation = class {\n  type;\n  numMultiPolys;\n  run(type, geom, moreGeoms) {\n    operation.type = type;\n    const multipolys = [new MultiPolyIn(geom, true)];\n    for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n      multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n    }\n    operation.numMultiPolys = multipolys.length;\n    if (operation.type === \"difference\") {\n      const subject = multipolys[0];\n      let i = 1;\n      while (i < multipolys.length) {\n        if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;\n        else multipolys.splice(i, 1);\n      }\n    }\n    if (operation.type === \"intersection\") {\n      for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n        const mpA = multipolys[i];\n        for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n          if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n        }\n      }\n    }\n    const queue = new SplayTreeSet3(SweepEvent.compare);\n    for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n      const sweepEvents = multipolys[i].getSweepEvents();\n      for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n        queue.add(sweepEvents[j]);\n      }\n    }\n    const sweepLine = new SweepLine(queue);\n    let evt = null;\n    if (queue.size != 0) {\n      evt = queue.first();\n      queue.delete(evt);\n    }\n    while (evt) {\n      const newEvents = sweepLine.process(evt);\n      for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n        const evt2 = newEvents[i];\n        if (evt2.consumedBy === void 0) queue.add(evt2);\n      }\n      if (queue.size != 0) {\n        evt = queue.first();\n        queue.delete(evt);\n      } else {\n        evt = null;\n      }\n    }\n    precision.reset();\n    const ringsOut = RingOut.factory(sweepLine.segments);\n    const result = new MultiPolyOut(ringsOut);\n    return result.getGeom();\n  }\n};\nvar operation = new Operation();\nvar operation_default = operation;\n\n// src/segment.ts\nvar segmentId = 0;\nvar Segment = class _Segment {\n  id;\n  leftSE;\n  rightSE;\n  rings;\n  windings;\n  ringOut;\n  consumedBy;\n  prev;\n  _prevInResult;\n  _beforeState;\n  _afterState;\n  _isInResult;\n  /* This compare() function is for ordering segments in the sweep\n   * line tree, and does so according to the following criteria:\n   *\n   * Consider the vertical line that lies an infinestimal step to the\n   * right of the right-more of the two left endpoints of the input\n   * segments. Imagine slowly moving a point up from negative infinity\n   * in the increasing y direction. Which of the two segments will that\n   * point intersect first? That segment comes 'before' the other one.\n   *\n   * If neither segment would be intersected by such a line, (if one\n   * or more of the segments are vertical) then the line to be considered\n   * is directly on the right-more of the two left inputs.\n   */\n  static compare(a, b) {\n    const alx = a.leftSE.point.x;\n    const blx = b.leftSE.point.x;\n    const arx = a.rightSE.point.x;\n    const brx = b.rightSE.point.x;\n    if (brx.isLessThan(alx)) return 1;\n    if (arx.isLessThan(blx)) return -1;\n    const aly = a.leftSE.point.y;\n    const bly = b.leftSE.point.y;\n    const ary = a.rightSE.point.y;\n    const bry = b.rightSE.point.y;\n    if (alx.isLessThan(blx)) {\n      if (bly.isLessThan(aly) && bly.isLessThan(ary)) return 1;\n      if (bly.isGreaterThan(aly) && bly.isGreaterThan(ary)) return -1;\n      const aCmpBLeft = a.comparePoint(b.leftSE.point);\n      if (aCmpBLeft < 0) return 1;\n      if (aCmpBLeft > 0) return -1;\n      const bCmpARight = b.comparePoint(a.rightSE.point);\n      if (bCmpARight !== 0) return bCmpARight;\n      return -1;\n    }\n    if (alx.isGreaterThan(blx)) {\n      if (aly.isLessThan(bly) && aly.isLessThan(bry)) return -1;\n      if (aly.isGreaterThan(bly) && aly.isGreaterThan(bry)) return 1;\n      const bCmpALeft = b.comparePoint(a.leftSE.point);\n      if (bCmpALeft !== 0) return bCmpALeft;\n      const aCmpBRight = a.comparePoint(b.rightSE.point);\n      if (aCmpBRight < 0) return 1;\n      if (aCmpBRight > 0) return -1;\n      return 1;\n    }\n    if (aly.isLessThan(bly)) return -1;\n    if (aly.isGreaterThan(bly)) return 1;\n    if (arx.isLessThan(brx)) {\n      const bCmpARight = b.comparePoint(a.rightSE.point);\n      if (bCmpARight !== 0) return bCmpARight;\n    }\n    if (arx.isGreaterThan(brx)) {\n      const aCmpBRight = a.comparePoint(b.rightSE.point);\n      if (aCmpBRight < 0) return 1;\n      if (aCmpBRight > 0) return -1;\n    }\n    if (!arx.eq(brx)) {\n      const ay = ary.minus(aly);\n      const ax = arx.minus(alx);\n      const by = bry.minus(bly);\n      const bx = brx.minus(blx);\n      if (ay.isGreaterThan(ax) && by.isLessThan(bx)) return 1;\n      if (ay.isLessThan(ax) && by.isGreaterThan(bx)) return -1;\n    }\n    if (arx.isGreaterThan(brx)) return 1;\n    if (arx.isLessThan(brx)) return -1;\n    if (ary.isLessThan(bry)) return -1;\n    if (ary.isGreaterThan(bry)) return 1;\n    if (a.id < b.id) return -1;\n    if (a.id > b.id) return 1;\n    return 0;\n  }\n  /* Warning: a reference to ringWindings input will be stored,\n   *  and possibly will be later modified */\n  constructor(leftSE, rightSE, rings, windings) {\n    this.id = ++segmentId;\n    this.leftSE = leftSE;\n    leftSE.segment = this;\n    leftSE.otherSE = rightSE;\n    this.rightSE = rightSE;\n    rightSE.segment = this;\n    rightSE.otherSE = leftSE;\n    this.rings = rings;\n    this.windings = windings;\n  }\n  static fromRing(pt1, pt2, ring) {\n    let leftPt, rightPt, winding;\n    const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n    if (cmpPts < 0) {\n      leftPt = pt1;\n      rightPt = pt2;\n      winding = 1;\n    } else if (cmpPts > 0) {\n      leftPt = pt2;\n      rightPt = pt1;\n      winding = -1;\n    } else\n      throw new Error(\n        `Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`\n      );\n    const leftSE = new SweepEvent(leftPt, true);\n    const rightSE = new SweepEvent(rightPt, false);\n    return new _Segment(leftSE, rightSE, [ring], [winding]);\n  }\n  /* When a segment is split, the rightSE is replaced with a new sweep event */\n  replaceRightSE(newRightSE) {\n    this.rightSE = newRightSE;\n    this.rightSE.segment = this;\n    this.rightSE.otherSE = this.leftSE;\n    this.leftSE.otherSE = this.rightSE;\n  }\n  bbox() {\n    const y1 = this.leftSE.point.y;\n    const y2 = this.rightSE.point.y;\n    return {\n      ll: { x: this.leftSE.point.x, y: y1.isLessThan(y2) ? y1 : y2 },\n      ur: { x: this.rightSE.point.x, y: y1.isGreaterThan(y2) ? y1 : y2 }\n    };\n  }\n  /* A vector from the left point to the right */\n  vector() {\n    return {\n      x: this.rightSE.point.x.minus(this.leftSE.point.x),\n      y: this.rightSE.point.y.minus(this.leftSE.point.y)\n    };\n  }\n  isAnEndpoint(pt) {\n    return pt.x.eq(this.leftSE.point.x) && pt.y.eq(this.leftSE.point.y) || pt.x.eq(this.rightSE.point.x) && pt.y.eq(this.rightSE.point.y);\n  }\n  /* Compare this segment with a point.\n   *\n   * A point P is considered to be colinear to a segment if there\n   * exists a distance D such that if we travel along the segment\n   * from one * endpoint towards the other a distance D, we find\n   * ourselves at point P.\n   *\n   * Return value indicates:\n   *\n   *   1: point lies above the segment (to the left of vertical)\n   *   0: point is colinear to segment\n   *  -1: point lies below the segment (to the right of vertical)\n   */\n  comparePoint(point) {\n    return precision.orient(this.leftSE.point, point, this.rightSE.point);\n  }\n  /**\n   * Given another segment, returns the first non-trivial intersection\n   * between the two segments (in terms of sweep line ordering), if it exists.\n   *\n   * A 'non-trivial' intersection is one that will cause one or both of the\n   * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n   *\n   *   * endpoint of segA with endpoint of segB --> trivial\n   *   * endpoint of segA with point along segB --> non-trivial\n   *   * endpoint of segB with point along segA --> non-trivial\n   *   * point along segA with point along segB --> non-trivial\n   *\n   * If no non-trivial intersection exists, return null\n   * Else, return null.\n   */\n  getIntersection(other) {\n    const tBbox = this.bbox();\n    const oBbox = other.bbox();\n    const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n    if (bboxOverlap === null) return null;\n    const tlp = this.leftSE.point;\n    const trp = this.rightSE.point;\n    const olp = other.leftSE.point;\n    const orp = other.rightSE.point;\n    const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n    const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n    const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n    const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n    if (touchesThisLSE && touchesOtherLSE) {\n      if (touchesThisRSE && !touchesOtherRSE) return trp;\n      if (!touchesThisRSE && touchesOtherRSE) return orp;\n      return null;\n    }\n    if (touchesThisLSE) {\n      if (touchesOtherRSE) {\n        if (tlp.x.eq(orp.x) && tlp.y.eq(orp.y)) return null;\n      }\n      return tlp;\n    }\n    if (touchesOtherLSE) {\n      if (touchesThisRSE) {\n        if (trp.x.eq(olp.x) && trp.y.eq(olp.y)) return null;\n      }\n      return olp;\n    }\n    if (touchesThisRSE && touchesOtherRSE) return null;\n    if (touchesThisRSE) return trp;\n    if (touchesOtherRSE) return orp;\n    const pt = intersection(tlp, this.vector(), olp, other.vector());\n    if (pt === null) return null;\n    if (!isInBbox(bboxOverlap, pt)) return null;\n    return precision.snap(pt);\n  }\n  /**\n   * Split the given segment into multiple segments on the given points.\n   *  * Each existing segment will retain its leftSE and a new rightSE will be\n   *    generated for it.\n   *  * A new segment will be generated which will adopt the original segment's\n   *    rightSE, and a new leftSE will be generated for it.\n   *  * If there are more than two points given to split on, new segments\n   *    in the middle will be generated with new leftSE and rightSE's.\n   *  * An array of the newly generated SweepEvents will be returned.\n   *\n   * Warning: input array of points is modified\n   */\n  split(point) {\n    const newEvents = [];\n    const alreadyLinked = point.events !== void 0;\n    const newLeftSE = new SweepEvent(point, true);\n    const newRightSE = new SweepEvent(point, false);\n    const oldRightSE = this.rightSE;\n    this.replaceRightSE(newRightSE);\n    newEvents.push(newRightSE);\n    newEvents.push(newLeftSE);\n    const newSeg = new _Segment(\n      newLeftSE,\n      oldRightSE,\n      this.rings.slice(),\n      this.windings.slice()\n    );\n    if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n      newSeg.swapEvents();\n    }\n    if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n      this.swapEvents();\n    }\n    if (alreadyLinked) {\n      newLeftSE.checkForConsuming();\n      newRightSE.checkForConsuming();\n    }\n    return newEvents;\n  }\n  /* Swap which event is left and right */\n  swapEvents() {\n    const tmpEvt = this.rightSE;\n    this.rightSE = this.leftSE;\n    this.leftSE = tmpEvt;\n    this.leftSE.isLeft = true;\n    this.rightSE.isLeft = false;\n    for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n      this.windings[i] *= -1;\n    }\n  }\n  /* Consume another segment. We take their rings under our wing\n   * and mark them as consumed. Use for perfectly overlapping segments */\n  consume(other) {\n    let consumer = this;\n    let consumee = other;\n    while (consumer.consumedBy) consumer = consumer.consumedBy;\n    while (consumee.consumedBy) consumee = consumee.consumedBy;\n    const cmp = _Segment.compare(consumer, consumee);\n    if (cmp === 0) return;\n    if (cmp > 0) {\n      const tmp = consumer;\n      consumer = consumee;\n      consumee = tmp;\n    }\n    if (consumer.prev === consumee) {\n      const tmp = consumer;\n      consumer = consumee;\n      consumee = tmp;\n    }\n    for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n      const ring = consumee.rings[i];\n      const winding = consumee.windings[i];\n      const index = consumer.rings.indexOf(ring);\n      if (index === -1) {\n        consumer.rings.push(ring);\n        consumer.windings.push(winding);\n      } else consumer.windings[index] += winding;\n    }\n    consumee.rings = null;\n    consumee.windings = null;\n    consumee.consumedBy = consumer;\n    consumee.leftSE.consumedBy = consumer.leftSE;\n    consumee.rightSE.consumedBy = consumer.rightSE;\n  }\n  /* The first segment previous segment chain that is in the result */\n  prevInResult() {\n    if (this._prevInResult !== void 0) return this._prevInResult;\n    if (!this.prev) this._prevInResult = null;\n    else if (this.prev.isInResult()) this._prevInResult = this.prev;\n    else this._prevInResult = this.prev.prevInResult();\n    return this._prevInResult;\n  }\n  beforeState() {\n    if (this._beforeState !== void 0) return this._beforeState;\n    if (!this.prev)\n      this._beforeState = {\n        rings: [],\n        windings: [],\n        multiPolys: []\n      };\n    else {\n      const seg = this.prev.consumedBy || this.prev;\n      this._beforeState = seg.afterState();\n    }\n    return this._beforeState;\n  }\n  afterState() {\n    if (this._afterState !== void 0) return this._afterState;\n    const beforeState = this.beforeState();\n    this._afterState = {\n      rings: beforeState.rings.slice(0),\n      windings: beforeState.windings.slice(0),\n      multiPolys: []\n    };\n    const ringsAfter = this._afterState.rings;\n    const windingsAfter = this._afterState.windings;\n    const mpsAfter = this._afterState.multiPolys;\n    for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n      const ring = this.rings[i];\n      const winding = this.windings[i];\n      const index = ringsAfter.indexOf(ring);\n      if (index === -1) {\n        ringsAfter.push(ring);\n        windingsAfter.push(winding);\n      } else windingsAfter[index] += winding;\n    }\n    const polysAfter = [];\n    const polysExclude = [];\n    for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n      if (windingsAfter[i] === 0) continue;\n      const ring = ringsAfter[i];\n      const poly = ring.poly;\n      if (polysExclude.indexOf(poly) !== -1) continue;\n      if (ring.isExterior) polysAfter.push(poly);\n      else {\n        if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n        const index = polysAfter.indexOf(ring.poly);\n        if (index !== -1) polysAfter.splice(index, 1);\n      }\n    }\n    for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n      const mp = polysAfter[i].multiPoly;\n      if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n    }\n    return this._afterState;\n  }\n  /* Is this segment part of the final result? */\n  isInResult() {\n    if (this.consumedBy) return false;\n    if (this._isInResult !== void 0) return this._isInResult;\n    const mpsBefore = this.beforeState().multiPolys;\n    const mpsAfter = this.afterState().multiPolys;\n    switch (operation_default.type) {\n      case \"union\": {\n        const noBefores = mpsBefore.length === 0;\n        const noAfters = mpsAfter.length === 0;\n        this._isInResult = noBefores !== noAfters;\n        break;\n      }\n      case \"intersection\": {\n        let least;\n        let most;\n        if (mpsBefore.length < mpsAfter.length) {\n          least = mpsBefore.length;\n          most = mpsAfter.length;\n        } else {\n          least = mpsAfter.length;\n          most = mpsBefore.length;\n        }\n        this._isInResult = most === operation_default.numMultiPolys && least < most;\n        break;\n      }\n      case \"xor\": {\n        const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n        this._isInResult = diff % 2 === 1;\n        break;\n      }\n      case \"difference\": {\n        const isJustSubject = (mps) => mps.length === 1 && mps[0].isSubject;\n        this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n        break;\n      }\n    }\n    return this._isInResult;\n  }\n};\n\n// src/geom-in.ts\nvar RingIn = class {\n  poly;\n  isExterior;\n  segments;\n  bbox;\n  constructor(geomRing, poly, isExterior) {\n    if (!Array.isArray(geomRing) || geomRing.length === 0) {\n      throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n    }\n    this.poly = poly;\n    this.isExterior = isExterior;\n    this.segments = [];\n    if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n      throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n    }\n    const firstPoint = precision.snap({ x: new BigNumber2(geomRing[0][0]), y: new BigNumber2(geomRing[0][1]) });\n    this.bbox = {\n      ll: { x: firstPoint.x, y: firstPoint.y },\n      ur: { x: firstPoint.x, y: firstPoint.y }\n    };\n    let prevPoint = firstPoint;\n    for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n      if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n        throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n      }\n      const point = precision.snap({ x: new BigNumber2(geomRing[i][0]), y: new BigNumber2(geomRing[i][1]) });\n      if (point.x.eq(prevPoint.x) && point.y.eq(prevPoint.y)) continue;\n      this.segments.push(Segment.fromRing(prevPoint, point, this));\n      if (point.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = point.x;\n      if (point.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = point.y;\n      if (point.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = point.x;\n      if (point.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = point.y;\n      prevPoint = point;\n    }\n    if (!firstPoint.x.eq(prevPoint.x) || !firstPoint.y.eq(prevPoint.y)) {\n      this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n    }\n  }\n  getSweepEvents() {\n    const sweepEvents = [];\n    for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n      const segment = this.segments[i];\n      sweepEvents.push(segment.leftSE);\n      sweepEvents.push(segment.rightSE);\n    }\n    return sweepEvents;\n  }\n};\nvar PolyIn = class {\n  multiPoly;\n  exteriorRing;\n  interiorRings;\n  bbox;\n  constructor(geomPoly, multiPoly) {\n    if (!Array.isArray(geomPoly)) {\n      throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n    }\n    this.exteriorRing = new RingIn(geomPoly[0], this, true);\n    this.bbox = {\n      ll: { x: this.exteriorRing.bbox.ll.x, y: this.exteriorRing.bbox.ll.y },\n      ur: { x: this.exteriorRing.bbox.ur.x, y: this.exteriorRing.bbox.ur.y }\n    };\n    this.interiorRings = [];\n    for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n      const ring = new RingIn(geomPoly[i], this, false);\n      if (ring.bbox.ll.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = ring.bbox.ll.x;\n      if (ring.bbox.ll.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = ring.bbox.ll.y;\n      if (ring.bbox.ur.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = ring.bbox.ur.x;\n      if (ring.bbox.ur.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = ring.bbox.ur.y;\n      this.interiorRings.push(ring);\n    }\n    this.multiPoly = multiPoly;\n  }\n  getSweepEvents() {\n    const sweepEvents = this.exteriorRing.getSweepEvents();\n    for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n      const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n      for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n        sweepEvents.push(ringSweepEvents[j]);\n      }\n    }\n    return sweepEvents;\n  }\n};\nvar MultiPolyIn = class {\n  isSubject;\n  polys;\n  bbox;\n  constructor(geom, isSubject) {\n    if (!Array.isArray(geom)) {\n      throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n    }\n    try {\n      if (typeof geom[0][0][0] === \"number\") geom = [geom];\n    } catch (ex) {\n    }\n    this.polys = [];\n    this.bbox = {\n      ll: { x: new BigNumber2(Number.POSITIVE_INFINITY), y: new BigNumber2(Number.POSITIVE_INFINITY) },\n      ur: { x: new BigNumber2(Number.NEGATIVE_INFINITY), y: new BigNumber2(Number.NEGATIVE_INFINITY) }\n    };\n    for (let i = 0, iMax = geom.length; i < iMax; i++) {\n      const poly = new PolyIn(geom[i], this);\n      if (poly.bbox.ll.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = poly.bbox.ll.x;\n      if (poly.bbox.ll.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = poly.bbox.ll.y;\n      if (poly.bbox.ur.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = poly.bbox.ur.x;\n      if (poly.bbox.ur.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = poly.bbox.ur.y;\n      this.polys.push(poly);\n    }\n    this.isSubject = isSubject;\n  }\n  getSweepEvents() {\n    const sweepEvents = [];\n    for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n      const polySweepEvents = this.polys[i].getSweepEvents();\n      for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n        sweepEvents.push(polySweepEvents[j]);\n      }\n    }\n    return sweepEvents;\n  }\n};\n\n// src/index.ts\nvar union = (geom, ...moreGeoms) => operation_default.run(\"union\", geom, moreGeoms);\nvar intersection2 = (geom, ...moreGeoms) => operation_default.run(\"intersection\", geom, moreGeoms);\nvar xor = (geom, ...moreGeoms) => operation_default.run(\"xor\", geom, moreGeoms);\nvar difference = (geom, ...moreGeoms) => operation_default.run(\"difference\", geom, moreGeoms);\nvar setPrecision = precision.set;\nexport {\n  difference,\n  intersection2 as intersection,\n  setPrecision,\n  union,\n  xor\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport * as polyclip from \"polyclip-ts\";\nimport { polygon, multiPolygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction difference2(features) {\n  const geoms = [];\n  geomEach(features, (geom) => {\n    geoms.push(geom.coordinates);\n  });\n  if (geoms.length < 2) {\n    throw new Error(\"Must have at least two features\");\n  }\n  const properties = features.features[0].properties || {};\n  const differenced = polyclip.difference(geoms[0], ...geoms.slice(1));\n  if (differenced.length === 0) return null;\n  if (differenced.length === 1) return polygon(differenced[0], properties);\n  return multiPolygon(differenced, properties);\n}\nvar turf_difference_default = difference2;\nexport {\n  turf_difference_default as default,\n  difference2 as difference\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { earthRadius } from \"@turf/helpers\";\nimport { geomReduce } from \"@turf/meta\";\nfunction area(geojson) {\n  return geomReduce(\n    geojson,\n    (value, geom) => {\n      return value + calculateArea(geom);\n    },\n    0\n  );\n}\nfunction calculateArea(geom) {\n  let total = 0;\n  let i;\n  switch (geom.type) {\n    case \"Polygon\":\n      return polygonArea(geom.coordinates);\n    case \"MultiPolygon\":\n      for (i = 0; i < geom.coordinates.length; i++) {\n        total += polygonArea(geom.coordinates[i]);\n      }\n      return total;\n    case \"Point\":\n    case \"MultiPoint\":\n    case \"LineString\":\n    case \"MultiLineString\":\n      return 0;\n  }\n  return 0;\n}\nfunction polygonArea(coords) {\n  let total = 0;\n  if (coords && coords.length > 0) {\n    total += Math.abs(ringArea(coords[0]));\n    for (let i = 1; i < coords.length; i++) {\n      total -= Math.abs(ringArea(coords[i]));\n    }\n  }\n  return total;\n}\nvar FACTOR = earthRadius * earthRadius / 2;\nvar PI_OVER_180 = Math.PI / 180;\nfunction ringArea(coords) {\n  const coordsLength = coords.length - 1;\n  if (coordsLength <= 2) return 0;\n  let total = 0;\n  let i = 0;\n  while (i < coordsLength) {\n    const lower = coords[i];\n    const middle = coords[i + 1 === coordsLength ? 0 : i + 1];\n    const upper = coords[i + 2 >= coordsLength ? (i + 2) % coordsLength : i + 2];\n    const lowerX = lower[0] * PI_OVER_180;\n    const middleY = middle[1] * PI_OVER_180;\n    const upperX = upper[0] * PI_OVER_180;\n    total += (upperX - lowerX) * Math.sin(middleY);\n    i++;\n  }\n  return total * FACTOR;\n}\nvar turf_area_default = area;\nexport {\n  area,\n  turf_area_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { flattenEach, featureEach } from \"@turf/meta\";\nimport { polygon as polygon2, featureCollection as featureCollection2 } from \"@turf/helpers\";\n\n// lib/geojson-polygon-self-intersections.js\nimport rbush from \"rbush\";\nfunction geojsonPolygonSelfIntersections(feature, filterFn, useSpatialIndex) {\n  if (feature.geometry.type !== \"Polygon\")\n    throw new Error(\"The input feature must be a Polygon\");\n  if (useSpatialIndex === void 0) useSpatialIndex = 1;\n  var coord = feature.geometry.coordinates;\n  var output = [];\n  var seen = {};\n  if (useSpatialIndex) {\n    var allEdgesAsRbushTreeItems = [];\n    for (var ring0 = 0; ring0 < coord.length; ring0++) {\n      for (var edge0 = 0; edge0 < coord[ring0].length - 1; edge0++) {\n        allEdgesAsRbushTreeItems.push(rbushTreeItem(ring0, edge0));\n      }\n    }\n    var tree = new rbush();\n    tree.load(allEdgesAsRbushTreeItems);\n  }\n  for (var ringA = 0; ringA < coord.length; ringA++) {\n    for (var edgeA = 0; edgeA < coord[ringA].length - 1; edgeA++) {\n      if (useSpatialIndex) {\n        var bboxOverlaps = tree.search(rbushTreeItem(ringA, edgeA));\n        bboxOverlaps.forEach(function(bboxIsect) {\n          var ring12 = bboxIsect.ring;\n          var edge12 = bboxIsect.edge;\n          ifIsectAddToOutput(ringA, edgeA, ring12, edge12);\n        });\n      } else {\n        for (var ring1 = 0; ring1 < coord.length; ring1++) {\n          for (var edge1 = 0; edge1 < coord[ring1].length - 1; edge1++) {\n            ifIsectAddToOutput(ringA, edgeA, ring1, edge1);\n          }\n        }\n      }\n    }\n  }\n  if (!filterFn)\n    output = {\n      type: \"Feature\",\n      geometry: { type: \"MultiPoint\", coordinates: output }\n    };\n  return output;\n  function ifIsectAddToOutput(ring02, edge02, ring12, edge12) {\n    var start0 = coord[ring02][edge02];\n    var end0 = coord[ring02][edge02 + 1];\n    var start1 = coord[ring12][edge12];\n    var end1 = coord[ring12][edge12 + 1];\n    var isect = intersect(start0, end0, start1, end1);\n    if (isect === null) return;\n    var frac0;\n    var frac1;\n    if (end0[0] !== start0[0]) {\n      frac0 = (isect[0] - start0[0]) / (end0[0] - start0[0]);\n    } else {\n      frac0 = (isect[1] - start0[1]) / (end0[1] - start0[1]);\n    }\n    if (end1[0] !== start1[0]) {\n      frac1 = (isect[0] - start1[0]) / (end1[0] - start1[0]);\n    } else {\n      frac1 = (isect[1] - start1[1]) / (end1[1] - start1[1]);\n    }\n    if (frac0 >= 1 || frac0 <= 0 || frac1 >= 1 || frac1 <= 0) return;\n    var key = isect;\n    var unique = !seen[key];\n    if (unique) {\n      seen[key] = true;\n    }\n    if (filterFn) {\n      output.push(\n        filterFn(\n          isect,\n          ring02,\n          edge02,\n          start0,\n          end0,\n          frac0,\n          ring12,\n          edge12,\n          start1,\n          end1,\n          frac1,\n          unique\n        )\n      );\n    } else {\n      output.push(isect);\n    }\n  }\n  function rbushTreeItem(ring, edge) {\n    var start = coord[ring][edge];\n    var end = coord[ring][edge + 1];\n    var minX;\n    var maxX;\n    var minY;\n    var maxY;\n    if (start[0] < end[0]) {\n      minX = start[0];\n      maxX = end[0];\n    } else {\n      minX = end[0];\n      maxX = start[0];\n    }\n    if (start[1] < end[1]) {\n      minY = start[1];\n      maxY = end[1];\n    } else {\n      minY = end[1];\n      maxY = start[1];\n    }\n    return {\n      minX,\n      minY,\n      maxX,\n      maxY,\n      ring,\n      edge\n    };\n  }\n}\nfunction intersect(start0, end0, start1, end1) {\n  if (equalArrays(start0, start1) || equalArrays(start0, end1) || equalArrays(end0, start1) || equalArrays(end1, start1))\n    return null;\n  var x0 = start0[0], y0 = start0[1], x1 = end0[0], y1 = end0[1], x2 = start1[0], y2 = start1[1], x3 = end1[0], y3 = end1[1];\n  var denom = (x0 - x1) * (y2 - y3) - (y0 - y1) * (x2 - x3);\n  if (denom === 0) return null;\n  var x4 = ((x0 * y1 - y0 * x1) * (x2 - x3) - (x0 - x1) * (x2 * y3 - y2 * x3)) / denom;\n  var y4 = ((x0 * y1 - y0 * x1) * (y2 - y3) - (y0 - y1) * (x2 * y3 - y2 * x3)) / denom;\n  return [x4, y4];\n}\nfunction equalArrays(array1, array2) {\n  if (!array1 || !array2) return false;\n  if (array1.length !== array2.length) return false;\n  for (var i = 0, l = array1.length; i < l; i++) {\n    if (array1[i] instanceof Array && array2[i] instanceof Array) {\n      if (!equalArrays(array1[i], array2[i])) return false;\n    } else if (array1[i] !== array2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\n// lib/simplepolygon.js\nimport { area } from \"@turf/area\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport rbush2 from \"rbush\";\nfunction simplepolygon(feature) {\n  if (feature.type != \"Feature\")\n    throw new Error(\"The input must a geojson object of type Feature\");\n  if (feature.geometry === void 0 || feature.geometry == null)\n    throw new Error(\n      \"The input must a geojson object with a non-empty geometry\"\n    );\n  if (feature.geometry.type != \"Polygon\")\n    throw new Error(\"The input must be a geojson Polygon\");\n  var numRings = feature.geometry.coordinates.length;\n  var vertices = [];\n  for (var i = 0; i < numRings; i++) {\n    var ring = feature.geometry.coordinates[i];\n    if (!equalArrays2(ring[0], ring[ring.length - 1])) {\n      ring.push(ring[0]);\n    }\n    for (var j = 0; j < ring.length - 1; j++) {\n      vertices.push(ring[j]);\n    }\n  }\n  if (!isUnique(vertices))\n    throw new Error(\n      \"The input polygon may not have duplicate vertices (except for the first and last vertex of each ring)\"\n    );\n  var numvertices = vertices.length;\n  var selfIsectsData = geojsonPolygonSelfIntersections(\n    feature,\n    function filterFn(isect, ring0, edge0, start0, end0, frac0, ring1, edge1, start1, end1, frac1, unique) {\n      return [\n        isect,\n        ring0,\n        edge0,\n        start0,\n        end0,\n        frac0,\n        ring1,\n        edge1,\n        start1,\n        end1,\n        frac1,\n        unique\n      ];\n    }\n  );\n  var numSelfIsect = selfIsectsData.length;\n  if (numSelfIsect == 0) {\n    var outputFeatureArray = [];\n    for (var i = 0; i < numRings; i++) {\n      outputFeatureArray.push(\n        polygon([feature.geometry.coordinates[i]], {\n          parent: -1,\n          winding: windingOfRing(feature.geometry.coordinates[i])\n        })\n      );\n    }\n    var output = featureCollection(outputFeatureArray);\n    determineParents();\n    setNetWinding();\n    return output;\n  }\n  var pseudoVtxListByRingAndEdge = [];\n  var isectList = [];\n  for (var i = 0; i < numRings; i++) {\n    pseudoVtxListByRingAndEdge.push([]);\n    for (var j = 0; j < feature.geometry.coordinates[i].length - 1; j++) {\n      pseudoVtxListByRingAndEdge[i].push([\n        new PseudoVtx(\n          feature.geometry.coordinates[i][modulo(j + 1, feature.geometry.coordinates[i].length - 1)],\n          1,\n          [i, j],\n          [i, modulo(j + 1, feature.geometry.coordinates[i].length - 1)],\n          void 0\n        )\n      ]);\n      isectList.push(\n        new Isect(\n          feature.geometry.coordinates[i][j],\n          [i, modulo(j - 1, feature.geometry.coordinates[i].length - 1)],\n          [i, j],\n          void 0,\n          void 0,\n          false,\n          true\n        )\n      );\n    }\n  }\n  for (var i = 0; i < numSelfIsect; i++) {\n    pseudoVtxListByRingAndEdge[selfIsectsData[i][1]][selfIsectsData[i][2]].push(\n      new PseudoVtx(\n        selfIsectsData[i][0],\n        selfIsectsData[i][5],\n        [selfIsectsData[i][1], selfIsectsData[i][2]],\n        [selfIsectsData[i][6], selfIsectsData[i][7]],\n        void 0\n      )\n    );\n    if (selfIsectsData[i][11])\n      isectList.push(\n        new Isect(\n          selfIsectsData[i][0],\n          [selfIsectsData[i][1], selfIsectsData[i][2]],\n          [selfIsectsData[i][6], selfIsectsData[i][7]],\n          void 0,\n          void 0,\n          true,\n          true\n        )\n      );\n  }\n  var numIsect = isectList.length;\n  for (var i = 0; i < pseudoVtxListByRingAndEdge.length; i++) {\n    for (var j = 0; j < pseudoVtxListByRingAndEdge[i].length; j++) {\n      pseudoVtxListByRingAndEdge[i][j].sort(function(a, b) {\n        return a.param < b.param ? -1 : 1;\n      });\n    }\n  }\n  var allIsectsAsIsectRbushTreeItem = [];\n  for (var i = 0; i < numIsect; i++) {\n    allIsectsAsIsectRbushTreeItem.push({\n      minX: isectList[i].coord[0],\n      minY: isectList[i].coord[1],\n      maxX: isectList[i].coord[0],\n      maxY: isectList[i].coord[1],\n      index: i\n    });\n  }\n  var isectRbushTree = new rbush2();\n  isectRbushTree.load(allIsectsAsIsectRbushTreeItem);\n  for (var i = 0; i < pseudoVtxListByRingAndEdge.length; i++) {\n    for (var j = 0; j < pseudoVtxListByRingAndEdge[i].length; j++) {\n      for (var k = 0; k < pseudoVtxListByRingAndEdge[i][j].length; k++) {\n        var coordToFind;\n        if (k == pseudoVtxListByRingAndEdge[i][j].length - 1) {\n          coordToFind = pseudoVtxListByRingAndEdge[i][modulo(j + 1, feature.geometry.coordinates[i].length - 1)][0].coord;\n        } else {\n          coordToFind = pseudoVtxListByRingAndEdge[i][j][k + 1].coord;\n        }\n        var IsectRbushTreeItemFound = isectRbushTree.search({\n          minX: coordToFind[0],\n          minY: coordToFind[1],\n          maxX: coordToFind[0],\n          maxY: coordToFind[1]\n        })[0];\n        pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn = IsectRbushTreeItemFound.index;\n      }\n    }\n  }\n  for (var i = 0; i < pseudoVtxListByRingAndEdge.length; i++) {\n    for (var j = 0; j < pseudoVtxListByRingAndEdge[i].length; j++) {\n      for (var k = 0; k < pseudoVtxListByRingAndEdge[i][j].length; k++) {\n        var coordToFind = pseudoVtxListByRingAndEdge[i][j][k].coord;\n        var IsectRbushTreeItemFound = isectRbushTree.search({\n          minX: coordToFind[0],\n          minY: coordToFind[1],\n          maxX: coordToFind[0],\n          maxY: coordToFind[1]\n        })[0];\n        var l = IsectRbushTreeItemFound.index;\n        if (l < numvertices) {\n          isectList[l].nxtIsectAlongRingAndEdge2 = pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn;\n        } else {\n          if (equalArrays2(\n            isectList[l].ringAndEdge1,\n            pseudoVtxListByRingAndEdge[i][j][k].ringAndEdgeIn\n          )) {\n            isectList[l].nxtIsectAlongRingAndEdge1 = pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn;\n          } else {\n            isectList[l].nxtIsectAlongRingAndEdge2 = pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn;\n          }\n        }\n      }\n    }\n  }\n  var queue = [];\n  var i = 0;\n  for (var j = 0; j < numRings; j++) {\n    var leftIsect = i;\n    for (var k = 0; k < feature.geometry.coordinates[j].length - 1; k++) {\n      if (isectList[i].coord[0] < isectList[leftIsect].coord[0]) {\n        leftIsect = i;\n      }\n      i++;\n    }\n    var isectAfterLeftIsect = isectList[leftIsect].nxtIsectAlongRingAndEdge2;\n    for (var k = 0; k < isectList.length; k++) {\n      if (isectList[k].nxtIsectAlongRingAndEdge1 == leftIsect || isectList[k].nxtIsectAlongRingAndEdge2 == leftIsect) {\n        var isectBeforeLeftIsect = k;\n        break;\n      }\n    }\n    var windingAtIsect = isConvex(\n      [\n        isectList[isectBeforeLeftIsect].coord,\n        isectList[leftIsect].coord,\n        isectList[isectAfterLeftIsect].coord\n      ],\n      true\n    ) ? 1 : -1;\n    queue.push({ isect: leftIsect, parent: -1, winding: windingAtIsect });\n  }\n  queue.sort(function(a, b) {\n    return isectList[a.isect].coord > isectList[b.isect].coord ? -1 : 1;\n  });\n  var outputFeatureArray = [];\n  while (queue.length > 0) {\n    var popped = queue.pop();\n    var startIsect = popped.isect;\n    var currentOutputRingParent = popped.parent;\n    var currentOutputRingWinding = popped.winding;\n    var currentOutputRing = outputFeatureArray.length;\n    var currentOutputRingCoords = [isectList[startIsect].coord];\n    var currentIsect = startIsect;\n    if (isectList[startIsect].ringAndEdge1Walkable) {\n      var walkingRingAndEdge = isectList[startIsect].ringAndEdge1;\n      var nxtIsect = isectList[startIsect].nxtIsectAlongRingAndEdge1;\n    } else {\n      var walkingRingAndEdge = isectList[startIsect].ringAndEdge2;\n      var nxtIsect = isectList[startIsect].nxtIsectAlongRingAndEdge2;\n    }\n    while (!equalArrays2(isectList[startIsect].coord, isectList[nxtIsect].coord)) {\n      currentOutputRingCoords.push(isectList[nxtIsect].coord);\n      var nxtIsectInQueue = void 0;\n      for (var i = 0; i < queue.length; i++) {\n        if (queue[i].isect == nxtIsect) {\n          nxtIsectInQueue = i;\n          break;\n        }\n      }\n      if (nxtIsectInQueue != void 0) {\n        queue.splice(nxtIsectInQueue, 1);\n      }\n      if (equalArrays2(walkingRingAndEdge, isectList[nxtIsect].ringAndEdge1)) {\n        walkingRingAndEdge = isectList[nxtIsect].ringAndEdge2;\n        isectList[nxtIsect].ringAndEdge2Walkable = false;\n        if (isectList[nxtIsect].ringAndEdge1Walkable) {\n          var pushing = { isect: nxtIsect };\n          if (isConvex(\n            [\n              isectList[currentIsect].coord,\n              isectList[nxtIsect].coord,\n              isectList[isectList[nxtIsect].nxtIsectAlongRingAndEdge2].coord\n            ],\n            currentOutputRingWinding == 1\n          )) {\n            pushing.parent = currentOutputRingParent;\n            pushing.winding = -currentOutputRingWinding;\n          } else {\n            pushing.parent = currentOutputRing;\n            pushing.winding = currentOutputRingWinding;\n          }\n          queue.push(pushing);\n        }\n        currentIsect = nxtIsect;\n        nxtIsect = isectList[nxtIsect].nxtIsectAlongRingAndEdge2;\n      } else {\n        walkingRingAndEdge = isectList[nxtIsect].ringAndEdge1;\n        isectList[nxtIsect].ringAndEdge1Walkable = false;\n        if (isectList[nxtIsect].ringAndEdge2Walkable) {\n          var pushing = { isect: nxtIsect };\n          if (isConvex(\n            [\n              isectList[currentIsect].coord,\n              isectList[nxtIsect].coord,\n              isectList[isectList[nxtIsect].nxtIsectAlongRingAndEdge1].coord\n            ],\n            currentOutputRingWinding == 1\n          )) {\n            pushing.parent = currentOutputRingParent;\n            pushing.winding = -currentOutputRingWinding;\n          } else {\n            pushing.parent = currentOutputRing;\n            pushing.winding = currentOutputRingWinding;\n          }\n          queue.push(pushing);\n        }\n        currentIsect = nxtIsect;\n        nxtIsect = isectList[nxtIsect].nxtIsectAlongRingAndEdge1;\n      }\n    }\n    currentOutputRingCoords.push(isectList[nxtIsect].coord);\n    outputFeatureArray.push(\n      polygon([currentOutputRingCoords], {\n        index: currentOutputRing,\n        parent: currentOutputRingParent,\n        winding: currentOutputRingWinding,\n        netWinding: void 0\n      })\n    );\n  }\n  var output = featureCollection(outputFeatureArray);\n  determineParents();\n  setNetWinding();\n  function determineParents() {\n    var featuresWithoutParent = [];\n    for (var i2 = 0; i2 < output.features.length; i2++) {\n      if (output.features[i2].properties.parent == -1)\n        featuresWithoutParent.push(i2);\n    }\n    if (featuresWithoutParent.length > 1) {\n      for (var i2 = 0; i2 < featuresWithoutParent.length; i2++) {\n        var parent = -1;\n        var parentArea = Infinity;\n        for (var j2 = 0; j2 < output.features.length; j2++) {\n          if (featuresWithoutParent[i2] == j2) continue;\n          if (booleanPointInPolygon(\n            output.features[featuresWithoutParent[i2]].geometry.coordinates[0][0],\n            output.features[j2],\n            { ignoreBoundary: true }\n          )) {\n            if (area(output.features[j2]) < parentArea) {\n              parent = j2;\n            }\n          }\n        }\n        output.features[featuresWithoutParent[i2]].properties.parent = parent;\n      }\n    }\n  }\n  function setNetWinding() {\n    for (var i2 = 0; i2 < output.features.length; i2++) {\n      if (output.features[i2].properties.parent == -1) {\n        var netWinding = output.features[i2].properties.winding;\n        output.features[i2].properties.netWinding = netWinding;\n        setNetWindingOfChildren(i2, netWinding);\n      }\n    }\n  }\n  function setNetWindingOfChildren(parent, ParentNetWinding) {\n    for (var i2 = 0; i2 < output.features.length; i2++) {\n      if (output.features[i2].properties.parent == parent) {\n        var netWinding = ParentNetWinding + output.features[i2].properties.winding;\n        output.features[i2].properties.netWinding = netWinding;\n        setNetWindingOfChildren(i2, netWinding);\n      }\n    }\n  }\n  return output;\n}\nvar PseudoVtx = function(coord, param, ringAndEdgeIn, ringAndEdgeOut, nxtIsectAlongEdgeIn) {\n  this.coord = coord;\n  this.param = param;\n  this.ringAndEdgeIn = ringAndEdgeIn;\n  this.ringAndEdgeOut = ringAndEdgeOut;\n  this.nxtIsectAlongEdgeIn = nxtIsectAlongEdgeIn;\n};\nvar Isect = function(coord, ringAndEdge1, ringAndEdge2, nxtIsectAlongRingAndEdge1, nxtIsectAlongRingAndEdge2, ringAndEdge1Walkable, ringAndEdge2Walkable) {\n  this.coord = coord;\n  this.ringAndEdge1 = ringAndEdge1;\n  this.ringAndEdge2 = ringAndEdge2;\n  this.nxtIsectAlongRingAndEdge1 = nxtIsectAlongRingAndEdge1;\n  this.nxtIsectAlongRingAndEdge2 = nxtIsectAlongRingAndEdge2;\n  this.ringAndEdge1Walkable = ringAndEdge1Walkable;\n  this.ringAndEdge2Walkable = ringAndEdge2Walkable;\n};\nfunction isConvex(pts, righthanded) {\n  if (typeof righthanded === \"undefined\") righthanded = true;\n  if (pts.length != 3)\n    throw new Error(\"This function requires an array of three points [x,y]\");\n  var d = (pts[1][0] - pts[0][0]) * (pts[2][1] - pts[0][1]) - (pts[1][1] - pts[0][1]) * (pts[2][0] - pts[0][0]);\n  return d >= 0 == righthanded;\n}\nfunction windingOfRing(ring) {\n  var leftVtx = 0;\n  for (var i = 0; i < ring.length - 1; i++) {\n    if (ring[i][0] < ring[leftVtx][0]) leftVtx = i;\n  }\n  if (isConvex(\n    [\n      ring[modulo(leftVtx - 1, ring.length - 1)],\n      ring[leftVtx],\n      ring[modulo(leftVtx + 1, ring.length - 1)]\n    ],\n    true\n  )) {\n    var winding = 1;\n  } else {\n    var winding = -1;\n  }\n  return winding;\n}\nfunction equalArrays2(array1, array2) {\n  if (!array1 || !array2) return false;\n  if (array1.length != array2.length) return false;\n  for (var i = 0, l = array1.length; i < l; i++) {\n    if (array1[i] instanceof Array && array2[i] instanceof Array) {\n      if (!equalArrays2(array1[i], array2[i])) return false;\n    } else if (array1[i] != array2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction modulo(n, m) {\n  return (n % m + m) % m;\n}\nfunction isUnique(array) {\n  var u = {};\n  var isUnique2 = 1;\n  for (var i = 0, l = array.length; i < l; ++i) {\n    if (Object.prototype.hasOwnProperty.call(u, array[i])) {\n      isUnique2 = 0;\n      break;\n    }\n    u[array[i]] = 1;\n  }\n  return isUnique2;\n}\n\n// index.ts\nfunction unkinkPolygon(geojson) {\n  var features = [];\n  flattenEach(geojson, function(feature) {\n    if (feature.geometry.type !== \"Polygon\") return;\n    featureEach(simplepolygon(feature), function(poly) {\n      features.push(polygon2(poly.geometry.coordinates, feature.properties));\n    });\n  });\n  return featureCollection2(features);\n}\nvar turf_unkink_polygon_default = unkinkPolygon;\nexport {\n  turf_unkink_polygon_default as default,\n  unkinkPolygon\n};\n//# sourceMappingURL=index.js.map","class TinyQueue {\n    constructor(data = [], compare = defaultCompare) {\n        this.data = data;\n        this.length = this.data.length;\n        this.compare = compare;\n\n        if (this.length > 0) {\n            for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n        }\n    }\n\n    push(item) {\n        this.data.push(item);\n        this.length++;\n        this._up(this.length - 1);\n    }\n\n    pop() {\n        if (this.length === 0) return undefined;\n\n        const top = this.data[0];\n        const bottom = this.data.pop();\n        this.length--;\n\n        if (this.length > 0) {\n            this.data[0] = bottom;\n            this._down(0);\n        }\n\n        return top;\n    }\n\n    peek() {\n        return this.data[0];\n    }\n\n    _up(pos) {\n        const {data, compare} = this;\n        const item = data[pos];\n\n        while (pos > 0) {\n            const parent = (pos - 1) >> 1;\n            const current = data[parent];\n            if (compare(item, current) >= 0) break;\n            data[pos] = current;\n            pos = parent;\n        }\n\n        data[pos] = item;\n    }\n\n    _down(pos) {\n        const {data, compare} = this;\n        const halfLength = this.length >> 1;\n        const item = data[pos];\n\n        while (pos < halfLength) {\n            let left = (pos << 1) + 1;\n            let best = data[left];\n            const right = left + 1;\n\n            if (right < this.length && compare(data[right], best) < 0) {\n                left = right;\n                best = data[right];\n            }\n            if (compare(best, item) >= 0) break;\n\n            data[pos] = best;\n            pos = left;\n        }\n\n        data[pos] = item;\n    }\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction checkWhichEventIsLeft (e1, e2) {\n    if (e1.p.x > e2.p.x) return 1\n    if (e1.p.x < e2.p.x) return -1\n\n    if (e1.p.y !== e2.p.y) return e1.p.y > e2.p.y ? 1 : -1\n    return 1\n}\n\nfunction checkWhichSegmentHasRightEndpointFirst (seg1, seg2) {\n    if (seg1.rightSweepEvent.p.x > seg2.rightSweepEvent.p.x) return 1\n    if (seg1.rightSweepEvent.p.x < seg2.rightSweepEvent.p.x) return -1\n\n    if (seg1.rightSweepEvent.p.y !== seg2.rightSweepEvent.p.y) return seg1.rightSweepEvent.p.y < seg2.rightSweepEvent.p.y ? 1 : -1\n    return 1\n}\n\nclass Event {\n\n    constructor (p, featureId, ringId, eventId) {\n        this.p = {\n            x: p[0],\n            y: p[1]\n        };\n        this.featureId = featureId;\n        this.ringId = ringId;\n        this.eventId = eventId;\n\n        this.otherEvent = null;\n        this.isLeftEndpoint = null;\n    }\n\n    isSamePoint (eventToCheck) {\n        return this.p.x === eventToCheck.p.x && this.p.y === eventToCheck.p.y\n    }\n}\n\nfunction fillEventQueue (geojson, eventQueue) {\n    if (geojson.type === 'FeatureCollection') {\n        const features = geojson.features;\n        for (let i = 0; i < features.length; i++) {\n            processFeature(features[i], eventQueue);\n        }\n    } else {\n        processFeature(geojson, eventQueue);\n    }\n}\n\nlet featureId = 0;\nlet ringId = 0;\nlet eventId = 0;\nfunction processFeature (featureOrGeometry, eventQueue) {\n    const geom = featureOrGeometry.type === 'Feature' ? featureOrGeometry.geometry : featureOrGeometry;\n    let coords = geom.coordinates;\n    // standardise the input\n    if (geom.type === 'Polygon' || geom.type === 'MultiLineString') coords = [coords];\n    if (geom.type === 'LineString') coords = [[coords]];\n\n    for (let i = 0; i < coords.length; i++) {\n        for (let ii = 0; ii < coords[i].length; ii++) {\n            let currentP = coords[i][ii][0];\n            let nextP = null;\n            ringId = ringId + 1;\n            for (let iii = 0; iii < coords[i][ii].length - 1; iii++) {\n                nextP = coords[i][ii][iii + 1];\n\n                const e1 = new Event(currentP, featureId, ringId, eventId);\n                const e2 = new Event(nextP, featureId, ringId, eventId + 1);\n\n                e1.otherEvent = e2;\n                e2.otherEvent = e1;\n\n                if (checkWhichEventIsLeft(e1, e2) > 0) {\n                    e2.isLeftEndpoint = true;\n                    e1.isLeftEndpoint = false;\n                } else {\n                    e1.isLeftEndpoint = true;\n                    e2.isLeftEndpoint = false;\n                }\n                eventQueue.push(e1);\n                eventQueue.push(e2);\n\n                currentP = nextP;\n                eventId = eventId + 1;\n            }\n        }\n    }\n    featureId = featureId + 1;\n}\n\nclass Segment {\n\n    constructor (event) {\n        this.leftSweepEvent = event;\n        this.rightSweepEvent = event.otherEvent;\n    }\n}\n\nfunction testSegmentIntersect (seg1, seg2) {\n    if (seg1 === null || seg2 === null) return false\n\n    if (seg1.leftSweepEvent.ringId === seg2.leftSweepEvent.ringId &&\n        (seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n        seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n        seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent) ||\n        seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n        seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent))) return false\n\n    const x1 = seg1.leftSweepEvent.p.x;\n    const y1 = seg1.leftSweepEvent.p.y;\n    const x2 = seg1.rightSweepEvent.p.x;\n    const y2 = seg1.rightSweepEvent.p.y;\n    const x3 = seg2.leftSweepEvent.p.x;\n    const y3 = seg2.leftSweepEvent.p.y;\n    const x4 = seg2.rightSweepEvent.p.x;\n    const y4 = seg2.rightSweepEvent.p.y;\n\n    const denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1));\n    const numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3));\n    const numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3));\n\n    if (denom === 0) {\n        if (numeA === 0 && numeB === 0) return false\n        return false\n    }\n\n    const uA = numeA / denom;\n    const uB = numeB / denom;\n\n    if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n        const x = x1 + (uA * (x2 - x1));\n        const y = y1 + (uA * (y2 - y1));\n        return [x, y]\n    }\n    return false\n}\n\n// import {debugEventAndSegments, debugRemovingSegment} from './debug'\n\nfunction runCheck (eventQueue, ignoreSelfIntersections) {\n    ignoreSelfIntersections = ignoreSelfIntersections ? ignoreSelfIntersections : false;\n\n    const intersectionPoints = [];\n    const outQueue = new TinyQueue([], checkWhichSegmentHasRightEndpointFirst);\n\n    while (eventQueue.length) {\n        const event = eventQueue.pop();\n        if (event.isLeftEndpoint) {\n            // debugEventAndSegments(event.p, outQueue.data)\n            const segment = new Segment(event);\n            for (let i = 0; i < outQueue.data.length; i++) {\n                const otherSeg = outQueue.data[i];\n                if (ignoreSelfIntersections) {\n                    if (otherSeg.leftSweepEvent.featureId === event.featureId) continue\n                }\n                const intersection = testSegmentIntersect(segment, otherSeg);\n                if (intersection !== false) intersectionPoints.push(intersection);\n            }\n            outQueue.push(segment);\n        } else if (event.isLeftEndpoint === false) {\n            outQueue.pop();\n            // const seg = outQueue.pop()\n            // debugRemovingSegment(event.p, seg)\n        }\n    }\n    return intersectionPoints\n}\n\nfunction sweeplineIntersections (geojson, ignoreSelfIntersections) {\n    const eventQueue = new TinyQueue([], checkWhichEventIsLeft);\n    fillEventQueue(geojson, eventQueue);\n    return runCheck(eventQueue, ignoreSelfIntersections)\n}\n\nexport default sweeplineIntersections;\n","// index.ts\nimport { feature, featureCollection, point } from \"@turf/helpers\";\n\n// lib/sweepline-intersections-export.ts\nimport lib from \"sweepline-intersections\";\nvar sweeplineIntersections = lib;\n\n// index.ts\nfunction lineIntersect(line1, line2, options = {}) {\n  const { removeDuplicates = true, ignoreSelfIntersections = true } = options;\n  let features = [];\n  if (line1.type === \"FeatureCollection\")\n    features = features.concat(line1.features);\n  else if (line1.type === \"Feature\") features.push(line1);\n  else if (line1.type === \"LineString\" || line1.type === \"Polygon\" || line1.type === \"MultiLineString\" || line1.type === \"MultiPolygon\") {\n    features.push(feature(line1));\n  }\n  if (line2.type === \"FeatureCollection\")\n    features = features.concat(line2.features);\n  else if (line2.type === \"Feature\") features.push(line2);\n  else if (line2.type === \"LineString\" || line2.type === \"Polygon\" || line2.type === \"MultiLineString\" || line2.type === \"MultiPolygon\") {\n    features.push(feature(line2));\n  }\n  const intersections = sweeplineIntersections(\n    featureCollection(features),\n    ignoreSelfIntersections\n  );\n  let results = [];\n  if (removeDuplicates) {\n    const unique = {};\n    intersections.forEach((intersection) => {\n      const key = intersection.join(\",\");\n      if (!unique[key]) {\n        unique[key] = true;\n        results.push(intersection);\n      }\n    });\n  } else {\n    results = intersections;\n  }\n  return featureCollection(results.map((r) => point(r)));\n}\nvar turf_line_intersect_default = lineIntersect;\nexport {\n  turf_line_intersect_default as default,\n  lineIntersect\n};\n//# sourceMappingURL=index.js.map","import { polygon, featureCollection } from '@turf/helpers'\nimport { buffer } from '@turf/buffer'\nimport { difference } from '@turf/difference'\nimport { unkinkPolygon } from '@turf/unkink-polygon'\nimport {\n  Feature as GeoJsonFeature,\n  Polygon as GeoJsonPolygon,\n  MultiPolygon as GeoJsonMultiPolygon,\n  LineString as GeoJsonLineString,\n} from 'geojson'\nimport { booleanPointInPolygon } from '@turf/boolean-point-in-polygon'\nimport { lineIntersect } from '@turf/line-intersect'\nimport VectorSource from 'ol/source/Vector'\nimport Feature from 'ol/Feature'\nimport { GeoJSON } from 'ol/format'\nimport { ProjectionInfo } from './types'\n\nconst polygonTypes = ['Polygon', 'MultiPolygon']\nexport const converter = new GeoJSON()\n\nconst cutCuttableWithCutter = (\n  cuttable: GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>,\n  cutter: GeoJsonFeature<GeoJsonLineString>\n): GeoJsonFeature<GeoJsonPolygon>[] => {\n  // error by less than 4 water molecule widths deemed acceptable for surveying\n  const cutterAsPolygon = buffer(cutter, 0.000001, {\n    units: 'millimeters',\n  }) as GeoJsonFeature<GeoJsonPolygon>\n  const cuts = difference(featureCollection([cuttable, cutterAsPolygon]))\n\n  if (cuts === null) {\n    const errorText = 'Cutting resulted in geometry destruction.'\n    console.error(\n      '@polar/plugin-draw: ',\n      errorText,\n      'cuttable: ',\n      cuttable,\n      'cutter: ',\n      cutter\n    )\n    throw new Error(errorText)\n  }\n\n  if (cuts.geometry.type === 'MultiPolygon') {\n    return cuts.geometry.coordinates\n      .map((coordinates) => polygon(coordinates))\n      .map((cuttable) => cutCuttableWithCutter(cuttable, cutter))\n      .flat(1)\n  }\n\n  return [cuts as GeoJsonFeature<GeoJsonPolygon>]\n}\n\nexport const cutCuttablesWithCutter = (\n  cuttables: GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>[],\n  cutter: GeoJsonFeature<GeoJsonLineString>\n): GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>[] => {\n  const unkinkedCuttables = cuttables.reduce((accumulator, current) => {\n    accumulator.push(...unkinkPolygon(current).features)\n    return accumulator\n  }, [] as GeoJsonFeature<GeoJsonPolygon>[])\n\n  return unkinkedCuttables\n    .map((cuttable) => cutCuttableWithCutter(cuttable, cutter))\n    .flat(1)\n}\n\nconst intersectionCountImpliesCuttability = (count: number) =>\n  count > 0 && count % 2 === 0\n\nconst wouldCutterCutCandidate = (\n  cutter: GeoJsonFeature<GeoJsonLineString>,\n  candidate: GeoJsonFeature\n) =>\n  // drawing may initially turn out to be a point (1-coordinate-line-string)\n  cutter.geometry.type === 'LineString' &&\n  // check if candidate is actually a polygon, we don't cut anything else today\n  polygonTypes.includes(candidate.geometry.type) &&\n  // start and end do not reside inside candidate (cut through, not cut in)\n  [\n    cutter.geometry.coordinates[0],\n    cutter.geometry.coordinates[cutter.geometry.coordinates.length - 1],\n  ].every(\n    (coordinate) =>\n      !booleanPointInPolygon(\n        coordinate,\n        candidate as GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>\n      )\n  ) &&\n  // cuttable is cut an even amount of times > 0, i.e. is entered and left\n  intersectionCountImpliesCuttability(\n    lineIntersect(\n      cutter,\n      candidate as GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>\n    ).features.length\n  )\n\nexport const splitByCuttability = (\n  drawSource: VectorSource,\n  cutter: GeoJsonFeature<GeoJsonLineString>,\n  projectionInfo: ProjectionInfo\n): [GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>[], Feature[]] =>\n  drawSource.getFeatures().reduce(\n    ([cuttables, uncuttables], current) => {\n      const currentAsGeoJson = converter.writeFeatureObject(\n        current,\n        projectionInfo\n      )\n      if (wouldCutterCutCandidate(cutter, currentAsGeoJson)) {\n        cuttables.push(\n          currentAsGeoJson as GeoJsonFeature<\n            GeoJsonPolygon | GeoJsonMultiPolygon\n          >\n        )\n      } else {\n        uncuttables.push(current)\n      }\n      return [cuttables, uncuttables]\n    },\n    [[], []] as [\n      GeoJsonFeature<GeoJsonPolygon | GeoJsonMultiPolygon>[],\n      Feature[]\n    ]\n  )\n","import Style from 'ol/style/Style'\nimport Stroke from 'ol/style/Stroke'\nimport Fill from 'ol/style/Fill'\nimport Circle from 'ol/style/Circle'\n\nconst colors = {\n  fill: '#ecf4ff',\n  circleStroke: '#2b3980',\n  strokeIneffective: '#dc3545',\n  strokeEffective: '#00a645',\n}\nconst width = 5\n\nconst fill = new Fill({\n  color: colors.fill,\n})\n\nconst circleStroke = new Stroke({\n  color: colors.circleStroke,\n  width: width * 0.66,\n})\n\nconst dashStroke = new Stroke({\n  color: colors.strokeIneffective,\n  lineDash: [10, 15],\n  lineCap: 'square',\n  width,\n})\n\nexport const cutStyle = new Style({\n  image: new Circle({\n    fill,\n    stroke: circleStroke,\n    radius: width * 1.33,\n  }),\n  fill,\n  stroke: dashStroke,\n})\n\nexport const styleCut = (effective: boolean) =>\n  dashStroke.setColor(\n    effective ? colors.strokeEffective : colors.strokeIneffective\n  )\n","import Draw from 'ol/interaction/Draw'\nimport LineString from 'ol/geom/LineString'\nimport Feature from 'ol/Feature'\nimport {\n  Feature as GeoJsonFeature,\n  LineString as GeoJsonLineString,\n} from 'geojson'\nimport VectorSource from 'ol/source/Vector'\nimport { cutStyle, styleCut } from './style'\nimport { ProjectionInfo } from './types'\nimport { converter, splitByCuttability } from './cutlery'\n\nexport const makeDraw = (\n  projectionInfo: ProjectionInfo,\n  drawSource: VectorSource\n) =>\n  new Draw({\n    type: 'LineString',\n    stopClick: true,\n    style: (feature) => {\n      const cutter = converter.writeFeatureObject(\n        feature as Feature<LineString>,\n        projectionInfo\n      ) as GeoJsonFeature<GeoJsonLineString>\n      // if cut would have an effect, style accordingly\n      styleCut(\n        splitByCuttability(drawSource, cutter, projectionInfo)[0].length > 0\n      )\n      return cutStyle\n    },\n  })\n","import { PolarActionContext } from '@polar/lib-custom-types'\nimport Feature from 'ol/Feature'\nimport {\n  Feature as GeoJsonFeature,\n  LineString as GeoJsonLineString,\n} from 'geojson'\nimport {\n  CreateInteractionsPayload,\n  DrawState,\n  DrawGetters,\n} from '../../../types'\nimport {\n  converter,\n  cutCuttablesWithCutter,\n  splitByCuttability,\n} from './cutlery'\nimport { makeDraw } from './makeDraw'\n\n// NOTE: Lots of \"as\" casting in whole module due to conversions' broad returns\n\nconst wgs84Epsg = 'EPSG:4326'\n\nexport const createCutInteractions = (\n  {\n    dispatch,\n    rootGetters,\n    getters,\n  }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource }: CreateInteractionsPayload\n) => {\n  const projectionInfo = {\n    featureProjection: rootGetters.map.getView().getProjection().getCode(),\n    dataProjection: wgs84Epsg,\n  }\n  const draw = makeDraw(projectionInfo, drawSource)\n  draw.on('drawend', (e) => {\n    const cutter = converter.writeFeatureObject(\n      e.feature,\n      projectionInfo\n    ) as GeoJsonFeature<GeoJsonLineString>\n    const [cuttables, uncuttables] = splitByCuttability(\n      drawSource,\n      cutter,\n      projectionInfo\n    )\n\n    if (cuttables.length) {\n      try {\n        const cuts = cutCuttablesWithCutter(cuttables, cutter).map(\n          (cut) => converter.readFeature(cut, projectionInfo) as Feature\n        )\n        drawSource.clear()\n        drawSource.addFeatures([...uncuttables, ...cuts])\n      } catch {\n        console.error(\n          `@polar/plugin-draw: Cut operation failed for unknown reason.`\n        )\n        if (getters.toastAction) {\n          dispatch(\n            getters.toastAction,\n            {\n              type: 'error',\n              text: 'draw.cut.error.cutFailed',\n            },\n            { root: true }\n          )\n        }\n      }\n    } else if (getters.toastAction) {\n      dispatch(\n        getters.toastAction,\n        {\n          type: 'info',\n          text: 'draw.cut.warn.unevenCut',\n        },\n        { root: true }\n      )\n    }\n  })\n\n  return [draw]\n}\n","// index.ts\nimport { featureCollection, lineString, multiLineString } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\nfunction polygonToLine(poly, options = {}) {\n  const geom = getGeom(poly);\n  if (!options.properties && poly.type === \"Feature\") {\n    options.properties = poly.properties;\n  }\n  switch (geom.type) {\n    case \"Polygon\":\n      return singlePolygonToLine(geom, options);\n    case \"MultiPolygon\":\n      return multiPolygonToLine(geom, options);\n    default:\n      throw new Error(\"invalid poly\");\n  }\n}\nfunction singlePolygonToLine(poly, options = {}) {\n  const geom = getGeom(poly);\n  const coords = geom.coordinates;\n  const properties = options.properties ? options.properties : poly.type === \"Feature\" ? poly.properties : {};\n  return coordsToLine(coords, properties);\n}\nfunction multiPolygonToLine(multiPoly, options = {}) {\n  const geom = getGeom(multiPoly);\n  const coords = geom.coordinates;\n  const properties = options.properties ? options.properties : multiPoly.type === \"Feature\" ? multiPoly.properties : {};\n  const lines = [];\n  coords.forEach((coord) => {\n    lines.push(coordsToLine(coord, properties));\n  });\n  return featureCollection(lines);\n}\nfunction coordsToLine(coords, properties) {\n  if (coords.length > 1) {\n    return multiLineString(coords, properties);\n  }\n  return lineString(coords[0], properties);\n}\nvar turf_polygon_to_line_default = polygonToLine;\nexport {\n  coordsToLine,\n  turf_polygon_to_line_default as default,\n  multiPolygonToLine,\n  polygonToLine,\n  singlePolygonToLine\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { flattenEach } from \"@turf/meta\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nfunction booleanDisjoint(feature1, feature2, {\n  ignoreSelfIntersections = true\n} = { ignoreSelfIntersections: true }) {\n  let bool = true;\n  flattenEach(feature1, (flatten1) => {\n    flattenEach(feature2, (flatten2) => {\n      if (bool === false) {\n        return false;\n      }\n      bool = disjoint(\n        flatten1.geometry,\n        flatten2.geometry,\n        ignoreSelfIntersections\n      );\n    });\n  });\n  return bool;\n}\nfunction disjoint(geom1, geom2, ignoreSelfIntersections) {\n  switch (geom1.type) {\n    case \"Point\":\n      switch (geom2.type) {\n        case \"Point\":\n          return !compareCoords(geom1.coordinates, geom2.coordinates);\n        case \"LineString\":\n          return !isPointOnLine(geom2, geom1);\n        case \"Polygon\":\n          return !booleanPointInPolygon(geom1, geom2);\n      }\n      break;\n    case \"LineString\":\n      switch (geom2.type) {\n        case \"Point\":\n          return !isPointOnLine(geom1, geom2);\n        case \"LineString\":\n          return !isLineOnLine(geom1, geom2, ignoreSelfIntersections);\n        case \"Polygon\":\n          return !isLineInPoly(geom2, geom1, ignoreSelfIntersections);\n      }\n      break;\n    case \"Polygon\":\n      switch (geom2.type) {\n        case \"Point\":\n          return !booleanPointInPolygon(geom2, geom1);\n        case \"LineString\":\n          return !isLineInPoly(geom1, geom2, ignoreSelfIntersections);\n        case \"Polygon\":\n          return !isPolyInPoly(geom2, geom1, ignoreSelfIntersections);\n      }\n  }\n  return false;\n}\nfunction isPointOnLine(lineString, pt) {\n  for (let i = 0; i < lineString.coordinates.length - 1; i++) {\n    if (isPointOnLineSegment(\n      lineString.coordinates[i],\n      lineString.coordinates[i + 1],\n      pt.coordinates\n    )) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction isLineOnLine(lineString1, lineString2, ignoreSelfIntersections) {\n  const doLinesIntersect = lineIntersect(lineString1, lineString2, {\n    ignoreSelfIntersections\n  });\n  if (doLinesIntersect.features.length > 0) {\n    return true;\n  }\n  return false;\n}\nfunction isLineInPoly(polygon, lineString, ignoreSelfIntersections) {\n  for (const coord of lineString.coordinates) {\n    if (booleanPointInPolygon(coord, polygon)) {\n      return true;\n    }\n  }\n  const doLinesIntersect = lineIntersect(lineString, polygonToLine(polygon), {\n    ignoreSelfIntersections\n  });\n  if (doLinesIntersect.features.length > 0) {\n    return true;\n  }\n  return false;\n}\nfunction isPolyInPoly(feature1, feature2, ignoreSelfIntersections) {\n  for (const coord1 of feature1.coordinates[0]) {\n    if (booleanPointInPolygon(coord1, feature2)) {\n      return true;\n    }\n  }\n  for (const coord2 of feature2.coordinates[0]) {\n    if (booleanPointInPolygon(coord2, feature1)) {\n      return true;\n    }\n  }\n  const doLinesIntersect = lineIntersect(\n    polygonToLine(feature1),\n    polygonToLine(feature2),\n    { ignoreSelfIntersections }\n  );\n  if (doLinesIntersect.features.length > 0) {\n    return true;\n  }\n  return false;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt) {\n  const dxc = pt[0] - lineSegmentStart[0];\n  const dyc = pt[1] - lineSegmentStart[1];\n  const dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n  const dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n  const cross = dxc * dyl - dyc * dxl;\n  if (cross !== 0) {\n    return false;\n  }\n  if (Math.abs(dxl) >= Math.abs(dyl)) {\n    if (dxl > 0) {\n      return lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0];\n    } else {\n      return lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n    }\n  } else if (dyl > 0) {\n    return lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1];\n  } else {\n    return lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n  }\n}\nfunction compareCoords(pair1, pair2) {\n  return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nvar turf_boolean_disjoint_default = booleanDisjoint;\nexport {\n  booleanDisjoint,\n  turf_boolean_disjoint_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { booleanDisjoint } from \"@turf/boolean-disjoint\";\nimport { flattenEach } from \"@turf/meta\";\nfunction booleanIntersects(feature1, feature2, {\n  ignoreSelfIntersections = true\n} = {}) {\n  let bool = false;\n  flattenEach(feature1, (flatten1) => {\n    flattenEach(feature2, (flatten2) => {\n      if (bool === true) {\n        return true;\n      }\n      bool = !booleanDisjoint(flatten1.geometry, flatten2.geometry, {\n        ignoreSelfIntersections\n      });\n    });\n  });\n  return bool;\n}\nvar turf_boolean_intersects_default = booleanIntersects;\nexport {\n  booleanIntersects,\n  turf_boolean_intersects_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport * as polyclip from \"polyclip-ts\";\nimport { multiPolygon, polygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction union2(features, options = {}) {\n  const geoms = [];\n  geomEach(features, (geom) => {\n    geoms.push(geom.coordinates);\n  });\n  if (geoms.length < 2) {\n    throw new Error(\"Must have at least 2 geometries\");\n  }\n  const unioned = polyclip.union(geoms[0], ...geoms.slice(1));\n  if (unioned.length === 0) return null;\n  if (unioned.length === 1) return polygon(unioned[0], options.properties);\n  else return multiPolygon(unioned, options.properties);\n}\nvar turf_union_default = union2;\nexport {\n  turf_union_default as default,\n  union2 as union\n};\n//# sourceMappingURL=index.js.map","import { PolarActionContext } from '@polar/lib-custom-types'\nimport { getSnaps } from '@polar/plugin-draw'\nimport Draw from 'ol/interaction/Draw'\nimport Snap from 'ol/interaction/Snap'\nimport { Feature as GeoJsonFeature, MultiPolygon, Polygon } from 'geojson'\nimport { booleanIntersects } from '@turf/boolean-intersects'\nimport { union } from '@turf/union'\nimport { GeoJSON } from 'ol/format'\nimport Feature from 'ol/Feature'\nimport { CreateInteractionsPayload, DrawState, DrawGetters } from '../../types'\n\nconst converter = new GeoJSON()\n\nexport const createMergeInteractions = (\n  { rootGetters }: PolarActionContext<DrawState, DrawGetters>,\n  { drawSource }: CreateInteractionsPayload\n) => {\n  const draw = new Draw({ type: 'Polygon' })\n  // @ts-expect-error | internal hack to detect it in @polar/plugin-pins and @polar/plugin-gfi\n  draw._isDrawPlugin = true\n\n  draw.on('drawend', (e) => {\n    const mergePolygon = converter.writeFeatureObject(\n      e.feature\n    ) as GeoJsonFeature<Polygon>\n    const drawFeatures = drawSource.getFeatures()\n\n    // sort everything into a.) things to combine b.) things not to touch\n    const intersectedPolygons: GeoJsonFeature<Polygon | MultiPolygon>[] = []\n    const nextFeatures = drawFeatures.reduce((accumulator, drawFeature) => {\n      const type = drawFeature.getGeometry()?.getType() ?? ''\n      const drawFeatureAsGeoJson = converter.writeFeatureObject(drawFeature)\n      if (\n        ['Polygon', 'MultiPolygon'].includes(type) &&\n        booleanIntersects(mergePolygon, drawFeatureAsGeoJson)\n      ) {\n        intersectedPolygons.push(\n          drawFeatureAsGeoJson as GeoJsonFeature<Polygon | MultiPolygon>\n        )\n      } else {\n        accumulator.push(drawFeature)\n      }\n      return accumulator\n    }, [] as Feature[])\n\n    const mergedFeature = union({\n      type: 'FeatureCollection',\n      features: [mergePolygon, ...intersectedPolygons],\n    })\n\n    nextFeatures.push(converter.readFeature(mergedFeature) as Feature)\n\n    drawSource.clear()\n    drawSource.addFeatures(nextFeatures)\n  })\n\n  return [\n    draw,\n    ...getSnaps(rootGetters.map, rootGetters.configuration?.draw?.snapTo || []),\n    new Snap({ source: drawSource }),\n  ]\n}\n","export const inactive = 'inactive'\nexport const inProgress = 'inProgress'\nexport const complete = 'complete'\nexport const error = 'error'\n","// index.ts\nimport { feature } from \"@turf/helpers\";\nimport { getCoords, getType } from \"@turf/invariant\";\nfunction cleanCoords(geojson, options = {}) {\n  var mutate = typeof options === \"object\" ? options.mutate : options;\n  if (!geojson) throw new Error(\"geojson is required\");\n  var type = getType(geojson);\n  var newCoords = [];\n  switch (type) {\n    case \"LineString\":\n      newCoords = cleanLine(geojson, type);\n      break;\n    case \"MultiLineString\":\n    case \"Polygon\":\n      getCoords(geojson).forEach(function(line) {\n        newCoords.push(cleanLine(line, type));\n      });\n      break;\n    case \"MultiPolygon\":\n      getCoords(geojson).forEach(function(polygons) {\n        var polyPoints = [];\n        polygons.forEach(function(ring) {\n          polyPoints.push(cleanLine(ring, type));\n        });\n        newCoords.push(polyPoints);\n      });\n      break;\n    case \"Point\":\n      return geojson;\n    case \"MultiPoint\":\n      var existing = {};\n      getCoords(geojson).forEach(function(coord) {\n        var key = coord.join(\"-\");\n        if (!Object.prototype.hasOwnProperty.call(existing, key)) {\n          newCoords.push(coord);\n          existing[key] = true;\n        }\n      });\n      break;\n    default:\n      throw new Error(type + \" geometry not supported\");\n  }\n  if (geojson.coordinates) {\n    if (mutate === true) {\n      geojson.coordinates = newCoords;\n      return geojson;\n    }\n    return { type, coordinates: newCoords };\n  } else {\n    if (mutate === true) {\n      geojson.geometry.coordinates = newCoords;\n      return geojson;\n    }\n    return feature({ type, coordinates: newCoords }, geojson.properties, {\n      bbox: geojson.bbox,\n      id: geojson.id\n    });\n  }\n}\nfunction cleanLine(line, type) {\n  var points = getCoords(line);\n  if (points.length === 2 && !equals(points[0], points[1])) return points;\n  var newPoints = [];\n  var secondToLast = points.length - 1;\n  var newPointsLength = newPoints.length;\n  newPoints.push(points[0]);\n  for (var i = 1; i < secondToLast; i++) {\n    var prevAddedPoint = newPoints[newPoints.length - 1];\n    if (points[i][0] === prevAddedPoint[0] && points[i][1] === prevAddedPoint[1])\n      continue;\n    else {\n      newPoints.push(points[i]);\n      newPointsLength = newPoints.length;\n      if (newPointsLength > 2) {\n        if (isPointOnLineSegment(\n          newPoints[newPointsLength - 3],\n          newPoints[newPointsLength - 1],\n          newPoints[newPointsLength - 2]\n        ))\n          newPoints.splice(newPoints.length - 2, 1);\n      }\n    }\n  }\n  newPoints.push(points[points.length - 1]);\n  newPointsLength = newPoints.length;\n  if ((type === \"Polygon\" || type === \"MultiPolygon\") && equals(points[0], points[points.length - 1]) && newPointsLength < 4) {\n    throw new Error(\"invalid polygon\");\n  }\n  if (type === \"LineString\" && newPointsLength < 3) {\n    return newPoints;\n  }\n  if (isPointOnLineSegment(\n    newPoints[newPointsLength - 3],\n    newPoints[newPointsLength - 1],\n    newPoints[newPointsLength - 2]\n  ))\n    newPoints.splice(newPoints.length - 2, 1);\n  return newPoints;\n}\nfunction equals(pt1, pt2) {\n  return pt1[0] === pt2[0] && pt1[1] === pt2[1];\n}\nfunction isPointOnLineSegment(start, end, point) {\n  var x = point[0], y = point[1];\n  var startX = start[0], startY = start[1];\n  var endX = end[0], endY = end[1];\n  var dxc = x - startX;\n  var dyc = y - startY;\n  var dxl = endX - startX;\n  var dyl = endY - startY;\n  var cross = dxc * dyl - dyc * dxl;\n  if (cross !== 0) return false;\n  else if (Math.abs(dxl) >= Math.abs(dyl))\n    return dxl > 0 ? startX <= x && x <= endX : endX <= x && x <= startX;\n  else return dyl > 0 ? startY <= y && y <= endY : endY <= y && y <= startY;\n}\nvar turf_clean_coords_default = cleanCoords;\nexport {\n  cleanCoords,\n  turf_clean_coords_default as default\n};\n//# sourceMappingURL=index.js.map","import {\n  FeatureCollection,\n  Feature as GeoJsonFeature,\n  MultiPolygon,\n  Polygon,\n} from 'geojson'\nimport { cleanCoords } from '@turf/clean-coords'\nimport { unkinkPolygon } from '@turf/unkink-polygon'\nimport { GeometryType } from '../../types'\n\nexport const autofixFeatureCollection = (\n  revisedFeatureCollection: FeatureCollection<GeometryType>\n) => ({\n  ...revisedFeatureCollection,\n  features: revisedFeatureCollection.features.reduce((accumulator, feature) => {\n    if (['Polygon', 'MultiPolygon'].includes(feature.geometry.type)) {\n      accumulator.push(\n        ...unkinkPolygon(\n          cleanCoords(feature) as GeoJsonFeature<Polygon | MultiPolygon>\n        ).features\n      )\n    } else {\n      accumulator.push(cleanCoords(feature))\n    }\n    return accumulator\n  }, [] as GeoJsonFeature<GeometryType>[]),\n})\n","import { FeatureCollection } from 'geojson'\nimport { GeometryType } from '../../types'\n\n// FeatureCollection is compatible to stupid clone\nexport const cloneFeatureCollection = (\n  // No GeometryCollection from Draw, hence the <GeometryType>\n  featureCollection: FeatureCollection<GeometryType>\n): FeatureCollection<GeometryType> =>\n  JSON.parse(JSON.stringify(featureCollection))\n","var collectionCompare = compare;\n\n/*\n  primitives: value1 === value2\n  functions: value1.toString == value2.toString\n  arrays: if length, sequence and values of properties are identical\n  objects: if length, names and values of properties are identical\n  compare([[1, [2, 3]], [[1, [2, 3]]); // true\n  compare([[1, [2, 3], 4], [[1, [2, 3]]); // false\n  compare({a: 2, b: 3}, {a: 2, b: 3}); // true\n  compare({a: 2, b: 3}, {b: 3, a: 2}); // true\n  compare({a: 2, b: 3, c: 4}, {a: 2, b: 3}); // false\n  compare({a: 2, b: 3}, {a: 2, b: 3, c: 4}); // false\n  compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]); // true\n*/\n\nfunction compare(value1, value2) {\n  if (value1 === value2) {\n    return true;\n  }\n\n  /* eslint-disable no-self-compare */\n  // if both values are NaNs return true\n  if (value1 !== value1 && value2 !== value2) {\n    return true;\n  }\n\n  if (\n    typeof value1 != typeof value2 || // primitive != primitive wrapper\n    {}.toString.call(value1) != {}.toString.call(value2) // check for other (maybe nullish) objects\n  ) {\n    return false;\n  }\n\n  if (value1 !== Object(value1)) {\n    // non equal primitives\n    return false;\n  }\n\n  if (!value1) {\n    return false;\n  }\n\n  if (Array.isArray(value1)) {\n    return compareArrays(value1, value2);\n  }\n\n  if ({}.toString.call(value1) == '[object Set]') {\n    return compareArrays(Array.from(value1), Array.from(value2));\n  }\n\n  if ({}.toString.call(value1) == '[object Object]') {\n    return compareObjects(value1, value2);\n  }\n\n  return compareNativeSubtypes(value1, value2);\n}\n\nfunction compareNativeSubtypes(value1, value2) {\n  // e.g. Function, RegExp, Date\n  return value1.toString() === value2.toString();\n}\n\nfunction compareArrays(value1, value2) {\n  var len = value1.length;\n\n  if (len != value2.length) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    if (!compare(value1[i], value2[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction compareObjects(value1, value2) {\n  var keys1 = Object.keys(value1);\n  var len = keys1.length;\n\n  if (len != Object.keys(value2).length) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    var key1 = keys1[i];\n\n    if (!(value2.hasOwnProperty(key1) && compare(value1[key1], value2[key1]))) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport {collectionCompare as default};\n","import compare from 'just-compare'\nimport { FeatureCollection, Feature as GeoJsonFeature } from 'geojson'\nimport { Feature, Map } from 'ol'\nimport { GeoJSON } from 'ol/format'\nimport {\n  getVectorFeaturesByFeatureRequest,\n  parseWfsResponse,\n} from '@polar/lib-get-features'\nimport { rawLayerList } from '@masterportal/masterportalapi'\nimport { booleanIntersects } from '@turf/boolean-intersects'\nimport { DrawMetaService } from '@polar/lib-custom-types'\nimport { GeometryType } from '../../types'\n\nconst reader = new GeoJSON()\n\ntype Aggregator = (\n  propertiesArray: Exclude<GeoJsonFeature['properties'], null>[]\n) => GeoJsonFeature['properties'][] | GeoJsonFeature['properties']\n\nconst aggregators: Record<\n  Required<DrawMetaService>['aggregationMode'],\n  Aggregator\n> = {\n  all: (x) => x,\n  unequal: (propertiesArray) =>\n    propertiesArray.reduce((accumulator, current) => {\n      if (accumulator.every((entry) => !compare(entry, current))) {\n        accumulator.push(current)\n      }\n      return accumulator\n    }, []),\n}\n\nconst filterProperties = (\n  properties: Exclude<GeoJsonFeature['properties'], null>,\n  propertyNames?: string[]\n) =>\n  propertyNames && propertyNames.length\n    ? Object.fromEntries(\n        Object.entries(properties).filter(([key]) =>\n          propertyNames.includes(key)\n        )\n      )\n    : properties\n\nconst aggregateProperties = (\n  propertiesArray: GeoJsonFeature['properties'][],\n  propertyNames?: string[],\n  mode: DrawMetaService['aggregationMode'] = 'unequal'\n) =>\n  aggregators[mode](\n    propertiesArray\n      .filter((properties) => properties !== null)\n      .map((properties) => filterProperties(properties, propertyNames))\n  )\n\n/** @throws */\nexport const enrichWithMetaServices = (\n  featureCollection: FeatureCollection<GeometryType>,\n  map: Map,\n  metaServices: DrawMetaService[],\n  signal: AbortSignal\n): Promise<GeoJsonFeature<GeometryType>[]> =>\n  Promise.all(\n    featureCollection.features.map(async (feature) => ({\n      ...feature,\n      properties: {\n        ...feature.properties,\n        metaProperties: {\n          ...(feature.properties?.metaProperties || {}),\n          ...Object.fromEntries(\n            await Promise.all(\n              metaServices.map(({ id, propertyNames, aggregationMode }) =>\n                getVectorFeaturesByFeatureRequest({\n                  feature: reader.readFeature(\n                    JSON.stringify(feature)\n                  ) as unknown as Feature,\n                  fetchLayerId: id,\n                  projectionCode: map.getView().getProjection().getCode(),\n                  signal,\n                })\n                  .then((response) =>\n                    rawLayerList.getLayerWhere({ id }).typ === 'WFS'\n                      ? parseWfsResponse(response, undefined, false)\n                      : (response.json() as Promise<FeatureCollection>)\n                  )\n                  .then((featuresFromBbox) => {\n                    const applicableProperties = featuresFromBbox.features\n                      .filter((featureFromBbox) =>\n                        booleanIntersects(featureFromBbox, feature)\n                      )\n                      .map(({ properties }) => properties)\n                    const aggregatedProperties = aggregateProperties(\n                      applicableProperties,\n                      propertyNames,\n                      aggregationMode\n                    )\n                    return [id, aggregatedProperties]\n                  })\n              )\n            )\n          ),\n        },\n      },\n    }))\n  )\n","import {\n  Feature,\n  FeatureCollection,\n  GeoJsonTypes,\n  Geometry,\n  GeometryCollection,\n} from 'geojson'\n\ntype GeometryType = Exclude<Geometry, GeometryCollection>\n\nconst isMulti = (type: GeometryType['type']) => type.startsWith('Multi')\nconst multi = (type: GeometryType['type']) =>\n  (isMulti(type) ? type : `Multi${type}`) as\n    | 'MultiPoint'\n    | 'MultiLineString'\n    | 'MultiPolygon'\n\nconst mergeBin = (features: Feature<GeometryType>[]): Feature<GeometryType>[] =>\n  !features.length\n    ? []\n    : [\n        {\n          ...features[0],\n          geometry: {\n            type: multi(features[0].geometry.type),\n            coordinates: [\n              ...features\n                .map(({ geometry }) =>\n                  isMulti(geometry.type)\n                    ? geometry.coordinates\n                    : [geometry.coordinates]\n                )\n                .flat(1),\n            ],\n          },\n        } as Feature<GeometryType>,\n      ]\n\nconst getGeometryBin = (type: GeoJsonTypes) =>\n  type.endsWith('Point')\n    ? 'points'\n    : type.endsWith('LineString')\n    ? 'lineStrings'\n    : type.endsWith('Polygon')\n    ? 'polygons'\n    : ''\n\nexport const mergeToMultiGeometries = (\n  featureCollection: FeatureCollection<GeometryType>\n): FeatureCollection<GeometryType> => {\n  const bins = featureCollection.features.reduce(\n    (accumulator, current) => {\n      const bin = getGeometryBin(current.geometry.type)\n      if (bin) {\n        accumulator[bin].push(current)\n      } else {\n        console.warn(\n          `@polar/plugin-draw: Unsupported geometry input \"${current.geometry.type}\" in multi geometry merge skipped.`\n        )\n      }\n      return accumulator\n    },\n    {\n      points: [],\n      lineStrings: [],\n      polygons: [],\n    } as Record<'points' | 'lineStrings' | 'polygons', Feature<GeometryType>[]>\n  )\n\n  return {\n    ...featureCollection,\n    features: [\n      ...mergeBin(bins.points),\n      ...mergeBin(bins.lineStrings),\n      ...mergeBin(bins.polygons),\n    ],\n  }\n}\n","// index.ts\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { getGeom } from \"@turf/invariant\";\nimport { point } from \"@turf/helpers\";\nfunction booleanCrosses(feature1, feature2) {\n  var geom1 = getGeom(feature1);\n  var geom2 = getGeom(feature2);\n  var type1 = geom1.type;\n  var type2 = geom2.type;\n  switch (type1) {\n    case \"MultiPoint\":\n      switch (type2) {\n        case \"LineString\":\n          return doMultiPointAndLineStringCross(geom1, geom2);\n        case \"Polygon\":\n          return doesMultiPointCrossPoly(geom1, geom2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    case \"LineString\":\n      switch (type2) {\n        case \"MultiPoint\":\n          return doMultiPointAndLineStringCross(geom2, geom1);\n        case \"LineString\":\n          return doLineStringsCross(geom1, geom2);\n        case \"Polygon\":\n          return doLineStringAndPolygonCross(geom1, geom2);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    case \"Polygon\":\n      switch (type2) {\n        case \"MultiPoint\":\n          return doesMultiPointCrossPoly(geom2, geom1);\n        case \"LineString\":\n          return doLineStringAndPolygonCross(geom2, geom1);\n        default:\n          throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n      }\n    default:\n      throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n  }\n}\nfunction doMultiPointAndLineStringCross(multiPoint, lineString) {\n  var foundIntPoint = false;\n  var foundExtPoint = false;\n  var pointLength = multiPoint.coordinates.length;\n  var i = 0;\n  while (i < pointLength && !foundIntPoint && !foundExtPoint) {\n    for (var i2 = 0; i2 < lineString.coordinates.length - 1; i2++) {\n      var incEndVertices = true;\n      if (i2 === 0 || i2 === lineString.coordinates.length - 2) {\n        incEndVertices = false;\n      }\n      if (isPointOnLineSegment(\n        lineString.coordinates[i2],\n        lineString.coordinates[i2 + 1],\n        multiPoint.coordinates[i],\n        incEndVertices\n      )) {\n        foundIntPoint = true;\n      } else {\n        foundExtPoint = true;\n      }\n    }\n    i++;\n  }\n  return foundIntPoint && foundExtPoint;\n}\nfunction doLineStringsCross(lineString1, lineString2) {\n  var doLinesIntersect = lineIntersect(lineString1, lineString2);\n  if (doLinesIntersect.features.length > 0) {\n    for (var i = 0; i < lineString1.coordinates.length - 1; i++) {\n      for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {\n        var incEndVertices = true;\n        if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {\n          incEndVertices = false;\n        }\n        if (isPointOnLineSegment(\n          lineString1.coordinates[i],\n          lineString1.coordinates[i + 1],\n          lineString2.coordinates[i2],\n          incEndVertices\n        )) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n}\nfunction doLineStringAndPolygonCross(lineString, polygon) {\n  const line = polygonToLine(polygon);\n  const doLinesIntersect = lineIntersect(lineString, line);\n  if (doLinesIntersect.features.length > 0) {\n    return true;\n  }\n  return false;\n}\nfunction doesMultiPointCrossPoly(multiPoint, polygon) {\n  var foundIntPoint = false;\n  var foundExtPoint = false;\n  var pointLength = multiPoint.coordinates.length;\n  for (let i = 0; i < pointLength && (!foundIntPoint || !foundExtPoint); i++) {\n    if (booleanPointInPolygon(point(multiPoint.coordinates[i]), polygon)) {\n      foundIntPoint = true;\n    } else {\n      foundExtPoint = true;\n    }\n  }\n  return foundExtPoint && foundIntPoint;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, incEnd) {\n  var dxc = pt[0] - lineSegmentStart[0];\n  var dyc = pt[1] - lineSegmentStart[1];\n  var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n  var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n  var cross = dxc * dyl - dyc * dxl;\n  if (cross !== 0) {\n    return false;\n  }\n  if (incEnd) {\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n      return dxl > 0 ? lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0] : lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n    }\n    return dyl > 0 ? lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1] : lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n  } else {\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n      return dxl > 0 ? lineSegmentStart[0] < pt[0] && pt[0] < lineSegmentEnd[0] : lineSegmentEnd[0] < pt[0] && pt[0] < lineSegmentStart[0];\n    }\n    return dyl > 0 ? lineSegmentStart[1] < pt[1] && pt[1] < lineSegmentEnd[1] : lineSegmentEnd[1] < pt[1] && pt[1] < lineSegmentStart[1];\n  }\n}\nvar turf_boolean_crosses_default = booleanCrosses;\nexport {\n  booleanCrosses,\n  turf_boolean_crosses_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { getGeom } from \"@turf/invariant\";\nimport { polygon, lineString } from \"@turf/helpers\";\nimport { booleanDisjoint } from \"@turf/boolean-disjoint\";\nimport { booleanCrosses } from \"@turf/boolean-crosses\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { booleanPointOnLine as isPointOnLine } from \"@turf/boolean-point-on-line\";\nfunction booleanValid(feature) {\n  if (!feature.type) return false;\n  const geom = getGeom(feature);\n  const type = geom.type;\n  const coords = geom.coordinates;\n  switch (type) {\n    case \"Point\":\n      return coords.length > 1;\n    case \"MultiPoint\":\n      for (var i = 0; i < coords.length; i++) {\n        if (coords[i].length < 2) return false;\n      }\n      return true;\n    case \"LineString\":\n      if (coords.length < 2) return false;\n      for (var i = 0; i < coords.length; i++) {\n        if (coords[i].length < 2) return false;\n      }\n      return true;\n    case \"MultiLineString\":\n      if (coords.length < 2) return false;\n      for (var i = 0; i < coords.length; i++) {\n        if (coords[i].length < 2) return false;\n      }\n      return true;\n    case \"Polygon\":\n      for (var i = 0; i < geom.coordinates.length; i++) {\n        if (coords[i].length < 4) return false;\n        if (!checkRingsClose(coords[i])) return false;\n        if (checkRingsForSpikesPunctures(coords[i])) return false;\n        if (i > 0) {\n          if (lineIntersect(polygon([coords[0]]), polygon([coords[i]])).features.length > 1)\n            return false;\n        }\n      }\n      return true;\n    case \"MultiPolygon\":\n      for (var i = 0; i < geom.coordinates.length; i++) {\n        var poly = geom.coordinates[i];\n        for (var ii = 0; ii < poly.length; ii++) {\n          if (poly[ii].length < 4) return false;\n          if (!checkRingsClose(poly[ii])) return false;\n          if (checkRingsForSpikesPunctures(poly[ii])) return false;\n          if (ii === 0) {\n            if (!checkPolygonAgainstOthers(poly, geom.coordinates, i))\n              return false;\n          }\n          if (ii > 0) {\n            if (lineIntersect(polygon([poly[0]]), polygon([poly[ii]])).features.length > 1)\n              return false;\n          }\n        }\n      }\n      return true;\n    default:\n      return false;\n  }\n}\nfunction checkRingsClose(geom) {\n  return geom[0][0] === geom[geom.length - 1][0] && geom[0][1] === geom[geom.length - 1][1];\n}\nfunction checkRingsForSpikesPunctures(geom) {\n  for (var i = 0; i < geom.length - 1; i++) {\n    var point = geom[i];\n    for (var ii = i + 1; ii < geom.length - 2; ii++) {\n      var seg = [geom[ii], geom[ii + 1]];\n      if (isPointOnLine(point, lineString(seg))) return true;\n    }\n  }\n  return false;\n}\nfunction checkPolygonAgainstOthers(poly, geom, index) {\n  var polyToCheck = polygon(poly);\n  for (var i = index + 1; i < geom.length; i++) {\n    if (!booleanDisjoint(polyToCheck, polygon(geom[i]))) {\n      if (booleanCrosses(polyToCheck, lineString(geom[i][0]))) return false;\n    }\n  }\n  return true;\n}\nvar turf_boolean_valid_default = booleanValid;\nexport {\n  booleanValid,\n  turf_boolean_valid_default as default\n};\n//# sourceMappingURL=index.js.map","import { FeatureCollection } from 'geojson'\nimport { booleanValid } from '@turf/boolean-valid'\nimport { GeometryType } from '../../types'\n\nexport const validateGeoJson = (\n  featureCollection: FeatureCollection<GeometryType>\n): FeatureCollection<GeometryType> => ({\n  ...featureCollection,\n  features: featureCollection.features.map((feature) => ({\n    ...feature,\n    properties: {\n      ...(feature.properties ?? {}),\n      sfaValidity: booleanValid(feature),\n    },\n  })),\n})\n","import type { PolarActionContext } from '@polar/lib-custom-types'\nimport type { FeatureCollection } from 'geojson'\nimport type { DrawGetters, DrawState, GeometryType } from '../../types'\nimport { complete, error, inProgress } from './revisionStates'\nimport { autofixFeatureCollection } from './autofix'\nimport { cloneFeatureCollection } from './cloneFeatureCollection'\nimport { enrichWithMetaServices } from './enrichWithMetaServices'\nimport { mergeToMultiGeometries } from './mergeToMultiGeometries'\nimport { validateGeoJson } from './validateGeoJson'\n\nlet abortController: AbortController | null = null\n\nexport const reviseFeatures = async ({\n  commit,\n  dispatch,\n  rootGetters,\n  getters,\n}: PolarActionContext<DrawState, DrawGetters>) => {\n  const { revision } = getters.configuration\n  if (!revision) {\n    return\n  }\n\n  commit('setFeatureCollectionRevisionState', inProgress)\n\n  if (abortController) {\n    abortController.abort()\n  }\n  const thisController = (abortController = new AbortController())\n\n  // clone to prevent accidentally messing with the draw tool's data\n  let revisedFeatureCollection = cloneFeatureCollection(\n    getters.featureCollection as FeatureCollection<GeometryType>\n  )\n\n  if (revision.autofix) {\n    try {\n      revisedFeatureCollection = autofixFeatureCollection(\n        revisedFeatureCollection\n      )\n    } catch {\n      commit('setFeatureCollectionRevisionState', error)\n      console.warn(\n        `@polar/plugin-draw: Autofix failed since entered geometries were not valid and fixable. This may e.g. result from pulling points of a polygon in edit mode together until they're point-shaped.`\n      )\n      return\n    }\n  }\n\n  // merge first; relevant for both follow-up steps\n  if (revision.mergeToMultiGeometries) {\n    // TODO: turf provides \"union\" and \"combine\" methods, probably just use them\n    revisedFeatureCollection = mergeToMultiGeometries(revisedFeatureCollection)\n  }\n\n  if (revision.validate) {\n    revisedFeatureCollection = validateGeoJson(revisedFeatureCollection)\n  }\n\n  if (revision.metaServices?.length) {\n    try {\n      revisedFeatureCollection.features = await enrichWithMetaServices(\n        revisedFeatureCollection,\n        rootGetters.map,\n        revision.metaServices,\n        abortController.signal\n      )\n    } catch (e) {\n      if (thisController.signal.aborted) {\n        return\n      }\n      console.error(\n        '@polar/plugin-draw: An error occurred when trying to fetch meta service data for the given feature collection.',\n        e\n      )\n      if (getters.toastAction) {\n        dispatch(\n          getters.toastAction,\n          {\n            type: 'warning',\n            text: 'plugins.draw.metaInformationRetrieval.errorToast',\n            timeout: 10000,\n          },\n          { root: true }\n        )\n      }\n    }\n  }\n\n  if (!thisController.signal.aborted) {\n    commit('setRevisedFeatureCollection', revisedFeatureCollection)\n    commit('setFeatureCollectionRevisionState', complete)\n  }\n}\n","import VectorSource from 'ol/source/Vector'\nimport { Interaction, Select } from 'ol/interaction'\nimport { DrawMode, MeasureMode, PolarActionTree } from '@polar/lib-custom-types'\nimport GeoJSON from 'ol/format/GeoJSON'\nimport { Circle, Point } from 'ol/geom'\nimport createDrawLayer from '../utils/createDrawLayer'\nimport { DrawGetters, DrawState, Mode } from '../types'\nimport { createTextStyle } from '../utils/createTextStyle'\nimport createDrawStyle from '../utils/createDrawStyle'\nimport createInteractions from './createInteractions'\nimport createModifyInteractions from './createInteractions/createModifyInteractions'\nimport createTextInteractions from './createInteractions/createTextInteractions'\nimport createTranslateInteractions from './createInteractions/createTranslateInteractions'\nimport createLassoInteractions from './createInteractions/createLassoInteractions'\nimport modifyDrawStyle from './createInteractions/modifyDrawStyle'\nimport modifyTextStyle from './createInteractions/modifyTextStyle'\nimport createDrawInteractions from './createInteractions/createDrawInteractions'\nimport createDeleteInteractions from './createInteractions/createDeleteInteractions'\nimport { createDuplicateInteractions } from './createInteractions/createDuplicateInteractions'\nimport { createCutInteractions } from './createInteractions/createCutInteractions'\nimport { createMergeInteractions } from './createInteractions/createMergeInteractions'\nimport { reviseFeatures } from './reviseFeatures'\nimport { complete } from './reviseFeatures/revisionStates'\n\nexport const makeActions = () => {\n  let interactions: Interaction[] = []\n  let drawLayer\n  const drawSource = new VectorSource()\n\n  const actions: PolarActionTree<DrawState, DrawGetters> = {\n    createInteractions,\n    createDuplicateInteractions,\n    createCutInteractions,\n    createMergeInteractions,\n    createDrawInteractions,\n    createLassoInteractions,\n    createModifyInteractions,\n    createTranslateInteractions,\n    createDeleteInteractions,\n    createTextInteractions,\n    modifyDrawStyle,\n    modifyTextStyle,\n    reviseFeatures,\n    setupModule({ commit, dispatch, getters, rootGetters: { map } }) {\n      dispatch('initializeConfigStyle')\n      drawSource.on(['addfeature', 'changefeature', 'removefeature'], () =>\n        commit('updateFeatures')\n      )\n      drawLayer = createDrawLayer(drawSource, getters.configuration?.style)\n\n      map.addLayer(drawLayer)\n      dispatch('updateInteractions')\n\n      const drawModes = Object.keys(getters.selectableDrawModes)\n      if (!drawModes.includes('Point')) {\n        commit('setDrawMode', drawModes[0])\n      }\n      if (getters.measureOptions.initialOption) {\n        commit('setMeasureMode', getters.measureOptions.initialOption)\n      }\n\n      if (getters.configuration.revision) {\n        // not inactive, and initially complete due to still being empty\n        commit('setFeatureCollectionRevisionState', complete)\n        this.watch(\n          () => getters.featureCollection,\n          () => dispatch('reviseFeatures')\n        )\n      }\n    },\n    async setDrawMode({ commit, dispatch }, drawMode: DrawMode) {\n      commit('setDrawMode', drawMode)\n      await dispatch('updateInteractions')\n    },\n    /** Please consult the README.md before usage. */\n    async setInteractions(\n      { dispatch, rootGetters },\n      newInteractions: Interaction[]\n    ) {\n      dispatch('setMode', 'none')\n      await dispatch('updateInteractions')\n      interactions = newInteractions\n      interactions.forEach((interaction) =>\n        rootGetters.map.addInteraction(interaction)\n      )\n    },\n    setMeasureMode({ commit, dispatch }, measureMode: MeasureMode) {\n      commit('setMeasureMode', measureMode)\n      dispatch('updateInteractions')\n    },\n    async setMode({ commit, dispatch }, mode: Mode) {\n      commit('setMode', mode)\n      await dispatch('updateInteractions')\n    },\n    setTextInput(\n      {\n        commit,\n        dispatch,\n        rootGetters: { configuration },\n        getters: { selectedFeature, mode, textSize },\n      },\n      textInput\n    ) {\n      commit('setTextInput', textInput)\n      if (mode === 'draw') {\n        dispatch('updateInteractions')\n      } else if (selectedFeature) {\n        selectedFeature.setStyle(\n          createTextStyle(textInput, configuration.draw?.textStyle, textSize)\n        )\n        selectedFeature.set('text', textInput)\n        commit('updateFeatures')\n      }\n    },\n    setSelectedStrokeColor(\n      {\n        commit,\n        dispatch,\n        getters: { configuration, measureMode, mode, selectedFeature },\n        rootGetters: { map },\n      },\n      selectedStrokeColor\n    ) {\n      const featureStyle = selectedFeature?.getStyle()\n      if (mode === 'draw') {\n        commit('setSelectedStrokeColor', selectedStrokeColor)\n        dispatch('updateInteractions')\n      } else if (selectedFeature && featureStyle) {\n        const style = createDrawStyle(\n          selectedFeature.getGeometry()?.getType() || mode,\n          selectedStrokeColor,\n          measureMode,\n          map.getView().getProjection(),\n          configuration?.style\n        )\n        selectedFeature.setStyle(style)\n      }\n    },\n    setSelectedSize(\n      {\n        commit,\n        dispatch,\n        rootGetters: { configuration },\n        getters: { selectedFeature, mode, textInput, fontSizes },\n      },\n      selectedSize\n    ) {\n      commit('setSelectedSize', selectedSize)\n      // textSize must be recalculated with new selectedSize\n      const textSize = fontSizes[selectedSize]\n      if (mode === 'draw') {\n        dispatch('updateInteractions')\n      } else if (selectedFeature) {\n        selectedFeature.setStyle(\n          createTextStyle(textInput, configuration.draw?.textStyle, textSize)\n        )\n        commit('updateFeatures')\n      }\n    },\n    async updateInteractions({\n      commit,\n      dispatch,\n      getters: { selectedFeature },\n      rootGetters: { map },\n    }) {\n      interactions.forEach(\n        (interaction) =>\n          // @ts-expect-error | \"un on removal\" riding piggyback as _onRemove\n          map.removeInteraction(interaction) && interaction._onRemove?.()\n      )\n      if (interactions.some((interaction) => interaction instanceof Select)) {\n        if (selectedFeature && selectedFeature.get('text') === '') {\n          // text nodes without text are considered deleted\n          drawSource.removeFeature(selectedFeature)\n          commit('updateFeatures')\n        }\n        commit('setSelectedFeature', null) // select removal = deselect\n        commit('setTextInput', '')\n      }\n      // await is needed as dispatch *may* return a Promise\n      interactions = await dispatch('createInteractions', {\n        drawSource,\n        drawLayer,\n      })\n      interactions.forEach((interaction) => map.addInteraction(interaction))\n    },\n    zoomToFeature({ dispatch }, { index = 0, margin }) {\n      const feature = drawSource.getFeatures()[index] // TODO parameter is weird, one has to know in which order the features where added\n      if (feature) {\n        dispatch('zoomTo', { geometryOrExtent: feature.getGeometry(), margin })\n      }\n    },\n    zoomToAllFeatures({ dispatch }, { margin }) {\n      dispatch('zoomTo', { geometryOrExtent: drawSource.getExtent(), margin })\n    },\n    /**\n     * Zoom to one or all features of the draw layer.\n     */\n    zoomTo({ rootGetters }, { geometryOrExtent, margin }) {\n      const m = margin || 20\n      rootGetters.map.getView().fit(geometryOrExtent, { padding: [m, m, m, m] })\n    },\n    addFeatures({ commit }, { geoJSON, overwrite = false }) {\n      const features = new GeoJSON().readFeatures(geoJSON).map((feature) => {\n        const geometry = feature.getGeometry()\n        const radius = feature.getProperties().radius\n\n        if (geometry?.getType() === 'Point' && radius) {\n          feature.setGeometry(\n            new Circle((geometry as Point).getCoordinates(), radius)\n          )\n        }\n        return feature\n      })\n\n      if (overwrite) {\n        drawSource.clear()\n      }\n      drawSource.addFeatures(features)\n      commit('updateFeatures')\n    },\n    initializeConfigStyle: ({ commit, getters: { configuration } }) => {\n      if (configuration?.style?.stroke?.color) {\n        commit('setSelectedStrokeColor', configuration.style.stroke.color)\n      }\n    },\n  }\n\n  return { actions, drawSource }\n}\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { Feature } from 'geojson'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport noop from '@repositoryname/noop'\nimport { Circle, LineString, Point, Polygon } from 'ol/geom'\nimport { DrawGetters, DrawMutations, DrawState } from '../types'\nimport { makeActions } from './actions'\nimport { inactive } from './reviseFeatures/revisionStates'\n\nconst getInitialState = (): DrawState => ({\n  mode: 'none',\n  drawMode: 'Point',\n  textInput: '',\n  selectedSize: 0,\n  featureCollection: {\n    type: 'FeatureCollection',\n    features: [],\n  },\n  revisedFeatureCollection: {\n    type: 'FeatureCollection',\n    features: [],\n  },\n  featureCollectionRevisionState: inactive,\n  selectedFeature: 1,\n  selectedStrokeColor: '#000000',\n  measureMode: 'none',\n})\n\nexport const makeStoreModule = () => {\n  // NOTE hack to keep complex objects out of vuex\n  let selectedFeature = null\n\n  const { actions, drawSource } = makeActions()\n\n  const storeModule: PolarModule<DrawState, DrawGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions,\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      drawSource() {\n        return drawSource\n      },\n      selectableDrawModes(_, { configuration }) {\n        /* eslint-disable @typescript-eslint/naming-convention */\n        // NOTE: Keys are directly used as technical keys for ol/interaction/Draw and are allowed to differ from the naming scheme.\n        const allSelectableDrawModes = {\n          Circle: 'plugins.draw.drawMode.circle',\n          LineString: 'plugins.draw.drawMode.lineString',\n          Point: 'plugins.draw.drawMode.point',\n          Polygon: 'plugins.draw.drawMode.polygon',\n          Text: 'plugins.draw.drawMode.text',\n        }\n        /* eslint-enable @typescript-eslint/naming-convention */\n\n        // TODO: Do something different than eslint ignore\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { Text, ...defaultSelectableDrawModes } = allSelectableDrawModes\n\n        return configuration.selectableDrawModes\n          ? configuration.selectableDrawModes.reduce(\n              (acc, curr) => ({ ...acc, [curr]: allSelectableDrawModes[curr] }),\n              {}\n            )\n          : defaultSelectableDrawModes\n      },\n      selectedFeature: (state) => {\n        noop(state.selectedFeature)\n        return selectedFeature\n      },\n      selectableModes(_, { configuration }) {\n        const includesWrite =\n          configuration.selectableDrawModes?.includes('Text')\n        const includesMeasure = configuration.measureOptions !== undefined\n        let drawLabel = 'draw'\n        if (includesWrite && includesMeasure) {\n          drawLabel = 'writeAndMeasure'\n        } else if (includesWrite) {\n          drawLabel = 'write'\n        } else if (includesMeasure) {\n          drawLabel = 'measure'\n        }\n        const modes = [\n          ['none', 'plugins.draw.mode.none'],\n          ['draw', `plugins.draw.mode.${drawLabel}`],\n          ['edit', 'plugins.draw.mode.edit'],\n          ['translate', 'plugins.draw.mode.translate'],\n          ['duplicate', 'plugins.draw.mode.duplicate'],\n          ['cut', 'plugins.draw.mode.cut'],\n          ['merge', 'plugins.draw.mode.merge'],\n          ['delete', 'plugins.draw.mode.delete'],\n        ]\n        if (configuration.lassos) {\n          modes.splice(4, 0, ['lasso', 'plugins.draw.mode.lasso'])\n        }\n        return Object.fromEntries(modes)\n      },\n      activeLassoIds: (_, { configuration }, __, rootGetters) =>\n        (configuration.lassos || []).reduce(\n          (accumulator, { id, minZoom = true }) => {\n            const layerConfig = rootGetters.configuration.layers?.find(\n              (layer) => id === layer.id\n            )\n            if (\n              minZoom &&\n              layerConfig &&\n              typeof layerConfig.minZoom !== 'undefined' &&\n              rootGetters.zoomLevel < layerConfig.minZoom\n            ) {\n              return accumulator\n            }\n            accumulator.push(id)\n            return accumulator\n          },\n          [] as string[]\n        ),\n      toastAction: (_, { configuration }) => configuration.toastAction || '',\n      measureOptions: (_, { configuration }) =>\n        configuration.measureOptions || {},\n      selectableMeasureModes: (_, { drawMode, measureOptions }) =>\n        (drawMode === 'LineString'\n          ? Object.entries(measureOptions).filter(\n              ([option]) => option !== 'hectares'\n            )\n          : Object.entries(measureOptions)\n        )\n          .filter((option) => option[1] === true)\n          .reduce(\n            (acc, [option]) => ({\n              ...acc,\n              [option]:\n                `plugins.draw.measureMode.${option}` +\n                (drawMode === 'Polygon' && option !== 'hectares' ? 'Area' : ''),\n            }),\n            { none: 'plugins.draw.measureMode.none' }\n          ),\n      showMeasureOptions: ({ drawMode, mode }, { measureOptions }) =>\n        measureOptions &&\n        Object.values(measureOptions).some((option) => option === true) &&\n        mode === 'draw' &&\n        ['LineString', 'Polygon'].includes(drawMode),\n      showTextInput({ drawMode, mode }, { selectedFeature }) {\n        return (\n          (drawMode === 'Text' && mode === 'draw') ||\n          (mode === 'edit' &&\n            selectedFeature &&\n            typeof selectedFeature.get('text') === 'string')\n        )\n      },\n      showDrawOptions(\n        { mode },\n        { configuration, showTextInput, selectedFeature }\n      ) {\n        return (\n          configuration.enableOptions &&\n          !showTextInput &&\n          (mode === 'draw' || (mode === 'edit' && selectedFeature))\n        )\n      },\n      configuration(_, __, ___, rootGetters) {\n        return rootGetters.configuration.draw || {}\n      },\n      fontSizes(_, { configuration }) {\n        const { textStyle } = configuration\n        if (textStyle?.font) {\n          if (typeof textStyle.font === 'string') {\n            return []\n          }\n          return textStyle.font.size ? textStyle.font.size.slice(0, 5) : [10]\n        }\n        return []\n      },\n      showSizeSlider(_, { fontSizes, showTextInput }) {\n        return showTextInput && fontSizes.length > 1\n      },\n      textSize(_, { fontSizes, selectedSize }) {\n        return fontSizes[selectedSize]\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n      updateFeatures(state) {\n        const features = drawSource.getFeatures().map((feature) => {\n          const geometry = feature.getGeometry() as\n            | Circle\n            | LineString\n            | Point\n            | Polygon\n          const type = geometry.getType()\n          const isCircle = type === 'Circle'\n          const jsonFeature: Feature = {\n            type: 'Feature',\n            properties: Object.fromEntries(\n              Object.entries(feature.getProperties()).filter(\n                ([property]) => property !== 'geometry'\n              )\n            ),\n            geometry: {\n              // @ts-expect-error | A LinearRing can currently not be drawn\n              type: isCircle ? 'Point' : type,\n              // @ts-expect-error | The coordinates are in the correct format\n              coordinates: isCircle\n                ? (geometry as Circle).getCenter()\n                : geometry.getCoordinates(),\n            },\n          }\n          // NOTE: If one is checking if properties exists (which it clearly does), TS complains\n          // \"TS2531: Object is possibly 'null'.\". This is due to the structure of the type GeoJsonProperties.\n          if (isCircle && jsonFeature.properties) {\n            jsonFeature.properties.radius = (geometry as Circle).getRadius()\n          }\n          return jsonFeature\n        })\n        state.featureCollection = { ...state.featureCollection, features }\n      },\n      setSelectedFeature: (state, payload) => {\n        selectedFeature = payload\n        state.selectedFeature = state.selectedFeature + 1\n      },\n    } as DrawMutations,\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { DrawConfiguration } from '@polar/lib-custom-types'\n\nimport { Draw } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport { getSnaps } from './store/createInteractions/getSnaps'\nexport type { Mode } from './types'\n\n// NOTE: Currently no options are specified here, variable is kept for integrity until options are needed\nexport default (options: DrawConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'draw',\n    plugin: Draw,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","import Vue from 'vue'\nimport { ExportConfiguration } from '@polar/lib-custom-types'\n\nexport enum ExportFormat {\n  JPG = 'Jpg',\n  PNG = 'Png',\n  PDF = 'Pdf',\n}\n\nexport enum ExportDirection {\n  UP = 'up',\n  DOWN = 'down',\n  RIGHT = 'right',\n  LEFT = 'left',\n}\n\nexport interface ExportState {\n  /** Base64 encoded picture of the map */\n  exportedMap: string\n  openInDirection: ExportDirection\n}\n\nexport interface ExportGetters extends ExportState {\n  configuration: ExportConfiguration\n  download: boolean\n  showJpg: boolean\n  showPdf: boolean\n  showPng: boolean\n}\n\nexport type ExportAs = (ExportFormat) => void\n\nexport interface ExportComponent extends Vue, ExportState {\n  /** Exports the currently visible map as the format given to the function */\n  exportAs: ExportAs\n}\n","<template>\n  <v-tooltip top :disabled=\"hasSmallDisplay\">\n    <template #activator=\"{ on, attrs }\">\n      <v-btn\n        class=\"ma-2\"\n        :color=\"color\"\n        :small=\"small\"\n        :fab=\"fab\"\n        :aria-label=\"hint ? $t(hint) : ''\"\n        v-bind=\"attrs\"\n        @click=\"click\"\n        v-on=\"on\"\n      >\n        <v-icon :small=\"smallIcon\" :color=\"`${color}Contrast`\">{{\n          icon\n        }}</v-icon>\n      </v-btn>\n    </template>\n    <span v-if=\"hint\">{{ $t(hint) }}</span>\n  </v-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\n\nexport default Vue.extend({\n  name: 'ExportButton',\n  props: {\n    click: {\n      type: Function,\n      required: true,\n    },\n    color: {\n      type: String,\n      required: true,\n    },\n    icon: {\n      type: String,\n      required: true,\n    },\n    fab: {\n      type: Boolean,\n      default: false,\n    },\n    hint: {\n      type: String,\n      required: true,\n    },\n    lightIcon: {\n      type: Boolean,\n      default: false,\n    },\n    small: {\n      type: Boolean,\n      default: false,\n    },\n    smallIcon: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapGetters(['hasSmallDisplay']),\n  },\n})\n</script>\n","<template>\n  <div :class=\"'export-wrapper ' + flow\">\n    <export-button\n      color=\"primary\"\n      fab\n      :click=\"singleExport ? () => exportFile(singleExport) : toggleButtons\"\n      icon=\"fa-image\"\n      :hint=\"mainButtonHint\"\n    ></export-button>\n    <v-scroll-x-transition>\n      <div v-if=\"visible\" :class=\"'export-wrapper export-center ' + flow\">\n        <export-button\n          v-if=\"showJpg\"\n          color=\"secondary\"\n          small\n          fab\n          :click=\"() => exportFile(format.JPG)\"\n          icon=\"fa-image\"\n          small-icon\n          hint=\"plugins.export.buttons.jpg\"\n        ></export-button>\n        <export-button\n          v-if=\"showPng\"\n          color=\"secondary\"\n          small\n          fab\n          :click=\"() => exportFile(format.PNG)\"\n          icon=\"fa-image\"\n          small-icon\n          hint=\"plugins.export.buttons.png\"\n        ></export-button>\n        <export-button\n          v-if=\"showPdf\"\n          color=\"secondary\"\n          small\n          fab\n          :click=\"() => exportFile(format.PDF)\"\n          icon=\"fa-file\"\n          small-icon\n          hint=\"plugins.export.buttons.pdf\"\n        ></export-button>\n      </div>\n    </v-scroll-x-transition>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue, { VueConstructor } from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\nimport { ExportComponent, ExportFormat } from '../types'\nimport Button from './Button.vue'\n\nexport default (Vue as VueConstructor<ExportComponent>).extend({\n  name: 'PolarExport',\n  components: {\n    ExportButton: Button,\n  },\n  data: () => ({\n    // Show format buttons\n    visible: false,\n  }),\n  computed: {\n    ...mapGetters('plugin/export', [\n      'openInDirection',\n      'showJpg',\n      'showPdf',\n      'showPng',\n    ]),\n    ...mapGetters(['map']),\n    format() {\n      return ExportFormat\n    },\n    // Direction of expansion\n    flow() {\n      return 'export-' + this.openInDirection\n    },\n    singleExport() {\n      if (this.showJpg + this.showPng + this.showPdf === 1) {\n        if (this.showJpg) return ExportFormat.JPG\n        if (this.showPng) return ExportFormat.PNG\n        if (this.showPdf) return ExportFormat.PDF\n      }\n\n      return false\n    },\n    mainButtonHint() {\n      if (!this.singleExport) {\n        return 'plugins.export.buttons.toggle'\n      }\n      return {\n        [ExportFormat.JPG]: 'plugins.export.buttons.jpg',\n        [ExportFormat.PNG]: 'plugins.export.buttons.png',\n        [ExportFormat.PDF]: 'plugins.export.buttons.pdf',\n      }[this.singleExport]\n    },\n  },\n  methods: {\n    ...mapActions('plugin/export', ['exportAs']),\n    toggleButtons() {\n      this.visible = !this.visible\n    },\n    exportFile(format) {\n      this.exportAs(format)\n      this.visible = false\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.export-wrapper {\n  display: flex;\n}\n.export-center {\n  align-items: center;\n}\n.export-up {\n  flex-direction: column-reverse;\n}\n.export-down {\n  flex-direction: column;\n}\n.export-left {\n  flex-direction: row-reverse;\n}\n.export-right {\n  flex-direction: row;\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    export: {\n      buttons: {\n        jpg: 'Als .jpeg exportieren.',\n        pdf: 'Als .pdf exportieren.',\n        png: 'Als .png exportieren.',\n        toggle: 'Exportieren ...',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    export: {\n      buttons: {\n        jpg: 'Export as a .jpeg-file.',\n        pdf: 'Export as a .pdf-file.',\n        png: 'Export as a .png-file.',\n        toggle: 'Export ...',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n        c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n    ], { type: 'text/javascript' }))));\n    w.onmessage = function (e) {\n        var d = e.data, ed = d.$e$;\n        if (ed) {\n            var err = new Error(ed[0]);\n            err['code'] = ed[1];\n            err.stack = ed[2];\n            cb(err, null);\n        }\n        else\n            cb(null, d);\n    };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new i32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i) {\n        if (cd[i])\n            ++l[cd[i] - 1];\n    }\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 1; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i) {\n            if (cd[i]) {\n                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n            }\n        }\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n    UnexpectedEOF: 0,\n    InvalidBlockType: 1,\n    InvalidLengthLiteral: 2,\n    InvalidDistance: 3,\n    StreamFinished: 4,\n    NoStreamHandler: 5,\n    InvalidHeader: 6,\n    NoCallback: 7,\n    InvalidUTF8: 8,\n    ExtraFieldTooLong: 9,\n    InvalidDate: 10,\n    FilenameTooLong: 11,\n    StreamFinishing: 12,\n    InvalidZipData: 13,\n    UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n    'unexpected EOF',\n    'invalid block type',\n    'invalid length/literal',\n    'invalid distance',\n    'stream finished',\n    'no stream handler',\n    ,\n    'no callback',\n    'invalid UTF-8 data',\n    'extra field too long',\n    'date not in range 1980-2099',\n    'filename too long',\n    'stream finishing',\n    'invalid zip data'\n    // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n        Error.captureStackTrace(e, err);\n    if (!nt)\n        throw e;\n    return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n    // source length       dict length\n    var sl = dat.length, dl = dict ? dict.length : 0;\n    if (!sl || st.f && !st.l)\n        return buf || new u8(0);\n    var noBuf = !buf;\n    // have to estimate size\n    var resize = noBuf || st.i != 2;\n    // no state\n    var noSt = st.i;\n    // Assumes roughly 33% compression ratio average\n    if (noBuf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                // ensure size\n                if (resize)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8, st.f = final;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                err(1);\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17\n        if (resize)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var lpos = pos;\n        for (;; lpos = pos) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n            pos += c & 15;\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n            if (!c)\n                err(2);\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lpos = pos, lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n                if (!d)\n                    err(3);\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n                }\n                if (pos > tbts) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                if (resize)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                if (bt < dt) {\n                    var shift = dl - dt, dend = Math.min(dt, end);\n                    if (shift + bt < 0)\n                        err(3);\n                    for (; bt < dend; ++bt)\n                        buf[bt] = dict[shift + bt];\n                }\n                for (; bt < end; ++bt)\n                    buf[bt] = buf[bt - dt];\n            }\n        }\n        st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    // don't reallocate for streams or user buffers\n    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n    d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return { t: et, l: 0 };\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return { t: v, l: 1 };\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        ++lcfreq[lclt[i] & 31];\n    for (var i = 0; i < lcdt.length; ++i)\n        ++lcfreq[lcdt[i] & 31];\n    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n    if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        var sym = syms[i];\n        if (sym > 255) {\n            var len = (sym >> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n            var dst = sym & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[sym]), p += ll[sym];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n    var s = st.z || dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var lst = st.l;\n    var pos = (st.r || 0) & 7;\n    if (lvl) {\n        if (pos)\n            w[0] = st.r >> 3;\n        var opt = deo[lvl - 1];\n        var n = opt >> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new i32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos\n        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n        for (; i + 2 < s; ++i) {\n            // hash value\n            var hv = hsh(i);\n            // index mod 32768    previous index mod\n            var imod = i & 32767, pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = i - dif + j & 32767;\n                                    var pti = prev[ti];\n                                    var cd = ti - pti & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += imod - pimod & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one int32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        for (i = Math.max(i, wi); i < s; ++i) {\n            syms[li++] = dat[i];\n            ++lf[dat[i]];\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        if (!lst) {\n            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n            // shft(pos) now 1 less if pos & 7 != 0\n            pos -= 7;\n            st.h = head, st.p = prev, st.i = i, st.w = wi;\n        }\n    }\n    else {\n        for (var i = st.w || 0; i < s + lst; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e >= s) {\n                // write final block\n                w[(pos / 8) | 0] = lst;\n                e = s;\n            }\n            pos = wfblk(w, pos + 1, dat.subarray(i, e));\n        }\n        st.i = s;\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new Int32Array(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && -306674912) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = -1;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return ~c; }\n    };\n};\n// Adler32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length | 0;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 2655, l);\n                for (; i < e; ++i)\n                    m += n += d[i];\n                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n            }\n            a = n, b = m;\n        },\n        d: function () {\n            a %= 65521, b %= 65521;\n            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n        }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    if (!st) {\n        st = { l: 1 };\n        if (opt.dictionary) {\n            var dict = opt.dictionary.subarray(-32768);\n            var newDat = new u8(dict.length + dat.length);\n            newDat.set(dict);\n            newDat.set(dat, dict.length);\n            dat = newDat;\n            st.w = dict.length;\n        }\n    }\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k].buffer) {\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n        }\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            fnStr = wcln(fns[i], fnStr, td_1);\n        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n    }\n    var td = mrg({}, ch[id].e);\n    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n    out: o.size && new u8(o.size),\n    dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) {\n        if (ev.data.length) {\n            strm.push(ev.data[0], ev.data[1]);\n            postMessage([ev.data[0].length]);\n        }\n        else\n            strm.flush();\n    };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else if (!Array.isArray(dat))\n            ext(dat);\n        else if (dat.length == 1) {\n            strm.queuedSize -= dat[0];\n            if (strm.ondrain)\n                strm.ondrain(dat[0]);\n        }\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.queuedSize = 0;\n    strm.push = function (d, f) {\n        if (!strm.ondata)\n            err(5);\n        if (t)\n            strm.ondata(err(4, 0, 1), null, !!f);\n        strm.queuedSize += d.length;\n        w.postMessage([d, t = f], [d.buffer]);\n    };\n    strm.terminate = function () { w.terminate(); };\n    if (flush) {\n        strm.flush = function () { w.postMessage([]); };\n    }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        err(6, 'invalid gzip data');\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += (d[10] | d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n    if (o.dictionary) {\n        var h = adler();\n        h.p(o.dictionary);\n        wbytes(c, 2, h.d());\n    }\n};\n// zlib start\nvar zls = function (d, dict) {\n    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        err(6, 'invalid zlib data');\n    if ((d[1] >> 5 & 1) == +!dict)\n        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n    return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n    if (typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n        // 98304 = 32768 (lookback) + 65536 (common chunk size)\n        this.b = new u8(98304);\n        if (this.o.dictionary) {\n            var dict = this.o.dictionary.subarray(-32768);\n            this.b.set(dict, 32768 - dict.length);\n            this.s.i = 32768 - dict.length;\n        }\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        var endLen = chunk.length + this.s.z;\n        if (endLen > this.b.length) {\n            if (endLen > 2 * this.b.length - 32768) {\n                var newBuf = new u8(endLen & -32768);\n                newBuf.set(this.b.subarray(0, this.s.z));\n                this.b = newBuf;\n            }\n            var split = this.b.length - this.s.z;\n            this.b.set(chunk.subarray(0, split), this.s.z);\n            this.s.z = this.b.length;\n            this.p(this.b, false);\n            this.b.set(this.b.subarray(-32768));\n            this.b.set(chunk.subarray(split), 32768);\n            this.s.z = chunk.length - split + 32768;\n            this.s.i = 32766, this.s.w = 32768;\n        }\n        else {\n            this.b.set(chunk, this.s.z);\n            this.s.z += chunk.length;\n        }\n        this.s.l = final & 1;\n        if (this.s.z > this.s.w + 8191 || final) {\n            this.p(this.b, final || false);\n            this.s.w = this.s.i, this.s.i -= 2;\n        }\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * deflated output for small inputs.\n     */\n    Deflate.prototype.flush = function () {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        this.p(this.b, false);\n        this.s.w = this.s.i, this.s.i -= 2;\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6, 1);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    function Inflate(opts, cb) {\n        // no StrmOpt here to avoid adding to workerizer\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n        this.s = { i: 0, b: dict ? dict.length : 0 };\n        this.o = new u8(32768);\n        this.p = new u8(0);\n        if (dict)\n            this.o.set(dict);\n    }\n    Inflate.prototype.e = function (c) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        if (!this.p.length)\n            this.p = c;\n        else if (c.length) {\n            var n = new u8(this.p.length + c.length);\n            n.set(this.p), n.set(c, this.p.length), this.p = n;\n        }\n    };\n    Inflate.prototype.c = function (final) {\n        this.s.i = +(this.d = final || false);\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.s, this.o);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    function AsyncInflate(opts, cb) {\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Inflate(ev.data);\n            onmessage = astrm(strm);\n        }, 7, 0);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        this.l += chunk.length;\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * GZIPped output for small inputs.\n     */\n    Gzip.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8, 1);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    function Gunzip(opts, cb) {\n        this.v = 1;\n        this.r = 0;\n        Inflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        this.r += chunk.length;\n        if (this.v) {\n            var p = this.p.subarray(this.v - 1);\n            var s = p.length > 3 ? gzs(p) : 4;\n            if (s > p.length) {\n                if (!final)\n                    return;\n            }\n            else if (this.v > 1 && this.onmember) {\n                this.onmember(this.r - p.length);\n            }\n            this.p = p.subarray(s), this.v = 0;\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n        // process concatenated GZIP\n        if (this.s.f && !this.s.l && !final) {\n            this.v = shft(this.s.p) + 9;\n            this.s = { i: 0 };\n            this.o = new u8(0);\n            this.push(new u8(0), final);\n        }\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    function AsyncGunzip(opts, cb) {\n        var _this = this;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gunzip(ev.data);\n            strm.onmember = function (offset) { return postMessage(offset); };\n            onmessage = astrm(strm);\n        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n    var st = gzs(data);\n    if (st + 8 > data.length)\n        err(6, 'invalid gzip data');\n    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * zlibbed output for small inputs.\n     */\n    Zlib.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10, 1);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    function Unzlib(opts, cb) {\n        Inflate.call(this, opts, cb);\n        this.v = opts && opts.dictionary ? 2 : 1;\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 6 && !final)\n                return;\n            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                err(6, 'invalid zlib data');\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    function AsyncUnzlib(opts, cb) {\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Unzlib(ev.data);\n            onmessage = astrm(strm);\n        }, 11, 0);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    function Decompress(opts, cb) {\n        this.o = StrmOpt.call(this, opts, cb) || {};\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n    }\n    // init substream\n    // overriden by AsyncDecompress\n    Decompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (dat, final) {\n            _this.ondata(dat, final);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(this.o)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(this.o)\n                        : new this.Z(this.o);\n                this.i();\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    function AsyncDecompress(opts, cb) {\n        Decompress.call(this, opts, cb);\n        this.queuedSize = 0;\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n    }\n    AsyncDecompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        };\n        this.s.ondrain = function (size) {\n            _this.queuedSize -= size;\n            if (_this.ondrain)\n                _this.ondrain(size);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        this.queuedSize += chunk.length;\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, opts)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, opts)\n            : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k, op = o;\n        if (Array.isArray(val))\n            op = mrg(o, val[1]), val = val[0];\n        if (val instanceof u8)\n            t[n] = [val, op];\n        else {\n            t[n += '/'] = [new u8(0), op];\n            fltn(val, n, t, o);\n        }\n    }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n    td.decode(et, { stream: true });\n    tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n    for (var r = '', i = 0;;) {\n        var c = d[i++];\n        var eb = (c > 127) + (c > 223) + (c > 239);\n        if (i + eb > d.length)\n            return { s: r, r: slc(d, i - 1) };\n        if (!eb)\n            r += String.fromCharCode(c);\n        else if (eb == 3) {\n            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n        }\n        else if (eb & 1)\n            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n        else\n            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n    }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is decoded\n     */\n    function DecodeUTF8(cb) {\n        this.ondata = cb;\n        if (tds)\n            this.t = new TextDecoder();\n        else\n            this.p = et;\n    }\n    /**\n     * Pushes a chunk to be decoded from UTF-8 binary\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    DecodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        final = !!final;\n        if (this.t) {\n            this.ondata(this.t.decode(chunk, { stream: true }), final);\n            if (final) {\n                if (this.t.decode().length)\n                    err(8);\n                this.t = null;\n            }\n            return;\n        }\n        if (!this.p)\n            err(4);\n        var dat = new u8(this.p.length + chunk.length);\n        dat.set(this.p);\n        dat.set(chunk, this.p.length);\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (final) {\n            if (r.length)\n                err(8);\n            this.p = null;\n        }\n        else\n            this.p = r;\n        this.ondata(s, final);\n    };\n    return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is encoded\n     */\n    function EncodeUTF8(cb) {\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be encoded to UTF-8\n     * @param chunk The string data to push\n     * @param final Whether this is the last chunk\n     */\n    EncodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.ondata(strToU8(chunk), this.d = final || false);\n    };\n    return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    if (latin1) {\n        var ar_1 = new u8(str.length);\n        for (var i = 0; i < str.length; ++i)\n            ar_1[i] = str.charCodeAt(i);\n        return ar_1;\n    }\n    if (te)\n        return te.encode(str);\n    var l = str.length;\n    var ar = new u8(str.length + (str.length >> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    if (latin1) {\n        var r = '';\n        for (var i = 0; i < dat.length; i += 16384)\n            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n        return r;\n    }\n    else if (td) {\n        return td.decode(dat);\n    }\n    else {\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (r.length)\n            err(8);\n        return s;\n    }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n        ;\n    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n    var le = 0;\n    if (ex) {\n        for (var k in ex) {\n            var l = ex[k].length;\n            if (l > 65535)\n                err(9);\n            le += l + 4;\n        }\n    }\n    return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n    var fl = fn.length, ex = f.extra, col = co && co.length;\n    var exl = exfl(ex);\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b++] = 20, d[b++] = f.os;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        err(10);\n    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n    if (c != -1) {\n        wbytes(d, b, f.crc);\n        wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n        wbytes(d, b + 8, f.size);\n    }\n    wbytes(d, b + 12, fl);\n    wbytes(d, b + 14, exl), b += 16;\n    if (ce != null) {\n        wbytes(d, b, col);\n        wbytes(d, b + 6, f.attrs);\n        wbytes(d, b + 10, ce), b += 14;\n    }\n    d.set(fn, b);\n    b += fl;\n    if (exl) {\n        for (var k in ex) {\n            var exf = ex[k], l = exf.length;\n            wbytes(d, b, +k);\n            wbytes(d, b + 2, l);\n            d.set(exf, b + 4), b += 4 + l;\n        }\n    }\n    if (col)\n        d.set(co, b), b += col;\n    return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n    /**\n     * Creates a pass-through stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     */\n    function ZipPassThrough(filename) {\n        this.filename = filename;\n        this.c = crc();\n        this.size = 0;\n        this.compression = 0;\n    }\n    /**\n     * Processes a chunk and pushes to the output stream. You can override this\n     * method in a subclass for custom behavior, but by default this passes\n     * the data through. You must call this.ondata(err, chunk, final) at some\n     * point in this method.\n     * @param chunk The chunk to process\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.process = function (chunk, final) {\n        this.ondata(null, chunk, final);\n    };\n    /**\n     * Pushes a chunk to be added. If you are subclassing this with a custom\n     * compression algorithm, note that you must push data from the source\n     * file only, pre-compression.\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        this.c.p(chunk);\n        this.size += chunk.length;\n        if (final)\n            this.crc = this.c.d();\n        this.process(chunk, final || false);\n    };\n    return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function ZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new Deflate(opts, function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n    }\n    ZipDeflate.prototype.process = function (chunk, final) {\n        try {\n            this.d.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function AsyncZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new AsyncDeflate(opts, function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n        this.terminate = this.d.terminate;\n    }\n    AsyncZipDeflate.prototype.process = function (chunk, final) {\n        this.d.push(chunk, final);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an empty ZIP archive to which files can be added\n     * @param cb The callback to call whenever data for the generated ZIP archive\n     *           is available\n     */\n    function Zip(cb) {\n        this.ondata = cb;\n        this.u = [];\n        this.d = 1;\n    }\n    /**\n     * Adds a file to the ZIP archive\n     * @param file The file stream to add\n     */\n    Zip.prototype.add = function (file) {\n        var _this = this;\n        if (!this.ondata)\n            err(5);\n        // finishing or finished\n        if (this.d & 2)\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n        else {\n            var f = strToU8(file.filename), fl_1 = f.length;\n            var com = file.comment, o = com && strToU8(com);\n            var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n            var hl_1 = fl_1 + exfl(file.extra) + 30;\n            if (fl_1 > 65535)\n                this.ondata(err(11, 0, 1), null, false);\n            var header = new u8(hl_1);\n            wzh(header, 0, file, f, u, -1);\n            var chks_1 = [header];\n            var pAll_1 = function () {\n                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n                    var chk = chks_2[_i];\n                    _this.ondata(null, chk, false);\n                }\n                chks_1 = [];\n            };\n            var tr_1 = this.d;\n            this.d = 0;\n            var ind_1 = this.u.length;\n            var uf_1 = mrg(file, {\n                f: f,\n                u: u,\n                o: o,\n                t: function () {\n                    if (file.terminate)\n                        file.terminate();\n                },\n                r: function () {\n                    pAll_1();\n                    if (tr_1) {\n                        var nxt = _this.u[ind_1 + 1];\n                        if (nxt)\n                            nxt.r();\n                        else\n                            _this.d = 1;\n                    }\n                    tr_1 = 1;\n                }\n            });\n            var cl_1 = 0;\n            file.ondata = function (err, dat, final) {\n                if (err) {\n                    _this.ondata(err, dat, final);\n                    _this.terminate();\n                }\n                else {\n                    cl_1 += dat.length;\n                    chks_1.push(dat);\n                    if (final) {\n                        var dd = new u8(16);\n                        wbytes(dd, 0, 0x8074B50);\n                        wbytes(dd, 4, file.crc);\n                        wbytes(dd, 8, cl_1);\n                        wbytes(dd, 12, file.size);\n                        chks_1.push(dd);\n                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n                        if (tr_1)\n                            uf_1.r();\n                        tr_1 = 1;\n                    }\n                    else if (tr_1)\n                        pAll_1();\n                }\n            };\n            this.u.push(uf_1);\n        }\n    };\n    /**\n     * Ends the process of adding files and prepares to emit the final chunks.\n     * This *must* be called after adding all desired files for the resulting\n     * ZIP file to work properly.\n     */\n    Zip.prototype.end = function () {\n        var _this = this;\n        if (this.d & 2) {\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n            return;\n        }\n        if (this.d)\n            this.e();\n        else\n            this.u.push({\n                r: function () {\n                    if (!(_this.d & 1))\n                        return;\n                    _this.u.splice(-1, 1);\n                    _this.e();\n                },\n                t: function () { }\n            });\n        this.d = 3;\n    };\n    Zip.prototype.e = function () {\n        var bt = 0, l = 0, tl = 0;\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n        }\n        var out = new u8(tl + 22);\n        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n            var f = _c[_b];\n            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n        }\n        wzf(out, bt, this.u.length, tl, l);\n        this.ondata(null, out, true);\n        this.d = 2;\n    };\n    /**\n     * A method to terminate any internal workers used by the stream. Subsequent\n     * calls to add() will fail.\n     */\n    Zip.prototype.terminate = function () {\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            f.t();\n        }\n        this.d = 2;\n    };\n    return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                var l = f.c.length;\n                wzh(out, tot, f, f.f, f.u, l);\n                var badd = 30 + f.f.length + exfl(f.extra);\n                var loc = tot + badd;\n                out.set(f.c, loc);\n                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n            }\n            catch (e) {\n                return cbd(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cbd(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), size = file.length;\n        c.p(file);\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        var compression = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cbd(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = mrg(p, {\n                    size: size,\n                    crc: c.d(),\n                    c: d,\n                    f: f,\n                    m: m,\n                    u: s != fn.length || (m && (com.length != ms)),\n                    compression: compression\n                });\n                o += 30 + s + exl + l;\n                tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (s > 65535)\n            cbl(err(11, 0, 1), null);\n        if (!compression)\n            cbl(null, file);\n        else if (size < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var compression = p.level == 0 ? 0 : 8;\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        if (s > 65535)\n            err(11);\n        var d = compression ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push(mrg(p, {\n            size: file.length,\n            crc: c.d(),\n            c: d,\n            f: f,\n            m: m,\n            u: s != fn.length || (m && (com.length != ms)),\n            o: o,\n            compression: compression\n        }));\n        o += 30 + s + exl + l;\n        tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f, f.f, f.u, f.c.length);\n        var badd = 30 + f.f.length + exfl(f.extra);\n        out.set(f.c, f.o + badd);\n        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n    function UnzipPassThrough() {\n    }\n    UnzipPassThrough.prototype.push = function (data, final) {\n        this.ondata(null, data, final);\n    };\n    UnzipPassThrough.compression = 0;\n    return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function UnzipInflate() {\n        var _this = this;\n        this.i = new Inflate(function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n    }\n    UnzipInflate.prototype.push = function (data, final) {\n        try {\n            this.i.push(data, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    UnzipInflate.compression = 8;\n    return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function AsyncUnzipInflate(_, sz) {\n        var _this = this;\n        if (sz < 320000) {\n            this.i = new Inflate(function (dat, final) {\n                _this.ondata(null, dat, final);\n            });\n        }\n        else {\n            this.i = new AsyncInflate(function (err, dat, final) {\n                _this.ondata(err, dat, final);\n            });\n            this.terminate = this.i.terminate;\n        }\n    }\n    AsyncUnzipInflate.prototype.push = function (data, final) {\n        if (this.i.terminate)\n            data = slc(data, 0);\n        this.i.push(data, final);\n    };\n    AsyncUnzipInflate.compression = 8;\n    return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a ZIP decompression stream\n     * @param cb The callback to call whenever a file in the ZIP archive is found\n     */\n    function Unzip(cb) {\n        this.onfile = cb;\n        this.k = [];\n        this.o = {\n            0: UnzipPassThrough\n        };\n        this.p = et;\n    }\n    /**\n     * Pushes a chunk to be unzipped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzip.prototype.push = function (chunk, final) {\n        var _this = this;\n        if (!this.onfile)\n            err(5);\n        if (!this.p)\n            err(4);\n        if (this.c > 0) {\n            var len = Math.min(this.c, chunk.length);\n            var toAdd = chunk.subarray(0, len);\n            this.c -= len;\n            if (this.d)\n                this.d.push(toAdd, !this.c);\n            else\n                this.k[0].push(toAdd);\n            chunk = chunk.subarray(len);\n            if (chunk.length)\n                return this.push(chunk, final);\n        }\n        else {\n            var f = 0, i = 0, is = void 0, buf = void 0;\n            if (!this.p.length)\n                buf = chunk;\n            else if (!chunk.length)\n                buf = this.p;\n            else {\n                buf = new u8(this.p.length + chunk.length);\n                buf.set(this.p), buf.set(chunk, this.p.length);\n            }\n            var l = buf.length, oc = this.c, add = oc && this.d;\n            var _loop_2 = function () {\n                var _a;\n                var sig = b4(buf, i);\n                if (sig == 0x4034B50) {\n                    f = 1, is = i;\n                    this_1.d = null;\n                    this_1.c = 0;\n                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n                    if (l > i + 30 + fnl + es) {\n                        var chks_3 = [];\n                        this_1.k.unshift(chks_3);\n                        f = 2;\n                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n                        if (sc_1 == 4294967295) {\n                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n                        }\n                        else if (dd)\n                            sc_1 = -1;\n                        i += es;\n                        this_1.c = sc_1;\n                        var d_1;\n                        var file_1 = {\n                            name: fn_1,\n                            compression: cmp_1,\n                            start: function () {\n                                if (!file_1.ondata)\n                                    err(5);\n                                if (!sc_1)\n                                    file_1.ondata(null, et, true);\n                                else {\n                                    var ctr = _this.o[cmp_1];\n                                    if (!ctr)\n                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n                                        var dat = chks_4[_i];\n                                        d_1.push(dat, false);\n                                    }\n                                    if (_this.k[0] == chks_3 && _this.c)\n                                        _this.d = d_1;\n                                    else\n                                        d_1.push(et, true);\n                                }\n                            },\n                            terminate: function () {\n                                if (d_1 && d_1.terminate)\n                                    d_1.terminate();\n                            }\n                        };\n                        if (sc_1 >= 0)\n                            file_1.size = sc_1, file_1.originalSize = su_1;\n                        this_1.onfile(file_1);\n                    }\n                    return \"break\";\n                }\n                else if (oc) {\n                    if (sig == 0x8074B50) {\n                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                    else if (sig == 0x2014B50) {\n                        is = i -= 4, f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                }\n            };\n            var this_1 = this;\n            for (; i < l - 4; ++i) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            this.p = et;\n            if (oc < 0) {\n                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n                if (add)\n                    add.push(dat, !!f);\n                else\n                    this.k[+(f == 2)].push(dat);\n            }\n            if (f & 2)\n                return this.push(buf.subarray(i), final);\n            this.p = buf.subarray(i);\n        }\n        if (final) {\n            if (this.c)\n                err(13);\n            this.p = null;\n        }\n    };\n    /**\n     * Registers a decoder with the stream, allowing for files compressed with\n     * the compression type provided to be expanded correctly\n     * @param decoder The decoder constructor\n     */\n    Unzip.prototype.register = function (decoder) {\n        this.o[decoder.compression] = decoder;\n    };\n    return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cbd(err(13, 0, 1), null);\n            return tAll;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (lft) {\n        var c = lft;\n        var o = b4(data, e + 16);\n        var z = o == 4294967295 || c == 65535;\n        if (z) {\n            var ze = b4(data, e - 12);\n            z = b4(data, ze) == 0x6064B50;\n            if (z) {\n                c = lft = b4(data, ze + 32);\n                o = b4(data, ze + 48);\n            }\n        }\n        var fltr = opts && opts.filter;\n        var _loop_3 = function (i) {\n            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n            o = no;\n            var cbl = function (e, d) {\n                if (e) {\n                    tAll();\n                    cbd(e, null);\n                }\n                else {\n                    if (d)\n                        files[fn] = d;\n                    if (!--lft)\n                        cbd(null, files);\n                }\n            };\n            if (!fltr || fltr({\n                name: fn,\n                size: sc,\n                originalSize: su,\n                compression: c_1\n            })) {\n                if (!c_1)\n                    cbl(null, slc(data, b, b + sc));\n                else if (c_1 == 8) {\n                    var infl = data.subarray(b, b + sc);\n                    // Synchronously decompress under 512KB, or barely-compressed data\n                    if (su < 524288 || sc > 0.8 * su) {\n                        try {\n                            cbl(null, inflateSync(infl, { out: new u8(su) }));\n                        }\n                        catch (e) {\n                            cbl(e, null);\n                        }\n                    }\n                    else\n                        term.push(inflate(infl, { size: su }, cbl));\n                }\n                else\n                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n            }\n            else\n                cbl(null, null);\n        };\n        for (var i = 0; i < c; ++i) {\n            _loop_3(i);\n        }\n    }\n    else\n        cbd(null, {});\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            err(13);\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = o == 4294967295 || c == 65535;\n    if (z) {\n        var ze = b4(data, e - 12);\n        z = b4(data, ze) == 0x6064B50;\n        if (z) {\n            c = b4(data, ze + 32);\n            o = b4(data, ze + 48);\n        }\n    }\n    var fltr = opts && opts.filter;\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!fltr || fltr({\n            name: fn,\n            size: sc,\n            originalSize: su,\n            compression: c_2\n        })) {\n            if (!c_2)\n                files[fn] = slc(data, b, b + sc);\n            else if (c_2 == 8)\n                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n            else\n                err(14, 'unknown compression type ' + c_2);\n        }\n    }\n    return files;\n}\n","/** @license\n *\n * jsPDF - PDF Document creation from JavaScript\n * Version 2.5.2 Built on 2024-09-17T13:29:57.859Z\n *                      CommitID 00000000\n *\n * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF\n *               2015-2021 yWorks GmbH, http://www.yworks.com\n *               2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX\n *               2016-2018 Aras Abbasi <aras.abbasi@gmail.com>\n *               2010 Aaron Spike, https://github.com/acspike\n *               2012 Willow Systems Corporation, https://github.com/willowsystems\n *               2012 Pablo Hess, https://github.com/pablohess\n *               2012 Florian Jenett, https://github.com/fjenett\n *               2013 Warren Weckesser, https://github.com/warrenweckesser\n *               2013 Youssef Beddad, https://github.com/lifof\n *               2013 Lee Driscoll, https://github.com/lsdriscoll\n *               2013 Stefan Slonevskiy, https://github.com/stefslon\n *               2013 Jeremy Morel, https://github.com/jmorel\n *               2013 Christoph Hartmann, https://github.com/chris-rock\n *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n *               2014 James Makes, https://github.com/dollaruw\n *               2014 Diego Casorran, https://github.com/diegocr\n *               2014 Steven Spungin, https://github.com/Flamenco\n *               2014 Kenneth Glassey, https://github.com/Gavvers\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * Contributor(s):\n *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,\n *    kim3er, mfo, alnorth, Flamenco\n */\n\nimport t from\"@babel/runtime/helpers/typeof\";import{zlibSync as e,unzlibSync as r}from\"fflate\";var n=function(){return\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this}();function i(){n.console&&\"function\"==typeof n.console.log&&n.console.log.apply(n.console,arguments)}var a={log:i,warn:function(t){n.console&&(\"function\"==typeof n.console.warn?n.console.warn.apply(n.console,arguments):i.call(null,arguments))},error:function(t){n.console&&(\"function\"==typeof n.console.error?n.console.error.apply(n.console,arguments):i(t))}};function o(t,e,r){var n=new XMLHttpRequest;n.open(\"GET\",t),n.responseType=\"blob\",n.onload=function(){l(n.response,e,r)},n.onerror=function(){a.error(\"could not download file\")},n.send()}function s(t){var e=new XMLHttpRequest;e.open(\"HEAD\",t,!1);try{e.send()}catch(t){}return e.status>=200&&e.status<=299}function c(t){try{t.dispatchEvent(new MouseEvent(\"click\"))}catch(r){var e=document.createEvent(\"MouseEvents\");e.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var u,h,l=n.saveAs||(\"object\"!==(\"undefined\"==typeof window?\"undefined\":t(window))||window!==n?function(){}:\"undefined\"!=typeof HTMLAnchorElement&&\"download\"in HTMLAnchorElement.prototype?function(t,e,r){var i=n.URL||n.webkitURL,a=document.createElement(\"a\");e=e||t.name||\"download\",a.download=e,a.rel=\"noopener\",\"string\"==typeof t?(a.href=t,a.origin!==location.origin?s(a.href)?o(t,e,r):c(a,a.target=\"_blank\"):c(a)):(a.href=i.createObjectURL(t),setTimeout((function(){i.revokeObjectURL(a.href)}),4e4),setTimeout((function(){c(a)}),0))}:\"msSaveOrOpenBlob\"in navigator?function(e,r,n){if(r=r||e.name||\"download\",\"string\"==typeof e)if(s(e))o(e,r,n);else{var i=document.createElement(\"a\");i.href=e,i.target=\"_blank\",setTimeout((function(){c(i)}))}else navigator.msSaveOrOpenBlob(function(e,r){return void 0===r?r={autoBom:!1}:\"object\"!==t(r)&&(a.warn(\"Deprecated: Expected third argument to be a object\"),r={autoBom:!r}),r.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,n),r)}:function(e,r,i,a){if((a=a||open(\"\",\"_blank\"))&&(a.document.title=a.document.body.innerText=\"downloading...\"),\"string\"==typeof e)return o(e,r,i);var s=\"application/octet-stream\"===e.type,c=/constructor/i.test(n.HTMLElement)||n.safari,u=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((u||s&&c)&&\"object\"===(\"undefined\"==typeof FileReader?\"undefined\":t(FileReader))){var h=new FileReader;h.onloadend=function(){var t=h.result;t=u?t:t.replace(/^data:[^;]*;/,\"data:attachment/file;\"),a?a.location.href=t:location=t,a=null},h.readAsDataURL(e)}else{var l=n.URL||n.webkitURL,f=l.createObjectURL(e);a?a.location=f:location.href=f,a=null,setTimeout((function(){l.revokeObjectURL(f)}),4e4)}});\n/**\n * A class to parse color values\n * @author Stoyan Stefanov <sstoo@gmail.com>\n * {@link   http://www.phpied.com/rgb-color-parser-in-javascript/}\n * @license Use it if you like it\n */function f(t){var e;t=t||\"\",this.ok=!1,\"#\"==t.charAt(0)&&(t=t.substr(1,6));t={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"00ffff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000000\",blanchedalmond:\"ffebcd\",blue:\"0000ff\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"00ffff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dodgerblue:\"1e90ff\",feldspar:\"d19275\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"ff00ff\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgrey:\"d3d3d3\",lightgreen:\"90ee90\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslateblue:\"8470ff\",lightslategray:\"778899\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"00ff00\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"ff00ff\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370d8\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"d87093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",red:\"ff0000\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",violetred:\"d02090\",wheat:\"f5deb3\",white:\"ffffff\",whitesmoke:\"f5f5f5\",yellow:\"ffff00\",yellowgreen:\"9acd32\"}[t=(t=t.replace(/ /g,\"\")).toLowerCase()]||t;for(var r=[{re:/^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,example:[\"rgb(123, 234, 45)\",\"rgb(255,234,245)\"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]}},{re:/^(\\w{2})(\\w{2})(\\w{2})$/,example:[\"#00ff00\",\"336699\"],process:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/^(\\w{1})(\\w{1})(\\w{1})$/,example:[\"#fb0\",\"f0f\"],process:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}}],n=0;n<r.length;n++){var i=r[n].re,a=r[n].process,o=i.exec(t);o&&(e=a(o),this.r=e[0],this.g=e[1],this.b=e[2],this.ok=!0)}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.toRGB=function(){return\"rgb(\"+this.r+\", \"+this.g+\", \"+this.b+\")\"},this.toHex=function(){var t=this.r.toString(16),e=this.g.toString(16),r=this.b.toString(16);return 1==t.length&&(t=\"0\"+t),1==e.length&&(e=\"0\"+e),1==r.length&&(r=\"0\"+r),\"#\"+t+e+r}}\n/**\n * @license\n * Joseph Myers does not specify a particular license for his work.\n *\n * Author: Joseph Myers\n * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js\n *\n * Modified by: Owen Leong\n */\nfunction d(t,e){var r=t[0],n=t[1],i=t[2],a=t[3];r=g(r,n,i,a,e[0],7,-680876936),a=g(a,r,n,i,e[1],12,-389564586),i=g(i,a,r,n,e[2],17,606105819),n=g(n,i,a,r,e[3],22,-1044525330),r=g(r,n,i,a,e[4],7,-176418897),a=g(a,r,n,i,e[5],12,1200080426),i=g(i,a,r,n,e[6],17,-1473231341),n=g(n,i,a,r,e[7],22,-45705983),r=g(r,n,i,a,e[8],7,1770035416),a=g(a,r,n,i,e[9],12,-1958414417),i=g(i,a,r,n,e[10],17,-42063),n=g(n,i,a,r,e[11],22,-1990404162),r=g(r,n,i,a,e[12],7,1804603682),a=g(a,r,n,i,e[13],12,-40341101),i=g(i,a,r,n,e[14],17,-1502002290),r=m(r,n=g(n,i,a,r,e[15],22,1236535329),i,a,e[1],5,-165796510),a=m(a,r,n,i,e[6],9,-1069501632),i=m(i,a,r,n,e[11],14,643717713),n=m(n,i,a,r,e[0],20,-373897302),r=m(r,n,i,a,e[5],5,-701558691),a=m(a,r,n,i,e[10],9,38016083),i=m(i,a,r,n,e[15],14,-660478335),n=m(n,i,a,r,e[4],20,-405537848),r=m(r,n,i,a,e[9],5,568446438),a=m(a,r,n,i,e[14],9,-1019803690),i=m(i,a,r,n,e[3],14,-187363961),n=m(n,i,a,r,e[8],20,1163531501),r=m(r,n,i,a,e[13],5,-1444681467),a=m(a,r,n,i,e[2],9,-51403784),i=m(i,a,r,n,e[7],14,1735328473),r=v(r,n=m(n,i,a,r,e[12],20,-1926607734),i,a,e[5],4,-378558),a=v(a,r,n,i,e[8],11,-2022574463),i=v(i,a,r,n,e[11],16,1839030562),n=v(n,i,a,r,e[14],23,-35309556),r=v(r,n,i,a,e[1],4,-1530992060),a=v(a,r,n,i,e[4],11,1272893353),i=v(i,a,r,n,e[7],16,-155497632),n=v(n,i,a,r,e[10],23,-1094730640),r=v(r,n,i,a,e[13],4,681279174),a=v(a,r,n,i,e[0],11,-358537222),i=v(i,a,r,n,e[3],16,-722521979),n=v(n,i,a,r,e[6],23,76029189),r=v(r,n,i,a,e[9],4,-640364487),a=v(a,r,n,i,e[12],11,-421815835),i=v(i,a,r,n,e[15],16,530742520),r=b(r,n=v(n,i,a,r,e[2],23,-995338651),i,a,e[0],6,-198630844),a=b(a,r,n,i,e[7],10,1126891415),i=b(i,a,r,n,e[14],15,-1416354905),n=b(n,i,a,r,e[5],21,-57434055),r=b(r,n,i,a,e[12],6,1700485571),a=b(a,r,n,i,e[3],10,-1894986606),i=b(i,a,r,n,e[10],15,-1051523),n=b(n,i,a,r,e[1],21,-2054922799),r=b(r,n,i,a,e[8],6,1873313359),a=b(a,r,n,i,e[15],10,-30611744),i=b(i,a,r,n,e[6],15,-1560198380),n=b(n,i,a,r,e[13],21,1309151649),r=b(r,n,i,a,e[4],6,-145523070),a=b(a,r,n,i,e[11],10,-1120210379),i=b(i,a,r,n,e[2],15,718787259),n=b(n,i,a,r,e[9],21,-343485551),t[0]=_(r,t[0]),t[1]=_(n,t[1]),t[2]=_(i,t[2]),t[3]=_(a,t[3])}function p(t,e,r,n,i,a){return e=_(_(e,t),_(n,a)),_(e<<i|e>>>32-i,r)}function g(t,e,r,n,i,a,o){return p(e&r|~e&n,t,e,i,a,o)}function m(t,e,r,n,i,a,o){return p(e&n|r&~n,t,e,i,a,o)}function v(t,e,r,n,i,a,o){return p(e^r^n,t,e,i,a,o)}function b(t,e,r,n,i,a,o){return p(r^(e|~n),t,e,i,a,o)}function y(t){var e,r=t.length,n=[1732584193,-271733879,-1732584194,271733878];for(e=64;e<=t.length;e+=64)d(n,w(t.substring(e-64,e)));t=t.substring(e-64);var i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(e=0;e<t.length;e++)i[e>>2]|=t.charCodeAt(e)<<(e%4<<3);if(i[e>>2]|=128<<(e%4<<3),e>55)for(d(n,i),e=0;e<16;e++)i[e]=0;return i[14]=8*r,d(n,i),n}function w(t){var e,r=[];for(e=0;e<64;e+=4)r[e>>2]=t.charCodeAt(e)+(t.charCodeAt(e+1)<<8)+(t.charCodeAt(e+2)<<16)+(t.charCodeAt(e+3)<<24);return r}u=n.atob.bind(n),h=n.btoa.bind(n);var N=\"0123456789abcdef\".split(\"\");function L(t){for(var e=\"\",r=0;r<4;r++)e+=N[t>>8*r+4&15]+N[t>>8*r&15];return e}function A(t){return String.fromCharCode((255&t)>>0,(65280&t)>>8,(16711680&t)>>16,(4278190080&t)>>24)}function x(t){return y(t).map(A).join(\"\")}var S=\"5d41402abc4b2a76b9719d911017c592\"!=function(t){for(var e=0;e<t.length;e++)t[e]=L(t[e]);return t.join(\"\")}(y(\"hello\"));function _(t,e){if(S){var r=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(r>>16)<<16|65535&r}return t+e&4294967295}\n/**\n * @license\n * FPDF is released under a permissive license: there is no usage restriction.\n * You may embed it freely in your application (commercial or not), with or\n * without modifications.\n *\n * Reference: http://www.fpdf.org/en/script/script37.php\n */function P(t,e){var r,n,i,a;if(t!==r){for(var o=(i=t,a=1+(256/t.length>>0),new Array(a+1).join(i)),s=[],c=0;c<256;c++)s[c]=c;var u=0;for(c=0;c<256;c++){var h=s[c];u=(u+h+o.charCodeAt(c))%256,s[c]=s[u],s[u]=h}r=t,n=s}else s=n;var l=e.length,f=0,d=0,p=\"\";for(c=0;c<l;c++)d=(d+(h=s[f=(f+1)%256]))%256,s[f]=s[d],s[d]=h,o=s[(s[f]+s[d])%256],p+=String.fromCharCode(e.charCodeAt(c)^o);return p}\n/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n * Author: Owen Leong (@owenl131)\n * Date: 15 Oct 2020\n * References:\n * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt\n * https://github.com/foliojs/pdfkit/blob/master/lib/security.js\n * http://www.fpdf.org/en/script/script37.php\n */var k={print:4,modify:8,copy:16,\"annot-forms\":32};function I(t,e,r,n){this.v=1,this.r=2;var i=192;t.forEach((function(t){if(void 0!==k.perm)throw new Error(\"Invalid permission: \"+t);i+=k[t]})),this.padding=\"(¿N^NuAd\\0NVÿú\u0001\\b..\\0¶Ðh>/\\f©þdSiz\";var a=(e+this.padding).substr(0,32),o=(r+this.padding).substr(0,32);this.O=this.processOwnerPassword(a,o),this.P=-(1+(255^i)),this.encryptionKey=x(a+this.O+this.lsbFirstWord(this.P)+this.hexToBytes(n)).substr(0,5),this.U=P(this.encryptionKey,this.padding)}function F(t){if(/[^\\u0000-\\u00ff]/.test(t))throw new Error(\"Invalid PDF Name Object: \"+t+\", Only accept ASCII characters.\");for(var e=\"\",r=t.length,n=0;n<r;n++){var i=t.charCodeAt(n);if(i<33||35===i||37===i||40===i||41===i||47===i||60===i||62===i||91===i||93===i||123===i||125===i||i>126)e+=\"#\"+(\"0\"+i.toString(16)).slice(-2);else e+=t[n]}return e}function C(e){if(\"object\"!==t(e))throw new Error(\"Invalid Context passed to initialize PubSub (jsPDF-module)\");var r={};this.subscribe=function(t,e,n){if(n=n||!1,\"string\"!=typeof t||\"function\"!=typeof e||\"boolean\"!=typeof n)throw new Error(\"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\");r.hasOwnProperty(t)||(r[t]={});var i=Math.random().toString(35);return r[t][i]=[e,!!n],i},this.unsubscribe=function(t){for(var e in r)if(r[e][t])return delete r[e][t],0===Object.keys(r[e]).length&&delete r[e],!0;return!1},this.publish=function(t){if(r.hasOwnProperty(t)){var i=Array.prototype.slice.call(arguments,1),o=[];for(var s in r[t]){var c=r[t][s];try{c[0].apply(e,i)}catch(t){n.console&&a.error(\"jsPDF PubSub Error\",t.message,t)}c[1]&&o.push(s)}o.length&&o.forEach(this.unsubscribe)}},this.getTopics=function(){return r}}function j(t){if(!(this instanceof j))return new j(t);var e=\"opacity,stroke-opacity\".split(\",\");for(var r in t)t.hasOwnProperty(r)&&e.indexOf(r)>=0&&(this[r]=t[r]);this.id=\"\",this.objectNumber=-1}function O(t,e){this.gState=t,this.matrix=e,this.id=\"\",this.objectNumber=-1}function B(t,e,r,n,i){if(!(this instanceof B))return new B(t,e,r,n,i);this.type=\"axial\"===t?2:3,this.coords=e,this.colors=r,O.call(this,n,i)}function M(t,e,r,n,i){if(!(this instanceof M))return new M(t,e,r,n,i);this.boundingBox=t,this.xStep=e,this.yStep=r,this.stream=\"\",this.cloneIndex=0,O.call(this,n,i)}function E(e){var r,i=\"string\"==typeof arguments[0]?arguments[0]:\"p\",o=arguments[1],s=arguments[2],c=arguments[3],u=[],d=1,p=16,g=\"S\",m=null;\"object\"===t(e=e||{})&&(i=e.orientation,o=e.unit||o,s=e.format||s,c=e.compress||e.compressPdf||c,null!==(m=e.encryption||null)&&(m.userPassword=m.userPassword||\"\",m.ownerPassword=m.ownerPassword||\"\",m.userPermissions=m.userPermissions||[]),d=\"number\"==typeof e.userUnit?Math.abs(e.userUnit):1,void 0!==e.precision&&(r=e.precision),void 0!==e.floatPrecision&&(p=e.floatPrecision),g=e.defaultPathOperation||\"S\"),u=e.filters||(!0===c?[\"FlateEncode\"]:u),o=o||\"mm\",i=(\"\"+(i||\"P\")).toLowerCase();var v=e.putOnlyUsedFonts||!1,b={},y={internal:{},__private__:{}};y.__private__.PubSub=C;var w=\"1.3\",N=y.__private__.getPdfVersion=function(){return w};y.__private__.setPdfVersion=function(t){w=t};var L={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],\"government-letter\":[576,756],legal:[612,1008],\"junior-legal\":[576,360],ledger:[1224,792],tabloid:[792,1224],\"credit-card\":[153,243]};y.__private__.getPageFormats=function(){return L};var A=y.__private__.getPageFormat=function(t){return L[t]};s=s||\"a4\";var x={COMPAT:\"compat\",ADVANCED:\"advanced\"},S=x.COMPAT;function _(){this.saveGraphicsState(),lt(new Vt(_t,0,0,-_t,0,Rr()*_t).toString()+\" cm\"),this.setFontSize(this.getFontSize()/_t),g=\"n\",S=x.ADVANCED}function P(){this.restoreGraphicsState(),g=\"S\",S=x.COMPAT}var k=y.__private__.combineFontStyleAndFontWeight=function(t,e){if(\"bold\"==t&&\"normal\"==e||\"bold\"==t&&400==e||\"normal\"==t&&\"italic\"==e||\"bold\"==t&&\"italic\"==e)throw new Error(\"Invalid Combination of fontweight and fontstyle\");return e&&(t=400==e||\"normal\"===e?\"italic\"===t?\"italic\":\"normal\":700!=e&&\"bold\"!==e||\"normal\"!==t?(700==e?\"bold\":e)+\"\"+t:\"bold\"),t};y.advancedAPI=function(t){var e=S===x.COMPAT;return e&&_.call(this),\"function\"!=typeof t||(t(this),e&&P.call(this)),this},y.compatAPI=function(t){var e=S===x.ADVANCED;return e&&P.call(this),\"function\"!=typeof t||(t(this),e&&_.call(this)),this},y.isAdvancedAPI=function(){return S===x.ADVANCED};var O,q=function(t){if(S!==x.ADVANCED)throw new Error(t+\" is only available in 'advanced' API mode. You need to call advancedAPI() first.\")},D=y.roundToPrecision=y.__private__.roundToPrecision=function(t,e){var n=r||e;if(isNaN(t)||isNaN(n))throw new Error(\"Invalid argument passed to jsPDF.roundToPrecision\");return t.toFixed(n).replace(/0+$/,\"\")};O=y.hpf=y.__private__.hpf=\"number\"==typeof p?function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.hpf\");return D(t,p)}:\"smart\"===p?function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.hpf\");return D(t,t>-1&&t<1?16:5)}:function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.hpf\");return D(t,16)};var R=y.f2=y.__private__.f2=function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.f2\");return D(t,2)},T=y.__private__.f3=function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.f3\");return D(t,3)},U=y.scale=y.__private__.scale=function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.scale\");return S===x.COMPAT?t*_t:S===x.ADVANCED?t:void 0},z=function(t){return S===x.COMPAT?Rr()-t:S===x.ADVANCED?t:void 0},H=function(t){return U(z(t))};y.__private__.setPrecision=y.setPrecision=function(t){\"number\"==typeof parseInt(t,10)&&(r=parseInt(t,10))};var W,V=\"00000000000000000000000000000000\",G=y.__private__.getFileId=function(){return V},Y=y.__private__.setFileId=function(t){return V=void 0!==t&&/^[a-fA-F0-9]{32}$/.test(t)?t.toUpperCase():V.split(\"\").map((function(){return\"ABCDEF0123456789\".charAt(Math.floor(16*Math.random()))})).join(\"\"),null!==m&&(Ye=new I(m.userPermissions,m.userPassword,m.ownerPassword,V)),V};y.setFileId=function(t){return Y(t),this},y.getFileId=function(){return G()};var J=y.__private__.convertDateToPDFDate=function(t){var e=t.getTimezoneOffset(),r=e<0?\"+\":\"-\",n=Math.floor(Math.abs(e/60)),i=Math.abs(e%60),a=[r,Q(n),\"'\",Q(i),\"'\"].join(\"\");return[\"D:\",t.getFullYear(),Q(t.getMonth()+1),Q(t.getDate()),Q(t.getHours()),Q(t.getMinutes()),Q(t.getSeconds()),a].join(\"\")},X=y.__private__.convertPDFDateToDate=function(t){var e=parseInt(t.substr(2,4),10),r=parseInt(t.substr(6,2),10)-1,n=parseInt(t.substr(8,2),10),i=parseInt(t.substr(10,2),10),a=parseInt(t.substr(12,2),10),o=parseInt(t.substr(14,2),10);return new Date(e,r,n,i,a,o,0)},K=y.__private__.setCreationDate=function(t){var e;if(void 0===t&&(t=new Date),t instanceof Date)e=J(t);else{if(!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(t))throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");e=t}return W=e},Z=y.__private__.getCreationDate=function(t){var e=W;return\"jsDate\"===t&&(e=X(W)),e};y.setCreationDate=function(t){return K(t),this},y.getCreationDate=function(t){return Z(t)};var $,Q=y.__private__.padd2=function(t){return(\"0\"+parseInt(t)).slice(-2)},tt=y.__private__.padd2Hex=function(t){return(\"00\"+(t=t.toString())).substr(t.length)},et=0,rt=[],nt=[],it=0,at=[],ot=[],st=!1,ct=nt,ut=function(){et=0,it=0,nt=[],rt=[],at=[],Qt=Kt(),te=Kt()};y.__private__.setCustomOutputDestination=function(t){st=!0,ct=t};var ht=function(t){st||(ct=t)};y.__private__.resetCustomOutputDestination=function(){st=!1,ct=nt};var lt=y.__private__.out=function(t){return t=t.toString(),it+=t.length+1,ct.push(t),ct},ft=y.__private__.write=function(t){return lt(1===arguments.length?t.toString():Array.prototype.join.call(arguments,\" \"))},dt=y.__private__.getArrayBuffer=function(t){for(var e=t.length,r=new ArrayBuffer(e),n=new Uint8Array(r);e--;)n[e]=t.charCodeAt(e);return r},pt=[[\"Helvetica\",\"helvetica\",\"normal\",\"WinAnsiEncoding\"],[\"Helvetica-Bold\",\"helvetica\",\"bold\",\"WinAnsiEncoding\"],[\"Helvetica-Oblique\",\"helvetica\",\"italic\",\"WinAnsiEncoding\"],[\"Helvetica-BoldOblique\",\"helvetica\",\"bolditalic\",\"WinAnsiEncoding\"],[\"Courier\",\"courier\",\"normal\",\"WinAnsiEncoding\"],[\"Courier-Bold\",\"courier\",\"bold\",\"WinAnsiEncoding\"],[\"Courier-Oblique\",\"courier\",\"italic\",\"WinAnsiEncoding\"],[\"Courier-BoldOblique\",\"courier\",\"bolditalic\",\"WinAnsiEncoding\"],[\"Times-Roman\",\"times\",\"normal\",\"WinAnsiEncoding\"],[\"Times-Bold\",\"times\",\"bold\",\"WinAnsiEncoding\"],[\"Times-Italic\",\"times\",\"italic\",\"WinAnsiEncoding\"],[\"Times-BoldItalic\",\"times\",\"bolditalic\",\"WinAnsiEncoding\"],[\"ZapfDingbats\",\"zapfdingbats\",\"normal\",null],[\"Symbol\",\"symbol\",\"normal\",null]];y.__private__.getStandardFonts=function(){return pt};var gt=e.fontSize||16;y.__private__.setFontSize=y.setFontSize=function(t){return gt=S===x.ADVANCED?t/_t:t,this};var mt,vt=y.__private__.getFontSize=y.getFontSize=function(){return S===x.COMPAT?gt:gt*_t},bt=e.R2L||!1;y.__private__.setR2L=y.setR2L=function(t){return bt=t,this},y.__private__.getR2L=y.getR2L=function(){return bt};var yt,wt=y.__private__.setZoomMode=function(t){var e=[void 0,null,\"fullwidth\",\"fullheight\",\"fullpage\",\"original\"];if(/^(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)%$/.test(t))mt=t;else if(isNaN(t)){if(-1===e.indexOf(t))throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"'+t+'\" is not recognized.');mt=t}else mt=parseInt(t,10)};y.__private__.getZoomMode=function(){return mt};var Nt,Lt=y.__private__.setPageMode=function(t){if(-1==[void 0,null,\"UseNone\",\"UseOutlines\",\"UseThumbs\",\"FullScreen\"].indexOf(t))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"'+t+'\" is not recognized.');yt=t};y.__private__.getPageMode=function(){return yt};var At=y.__private__.setLayoutMode=function(t){if(-1==[void 0,null,\"continuous\",\"single\",\"twoleft\",\"tworight\",\"two\"].indexOf(t))throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. \"'+t+'\" is not recognized.');Nt=t};y.__private__.getLayoutMode=function(){return Nt},y.__private__.setDisplayMode=y.setDisplayMode=function(t,e,r){return wt(t),At(e),Lt(r),this};var xt={title:\"\",subject:\"\",author:\"\",keywords:\"\",creator:\"\"};y.__private__.getDocumentProperty=function(t){if(-1===Object.keys(xt).indexOf(t))throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");return xt[t]},y.__private__.getDocumentProperties=function(){return xt},y.__private__.setDocumentProperties=y.setProperties=y.setDocumentProperties=function(t){for(var e in xt)xt.hasOwnProperty(e)&&t[e]&&(xt[e]=t[e]);return this},y.__private__.setDocumentProperty=function(t,e){if(-1===Object.keys(xt).indexOf(t))throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");return xt[t]=e};var St,_t,Pt,kt,It,Ft={},Ct={},jt=[],Ot={},Bt={},Mt={},Et={},qt=null,Dt=0,Rt=[],Tt=new C(y),Ut=e.hotfixes||[],zt={},Ht={},Wt=[],Vt=function t(e,r,n,i,a,o){if(!(this instanceof t))return new t(e,r,n,i,a,o);isNaN(e)&&(e=1),isNaN(r)&&(r=0),isNaN(n)&&(n=0),isNaN(i)&&(i=1),isNaN(a)&&(a=0),isNaN(o)&&(o=0),this._matrix=[e,r,n,i,a,o]};Object.defineProperty(Vt.prototype,\"sx\",{get:function(){return this._matrix[0]},set:function(t){this._matrix[0]=t}}),Object.defineProperty(Vt.prototype,\"shy\",{get:function(){return this._matrix[1]},set:function(t){this._matrix[1]=t}}),Object.defineProperty(Vt.prototype,\"shx\",{get:function(){return this._matrix[2]},set:function(t){this._matrix[2]=t}}),Object.defineProperty(Vt.prototype,\"sy\",{get:function(){return this._matrix[3]},set:function(t){this._matrix[3]=t}}),Object.defineProperty(Vt.prototype,\"tx\",{get:function(){return this._matrix[4]},set:function(t){this._matrix[4]=t}}),Object.defineProperty(Vt.prototype,\"ty\",{get:function(){return this._matrix[5]},set:function(t){this._matrix[5]=t}}),Object.defineProperty(Vt.prototype,\"a\",{get:function(){return this._matrix[0]},set:function(t){this._matrix[0]=t}}),Object.defineProperty(Vt.prototype,\"b\",{get:function(){return this._matrix[1]},set:function(t){this._matrix[1]=t}}),Object.defineProperty(Vt.prototype,\"c\",{get:function(){return this._matrix[2]},set:function(t){this._matrix[2]=t}}),Object.defineProperty(Vt.prototype,\"d\",{get:function(){return this._matrix[3]},set:function(t){this._matrix[3]=t}}),Object.defineProperty(Vt.prototype,\"e\",{get:function(){return this._matrix[4]},set:function(t){this._matrix[4]=t}}),Object.defineProperty(Vt.prototype,\"f\",{get:function(){return this._matrix[5]},set:function(t){this._matrix[5]=t}}),Object.defineProperty(Vt.prototype,\"rotation\",{get:function(){return Math.atan2(this.shx,this.sx)}}),Object.defineProperty(Vt.prototype,\"scaleX\",{get:function(){return this.decompose().scale.sx}}),Object.defineProperty(Vt.prototype,\"scaleY\",{get:function(){return this.decompose().scale.sy}}),Object.defineProperty(Vt.prototype,\"isIdentity\",{get:function(){return 1===this.sx&&(0===this.shy&&(0===this.shx&&(1===this.sy&&(0===this.tx&&0===this.ty))))}}),Vt.prototype.join=function(t){return[this.sx,this.shy,this.shx,this.sy,this.tx,this.ty].map(O).join(t)},Vt.prototype.multiply=function(t){var e=t.sx*this.sx+t.shy*this.shx,r=t.sx*this.shy+t.shy*this.sy,n=t.shx*this.sx+t.sy*this.shx,i=t.shx*this.shy+t.sy*this.sy,a=t.tx*this.sx+t.ty*this.shx+this.tx,o=t.tx*this.shy+t.ty*this.sy+this.ty;return new Vt(e,r,n,i,a,o)},Vt.prototype.decompose=function(){var t=this.sx,e=this.shy,r=this.shx,n=this.sy,i=this.tx,a=this.ty,o=Math.sqrt(t*t+e*e),s=(t/=o)*r+(e/=o)*n;r-=t*s,n-=e*s;var c=Math.sqrt(r*r+n*n);return s/=c,t*(n/=c)<e*(r/=c)&&(t=-t,e=-e,s=-s,o=-o),{scale:new Vt(o,0,0,c,0,0),translate:new Vt(1,0,0,1,i,a),rotate:new Vt(t,e,-e,t,0,0),skew:new Vt(1,0,s,1,0,0)}},Vt.prototype.toString=function(t){return this.join(\" \")},Vt.prototype.inversed=function(){var t=this.sx,e=this.shy,r=this.shx,n=this.sy,i=this.tx,a=this.ty,o=1/(t*n-e*r),s=n*o,c=-e*o,u=-r*o,h=t*o;return new Vt(s,c,u,h,-s*i-u*a,-c*i-h*a)},Vt.prototype.applyToPoint=function(t){var e=t.x*this.sx+t.y*this.shx+this.tx,r=t.x*this.shy+t.y*this.sy+this.ty;return new Cr(e,r)},Vt.prototype.applyToRectangle=function(t){var e=this.applyToPoint(t),r=this.applyToPoint(new Cr(t.x+t.w,t.y+t.h));return new jr(e.x,e.y,r.x-e.x,r.y-e.y)},Vt.prototype.clone=function(){var t=this.sx,e=this.shy,r=this.shx,n=this.sy,i=this.tx,a=this.ty;return new Vt(t,e,r,n,i,a)},y.Matrix=Vt;var Gt=y.matrixMult=function(t,e){return e.multiply(t)},Yt=new Vt(1,0,0,1,0,0);y.unitMatrix=y.identityMatrix=Yt;var Jt=function(t,e){if(!Bt[t]){var r=(e instanceof B?\"Sh\":\"P\")+(Object.keys(Ot).length+1).toString(10);e.id=r,Bt[t]=r,Ot[r]=e,Tt.publish(\"addPattern\",e)}};y.ShadingPattern=B,y.TilingPattern=M,y.addShadingPattern=function(t,e){return q(\"addShadingPattern()\"),Jt(t,e),this},y.beginTilingPattern=function(t){q(\"beginTilingPattern()\"),Br(t.boundingBox[0],t.boundingBox[1],t.boundingBox[2]-t.boundingBox[0],t.boundingBox[3]-t.boundingBox[1],t.matrix)},y.endTilingPattern=function(t,e){q(\"endTilingPattern()\"),e.stream=ot[$].join(\"\\n\"),Jt(t,e),Tt.publish(\"endTilingPattern\",e),Wt.pop().restore()};var Xt=y.__private__.newObject=function(){var t=Kt();return Zt(t,!0),t},Kt=y.__private__.newObjectDeferred=function(){return et++,rt[et]=function(){return it},et},Zt=function(t,e){return e=\"boolean\"==typeof e&&e,rt[t]=it,e&&lt(t+\" 0 obj\"),t},$t=y.__private__.newAdditionalObject=function(){var t={objId:Kt(),content:\"\"};return at.push(t),t},Qt=Kt(),te=Kt(),ee=y.__private__.decodeColorString=function(t){var e=t.split(\" \");if(2!==e.length||\"g\"!==e[1]&&\"G\"!==e[1]){if(5===e.length&&(\"k\"===e[4]||\"K\"===e[4])){e=[(1-e[0])*(1-e[3]),(1-e[1])*(1-e[3]),(1-e[2])*(1-e[3]),\"r\"]}}else{var r=parseFloat(e[0]);e=[r,r,r,\"r\"]}for(var n=\"#\",i=0;i<3;i++)n+=(\"0\"+Math.floor(255*parseFloat(e[i])).toString(16)).slice(-2);return n},re=y.__private__.encodeColorString=function(e){var r;\"string\"==typeof e&&(e={ch1:e});var n=e.ch1,i=e.ch2,a=e.ch3,o=e.ch4,s=\"draw\"===e.pdfColorType?[\"G\",\"RG\",\"K\"]:[\"g\",\"rg\",\"k\"];if(\"string\"==typeof n&&\"#\"!==n.charAt(0)){var c=new f(n);if(c.ok)n=c.toHex();else if(!/^\\d*\\.?\\d*$/.test(n))throw new Error('Invalid color \"'+n+'\" passed to jsPDF.encodeColorString.')}if(\"string\"==typeof n&&/^#[0-9A-Fa-f]{3}$/.test(n)&&(n=\"#\"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]),\"string\"==typeof n&&/^#[0-9A-Fa-f]{6}$/.test(n)){var u=parseInt(n.substr(1),16);n=u>>16&255,i=u>>8&255,a=255&u}if(void 0===i||void 0===o&&n===i&&i===a)if(\"string\"==typeof n)r=n+\" \"+s[0];else switch(e.precision){case 2:r=R(n/255)+\" \"+s[0];break;case 3:default:r=T(n/255)+\" \"+s[0]}else if(void 0===o||\"object\"===t(o)){if(o&&!isNaN(o.a)&&0===o.a)return r=[\"1.\",\"1.\",\"1.\",s[1]].join(\" \");if(\"string\"==typeof n)r=[n,i,a,s[1]].join(\" \");else switch(e.precision){case 2:r=[R(n/255),R(i/255),R(a/255),s[1]].join(\" \");break;default:case 3:r=[T(n/255),T(i/255),T(a/255),s[1]].join(\" \")}}else if(\"string\"==typeof n)r=[n,i,a,o,s[2]].join(\" \");else switch(e.precision){case 2:r=[R(n),R(i),R(a),R(o),s[2]].join(\" \");break;case 3:default:r=[T(n),T(i),T(a),T(o),s[2]].join(\" \")}return r},ne=y.__private__.getFilters=function(){return u},ie=y.__private__.putStream=function(t){var e=(t=t||{}).data||\"\",r=t.filters||ne(),n=t.alreadyAppliedFilters||[],i=t.addLength1||!1,a=e.length,o=t.objectId,s=function(t){return t};if(null!==m&&void 0===o)throw new Error(\"ObjectId must be passed to putStream for file encryption\");null!==m&&(s=Ye.encryptor(o,0));var c={};!0===r&&(r=[\"FlateEncode\"]);var u=t.additionalKeyValues||[],h=(c=void 0!==E.API.processDataByFilters?E.API.processDataByFilters(e,r):{data:e,reverseChain:[]}).reverseChain+(Array.isArray(n)?n.join(\" \"):n.toString());if(0!==c.data.length&&(u.push({key:\"Length\",value:c.data.length}),!0===i&&u.push({key:\"Length1\",value:a})),0!=h.length)if(h.split(\"/\").length-1==1)u.push({key:\"Filter\",value:h});else{u.push({key:\"Filter\",value:\"[\"+h+\"]\"});for(var l=0;l<u.length;l+=1)if(\"DecodeParms\"===u[l].key){for(var f=[],d=0;d<c.reverseChain.split(\"/\").length-1;d+=1)f.push(\"null\");f.push(u[l].value),u[l].value=\"[\"+f.join(\" \")+\"]\"}}lt(\"<<\");for(var p=0;p<u.length;p++)lt(\"/\"+u[p].key+\" \"+u[p].value);lt(\">>\"),0!==c.data.length&&(lt(\"stream\"),lt(s(c.data)),lt(\"endstream\"))},ae=y.__private__.putPage=function(t){var e=t.number,r=t.data,n=t.objId,i=t.contentsObjId;Zt(n,!0),lt(\"<</Type /Page\"),lt(\"/Parent \"+t.rootDictionaryObjId+\" 0 R\"),lt(\"/Resources \"+t.resourceDictionaryObjId+\" 0 R\"),lt(\"/MediaBox [\"+parseFloat(O(t.mediaBox.bottomLeftX))+\" \"+parseFloat(O(t.mediaBox.bottomLeftY))+\" \"+O(t.mediaBox.topRightX)+\" \"+O(t.mediaBox.topRightY)+\"]\"),null!==t.cropBox&&lt(\"/CropBox [\"+O(t.cropBox.bottomLeftX)+\" \"+O(t.cropBox.bottomLeftY)+\" \"+O(t.cropBox.topRightX)+\" \"+O(t.cropBox.topRightY)+\"]\"),null!==t.bleedBox&&lt(\"/BleedBox [\"+O(t.bleedBox.bottomLeftX)+\" \"+O(t.bleedBox.bottomLeftY)+\" \"+O(t.bleedBox.topRightX)+\" \"+O(t.bleedBox.topRightY)+\"]\"),null!==t.trimBox&&lt(\"/TrimBox [\"+O(t.trimBox.bottomLeftX)+\" \"+O(t.trimBox.bottomLeftY)+\" \"+O(t.trimBox.topRightX)+\" \"+O(t.trimBox.topRightY)+\"]\"),null!==t.artBox&&lt(\"/ArtBox [\"+O(t.artBox.bottomLeftX)+\" \"+O(t.artBox.bottomLeftY)+\" \"+O(t.artBox.topRightX)+\" \"+O(t.artBox.topRightY)+\"]\"),\"number\"==typeof t.userUnit&&1!==t.userUnit&&lt(\"/UserUnit \"+t.userUnit),Tt.publish(\"putPage\",{objId:n,pageContext:Rt[e],pageNumber:e,page:r}),lt(\"/Contents \"+i+\" 0 R\"),lt(\">>\"),lt(\"endobj\");var a=r.join(\"\\n\");return S===x.ADVANCED&&(a+=\"\\nQ\"),Zt(i,!0),ie({data:a,filters:ne(),objectId:i}),lt(\"endobj\"),n},oe=y.__private__.putPages=function(){var t,e,r=[];for(t=1;t<=Dt;t++)Rt[t].objId=Kt(),Rt[t].contentsObjId=Kt();for(t=1;t<=Dt;t++)r.push(ae({number:t,data:ot[t],objId:Rt[t].objId,contentsObjId:Rt[t].contentsObjId,mediaBox:Rt[t].mediaBox,cropBox:Rt[t].cropBox,bleedBox:Rt[t].bleedBox,trimBox:Rt[t].trimBox,artBox:Rt[t].artBox,userUnit:Rt[t].userUnit,rootDictionaryObjId:Qt,resourceDictionaryObjId:te}));Zt(Qt,!0),lt(\"<</Type /Pages\");var n=\"/Kids [\";for(e=0;e<Dt;e++)n+=r[e]+\" 0 R \";lt(n+\"]\"),lt(\"/Count \"+Dt),lt(\">>\"),lt(\"endobj\"),Tt.publish(\"postPutPages\")},se=function(t){Tt.publish(\"putFont\",{font:t,out:lt,newObject:Xt,putStream:ie}),!0!==t.isAlreadyPutted&&(t.objectNumber=Xt(),lt(\"<<\"),lt(\"/Type /Font\"),lt(\"/BaseFont /\"+F(t.postScriptName)),lt(\"/Subtype /Type1\"),\"string\"==typeof t.encoding&&lt(\"/Encoding /\"+t.encoding),lt(\"/FirstChar 32\"),lt(\"/LastChar 255\"),lt(\">>\"),lt(\"endobj\"))},ce=function(){for(var t in Ft)Ft.hasOwnProperty(t)&&(!1===v||!0===v&&b.hasOwnProperty(t))&&se(Ft[t])},ue=function(t){t.objectNumber=Xt();var e=[];e.push({key:\"Type\",value:\"/XObject\"}),e.push({key:\"Subtype\",value:\"/Form\"}),e.push({key:\"BBox\",value:\"[\"+[O(t.x),O(t.y),O(t.x+t.width),O(t.y+t.height)].join(\" \")+\"]\"}),e.push({key:\"Matrix\",value:\"[\"+t.matrix.toString()+\"]\"});var r=t.pages[1].join(\"\\n\");ie({data:r,additionalKeyValues:e,objectId:t.objectNumber}),lt(\"endobj\")},he=function(){for(var t in zt)zt.hasOwnProperty(t)&&ue(zt[t])},le=function(t,e){var r,n=[],i=1/(e-1);for(r=0;r<1;r+=i)n.push(r);if(n.push(1),0!=t[0].offset){var a={offset:0,color:t[0].color};t.unshift(a)}if(1!=t[t.length-1].offset){var o={offset:1,color:t[t.length-1].color};t.push(o)}for(var s=\"\",c=0,u=0;u<n.length;u++){for(r=n[u];r>t[c+1].offset;)c++;var h=t[c].offset,l=(r-h)/(t[c+1].offset-h),f=t[c].color,d=t[c+1].color;s+=tt(Math.round((1-l)*f[0]+l*d[0]).toString(16))+tt(Math.round((1-l)*f[1]+l*d[1]).toString(16))+tt(Math.round((1-l)*f[2]+l*d[2]).toString(16))}return s.trim()},fe=function(t,e){e||(e=21);var r=Xt(),n=le(t.colors,e),i=[];i.push({key:\"FunctionType\",value:\"0\"}),i.push({key:\"Domain\",value:\"[0.0 1.0]\"}),i.push({key:\"Size\",value:\"[\"+e+\"]\"}),i.push({key:\"BitsPerSample\",value:\"8\"}),i.push({key:\"Range\",value:\"[0.0 1.0 0.0 1.0 0.0 1.0]\"}),i.push({key:\"Decode\",value:\"[0.0 1.0 0.0 1.0 0.0 1.0]\"}),ie({data:n,additionalKeyValues:i,alreadyAppliedFilters:[\"/ASCIIHexDecode\"],objectId:r}),lt(\"endobj\"),t.objectNumber=Xt(),lt(\"<< /ShadingType \"+t.type),lt(\"/ColorSpace /DeviceRGB\");var a=\"/Coords [\"+O(parseFloat(t.coords[0]))+\" \"+O(parseFloat(t.coords[1]))+\" \";2===t.type?a+=O(parseFloat(t.coords[2]))+\" \"+O(parseFloat(t.coords[3])):a+=O(parseFloat(t.coords[2]))+\" \"+O(parseFloat(t.coords[3]))+\" \"+O(parseFloat(t.coords[4]))+\" \"+O(parseFloat(t.coords[5])),lt(a+=\"]\"),t.matrix&&lt(\"/Matrix [\"+t.matrix.toString()+\"]\"),lt(\"/Function \"+r+\" 0 R\"),lt(\"/Extend [true true]\"),lt(\">>\"),lt(\"endobj\")},de=function(t,e){var r=Kt(),n=Xt();e.push({resourcesOid:r,objectOid:n}),t.objectNumber=n;var i=[];i.push({key:\"Type\",value:\"/Pattern\"}),i.push({key:\"PatternType\",value:\"1\"}),i.push({key:\"PaintType\",value:\"1\"}),i.push({key:\"TilingType\",value:\"1\"}),i.push({key:\"BBox\",value:\"[\"+t.boundingBox.map(O).join(\" \")+\"]\"}),i.push({key:\"XStep\",value:O(t.xStep)}),i.push({key:\"YStep\",value:O(t.yStep)}),i.push({key:\"Resources\",value:r+\" 0 R\"}),t.matrix&&i.push({key:\"Matrix\",value:\"[\"+t.matrix.toString()+\"]\"}),ie({data:t.stream,additionalKeyValues:i,objectId:t.objectNumber}),lt(\"endobj\")},pe=function(t){var e;for(e in Ot)Ot.hasOwnProperty(e)&&(Ot[e]instanceof B?fe(Ot[e]):Ot[e]instanceof M&&de(Ot[e],t))},ge=function(t){for(var e in t.objectNumber=Xt(),lt(\"<<\"),t)switch(e){case\"opacity\":lt(\"/ca \"+R(t[e]));break;case\"stroke-opacity\":lt(\"/CA \"+R(t[e]))}lt(\">>\"),lt(\"endobj\")},me=function(){var t;for(t in Mt)Mt.hasOwnProperty(t)&&ge(Mt[t])},ve=function(){for(var t in lt(\"/XObject <<\"),zt)zt.hasOwnProperty(t)&&zt[t].objectNumber>=0&&lt(\"/\"+t+\" \"+zt[t].objectNumber+\" 0 R\");Tt.publish(\"putXobjectDict\"),lt(\">>\")},be=function(){Ye.oid=Xt(),lt(\"<<\"),lt(\"/Filter /Standard\"),lt(\"/V \"+Ye.v),lt(\"/R \"+Ye.r),lt(\"/U <\"+Ye.toHexString(Ye.U)+\">\"),lt(\"/O <\"+Ye.toHexString(Ye.O)+\">\"),lt(\"/P \"+Ye.P),lt(\">>\"),lt(\"endobj\")},ye=function(){for(var t in lt(\"/Font <<\"),Ft)Ft.hasOwnProperty(t)&&(!1===v||!0===v&&b.hasOwnProperty(t))&&lt(\"/\"+t+\" \"+Ft[t].objectNumber+\" 0 R\");lt(\">>\")},we=function(){if(Object.keys(Ot).length>0){for(var t in lt(\"/Shading <<\"),Ot)Ot.hasOwnProperty(t)&&Ot[t]instanceof B&&Ot[t].objectNumber>=0&&lt(\"/\"+t+\" \"+Ot[t].objectNumber+\" 0 R\");Tt.publish(\"putShadingPatternDict\"),lt(\">>\")}},Ne=function(t){if(Object.keys(Ot).length>0){for(var e in lt(\"/Pattern <<\"),Ot)Ot.hasOwnProperty(e)&&Ot[e]instanceof y.TilingPattern&&Ot[e].objectNumber>=0&&Ot[e].objectNumber<t&&lt(\"/\"+e+\" \"+Ot[e].objectNumber+\" 0 R\");Tt.publish(\"putTilingPatternDict\"),lt(\">>\")}},Le=function(){if(Object.keys(Mt).length>0){var t;for(t in lt(\"/ExtGState <<\"),Mt)Mt.hasOwnProperty(t)&&Mt[t].objectNumber>=0&&lt(\"/\"+t+\" \"+Mt[t].objectNumber+\" 0 R\");Tt.publish(\"putGStateDict\"),lt(\">>\")}},Ae=function(t){Zt(t.resourcesOid,!0),lt(\"<<\"),lt(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\"),ye(),we(),Ne(t.objectOid),Le(),ve(),lt(\">>\"),lt(\"endobj\")},xe=function(){var t=[];ce(),me(),he(),pe(t),Tt.publish(\"putResources\"),t.forEach(Ae),Ae({resourcesOid:te,objectOid:Number.MAX_SAFE_INTEGER}),Tt.publish(\"postPutResources\")},Se=function(){Tt.publish(\"putAdditionalObjects\");for(var t=0;t<at.length;t++){var e=at[t];Zt(e.objId,!0),lt(e.content),lt(\"endobj\")}Tt.publish(\"postPutAdditionalObjects\")},_e=function(t){Ct[t.fontName]=Ct[t.fontName]||{},Ct[t.fontName][t.fontStyle]=t.id},Pe=function(t,e,r,n,i){var a={id:\"F\"+(Object.keys(Ft).length+1).toString(10),postScriptName:t,fontName:e,fontStyle:r,encoding:n,isStandardFont:i||!1,metadata:{}};return Tt.publish(\"addFont\",{font:a,instance:this}),Ft[a.id]=a,_e(a),a.id},ke=function(t){for(var e=0,r=pt.length;e<r;e++){var n=Pe.call(this,t[e][0],t[e][1],t[e][2],pt[e][3],!0);!1===v&&(b[n]=!0);var i=t[e][0].split(\"-\");_e({id:n,fontName:i[0],fontStyle:i[1]||\"\"})}Tt.publish(\"addFonts\",{fonts:Ft,dictionary:Ct})},Ie=function(t){return t.foo=function(){try{return t.apply(this,arguments)}catch(t){var e=t.stack||\"\";~e.indexOf(\" at \")&&(e=e.split(\" at \")[1]);var r=\"Error in function \"+e.split(\"\\n\")[0].split(\"<\")[0]+\": \"+t.message;if(!n.console)throw new Error(r);n.console.error(r,t),n.alert&&alert(r)}},t.foo.bar=t,t.foo},Fe=function(t,e){var r,n,i,a,o,s,c,u,h;if(i=(e=e||{}).sourceEncoding||\"Unicode\",o=e.outputEncoding,(e.autoencode||o)&&Ft[St].metadata&&Ft[St].metadata[i]&&Ft[St].metadata[i].encoding&&(a=Ft[St].metadata[i].encoding,!o&&Ft[St].encoding&&(o=Ft[St].encoding),!o&&a.codePages&&(o=a.codePages[0]),\"string\"==typeof o&&(o=a[o]),o)){for(c=!1,s=[],r=0,n=t.length;r<n;r++)(u=o[t.charCodeAt(r)])?s.push(String.fromCharCode(u)):s.push(t[r]),s[r].charCodeAt(0)>>8&&(c=!0);t=s.join(\"\")}for(r=t.length;void 0===c&&0!==r;)t.charCodeAt(r-1)>>8&&(c=!0),r--;if(!c)return t;for(s=e.noBOM?[]:[254,255],r=0,n=t.length;r<n;r++){if((h=(u=t.charCodeAt(r))>>8)>>8)throw new Error(\"Character at position \"+r+\" of string '\"+t+\"' exceeds 16bits. Cannot be encoded into UCS-2 BE\");s.push(h),s.push(u-(h<<8))}return String.fromCharCode.apply(void 0,s)},Ce=y.__private__.pdfEscape=y.pdfEscape=function(t,e){return Fe(t,e).replace(/\\\\/g,\"\\\\\\\\\").replace(/\\(/g,\"\\\\(\").replace(/\\)/g,\"\\\\)\")},je=y.__private__.beginPage=function(t){ot[++Dt]=[],Rt[Dt]={objId:0,contentsObjId:0,userUnit:Number(d),artBox:null,bleedBox:null,cropBox:null,trimBox:null,mediaBox:{bottomLeftX:0,bottomLeftY:0,topRightX:Number(t[0]),topRightY:Number(t[1])}},Me(Dt),ht(ot[$])},Oe=function(t,e){var r,n,o;switch(i=e||i,\"string\"==typeof t&&(r=A(t.toLowerCase()),Array.isArray(r)&&(n=r[0],o=r[1])),Array.isArray(t)&&(n=t[0]*_t,o=t[1]*_t),isNaN(n)&&(n=s[0],o=s[1]),(n>14400||o>14400)&&(a.warn(\"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"),n=Math.min(14400,n),o=Math.min(14400,o)),s=[n,o],i.substr(0,1)){case\"l\":o>n&&(s=[o,n]);break;case\"p\":n>o&&(s=[o,n])}je(s),pr(fr),lt(Lr),0!==kr&&lt(kr+\" J\"),0!==Ir&&lt(Ir+\" j\"),Tt.publish(\"addPage\",{pageNumber:Dt})},Be=function(t){t>0&&t<=Dt&&(ot.splice(t,1),Rt.splice(t,1),Dt--,$>Dt&&($=Dt),this.setPage($))},Me=function(t){t>0&&t<=Dt&&($=t)},Ee=y.__private__.getNumberOfPages=y.getNumberOfPages=function(){return ot.length-1},qe=function(t,e,r){var n,i=void 0;return r=r||{},t=void 0!==t?t:Ft[St].fontName,e=void 0!==e?e:Ft[St].fontStyle,n=t.toLowerCase(),void 0!==Ct[n]&&void 0!==Ct[n][e]?i=Ct[n][e]:void 0!==Ct[t]&&void 0!==Ct[t][e]?i=Ct[t][e]:!1===r.disableWarning&&a.warn(\"Unable to look up font label for font '\"+t+\"', '\"+e+\"'. Refer to getFontList() for available fonts.\"),i||r.noFallback||null==(i=Ct.times[e])&&(i=Ct.times.normal),i},De=y.__private__.putInfo=function(){var t=Xt(),e=function(t){return t};for(var r in null!==m&&(e=Ye.encryptor(t,0)),lt(\"<<\"),lt(\"/Producer (\"+Ce(e(\"jsPDF \"+E.version))+\")\"),xt)xt.hasOwnProperty(r)&&xt[r]&&lt(\"/\"+r.substr(0,1).toUpperCase()+r.substr(1)+\" (\"+Ce(e(xt[r]))+\")\");lt(\"/CreationDate (\"+Ce(e(W))+\")\"),lt(\">>\"),lt(\"endobj\")},Re=y.__private__.putCatalog=function(t){var e=(t=t||{}).rootDictionaryObjId||Qt;switch(Xt(),lt(\"<<\"),lt(\"/Type /Catalog\"),lt(\"/Pages \"+e+\" 0 R\"),mt||(mt=\"fullwidth\"),mt){case\"fullwidth\":lt(\"/OpenAction [3 0 R /FitH null]\");break;case\"fullheight\":lt(\"/OpenAction [3 0 R /FitV null]\");break;case\"fullpage\":lt(\"/OpenAction [3 0 R /Fit]\");break;case\"original\":lt(\"/OpenAction [3 0 R /XYZ null null 1]\");break;default:var r=\"\"+mt;\"%\"===r.substr(r.length-1)&&(mt=parseInt(mt)/100),\"number\"==typeof mt&&lt(\"/OpenAction [3 0 R /XYZ null null \"+R(mt)+\"]\")}switch(Nt||(Nt=\"continuous\"),Nt){case\"continuous\":lt(\"/PageLayout /OneColumn\");break;case\"single\":lt(\"/PageLayout /SinglePage\");break;case\"two\":case\"twoleft\":lt(\"/PageLayout /TwoColumnLeft\");break;case\"tworight\":lt(\"/PageLayout /TwoColumnRight\")}yt&&lt(\"/PageMode /\"+yt),Tt.publish(\"putCatalog\"),lt(\">>\"),lt(\"endobj\")},Te=y.__private__.putTrailer=function(){lt(\"trailer\"),lt(\"<<\"),lt(\"/Size \"+(et+1)),lt(\"/Root \"+et+\" 0 R\"),lt(\"/Info \"+(et-1)+\" 0 R\"),null!==m&&lt(\"/Encrypt \"+Ye.oid+\" 0 R\"),lt(\"/ID [ <\"+V+\"> <\"+V+\"> ]\"),lt(\">>\")},Ue=y.__private__.putHeader=function(){lt(\"%PDF-\"+w),lt(\"%ºß¬à\")},ze=y.__private__.putXRef=function(){var t=\"0000000000\";lt(\"xref\"),lt(\"0 \"+(et+1)),lt(\"0000000000 65535 f \");for(var e=1;e<=et;e++){\"function\"==typeof rt[e]?lt((t+rt[e]()).slice(-10)+\" 00000 n \"):void 0!==rt[e]?lt((t+rt[e]).slice(-10)+\" 00000 n \"):lt(\"0000000000 00000 n \")}},He=y.__private__.buildDocument=function(){ut(),ht(nt),Tt.publish(\"buildDocument\"),Ue(),oe(),Se(),xe(),null!==m&&be(),De(),Re();var t=it;return ze(),Te(),lt(\"startxref\"),lt(\"\"+t),lt(\"%%EOF\"),ht(ot[$]),nt.join(\"\\n\")},We=y.__private__.getBlob=function(t){return new Blob([dt(t)],{type:\"application/pdf\"})},Ve=y.output=y.__private__.output=Ie((function(t,e){switch(\"string\"==typeof(e=e||{})?e={filename:e}:e.filename=e.filename||\"generated.pdf\",t){case void 0:return He();case\"save\":y.save(e.filename);break;case\"arraybuffer\":return dt(He());case\"blob\":return We(He());case\"bloburi\":case\"bloburl\":if(void 0!==n.URL&&\"function\"==typeof n.URL.createObjectURL)return n.URL&&n.URL.createObjectURL(We(He()))||void 0;a.warn(\"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\");break;case\"datauristring\":case\"dataurlstring\":var r=\"\",i=He();try{r=h(i)}catch(t){r=h(unescape(encodeURIComponent(i)))}return\"data:application/pdf;filename=\"+e.filename+\";base64,\"+r;case\"pdfobjectnewwindow\":if(\"[object Window]\"===Object.prototype.toString.call(n)){var o=\"https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js\",s=' integrity=\"sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==\" crossorigin=\"anonymous\"';e.pdfObjectUrl&&(o=e.pdfObjectUrl,s=\"\");var c='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><script src=\"'+o+'\"'+s+'><\\/script><script >PDFObject.embed(\"'+this.output(\"dataurlstring\")+'\", '+JSON.stringify(e)+\");<\\/script></body></html>\",u=n.open();return null!==u&&u.document.write(c),u}throw new Error(\"The option pdfobjectnewwindow just works in a browser-environment.\");case\"pdfjsnewwindow\":if(\"[object Window]\"===Object.prototype.toString.call(n)){var l='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><iframe id=\"pdfViewer\" src=\"'+(e.pdfJsUrl||\"examples/PDF.js/web/viewer.html\")+\"?file=&downloadName=\"+e.filename+'\" width=\"500px\" height=\"400px\" /></body></html>',f=n.open();if(null!==f){f.document.write(l);var d=this;f.document.documentElement.querySelector(\"#pdfViewer\").onload=function(){f.document.title=e.filename,f.document.documentElement.querySelector(\"#pdfViewer\").contentWindow.PDFViewerApplication.open(d.output(\"bloburl\"))}}return f}throw new Error(\"The option pdfjsnewwindow just works in a browser-environment.\");case\"dataurlnewwindow\":if(\"[object Window]\"!==Object.prototype.toString.call(n))throw new Error(\"The option dataurlnewwindow just works in a browser-environment.\");var p='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><iframe src=\"'+this.output(\"datauristring\",e)+'\"></iframe></body></html>',g=n.open();if(null!==g&&(g.document.write(p),g.document.title=e.filename),g||\"undefined\"==typeof safari)return g;break;case\"datauri\":case\"dataurl\":return n.document.location.href=this.output(\"datauristring\",e);default:return null}})),Ge=function(t){return!0===Array.isArray(Ut)&&Ut.indexOf(t)>-1};switch(o){case\"pt\":_t=1;break;case\"mm\":_t=72/25.4;break;case\"cm\":_t=72/2.54;break;case\"in\":_t=72;break;case\"px\":_t=1==Ge(\"px_scaling\")?.75:96/72;break;case\"pc\":case\"em\":_t=12;break;case\"ex\":_t=6;break;default:if(\"number\"!=typeof o)throw new Error(\"Invalid unit: \"+o);_t=o}var Ye=null;K(),Y();var Je=function(t){return null!==m?Ye.encryptor(t,0):function(t){return t}},Xe=y.__private__.getPageInfo=y.getPageInfo=function(t){if(isNaN(t)||t%1!=0)throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");return{objId:Rt[t].objId,pageNumber:t,pageContext:Rt[t]}},Ke=y.__private__.getPageInfoByObjId=function(t){if(isNaN(t)||t%1!=0)throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");for(var e in Rt)if(Rt[e].objId===t)break;return Xe(e)},Ze=y.__private__.getCurrentPageInfo=y.getCurrentPageInfo=function(){return{objId:Rt[$].objId,pageNumber:$,pageContext:Rt[$]}};y.addPage=function(){return Oe.apply(this,arguments),this},y.setPage=function(){return Me.apply(this,arguments),ht.call(this,ot[$]),this},y.insertPage=function(t){return this.addPage(),this.movePage($,t),this},y.movePage=function(t,e){var r,n;if(t>e){r=ot[t],n=Rt[t];for(var i=t;i>e;i--)ot[i]=ot[i-1],Rt[i]=Rt[i-1];ot[e]=r,Rt[e]=n,this.setPage(e)}else if(t<e){r=ot[t],n=Rt[t];for(var a=t;a<e;a++)ot[a]=ot[a+1],Rt[a]=Rt[a+1];ot[e]=r,Rt[e]=n,this.setPage(e)}return this},y.deletePage=function(){return Be.apply(this,arguments),this},y.__private__.text=y.text=function(e,r,n,i,a){var o,s,c,u,h,l,f,d,p,g=(i=i||{}).scope||this;if(\"number\"==typeof e&&\"number\"==typeof r&&(\"string\"==typeof n||Array.isArray(n))){var m=n;n=r,r=e,e=m}if(arguments[3]instanceof Vt==!1?(c=arguments[4],u=arguments[5],\"object\"===t(f=arguments[3])&&null!==f||(\"string\"==typeof c&&(u=c,c=null),\"string\"==typeof f&&(u=f,f=null),\"number\"==typeof f&&(c=f,f=null),i={flags:f,angle:c,align:u})):(q(\"The transform parameter of text() with a Matrix value\"),p=a),isNaN(r)||isNaN(n)||null==e)throw new Error(\"Invalid arguments passed to jsPDF.text\");if(0===e.length)return g;var v=\"\",y=!1,w=\"number\"==typeof i.lineHeightFactor?i.lineHeightFactor:lr,N=g.internal.scaleFactor;function L(t){return t=t.split(\"\\t\").join(Array(i.TabLen||9).join(\" \")),Ce(t,f)}function A(t){for(var e,r=t.concat(),n=[],i=r.length;i--;)\"string\"==typeof(e=r.shift())?n.push(e):Array.isArray(t)&&(1===e.length||void 0===e[1]&&void 0===e[2])?n.push(e[0]):n.push([e[0],e[1],e[2]]);return n}function _(t,e){var r;if(\"string\"==typeof t)r=e(t)[0];else if(Array.isArray(t)){for(var n,i,a=t.concat(),o=[],s=a.length;s--;)\"string\"==typeof(n=a.shift())?o.push(e(n)[0]):Array.isArray(n)&&\"string\"==typeof n[0]&&(i=e(n[0],n[1],n[2]),o.push([i[0],i[1],i[2]]));r=o}return r}var P=!1,k=!0;if(\"string\"==typeof e)P=!0;else if(Array.isArray(e)){var I=e.concat();s=[];for(var F,C=I.length;C--;)(\"string\"!=typeof(F=I.shift())||Array.isArray(F)&&\"string\"!=typeof F[0])&&(k=!1);P=k}if(!1===P)throw new Error('Type of text must be string or Array. \"'+e+'\" is not recognized.');\"string\"==typeof e&&(e=e.match(/[\\r?\\n]/)?e.split(/\\r\\n|\\r|\\n/g):[e]);var j=gt/g.internal.scaleFactor,B=j*(w-1);switch(i.baseline){case\"bottom\":n-=B;break;case\"top\":n+=j-B;break;case\"hanging\":n+=j-2*B;break;case\"middle\":n+=j/2-B}if((l=i.maxWidth||0)>0&&(\"string\"==typeof e?e=g.splitTextToSize(e,l):\"[object Array]\"===Object.prototype.toString.call(e)&&(e=e.reduce((function(t,e){return t.concat(g.splitTextToSize(e,l))}),[]))),o={text:e,x:r,y:n,options:i,mutex:{pdfEscape:Ce,activeFontKey:St,fonts:Ft,activeFontSize:gt}},Tt.publish(\"preProcessText\",o),e=o.text,c=(i=o.options).angle,p instanceof Vt==!1&&c&&\"number\"==typeof c){c*=Math.PI/180,0===i.rotationDirection&&(c=-c),S===x.ADVANCED&&(c=-c);var M=Math.cos(c),E=Math.sin(c);p=new Vt(M,E,-E,M,0,0)}else c&&c instanceof Vt&&(p=c);S!==x.ADVANCED||p||(p=Yt),void 0!==(h=i.charSpace||_r)&&(v+=O(U(h))+\" Tc\\n\",this.setCharSpace(this.getCharSpace()||0)),void 0!==(d=i.horizontalScale)&&(v+=O(100*d)+\" Tz\\n\");i.lang;var D=-1,R=void 0!==i.renderingMode?i.renderingMode:i.stroke,T=g.internal.getCurrentPageInfo().pageContext;switch(R){case 0:case!1:case\"fill\":D=0;break;case 1:case!0:case\"stroke\":D=1;break;case 2:case\"fillThenStroke\":D=2;break;case 3:case\"invisible\":D=3;break;case 4:case\"fillAndAddForClipping\":D=4;break;case 5:case\"strokeAndAddPathForClipping\":D=5;break;case 6:case\"fillThenStrokeAndAddToPathForClipping\":D=6;break;case 7:case\"addToPathForClipping\":D=7}var z=void 0!==T.usedRenderingMode?T.usedRenderingMode:-1;-1!==D?v+=D+\" Tr\\n\":-1!==z&&(v+=\"0 Tr\\n\"),-1!==D&&(T.usedRenderingMode=D),u=i.align||\"left\";var H,W=gt*w,V=g.internal.pageSize.getWidth(),G=Ft[St];h=i.charSpace||_r,l=i.maxWidth||0,f=Object.assign({autoencode:!0,noBOM:!0},i.flags);var Y=[],J=function(t){return g.getStringUnitWidth(t,{font:G,charSpace:h,fontSize:gt,doKerning:!1})*gt/N};if(\"[object Array]\"===Object.prototype.toString.call(e)){var X;s=A(e),\"left\"!==u&&(H=s.map(J));var K,Z=0;if(\"right\"===u){r-=H[0],e=[],C=s.length;for(var $=0;$<C;$++)0===$?(K=br(r),X=yr(n)):(K=U(Z-H[$]),X=-W),e.push([s[$],K,X]),Z=H[$]}else if(\"center\"===u){r-=H[0]/2,e=[],C=s.length;for(var Q=0;Q<C;Q++)0===Q?(K=br(r),X=yr(n)):(K=U((Z-H[Q])/2),X=-W),e.push([s[Q],K,X]),Z=H[Q]}else if(\"left\"===u){e=[],C=s.length;for(var tt=0;tt<C;tt++)e.push(s[tt])}else if(\"justify\"===u&&\"Identity-H\"===G.encoding){e=[],C=s.length,l=0!==l?l:V;for(var et=0,rt=0;rt<C;rt++)if(X=0===rt?yr(n):-W,K=0===rt?br(r):et,rt<C-1){var nt=U((l-H[rt])/(s[rt].split(\" \").length-1)),it=s[rt].split(\" \");e.push([it[0]+\" \",K,X]),et=0;for(var at=1;at<it.length;at++){var ot=(J(it[at-1]+\" \"+it[at])-J(it[at]))*N+nt;at==it.length-1?e.push([it[at],ot,0]):e.push([it[at]+\" \",ot,0]),et-=ot}}else e.push([s[rt],K,X]);e.push([\"\",et,0])}else{if(\"justify\"!==u)throw new Error('Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".');e=[],C=s.length,l=0!==l?l:V;for(rt=0;rt<C;rt++)X=0===rt?yr(n):-W,K=0===rt?br(r):0,rt<C-1?Y.push(O(U((l-H[rt])/(s[rt].split(\" \").length-1)))):Y.push(0),e.push([s[rt],K,X])}}var st=\"boolean\"==typeof i.R2L?i.R2L:bt;!0===st&&(e=_(e,(function(t,e,r){return[t.split(\"\").reverse().join(\"\"),e,r]}))),o={text:e,x:r,y:n,options:i,mutex:{pdfEscape:Ce,activeFontKey:St,fonts:Ft,activeFontSize:gt}},Tt.publish(\"postProcessText\",o),e=o.text,y=o.mutex.isHex||!1;var ct=Ft[St].encoding;\"WinAnsiEncoding\"!==ct&&\"StandardEncoding\"!==ct||(e=_(e,(function(t,e,r){return[L(t),e,r]}))),s=A(e),e=[];for(var ut,ht,ft,dt=0,pt=1,mt=Array.isArray(s[0])?pt:dt,vt=\"\",yt=function(t,e,r){var n=\"\";return r instanceof Vt?(r=\"number\"==typeof i.angle?Gt(r,new Vt(1,0,0,1,t,e)):Gt(new Vt(1,0,0,1,t,e),r),S===x.ADVANCED&&(r=Gt(new Vt(1,0,0,-1,0,0),r)),n=r.join(\" \")+\" Tm\\n\"):n=O(t)+\" \"+O(e)+\" Td\\n\",n},wt=0;wt<s.length;wt++){switch(vt=\"\",mt){case pt:ft=(y?\"<\":\"(\")+s[wt][0]+(y?\">\":\")\"),ut=parseFloat(s[wt][1]),ht=parseFloat(s[wt][2]);break;case dt:ft=(y?\"<\":\"(\")+s[wt]+(y?\">\":\")\"),ut=br(r),ht=yr(n)}void 0!==Y&&void 0!==Y[wt]&&(vt=Y[wt]+\" Tw\\n\"),0===wt?e.push(vt+yt(ut,ht,p)+ft):mt===dt?e.push(vt+ft):mt===pt&&e.push(vt+yt(ut,ht,p)+ft)}e=mt===dt?e.join(\" Tj\\nT* \"):e.join(\" Tj\\n\"),e+=\" Tj\\n\";var Nt=\"BT\\n/\";return Nt+=St+\" \"+gt+\" Tf\\n\",Nt+=O(gt*w)+\" TL\\n\",Nt+=xr+\"\\n\",Nt+=v,Nt+=e,lt(Nt+=\"ET\"),b[St]=!0,g};var $e=y.__private__.clip=y.clip=function(t){return lt(\"evenodd\"===t?\"W*\":\"W\"),this};y.clipEvenOdd=function(){return $e(\"evenodd\")},y.__private__.discardPath=y.discardPath=function(){return lt(\"n\"),this};var Qe=y.__private__.isValidStyle=function(t){var e=!1;return-1!==[void 0,null,\"S\",\"D\",\"F\",\"DF\",\"FD\",\"f\",\"f*\",\"B\",\"B*\",\"n\"].indexOf(t)&&(e=!0),e};y.__private__.setDefaultPathOperation=y.setDefaultPathOperation=function(t){return Qe(t)&&(g=t),this};var tr=y.__private__.getStyle=y.getStyle=function(t){var e=g;switch(t){case\"D\":case\"S\":e=\"S\";break;case\"F\":e=\"f\";break;case\"FD\":case\"DF\":e=\"B\";break;case\"f\":case\"f*\":case\"B\":case\"B*\":e=t}return e},er=y.close=function(){return lt(\"h\"),this};y.stroke=function(){return lt(\"S\"),this},y.fill=function(t){return rr(\"f\",t),this},y.fillEvenOdd=function(t){return rr(\"f*\",t),this},y.fillStroke=function(t){return rr(\"B\",t),this},y.fillStrokeEvenOdd=function(t){return rr(\"B*\",t),this};var rr=function(e,r){\"object\"===t(r)?ar(r,e):lt(e)},nr=function(t){null===t||S===x.ADVANCED&&void 0===t||(t=tr(t),lt(t))};function ir(t,e,r,n,i){var a=new M(e||this.boundingBox,r||this.xStep,n||this.yStep,this.gState,i||this.matrix);a.stream=this.stream;var o=t+\"$$\"+this.cloneIndex+++\"$$\";return Jt(o,a),a}var ar=function(t,e){var r=Bt[t.key],n=Ot[r];if(n instanceof B)lt(\"q\"),lt(or(e)),n.gState&&y.setGState(n.gState),lt(t.matrix.toString()+\" cm\"),lt(\"/\"+r+\" sh\"),lt(\"Q\");else if(n instanceof M){var i=new Vt(1,0,0,-1,0,Rr());t.matrix&&(i=i.multiply(t.matrix||Yt),r=ir.call(n,t.key,t.boundingBox,t.xStep,t.yStep,i).id),lt(\"q\"),lt(\"/Pattern cs\"),lt(\"/\"+r+\" scn\"),n.gState&&y.setGState(n.gState),lt(e),lt(\"Q\")}},or=function(t){switch(t){case\"f\":case\"F\":return\"W n\";case\"f*\":return\"W* n\";case\"B\":return\"W S\";case\"B*\":return\"W* S\";case\"S\":return\"W S\";case\"n\":return\"W n\"}},sr=y.moveTo=function(t,e){return lt(O(U(t))+\" \"+O(H(e))+\" m\"),this},cr=y.lineTo=function(t,e){return lt(O(U(t))+\" \"+O(H(e))+\" l\"),this},ur=y.curveTo=function(t,e,r,n,i,a){return lt([O(U(t)),O(H(e)),O(U(r)),O(H(n)),O(U(i)),O(H(a)),\"c\"].join(\" \")),this};y.__private__.line=y.line=function(t,e,r,n,i){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||!Qe(i))throw new Error(\"Invalid arguments passed to jsPDF.line\");return S===x.COMPAT?this.lines([[r-t,n-e]],t,e,[1,1],i||\"S\"):this.lines([[r-t,n-e]],t,e,[1,1]).stroke()},y.__private__.lines=y.lines=function(t,e,r,n,i,a){var o,s,c,u,h,l,f,d,p,g,m,v;if(\"number\"==typeof t&&(v=r,r=e,e=t,t=v),n=n||[1,1],a=a||!1,isNaN(e)||isNaN(r)||!Array.isArray(t)||!Array.isArray(n)||!Qe(i)||\"boolean\"!=typeof a)throw new Error(\"Invalid arguments passed to jsPDF.lines\");for(sr(e,r),o=n[0],s=n[1],u=t.length,g=e,m=r,c=0;c<u;c++)2===(h=t[c]).length?(g=h[0]*o+g,m=h[1]*s+m,cr(g,m)):(l=h[0]*o+g,f=h[1]*s+m,d=h[2]*o+g,p=h[3]*s+m,g=h[4]*o+g,m=h[5]*s+m,ur(l,f,d,p,g,m));return a&&er(),nr(i),this},y.path=function(t){for(var e=0;e<t.length;e++){var r=t[e],n=r.c;switch(r.op){case\"m\":sr(n[0],n[1]);break;case\"l\":cr(n[0],n[1]);break;case\"c\":ur.apply(this,n);break;case\"h\":er()}}return this},y.__private__.rect=y.rect=function(t,e,r,n,i){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||!Qe(i))throw new Error(\"Invalid arguments passed to jsPDF.rect\");return S===x.COMPAT&&(n=-n),lt([O(U(t)),O(H(e)),O(U(r)),O(U(n)),\"re\"].join(\" \")),nr(i),this},y.__private__.triangle=y.triangle=function(t,e,r,n,i,a,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(i)||isNaN(a)||!Qe(o))throw new Error(\"Invalid arguments passed to jsPDF.triangle\");return this.lines([[r-t,n-e],[i-r,a-n],[t-i,e-a]],t,e,[1,1],o,!0),this},y.__private__.roundedRect=y.roundedRect=function(t,e,r,n,i,a,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(i)||isNaN(a)||!Qe(o))throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");var s=4/3*(Math.SQRT2-1);return i=Math.min(i,.5*r),a=Math.min(a,.5*n),this.lines([[r-2*i,0],[i*s,0,i,a-a*s,i,a],[0,n-2*a],[0,a*s,-i*s,a,-i,a],[2*i-r,0],[-i*s,0,-i,-a*s,-i,-a],[0,2*a-n],[0,-a*s,i*s,-a,i,-a]],t+i,e,[1,1],o,!0),this},y.__private__.ellipse=y.ellipse=function(t,e,r,n,i){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||!Qe(i))throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");var a=4/3*(Math.SQRT2-1)*r,o=4/3*(Math.SQRT2-1)*n;return sr(t+r,e),ur(t+r,e-o,t+a,e-n,t,e-n),ur(t-a,e-n,t-r,e-o,t-r,e),ur(t-r,e+o,t-a,e+n,t,e+n),ur(t+a,e+n,t+r,e+o,t+r,e),nr(i),this},y.__private__.circle=y.circle=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||!Qe(n))throw new Error(\"Invalid arguments passed to jsPDF.circle\");return this.ellipse(t,e,r,r,n)},y.setFont=function(t,e,r){return r&&(e=k(e,r)),St=qe(t,e,{disableWarning:!1}),this};var hr=y.__private__.getFont=y.getFont=function(){return Ft[qe.apply(y,arguments)]};y.__private__.getFontList=y.getFontList=function(){var t,e,r={};for(t in Ct)if(Ct.hasOwnProperty(t))for(e in r[t]=[],Ct[t])Ct[t].hasOwnProperty(e)&&r[t].push(e);return r},y.addFont=function(t,e,r,n,i){var a=[\"StandardEncoding\",\"MacRomanEncoding\",\"Identity-H\",\"WinAnsiEncoding\"];return arguments[3]&&-1!==a.indexOf(arguments[3])?i=arguments[3]:arguments[3]&&-1==a.indexOf(arguments[3])&&(r=k(r,n)),i=i||\"Identity-H\",Pe.call(this,t,e,r,i)};var lr,fr=e.lineWidth||.200025,dr=y.__private__.getLineWidth=y.getLineWidth=function(){return fr},pr=y.__private__.setLineWidth=y.setLineWidth=function(t){return fr=t,lt(O(U(t))+\" w\"),this};y.__private__.setLineDash=E.API.setLineDash=E.API.setLineDashPattern=function(t,e){if(t=t||[],e=e||0,isNaN(e)||!Array.isArray(t))throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");return t=t.map((function(t){return O(U(t))})).join(\" \"),e=O(U(e)),lt(\"[\"+t+\"] \"+e+\" d\"),this};var gr=y.__private__.getLineHeight=y.getLineHeight=function(){return gt*lr};y.__private__.getLineHeight=y.getLineHeight=function(){return gt*lr};var mr=y.__private__.setLineHeightFactor=y.setLineHeightFactor=function(t){return\"number\"==typeof(t=t||1.15)&&(lr=t),this},vr=y.__private__.getLineHeightFactor=y.getLineHeightFactor=function(){return lr};mr(e.lineHeight);var br=y.__private__.getHorizontalCoordinate=function(t){return U(t)},yr=y.__private__.getVerticalCoordinate=function(t){return S===x.ADVANCED?t:Rt[$].mediaBox.topRightY-Rt[$].mediaBox.bottomLeftY-U(t)},wr=y.__private__.getHorizontalCoordinateString=y.getHorizontalCoordinateString=function(t){return O(br(t))},Nr=y.__private__.getVerticalCoordinateString=y.getVerticalCoordinateString=function(t){return O(yr(t))},Lr=e.strokeColor||\"0 G\";y.__private__.getStrokeColor=y.getDrawColor=function(){return ee(Lr)},y.__private__.setStrokeColor=y.setDrawColor=function(t,e,r,n){return Lr=re({ch1:t,ch2:e,ch3:r,ch4:n,pdfColorType:\"draw\",precision:2}),lt(Lr),this};var Ar=e.fillColor||\"0 g\";y.__private__.getFillColor=y.getFillColor=function(){return ee(Ar)},y.__private__.setFillColor=y.setFillColor=function(t,e,r,n){return Ar=re({ch1:t,ch2:e,ch3:r,ch4:n,pdfColorType:\"fill\",precision:2}),lt(Ar),this};var xr=e.textColor||\"0 g\",Sr=y.__private__.getTextColor=y.getTextColor=function(){return ee(xr)};y.__private__.setTextColor=y.setTextColor=function(t,e,r,n){return xr=re({ch1:t,ch2:e,ch3:r,ch4:n,pdfColorType:\"text\",precision:3}),this};var _r=e.charSpace,Pr=y.__private__.getCharSpace=y.getCharSpace=function(){return parseFloat(_r||0)};y.__private__.setCharSpace=y.setCharSpace=function(t){if(isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");return _r=t,this};var kr=0;y.CapJoinStyles={0:0,butt:0,but:0,miter:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,bevel:2},y.__private__.setLineCap=y.setLineCap=function(t){var e=y.CapJoinStyles[t];if(void 0===e)throw new Error(\"Line cap style of '\"+t+\"' is not recognized. See or extend .CapJoinStyles property for valid styles\");return kr=e,lt(e+\" J\"),this};var Ir=0;y.__private__.setLineJoin=y.setLineJoin=function(t){var e=y.CapJoinStyles[t];if(void 0===e)throw new Error(\"Line join style of '\"+t+\"' is not recognized. See or extend .CapJoinStyles property for valid styles\");return Ir=e,lt(e+\" j\"),this},y.__private__.setLineMiterLimit=y.__private__.setMiterLimit=y.setLineMiterLimit=y.setMiterLimit=function(t){if(t=t||0,isNaN(t))throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");return lt(O(U(t))+\" M\"),this},y.GState=j,y.setGState=function(t){(t=\"string\"==typeof t?Mt[Et[t]]:Fr(null,t)).equals(qt)||(lt(\"/\"+t.id+\" gs\"),qt=t)};var Fr=function(t,e){if(!t||!Et[t]){var r=!1;for(var n in Mt)if(Mt.hasOwnProperty(n)&&Mt[n].equals(e)){r=!0;break}if(r)e=Mt[n];else{var i=\"GS\"+(Object.keys(Mt).length+1).toString(10);Mt[i]=e,e.id=i}return t&&(Et[t]=e.id),Tt.publish(\"addGState\",e),e}};y.addGState=function(t,e){return Fr(t,e),this},y.saveGraphicsState=function(){return lt(\"q\"),jt.push({key:St,size:gt,color:xr}),this},y.restoreGraphicsState=function(){lt(\"Q\");var t=jt.pop();return St=t.key,gt=t.size,xr=t.color,qt=null,this},y.setCurrentTransformationMatrix=function(t){return lt(t.toString()+\" cm\"),this},y.comment=function(t){return lt(\"#\"+t),this};var Cr=function(t,e){var r=t||0;Object.defineProperty(this,\"x\",{enumerable:!0,get:function(){return r},set:function(t){isNaN(t)||(r=parseFloat(t))}});var n=e||0;Object.defineProperty(this,\"y\",{enumerable:!0,get:function(){return n},set:function(t){isNaN(t)||(n=parseFloat(t))}});var i=\"pt\";return Object.defineProperty(this,\"type\",{enumerable:!0,get:function(){return i},set:function(t){i=t.toString()}}),this},jr=function(t,e,r,n){Cr.call(this,t,e),this.type=\"rect\";var i=r||0;Object.defineProperty(this,\"w\",{enumerable:!0,get:function(){return i},set:function(t){isNaN(t)||(i=parseFloat(t))}});var a=n||0;return Object.defineProperty(this,\"h\",{enumerable:!0,get:function(){return a},set:function(t){isNaN(t)||(a=parseFloat(t))}}),this},Or=function(){this.page=Dt,this.currentPage=$,this.pages=ot.slice(0),this.pagesContext=Rt.slice(0),this.x=Pt,this.y=kt,this.matrix=It,this.width=qr($),this.height=Rr($),this.outputDestination=ct,this.id=\"\",this.objectNumber=-1};Or.prototype.restore=function(){Dt=this.page,$=this.currentPage,Rt=this.pagesContext,ot=this.pages,Pt=this.x,kt=this.y,It=this.matrix,Dr($,this.width),Tr($,this.height),ct=this.outputDestination};var Br=function(t,e,r,n,i){Wt.push(new Or),Dt=$=0,ot=[],Pt=t,kt=e,It=i,je([r,n])},Mr=function(t){if(Ht[t])Wt.pop().restore();else{var e=new Or,r=\"Xo\"+(Object.keys(zt).length+1).toString(10);e.id=r,Ht[t]=r,zt[r]=e,Tt.publish(\"addFormObject\",e),Wt.pop().restore()}};for(var Er in y.beginFormObject=function(t,e,r,n,i){return Br(t,e,r,n,i),this},y.endFormObject=function(t){return Mr(t),this},y.doFormObject=function(t,e){var r=zt[Ht[t]];return lt(\"q\"),lt(e.toString()+\" cm\"),lt(\"/\"+r.id+\" Do\"),lt(\"Q\"),this},y.getFormObject=function(t){var e=zt[Ht[t]];return{x:e.x,y:e.y,width:e.width,height:e.height,matrix:e.matrix}},y.save=function(t,e){return t=t||\"generated.pdf\",(e=e||{}).returnPromise=e.returnPromise||!1,!1===e.returnPromise?(l(We(He()),t),\"function\"==typeof l.unload&&n.setTimeout&&setTimeout(l.unload,911),this):new Promise((function(e,r){try{var i=l(We(He()),t);\"function\"==typeof l.unload&&n.setTimeout&&setTimeout(l.unload,911),e(i)}catch(t){r(t.message)}}))},E.API)E.API.hasOwnProperty(Er)&&(\"events\"===Er&&E.API.events.length?function(t,e){var r,n,i;for(i=e.length-1;-1!==i;i--)r=e[i][0],n=e[i][1],t.subscribe.apply(t,[r].concat(\"function\"==typeof n?[n]:n))}(Tt,E.API.events):y[Er]=E.API[Er]);var qr=y.getPageWidth=function(t){return(Rt[t=t||$].mediaBox.topRightX-Rt[t].mediaBox.bottomLeftX)/_t},Dr=y.setPageWidth=function(t,e){Rt[t].mediaBox.topRightX=e*_t+Rt[t].mediaBox.bottomLeftX},Rr=y.getPageHeight=function(t){return(Rt[t=t||$].mediaBox.topRightY-Rt[t].mediaBox.bottomLeftY)/_t},Tr=y.setPageHeight=function(t,e){Rt[t].mediaBox.topRightY=e*_t+Rt[t].mediaBox.bottomLeftY};return y.internal={pdfEscape:Ce,getStyle:tr,getFont:hr,getFontSize:vt,getCharSpace:Pr,getTextColor:Sr,getLineHeight:gr,getLineHeightFactor:vr,getLineWidth:dr,write:ft,getHorizontalCoordinate:br,getVerticalCoordinate:yr,getCoordinateString:wr,getVerticalCoordinateString:Nr,collections:{},newObject:Xt,newAdditionalObject:$t,newObjectDeferred:Kt,newObjectDeferredBegin:Zt,getFilters:ne,putStream:ie,events:Tt,scaleFactor:_t,pageSize:{getWidth:function(){return qr($)},setWidth:function(t){Dr($,t)},getHeight:function(){return Rr($)},setHeight:function(t){Tr($,t)}},encryptionOptions:m,encryption:Ye,getEncryptor:Je,output:Ve,getNumberOfPages:Ee,pages:ot,out:lt,f2:R,f3:T,getPageInfo:Xe,getPageInfoByObjId:Ke,getCurrentPageInfo:Ze,getPDFVersion:N,Point:Cr,Rectangle:jr,Matrix:Vt,hasHotfix:Ge},Object.defineProperty(y.internal.pageSize,\"width\",{get:function(){return qr($)},set:function(t){Dr($,t)},enumerable:!0,configurable:!0}),Object.defineProperty(y.internal.pageSize,\"height\",{get:function(){return Rr($)},set:function(t){Tr($,t)},enumerable:!0,configurable:!0}),ke.call(y,pt),St=\"F1\",Oe(s,i),Tt.publish(\"initialized\"),y}I.prototype.lsbFirstWord=function(t){return String.fromCharCode(t>>0&255,t>>8&255,t>>16&255,t>>24&255)},I.prototype.toHexString=function(t){return t.split(\"\").map((function(t){return(\"0\"+(255&t.charCodeAt(0)).toString(16)).slice(-2)})).join(\"\")},I.prototype.hexToBytes=function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(String.fromCharCode(parseInt(t.substr(r,2),16)));return e.join(\"\")},I.prototype.processOwnerPassword=function(t,e){return P(x(e).substr(0,5),t)},I.prototype.encryptor=function(t,e){var r=x(this.encryptionKey+String.fromCharCode(255&t,t>>8&255,t>>16&255,255&e,e>>8&255)).substr(0,10);return function(t){return P(r,t)}},j.prototype.equals=function(e){var r,n=\"id,objectNumber,equals\";if(!e||t(e)!==t(this))return!1;var i=0;for(r in this)if(!(n.indexOf(r)>=0)){if(this.hasOwnProperty(r)&&!e.hasOwnProperty(r))return!1;if(this[r]!==e[r])return!1;i++}for(r in e)e.hasOwnProperty(r)&&n.indexOf(r)<0&&i--;return 0===i},E.API={events:[]},E.version=\"2.5.2\";var q=E.API,D=1,R=function(t){return t.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\(/g,\"\\\\(\").replace(/\\)/g,\"\\\\)\")},T=function(t){return t.replace(/\\\\\\\\/g,\"\\\\\").replace(/\\\\\\(/g,\"(\").replace(/\\\\\\)/g,\")\")},U=function(t){return t.toFixed(2)},z=function(t){return t.toFixed(5)};q.__acroform__={};var H=function(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t},W=function(t){return t*D},V=function(t){var e=new ut,r=At.internal.getHeight(t)||0,n=At.internal.getWidth(t)||0;return e.BBox=[0,0,Number(U(n)),Number(U(r))],e},G=q.__acroform__.setBit=function(t,e){if(t=t||0,e=e||0,isNaN(t)||isNaN(e))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.setBit\");return t|=1<<e},Y=q.__acroform__.clearBit=function(t,e){if(t=t||0,e=e||0,isNaN(t)||isNaN(e))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\");return t&=~(1<<e)},J=q.__acroform__.getBit=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.getBit\");return 0==(t&1<<e)?0:1},X=q.__acroform__.getBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\");return J(t,e-1)},K=q.__acroform__.setBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\");return G(t,e-1)},Z=q.__acroform__.clearBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\");return Y(t,e-1)},$=q.__acroform__.calculateCoordinates=function(t,e){var r=e.internal.getHorizontalCoordinate,n=e.internal.getVerticalCoordinate,i=t[0],a=t[1],o=t[2],s=t[3],c={};return c.lowerLeft_X=r(i)||0,c.lowerLeft_Y=n(a+s)||0,c.upperRight_X=r(i+o)||0,c.upperRight_Y=n(a)||0,[Number(U(c.lowerLeft_X)),Number(U(c.lowerLeft_Y)),Number(U(c.upperRight_X)),Number(U(c.upperRight_Y))]},Q=function(t){if(t.appearanceStreamContent)return t.appearanceStreamContent;if(t.V||t.DV){var e=[],r=t._V||t.DV,n=tt(t,r),i=t.scope.internal.getFont(t.fontName,t.fontStyle).id;e.push(\"/Tx BMC\"),e.push(\"q\"),e.push(\"BT\"),e.push(t.scope.__private__.encodeColorString(t.color)),e.push(\"/\"+i+\" \"+U(n.fontSize)+\" Tf\"),e.push(\"1 0 0 1 0 0 Tm\"),e.push(n.text),e.push(\"ET\"),e.push(\"Q\"),e.push(\"EMC\");var a=V(t);return a.scope=t.scope,a.stream=e.join(\"\\n\"),a}},tt=function(t,e){var r=0===t.fontSize?t.maxFontSize:t.fontSize,n={text:\"\",fontSize:\"\"},i=(e=\")\"==(e=\"(\"==e.substr(0,1)?e.substr(1):e).substr(e.length-1)?e.substr(0,e.length-1):e).split(\" \");i=t.multiline?i.map((function(t){return t.split(\"\\n\")})):i.map((function(t){return[t]}));var a=r,o=At.internal.getHeight(t)||0;o=o<0?-o:o;var s=At.internal.getWidth(t)||0;s=s<0?-s:s;var c=function(e,r,n){if(e+1<i.length){var a=r+\" \"+i[e+1][0];return et(a,t,n).width<=s-4}return!1};a++;t:for(;a>0;){e=\"\",a--;var u,h,l=et(\"3\",t,a).height,f=t.multiline?o-a:(o-l)/2,d=f+=2,p=0,g=0,m=0;if(a<=0){e=\"(...) Tj\\n\",e+=\"% Width of Text: \"+et(e,t,a=12).width+\", FieldWidth:\"+s+\"\\n\";break}for(var v=\"\",b=0,y=0;y<i.length;y++)if(i.hasOwnProperty(y)){var w=!1;if(1!==i[y].length&&m!==i[y].length-1){if((l+2)*(b+2)+2>o)continue t;v+=i[y][m],w=!0,g=y,y--}else{v=\" \"==(v+=i[y][m]+\" \").substr(v.length-1)?v.substr(0,v.length-1):v;var N=parseInt(y),L=c(N,v,a),A=y>=i.length-1;if(L&&!A){v+=\" \",m=0;continue}if(L||A){if(A)g=N;else if(t.multiline&&(l+2)*(b+2)+2>o)continue t}else{if(!t.multiline)continue t;if((l+2)*(b+2)+2>o)continue t;g=N}}for(var x=\"\",S=p;S<=g;S++){var _=i[S];if(t.multiline){if(S===g){x+=_[m]+\" \",m=(m+1)%_.length;continue}if(S===p){x+=_[_.length-1]+\" \";continue}}x+=_[0]+\" \"}switch(x=\" \"==x.substr(x.length-1)?x.substr(0,x.length-1):x,h=et(x,t,a).width,t.textAlign){case\"right\":u=s-h-2;break;case\"center\":u=(s-h)/2;break;case\"left\":default:u=2}e+=U(u)+\" \"+U(d)+\" Td\\n\",e+=\"(\"+R(x)+\") Tj\\n\",e+=-U(u)+\" 0 Td\\n\",d=-(a+2),h=0,p=w?g:g+1,b++,v=\"\"}else;break}return n.text=e,n.fontSize=a,n},et=function(t,e,r){var n=e.scope.internal.getFont(e.fontName,e.fontStyle),i=e.scope.getStringUnitWidth(t,{font:n,fontSize:parseFloat(r),charSpace:0})*parseFloat(r);return{height:e.scope.getStringUnitWidth(\"3\",{font:n,fontSize:parseFloat(r),charSpace:0})*parseFloat(r)*1.5,width:i}},rt={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},nt=function(t,e){var r={type:\"reference\",object:t};void 0===e.internal.getPageInfo(t.page).pageContext.annotations.find((function(t){return t.type===r.type&&t.object===r.object}))&&e.internal.getPageInfo(t.page).pageContext.annotations.push(r)},it=function(e,r){for(var n in e)if(e.hasOwnProperty(n)){var i=n,a=e[n];r.internal.newObjectDeferredBegin(a.objId,!0),\"object\"===t(a)&&\"function\"==typeof a.putStream&&a.putStream(),delete e[i]}},at=function(e,r){if(r.scope=e,void 0!==e.internal&&(void 0===e.internal.acroformPlugin||!1===e.internal.acroformPlugin.isInitialized)){if(lt.FieldNum=0,e.internal.acroformPlugin=JSON.parse(JSON.stringify(rt)),e.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error(\"Exception while creating AcroformDictionary\");D=e.internal.scaleFactor,e.internal.acroformPlugin.acroFormDictionaryRoot=new ht,e.internal.acroformPlugin.acroFormDictionaryRoot.scope=e,e.internal.acroformPlugin.acroFormDictionaryRoot._eventID=e.internal.events.subscribe(\"postPutResources\",(function(){!function(t){t.internal.events.unsubscribe(t.internal.acroformPlugin.acroFormDictionaryRoot._eventID),delete t.internal.acroformPlugin.acroFormDictionaryRoot._eventID,t.internal.acroformPlugin.printedOut=!0}(e)})),e.internal.events.subscribe(\"buildDocument\",(function(){!function(t){t.internal.acroformPlugin.acroFormDictionaryRoot.objId=void 0;var e=t.internal.acroformPlugin.acroFormDictionaryRoot.Fields;for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];n.objId=void 0,n.hasAnnotation&&nt(n,t)}}(e)})),e.internal.events.subscribe(\"putCatalog\",(function(){!function(t){if(void 0===t.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error(\"putCatalogCallback: Root missing.\");t.internal.write(\"/AcroForm \"+t.internal.acroformPlugin.acroFormDictionaryRoot.objId+\" 0 R\")}(e)})),e.internal.events.subscribe(\"postPutPages\",(function(r){!function(e,r){var n=!e;for(var i in e||(r.internal.newObjectDeferredBegin(r.internal.acroformPlugin.acroFormDictionaryRoot.objId,!0),r.internal.acroformPlugin.acroFormDictionaryRoot.putStream()),e=e||r.internal.acroformPlugin.acroFormDictionaryRoot.Kids)if(e.hasOwnProperty(i)){var a=e[i],o=[],s=a.Rect;if(a.Rect&&(a.Rect=$(a.Rect,r)),r.internal.newObjectDeferredBegin(a.objId,!0),a.DA=At.createDefaultAppearanceStream(a),\"object\"===t(a)&&\"function\"==typeof a.getKeyValueListForStream&&(o=a.getKeyValueListForStream()),a.Rect=s,a.hasAppearanceStream&&!a.appearanceStreamContent){var c=Q(a);o.push({key:\"AP\",value:\"<</N \"+c+\">>\"}),r.internal.acroformPlugin.xForms.push(c)}if(a.appearanceStreamContent){var u=\"\";for(var h in a.appearanceStreamContent)if(a.appearanceStreamContent.hasOwnProperty(h)){var l=a.appearanceStreamContent[h];if(u+=\"/\"+h+\" \",u+=\"<<\",Object.keys(l).length>=1||Array.isArray(l)){for(var i in l)if(l.hasOwnProperty(i)){var f=l[i];\"function\"==typeof f&&(f=f.call(r,a)),u+=\"/\"+i+\" \"+f+\" \",r.internal.acroformPlugin.xForms.indexOf(f)>=0||r.internal.acroformPlugin.xForms.push(f)}}else\"function\"==typeof(f=l)&&(f=f.call(r,a)),u+=\"/\"+i+\" \"+f,r.internal.acroformPlugin.xForms.indexOf(f)>=0||r.internal.acroformPlugin.xForms.push(f);u+=\">>\"}o.push({key:\"AP\",value:\"<<\\n\"+u+\">>\"})}r.internal.putStream({additionalKeyValues:o,objectId:a.objId}),r.internal.out(\"endobj\")}n&&it(r.internal.acroformPlugin.xForms,r)}(r,e)})),e.internal.acroformPlugin.isInitialized=!0}},ot=q.__acroform__.arrayToPdfArray=function(e,r,n){var i=function(t){return t};if(Array.isArray(e)){for(var a=\"[\",o=0;o<e.length;o++)switch(0!==o&&(a+=\" \"),t(e[o])){case\"boolean\":case\"number\":case\"object\":a+=e[o].toString();break;case\"string\":\"/\"!==e[o].substr(0,1)?(void 0!==r&&n&&(i=n.internal.getEncryptor(r)),a+=\"(\"+R(i(e[o].toString()))+\")\"):a+=e[o].toString()}return a+=\"]\"}throw new Error(\"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\")};var st=function(t,e,r){var n=function(t){return t};return void 0!==e&&r&&(n=r.internal.getEncryptor(e)),(t=t||\"\").toString(),t=\"(\"+R(n(t))+\")\"},ct=function(){this._objId=void 0,this._scope=void 0,Object.defineProperty(this,\"objId\",{get:function(){if(void 0===this._objId){if(void 0===this.scope)return;this._objId=this.scope.internal.newObjectDeferred()}return this._objId},set:function(t){this._objId=t}}),Object.defineProperty(this,\"scope\",{value:this._scope,writable:!0})};ct.prototype.toString=function(){return this.objId+\" 0 R\"},ct.prototype.putStream=function(){var t=this.getKeyValueListForStream();this.scope.internal.putStream({data:this.stream,additionalKeyValues:t,objectId:this.objId}),this.scope.internal.out(\"endobj\")},ct.prototype.getKeyValueListForStream=function(){var t=[],e=Object.getOwnPropertyNames(this).filter((function(t){return\"content\"!=t&&\"appearanceStreamContent\"!=t&&\"scope\"!=t&&\"objId\"!=t&&\"_\"!=t.substring(0,1)}));for(var r in e)if(!1===Object.getOwnPropertyDescriptor(this,e[r]).configurable){var n=e[r],i=this[n];i&&(Array.isArray(i)?t.push({key:n,value:ot(i,this.objId,this.scope)}):i instanceof ct?(i.scope=this.scope,t.push({key:n,value:i.objId+\" 0 R\"})):\"function\"!=typeof i&&t.push({key:n,value:i}))}return t};var ut=function(){ct.call(this),Object.defineProperty(this,\"Type\",{value:\"/XObject\",configurable:!1,writable:!0}),Object.defineProperty(this,\"Subtype\",{value:\"/Form\",configurable:!1,writable:!0}),Object.defineProperty(this,\"FormType\",{value:1,configurable:!1,writable:!0});var t,e=[];Object.defineProperty(this,\"BBox\",{configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,\"Resources\",{value:\"2 0 R\",configurable:!1,writable:!0}),Object.defineProperty(this,\"stream\",{enumerable:!1,configurable:!0,set:function(e){t=e.trim()},get:function(){return t||null}})};H(ut,ct);var ht=function(){ct.call(this);var t,e=[];Object.defineProperty(this,\"Kids\",{enumerable:!1,configurable:!0,get:function(){return e.length>0?e:void 0}}),Object.defineProperty(this,\"Fields\",{enumerable:!1,configurable:!1,get:function(){return e}}),Object.defineProperty(this,\"DA\",{enumerable:!1,configurable:!1,get:function(){if(t){var e=function(t){return t};return this.scope&&(e=this.scope.internal.getEncryptor(this.objId)),\"(\"+R(e(t))+\")\"}},set:function(e){t=e}})};H(ht,ct);var lt=function t(){ct.call(this);var e=4;Object.defineProperty(this,\"F\",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){if(isNaN(t))throw new Error('Invalid value \"'+t+'\" for attribute F supplied.');e=t}}),Object.defineProperty(this,\"showWhenPrinted\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(e,3))},set:function(t){!0===Boolean(t)?this.F=K(e,3):this.F=Z(e,3)}});var r=0;Object.defineProperty(this,\"Ff\",{enumerable:!1,configurable:!1,get:function(){return r},set:function(t){if(isNaN(t))throw new Error('Invalid value \"'+t+'\" for attribute Ff supplied.');r=t}});var n=[];Object.defineProperty(this,\"Rect\",{enumerable:!1,configurable:!1,get:function(){if(0!==n.length)return n},set:function(t){n=void 0!==t?t:[]}}),Object.defineProperty(this,\"x\",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[0])?0:n[0]},set:function(t){n[0]=t}}),Object.defineProperty(this,\"y\",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[1])?0:n[1]},set:function(t){n[1]=t}}),Object.defineProperty(this,\"width\",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[2])?0:n[2]},set:function(t){n[2]=t}}),Object.defineProperty(this,\"height\",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[3])?0:n[3]},set:function(t){n[3]=t}});var i=\"\";Object.defineProperty(this,\"FT\",{enumerable:!0,configurable:!1,get:function(){return i},set:function(t){switch(t){case\"/Btn\":case\"/Tx\":case\"/Ch\":case\"/Sig\":i=t;break;default:throw new Error('Invalid value \"'+t+'\" for attribute FT supplied.')}}});var a=null;Object.defineProperty(this,\"T\",{enumerable:!0,configurable:!1,get:function(){if(!a||a.length<1){if(this instanceof yt)return;a=\"FieldObject\"+t.FieldNum++}var e=function(t){return t};return this.scope&&(e=this.scope.internal.getEncryptor(this.objId)),\"(\"+R(e(a))+\")\"},set:function(t){a=t.toString()}}),Object.defineProperty(this,\"fieldName\",{configurable:!0,enumerable:!0,get:function(){return a},set:function(t){a=t}});var o=\"helvetica\";Object.defineProperty(this,\"fontName\",{enumerable:!0,configurable:!0,get:function(){return o},set:function(t){o=t}});var s=\"normal\";Object.defineProperty(this,\"fontStyle\",{enumerable:!0,configurable:!0,get:function(){return s},set:function(t){s=t}});var c=0;Object.defineProperty(this,\"fontSize\",{enumerable:!0,configurable:!0,get:function(){return c},set:function(t){c=t}});var u=void 0;Object.defineProperty(this,\"maxFontSize\",{enumerable:!0,configurable:!0,get:function(){return void 0===u?50/D:u},set:function(t){u=t}});var h=\"black\";Object.defineProperty(this,\"color\",{enumerable:!0,configurable:!0,get:function(){return h},set:function(t){h=t}});var l=\"/F1 0 Tf 0 g\";Object.defineProperty(this,\"DA\",{enumerable:!0,configurable:!1,get:function(){if(!(!l||this instanceof yt||this instanceof Nt))return st(l,this.objId,this.scope)},set:function(t){t=t.toString(),l=t}});var f=null;Object.defineProperty(this,\"DV\",{enumerable:!1,configurable:!1,get:function(){if(f)return this instanceof mt==!1?st(f,this.objId,this.scope):f},set:function(t){t=t.toString(),f=this instanceof mt==!1?\"(\"===t.substr(0,1)?T(t.substr(1,t.length-2)):T(t):t}}),Object.defineProperty(this,\"defaultValue\",{enumerable:!0,configurable:!0,get:function(){return this instanceof mt==!0?T(f.substr(1,f.length-1)):f},set:function(t){t=t.toString(),f=this instanceof mt==!0?\"/\"+t:t}});var d=null;Object.defineProperty(this,\"_V\",{enumerable:!1,configurable:!1,get:function(){if(d)return d},set:function(t){this.V=t}}),Object.defineProperty(this,\"V\",{enumerable:!1,configurable:!1,get:function(){if(d)return this instanceof mt==!1?st(d,this.objId,this.scope):d},set:function(t){t=t.toString(),d=this instanceof mt==!1?\"(\"===t.substr(0,1)?T(t.substr(1,t.length-2)):T(t):t}}),Object.defineProperty(this,\"value\",{enumerable:!0,configurable:!0,get:function(){return this instanceof mt==!0?T(d.substr(1,d.length-1)):d},set:function(t){t=t.toString(),d=this instanceof mt==!0?\"/\"+t:t}}),Object.defineProperty(this,\"hasAnnotation\",{enumerable:!0,configurable:!0,get:function(){return this.Rect}}),Object.defineProperty(this,\"Type\",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?\"/Annot\":null}}),Object.defineProperty(this,\"Subtype\",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?\"/Widget\":null}});var p,g=!1;Object.defineProperty(this,\"hasAppearanceStream\",{enumerable:!0,configurable:!0,get:function(){return g},set:function(t){t=Boolean(t),g=t}}),Object.defineProperty(this,\"page\",{enumerable:!0,configurable:!0,get:function(){if(p)return p},set:function(t){p=t}}),Object.defineProperty(this,\"readOnly\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,1))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,1):this.Ff=Z(this.Ff,1)}}),Object.defineProperty(this,\"required\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,2))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,2):this.Ff=Z(this.Ff,2)}}),Object.defineProperty(this,\"noExport\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,3))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,3):this.Ff=Z(this.Ff,3)}});var m=null;Object.defineProperty(this,\"Q\",{enumerable:!0,configurable:!1,get:function(){if(null!==m)return m},set:function(t){if(-1===[0,1,2].indexOf(t))throw new Error('Invalid value \"'+t+'\" for attribute Q supplied.');m=t}}),Object.defineProperty(this,\"textAlign\",{get:function(){var t;switch(m){case 0:default:t=\"left\";break;case 1:t=\"center\";break;case 2:t=\"right\"}return t},configurable:!0,enumerable:!0,set:function(t){switch(t){case\"right\":case 2:m=2;break;case\"center\":case 1:m=1;break;case\"left\":case 0:default:m=0}}})};H(lt,ct);var ft=function(){lt.call(this),this.FT=\"/Ch\",this.V=\"()\",this.fontName=\"zapfdingbats\";var t=0;Object.defineProperty(this,\"TI\",{enumerable:!0,configurable:!1,get:function(){return t},set:function(e){t=e}}),Object.defineProperty(this,\"topIndex\",{enumerable:!0,configurable:!0,get:function(){return t},set:function(e){t=e}});var e=[];Object.defineProperty(this,\"Opt\",{enumerable:!0,configurable:!1,get:function(){return ot(e,this.objId,this.scope)},set:function(t){var r,n;n=[],\"string\"==typeof(r=t)&&(n=function(t,e,r){r||(r=1);for(var n,i=[];n=e.exec(t);)i.push(n[r]);return i}(r,/\\((.*?)\\)/g)),e=n}}),this.getOptions=function(){return e},this.setOptions=function(t){e=t,this.sort&&e.sort()},this.addOption=function(t){t=(t=t||\"\").toString(),e.push(t),this.sort&&e.sort()},this.removeOption=function(t,r){for(r=r||!1,t=(t=t||\"\").toString();-1!==e.indexOf(t)&&(e.splice(e.indexOf(t),1),!1!==r););},Object.defineProperty(this,\"combo\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,18))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,18):this.Ff=Z(this.Ff,18)}}),Object.defineProperty(this,\"edit\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,19))},set:function(t){!0===this.combo&&(!0===Boolean(t)?this.Ff=K(this.Ff,19):this.Ff=Z(this.Ff,19))}}),Object.defineProperty(this,\"sort\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,20))},set:function(t){!0===Boolean(t)?(this.Ff=K(this.Ff,20),e.sort()):this.Ff=Z(this.Ff,20)}}),Object.defineProperty(this,\"multiSelect\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,22))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,22):this.Ff=Z(this.Ff,22)}}),Object.defineProperty(this,\"doNotSpellCheck\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,23):this.Ff=Z(this.Ff,23)}}),Object.defineProperty(this,\"commitOnSelChange\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,27))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,27):this.Ff=Z(this.Ff,27)}}),this.hasAppearanceStream=!1};H(ft,lt);var dt=function(){ft.call(this),this.fontName=\"helvetica\",this.combo=!1};H(dt,ft);var pt=function(){dt.call(this),this.combo=!0};H(pt,dt);var gt=function(){pt.call(this),this.edit=!0};H(gt,pt);var mt=function(){lt.call(this),this.FT=\"/Btn\",Object.defineProperty(this,\"noToggleToOff\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,15))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,15):this.Ff=Z(this.Ff,15)}}),Object.defineProperty(this,\"radio\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,16))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,16):this.Ff=Z(this.Ff,16)}}),Object.defineProperty(this,\"pushButton\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,17))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,17):this.Ff=Z(this.Ff,17)}}),Object.defineProperty(this,\"radioIsUnison\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,26):this.Ff=Z(this.Ff,26)}});var e,r={};Object.defineProperty(this,\"MK\",{enumerable:!1,configurable:!1,get:function(){var t=function(t){return t};if(this.scope&&(t=this.scope.internal.getEncryptor(this.objId)),0!==Object.keys(r).length){var e,n=[];for(e in n.push(\"<<\"),r)n.push(\"/\"+e+\" (\"+R(t(r[e]))+\")\");return n.push(\">>\"),n.join(\"\\n\")}},set:function(e){\"object\"===t(e)&&(r=e)}}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,get:function(){return r.CA||\"\"},set:function(t){\"string\"==typeof t&&(r.CA=t)}}),Object.defineProperty(this,\"AS\",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,\"appearanceState\",{enumerable:!0,configurable:!0,get:function(){return e.substr(1,e.length-1)},set:function(t){e=\"/\"+t}})};H(mt,lt);var vt=function(){mt.call(this),this.pushButton=!0};H(vt,mt);var bt=function(){mt.call(this),this.radio=!0,this.pushButton=!1;var t=[];Object.defineProperty(this,\"Kids\",{enumerable:!0,configurable:!1,get:function(){return t},set:function(e){t=void 0!==e?e:[]}})};H(bt,mt);var yt=function(){var e,r;lt.call(this),Object.defineProperty(this,\"Parent\",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,\"optionName\",{enumerable:!1,configurable:!0,get:function(){return r},set:function(t){r=t}});var n,i={};Object.defineProperty(this,\"MK\",{enumerable:!1,configurable:!1,get:function(){var t=function(t){return t};this.scope&&(t=this.scope.internal.getEncryptor(this.objId));var e,r=[];for(e in r.push(\"<<\"),i)r.push(\"/\"+e+\" (\"+R(t(i[e]))+\")\");return r.push(\">>\"),r.join(\"\\n\")},set:function(e){\"object\"===t(e)&&(i=e)}}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,get:function(){return i.CA||\"\"},set:function(t){\"string\"==typeof t&&(i.CA=t)}}),Object.defineProperty(this,\"AS\",{enumerable:!1,configurable:!1,get:function(){return n},set:function(t){n=t}}),Object.defineProperty(this,\"appearanceState\",{enumerable:!0,configurable:!0,get:function(){return n.substr(1,n.length-1)},set:function(t){n=\"/\"+t}}),this.caption=\"l\",this.appearanceState=\"Off\",this._AppearanceType=At.RadioButton.Circle,this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(this.optionName)};H(yt,lt),bt.prototype.setAppearance=function(t){if(!(\"createAppearanceStream\"in t)||!(\"getCA\"in t))throw new Error(\"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\");for(var e in this.Kids)if(this.Kids.hasOwnProperty(e)){var r=this.Kids[e];r.appearanceStreamContent=t.createAppearanceStream(r.optionName),r.caption=t.getCA()}},bt.prototype.createOption=function(t){var e=new yt;return e.Parent=this,e.optionName=t,this.Kids.push(e),xt.call(this.scope,e),e};var wt=function(){mt.call(this),this.fontName=\"zapfdingbats\",this.caption=\"3\",this.appearanceState=\"On\",this.value=\"On\",this.textAlign=\"center\",this.appearanceStreamContent=At.CheckBox.createAppearanceStream()};H(wt,mt);var Nt=function(){lt.call(this),this.FT=\"/Tx\",Object.defineProperty(this,\"multiline\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,13))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,13):this.Ff=Z(this.Ff,13)}}),Object.defineProperty(this,\"fileSelect\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,21))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,21):this.Ff=Z(this.Ff,21)}}),Object.defineProperty(this,\"doNotSpellCheck\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,23):this.Ff=Z(this.Ff,23)}}),Object.defineProperty(this,\"doNotScroll\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,24))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,24):this.Ff=Z(this.Ff,24)}}),Object.defineProperty(this,\"comb\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,25))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,25):this.Ff=Z(this.Ff,25)}}),Object.defineProperty(this,\"richText\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,26):this.Ff=Z(this.Ff,26)}});var t=null;Object.defineProperty(this,\"MaxLen\",{enumerable:!0,configurable:!1,get:function(){return t},set:function(e){t=e}}),Object.defineProperty(this,\"maxLength\",{enumerable:!0,configurable:!0,get:function(){return t},set:function(e){Number.isInteger(e)&&(t=e)}}),Object.defineProperty(this,\"hasAppearanceStream\",{enumerable:!0,configurable:!0,get:function(){return this.V||this.DV}})};H(Nt,lt);var Lt=function(){Nt.call(this),Object.defineProperty(this,\"password\",{enumerable:!0,configurable:!0,get:function(){return Boolean(X(this.Ff,14))},set:function(t){!0===Boolean(t)?this.Ff=K(this.Ff,14):this.Ff=Z(this.Ff,14)}}),this.password=!0};H(Lt,Nt);var At={CheckBox:{createAppearanceStream:function(){return{N:{On:At.CheckBox.YesNormal},D:{On:At.CheckBox.YesPushDown,Off:At.CheckBox.OffPushDown}}},YesPushDown:function(t){var e=V(t);e.scope=t.scope;var r=[],n=t.scope.internal.getFont(t.fontName,t.fontStyle).id,i=t.scope.__private__.encodeColorString(t.color),a=tt(t,t.caption);return r.push(\"0.749023 g\"),r.push(\"0 0 \"+U(At.internal.getWidth(t))+\" \"+U(At.internal.getHeight(t))+\" re\"),r.push(\"f\"),r.push(\"BMC\"),r.push(\"q\"),r.push(\"0 0 1 rg\"),r.push(\"/\"+n+\" \"+U(a.fontSize)+\" Tf \"+i),r.push(\"BT\"),r.push(a.text),r.push(\"ET\"),r.push(\"Q\"),r.push(\"EMC\"),e.stream=r.join(\"\\n\"),e},YesNormal:function(t){var e=V(t);e.scope=t.scope;var r=t.scope.internal.getFont(t.fontName,t.fontStyle).id,n=t.scope.__private__.encodeColorString(t.color),i=[],a=At.internal.getHeight(t),o=At.internal.getWidth(t),s=tt(t,t.caption);return i.push(\"1 g\"),i.push(\"0 0 \"+U(o)+\" \"+U(a)+\" re\"),i.push(\"f\"),i.push(\"q\"),i.push(\"0 0 1 rg\"),i.push(\"0 0 \"+U(o-1)+\" \"+U(a-1)+\" re\"),i.push(\"W\"),i.push(\"n\"),i.push(\"0 g\"),i.push(\"BT\"),i.push(\"/\"+r+\" \"+U(s.fontSize)+\" Tf \"+n),i.push(s.text),i.push(\"ET\"),i.push(\"Q\"),e.stream=i.join(\"\\n\"),e},OffPushDown:function(t){var e=V(t);e.scope=t.scope;var r=[];return r.push(\"0.749023 g\"),r.push(\"0 0 \"+U(At.internal.getWidth(t))+\" \"+U(At.internal.getHeight(t))+\" re\"),r.push(\"f\"),e.stream=r.join(\"\\n\"),e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:At.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=At.RadioButton.Circle.YesNormal,e.D[t]=At.RadioButton.Circle.YesPushDown,e},getCA:function(){return\"l\"},YesNormal:function(t){var e=V(t);e.scope=t.scope;var r=[],n=At.internal.getWidth(t)<=At.internal.getHeight(t)?At.internal.getWidth(t)/4:At.internal.getHeight(t)/4;n=Number((.9*n).toFixed(5));var i=At.internal.Bezier_C,a=Number((n*i).toFixed(5));return r.push(\"q\"),r.push(\"1 0 0 1 \"+z(At.internal.getWidth(t)/2)+\" \"+z(At.internal.getHeight(t)/2)+\" cm\"),r.push(n+\" 0 m\"),r.push(n+\" \"+a+\" \"+a+\" \"+n+\" 0 \"+n+\" c\"),r.push(\"-\"+a+\" \"+n+\" -\"+n+\" \"+a+\" -\"+n+\" 0 c\"),r.push(\"-\"+n+\" -\"+a+\" -\"+a+\" -\"+n+\" 0 -\"+n+\" c\"),r.push(a+\" -\"+n+\" \"+n+\" -\"+a+\" \"+n+\" 0 c\"),r.push(\"f\"),r.push(\"Q\"),e.stream=r.join(\"\\n\"),e},YesPushDown:function(t){var e=V(t);e.scope=t.scope;var r=[],n=At.internal.getWidth(t)<=At.internal.getHeight(t)?At.internal.getWidth(t)/4:At.internal.getHeight(t)/4;n=Number((.9*n).toFixed(5));var i=Number((2*n).toFixed(5)),a=Number((i*At.internal.Bezier_C).toFixed(5)),o=Number((n*At.internal.Bezier_C).toFixed(5));return r.push(\"0.749023 g\"),r.push(\"q\"),r.push(\"1 0 0 1 \"+z(At.internal.getWidth(t)/2)+\" \"+z(At.internal.getHeight(t)/2)+\" cm\"),r.push(i+\" 0 m\"),r.push(i+\" \"+a+\" \"+a+\" \"+i+\" 0 \"+i+\" c\"),r.push(\"-\"+a+\" \"+i+\" -\"+i+\" \"+a+\" -\"+i+\" 0 c\"),r.push(\"-\"+i+\" -\"+a+\" -\"+a+\" -\"+i+\" 0 -\"+i+\" c\"),r.push(a+\" -\"+i+\" \"+i+\" -\"+a+\" \"+i+\" 0 c\"),r.push(\"f\"),r.push(\"Q\"),r.push(\"0 g\"),r.push(\"q\"),r.push(\"1 0 0 1 \"+z(At.internal.getWidth(t)/2)+\" \"+z(At.internal.getHeight(t)/2)+\" cm\"),r.push(n+\" 0 m\"),r.push(n+\" \"+o+\" \"+o+\" \"+n+\" 0 \"+n+\" c\"),r.push(\"-\"+o+\" \"+n+\" -\"+n+\" \"+o+\" -\"+n+\" 0 c\"),r.push(\"-\"+n+\" -\"+o+\" -\"+o+\" -\"+n+\" 0 -\"+n+\" c\"),r.push(o+\" -\"+n+\" \"+n+\" -\"+o+\" \"+n+\" 0 c\"),r.push(\"f\"),r.push(\"Q\"),e.stream=r.join(\"\\n\"),e},OffPushDown:function(t){var e=V(t);e.scope=t.scope;var r=[],n=At.internal.getWidth(t)<=At.internal.getHeight(t)?At.internal.getWidth(t)/4:At.internal.getHeight(t)/4;n=Number((.9*n).toFixed(5));var i=Number((2*n).toFixed(5)),a=Number((i*At.internal.Bezier_C).toFixed(5));return r.push(\"0.749023 g\"),r.push(\"q\"),r.push(\"1 0 0 1 \"+z(At.internal.getWidth(t)/2)+\" \"+z(At.internal.getHeight(t)/2)+\" cm\"),r.push(i+\" 0 m\"),r.push(i+\" \"+a+\" \"+a+\" \"+i+\" 0 \"+i+\" c\"),r.push(\"-\"+a+\" \"+i+\" -\"+i+\" \"+a+\" -\"+i+\" 0 c\"),r.push(\"-\"+i+\" -\"+a+\" -\"+a+\" -\"+i+\" 0 -\"+i+\" c\"),r.push(a+\" -\"+i+\" \"+i+\" -\"+a+\" \"+i+\" 0 c\"),r.push(\"f\"),r.push(\"Q\"),e.stream=r.join(\"\\n\"),e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:At.RadioButton.Cross.OffPushDown},N:{}};return e.N[t]=At.RadioButton.Cross.YesNormal,e.D[t]=At.RadioButton.Cross.YesPushDown,e},getCA:function(){return\"8\"},YesNormal:function(t){var e=V(t);e.scope=t.scope;var r=[],n=At.internal.calculateCross(t);return r.push(\"q\"),r.push(\"1 1 \"+U(At.internal.getWidth(t)-2)+\" \"+U(At.internal.getHeight(t)-2)+\" re\"),r.push(\"W\"),r.push(\"n\"),r.push(U(n.x1.x)+\" \"+U(n.x1.y)+\" m\"),r.push(U(n.x2.x)+\" \"+U(n.x2.y)+\" l\"),r.push(U(n.x4.x)+\" \"+U(n.x4.y)+\" m\"),r.push(U(n.x3.x)+\" \"+U(n.x3.y)+\" l\"),r.push(\"s\"),r.push(\"Q\"),e.stream=r.join(\"\\n\"),e},YesPushDown:function(t){var e=V(t);e.scope=t.scope;var r=At.internal.calculateCross(t),n=[];return n.push(\"0.749023 g\"),n.push(\"0 0 \"+U(At.internal.getWidth(t))+\" \"+U(At.internal.getHeight(t))+\" re\"),n.push(\"f\"),n.push(\"q\"),n.push(\"1 1 \"+U(At.internal.getWidth(t)-2)+\" \"+U(At.internal.getHeight(t)-2)+\" re\"),n.push(\"W\"),n.push(\"n\"),n.push(U(r.x1.x)+\" \"+U(r.x1.y)+\" m\"),n.push(U(r.x2.x)+\" \"+U(r.x2.y)+\" l\"),n.push(U(r.x4.x)+\" \"+U(r.x4.y)+\" m\"),n.push(U(r.x3.x)+\" \"+U(r.x3.y)+\" l\"),n.push(\"s\"),n.push(\"Q\"),e.stream=n.join(\"\\n\"),e},OffPushDown:function(t){var e=V(t);e.scope=t.scope;var r=[];return r.push(\"0.749023 g\"),r.push(\"0 0 \"+U(At.internal.getWidth(t))+\" \"+U(At.internal.getHeight(t))+\" re\"),r.push(\"f\"),e.stream=r.join(\"\\n\"),e}}},createDefaultAppearanceStream:function(t){var e=t.scope.internal.getFont(t.fontName,t.fontStyle).id,r=t.scope.__private__.encodeColorString(t.color);return\"/\"+e+\" \"+t.fontSize+\" Tf \"+r}};At.internal={Bezier_C:.551915024494,calculateCross:function(t){var e=At.internal.getWidth(t),r=At.internal.getHeight(t),n=Math.min(e,r);return{x1:{x:(e-n)/2,y:(r-n)/2+n},x2:{x:(e-n)/2+n,y:(r-n)/2},x3:{x:(e-n)/2,y:(r-n)/2},x4:{x:(e-n)/2+n,y:(r-n)/2+n}}}},At.internal.getWidth=function(e){var r=0;return\"object\"===t(e)&&(r=W(e.Rect[2])),r},At.internal.getHeight=function(e){var r=0;return\"object\"===t(e)&&(r=W(e.Rect[3])),r};var xt=q.addField=function(t){if(at(this,t),!(t instanceof lt))throw new Error(\"Invalid argument passed to jsPDF.addField.\");var e;return(e=t).scope.internal.acroformPlugin.printedOut&&(e.scope.internal.acroformPlugin.printedOut=!1,e.scope.internal.acroformPlugin.acroFormDictionaryRoot=null),e.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e),t.page=t.scope.internal.getCurrentPageInfo().pageNumber,this};q.AcroFormChoiceField=ft,q.AcroFormListBox=dt,q.AcroFormComboBox=pt,q.AcroFormEditBox=gt,q.AcroFormButton=mt,q.AcroFormPushButton=vt,q.AcroFormRadioButton=bt,q.AcroFormCheckBox=wt,q.AcroFormTextField=Nt,q.AcroFormPasswordField=Lt,q.AcroFormAppearance=At,q.AcroForm={ChoiceField:ft,ListBox:dt,ComboBox:pt,EditBox:gt,Button:mt,PushButton:vt,RadioButton:bt,CheckBox:wt,TextField:Nt,PasswordField:Lt,Appearance:At},E.AcroForm={ChoiceField:ft,ListBox:dt,ComboBox:pt,EditBox:gt,Button:mt,PushButton:vt,RadioButton:bt,CheckBox:wt,TextField:Nt,PasswordField:Lt,Appearance:At};var St=E.AcroForm;function _t(t){return t.reduce((function(t,e,r){return t[e]=r,t}),{})}!function(e){e.__addimage__={};var r=\"UNKNOWN\",n={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0],[255,216,255,219],[255,216,255,238]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],WEBP:[[82,73,70,70,void 0,void 0,void 0,void 0,87,69,66,80]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]},i=e.__addimage__.getImageFileTypeByImageData=function(t,e){var i,a,o,s,c,u=r;if(\"RGBA\"===(e=e||r)||void 0!==t.data&&t.data instanceof Uint8ClampedArray&&\"height\"in t&&\"width\"in t)return\"RGBA\";if(x(t))for(c in n)for(o=n[c],i=0;i<o.length;i+=1){for(s=!0,a=0;a<o[i].length;a+=1)if(void 0!==o[i][a]&&o[i][a]!==t[a]){s=!1;break}if(!0===s){u=c;break}}else for(c in n)for(o=n[c],i=0;i<o.length;i+=1){for(s=!0,a=0;a<o[i].length;a+=1)if(void 0!==o[i][a]&&o[i][a]!==t.charCodeAt(a)){s=!1;break}if(!0===s){u=c;break}}return u===r&&e!==r&&(u=e),u},a=function t(e){for(var r=this.internal.write,n=this.internal.putStream,i=(0,this.internal.getFilters)();-1!==i.indexOf(\"FlateEncode\");)i.splice(i.indexOf(\"FlateEncode\"),1);e.objectId=this.internal.newObject();var a=[];if(a.push({key:\"Type\",value:\"/XObject\"}),a.push({key:\"Subtype\",value:\"/Image\"}),a.push({key:\"Width\",value:e.width}),a.push({key:\"Height\",value:e.height}),e.colorSpace===b.INDEXED?a.push({key:\"ColorSpace\",value:\"[/Indexed /DeviceRGB \"+(e.palette.length/3-1)+\" \"+(\"sMask\"in e&&void 0!==e.sMask?e.objectId+2:e.objectId+1)+\" 0 R]\"}):(a.push({key:\"ColorSpace\",value:\"/\"+e.colorSpace}),e.colorSpace===b.DEVICE_CMYK&&a.push({key:\"Decode\",value:\"[1 0 1 0 1 0 1 0]\"})),a.push({key:\"BitsPerComponent\",value:e.bitsPerComponent}),\"decodeParameters\"in e&&void 0!==e.decodeParameters&&a.push({key:\"DecodeParms\",value:\"<<\"+e.decodeParameters+\">>\"}),\"transparency\"in e&&Array.isArray(e.transparency)){for(var o=\"\",s=0,c=e.transparency.length;s<c;s++)o+=e.transparency[s]+\" \"+e.transparency[s]+\" \";a.push({key:\"Mask\",value:\"[\"+o+\"]\"})}void 0!==e.sMask&&a.push({key:\"SMask\",value:e.objectId+1+\" 0 R\"});var u=void 0!==e.filter?[\"/\"+e.filter]:void 0;if(n({data:e.data,additionalKeyValues:a,alreadyAppliedFilters:u,objectId:e.objectId}),r(\"endobj\"),\"sMask\"in e&&void 0!==e.sMask){var h=\"/Predictor \"+e.predictor+\" /Colors 1 /BitsPerComponent \"+e.bitsPerComponent+\" /Columns \"+e.width,l={width:e.width,height:e.height,colorSpace:\"DeviceGray\",bitsPerComponent:e.bitsPerComponent,decodeParameters:h,data:e.sMask};\"filter\"in e&&(l.filter=e.filter),t.call(this,l)}if(e.colorSpace===b.INDEXED){var f=this.internal.newObject();n({data:_(new Uint8Array(e.palette)),objectId:f}),r(\"endobj\")}},o=function(){var t=this.internal.collections.addImage_images;for(var e in t)a.call(this,t[e])},s=function(){var t,e=this.internal.collections.addImage_images,r=this.internal.write;for(var n in e)r(\"/I\"+(t=e[n]).index,t.objectId,\"0\",\"R\")},c=function(){this.internal.collections.addImage_images||(this.internal.collections.addImage_images={},this.internal.events.subscribe(\"putResources\",o),this.internal.events.subscribe(\"putXobjectDict\",s))},h=function(){var t=this.internal.collections.addImage_images;return c.call(this),t},l=function(){return Object.keys(this.internal.collections.addImage_images).length},f=function(t){return\"function\"==typeof e[\"process\"+t.toUpperCase()]},d=function(e){return\"object\"===t(e)&&1===e.nodeType},p=function(t,r){if(\"IMG\"===t.nodeName&&t.hasAttribute(\"src\")){var n=\"\"+t.getAttribute(\"src\");if(0===n.indexOf(\"data:image/\"))return u(unescape(n).split(\"base64,\").pop());var i=e.loadFile(n,!0);if(void 0!==i)return i}if(\"CANVAS\"===t.nodeName){if(0===t.width||0===t.height)throw new Error(\"Given canvas must have data. Canvas width: \"+t.width+\", height: \"+t.height);var a;switch(r){case\"PNG\":a=\"image/png\";break;case\"WEBP\":a=\"image/webp\";break;case\"JPEG\":case\"JPG\":default:a=\"image/jpeg\"}return u(t.toDataURL(a,1).split(\"base64,\").pop())}},g=function(t){var e=this.internal.collections.addImage_images;if(e)for(var r in e)if(t===e[r].alias)return e[r]},m=function(t,e,r){return t||e||(t=-96,e=-96),t<0&&(t=-1*r.width*72/t/this.internal.scaleFactor),e<0&&(e=-1*r.height*72/e/this.internal.scaleFactor),0===t&&(t=e*r.width/r.height),0===e&&(e=t*r.height/r.width),[t,e]},v=function(t,e,r,n,i,a){var o=m.call(this,r,n,i),s=this.internal.getCoordinateString,c=this.internal.getVerticalCoordinateString,u=h.call(this);if(r=o[0],n=o[1],u[i.index]=i,a){a*=Math.PI/180;var l=Math.cos(a),f=Math.sin(a),d=function(t){return t.toFixed(4)},p=[d(l),d(f),d(-1*f),d(l),0,0,\"cm\"]}this.internal.write(\"q\"),a?(this.internal.write([1,\"0\",\"0\",1,s(t),c(e+n),\"cm\"].join(\" \")),this.internal.write(p.join(\" \")),this.internal.write([s(r),\"0\",\"0\",s(n),\"0\",\"0\",\"cm\"].join(\" \"))):this.internal.write([s(r),\"0\",\"0\",s(n),s(t),c(e+n),\"cm\"].join(\" \")),this.isAdvancedAPI()&&this.internal.write([1,0,0,-1,0,0,\"cm\"].join(\" \")),this.internal.write(\"/I\"+i.index+\" Do\"),this.internal.write(\"Q\")},b=e.color_spaces={DEVICE_RGB:\"DeviceRGB\",DEVICE_GRAY:\"DeviceGray\",DEVICE_CMYK:\"DeviceCMYK\",CAL_GREY:\"CalGray\",CAL_RGB:\"CalRGB\",LAB:\"Lab\",ICC_BASED:\"ICCBased\",INDEXED:\"Indexed\",PATTERN:\"Pattern\",SEPARATION:\"Separation\",DEVICE_N:\"DeviceN\"};e.decode={DCT_DECODE:\"DCTDecode\",FLATE_DECODE:\"FlateDecode\",LZW_DECODE:\"LZWDecode\",JPX_DECODE:\"JPXDecode\",JBIG2_DECODE:\"JBIG2Decode\",ASCII85_DECODE:\"ASCII85Decode\",ASCII_HEX_DECODE:\"ASCIIHexDecode\",RUN_LENGTH_DECODE:\"RunLengthDecode\",CCITT_FAX_DECODE:\"CCITTFaxDecode\"};var y=e.image_compression={NONE:\"NONE\",FAST:\"FAST\",MEDIUM:\"MEDIUM\",SLOW:\"SLOW\"},w=e.__addimage__.sHashCode=function(t){var e,r,n=0;if(\"string\"==typeof t)for(r=t.length,e=0;e<r;e++)n=(n<<5)-n+t.charCodeAt(e),n|=0;else if(x(t))for(r=t.byteLength/2,e=0;e<r;e++)n=(n<<5)-n+t[e],n|=0;return n},N=e.__addimage__.validateStringAsBase64=function(t){(t=t||\"\").toString().trim();var e=!0;return 0===t.length&&(e=!1),t.length%4!=0&&(e=!1),!1===/^[A-Za-z0-9+/]+$/.test(t.substr(0,t.length-2))&&(e=!1),!1===/^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(t.substr(-2))&&(e=!1),e},L=e.__addimage__.extractImageFromDataUrl=function(t){var e=(t=t||\"\").split(\"base64,\"),r=null;if(2===e.length){var n=/^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(e[0]);Array.isArray(n)&&(r={mimeType:n[1],charset:n[2],data:e[1]})}return r},A=e.__addimage__.supportsArrayBuffer=function(){return\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array};e.__addimage__.isArrayBuffer=function(t){return A()&&t instanceof ArrayBuffer};var x=e.__addimage__.isArrayBufferView=function(t){return A()&&\"undefined\"!=typeof Uint32Array&&(t instanceof Int8Array||t instanceof Uint8Array||\"undefined\"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)},S=e.__addimage__.binaryStringToUint8Array=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++)r[n]=t.charCodeAt(n);return r},_=e.__addimage__.arrayBufferToBinaryString=function(t){for(var e=\"\",r=x(t)?t:new Uint8Array(t),n=0;n<r.length;n+=8192)e+=String.fromCharCode.apply(null,r.subarray(n,n+8192));return e};e.addImage=function(){var e,n,i,a,o,s,u,h,l;if(\"number\"==typeof arguments[1]?(n=r,i=arguments[1],a=arguments[2],o=arguments[3],s=arguments[4],u=arguments[5],h=arguments[6],l=arguments[7]):(n=arguments[1],i=arguments[2],a=arguments[3],o=arguments[4],s=arguments[5],u=arguments[6],h=arguments[7],l=arguments[8]),\"object\"===t(e=arguments[0])&&!d(e)&&\"imageData\"in e){var f=e;e=f.imageData,n=f.format||n||r,i=f.x||i||0,a=f.y||a||0,o=f.w||f.width||o,s=f.h||f.height||s,u=f.alias||u,h=f.compression||h,l=f.rotation||f.angle||l}var p=this.internal.getFilters();if(void 0===h&&-1!==p.indexOf(\"FlateEncode\")&&(h=\"SLOW\"),isNaN(i)||isNaN(a))throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");c.call(this);var g=P.call(this,e,n,u,h);return v.call(this,i,a,o,s,g,l),this};var P=function(t,n,a,o){var s,c,u;if(\"string\"==typeof t&&i(t)===r){t=unescape(t);var h=k(t,!1);(\"\"!==h||void 0!==(h=e.loadFile(t,!0)))&&(t=h)}if(d(t)&&(t=p(t,n)),n=i(t,n),!f(n))throw new Error(\"addImage does not support files of type '\"+n+\"', please ensure that a plugin for '\"+n+\"' support is added.\");if((null==(u=a)||0===u.length)&&(a=function(t){return\"string\"==typeof t||x(t)?w(t):x(t.data)?w(t.data):null}(t)),(s=g.call(this,a))||(A()&&(t instanceof Uint8Array||\"RGBA\"===n||(c=t,t=S(t))),s=this[\"process\"+n.toUpperCase()](t,l.call(this),a,function(t){return t&&\"string\"==typeof t&&(t=t.toUpperCase()),t in e.image_compression?t:y.NONE}(o),c)),!s)throw new Error(\"An unknown error occurred whilst processing the image.\");return s},k=e.__addimage__.convertBase64ToBinaryString=function(t,e){var r;e=\"boolean\"!=typeof e||e;var n,i=\"\";if(\"string\"==typeof t){n=null!==(r=L(t))?r.data:t;try{i=u(n)}catch(t){if(e)throw N(n)?new Error(\"atob-Error in jsPDF.convertBase64ToBinaryString \"+t.message):new Error(\"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \")}}return i};e.getImageProperties=function(t){var n,a,o=\"\";if(d(t)&&(t=p(t)),\"string\"==typeof t&&i(t)===r&&(\"\"===(o=k(t,!1))&&(o=e.loadFile(t)||\"\"),t=o),a=i(t),!f(a))throw new Error(\"addImage does not support files of type '\"+a+\"', please ensure that a plugin for '\"+a+\"' support is added.\");if(!A()||t instanceof Uint8Array||(t=S(t)),!(n=this[\"process\"+a.toUpperCase()](t)))throw new Error(\"An unknown error occurred whilst processing the image\");return n.fileType=a,n}}(E.API),\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e=function(t){if(void 0!==t&&\"\"!=t)return!0};E.API.events.push([\"addPage\",function(t){this.internal.getPageInfo(t.pageNumber).pageContext.annotations=[]}]),t.events.push([\"putPage\",function(t){for(var r,n,i,a=this.internal.getCoordinateString,o=this.internal.getVerticalCoordinateString,s=this.internal.getPageInfoByObjId(t.objId),c=t.pageContext.annotations,u=!1,h=0;h<c.length&&!u;h++)switch((r=c[h]).type){case\"link\":(e(r.options.url)||e(r.options.pageNumber))&&(u=!0);break;case\"reference\":case\"text\":case\"freetext\":u=!0}if(0!=u){this.internal.write(\"/Annots [\");for(var l=0;l<c.length;l++){r=c[l];var f=this.internal.pdfEscape,d=this.internal.getEncryptor(t.objId);switch(r.type){case\"reference\":this.internal.write(\" \"+r.object.objId+\" 0 R \");break;case\"text\":var p=this.internal.newAdditionalObject(),g=this.internal.newAdditionalObject(),m=this.internal.getEncryptor(p.objId),v=r.title||\"Note\";i=\"<</Type /Annot /Subtype /Text \"+(n=\"/Rect [\"+a(r.bounds.x)+\" \"+o(r.bounds.y+r.bounds.h)+\" \"+a(r.bounds.x+r.bounds.w)+\" \"+o(r.bounds.y)+\"] \")+\"/Contents (\"+f(m(r.contents))+\")\",i+=\" /Popup \"+g.objId+\" 0 R\",i+=\" /P \"+s.objId+\" 0 R\",i+=\" /T (\"+f(m(v))+\") >>\",p.content=i;var b=p.objId+\" 0 R\";i=\"<</Type /Annot /Subtype /Popup \"+(n=\"/Rect [\"+a(r.bounds.x+30)+\" \"+o(r.bounds.y+r.bounds.h)+\" \"+a(r.bounds.x+r.bounds.w+30)+\" \"+o(r.bounds.y)+\"] \")+\" /Parent \"+b,r.open&&(i+=\" /Open true\"),i+=\" >>\",g.content=i,this.internal.write(p.objId,\"0 R\",g.objId,\"0 R\");break;case\"freetext\":n=\"/Rect [\"+a(r.bounds.x)+\" \"+o(r.bounds.y)+\" \"+a(r.bounds.x+r.bounds.w)+\" \"+o(r.bounds.y+r.bounds.h)+\"] \";var y=r.color||\"#000000\";i=\"<</Type /Annot /Subtype /FreeText \"+n+\"/Contents (\"+f(d(r.contents))+\")\",i+=\" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#\"+y+\")\",i+=\" /Border [0 0 0]\",i+=\" >>\",this.internal.write(i);break;case\"link\":if(r.options.name){var w=this.annotations._nameMap[r.options.name];r.options.pageNumber=w.page,r.options.top=w.y}else r.options.top||(r.options.top=0);if(n=\"/Rect [\"+r.finalBounds.x+\" \"+r.finalBounds.y+\" \"+r.finalBounds.w+\" \"+r.finalBounds.h+\"] \",i=\"\",r.options.url)i=\"<</Type /Annot /Subtype /Link \"+n+\"/Border [0 0 0] /A <</S /URI /URI (\"+f(d(r.options.url))+\") >>\";else if(r.options.pageNumber){switch(i=\"<</Type /Annot /Subtype /Link \"+n+\"/Border [0 0 0] /Dest [\"+this.internal.getPageInfo(r.options.pageNumber).objId+\" 0 R\",r.options.magFactor=r.options.magFactor||\"XYZ\",r.options.magFactor){case\"Fit\":i+=\" /Fit]\";break;case\"FitH\":i+=\" /FitH \"+r.options.top+\"]\";break;case\"FitV\":r.options.left=r.options.left||0,i+=\" /FitV \"+r.options.left+\"]\";break;case\"XYZ\":default:var N=o(r.options.top);r.options.left=r.options.left||0,void 0===r.options.zoom&&(r.options.zoom=0),i+=\" /XYZ \"+r.options.left+\" \"+N+\" \"+r.options.zoom+\"]\"}}\"\"!=i&&(i+=\" >>\",this.internal.write(i))}}this.internal.write(\"]\")}}]),t.createAnnotation=function(t){var e=this.internal.getCurrentPageInfo();switch(t.type){case\"link\":this.link(t.bounds.x,t.bounds.y,t.bounds.w,t.bounds.h,t);break;case\"text\":case\"freetext\":e.pageContext.annotations.push(t)}},t.link=function(t,e,r,n,i){var a=this.internal.getCurrentPageInfo(),o=this.internal.getCoordinateString,s=this.internal.getVerticalCoordinateString;a.pageContext.annotations.push({finalBounds:{x:o(t),y:s(e),w:o(t+r),h:s(e+n)},options:i,type:\"link\"})},t.textWithLink=function(t,e,r,n){var i,a,o=this.getTextWidth(t),s=this.internal.getLineHeight()/this.internal.scaleFactor;if(void 0!==n.maxWidth){a=n.maxWidth;var c=this.splitTextToSize(t,a).length;i=Math.ceil(s*c)}else a=o,i=s;return this.text(t,e,r,n),r+=.2*s,\"center\"===n.align&&(e-=o/2),\"right\"===n.align&&(e-=o),this.link(e,r-s,a,i,n),o},t.getTextWidth=function(t){var e=this.internal.getFontSize();return this.getStringUnitWidth(t)*e/this.internal.scaleFactor}}(E.API),\n/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e={1569:[65152],1570:[65153,65154],1571:[65155,65156],1572:[65157,65158],1573:[65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194],1584:[65195,65196],1585:[65197,65198],1586:[65199,65200],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262],1609:[65263,65264,64488,64489],1610:[65265,65266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},r={65247:{65154:65269,65156:65271,65160:65273,65166:65275},65248:{65154:65270,65156:65272,65160:65274,65166:65276},65165:{65247:{65248:{65258:65010}}},1617:{1612:64606,1613:64607,1614:64608,1615:64609,1616:64610}},n={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},i=[1570,1571,1573,1575];t.__arabicParser__={};var a=t.__arabicParser__.isInArabicSubstitutionA=function(t){return void 0!==e[t.charCodeAt(0)]},o=t.__arabicParser__.isArabicLetter=function(t){return\"string\"==typeof t&&/^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(t)},s=t.__arabicParser__.isArabicEndLetter=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length<=2},c=t.__arabicParser__.isArabicAlfLetter=function(t){return o(t)&&i.indexOf(t.charCodeAt(0))>=0};t.__arabicParser__.arabicLetterHasIsolatedForm=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length>=1};var u=t.__arabicParser__.arabicLetterHasFinalForm=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length>=2};t.__arabicParser__.arabicLetterHasInitialForm=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length>=3};var h=t.__arabicParser__.arabicLetterHasMedialForm=function(t){return o(t)&&a(t)&&4==e[t.charCodeAt(0)].length},l=t.__arabicParser__.resolveLigatures=function(t){var e=0,n=r,i=\"\",a=0;for(e=0;e<t.length;e+=1)void 0!==n[t.charCodeAt(e)]?(a++,\"number\"==typeof(n=n[t.charCodeAt(e)])&&(i+=String.fromCharCode(n),n=r,a=0),e===t.length-1&&(n=r,i+=t.charAt(e-(a-1)),e-=a-1,a=0)):(n=r,i+=t.charAt(e-a),e-=a,a=0);return i};t.__arabicParser__.isArabicDiacritic=function(t){return void 0!==t&&void 0!==n[t.charCodeAt(0)]};var f=t.__arabicParser__.getCorrectForm=function(t,e,r){return o(t)?!1===a(t)?-1:!u(t)||!o(e)&&!o(r)||!o(r)&&s(e)||s(t)&&!o(e)||s(t)&&c(e)||s(t)&&s(e)?0:h(t)&&o(e)&&!s(e)&&o(r)&&u(r)?3:s(t)||!o(r)?1:2:-1},d=function(t){var r=0,n=0,i=0,a=\"\",s=\"\",c=\"\",u=(t=t||\"\").split(\"\\\\s+\"),h=[];for(r=0;r<u.length;r+=1){for(h.push(\"\"),n=0;n<u[r].length;n+=1)a=u[r][n],s=u[r][n-1],c=u[r][n+1],o(a)?(i=f(a,s,c),h[r]+=-1!==i?String.fromCharCode(e[a.charCodeAt(0)][i]):a):h[r]+=a;h[r]=l(h[r])}return h.join(\" \")},p=t.__arabicParser__.processArabic=t.processArabic=function(){var t,e=\"string\"==typeof arguments[0]?arguments[0]:arguments[0].text,r=[];if(Array.isArray(e)){var n=0;for(r=[],n=0;n<e.length;n+=1)Array.isArray(e[n])?r.push([d(e[n][0]),e[n][1],e[n][2]]):r.push([d(e[n])]);t=r}else t=d(e);return\"string\"==typeof arguments[0]?t:(arguments[0].text=t,arguments[0])};t.events.push([\"preProcessText\",p])}(E.API),E.API.autoPrint=function(t){var e;switch((t=t||{}).variant=t.variant||\"non-conform\",t.variant){case\"javascript\":this.addJS(\"print({});\");break;case\"non-conform\":default:this.internal.events.subscribe(\"postPutResources\",(function(){e=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/S /Named\"),this.internal.out(\"/Type /Action\"),this.internal.out(\"/N /Print\"),this.internal.out(\">>\"),this.internal.out(\"endobj\")})),this.internal.events.subscribe(\"putCatalog\",(function(){this.internal.out(\"/OpenAction \"+e+\" 0 R\")}))}return this},\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e=function(){var t=void 0;Object.defineProperty(this,\"pdf\",{get:function(){return t},set:function(e){t=e}});var e=150;Object.defineProperty(this,\"width\",{get:function(){return e},set:function(t){e=isNaN(t)||!1===Number.isInteger(t)||t<0?150:t,this.getContext(\"2d\").pageWrapXEnabled&&(this.getContext(\"2d\").pageWrapX=e+1)}});var r=300;Object.defineProperty(this,\"height\",{get:function(){return r},set:function(t){r=isNaN(t)||!1===Number.isInteger(t)||t<0?300:t,this.getContext(\"2d\").pageWrapYEnabled&&(this.getContext(\"2d\").pageWrapY=r+1)}});var n=[];Object.defineProperty(this,\"childNodes\",{get:function(){return n},set:function(t){n=t}});var i={};Object.defineProperty(this,\"style\",{get:function(){return i},set:function(t){i=t}}),Object.defineProperty(this,\"parentNode\",{})};e.prototype.getContext=function(t,e){var r;if(\"2d\"!==(t=t||\"2d\"))return null;for(r in e)this.pdf.context2d.hasOwnProperty(r)&&(this.pdf.context2d[r]=e[r]);return this.pdf.context2d._canvas=this,this.pdf.context2d},e.prototype.toDataURL=function(){throw new Error(\"toDataURL is not implemented.\")},t.events.push([\"initialized\",function(){this.canvas=new e,this.canvas.pdf=this}])}(E.API),function(e){var r={left:0,top:0,bottom:0,right:0},n=!1,i=function(){void 0===this.internal.__cell__&&(this.internal.__cell__={},this.internal.__cell__.padding=3,this.internal.__cell__.headerFunction=void 0,this.internal.__cell__.margins=Object.assign({},r),this.internal.__cell__.margins.width=this.getPageWidth(),a.call(this))},a=function(){this.internal.__cell__.lastCell=new o,this.internal.__cell__.pages=1},o=function(){var t=arguments[0];Object.defineProperty(this,\"x\",{enumerable:!0,get:function(){return t},set:function(e){t=e}});var e=arguments[1];Object.defineProperty(this,\"y\",{enumerable:!0,get:function(){return e},set:function(t){e=t}});var r=arguments[2];Object.defineProperty(this,\"width\",{enumerable:!0,get:function(){return r},set:function(t){r=t}});var n=arguments[3];Object.defineProperty(this,\"height\",{enumerable:!0,get:function(){return n},set:function(t){n=t}});var i=arguments[4];Object.defineProperty(this,\"text\",{enumerable:!0,get:function(){return i},set:function(t){i=t}});var a=arguments[5];Object.defineProperty(this,\"lineNumber\",{enumerable:!0,get:function(){return a},set:function(t){a=t}});var o=arguments[6];return Object.defineProperty(this,\"align\",{enumerable:!0,get:function(){return o},set:function(t){o=t}}),this};o.prototype.clone=function(){return new o(this.x,this.y,this.width,this.height,this.text,this.lineNumber,this.align)},o.prototype.toArray=function(){return[this.x,this.y,this.width,this.height,this.text,this.lineNumber,this.align]},e.setHeaderFunction=function(t){return i.call(this),this.internal.__cell__.headerFunction=\"function\"==typeof t?t:void 0,this},e.getTextDimensions=function(t,e){i.call(this);var r=(e=e||{}).fontSize||this.getFontSize(),n=e.font||this.getFont(),a=e.scaleFactor||this.internal.scaleFactor,o=0,s=0,c=0,u=this;if(!Array.isArray(t)&&\"string\"!=typeof t){if(\"number\"!=typeof t)throw new Error(\"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\");t=String(t)}var h=e.maxWidth;h>0?\"string\"==typeof t?t=this.splitTextToSize(t,h):\"[object Array]\"===Object.prototype.toString.call(t)&&(t=t.reduce((function(t,e){return t.concat(u.splitTextToSize(e,h))}),[])):t=Array.isArray(t)?t:[t];for(var l=0;l<t.length;l++)o<(c=this.getStringUnitWidth(t[l],{font:n})*r)&&(o=c);return 0!==o&&(s=t.length),{w:o/=a,h:Math.max((s*r*this.getLineHeightFactor()-r*(this.getLineHeightFactor()-1))/a,0)}},e.cellAddPage=function(){i.call(this),this.addPage();var t=this.internal.__cell__.margins||r;return this.internal.__cell__.lastCell=new o(t.left,t.top,void 0,void 0),this.internal.__cell__.pages+=1,this};var s=e.cell=function(){var t;t=arguments[0]instanceof o?arguments[0]:new o(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]),i.call(this);var e=this.internal.__cell__.lastCell,a=this.internal.__cell__.padding,s=this.internal.__cell__.margins||r,c=this.internal.__cell__.tableHeaderRow,u=this.internal.__cell__.printHeaders;return void 0!==e.lineNumber&&(e.lineNumber===t.lineNumber?(t.x=(e.x||0)+(e.width||0),t.y=e.y||0):e.y+e.height+t.height+s.bottom>this.getPageHeight()?(this.cellAddPage(),t.y=s.top,u&&c&&(this.printHeaderRow(t.lineNumber,!0),t.y+=c[0].height)):t.y=e.y+e.height||t.y),void 0!==t.text[0]&&(this.rect(t.x,t.y,t.width,t.height,!0===n?\"FD\":void 0),\"right\"===t.align?this.text(t.text,t.x+t.width-a,t.y+a,{align:\"right\",baseline:\"top\"}):\"center\"===t.align?this.text(t.text,t.x+t.width/2,t.y+a,{align:\"center\",baseline:\"top\",maxWidth:t.width-a-a}):this.text(t.text,t.x+a,t.y+a,{align:\"left\",baseline:\"top\",maxWidth:t.width-a-a})),this.internal.__cell__.lastCell=t,this};e.table=function(e,n,u,h,l){if(i.call(this),!u)throw new Error(\"No data for PDF table.\");var f,d,p,g,m=[],v=[],b=[],y={},w={},N=[],L=[],A=(l=l||{}).autoSize||!1,x=!1!==l.printHeaders,S=l.css&&void 0!==l.css[\"font-size\"]?16*l.css[\"font-size\"]:l.fontSize||12,_=l.margins||Object.assign({width:this.getPageWidth()},r),P=\"number\"==typeof l.padding?l.padding:3,k=l.headerBackgroundColor||\"#c8c8c8\",I=l.headerTextColor||\"#000\";if(a.call(this),this.internal.__cell__.printHeaders=x,this.internal.__cell__.margins=_,this.internal.__cell__.table_font_size=S,this.internal.__cell__.padding=P,this.internal.__cell__.headerBackgroundColor=k,this.internal.__cell__.headerTextColor=I,this.setFontSize(S),null==h)v=m=Object.keys(u[0]),b=m.map((function(){return\"left\"}));else if(Array.isArray(h)&&\"object\"===t(h[0]))for(m=h.map((function(t){return t.name})),v=h.map((function(t){return t.prompt||t.name||\"\"})),b=h.map((function(t){return t.align||\"left\"})),f=0;f<h.length;f+=1)w[h[f].name]=h[f].width*(19.049976/25.4);else Array.isArray(h)&&\"string\"==typeof h[0]&&(v=m=h,b=m.map((function(){return\"left\"})));if(A||Array.isArray(h)&&\"string\"==typeof h[0])for(f=0;f<m.length;f+=1){for(y[g=m[f]]=u.map((function(t){return t[g]})),this.setFont(void 0,\"bold\"),N.push(this.getTextDimensions(v[f],{fontSize:this.internal.__cell__.table_font_size,scaleFactor:this.internal.scaleFactor}).w),d=y[g],this.setFont(void 0,\"normal\"),p=0;p<d.length;p+=1)N.push(this.getTextDimensions(d[p],{fontSize:this.internal.__cell__.table_font_size,scaleFactor:this.internal.scaleFactor}).w);w[g]=Math.max.apply(null,N)+P+P,N=[]}if(x){var F={};for(f=0;f<m.length;f+=1)F[m[f]]={},F[m[f]].text=v[f],F[m[f]].align=b[f];var C=c.call(this,F,w);L=m.map((function(t){return new o(e,n,w[t],C,F[t].text,void 0,F[t].align)})),this.setTableHeaderRow(L),this.printHeaderRow(1,!1)}var j=h.reduce((function(t,e){return t[e.name]=e.align,t}),{});for(f=0;f<u.length;f+=1){\"rowStart\"in l&&l.rowStart instanceof Function&&l.rowStart({row:f,data:u[f]},this);var O=c.call(this,u[f],w);for(p=0;p<m.length;p+=1){var B=u[f][m[p]];\"cellStart\"in l&&l.cellStart instanceof Function&&l.cellStart({row:f,col:p,data:B},this),s.call(this,new o(e,n,w[m[p]],O,B,f+2,j[m[p]]))}}return this.internal.__cell__.table_x=e,this.internal.__cell__.table_y=n,this};var c=function(t,e){var r=this.internal.__cell__.padding,n=this.internal.__cell__.table_font_size,i=this.internal.scaleFactor;return Object.keys(t).map((function(n){var i=t[n];return this.splitTextToSize(i.hasOwnProperty(\"text\")?i.text:i,e[n]-r-r)}),this).map((function(t){return this.getLineHeightFactor()*t.length*n/i+r+r}),this).reduce((function(t,e){return Math.max(t,e)}),0)};e.setTableHeaderRow=function(t){i.call(this),this.internal.__cell__.tableHeaderRow=t},e.printHeaderRow=function(t,e){if(i.call(this),!this.internal.__cell__.tableHeaderRow)throw new Error(\"Property tableHeaderRow does not exist.\");var r;if(n=!0,\"function\"==typeof this.internal.__cell__.headerFunction){var a=this.internal.__cell__.headerFunction(this,this.internal.__cell__.pages);this.internal.__cell__.lastCell=new o(a[0],a[1],a[2],a[3],void 0,-1)}this.setFont(void 0,\"bold\");for(var c=[],u=0;u<this.internal.__cell__.tableHeaderRow.length;u+=1){r=this.internal.__cell__.tableHeaderRow[u].clone(),e&&(r.y=this.internal.__cell__.margins.top||0,c.push(r)),r.lineNumber=t;var h=this.getTextColor();this.setTextColor(this.internal.__cell__.headerTextColor),this.setFillColor(this.internal.__cell__.headerBackgroundColor),s.call(this,r),this.setTextColor(h)}c.length>0&&this.setTableHeaderRow(c),this.setFont(void 0,\"normal\"),n=!1}}(E.API);var Pt={italic:[\"italic\",\"oblique\",\"normal\"],oblique:[\"oblique\",\"italic\",\"normal\"],normal:[\"normal\",\"oblique\",\"italic\"]},kt=[\"ultra-condensed\",\"extra-condensed\",\"condensed\",\"semi-condensed\",\"normal\",\"semi-expanded\",\"expanded\",\"extra-expanded\",\"ultra-expanded\"],It=_t(kt),Ft=[100,200,300,400,500,600,700,800,900],Ct=_t(Ft);function jt(t){var e=t.family.replace(/\"|'/g,\"\").toLowerCase(),r=function(t){return Pt[t=t||\"normal\"]?t:\"normal\"}(t.style),n=function(t){if(!t)return 400;if(\"number\"==typeof t)return t>=100&&t<=900&&t%100==0?t:400;if(/^\\d00$/.test(t))return parseInt(t);switch(t){case\"bold\":return 700;case\"normal\":default:return 400}}(t.weight),i=function(t){return\"number\"==typeof It[t=t||\"normal\"]?t:\"normal\"}(t.stretch);return{family:e,style:r,weight:n,stretch:i,src:t.src||[],ref:t.ref||{name:e,style:[i,r,n].join(\" \")}}}function Ot(t,e,r,n){var i;for(i=r;i>=0&&i<e.length;i+=n)if(t[e[i]])return t[e[i]];for(i=r;i>=0&&i<e.length;i-=n)if(t[e[i]])return t[e[i]]}var Bt={\"sans-serif\":\"helvetica\",fixed:\"courier\",monospace:\"courier\",terminal:\"courier\",cursive:\"times\",fantasy:\"times\",serif:\"times\"},Mt={caption:\"times\",icon:\"times\",menu:\"times\",\"message-box\":\"times\",\"small-caption\":\"times\",\"status-bar\":\"times\"};function Et(t){return[t.stretch,t.style,t.weight,t.family].join(\" \")}function qt(t,e,r){for(var n=(r=r||{}).defaultFontFamily||\"times\",i=Object.assign({},Bt,r.genericFontFamilies||{}),a=null,o=null,s=0;s<e.length;++s)if(i[(a=jt(e[s])).family]&&(a.family=i[a.family]),t.hasOwnProperty(a.family)){o=t[a.family];break}if(!(o=o||t[n]))throw new Error(\"Could not find a font-family for the rule '\"+Et(a)+\"' and default family '\"+n+\"'.\");if(o=function(t,e){if(e[t])return e[t];var r=It[t],n=r<=It.normal?-1:1,i=Ot(e,kt,r,n);if(!i)throw new Error(\"Could not find a matching font-stretch value for \"+t);return i}(a.stretch,o),o=function(t,e){if(e[t])return e[t];for(var r=Pt[t],n=0;n<r.length;++n)if(e[r[n]])return e[r[n]];throw new Error(\"Could not find a matching font-style for \"+t)}(a.style,o),!(o=function(t,e){if(e[t])return e[t];if(400===t&&e[500])return e[500];if(500===t&&e[400])return e[400];var r=Ct[t],n=Ot(e,Ft,r,t<400?-1:1);if(!n)throw new Error(\"Could not find a matching font-weight for value \"+t);return n}(a.weight,o)))throw new Error(\"Failed to resolve a font for the rule '\"+Et(a)+\"'.\");return o}function Dt(t){return t.trimLeft()}function Rt(t,e){for(var r=0;r<t.length;){if(t.charAt(r)===e)return[t.substring(0,r),t.substring(r+1)];r+=1}return null}function Tt(t){var e=t.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);return null===e?null:[e[0],t.substring(e[0].length)]}var Ut,zt,Ht,Wt=[\"times\"];!function(e){var r,n,i,o,s,c,u,h,l,d=function(t){return t=t||{},this.isStrokeTransparent=t.isStrokeTransparent||!1,this.strokeOpacity=t.strokeOpacity||1,this.strokeStyle=t.strokeStyle||\"#000000\",this.fillStyle=t.fillStyle||\"#000000\",this.isFillTransparent=t.isFillTransparent||!1,this.fillOpacity=t.fillOpacity||1,this.font=t.font||\"10px sans-serif\",this.textBaseline=t.textBaseline||\"alphabetic\",this.textAlign=t.textAlign||\"left\",this.lineWidth=t.lineWidth||1,this.lineJoin=t.lineJoin||\"miter\",this.lineCap=t.lineCap||\"butt\",this.path=t.path||[],this.transform=void 0!==t.transform?t.transform.clone():new h,this.globalCompositeOperation=t.globalCompositeOperation||\"normal\",this.globalAlpha=t.globalAlpha||1,this.clip_path=t.clip_path||[],this.currentPoint=t.currentPoint||new c,this.miterLimit=t.miterLimit||10,this.lastPoint=t.lastPoint||new c,this.lineDashOffset=t.lineDashOffset||0,this.lineDash=t.lineDash||[],this.margin=t.margin||[0,0,0,0],this.prevPageLastElemOffset=t.prevPageLastElemOffset||0,this.ignoreClearRect=\"boolean\"!=typeof t.ignoreClearRect||t.ignoreClearRect,this};e.events.push([\"initialized\",function(){this.context2d=new p(this),r=this.internal.f2,n=this.internal.getCoordinateString,i=this.internal.getVerticalCoordinateString,o=this.internal.getHorizontalCoordinate,s=this.internal.getVerticalCoordinate,c=this.internal.Point,u=this.internal.Rectangle,h=this.internal.Matrix,l=new d}]);var p=function(t){Object.defineProperty(this,\"canvas\",{get:function(){return{parentNode:!1,style:!1}}});var e=t;Object.defineProperty(this,\"pdf\",{get:function(){return e}});var r=!1;Object.defineProperty(this,\"pageWrapXEnabled\",{get:function(){return r},set:function(t){r=Boolean(t)}});var n=!1;Object.defineProperty(this,\"pageWrapYEnabled\",{get:function(){return n},set:function(t){n=Boolean(t)}});var i=0;Object.defineProperty(this,\"posX\",{get:function(){return i},set:function(t){isNaN(t)||(i=t)}});var a=0;Object.defineProperty(this,\"posY\",{get:function(){return a},set:function(t){isNaN(t)||(a=t)}}),Object.defineProperty(this,\"margin\",{get:function(){return l.margin},set:function(t){var e;\"number\"==typeof t?e=[t,t,t,t]:((e=new Array(4))[0]=t[0],e[1]=t.length>=2?t[1]:e[0],e[2]=t.length>=3?t[2]:e[0],e[3]=t.length>=4?t[3]:e[1]),l.margin=e}});var o=!1;Object.defineProperty(this,\"autoPaging\",{get:function(){return o},set:function(t){o=t}});var s=0;Object.defineProperty(this,\"lastBreak\",{get:function(){return s},set:function(t){s=t}});var c=[];Object.defineProperty(this,\"pageBreaks\",{get:function(){return c},set:function(t){c=t}}),Object.defineProperty(this,\"ctx\",{get:function(){return l},set:function(t){t instanceof d&&(l=t)}}),Object.defineProperty(this,\"path\",{get:function(){return l.path},set:function(t){l.path=t}});var u=[];Object.defineProperty(this,\"ctxStack\",{get:function(){return u},set:function(t){u=t}}),Object.defineProperty(this,\"fillStyle\",{get:function(){return this.ctx.fillStyle},set:function(t){var e;e=g(t),this.ctx.fillStyle=e.style,this.ctx.isFillTransparent=0===e.a,this.ctx.fillOpacity=e.a,this.pdf.setFillColor(e.r,e.g,e.b,{a:e.a}),this.pdf.setTextColor(e.r,e.g,e.b,{a:e.a})}}),Object.defineProperty(this,\"strokeStyle\",{get:function(){return this.ctx.strokeStyle},set:function(t){var e=g(t);this.ctx.strokeStyle=e.style,this.ctx.isStrokeTransparent=0===e.a,this.ctx.strokeOpacity=e.a,0===e.a?this.pdf.setDrawColor(255,255,255):(e.a,this.pdf.setDrawColor(e.r,e.g,e.b))}}),Object.defineProperty(this,\"lineCap\",{get:function(){return this.ctx.lineCap},set:function(t){-1!==[\"butt\",\"round\",\"square\"].indexOf(t)&&(this.ctx.lineCap=t,this.pdf.setLineCap(t))}}),Object.defineProperty(this,\"lineWidth\",{get:function(){return this.ctx.lineWidth},set:function(t){isNaN(t)||(this.ctx.lineWidth=t,this.pdf.setLineWidth(t))}}),Object.defineProperty(this,\"lineJoin\",{get:function(){return this.ctx.lineJoin},set:function(t){-1!==[\"bevel\",\"round\",\"miter\"].indexOf(t)&&(this.ctx.lineJoin=t,this.pdf.setLineJoin(t))}}),Object.defineProperty(this,\"miterLimit\",{get:function(){return this.ctx.miterLimit},set:function(t){isNaN(t)||(this.ctx.miterLimit=t,this.pdf.setMiterLimit(t))}}),Object.defineProperty(this,\"textBaseline\",{get:function(){return this.ctx.textBaseline},set:function(t){this.ctx.textBaseline=t}}),Object.defineProperty(this,\"textAlign\",{get:function(){return this.ctx.textAlign},set:function(t){-1!==[\"right\",\"end\",\"center\",\"left\",\"start\"].indexOf(t)&&(this.ctx.textAlign=t)}});var h=null;function f(t,e){if(null===h){var r=function(t){var e=[];return Object.keys(t).forEach((function(r){t[r].forEach((function(t){var n=null;switch(t){case\"bold\":n={family:r,weight:\"bold\"};break;case\"italic\":n={family:r,style:\"italic\"};break;case\"bolditalic\":n={family:r,weight:\"bold\",style:\"italic\"};break;case\"\":case\"normal\":n={family:r}}null!==n&&(n.ref={name:r,style:t},e.push(n))}))})),e}(t.getFontList());h=function(t){for(var e={},r=0;r<t.length;++r){var n=jt(t[r]),i=n.family,a=n.stretch,o=n.style,s=n.weight;e[i]=e[i]||{},e[i][a]=e[i][a]||{},e[i][a][o]=e[i][a][o]||{},e[i][a][o][s]=n}return e}(r.concat(e))}return h}var p=null;Object.defineProperty(this,\"fontFaces\",{get:function(){return p},set:function(t){h=null,p=t}}),Object.defineProperty(this,\"font\",{get:function(){return this.ctx.font},set:function(t){var e;if(this.ctx.font=t,null!==(e=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i.exec(t))){var r=e[1],n=(e[2],e[3]),i=e[4],a=(e[5],e[6]),o=/^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(i)[2];i=\"px\"===o?Math.floor(parseFloat(i)*this.pdf.internal.scaleFactor):\"em\"===o?Math.floor(parseFloat(i)*this.pdf.getFontSize()):Math.floor(parseFloat(i)*this.pdf.internal.scaleFactor),this.pdf.setFontSize(i);var s=function(t){var e,r,n=[],i=t.trim();if(\"\"===i)return Wt;if(i in Mt)return[Mt[i]];for(;\"\"!==i;){switch(r=null,e=(i=Dt(i)).charAt(0)){case'\"':case\"'\":r=Rt(i.substring(1),e);break;default:r=Tt(i)}if(null===r)return Wt;if(n.push(r[0]),\"\"!==(i=Dt(r[1]))&&\",\"!==i.charAt(0))return Wt;i=i.replace(/^,/,\"\")}return n}(a);if(this.fontFaces){var c=qt(f(this.pdf,this.fontFaces),s.map((function(t){return{family:t,stretch:\"normal\",weight:n,style:r}})));this.pdf.setFont(c.ref.name,c.ref.style)}else{var u=\"\";(\"bold\"===n||parseInt(n,10)>=700||\"bold\"===r)&&(u=\"bold\"),\"italic\"===r&&(u+=\"italic\"),0===u.length&&(u=\"normal\");for(var h=\"\",l={arial:\"Helvetica\",Arial:\"Helvetica\",verdana:\"Helvetica\",Verdana:\"Helvetica\",helvetica:\"Helvetica\",Helvetica:\"Helvetica\",\"sans-serif\":\"Helvetica\",fixed:\"Courier\",monospace:\"Courier\",terminal:\"Courier\",cursive:\"Times\",fantasy:\"Times\",serif:\"Times\"},d=0;d<s.length;d++){if(void 0!==this.pdf.internal.getFont(s[d],u,{noFallback:!0,disableWarning:!0})){h=s[d];break}if(\"bolditalic\"===u&&void 0!==this.pdf.internal.getFont(s[d],\"bold\",{noFallback:!0,disableWarning:!0}))h=s[d],u=\"bold\";else if(void 0!==this.pdf.internal.getFont(s[d],\"normal\",{noFallback:!0,disableWarning:!0})){h=s[d],u=\"normal\";break}}if(\"\"===h)for(var p=0;p<s.length;p++)if(l[s[p]]){h=l[s[p]];break}h=\"\"===h?\"Times\":h,this.pdf.setFont(h,u)}}}}),Object.defineProperty(this,\"globalCompositeOperation\",{get:function(){return this.ctx.globalCompositeOperation},set:function(t){this.ctx.globalCompositeOperation=t}}),Object.defineProperty(this,\"globalAlpha\",{get:function(){return this.ctx.globalAlpha},set:function(t){this.ctx.globalAlpha=t}}),Object.defineProperty(this,\"lineDashOffset\",{get:function(){return this.ctx.lineDashOffset},set:function(t){this.ctx.lineDashOffset=t,T.call(this)}}),Object.defineProperty(this,\"lineDash\",{get:function(){return this.ctx.lineDash},set:function(t){this.ctx.lineDash=t,T.call(this)}}),Object.defineProperty(this,\"ignoreClearRect\",{get:function(){return this.ctx.ignoreClearRect},set:function(t){this.ctx.ignoreClearRect=Boolean(t)}})};p.prototype.setLineDash=function(t){this.lineDash=t},p.prototype.getLineDash=function(){return this.lineDash.length%2?this.lineDash.concat(this.lineDash):this.lineDash.slice()},p.prototype.fill=function(){A.call(this,\"fill\",!1)},p.prototype.stroke=function(){A.call(this,\"stroke\",!1)},p.prototype.beginPath=function(){this.path=[{type:\"begin\"}]},p.prototype.moveTo=function(t,e){if(isNaN(t)||isNaN(e))throw a.error(\"jsPDF.context2d.moveTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");var r=this.ctx.transform.applyToPoint(new c(t,e));this.path.push({type:\"mt\",x:r.x,y:r.y}),this.ctx.lastPoint=new c(t,e)},p.prototype.closePath=function(){var e=new c(0,0),r=0;for(r=this.path.length-1;-1!==r;r--)if(\"begin\"===this.path[r].type&&\"object\"===t(this.path[r+1])&&\"number\"==typeof this.path[r+1].x){e=new c(this.path[r+1].x,this.path[r+1].y);break}this.path.push({type:\"close\"}),this.ctx.lastPoint=new c(e.x,e.y)},p.prototype.lineTo=function(t,e){if(isNaN(t)||isNaN(e))throw a.error(\"jsPDF.context2d.lineTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");var r=this.ctx.transform.applyToPoint(new c(t,e));this.path.push({type:\"lt\",x:r.x,y:r.y}),this.ctx.lastPoint=new c(r.x,r.y)},p.prototype.clip=function(){this.ctx.clip_path=JSON.parse(JSON.stringify(this.path)),A.call(this,null,!0)},p.prototype.quadraticCurveTo=function(t,e,r,n){if(isNaN(r)||isNaN(n)||isNaN(t)||isNaN(e))throw a.error(\"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\");var i=this.ctx.transform.applyToPoint(new c(r,n)),o=this.ctx.transform.applyToPoint(new c(t,e));this.path.push({type:\"qct\",x1:o.x,y1:o.y,x:i.x,y:i.y}),this.ctx.lastPoint=new c(i.x,i.y)},p.prototype.bezierCurveTo=function(t,e,r,n,i,o){if(isNaN(i)||isNaN(o)||isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw a.error(\"jsPDF.context2d.bezierCurveTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\");var s=this.ctx.transform.applyToPoint(new c(i,o)),u=this.ctx.transform.applyToPoint(new c(t,e)),h=this.ctx.transform.applyToPoint(new c(r,n));this.path.push({type:\"bct\",x1:u.x,y1:u.y,x2:h.x,y2:h.y,x:s.x,y:s.y}),this.ctx.lastPoint=new c(s.x,s.y)},p.prototype.arc=function(t,e,r,n,i,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(i))throw a.error(\"jsPDF.context2d.arc: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");if(o=Boolean(o),!this.ctx.transform.isIdentity){var s=this.ctx.transform.applyToPoint(new c(t,e));t=s.x,e=s.y;var u=this.ctx.transform.applyToPoint(new c(0,r)),h=this.ctx.transform.applyToPoint(new c(0,0));r=Math.sqrt(Math.pow(u.x-h.x,2)+Math.pow(u.y-h.y,2))}Math.abs(i-n)>=2*Math.PI&&(n=0,i=2*Math.PI),this.path.push({type:\"arc\",x:t,y:e,radius:r,startAngle:n,endAngle:i,counterclockwise:o})},p.prototype.arcTo=function(t,e,r,n,i){throw new Error(\"arcTo not implemented.\")},p.prototype.rect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw a.error(\"jsPDF.context2d.rect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");this.moveTo(t,e),this.lineTo(t+r,e),this.lineTo(t+r,e+n),this.lineTo(t,e+n),this.lineTo(t,e),this.lineTo(t+r,e),this.lineTo(t,e)},p.prototype.fillRect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw a.error(\"jsPDF.context2d.fillRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");if(!m.call(this)){var i={};\"butt\"!==this.lineCap&&(i.lineCap=this.lineCap,this.lineCap=\"butt\"),\"miter\"!==this.lineJoin&&(i.lineJoin=this.lineJoin,this.lineJoin=\"miter\"),this.beginPath(),this.rect(t,e,r,n),this.fill(),i.hasOwnProperty(\"lineCap\")&&(this.lineCap=i.lineCap),i.hasOwnProperty(\"lineJoin\")&&(this.lineJoin=i.lineJoin)}},p.prototype.strokeRect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw a.error(\"jsPDF.context2d.strokeRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");v.call(this)||(this.beginPath(),this.rect(t,e,r,n),this.stroke())},p.prototype.clearRect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw a.error(\"jsPDF.context2d.clearRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");this.ignoreClearRect||(this.fillStyle=\"#ffffff\",this.fillRect(t,e,r,n))},p.prototype.save=function(t){t=\"boolean\"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,r=0;r<this.pdf.internal.getNumberOfPages();r++)this.pdf.setPage(r+1),this.pdf.internal.out(\"q\");if(this.pdf.setPage(e),t){this.ctx.fontSize=this.pdf.internal.getFontSize();var n=new d(this.ctx);this.ctxStack.push(this.ctx),this.ctx=n}},p.prototype.restore=function(t){t=\"boolean\"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,r=0;r<this.pdf.internal.getNumberOfPages();r++)this.pdf.setPage(r+1),this.pdf.internal.out(\"Q\");this.pdf.setPage(e),t&&0!==this.ctxStack.length&&(this.ctx=this.ctxStack.pop(),this.fillStyle=this.ctx.fillStyle,this.strokeStyle=this.ctx.strokeStyle,this.font=this.ctx.font,this.lineCap=this.ctx.lineCap,this.lineWidth=this.ctx.lineWidth,this.lineJoin=this.ctx.lineJoin,this.lineDash=this.ctx.lineDash,this.lineDashOffset=this.ctx.lineDashOffset)},p.prototype.toDataURL=function(){throw new Error(\"toDataUrl not implemented.\")};var g=function(t){var e,r,n,i;if(!0===t.isCanvasGradient&&(t=t.getColor()),!t)return{r:0,g:0,b:0,a:0,style:t};if(/transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/.test(t))e=0,r=0,n=0,i=0;else{var a=/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/.exec(t);if(null!==a)e=parseInt(a[1]),r=parseInt(a[2]),n=parseInt(a[3]),i=1;else if(null!==(a=/rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/.exec(t)))e=parseInt(a[1]),r=parseInt(a[2]),n=parseInt(a[3]),i=parseFloat(a[4]);else{if(i=1,\"string\"==typeof t&&\"#\"!==t.charAt(0)){var o=new f(t);t=o.ok?o.toHex():\"#000000\"}4===t.length?(e=t.substring(1,2),e+=e,r=t.substring(2,3),r+=r,n=t.substring(3,4),n+=n):(e=t.substring(1,3),r=t.substring(3,5),n=t.substring(5,7)),e=parseInt(e,16),r=parseInt(r,16),n=parseInt(n,16)}}return{r:e,g:r,b:n,a:i,style:t}},m=function(){return this.ctx.isFillTransparent||0==this.globalAlpha},v=function(){return Boolean(this.ctx.isStrokeTransparent||0==this.globalAlpha)};p.prototype.fillText=function(t,e,r,n){if(isNaN(e)||isNaN(r)||\"string\"!=typeof t)throw a.error(\"jsPDF.context2d.fillText: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");if(n=isNaN(n)?void 0:n,!m.call(this)){var i=q(this.ctx.transform.rotation),o=this.ctx.transform.scaleX;C.call(this,{text:t,x:e,y:r,scale:o,angle:i,align:this.textAlign,maxWidth:n})}},p.prototype.strokeText=function(t,e,r,n){if(isNaN(e)||isNaN(r)||\"string\"!=typeof t)throw a.error(\"jsPDF.context2d.strokeText: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");if(!v.call(this)){n=isNaN(n)?void 0:n;var i=q(this.ctx.transform.rotation),o=this.ctx.transform.scaleX;C.call(this,{text:t,x:e,y:r,scale:o,renderingMode:\"stroke\",angle:i,align:this.textAlign,maxWidth:n})}},p.prototype.measureText=function(t){if(\"string\"!=typeof t)throw a.error(\"jsPDF.context2d.measureText: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.measureText\");var e=this.pdf,r=this.pdf.internal.scaleFactor,n=e.internal.getFontSize(),i=e.getStringUnitWidth(t)*n/e.internal.scaleFactor,o=function(t){var e=(t=t||{}).width||0;return Object.defineProperty(this,\"width\",{get:function(){return e}}),this};return new o({width:i*=Math.round(96*r/72*1e4)/1e4})},p.prototype.scale=function(t,e){if(isNaN(t)||isNaN(e))throw a.error(\"jsPDF.context2d.scale: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");var r=new h(t,0,0,e,0,0);this.ctx.transform=this.ctx.transform.multiply(r)},p.prototype.rotate=function(t){if(isNaN(t))throw a.error(\"jsPDF.context2d.rotate: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");var e=new h(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0);this.ctx.transform=this.ctx.transform.multiply(e)},p.prototype.translate=function(t,e){if(isNaN(t)||isNaN(e))throw a.error(\"jsPDF.context2d.translate: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");var r=new h(1,0,0,1,t,e);this.ctx.transform=this.ctx.transform.multiply(r)},p.prototype.transform=function(t,e,r,n,i,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(i)||isNaN(o))throw a.error(\"jsPDF.context2d.transform: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");var s=new h(t,e,r,n,i,o);this.ctx.transform=this.ctx.transform.multiply(s)},p.prototype.setTransform=function(t,e,r,n,i,a){t=isNaN(t)?1:t,e=isNaN(e)?0:e,r=isNaN(r)?0:r,n=isNaN(n)?1:n,i=isNaN(i)?0:i,a=isNaN(a)?0:a,this.ctx.transform=new h(t,e,r,n,i,a)};var b=function(){return this.margin[0]>0||this.margin[1]>0||this.margin[2]>0||this.margin[3]>0};p.prototype.drawImage=function(t,e,r,n,i,a,o,s,c){var l=this.pdf.getImageProperties(t),f=1,d=1,p=1,g=1;void 0!==n&&void 0!==s&&(p=s/n,g=c/i,f=l.width/n*s/n,d=l.height/i*c/i),void 0===a&&(a=e,o=r,e=0,r=0),void 0!==n&&void 0===s&&(s=n,c=i),void 0===n&&void 0===s&&(s=l.width,c=l.height);for(var m,v=this.ctx.transform.decompose(),w=q(v.rotate.shx),A=new h,S=(A=(A=(A=A.multiply(v.translate)).multiply(v.skew)).multiply(v.scale)).applyToRectangle(new u(a-e*p,o-r*g,n*f,i*d)),_=y.call(this,S),P=[],k=0;k<_.length;k+=1)-1===P.indexOf(_[k])&&P.push(_[k]);if(L(P),this.autoPaging)for(var I=P[0],F=P[P.length-1],C=I;C<F+1;C++){this.pdf.setPage(C);var j=this.pdf.internal.pageSize.width-this.margin[3]-this.margin[1],O=1===C?this.posY+this.margin[0]:this.margin[0],B=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],M=this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2],E=1===C?0:B+(C-2)*M;if(0!==this.ctx.clip_path.length){var D=this.path;m=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(m,this.posX+this.margin[3],-E+O+this.ctx.prevPageLastElemOffset),x.call(this,\"fill\",!0),this.path=D}var R=JSON.parse(JSON.stringify(S));R=N([R],this.posX+this.margin[3],-E+O+this.ctx.prevPageLastElemOffset)[0];var T=(C>I||C<F)&&b.call(this);T&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],j,M,null).clip().discardPath()),this.pdf.addImage(t,\"JPEG\",R.x,R.y,R.w,R.h,null,null,w),T&&this.pdf.restoreGraphicsState()}else this.pdf.addImage(t,\"JPEG\",S.x,S.y,S.w,S.h,null,null,w)};var y=function(t,e,r){var n=[];e=e||this.pdf.internal.pageSize.width,r=r||this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2];var i=this.posY+this.ctx.prevPageLastElemOffset;switch(t.type){default:case\"mt\":case\"lt\":n.push(Math.floor((t.y+i)/r)+1);break;case\"arc\":n.push(Math.floor((t.y+i-t.radius)/r)+1),n.push(Math.floor((t.y+i+t.radius)/r)+1);break;case\"qct\":var a=D(this.ctx.lastPoint.x,this.ctx.lastPoint.y,t.x1,t.y1,t.x,t.y);n.push(Math.floor((a.y+i)/r)+1),n.push(Math.floor((a.y+a.h+i)/r)+1);break;case\"bct\":var o=R(this.ctx.lastPoint.x,this.ctx.lastPoint.y,t.x1,t.y1,t.x2,t.y2,t.x,t.y);n.push(Math.floor((o.y+i)/r)+1),n.push(Math.floor((o.y+o.h+i)/r)+1);break;case\"rect\":n.push(Math.floor((t.y+i)/r)+1),n.push(Math.floor((t.y+t.h+i)/r)+1)}for(var s=0;s<n.length;s+=1)for(;this.pdf.internal.getNumberOfPages()<n[s];)w.call(this);return n},w=function(){var t=this.fillStyle,e=this.strokeStyle,r=this.font,n=this.lineCap,i=this.lineWidth,a=this.lineJoin;this.pdf.addPage(),this.fillStyle=t,this.strokeStyle=e,this.font=r,this.lineCap=n,this.lineWidth=i,this.lineJoin=a},N=function(t,e,r){for(var n=0;n<t.length;n++)switch(t[n].type){case\"bct\":t[n].x2+=e,t[n].y2+=r;case\"qct\":t[n].x1+=e,t[n].y1+=r;case\"mt\":case\"lt\":case\"arc\":default:t[n].x+=e,t[n].y+=r}return t},L=function(t){return t.sort((function(t,e){return t-e}))},A=function(t,e){for(var r,n,i=this.fillStyle,a=this.strokeStyle,o=this.lineCap,s=this.lineWidth,c=Math.abs(s*this.ctx.transform.scaleX),u=this.lineJoin,h=JSON.parse(JSON.stringify(this.path)),l=JSON.parse(JSON.stringify(this.path)),f=[],d=0;d<l.length;d++)if(void 0!==l[d].x)for(var p=y.call(this,l[d]),g=0;g<p.length;g+=1)-1===f.indexOf(p[g])&&f.push(p[g]);for(var m=0;m<f.length;m++)for(;this.pdf.internal.getNumberOfPages()<f[m];)w.call(this);if(L(f),this.autoPaging)for(var v=f[0],A=f[f.length-1],S=v;S<A+1;S++){this.pdf.setPage(S),this.fillStyle=i,this.strokeStyle=a,this.lineCap=o,this.lineWidth=c,this.lineJoin=u;var _=this.pdf.internal.pageSize.width-this.margin[3]-this.margin[1],P=1===S?this.posY+this.margin[0]:this.margin[0],k=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],I=this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2],F=1===S?0:k+(S-2)*I;if(0!==this.ctx.clip_path.length){var C=this.path;r=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(r,this.posX+this.margin[3],-F+P+this.ctx.prevPageLastElemOffset),x.call(this,t,!0),this.path=C}if(n=JSON.parse(JSON.stringify(h)),this.path=N(n,this.posX+this.margin[3],-F+P+this.ctx.prevPageLastElemOffset),!1===e||0===S){var j=(S>v||S<A)&&b.call(this);j&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],_,I,null).clip().discardPath()),x.call(this,t,e),j&&this.pdf.restoreGraphicsState()}this.lineWidth=s}else this.lineWidth=c,x.call(this,t,e),this.lineWidth=s;this.path=h},x=function(t,e){if((\"stroke\"!==t||e||!v.call(this))&&(\"stroke\"===t||e||!m.call(this))){for(var r,n,i=[],a=this.path,o=0;o<a.length;o++){var s=a[o];switch(s.type){case\"begin\":i.push({begin:!0});break;case\"close\":i.push({close:!0});break;case\"mt\":i.push({start:s,deltas:[],abs:[]});break;case\"lt\":var c=i.length;if(a[o-1]&&!isNaN(a[o-1].x)&&(r=[s.x-a[o-1].x,s.y-a[o-1].y],c>0))for(;c>=0;c--)if(!0!==i[c-1].close&&!0!==i[c-1].begin){i[c-1].deltas.push(r),i[c-1].abs.push(s);break}break;case\"bct\":r=[s.x1-a[o-1].x,s.y1-a[o-1].y,s.x2-a[o-1].x,s.y2-a[o-1].y,s.x-a[o-1].x,s.y-a[o-1].y],i[i.length-1].deltas.push(r);break;case\"qct\":var u=a[o-1].x+2/3*(s.x1-a[o-1].x),h=a[o-1].y+2/3*(s.y1-a[o-1].y),l=s.x+2/3*(s.x1-s.x),f=s.y+2/3*(s.y1-s.y),d=s.x,p=s.y;r=[u-a[o-1].x,h-a[o-1].y,l-a[o-1].x,f-a[o-1].y,d-a[o-1].x,p-a[o-1].y],i[i.length-1].deltas.push(r);break;case\"arc\":i.push({deltas:[],abs:[],arc:!0}),Array.isArray(i[i.length-1].abs)&&i[i.length-1].abs.push(s)}}n=e?null:\"stroke\"===t?\"stroke\":\"fill\";for(var g=!1,b=0;b<i.length;b++)if(i[b].arc)for(var y=i[b].abs,w=0;w<y.length;w++){var N=y[w];\"arc\"===N.type?P.call(this,N.x,N.y,N.radius,N.startAngle,N.endAngle,N.counterclockwise,void 0,e,!g):j.call(this,N.x,N.y),g=!0}else if(!0===i[b].close)this.pdf.internal.out(\"h\"),g=!1;else if(!0!==i[b].begin){var L=i[b].start.x,A=i[b].start.y;O.call(this,i[b].deltas,L,A),g=!0}n&&k.call(this,n),e&&I.call(this)}},S=function(t){var e=this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor,r=e*(this.pdf.internal.getLineHeightFactor()-1);switch(this.ctx.textBaseline){case\"bottom\":return t-r;case\"top\":return t+e-r;case\"hanging\":return t+e-2*r;case\"middle\":return t+e/2-r;case\"ideographic\":return t;case\"alphabetic\":default:return t}},_=function(t){return t+this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor*(this.pdf.internal.getLineHeightFactor()-1)};p.prototype.createLinearGradient=function(){var t=function(){};return t.colorStops=[],t.addColorStop=function(t,e){this.colorStops.push([t,e])},t.getColor=function(){return 0===this.colorStops.length?\"#000000\":this.colorStops[0][1]},t.isCanvasGradient=!0,t},p.prototype.createPattern=function(){return this.createLinearGradient()},p.prototype.createRadialGradient=function(){return this.createLinearGradient()};var P=function(t,e,r,n,i,a,o,s,c){for(var u=M.call(this,r,n,i,a),h=0;h<u.length;h++){var l=u[h];0===h&&(c?F.call(this,l.x1+t,l.y1+e):j.call(this,l.x1+t,l.y1+e)),B.call(this,t,e,l.x2,l.y2,l.x3,l.y3,l.x4,l.y4)}s?I.call(this):k.call(this,o)},k=function(t){switch(t){case\"stroke\":this.pdf.internal.out(\"S\");break;case\"fill\":this.pdf.internal.out(\"f\")}},I=function(){this.pdf.clip(),this.pdf.discardPath()},F=function(t,e){this.pdf.internal.out(n(t)+\" \"+i(e)+\" m\")},C=function(t){var e;switch(t.align){case\"right\":case\"end\":e=\"right\";break;case\"center\":e=\"center\";break;case\"left\":case\"start\":default:e=\"left\"}var r=this.pdf.getTextDimensions(t.text),n=S.call(this,t.y),i=_.call(this,n)-r.h,a=this.ctx.transform.applyToPoint(new c(t.x,n)),o=this.ctx.transform.decompose(),s=new h;s=(s=(s=s.multiply(o.translate)).multiply(o.skew)).multiply(o.scale);for(var l,f,d,p=this.ctx.transform.applyToRectangle(new u(t.x,n,r.w,r.h)),g=s.applyToRectangle(new u(t.x,i,r.w,r.h)),m=y.call(this,g),v=[],w=0;w<m.length;w+=1)-1===v.indexOf(m[w])&&v.push(m[w]);if(L(v),this.autoPaging)for(var A=v[0],P=v[v.length-1],k=A;k<P+1;k++){this.pdf.setPage(k);var I=1===k?this.posY+this.margin[0]:this.margin[0],F=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],C=this.pdf.internal.pageSize.height-this.margin[2],j=C-this.margin[0],O=this.pdf.internal.pageSize.width-this.margin[1],B=O-this.margin[3],M=1===k?0:F+(k-2)*j;if(0!==this.ctx.clip_path.length){var E=this.path;l=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(l,this.posX+this.margin[3],-1*M+I),x.call(this,\"fill\",!0),this.path=E}var q=N([JSON.parse(JSON.stringify(g))],this.posX+this.margin[3],-M+I+this.ctx.prevPageLastElemOffset)[0];t.scale>=.01&&(f=this.pdf.internal.getFontSize(),this.pdf.setFontSize(f*t.scale),d=this.lineWidth,this.lineWidth=d*t.scale);var D=\"text\"!==this.autoPaging;if(D||q.y+q.h<=C){if(D||q.y>=I&&q.x<=O){var R=D?t.text:this.pdf.splitTextToSize(t.text,t.maxWidth||O-q.x)[0],T=N([JSON.parse(JSON.stringify(p))],this.posX+this.margin[3],-M+I+this.ctx.prevPageLastElemOffset)[0],U=D&&(k>A||k<P)&&b.call(this);U&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],B,j,null).clip().discardPath()),this.pdf.text(R,T.x,T.y,{angle:t.angle,align:e,renderingMode:t.renderingMode}),U&&this.pdf.restoreGraphicsState()}}else q.y<C&&(this.ctx.prevPageLastElemOffset+=C-q.y);t.scale>=.01&&(this.pdf.setFontSize(f),this.lineWidth=d)}else t.scale>=.01&&(f=this.pdf.internal.getFontSize(),this.pdf.setFontSize(f*t.scale),d=this.lineWidth,this.lineWidth=d*t.scale),this.pdf.text(t.text,a.x+this.posX,a.y+this.posY,{angle:t.angle,align:e,renderingMode:t.renderingMode,maxWidth:t.maxWidth}),t.scale>=.01&&(this.pdf.setFontSize(f),this.lineWidth=d)},j=function(t,e,r,a){r=r||0,a=a||0,this.pdf.internal.out(n(t+r)+\" \"+i(e+a)+\" l\")},O=function(t,e,r){return this.pdf.lines(t,e,r,null,null)},B=function(t,e,n,i,a,c,u,h){this.pdf.internal.out([r(o(n+t)),r(s(i+e)),r(o(a+t)),r(s(c+e)),r(o(u+t)),r(s(h+e)),\"c\"].join(\" \"))},M=function(t,e,r,n){for(var i=2*Math.PI,a=Math.PI/2;e>r;)e-=i;var o=Math.abs(r-e);o<i&&n&&(o=i-o);for(var s=[],c=n?-1:1,u=e;o>1e-5;){var h=u+c*Math.min(o,a);s.push(E.call(this,t,u,h)),o-=Math.abs(h-u),u=h}return s},E=function(t,e,r){var n=(r-e)/2,i=t*Math.cos(n),a=t*Math.sin(n),o=i,s=-a,c=o*o+s*s,u=c+o*i+s*a,h=4/3*(Math.sqrt(2*c*u)-u)/(o*a-s*i),l=o-h*s,f=s+h*o,d=l,p=-f,g=n+e,m=Math.cos(g),v=Math.sin(g);return{x1:t*Math.cos(e),y1:t*Math.sin(e),x2:l*m-f*v,y2:l*v+f*m,x3:d*m-p*v,y3:d*v+p*m,x4:t*Math.cos(r),y4:t*Math.sin(r)}},q=function(t){return 180*t/Math.PI},D=function(t,e,r,n,i,a){var o=t+.5*(r-t),s=e+.5*(n-e),c=i+.5*(r-i),h=a+.5*(n-a),l=Math.min(t,i,o,c),f=Math.max(t,i,o,c),d=Math.min(e,a,s,h),p=Math.max(e,a,s,h);return new u(l,d,f-l,p-d)},R=function(t,e,r,n,i,a,o,s){var c,h,l,f,d,p,g,m,v,b,y,w,N,L,A=r-t,x=n-e,S=i-r,_=a-n,P=o-i,k=s-a;for(h=0;h<41;h++)v=(g=(l=t+(c=h/40)*A)+c*((d=r+c*S)-l))+c*(d+c*(i+c*P-d)-g),b=(m=(f=e+c*x)+c*((p=n+c*_)-f))+c*(p+c*(a+c*k-p)-m),0==h?(y=v,w=b,N=v,L=b):(y=Math.min(y,v),w=Math.min(w,b),N=Math.max(N,v),L=Math.max(L,b));return new u(Math.round(y),Math.round(w),Math.round(N-y),Math.round(L-w))},T=function(){if(this.prevLineDash||this.ctx.lineDash.length||this.ctx.lineDashOffset){var t,e,r=(t=this.ctx.lineDash,e=this.ctx.lineDashOffset,JSON.stringify({lineDash:t,lineDashOffset:e}));this.prevLineDash!==r&&(this.pdf.setLineDash(this.ctx.lineDash,this.ctx.lineDashOffset),this.prevLineDash=r)}}}(E.API),\n/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var r=function(t){var e,r,n,i,a,o,s,c,u,h;for(/[^\\x00-\\xFF]/.test(t),r=[],n=0,i=(t+=e=\"\\0\\0\\0\\0\".slice(t.length%4||4)).length;i>n;n+=4)0!==(a=(t.charCodeAt(n)<<24)+(t.charCodeAt(n+1)<<16)+(t.charCodeAt(n+2)<<8)+t.charCodeAt(n+3))?(o=(a=((a=((a=((a=(a-(h=a%85))/85)-(u=a%85))/85)-(c=a%85))/85)-(s=a%85))/85)%85,r.push(o+33,s+33,c+33,u+33,h+33)):r.push(122);return function(t,e){for(var r=e;r>0;r--)t.pop()}(r,e.length),String.fromCharCode.apply(String,r)+\"~>\"},n=function(t){var e,r,n,i,a,o=String,s=\"length\",c=255,u=\"charCodeAt\",h=\"slice\",l=\"replace\";for(t[h](-2),t=t[h](0,-2)[l](/\\s/g,\"\")[l](\"z\",\"!!!!!\"),n=[],i=0,a=(t+=e=\"uuuuu\"[h](t[s]%5||5))[s];a>i;i+=5)r=52200625*(t[u](i)-33)+614125*(t[u](i+1)-33)+7225*(t[u](i+2)-33)+85*(t[u](i+3)-33)+(t[u](i+4)-33),n.push(c&r>>24,c&r>>16,c&r>>8,c&r);return function(t,e){for(var r=e;r>0;r--)t.pop()}(n,e[s]),o.fromCharCode.apply(o,n)},i=function(t){var e=new RegExp(/^([0-9A-Fa-f]{2})+$/);if(-1!==(t=t.replace(/\\s/g,\"\")).indexOf(\">\")&&(t=t.substr(0,t.indexOf(\">\"))),t.length%2&&(t+=\"0\"),!1===e.test(t))return\"\";for(var r=\"\",n=0;n<t.length;n+=2)r+=String.fromCharCode(\"0x\"+(t[n]+t[n+1]));return r},a=function(t){for(var r=new Uint8Array(t.length),n=t.length;n--;)r[n]=t.charCodeAt(n);return t=(r=e(r)).reduce((function(t,e){return t+String.fromCharCode(e)}),\"\")};t.processDataByFilters=function(t,e){var o=0,s=t||\"\",c=[];for(\"string\"==typeof(e=e||[])&&(e=[e]),o=0;o<e.length;o+=1)switch(e[o]){case\"ASCII85Decode\":case\"/ASCII85Decode\":s=n(s),c.push(\"/ASCII85Encode\");break;case\"ASCII85Encode\":case\"/ASCII85Encode\":s=r(s),c.push(\"/ASCII85Decode\");break;case\"ASCIIHexDecode\":case\"/ASCIIHexDecode\":s=i(s),c.push(\"/ASCIIHexEncode\");break;case\"ASCIIHexEncode\":case\"/ASCIIHexEncode\":s=s.split(\"\").map((function(t){return(\"0\"+t.charCodeAt().toString(16)).slice(-2)})).join(\"\")+\">\",c.push(\"/ASCIIHexDecode\");break;case\"FlateEncode\":case\"/FlateEncode\":s=a(s),c.push(\"/FlateDecode\");break;default:throw new Error('The filter: \"'+e[o]+'\" is not implemented')}return{data:s,reverseChain:c.reverse().join(\" \")}}}(E.API),\n/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){t.loadFile=function(t,e,r){return function(t,e,r){e=!1!==e,r=\"function\"==typeof r?r:function(){};var n=void 0;try{n=function(t,e,r){var n=new XMLHttpRequest,i=0,a=function(t){var e=t.length,r=[],n=String.fromCharCode;for(i=0;i<e;i+=1)r.push(n(255&t.charCodeAt(i)));return r.join(\"\")};if(n.open(\"GET\",t,!e),n.overrideMimeType(\"text/plain; charset=x-user-defined\"),!1===e&&(n.onload=function(){200===n.status?r(a(this.responseText)):r(void 0)}),n.send(null),e&&200===n.status)return a(n.responseText)}(t,e,r)}catch(t){}return n}(t,e,r)},t.loadImageFile=t.loadFile}(E.API),function(e){function r(){return(n.html2canvas?Promise.resolve(n.html2canvas):import(\"html2canvas\")).catch((function(t){return Promise.reject(new Error(\"Could not load html2canvas: \"+t))})).then((function(t){return t.default?t.default:t}))}function i(){return(n.DOMPurify?Promise.resolve(n.DOMPurify):import(\"dompurify\")).catch((function(t){return Promise.reject(new Error(\"Could not load dompurify: \"+t))})).then((function(t){return t.default?t.default:t}))}var a=function(e){var r=t(e);return\"undefined\"===r?\"undefined\":\"string\"===r||e instanceof String?\"string\":\"number\"===r||e instanceof Number?\"number\":\"function\"===r||e instanceof Function?\"function\":e&&e.constructor===Array?\"array\":e&&1===e.nodeType?\"element\":\"object\"===r?\"object\":\"unknown\"},o=function(t,e){var r=document.createElement(t);for(var n in e.className&&(r.className=e.className),e.innerHTML&&e.dompurify&&(r.innerHTML=e.dompurify.sanitize(e.innerHTML)),e.style)r.style[n]=e.style[n];return r},s=function t(e){var r=Object.assign(t.convert(Promise.resolve()),JSON.parse(JSON.stringify(t.template))),n=t.convert(Promise.resolve(),r);return n=(n=n.setProgress(1,t,1,[t])).set(e)};(s.prototype=Object.create(Promise.prototype)).constructor=s,s.convert=function(t,e){return t.__proto__=e||s.prototype,t},s.template={prop:{src:null,container:null,overlay:null,canvas:null,img:null,pdf:null,pageSize:null,callback:function(){}},progress:{val:0,state:null,n:0,stack:[]},opt:{filename:\"file.pdf\",margin:[0,0,0,0],enableLinks:!0,x:0,y:0,html2canvas:{},jsPDF:{},backgroundColor:\"transparent\"}},s.prototype.from=function(t,e){return this.then((function(){switch(e=e||function(t){switch(a(t)){case\"string\":return\"string\";case\"element\":return\"canvas\"===t.nodeName.toLowerCase()?\"canvas\":\"element\";default:return\"unknown\"}}(t)){case\"string\":return this.then(i).then((function(e){return this.set({src:o(\"div\",{innerHTML:t,dompurify:e})})}));case\"element\":return this.set({src:t});case\"canvas\":return this.set({canvas:t});case\"img\":return this.set({img:t});default:return this.error(\"Unknown source type.\")}}))},s.prototype.to=function(t){switch(t){case\"container\":return this.toContainer();case\"canvas\":return this.toCanvas();case\"img\":return this.toImg();case\"pdf\":return this.toPdf();default:return this.error(\"Invalid target.\")}},s.prototype.toContainer=function(){return this.thenList([function(){return this.prop.src||this.error(\"Cannot duplicate - no source HTML.\")},function(){return this.prop.pageSize||this.setPageSize()}]).then((function(){var t={position:\"relative\",display:\"inline-block\",width:(\"number\"!=typeof this.opt.width||isNaN(this.opt.width)||\"number\"!=typeof this.opt.windowWidth||isNaN(this.opt.windowWidth)?Math.max(this.prop.src.clientWidth,this.prop.src.scrollWidth,this.prop.src.offsetWidth):this.opt.windowWidth)+\"px\",left:0,right:0,top:0,margin:\"auto\",backgroundColor:this.opt.backgroundColor},e=function t(e,r){for(var n=3===e.nodeType?document.createTextNode(e.nodeValue):e.cloneNode(!1),i=e.firstChild;i;i=i.nextSibling)!0!==r&&1===i.nodeType&&\"SCRIPT\"===i.nodeName||n.appendChild(t(i,r));return 1===e.nodeType&&(\"CANVAS\"===e.nodeName?(n.width=e.width,n.height=e.height,n.getContext(\"2d\").drawImage(e,0,0)):\"TEXTAREA\"!==e.nodeName&&\"SELECT\"!==e.nodeName||(n.value=e.value),n.addEventListener(\"load\",(function(){n.scrollTop=e.scrollTop,n.scrollLeft=e.scrollLeft}),!0)),n}(this.prop.src,this.opt.html2canvas.javascriptEnabled);\"BODY\"===e.tagName&&(t.height=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)+\"px\"),this.prop.overlay=o(\"div\",{className:\"html2pdf__overlay\",style:{position:\"fixed\",overflow:\"hidden\",zIndex:1e3,left:\"-100000px\",right:0,bottom:0,top:0}}),this.prop.container=o(\"div\",{className:\"html2pdf__container\",style:t}),this.prop.container.appendChild(e),this.prop.container.firstChild.appendChild(o(\"div\",{style:{clear:\"both\",border:\"0 none transparent\",margin:0,padding:0,height:0}})),this.prop.container.style.float=\"none\",this.prop.overlay.appendChild(this.prop.container),document.body.appendChild(this.prop.overlay),this.prop.container.firstChild.style.position=\"relative\",this.prop.container.height=Math.max(this.prop.container.firstChild.clientHeight,this.prop.container.firstChild.scrollHeight,this.prop.container.firstChild.offsetHeight)+\"px\"}))},s.prototype.toCanvas=function(){var t=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(t).then(r).then((function(t){var e=Object.assign({},this.opt.html2canvas);return delete e.onrendered,t(this.prop.container,e)})).then((function(t){(this.opt.html2canvas.onrendered||function(){})(t),this.prop.canvas=t,document.body.removeChild(this.prop.overlay)}))},s.prototype.toContext2d=function(){var t=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(t).then(r).then((function(t){var e=this.opt.jsPDF,r=this.opt.fontFaces,n=\"number\"!=typeof this.opt.width||isNaN(this.opt.width)||\"number\"!=typeof this.opt.windowWidth||isNaN(this.opt.windowWidth)?1:this.opt.width/this.opt.windowWidth,i=Object.assign({async:!0,allowTaint:!0,scale:n,scrollX:this.opt.scrollX||0,scrollY:this.opt.scrollY||0,backgroundColor:\"#ffffff\",imageTimeout:15e3,logging:!0,proxy:null,removeContainer:!0,foreignObjectRendering:!1,useCORS:!1},this.opt.html2canvas);if(delete i.onrendered,e.context2d.autoPaging=void 0===this.opt.autoPaging||this.opt.autoPaging,e.context2d.posX=this.opt.x,e.context2d.posY=this.opt.y,e.context2d.margin=this.opt.margin,e.context2d.fontFaces=r,r)for(var a=0;a<r.length;++a){var o=r[a],s=o.src.find((function(t){return\"truetype\"===t.format}));s&&e.addFont(s.url,o.ref.name,o.ref.style)}return i.windowHeight=i.windowHeight||0,i.windowHeight=0==i.windowHeight?Math.max(this.prop.container.clientHeight,this.prop.container.scrollHeight,this.prop.container.offsetHeight):i.windowHeight,e.context2d.save(!0),t(this.prop.container,i)})).then((function(t){this.opt.jsPDF.context2d.restore(!0),(this.opt.html2canvas.onrendered||function(){})(t),this.prop.canvas=t,document.body.removeChild(this.prop.overlay)}))},s.prototype.toImg=function(){return this.thenList([function(){return this.prop.canvas||this.toCanvas()}]).then((function(){var t=this.prop.canvas.toDataURL(\"image/\"+this.opt.image.type,this.opt.image.quality);this.prop.img=document.createElement(\"img\"),this.prop.img.src=t}))},s.prototype.toPdf=function(){return this.thenList([function(){return this.toContext2d()}]).then((function(){this.prop.pdf=this.prop.pdf||this.opt.jsPDF}))},s.prototype.output=function(t,e,r){return\"img\"===(r=r||\"pdf\").toLowerCase()||\"image\"===r.toLowerCase()?this.outputImg(t,e):this.outputPdf(t,e)},s.prototype.outputPdf=function(t,e){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then((function(){return this.prop.pdf.output(t,e)}))},s.prototype.outputImg=function(t){return this.thenList([function(){return this.prop.img||this.toImg()}]).then((function(){switch(t){case void 0:case\"img\":return this.prop.img;case\"datauristring\":case\"dataurlstring\":return this.prop.img.src;case\"datauri\":case\"dataurl\":return document.location.href=this.prop.img.src;default:throw'Image output type \"'+t+'\" is not supported.'}}))},s.prototype.save=function(t){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).set(t?{filename:t}:null).then((function(){this.prop.pdf.save(this.opt.filename)}))},s.prototype.doCallback=function(){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then((function(){this.prop.callback(this.prop.pdf)}))},s.prototype.set=function(t){if(\"object\"!==a(t))return this;var e=Object.keys(t||{}).map((function(e){if(e in s.template.prop)return function(){this.prop[e]=t[e]};switch(e){case\"margin\":return this.setMargin.bind(this,t.margin);case\"jsPDF\":return function(){return this.opt.jsPDF=t.jsPDF,this.setPageSize()};case\"pageSize\":return this.setPageSize.bind(this,t.pageSize);default:return function(){this.opt[e]=t[e]}}}),this);return this.then((function(){return this.thenList(e)}))},s.prototype.get=function(t,e){return this.then((function(){var r=t in s.template.prop?this.prop[t]:this.opt[t];return e?e(r):r}))},s.prototype.setMargin=function(t){return this.then((function(){switch(a(t)){case\"number\":t=[t,t,t,t];case\"array\":if(2===t.length&&(t=[t[0],t[1],t[0],t[1]]),4===t.length)break;default:return this.error(\"Invalid margin array.\")}this.opt.margin=t})).then(this.setPageSize)},s.prototype.setPageSize=function(t){function e(t,e){return Math.floor(t*e/72*96)}return this.then((function(){(t=t||E.getPageSize(this.opt.jsPDF)).hasOwnProperty(\"inner\")||(t.inner={width:t.width-this.opt.margin[1]-this.opt.margin[3],height:t.height-this.opt.margin[0]-this.opt.margin[2]},t.inner.px={width:e(t.inner.width,t.k),height:e(t.inner.height,t.k)},t.inner.ratio=t.inner.height/t.inner.width),this.prop.pageSize=t}))},s.prototype.setProgress=function(t,e,r,n){return null!=t&&(this.progress.val=t),null!=e&&(this.progress.state=e),null!=r&&(this.progress.n=r),null!=n&&(this.progress.stack=n),this.progress.ratio=this.progress.val/this.progress.state,this},s.prototype.updateProgress=function(t,e,r,n){return this.setProgress(t?this.progress.val+t:null,e||null,r?this.progress.n+r:null,n?this.progress.stack.concat(n):null)},s.prototype.then=function(t,e){var r=this;return this.thenCore(t,e,(function(t,e){return r.updateProgress(null,null,1,[t]),Promise.prototype.then.call(this,(function(e){return r.updateProgress(null,t),e})).then(t,e).then((function(t){return r.updateProgress(1),t}))}))},s.prototype.thenCore=function(t,e,r){r=r||Promise.prototype.then;t&&(t=t.bind(this)),e&&(e=e.bind(this));var n=-1!==Promise.toString().indexOf(\"[native code]\")&&\"Promise\"===Promise.name?this:s.convert(Object.assign({},this),Promise.prototype),i=r.call(n,t,e);return s.convert(i,this.__proto__)},s.prototype.thenExternal=function(t,e){return Promise.prototype.then.call(this,t,e)},s.prototype.thenList=function(t){var e=this;return t.forEach((function(t){e=e.thenCore(t)})),e},s.prototype.catch=function(t){t&&(t=t.bind(this));var e=Promise.prototype.catch.call(this,t);return s.convert(e,this)},s.prototype.catchExternal=function(t){return Promise.prototype.catch.call(this,t)},s.prototype.error=function(t){return this.then((function(){throw new Error(t)}))},s.prototype.using=s.prototype.set,s.prototype.saveAs=s.prototype.save,s.prototype.export=s.prototype.output,s.prototype.run=s.prototype.then,E.getPageSize=function(e,r,n){if(\"object\"===t(e)){var i=e;e=i.orientation,r=i.unit||r,n=i.format||n}r=r||\"mm\",n=n||\"a4\",e=(\"\"+(e||\"P\")).toLowerCase();var a,o=(\"\"+n).toLowerCase(),s={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],\"government-letter\":[576,756],legal:[612,1008],\"junior-legal\":[576,360],ledger:[1224,792],tabloid:[792,1224],\"credit-card\":[153,243]};switch(r){case\"pt\":a=1;break;case\"mm\":a=72/25.4;break;case\"cm\":a=72/2.54;break;case\"in\":a=72;break;case\"px\":a=.75;break;case\"pc\":case\"em\":a=12;break;case\"ex\":a=6;break;default:throw\"Invalid unit: \"+r}var c,u=0,h=0;if(s.hasOwnProperty(o))u=s[o][1]/a,h=s[o][0]/a;else try{u=n[1],h=n[0]}catch(t){throw new Error(\"Invalid format: \"+n)}if(\"p\"===e||\"portrait\"===e)e=\"p\",h>u&&(c=h,h=u,u=c);else{if(\"l\"!==e&&\"landscape\"!==e)throw\"Invalid orientation: \"+e;e=\"l\",u>h&&(c=h,h=u,u=c)}return{width:h,height:u,unit:r,k:a,orientation:e}},e.html=function(t,e){(e=e||{}).callback=e.callback||function(){},e.html2canvas=e.html2canvas||{},e.html2canvas.canvas=e.html2canvas.canvas||this.canvas,e.jsPDF=e.jsPDF||this,e.fontFaces=e.fontFaces?e.fontFaces.map(jt):null;var r=new s(e);return e.worker?r:r.from(t).doCallback()}}(E.API),E.API.addJS=function(t){return Ht=t,this.internal.events.subscribe(\"postPutResources\",(function(){Ut=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/Names [(EmbeddedJS) \"+(Ut+1)+\" 0 R]\"),this.internal.out(\">>\"),this.internal.out(\"endobj\"),zt=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/S /JavaScript\"),this.internal.out(\"/JS (\"+Ht+\")\"),this.internal.out(\">>\"),this.internal.out(\"endobj\")})),this.internal.events.subscribe(\"putCatalog\",(function(){void 0!==Ut&&void 0!==zt&&this.internal.out(\"/Names <</JavaScript \"+Ut+\" 0 R>>\")})),this},\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e;t.events.push([\"postPutResources\",function(){var t=this,r=/^(\\d+) 0 obj$/;if(this.outline.root.children.length>0)for(var n=t.outline.render().split(/\\r\\n/),i=0;i<n.length;i++){var a=n[i],o=r.exec(a);if(null!=o){var s=o[1];t.internal.newObjectDeferredBegin(s,!1)}t.internal.write(a)}if(this.outline.createNamedDestinations){var c=this.internal.pages.length,u=[];for(i=0;i<c;i++){var h=t.internal.newObject();u.push(h);var l=t.internal.getPageInfo(i+1);t.internal.write(\"<< /D[\"+l.objId+\" 0 R /XYZ null null null]>> endobj\")}var f=t.internal.newObject();t.internal.write(\"<< /Names [ \");for(i=0;i<u.length;i++)t.internal.write(\"(page_\"+(i+1)+\")\"+u[i]+\" 0 R\");t.internal.write(\" ] >>\",\"endobj\"),e=t.internal.newObject(),t.internal.write(\"<< /Dests \"+f+\" 0 R\"),t.internal.write(\">>\",\"endobj\")}}]),t.events.push([\"putCatalog\",function(){this.outline.root.children.length>0&&(this.internal.write(\"/Outlines\",this.outline.makeRef(this.outline.root)),this.outline.createNamedDestinations&&this.internal.write(\"/Names \"+e+\" 0 R\"))}]),t.events.push([\"initialized\",function(){var t=this;t.outline={createNamedDestinations:!1,root:{children:[]}},t.outline.add=function(t,e,r){var n={title:e,options:r,children:[]};return null==t&&(t=this.root),t.children.push(n),n},t.outline.render=function(){return this.ctx={},this.ctx.val=\"\",this.ctx.pdf=t,this.genIds_r(this.root),this.renderRoot(this.root),this.renderItems(this.root),this.ctx.val},t.outline.genIds_r=function(e){e.id=t.internal.newObjectDeferred();for(var r=0;r<e.children.length;r++)this.genIds_r(e.children[r])},t.outline.renderRoot=function(t){this.objStart(t),this.line(\"/Type /Outlines\"),t.children.length>0&&(this.line(\"/First \"+this.makeRef(t.children[0])),this.line(\"/Last \"+this.makeRef(t.children[t.children.length-1]))),this.line(\"/Count \"+this.count_r({count:0},t)),this.objEnd()},t.outline.renderItems=function(e){for(var r=this.ctx.pdf.internal.getVerticalCoordinateString,n=0;n<e.children.length;n++){var i=e.children[n];this.objStart(i),this.line(\"/Title \"+this.makeString(i.title)),this.line(\"/Parent \"+this.makeRef(e)),n>0&&this.line(\"/Prev \"+this.makeRef(e.children[n-1])),n<e.children.length-1&&this.line(\"/Next \"+this.makeRef(e.children[n+1])),i.children.length>0&&(this.line(\"/First \"+this.makeRef(i.children[0])),this.line(\"/Last \"+this.makeRef(i.children[i.children.length-1])));var a=this.count=this.count_r({count:0},i);if(a>0&&this.line(\"/Count \"+a),i.options&&i.options.pageNumber){var o=t.internal.getPageInfo(i.options.pageNumber);this.line(\"/Dest [\"+o.objId+\" 0 R /XYZ 0 \"+r(0)+\" 0]\")}this.objEnd()}for(var s=0;s<e.children.length;s++)this.renderItems(e.children[s])},t.outline.line=function(t){this.ctx.val+=t+\"\\r\\n\"},t.outline.makeRef=function(t){return t.id+\" 0 R\"},t.outline.makeString=function(e){return\"(\"+t.internal.pdfEscape(e)+\")\"},t.outline.objStart=function(t){this.ctx.val+=\"\\r\\n\"+t.id+\" 0 obj\\r\\n<<\\r\\n\"},t.outline.objEnd=function(){this.ctx.val+=\">> \\r\\nendobj\\r\\n\"},t.outline.count_r=function(t,e){for(var r=0;r<e.children.length;r++)t.count++,this.count_r(t,e.children[r]);return t.count}}])}(E.API),\n/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e=[192,193,194,195,196,197,198,199];t.processJPEG=function(t,r,n,i,a,o){var s,c=this.decode.DCT_DECODE,u=null;if(\"string\"==typeof t||this.__addimage__.isArrayBuffer(t)||this.__addimage__.isArrayBufferView(t)){switch(t=a||t,t=this.__addimage__.isArrayBuffer(t)?new Uint8Array(t):t,(s=function(t){for(var r,n=256*t.charCodeAt(4)+t.charCodeAt(5),i=t.length,a={width:0,height:0,numcomponents:1},o=4;o<i;o+=2){if(o+=n,-1!==e.indexOf(t.charCodeAt(o+1))){r=256*t.charCodeAt(o+5)+t.charCodeAt(o+6),a={width:256*t.charCodeAt(o+7)+t.charCodeAt(o+8),height:r,numcomponents:t.charCodeAt(o+9)};break}n=256*t.charCodeAt(o+2)+t.charCodeAt(o+3)}return a}(t=this.__addimage__.isArrayBufferView(t)?this.__addimage__.arrayBufferToBinaryString(t):t)).numcomponents){case 1:o=this.color_spaces.DEVICE_GRAY;break;case 4:o=this.color_spaces.DEVICE_CMYK;break;case 3:o=this.color_spaces.DEVICE_RGB}u={data:t,width:s.width,height:s.height,colorSpace:o,bitsPerComponent:8,filter:c,index:r,alias:n}}return u}}(E.API);var Vt,Gt,Yt,Jt,Xt,Kt=function(){var t,e,i;function a(t){var e,r,n,i,a,o,s,c,u,h,l,f,d,p;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},o=null;;){switch(e=this.readUInt32(),u=function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join(\"\")){case\"IHDR\":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case\"acTL\":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case\"PLTE\":this.palette=this.read(e);break;case\"fcTL\":o&&this.animation.frames.push(o),this.pos+=4,o={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},a=this.readUInt16(),i=this.readUInt16()||100,o.delay=1e3*a/i,o.disposeOp=this.data[this.pos++],o.blendOp=this.data[this.pos++],o.data=[];break;case\"IDAT\":case\"fdAT\":for(\"fdAT\"===u&&(this.pos+=4,e-=4),t=(null!=o?o.data:void 0)||this.imgData,f=0;0<=e?f<e:f>e;0<=e?++f:--f)t.push(this.data[this.pos++]);break;case\"tRNS\":switch(this.transparency={},this.colorType){case 3:if(n=this.palette.length/3,this.transparency.indexed=this.read(e),this.transparency.indexed.length>n)throw new Error(\"More transparent colors than palette size\");if((h=n-this.transparency.indexed.length)>0)for(d=0;0<=h?d<h:d>h;0<=h?++d:--d)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case\"tEXt\":s=(l=this.read(e)).indexOf(0),c=String.fromCharCode.apply(String,l.slice(0,s)),this.text[c]=String.fromCharCode.apply(String,l.slice(s+1));break;case\"IEND\":return o&&this.animation.frames.push(o),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(p=this.colorType)||6===p,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return\"DeviceGray\";case 3:return\"DeviceRGB\"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error(\"Incomplete or corrupt PNG file\")}}a.prototype.read=function(t){var e,r;for(r=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)r.push(this.data[this.pos++]);return r},a.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},a.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},a.prototype.decodePixels=function(t){var e=this.pixelBitlength/8,n=new Uint8Array(this.width*this.height*e),i=0,a=this;if(null==t&&(t=this.imgData),0===t.length)return new Uint8Array(0);function o(r,o,s,c){var u,h,l,f,d,p,g,m,v,b,y,w,N,L,A,x,S,_,P,k,I,F=Math.ceil((a.width-r)/s),C=Math.ceil((a.height-o)/c),j=a.width==F&&a.height==C;for(L=e*F,w=j?n:new Uint8Array(L*C),p=t.length,N=0,h=0;N<C&&i<p;){switch(t[i++]){case 0:for(f=S=0;S<L;f=S+=1)w[h++]=t[i++];break;case 1:for(f=_=0;_<L;f=_+=1)u=t[i++],d=f<e?0:w[h-e],w[h++]=(u+d)%256;break;case 2:for(f=P=0;P<L;f=P+=1)u=t[i++],l=(f-f%e)/e,A=N&&w[(N-1)*L+l*e+f%e],w[h++]=(A+u)%256;break;case 3:for(f=k=0;k<L;f=k+=1)u=t[i++],l=(f-f%e)/e,d=f<e?0:w[h-e],A=N&&w[(N-1)*L+l*e+f%e],w[h++]=(u+Math.floor((d+A)/2))%256;break;case 4:for(f=I=0;I<L;f=I+=1)u=t[i++],l=(f-f%e)/e,d=f<e?0:w[h-e],0===N?A=x=0:(A=w[(N-1)*L+l*e+f%e],x=l&&w[(N-1)*L+(l-1)*e+f%e]),g=d+A-x,m=Math.abs(g-d),b=Math.abs(g-A),y=Math.abs(g-x),v=m<=b&&m<=y?d:b<=y?A:x,w[h++]=(u+v)%256;break;default:throw new Error(\"Invalid filter algorithm: \"+t[i-1])}if(!j){var O=((o+N*c)*a.width+r)*e,B=N*L;for(f=0;f<F;f+=1){for(var M=0;M<e;M+=1)n[O++]=w[B++];O+=(s-1)*e}}N++}}return t=r(t),1==a.interlaceMethod?(o(0,0,8,8),o(4,0,8,8),o(0,4,4,8),o(2,0,4,4),o(0,2,2,4),o(1,0,2,2),o(0,1,1,2)):o(0,0,1,1),n},a.prototype.decodePalette=function(){var t,e,r,n,i,a,o,s,c;for(r=this.palette,a=this.transparency.indexed||[],i=new Uint8Array((a.length||0)+r.length),n=0,t=0,e=o=0,s=r.length;o<s;e=o+=3)i[n++]=r[e],i[n++]=r[e+1],i[n++]=r[e+2],i[n++]=null!=(c=a[t++])?c:255;return i},a.prototype.copyToImageData=function(t,e){var r,n,i,a,o,s,c,u,h,l,f;if(n=this.colors,h=null,r=this.hasAlphaChannel,this.palette.length&&(h=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),n=4,r=!0),u=(i=t.data||t).length,o=h||e,a=s=0,1===n)for(;a<u;)c=h?4*e[a/4]:s,l=o[c++],i[a++]=l,i[a++]=l,i[a++]=l,i[a++]=r?o[c++]:255,s=c;else for(;a<u;)c=h?4*e[a/4]:s,i[a++]=o[c++],i[a++]=o[c++],i[a++]=o[c++],i[a++]=r?o[c++]:255,s=c},a.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4),this.copyToImageData(t,this.decodePixels()),t};var o=function(){if(\"[object Window]\"===Object.prototype.toString.call(n)){try{e=n.document.createElement(\"canvas\"),i=e.getContext(\"2d\")}catch(t){return!1}return!0}return!1};return o(),t=function(t){var r;if(!0===o())return i.width=t.width,i.height=t.height,i.clearRect(0,0,t.width,t.height),i.putImageData(t,0,0),(r=new Image).src=e.toDataURL(),r;throw new Error(\"This method requires a Browser with Canvas-capability.\")},a.prototype.decodeFrames=function(e){var r,n,i,a,o,s,c,u;if(this.animation){for(u=[],n=o=0,s=(c=this.animation.frames).length;o<s;n=++o)r=c[n],i=e.createImageData(r.width,r.height),a=this.decodePixels(new Uint8Array(r.data)),this.copyToImageData(i,a),r.imageData=i,u.push(r.image=t(i));return u}},a.prototype.renderFrame=function(t,e){var r,n,i;return r=(n=this.animation.frames)[e],i=n[e-1],0===e&&t.clearRect(0,0,this.width,this.height),1===(null!=i?i.disposeOp:void 0)?t.clearRect(i.xOffset,i.yOffset,i.width,i.height):2===(null!=i?i.disposeOp:void 0)&&t.putImageData(i.imageData,i.xOffset,i.yOffset),0===r.blendOp&&t.clearRect(r.xOffset,r.yOffset,r.width,r.height),t.drawImage(r.image,r.xOffset,r.yOffset)},a.prototype.animate=function(t){var e,r,n,i,a,o,s=this;return r=0,o=this.animation,i=o.numFrames,n=o.frames,a=o.numPlays,(e=function(){var o,c;if(o=r++%i,c=n[o],s.renderFrame(t,o),i>1&&r/i<a)return s.animation._timeout=setTimeout(e,c.delay)})()},a.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)},a.prototype.render=function(t){var e,r;return t._png&&t._png.stopAnimation(),t._png=this,t.width=this.width,t.height=this.height,e=t.getContext(\"2d\"),this.animation?(this.decodeFrames(e),this.animate(e)):(r=e.createImageData(this.width,this.height),this.copyToImageData(r,this.decodePixels()),e.putImageData(r,0,0))},a}();\n/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n/**\n * @license\n * (c) Dean McNamee <dean@gmail.com>, 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression.  It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\nfunction Zt(t){var e=0;if(71!==t[e++]||73!==t[e++]||70!==t[e++]||56!==t[e++]||56!=(t[e++]+1&253)||97!==t[e++])throw new Error(\"Invalid GIF 87a/89a header.\");var r=t[e++]|t[e++]<<8,n=t[e++]|t[e++]<<8,i=t[e++],a=i>>7,o=1<<(7&i)+1;t[e++];t[e++];var s=null,c=null;a&&(s=e,c=o,e+=3*o);var u=!0,h=[],l=0,f=null,d=0,p=null;for(this.width=r,this.height=n;u&&e<t.length;)switch(t[e++]){case 33:switch(t[e++]){case 255:if(11!==t[e]||78==t[e+1]&&69==t[e+2]&&84==t[e+3]&&83==t[e+4]&&67==t[e+5]&&65==t[e+6]&&80==t[e+7]&&69==t[e+8]&&50==t[e+9]&&46==t[e+10]&&48==t[e+11]&&3==t[e+12]&&1==t[e+13]&&0==t[e+16])e+=14,p=t[e++]|t[e++]<<8,e++;else for(e+=12;;){if(!((P=t[e++])>=0))throw Error(\"Invalid block size\");if(0===P)break;e+=P}break;case 249:if(4!==t[e++]||0!==t[e+4])throw new Error(\"Invalid graphics extension block.\");var g=t[e++];l=t[e++]|t[e++]<<8,f=t[e++],0==(1&g)&&(f=null),d=g>>2&7,e++;break;case 254:for(;;){if(!((P=t[e++])>=0))throw Error(\"Invalid block size\");if(0===P)break;e+=P}break;default:throw new Error(\"Unknown graphic control label: 0x\"+t[e-1].toString(16))}break;case 44:var m=t[e++]|t[e++]<<8,v=t[e++]|t[e++]<<8,b=t[e++]|t[e++]<<8,y=t[e++]|t[e++]<<8,w=t[e++],N=w>>6&1,L=1<<(7&w)+1,A=s,x=c,S=!1;if(w>>7){S=!0;A=e,x=L,e+=3*L}var _=e;for(e++;;){var P;if(!((P=t[e++])>=0))throw Error(\"Invalid block size\");if(0===P)break;e+=P}h.push({x:m,y:v,width:b,height:y,has_local_palette:S,palette_offset:A,palette_size:x,data_offset:_,data_length:e-_,transparent_index:f,interlaced:!!N,delay:l,disposal:d});break;case 59:u=!1;break;default:throw new Error(\"Unknown gif block: 0x\"+t[e-1].toString(16))}this.numFrames=function(){return h.length},this.loopCount=function(){return p},this.frameInfo=function(t){if(t<0||t>=h.length)throw new Error(\"Frame index out of range.\");return h[t]},this.decodeAndBlitFrameBGRA=function(e,n){var i=this.frameInfo(e),a=i.width*i.height,o=new Uint8Array(a);$t(t,i.data_offset,o,a);var s=i.palette_offset,c=i.transparent_index;null===c&&(c=256);var u=i.width,h=r-u,l=u,f=4*(i.y*r+i.x),d=4*((i.y+i.height)*r+i.x),p=f,g=4*h;!0===i.interlaced&&(g+=4*r*7);for(var m=8,v=0,b=o.length;v<b;++v){var y=o[v];if(0===l&&(l=u,(p+=g)>=d&&(g=4*h+4*r*(m-1),p=f+(u+h)*(m<<1),m>>=1)),y===c)p+=4;else{var w=t[s+3*y],N=t[s+3*y+1],L=t[s+3*y+2];n[p++]=L,n[p++]=N,n[p++]=w,n[p++]=255}--l}},this.decodeAndBlitFrameRGBA=function(e,n){var i=this.frameInfo(e),a=i.width*i.height,o=new Uint8Array(a);$t(t,i.data_offset,o,a);var s=i.palette_offset,c=i.transparent_index;null===c&&(c=256);var u=i.width,h=r-u,l=u,f=4*(i.y*r+i.x),d=4*((i.y+i.height)*r+i.x),p=f,g=4*h;!0===i.interlaced&&(g+=4*r*7);for(var m=8,v=0,b=o.length;v<b;++v){var y=o[v];if(0===l&&(l=u,(p+=g)>=d&&(g=4*h+4*r*(m-1),p=f+(u+h)*(m<<1),m>>=1)),y===c)p+=4;else{var w=t[s+3*y],N=t[s+3*y+1],L=t[s+3*y+2];n[p++]=w,n[p++]=N,n[p++]=L,n[p++]=255}--l}}}function $t(t,e,r,n){for(var i=t[e++],o=1<<i,s=o+1,c=s+1,u=i+1,h=(1<<u)-1,l=0,f=0,d=0,p=t[e++],g=new Int32Array(4096),m=null;;){for(;l<16&&0!==p;)f|=t[e++]<<l,l+=8,1===p?p=t[e++]:--p;if(l<u)break;var v=f&h;if(f>>=u,l-=u,v!==o){if(v===s)break;for(var b=v<c?v:m,y=0,w=b;w>o;)w=g[w]>>8,++y;var N=w;if(d+y+(b!==v?1:0)>n)return void a.log(\"Warning, gif stream longer than expected.\");r[d++]=N;var L=d+=y;for(b!==v&&(r[d++]=N),w=b;y--;)w=g[w],r[--L]=255&w,w>>=8;null!==m&&c<4096&&(g[c++]=m<<8|N,c>=h+1&&u<12&&(++u,h=h<<1|1)),m=v}else c=s+1,h=(1<<(u=i+1))-1,m=null}return d!==n&&a.log(\"Warning, gif stream shorter than expected.\"),r}\n/**\n * @license\n  Copyright (c) 2008, Adobe Systems Incorporated\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\n  met:\n\n  * Redistributions of source code must retain the above copyright notice, \n    this list of conditions and the following disclaimer.\n  \n  * 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  * Neither the name of Adobe Systems Incorporated nor the names of its \n    contributors may be used to endorse or promote products derived from \n    this software without specific prior written permission.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n  IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/function Qt(t){var e,r,n,i,a,o=Math.floor,s=new Array(64),c=new Array(64),u=new Array(64),h=new Array(64),l=new Array(65535),f=new Array(65535),d=new Array(64),p=new Array(64),g=[],m=0,v=7,b=new Array(64),y=new Array(64),w=new Array(64),N=new Array(256),L=new Array(2048),A=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],x=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],S=[0,1,2,3,4,5,6,7,8,9,10,11],_=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],P=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],k=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],I=[0,1,2,3,4,5,6,7,8,9,10,11],F=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],C=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function j(t,e){for(var r=0,n=0,i=new Array,a=1;a<=16;a++){for(var o=1;o<=t[a];o++)i[e[n]]=[],i[e[n]][0]=r,i[e[n]][1]=a,n++,r++;r*=2}return i}function O(t){for(var e=t[0],r=t[1]-1;r>=0;)e&1<<r&&(m|=1<<v),r--,--v<0&&(255==m?(B(255),B(0)):B(m),v=7,m=0)}function B(t){g.push(t)}function M(t){B(t>>8&255),B(255&t)}function E(t,e,r,n,i){for(var a,o=i[0],s=i[240],c=function(t,e){var r,n,i,a,o,s,c,u,h,l,f=0;for(h=0;h<8;++h){r=t[f],n=t[f+1],i=t[f+2],a=t[f+3],o=t[f+4],s=t[f+5],c=t[f+6];var p=r+(u=t[f+7]),g=r-u,m=n+c,v=n-c,b=i+s,y=i-s,w=a+o,N=a-o,L=p+w,A=p-w,x=m+b,S=m-b;t[f]=L+x,t[f+4]=L-x;var _=.707106781*(S+A);t[f+2]=A+_,t[f+6]=A-_;var P=.382683433*((L=N+y)-(S=v+g)),k=.5411961*L+P,I=1.306562965*S+P,F=.707106781*(x=y+v),C=g+F,j=g-F;t[f+5]=j+k,t[f+3]=j-k,t[f+1]=C+I,t[f+7]=C-I,f+=8}for(f=0,h=0;h<8;++h){r=t[f],n=t[f+8],i=t[f+16],a=t[f+24],o=t[f+32],s=t[f+40],c=t[f+48];var O=r+(u=t[f+56]),B=r-u,M=n+c,E=n-c,q=i+s,D=i-s,R=a+o,T=a-o,U=O+R,z=O-R,H=M+q,W=M-q;t[f]=U+H,t[f+32]=U-H;var V=.707106781*(W+z);t[f+16]=z+V,t[f+48]=z-V;var G=.382683433*((U=T+D)-(W=E+B)),Y=.5411961*U+G,J=1.306562965*W+G,X=.707106781*(H=D+E),K=B+X,Z=B-X;t[f+40]=Z+Y,t[f+24]=Z-Y,t[f+8]=K+J,t[f+56]=K-J,f++}for(h=0;h<64;++h)l=t[h]*e[h],d[h]=l>0?l+.5|0:l-.5|0;return d}(t,e),u=0;u<64;++u)p[A[u]]=c[u];var h=p[0]-r;r=p[0],0==h?O(n[0]):(O(n[f[a=32767+h]]),O(l[a]));for(var g=63;g>0&&0==p[g];)g--;if(0==g)return O(o),r;for(var m,v=1;v<=g;){for(var b=v;0==p[v]&&v<=g;)++v;var y=v-b;if(y>=16){m=y>>4;for(var w=1;w<=m;++w)O(s);y&=15}a=32767+p[v],O(i[(y<<4)+f[a]]),O(l[a]),v++}return 63!=g&&O(o),r}function q(t){(t=Math.min(Math.max(t,1),100),a!=t)&&(!function(t){for(var e=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],r=0;r<64;r++){var n=o((e[r]*t+50)/100);n=Math.min(Math.max(n,1),255),s[A[r]]=n}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],a=0;a<64;a++){var l=o((i[a]*t+50)/100);l=Math.min(Math.max(l,1),255),c[A[a]]=l}for(var f=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],d=0,p=0;p<8;p++)for(var g=0;g<8;g++)u[d]=1/(s[A[d]]*f[p]*f[g]*8),h[d]=1/(c[A[d]]*f[p]*f[g]*8),d++}(t<50?Math.floor(5e3/t):Math.floor(200-2*t)),a=t)}this.encode=function(t,a){a&&q(a),g=new Array,m=0,v=7,M(65496),M(65504),M(16),B(74),B(70),B(73),B(70),B(0),B(1),B(1),B(0),M(1),M(1),B(0),B(0),function(){M(65499),M(132),B(0);for(var t=0;t<64;t++)B(s[t]);B(1);for(var e=0;e<64;e++)B(c[e])}(),function(t,e){M(65472),M(17),B(8),M(e),M(t),B(3),B(1),B(17),B(0),B(2),B(17),B(1),B(3),B(17),B(1)}(t.width,t.height),function(){M(65476),M(418),B(0);for(var t=0;t<16;t++)B(x[t+1]);for(var e=0;e<=11;e++)B(S[e]);B(16);for(var r=0;r<16;r++)B(_[r+1]);for(var n=0;n<=161;n++)B(P[n]);B(1);for(var i=0;i<16;i++)B(k[i+1]);for(var a=0;a<=11;a++)B(I[a]);B(17);for(var o=0;o<16;o++)B(F[o+1]);for(var s=0;s<=161;s++)B(C[s])}(),M(65498),M(12),B(3),B(1),B(0),B(2),B(17),B(3),B(17),B(0),B(63),B(0);var o=0,l=0,f=0;m=0,v=7,this.encode.displayName=\"_encode_\";for(var d,p,N,A,j,D,R,T,U,z=t.data,H=t.width,W=t.height,V=4*H,G=0;G<W;){for(d=0;d<V;){for(j=V*G+d,R=-1,T=0,U=0;U<64;U++)D=j+(T=U>>3)*V+(R=4*(7&U)),G+T>=W&&(D-=V*(G+1+T-W)),d+R>=V&&(D-=d+R-V+4),p=z[D++],N=z[D++],A=z[D++],b[U]=(L[p]+L[N+256>>0]+L[A+512>>0]>>16)-128,y[U]=(L[p+768>>0]+L[N+1024>>0]+L[A+1280>>0]>>16)-128,w[U]=(L[p+1280>>0]+L[N+1536>>0]+L[A+1792>>0]>>16)-128;o=E(b,u,o,e,n),l=E(y,h,l,r,i),f=E(w,h,f,r,i),d+=32}G+=8}if(v>=0){var Y=[];Y[1]=v+1,Y[0]=(1<<v+1)-1,O(Y)}return M(65497),new Uint8Array(g)},t=t||50,function(){for(var t=String.fromCharCode,e=0;e<256;e++)N[e]=t(e)}(),e=j(x,S),r=j(k,I),n=j(_,P),i=j(F,C),function(){for(var t=1,e=2,r=1;r<=15;r++){for(var n=t;n<e;n++)f[32767+n]=r,l[32767+n]=[],l[32767+n][1]=r,l[32767+n][0]=n;for(var i=-(e-1);i<=-t;i++)f[32767+i]=r,l[32767+i]=[],l[32767+i][1]=r,l[32767+i][0]=e-1+i;t<<=1,e<<=1}}(),function(){for(var t=0;t<256;t++)L[t]=19595*t,L[t+256>>0]=38470*t,L[t+512>>0]=7471*t+32768,L[t+768>>0]=-11059*t,L[t+1024>>0]=-21709*t,L[t+1280>>0]=32768*t+8421375,L[t+1536>>0]=-27439*t,L[t+1792>>0]=-5329*t}(),q(t)}\n/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */function te(t,e){if(this.pos=0,this.buffer=t,this.datav=new DataView(t.buffer),this.is_with_alpha=!!e,this.bottom_up=!0,this.flag=String.fromCharCode(this.buffer[0])+String.fromCharCode(this.buffer[1]),this.pos+=2,-1===[\"BM\",\"BA\",\"CI\",\"CP\",\"IC\",\"PT\"].indexOf(this.flag))throw new Error(\"Invalid BMP File\");this.parseHeader(),this.parseBGR()}function ee(t){function e(t){if(!t)throw Error(\"assert :P\")}function r(t,e,r){for(var n=0;4>n;n++)if(t[e+n]!=r.charCodeAt(n))return!0;return!1}function n(t,e,r,n,i){for(var a=0;a<i;a++)t[e+a]=r[n+a]}function i(t,e,r,n){for(var i=0;i<n;i++)t[e+i]=r}function a(t){return new Int32Array(t)}function o(t,e){for(var r=[],n=0;n<t;n++)r.push(new e);return r}function s(t,e){var r=[];return function t(r,n,i){for(var a=i[n],o=0;o<a&&(r.push(i.length>n+1?[]:new e),!(i.length<n+1));o++)t(r[o],n+1,i)}(r,0,t),r}var c=function(){var t=this;function c(t,e){for(var r=1<<e-1>>>0;t&r;)r>>>=1;return r?(t&r-1)+r:t}function u(t,r,n,i,a){e(!(i%n));do{t[r+(i-=n)]=a}while(0<i)}function h(t,r,n,i,o){if(e(2328>=o),512>=o)var s=a(512);else if(null==(s=a(o)))return 0;return function(t,r,n,i,o,s){var h,f,d=r,p=1<<n,g=a(16),m=a(16);for(e(0!=o),e(null!=i),e(null!=t),e(0<n),f=0;f<o;++f){if(15<i[f])return 0;++g[i[f]]}if(g[0]==o)return 0;for(m[1]=0,h=1;15>h;++h){if(g[h]>1<<h)return 0;m[h+1]=m[h]+g[h]}for(f=0;f<o;++f)h=i[f],0<i[f]&&(s[m[h]++]=f);if(1==m[15])return(i=new l).g=0,i.value=s[0],u(t,d,1,p,i),p;var v,b=-1,y=p-1,w=0,N=1,L=1,A=1<<n;for(f=0,h=1,o=2;h<=n;++h,o<<=1){if(N+=L<<=1,0>(L-=g[h]))return 0;for(;0<g[h];--g[h])(i=new l).g=h,i.value=s[f++],u(t,d+w,o,A,i),w=c(w,h)}for(h=n+1,o=2;15>=h;++h,o<<=1){if(N+=L<<=1,0>(L-=g[h]))return 0;for(;0<g[h];--g[h]){if(i=new l,(w&y)!=b){for(d+=A,v=1<<(b=h)-n;15>b&&!(0>=(v-=g[b]));)++b,v<<=1;p+=A=1<<(v=b-n),t[r+(b=w&y)].g=v+n,t[r+b].value=d-r-b}i.g=h-n,i.value=s[f++],u(t,d+(w>>n),o,A,i),w=c(w,h)}}return N!=2*m[15]-1?0:p}(t,r,n,i,o,s)}function l(){this.value=this.g=0}function f(){this.value=this.g=0}function d(){this.G=o(5,l),this.H=a(5),this.jc=this.Qb=this.qb=this.nd=0,this.pd=o(Dr,f)}function p(t,r,n,i){e(null!=t),e(null!=r),e(2147483648>i),t.Ca=254,t.I=0,t.b=-8,t.Ka=0,t.oa=r,t.pa=n,t.Jd=r,t.Yc=n+i,t.Zc=4<=i?n+i-4+1:n,_(t)}function g(t,e){for(var r=0;0<e--;)r|=k(t,128)<<e;return r}function m(t,e){var r=g(t,e);return P(t)?-r:r}function v(t,r,n,i){var a,o=0;for(e(null!=t),e(null!=r),e(4294967288>i),t.Sb=i,t.Ra=0,t.u=0,t.h=0,4<i&&(i=4),a=0;a<i;++a)o+=r[n+a]<<8*a;t.Ra=o,t.bb=i,t.oa=r,t.pa=n}function b(t){for(;8<=t.u&&t.bb<t.Sb;)t.Ra>>>=8,t.Ra+=t.oa[t.pa+t.bb]<<Ur-8>>>0,++t.bb,t.u-=8;A(t)&&(t.h=1,t.u=0)}function y(t,r){if(e(0<=r),!t.h&&r<=Tr){var n=L(t)&Rr[r];return t.u+=r,b(t),n}return t.h=1,t.u=0}function w(){this.b=this.Ca=this.I=0,this.oa=[],this.pa=0,this.Jd=[],this.Yc=0,this.Zc=[],this.Ka=0}function N(){this.Ra=0,this.oa=[],this.h=this.u=this.bb=this.Sb=this.pa=0}function L(t){return t.Ra>>>(t.u&Ur-1)>>>0}function A(t){return e(t.bb<=t.Sb),t.h||t.bb==t.Sb&&t.u>Ur}function x(t,e){t.u=e,t.h=A(t)}function S(t){t.u>=zr&&(e(t.u>=zr),b(t))}function _(t){e(null!=t&&null!=t.oa),t.pa<t.Zc?(t.I=(t.oa[t.pa++]|t.I<<8)>>>0,t.b+=8):(e(null!=t&&null!=t.oa),t.pa<t.Yc?(t.b+=8,t.I=t.oa[t.pa++]|t.I<<8):t.Ka?t.b=0:(t.I<<=8,t.b+=8,t.Ka=1))}function P(t){return g(t,1)}function k(t,e){var r=t.Ca;0>t.b&&_(t);var n=t.b,i=r*e>>>8,a=(t.I>>>n>i)+0;for(a?(r-=i,t.I-=i+1<<n>>>0):r=i+1,n=r,i=0;256<=n;)i+=8,n>>=8;return n=7^i+Hr[n],t.b-=n,t.Ca=(r<<n)-1,a}function I(t,e,r){t[e+0]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r>>0&255}function F(t,e){return t[e+0]<<0|t[e+1]<<8}function C(t,e){return F(t,e)|t[e+2]<<16}function j(t,e){return F(t,e)|F(t,e+2)<<16}function O(t,r){var n=1<<r;return e(null!=t),e(0<r),t.X=a(n),null==t.X?0:(t.Mb=32-r,t.Xa=r,1)}function B(t,r){e(null!=t),e(null!=r),e(t.Xa==r.Xa),n(r.X,0,t.X,0,1<<r.Xa)}function M(){this.X=[],this.Xa=this.Mb=0}function E(t,r,n,i){e(null!=n),e(null!=i);var a=n[0],o=i[0];return 0==a&&(a=(t*o+r/2)/r),0==o&&(o=(r*a+t/2)/t),0>=a||0>=o?0:(n[0]=a,i[0]=o,1)}function q(t,e){return t+(1<<e)-1>>>e}function D(t,e){return((4278255360&t)+(4278255360&e)>>>0&4278255360)+((16711935&t)+(16711935&e)>>>0&16711935)>>>0}function R(e,r){t[r]=function(r,n,i,a,o,s,c){var u;for(u=0;u<o;++u){var h=t[e](s[c+u-1],i,a+u);s[c+u]=D(r[n+u],h)}}}function T(){this.ud=this.hd=this.jd=0}function U(t,e){return((4278124286&(t^e))>>>1)+(t&e)>>>0}function z(t){return 0<=t&&256>t?t:0>t?0:255<t?255:void 0}function H(t,e){return z(t+(t-e+.5>>1))}function W(t,e,r){return Math.abs(e-r)-Math.abs(t-r)}function V(t,e,r,n,i,a,o){for(n=a[o-1],r=0;r<i;++r)a[o+r]=n=D(t[e+r],n)}function G(t,e,r,n,i){var a;for(a=0;a<r;++a){var o=t[e+a],s=o>>8&255,c=16711935&(c=(c=16711935&o)+((s<<16)+s));n[i+a]=(4278255360&o)+c>>>0}}function Y(t,e){e.jd=t>>0&255,e.hd=t>>8&255,e.ud=t>>16&255}function J(t,e,r,n,i,a){var o;for(o=0;o<n;++o){var s=e[r+o],c=s>>>8,u=s,h=255&(h=(h=s>>>16)+((t.jd<<24>>24)*(c<<24>>24)>>>5));u=255&(u=(u=u+((t.hd<<24>>24)*(c<<24>>24)>>>5))+((t.ud<<24>>24)*(h<<24>>24)>>>5));i[a+o]=(4278255360&s)+(h<<16)+u}}function X(e,r,n,i,a){t[r]=function(t,e,r,n,o,s,c,u,h){for(n=c;n<u;++n)for(c=0;c<h;++c)o[s++]=a(r[i(t[e++])])},t[e]=function(e,r,o,s,c,u,h){var l=8>>e.b,f=e.Ea,d=e.K[0],p=e.w;if(8>l)for(e=(1<<e.b)-1,p=(1<<l)-1;r<o;++r){var g,m=0;for(g=0;g<f;++g)g&e||(m=i(s[c++])),u[h++]=a(d[m&p]),m>>=l}else t[\"VP8LMapColor\"+n](s,c,d,p,u,h,r,o,f)}}function K(t,e,r,n,i){for(r=e+r;e<r;){var a=t[e++];n[i++]=a>>16&255,n[i++]=a>>8&255,n[i++]=a>>0&255}}function Z(t,e,r,n,i){for(r=e+r;e<r;){var a=t[e++];n[i++]=a>>16&255,n[i++]=a>>8&255,n[i++]=a>>0&255,n[i++]=a>>24&255}}function $(t,e,r,n,i){for(r=e+r;e<r;){var a=(o=t[e++])>>16&240|o>>12&15,o=o>>0&240|o>>28&15;n[i++]=a,n[i++]=o}}function Q(t,e,r,n,i){for(r=e+r;e<r;){var a=(o=t[e++])>>16&248|o>>13&7,o=o>>5&224|o>>3&31;n[i++]=a,n[i++]=o}}function tt(t,e,r,n,i){for(r=e+r;e<r;){var a=t[e++];n[i++]=a>>0&255,n[i++]=a>>8&255,n[i++]=a>>16&255}}function et(t,e,r,i,a,o){if(0==o)for(r=e+r;e<r;)I(i,((o=t[e++])[0]>>24|o[1]>>8&65280|o[2]<<8&16711680|o[3]<<24)>>>0),a+=32;else n(i,a,t,e,r)}function rt(e,r){t[r][0]=t[e+\"0\"],t[r][1]=t[e+\"1\"],t[r][2]=t[e+\"2\"],t[r][3]=t[e+\"3\"],t[r][4]=t[e+\"4\"],t[r][5]=t[e+\"5\"],t[r][6]=t[e+\"6\"],t[r][7]=t[e+\"7\"],t[r][8]=t[e+\"8\"],t[r][9]=t[e+\"9\"],t[r][10]=t[e+\"10\"],t[r][11]=t[e+\"11\"],t[r][12]=t[e+\"12\"],t[r][13]=t[e+\"13\"],t[r][14]=t[e+\"0\"],t[r][15]=t[e+\"0\"]}function nt(t){return t==Hn||t==Wn||t==Vn||t==Gn}function it(){this.eb=[],this.size=this.A=this.fb=0}function at(){this.y=[],this.f=[],this.ea=[],this.F=[],this.Tc=this.Ed=this.Cd=this.Fd=this.lb=this.Db=this.Ab=this.fa=this.J=this.W=this.N=this.O=0}function ot(){this.Rd=this.height=this.width=this.S=0,this.f={},this.f.RGBA=new it,this.f.kb=new at,this.sd=null}function st(){this.width=[0],this.height=[0],this.Pd=[0],this.Qd=[0],this.format=[0]}function ct(){this.Id=this.fd=this.Md=this.hb=this.ib=this.da=this.bd=this.cd=this.j=this.v=this.Da=this.Sd=this.ob=0}function ut(t){return alert(\"todo:WebPSamplerProcessPlane\"),t.T}function ht(t,e){var r=t.T,i=e.ba.f.RGBA,a=i.eb,o=i.fb+t.ka*i.A,s=vi[e.ba.S],c=t.y,u=t.O,h=t.f,l=t.N,f=t.ea,d=t.W,p=e.cc,g=e.dc,m=e.Mc,v=e.Nc,b=t.ka,y=t.ka+t.T,w=t.U,N=w+1>>1;for(0==b?s(c,u,null,null,h,l,f,d,h,l,f,d,a,o,null,null,w):(s(e.ec,e.fc,c,u,p,g,m,v,h,l,f,d,a,o-i.A,a,o,w),++r);b+2<y;b+=2)p=h,g=l,m=f,v=d,l+=t.Rc,d+=t.Rc,o+=2*i.A,s(c,(u+=2*t.fa)-t.fa,c,u,p,g,m,v,h,l,f,d,a,o-i.A,a,o,w);return u+=t.fa,t.j+y<t.o?(n(e.ec,e.fc,c,u,w),n(e.cc,e.dc,h,l,N),n(e.Mc,e.Nc,f,d,N),r--):1&y||s(c,u,null,null,h,l,f,d,h,l,f,d,a,o+i.A,null,null,w),r}function lt(t,r,n){var i=t.F,a=[t.J];if(null!=i){var o=t.U,s=r.ba.S,c=s==Tn||s==Vn;r=r.ba.f.RGBA;var u=[0],h=t.ka;u[0]=t.T,t.Kb&&(0==h?--u[0]:(--h,a[0]-=t.width),t.j+t.ka+t.T==t.o&&(u[0]=t.o-t.j-h));var l=r.eb;h=r.fb+h*r.A;t=Sn(i,a[0],t.width,o,u,l,h+(c?0:3),r.A),e(n==u),t&&nt(s)&&An(l,h,c,o,u,r.A)}return 0}function ft(t){var e=t.ma,r=e.ba.S,n=11>r,i=r==qn||r==Rn||r==Tn||r==Un||12==r||nt(r);if(e.memory=null,e.Ib=null,e.Jb=null,e.Nd=null,!Mr(e.Oa,t,i?11:12))return 0;if(i&&nt(r)&&br(),t.da)alert(\"todo:use_scaling\");else{if(n){if(e.Ib=ut,t.Kb){if(r=t.U+1>>1,e.memory=a(t.U+2*r),null==e.memory)return 0;e.ec=e.memory,e.fc=0,e.cc=e.ec,e.dc=e.fc+t.U,e.Mc=e.cc,e.Nc=e.dc+r,e.Ib=ht,br()}}else alert(\"todo:EmitYUV\");i&&(e.Jb=lt,n&&mr())}if(n&&!Ci){for(t=0;256>t;++t)ji[t]=89858*(t-128)+_i>>Si,Mi[t]=-22014*(t-128)+_i,Bi[t]=-45773*(t-128),Oi[t]=113618*(t-128)+_i>>Si;for(t=Pi;t<ki;++t)e=76283*(t-16)+_i>>Si,Ei[t-Pi]=Vt(e,255),qi[t-Pi]=Vt(e+8>>4,15);Ci=1}return 1}function dt(t){var r=t.ma,n=t.U,i=t.T;return e(!(1&t.ka)),0>=n||0>=i?0:(n=r.Ib(t,r),null!=r.Jb&&r.Jb(t,r,n),r.Dc+=n,1)}function pt(t){t.ma.memory=null}function gt(t,e,r,n){return 47!=y(t,8)?0:(e[0]=y(t,14)+1,r[0]=y(t,14)+1,n[0]=y(t,1),0!=y(t,3)?0:!t.h)}function mt(t,e){if(4>t)return t+1;var r=t-2>>1;return(2+(1&t)<<r)+y(e,r)+1}function vt(t,e){return 120<e?e-120:1<=(r=((r=$n[e-1])>>4)*t+(8-(15&r)))?r:1;var r}function bt(t,e,r){var n=L(r),i=t[e+=255&n].g-8;return 0<i&&(x(r,r.u+8),n=L(r),e+=t[e].value,e+=n&(1<<i)-1),x(r,r.u+t[e].g),t[e].value}function yt(t,r,n){return n.g+=t.g,n.value+=t.value<<r>>>0,e(8>=n.g),t.g}function wt(t,r,n){var i=t.xc;return e((r=0==i?0:t.vc[t.md*(n>>i)+(r>>i)])<t.Wb),t.Ya[r]}function Nt(t,r,i,a){var o=t.ab,s=t.c*r,c=t.C;r=c+r;var u=i,h=a;for(a=t.Ta,i=t.Ua;0<o--;){var l=t.gc[o],f=c,d=r,p=u,g=h,m=(h=a,u=i,l.Ea);switch(e(f<d),e(d<=l.nc),l.hc){case 2:Gr(p,g,(d-f)*m,h,u);break;case 0:var v=f,b=d,y=h,w=u,N=(_=l).Ea;0==v&&(Wr(p,g,null,null,1,y,w),V(p,g+1,0,0,N-1,y,w+1),g+=N,w+=N,++v);for(var L=1<<_.b,A=L-1,x=q(N,_.b),S=_.K,_=_.w+(v>>_.b)*x;v<b;){var P=S,k=_,I=1;for(Vr(p,g,y,w-N,1,y,w);I<N;){var F=(I&~A)+L;F>N&&(F=N),(0,Zr[P[k++]>>8&15])(p,g+ +I,y,w+I-N,F-I,y,w+I),I=F}g+=N,w+=N,++v&A||(_+=x)}d!=l.nc&&n(h,u-m,h,u+(d-f-1)*m,m);break;case 1:for(m=p,b=g,N=(p=l.Ea)-(w=p&~(y=(g=1<<l.b)-1)),v=q(p,l.b),L=l.K,l=l.w+(f>>l.b)*v;f<d;){for(A=L,x=l,S=new T,_=b+w,P=b+p;b<_;)Y(A[x++],S),$r(S,m,b,g,h,u),b+=g,u+=g;b<P&&(Y(A[x++],S),$r(S,m,b,N,h,u),b+=N,u+=N),++f&y||(l+=v)}break;case 3:if(p==h&&g==u&&0<l.b){for(b=h,p=m=u+(d-f)*m-(w=(d-f)*q(l.Ea,l.b)),g=h,y=u,v=[],w=(N=w)-1;0<=w;--w)v[w]=g[y+w];for(w=N-1;0<=w;--w)b[p+w]=v[w];Yr(l,f,d,h,m,h,u)}else Yr(l,f,d,p,g,h,u)}u=a,h=i}h!=i&&n(a,i,u,h,s)}function Lt(t,r){var n=t.V,i=t.Ba+t.c*t.C,a=r-t.C;if(e(r<=t.l.o),e(16>=a),0<a){var o=t.l,s=t.Ta,c=t.Ua,u=o.width;if(Nt(t,a,n,i),a=c=[c],e((n=t.C)<(i=r)),e(o.v<o.va),i>o.o&&(i=o.o),n<o.j){var h=o.j-n;n=o.j;a[0]+=h*u}if(n>=i?n=0:(a[0]+=4*o.v,o.ka=n-o.j,o.U=o.va-o.v,o.T=i-n,n=1),n){if(c=c[0],11>(n=t.ca).S){var l=n.f.RGBA,f=(i=n.S,a=o.U,o=o.T,h=l.eb,l.A),d=o;for(l=l.fb+t.Ma*l.A;0<d--;){var p=s,g=c,m=a,v=h,b=l;switch(i){case En:Qr(p,g,m,v,b);break;case qn:tn(p,g,m,v,b);break;case Hn:tn(p,g,m,v,b),An(v,b,0,m,1,0);break;case Dn:nn(p,g,m,v,b);break;case Rn:et(p,g,m,v,b,1);break;case Wn:et(p,g,m,v,b,1),An(v,b,0,m,1,0);break;case Tn:et(p,g,m,v,b,0);break;case Vn:et(p,g,m,v,b,0),An(v,b,1,m,1,0);break;case Un:en(p,g,m,v,b);break;case Gn:en(p,g,m,v,b),xn(v,b,m,1,0);break;case zn:rn(p,g,m,v,b);break;default:e(0)}c+=u,l+=f}t.Ma+=o}else alert(\"todo:EmitRescaledRowsYUVA\");e(t.Ma<=n.height)}}t.C=r,e(t.C<=t.i)}function At(t){var e;if(0<t.ua)return 0;for(e=0;e<t.Wb;++e){var r=t.Ya[e].G,n=t.Ya[e].H;if(0<r[1][n[1]+0].g||0<r[2][n[2]+0].g||0<r[3][n[3]+0].g)return 0}return 1}function xt(t,r,n,i,a,o){if(0!=t.Z){var s=t.qd,c=t.rd;for(e(null!=mi[t.Z]);r<n;++r)mi[t.Z](s,c,i,a,i,a,o),s=i,c=a,a+=o;t.qd=s,t.rd=c}}function St(t,r){var n=t.l.ma,i=0==n.Z||1==n.Z?t.l.j:t.C;i=t.C<i?i:t.C;if(e(r<=t.l.o),r>i){var a=t.l.width,o=n.ca,s=n.tb+a*i,c=t.V,u=t.Ba+t.c*i,h=t.gc;e(1==t.ab),e(3==h[0].hc),Xr(h[0],i,r,c,u,o,s),xt(n,i,r,o,s,a)}t.C=t.Ma=r}function _t(t,r,n,i,a,o,s){var c=t.$/i,u=t.$%i,h=t.m,l=t.s,f=n+t.$,d=f;a=n+i*a;var p=n+i*o,g=280+l.ua,m=t.Pb?c:16777216,v=0<l.ua?l.Wa:null,b=l.wc,y=f<p?wt(l,u,c):null;e(t.C<o),e(p<=a);var w=!1;t:for(;;){for(;w||f<p;){var N=0;if(c>=m){var _=f-n;e((m=t).Pb),m.wd=m.m,m.xd=_,0<m.s.ua&&B(m.s.Wa,m.s.vb),m=c+ti}if(u&b||(y=wt(l,u,c)),e(null!=y),y.Qb&&(r[f]=y.qb,w=!0),!w)if(S(h),y.jc){N=h,_=r;var P=f,k=y.pd[L(N)&Dr-1];e(y.jc),256>k.g?(x(N,N.u+k.g),_[P]=k.value,N=0):(x(N,N.u+k.g-256),e(256<=k.value),N=k.value),0==N&&(w=!0)}else N=bt(y.G[0],y.H[0],h);if(h.h)break;if(w||256>N){if(!w)if(y.nd)r[f]=(y.qb|N<<8)>>>0;else{if(S(h),w=bt(y.G[1],y.H[1],h),S(h),_=bt(y.G[2],y.H[2],h),P=bt(y.G[3],y.H[3],h),h.h)break;r[f]=(P<<24|w<<16|N<<8|_)>>>0}if(w=!1,++f,++u>=i&&(u=0,++c,null!=s&&c<=o&&!(c%16)&&s(t,c),null!=v))for(;d<f;)N=r[d++],v.X[(506832829*N&4294967295)>>>v.Mb]=N}else if(280>N){if(N=mt(N-256,h),_=bt(y.G[4],y.H[4],h),S(h),_=vt(i,_=mt(_,h)),h.h)break;if(f-n<_||a-f<N)break t;for(P=0;P<N;++P)r[f+P]=r[f+P-_];for(f+=N,u+=N;u>=i;)u-=i,++c,null!=s&&c<=o&&!(c%16)&&s(t,c);if(e(f<=a),u&b&&(y=wt(l,u,c)),null!=v)for(;d<f;)N=r[d++],v.X[(506832829*N&4294967295)>>>v.Mb]=N}else{if(!(N<g))break t;for(w=N-280,e(null!=v);d<f;)N=r[d++],v.X[(506832829*N&4294967295)>>>v.Mb]=N;N=f,e(!(w>>>(_=v).Xa)),r[N]=_.X[w],w=!0}w||e(h.h==A(h))}if(t.Pb&&h.h&&f<a)e(t.m.h),t.a=5,t.m=t.wd,t.$=t.xd,0<t.s.ua&&B(t.s.vb,t.s.Wa);else{if(h.h)break t;null!=s&&s(t,c>o?o:c),t.a=0,t.$=f-n}return 1}return t.a=3,0}function Pt(t){e(null!=t),t.vc=null,t.yc=null,t.Ya=null;var r=t.Wa;null!=r&&(r.X=null),t.vb=null,e(null!=t)}function kt(){var e=new or;return null==e?null:(e.a=0,e.xb=gi,rt(\"Predictor\",\"VP8LPredictors\"),rt(\"Predictor\",\"VP8LPredictors_C\"),rt(\"PredictorAdd\",\"VP8LPredictorsAdd\"),rt(\"PredictorAdd\",\"VP8LPredictorsAdd_C\"),Gr=G,$r=J,Qr=K,tn=Z,en=$,rn=Q,nn=tt,t.VP8LMapColor32b=Jr,t.VP8LMapColor8b=Kr,e)}function It(t,r,n,s,c){var u=1,f=[t],p=[r],g=s.m,m=s.s,v=null,b=0;t:for(;;){if(n)for(;u&&y(g,1);){var w=f,N=p,A=s,_=1,P=A.m,k=A.gc[A.ab],I=y(P,2);if(A.Oc&1<<I)u=0;else{switch(A.Oc|=1<<I,k.hc=I,k.Ea=w[0],k.nc=N[0],k.K=[null],++A.ab,e(4>=A.ab),I){case 0:case 1:k.b=y(P,3)+2,_=It(q(k.Ea,k.b),q(k.nc,k.b),0,A,k.K),k.K=k.K[0];break;case 3:var F,C=y(P,8)+1,j=16<C?0:4<C?1:2<C?2:3;if(w[0]=q(k.Ea,j),k.b=j,F=_=It(C,1,0,A,k.K)){var B,M=C,E=k,R=1<<(8>>E.b),T=a(R);if(null==T)F=0;else{var U=E.K[0],z=E.w;for(T[0]=E.K[0][0],B=1;B<1*M;++B)T[B]=D(U[z+B],T[B-1]);for(;B<4*R;++B)T[B]=0;E.K[0]=null,E.K[0]=T,F=1}}_=F;break;case 2:break;default:e(0)}u=_}}if(f=f[0],p=p[0],u&&y(g,1)&&!(u=1<=(b=y(g,4))&&11>=b)){s.a=3;break t}var H;if(H=u)e:{var W,V,G,Y=s,J=f,X=p,K=b,Z=n,$=Y.m,Q=Y.s,tt=[null],et=1,rt=0,nt=Qn[K];r:for(;;){if(Z&&y($,1)){var it=y($,3)+2,at=q(J,it),ot=q(X,it),st=at*ot;if(!It(at,ot,0,Y,tt))break r;for(tt=tt[0],Q.xc=it,W=0;W<st;++W){var ct=tt[W]>>8&65535;tt[W]=ct,ct>=et&&(et=ct+1)}}if($.h)break r;for(V=0;5>V;++V){var ut=Xn[V];!V&&0<K&&(ut+=1<<K),rt<ut&&(rt=ut)}var ht=o(et*nt,l),lt=et,ft=o(lt,d);if(null==ft)var dt=null;else e(65536>=lt),dt=ft;var pt=a(rt);if(null==dt||null==pt||null==ht){Y.a=1;break r}var gt=ht;for(W=G=0;W<et;++W){var mt=dt[W],vt=mt.G,bt=mt.H,wt=0,Nt=1,Lt=0;for(V=0;5>V;++V){ut=Xn[V],vt[V]=gt,bt[V]=G,!V&&0<K&&(ut+=1<<K);n:{var At,xt=ut,St=Y,kt=pt,Ft=gt,Ct=G,jt=0,Ot=St.m,Bt=y(Ot,1);if(i(kt,0,0,xt),Bt){var Mt=y(Ot,1)+1,Et=y(Ot,1),qt=y(Ot,0==Et?1:8);kt[qt]=1,2==Mt&&(kt[qt=y(Ot,8)]=1);var Dt=1}else{var Rt=a(19),Tt=y(Ot,4)+4;if(19<Tt){St.a=3;var Ut=0;break n}for(At=0;At<Tt;++At)Rt[Zn[At]]=y(Ot,3);var zt=void 0,Ht=void 0,Wt=St,Vt=Rt,Gt=xt,Yt=kt,Jt=0,Xt=Wt.m,Kt=8,Zt=o(128,l);i:for(;h(Zt,0,7,Vt,19);){if(y(Xt,1)){var $t=2+2*y(Xt,3);if((zt=2+y(Xt,$t))>Gt)break i}else zt=Gt;for(Ht=0;Ht<Gt&&zt--;){S(Xt);var Qt=Zt[0+(127&L(Xt))];x(Xt,Xt.u+Qt.g);var te=Qt.value;if(16>te)Yt[Ht++]=te,0!=te&&(Kt=te);else{var ee=16==te,re=te-16,ne=Jn[re],ie=y(Xt,Yn[re])+ne;if(Ht+ie>Gt)break i;for(var ae=ee?Kt:0;0<ie--;)Yt[Ht++]=ae}}Jt=1;break i}Jt||(Wt.a=3),Dt=Jt}(Dt=Dt&&!Ot.h)&&(jt=h(Ft,Ct,8,kt,xt)),Dt&&0!=jt?Ut=jt:(St.a=3,Ut=0)}if(0==Ut)break r;if(Nt&&1==Kn[V]&&(Nt=0==gt[G].g),wt+=gt[G].g,G+=Ut,3>=V){var oe,se=pt[0];for(oe=1;oe<ut;++oe)pt[oe]>se&&(se=pt[oe]);Lt+=se}}if(mt.nd=Nt,mt.Qb=0,Nt&&(mt.qb=(vt[3][bt[3]+0].value<<24|vt[1][bt[1]+0].value<<16|vt[2][bt[2]+0].value)>>>0,0==wt&&256>vt[0][bt[0]+0].value&&(mt.Qb=1,mt.qb+=vt[0][bt[0]+0].value<<8)),mt.jc=!mt.Qb&&6>Lt,mt.jc){var ce,ue=mt;for(ce=0;ce<Dr;++ce){var he=ce,le=ue.pd[he],fe=ue.G[0][ue.H[0]+he];256<=fe.value?(le.g=fe.g+256,le.value=fe.value):(le.g=0,le.value=0,he>>=yt(fe,8,le),he>>=yt(ue.G[1][ue.H[1]+he],16,le),he>>=yt(ue.G[2][ue.H[2]+he],0,le),yt(ue.G[3][ue.H[3]+he],24,le))}}}Q.vc=tt,Q.Wb=et,Q.Ya=dt,Q.yc=ht,H=1;break e}H=0}if(!(u=H)){s.a=3;break t}if(0<b){if(m.ua=1<<b,!O(m.Wa,b)){s.a=1,u=0;break t}}else m.ua=0;var de=s,pe=f,ge=p,me=de.s,ve=me.xc;if(de.c=pe,de.i=ge,me.md=q(pe,ve),me.wc=0==ve?-1:(1<<ve)-1,n){s.xb=pi;break t}if(null==(v=a(f*p))){s.a=1,u=0;break t}u=(u=_t(s,v,0,f,p,p,null))&&!g.h;break t}return u?(null!=c?c[0]=v:(e(null==v),e(n)),s.$=0,n||Pt(m)):Pt(m),u}function Ft(t,r){var n=t.c*t.i,i=n+r+16*r;return e(t.c<=r),t.V=a(i),null==t.V?(t.Ta=null,t.Ua=0,t.a=1,0):(t.Ta=t.V,t.Ua=t.Ba+n+r,1)}function Ct(t,r){var n=t.C,i=r-n,a=t.V,o=t.Ba+t.c*n;for(e(r<=t.l.o);0<i;){var s=16<i?16:i,c=t.l.ma,u=t.l.width,h=u*s,l=c.ca,f=c.tb+u*n,d=t.Ta,p=t.Ua;Nt(t,s,a,o),_n(d,p,l,f,h),xt(c,n,n+s,l,f,u),i-=s,a+=s*t.c,n+=s}e(n==r),t.C=t.Ma=r}function jt(){this.ub=this.yd=this.td=this.Rb=0}function Ot(){this.Kd=this.Ld=this.Ud=this.Td=this.i=this.c=0}function Bt(){this.Fb=this.Bb=this.Cb=0,this.Zb=a(4),this.Lb=a(4)}function Mt(){this.Yb=function(){var t=[];return function t(e,r,n){for(var i=n[r],a=0;a<i&&(e.push(n.length>r+1?[]:0),!(n.length<r+1));a++)t(e[a],r+1,n)}(t,0,[3,11]),t}()}function Et(){this.jb=a(3),this.Wc=s([4,8],Mt),this.Xc=s([4,17],Mt)}function qt(){this.Pc=this.wb=this.Tb=this.zd=0,this.vd=new a(4),this.od=new a(4)}function Dt(){this.ld=this.La=this.dd=this.tc=0}function Rt(){this.Na=this.la=0}function Tt(){this.Sc=[0,0],this.Eb=[0,0],this.Qc=[0,0],this.ia=this.lc=0}function Ut(){this.ad=a(384),this.Za=0,this.Ob=a(16),this.$b=this.Ad=this.ia=this.Gc=this.Hc=this.Dd=0}function zt(){this.uc=this.M=this.Nb=0,this.wa=Array(new Dt),this.Y=0,this.ya=Array(new Ut),this.aa=0,this.l=new Gt}function Ht(){this.y=a(16),this.f=a(8),this.ea=a(8)}function Wt(){this.cb=this.a=0,this.sc=\"\",this.m=new w,this.Od=new jt,this.Kc=new Ot,this.ed=new qt,this.Qa=new Bt,this.Ic=this.$c=this.Aa=0,this.D=new zt,this.Xb=this.Va=this.Hb=this.zb=this.yb=this.Ub=this.za=0,this.Jc=o(8,w),this.ia=0,this.pb=o(4,Tt),this.Pa=new Et,this.Bd=this.kc=0,this.Ac=[],this.Bc=0,this.zc=[0,0,0,0],this.Gd=Array(new Ht),this.Hd=0,this.rb=Array(new Rt),this.sb=0,this.wa=Array(new Dt),this.Y=0,this.oc=[],this.pc=0,this.sa=[],this.ta=0,this.qa=[],this.ra=0,this.Ha=[],this.B=this.R=this.Ia=0,this.Ec=[],this.M=this.ja=this.Vb=this.Fc=0,this.ya=Array(new Ut),this.L=this.aa=0,this.gd=s([4,2],Dt),this.ga=null,this.Fa=[],this.Cc=this.qc=this.P=0,this.Gb=[],this.Uc=0,this.mb=[],this.nb=0,this.rc=[],this.Ga=this.Vc=0}function Vt(t,e){return 0>t?0:t>e?e:t}function Gt(){this.T=this.U=this.ka=this.height=this.width=0,this.y=[],this.f=[],this.ea=[],this.Rc=this.fa=this.W=this.N=this.O=0,this.ma=\"void\",this.put=\"VP8IoPutHook\",this.ac=\"VP8IoSetupHook\",this.bc=\"VP8IoTeardownHook\",this.ha=this.Kb=0,this.data=[],this.hb=this.ib=this.da=this.o=this.j=this.va=this.v=this.Da=this.ob=this.w=0,this.F=[],this.J=0}function Yt(){var t=new Wt;return null!=t&&(t.a=0,t.sc=\"OK\",t.cb=0,t.Xb=0,ni||(ni=Zt)),t}function Jt(t,e,r){return 0==t.a&&(t.a=e,t.sc=r,t.cb=0),0}function Xt(t,e,r){return 3<=r&&157==t[e+0]&&1==t[e+1]&&42==t[e+2]}function Kt(t,r){if(null==t)return 0;if(t.a=0,t.sc=\"OK\",null==r)return Jt(t,2,\"null VP8Io passed to VP8GetHeaders()\");var n=r.data,a=r.w,o=r.ha;if(4>o)return Jt(t,7,\"Truncated header.\");var s=n[a+0]|n[a+1]<<8|n[a+2]<<16,c=t.Od;if(c.Rb=!(1&s),c.td=s>>1&7,c.yd=s>>4&1,c.ub=s>>5,3<c.td)return Jt(t,3,\"Incorrect keyframe parameters.\");if(!c.yd)return Jt(t,4,\"Frame not displayable.\");a+=3,o-=3;var u=t.Kc;if(c.Rb){if(7>o)return Jt(t,7,\"cannot parse picture header\");if(!Xt(n,a,o))return Jt(t,3,\"Bad code word\");u.c=16383&(n[a+4]<<8|n[a+3]),u.Td=n[a+4]>>6,u.i=16383&(n[a+6]<<8|n[a+5]),u.Ud=n[a+6]>>6,a+=7,o-=7,t.za=u.c+15>>4,t.Ub=u.i+15>>4,r.width=u.c,r.height=u.i,r.Da=0,r.j=0,r.v=0,r.va=r.width,r.o=r.height,r.da=0,r.ib=r.width,r.hb=r.height,r.U=r.width,r.T=r.height,i((s=t.Pa).jb,0,255,s.jb.length),e(null!=(s=t.Qa)),s.Cb=0,s.Bb=0,s.Fb=1,i(s.Zb,0,0,s.Zb.length),i(s.Lb,0,0,s.Lb)}if(c.ub>o)return Jt(t,7,\"bad partition length\");p(s=t.m,n,a,c.ub),a+=c.ub,o-=c.ub,c.Rb&&(u.Ld=P(s),u.Kd=P(s)),u=t.Qa;var h,l=t.Pa;if(e(null!=s),e(null!=u),u.Cb=P(s),u.Cb){if(u.Bb=P(s),P(s)){for(u.Fb=P(s),h=0;4>h;++h)u.Zb[h]=P(s)?m(s,7):0;for(h=0;4>h;++h)u.Lb[h]=P(s)?m(s,6):0}if(u.Bb)for(h=0;3>h;++h)l.jb[h]=P(s)?g(s,8):255}else u.Bb=0;if(s.Ka)return Jt(t,3,\"cannot parse segment header\");if((u=t.ed).zd=P(s),u.Tb=g(s,6),u.wb=g(s,3),u.Pc=P(s),u.Pc&&P(s)){for(l=0;4>l;++l)P(s)&&(u.vd[l]=m(s,6));for(l=0;4>l;++l)P(s)&&(u.od[l]=m(s,6))}if(t.L=0==u.Tb?0:u.zd?1:2,s.Ka)return Jt(t,3,\"cannot parse filter header\");var f=o;if(o=h=a,a=h+f,u=f,t.Xb=(1<<g(t.m,2))-1,f<3*(l=t.Xb))n=7;else{for(h+=3*l,u-=3*l,f=0;f<l;++f){var d=n[o+0]|n[o+1]<<8|n[o+2]<<16;d>u&&(d=u),p(t.Jc[+f],n,h,d),h+=d,u-=d,o+=3}p(t.Jc[+l],n,h,u),n=h<a?0:5}if(0!=n)return Jt(t,n,\"cannot parse partitions\");for(n=g(h=t.m,7),o=P(h)?m(h,4):0,a=P(h)?m(h,4):0,u=P(h)?m(h,4):0,l=P(h)?m(h,4):0,h=P(h)?m(h,4):0,f=t.Qa,d=0;4>d;++d){if(f.Cb){var v=f.Zb[d];f.Fb||(v+=n)}else{if(0<d){t.pb[d]=t.pb[0];continue}v=n}var b=t.pb[d];b.Sc[0]=ei[Vt(v+o,127)],b.Sc[1]=ri[Vt(v+0,127)],b.Eb[0]=2*ei[Vt(v+a,127)],b.Eb[1]=101581*ri[Vt(v+u,127)]>>16,8>b.Eb[1]&&(b.Eb[1]=8),b.Qc[0]=ei[Vt(v+l,117)],b.Qc[1]=ri[Vt(v+h,127)],b.lc=v+h}if(!c.Rb)return Jt(t,4,\"Not a key frame.\");for(P(s),c=t.Pa,n=0;4>n;++n){for(o=0;8>o;++o)for(a=0;3>a;++a)for(u=0;11>u;++u)l=k(s,ui[n][o][a][u])?g(s,8):si[n][o][a][u],c.Wc[n][o].Yb[a][u]=l;for(o=0;17>o;++o)c.Xc[n][o]=c.Wc[n][hi[o]]}return t.kc=P(s),t.kc&&(t.Bd=g(s,8)),t.cb=1}function Zt(t,e,r,n,i,a,o){var s=e[i].Yb[r];for(r=0;16>i;++i){if(!k(t,s[r+0]))return i;for(;!k(t,s[r+1]);)if(s=e[++i].Yb[0],r=0,16==i)return 16;var c=e[i+1].Yb;if(k(t,s[r+2])){var u=t,h=0;if(k(u,(f=s)[(l=r)+3]))if(k(u,f[l+6])){for(s=0,l=2*(h=k(u,f[l+8]))+(f=k(u,f[l+9+h])),h=0,f=ii[l];f[s];++s)h+=h+k(u,f[s]);h+=3+(8<<l)}else k(u,f[l+7])?(h=7+2*k(u,165),h+=k(u,145)):h=5+k(u,159);else h=k(u,f[l+4])?3+k(u,f[l+5]):2;s=c[2]}else h=1,s=c[1];c=o+ai[i],0>(u=t).b&&_(u);var l,f=u.b,d=(l=u.Ca>>1)-(u.I>>f)>>31;--u.b,u.Ca+=d,u.Ca|=1,u.I-=(l+1&d)<<f,a[c]=((h^d)-d)*n[(0<i)+0]}return 16}function $t(t){var e=t.rb[t.sb-1];e.la=0,e.Na=0,i(t.zc,0,0,t.zc.length),t.ja=0}function Qt(t,r){if(null==t)return 0;if(null==r)return Jt(t,2,\"NULL VP8Io parameter in VP8Decode().\");if(!t.cb&&!Kt(t,r))return 0;if(e(t.cb),null==r.ac||r.ac(r)){r.ob&&(t.L=0);var s=Ri[t.L];if(2==t.L?(t.yb=0,t.zb=0):(t.yb=r.v-s>>4,t.zb=r.j-s>>4,0>t.yb&&(t.yb=0),0>t.zb&&(t.zb=0)),t.Va=r.o+15+s>>4,t.Hb=r.va+15+s>>4,t.Hb>t.za&&(t.Hb=t.za),t.Va>t.Ub&&(t.Va=t.Ub),0<t.L){var c=t.ed;for(s=0;4>s;++s){var u;if(t.Qa.Cb){var h=t.Qa.Lb[s];t.Qa.Fb||(h+=c.Tb)}else h=c.Tb;for(u=0;1>=u;++u){var l=t.gd[s][u],f=h;if(c.Pc&&(f+=c.vd[0],u&&(f+=c.od[0])),0<(f=0>f?0:63<f?63:f)){var d=f;0<c.wb&&((d=4<c.wb?d>>2:d>>1)>9-c.wb&&(d=9-c.wb)),1>d&&(d=1),l.dd=d,l.tc=2*f+d,l.ld=40<=f?2:15<=f?1:0}else l.tc=0;l.La=u}}}s=0}else Jt(t,6,\"Frame setup failed\"),s=t.a;if(s=0==s){if(s){t.$c=0,0<t.Aa||(t.Ic=Ui);t:{s=t.Ic;c=4*(d=t.za);var p=32*d,g=d+1,m=0<t.L?d*(0<t.Aa?2:1):0,v=(2==t.Aa?2:1)*d;if((l=c+832+(u=3*(16*s+Ri[t.L])/2*p)+(h=null!=t.Fa&&0<t.Fa.length?t.Kc.c*t.Kc.i:0))!=l)s=0;else{if(l>t.Vb){if(t.Vb=0,t.Ec=a(l),t.Fc=0,null==t.Ec){s=Jt(t,1,\"no memory during frame initialization.\");break t}t.Vb=l}l=t.Ec,f=t.Fc,t.Ac=l,t.Bc=f,f+=c,t.Gd=o(p,Ht),t.Hd=0,t.rb=o(g+1,Rt),t.sb=1,t.wa=m?o(m,Dt):null,t.Y=0,t.D.Nb=0,t.D.wa=t.wa,t.D.Y=t.Y,0<t.Aa&&(t.D.Y+=d),e(!0),t.oc=l,t.pc=f,f+=832,t.ya=o(v,Ut),t.aa=0,t.D.ya=t.ya,t.D.aa=t.aa,2==t.Aa&&(t.D.aa+=d),t.R=16*d,t.B=8*d,d=(p=Ri[t.L])*t.R,p=p/2*t.B,t.sa=l,t.ta=f+d,t.qa=t.sa,t.ra=t.ta+16*s*t.R+p,t.Ha=t.qa,t.Ia=t.ra+8*s*t.B+p,t.$c=0,f+=u,t.mb=h?l:null,t.nb=h?f:null,e(f+h<=t.Fc+t.Vb),$t(t),i(t.Ac,t.Bc,0,c),s=1}}if(s){if(r.ka=0,r.y=t.sa,r.O=t.ta,r.f=t.qa,r.N=t.ra,r.ea=t.Ha,r.Vd=t.Ia,r.fa=t.R,r.Rc=t.B,r.F=null,r.J=0,!Cn){for(s=-255;255>=s;++s)Pn[255+s]=0>s?-s:s;for(s=-1020;1020>=s;++s)kn[1020+s]=-128>s?-128:127<s?127:s;for(s=-112;112>=s;++s)In[112+s]=-16>s?-16:15<s?15:s;for(s=-255;510>=s;++s)Fn[255+s]=0>s?0:255<s?255:s;Cn=1}an=ue,on=ae,cn=oe,un=se,hn=ce,sn=ie,ln=Je,fn=Xe,dn=$e,pn=Qe,gn=Ke,mn=Ze,vn=tr,bn=er,yn=ze,wn=He,Nn=We,Ln=Ve,fi[0]=xe,fi[1]=le,fi[2]=Le,fi[3]=Ae,fi[4]=Se,fi[5]=Pe,fi[6]=_e,fi[7]=ke,fi[8]=Fe,fi[9]=Ie,li[0]=ve,li[1]=de,li[2]=pe,li[3]=ge,li[4]=be,li[5]=ye,li[6]=we,di[0]=Be,di[1]=fe,di[2]=Ce,di[3]=je,di[4]=Ee,di[5]=Me,di[6]=qe,s=1}else s=0}s&&(s=function(t,r){for(t.M=0;t.M<t.Va;++t.M){var o,s=t.Jc[t.M&t.Xb],c=t.m,u=t;for(o=0;o<u.za;++o){var h=c,l=u,f=l.Ac,d=l.Bc+4*o,p=l.zc,g=l.ya[l.aa+o];if(l.Qa.Bb?g.$b=k(h,l.Pa.jb[0])?2+k(h,l.Pa.jb[2]):k(h,l.Pa.jb[1]):g.$b=0,l.kc&&(g.Ad=k(h,l.Bd)),g.Za=!k(h,145)+0,g.Za){var m=g.Ob,v=0;for(l=0;4>l;++l){var b,y=p[0+l];for(b=0;4>b;++b){y=ci[f[d+b]][y];for(var w=oi[k(h,y[0])];0<w;)w=oi[2*w+k(h,y[w])];y=-w,f[d+b]=y}n(m,v,f,d,4),v+=4,p[0+l]=y}}else y=k(h,156)?k(h,128)?1:3:k(h,163)?2:0,g.Ob[0]=y,i(f,d,y,4),i(p,0,y,4);g.Dd=k(h,142)?k(h,114)?k(h,183)?1:3:2:0}if(u.m.Ka)return Jt(t,7,\"Premature end-of-partition0 encountered.\");for(;t.ja<t.za;++t.ja){if(u=s,h=(c=t).rb[c.sb-1],f=c.rb[c.sb+c.ja],o=c.ya[c.aa+c.ja],d=c.kc?o.Ad:0)h.la=f.la=0,o.Za||(h.Na=f.Na=0),o.Hc=0,o.Gc=0,o.ia=0;else{var N,L;h=f,f=u,d=c.Pa.Xc,p=c.ya[c.aa+c.ja],g=c.pb[p.$b];if(l=p.ad,m=0,v=c.rb[c.sb-1],y=b=0,i(l,m,0,384),p.Za)var A=0,x=d[3];else{w=a(16);var S=h.Na+v.Na;if(S=ni(f,d[1],S,g.Eb,0,w,0),h.Na=v.Na=(0<S)+0,1<S)an(w,0,l,m);else{var _=w[0]+3>>3;for(w=0;256>w;w+=16)l[m+w]=_}A=1,x=d[0]}var P=15&h.la,I=15&v.la;for(w=0;4>w;++w){var F=1&I;for(_=L=0;4>_;++_)P=P>>1|(F=(S=ni(f,x,S=F+(1&P),g.Sc,A,l,m))>A)<<7,L=L<<2|(3<S?3:1<S?2:0!=l[m+0]),m+=16;P>>=4,I=I>>1|F<<7,b=(b<<8|L)>>>0}for(x=P,A=I>>4,N=0;4>N;N+=2){for(L=0,P=h.la>>4+N,I=v.la>>4+N,w=0;2>w;++w){for(F=1&I,_=0;2>_;++_)S=F+(1&P),P=P>>1|(F=0<(S=ni(f,d[2],S,g.Qc,0,l,m)))<<3,L=L<<2|(3<S?3:1<S?2:0!=l[m+0]),m+=16;P>>=2,I=I>>1|F<<5}y|=L<<4*N,x|=P<<4<<N,A|=(240&I)<<N}h.la=x,v.la=A,p.Hc=b,p.Gc=y,p.ia=43690&y?0:g.ia,d=!(b|y)}if(0<c.L&&(c.wa[c.Y+c.ja]=c.gd[o.$b][o.Za],c.wa[c.Y+c.ja].La|=!d),u.Ka)return Jt(t,7,\"Premature end-of-file encountered.\")}if($t(t),c=r,u=1,o=(s=t).D,h=0<s.L&&s.M>=s.zb&&s.M<=s.Va,0==s.Aa)t:{if(o.M=s.M,o.uc=h,Or(s,o),u=1,o=(L=s.D).Nb,h=(y=Ri[s.L])*s.R,f=y/2*s.B,w=16*o*s.R,_=8*o*s.B,d=s.sa,p=s.ta-h+w,g=s.qa,l=s.ra-f+_,m=s.Ha,v=s.Ia-f+_,I=0==(P=L.M),b=P>=s.Va-1,2==s.Aa&&Or(s,L),L.uc)for(F=(S=s).D.M,e(S.D.uc),L=S.yb;L<S.Hb;++L){A=L,x=F;var C=(j=(U=S).D).Nb;N=U.R;var j=j.wa[j.Y+A],O=U.sa,B=U.ta+16*C*N+16*A,M=j.dd,E=j.tc;if(0!=E)if(e(3<=E),1==U.L)0<A&&wn(O,B,N,E+4),j.La&&Ln(O,B,N,E),0<x&&yn(O,B,N,E+4),j.La&&Nn(O,B,N,E);else{var q=U.B,D=U.qa,R=U.ra+8*C*q+8*A,T=U.Ha,U=U.Ia+8*C*q+8*A;C=j.ld;0<A&&(fn(O,B,N,E+4,M,C),pn(D,R,T,U,q,E+4,M,C)),j.La&&(mn(O,B,N,E,M,C),bn(D,R,T,U,q,E,M,C)),0<x&&(ln(O,B,N,E+4,M,C),dn(D,R,T,U,q,E+4,M,C)),j.La&&(gn(O,B,N,E,M,C),vn(D,R,T,U,q,E,M,C))}}if(s.ia&&alert(\"todo:DitherRow\"),null!=c.put){if(L=16*P,P=16*(P+1),I?(c.y=s.sa,c.O=s.ta+w,c.f=s.qa,c.N=s.ra+_,c.ea=s.Ha,c.W=s.Ia+_):(L-=y,c.y=d,c.O=p,c.f=g,c.N=l,c.ea=m,c.W=v),b||(P-=y),P>c.o&&(P=c.o),c.F=null,c.J=null,null!=s.Fa&&0<s.Fa.length&&L<P&&(c.J=lr(s,c,L,P-L),c.F=s.mb,null==c.F&&0==c.F.length)){u=Jt(s,3,\"Could not decode alpha data.\");break t}L<c.j&&(y=c.j-L,L=c.j,e(!(1&y)),c.O+=s.R*y,c.N+=s.B*(y>>1),c.W+=s.B*(y>>1),null!=c.F&&(c.J+=c.width*y)),L<P&&(c.O+=c.v,c.N+=c.v>>1,c.W+=c.v>>1,null!=c.F&&(c.J+=c.v),c.ka=L-c.j,c.U=c.va-c.v,c.T=P-L,u=c.put(c))}o+1!=s.Ic||b||(n(s.sa,s.ta-h,d,p+16*s.R,h),n(s.qa,s.ra-f,g,l+8*s.B,f),n(s.Ha,s.Ia-f,m,v+8*s.B,f))}if(!u)return Jt(t,6,\"Output aborted.\")}return 1}(t,r)),null!=r.bc&&r.bc(r),s&=1}return s?(t.cb=0,s):0}function te(t,e,r,n,i){i=t[e+r+32*n]+(i>>3),t[e+r+32*n]=-256&i?0>i?0:255:i}function ee(t,e,r,n,i,a){te(t,e,0,r,n+i),te(t,e,1,r,n+a),te(t,e,2,r,n-a),te(t,e,3,r,n-i)}function re(t){return(20091*t>>16)+t}function ne(t,e,r,n){var i,o=0,s=a(16);for(i=0;4>i;++i){var c=t[e+0]+t[e+8],u=t[e+0]-t[e+8],h=(35468*t[e+4]>>16)-re(t[e+12]),l=re(t[e+4])+(35468*t[e+12]>>16);s[o+0]=c+l,s[o+1]=u+h,s[o+2]=u-h,s[o+3]=c-l,o+=4,e++}for(i=o=0;4>i;++i)c=(t=s[o+0]+4)+s[o+8],u=t-s[o+8],h=(35468*s[o+4]>>16)-re(s[o+12]),te(r,n,0,0,c+(l=re(s[o+4])+(35468*s[o+12]>>16))),te(r,n,1,0,u+h),te(r,n,2,0,u-h),te(r,n,3,0,c-l),o++,n+=32}function ie(t,e,r,n){var i=t[e+0]+4,a=35468*t[e+4]>>16,o=re(t[e+4]),s=35468*t[e+1]>>16;ee(r,n,0,i+o,t=re(t[e+1]),s),ee(r,n,1,i+a,t,s),ee(r,n,2,i-a,t,s),ee(r,n,3,i-o,t,s)}function ae(t,e,r,n,i){ne(t,e,r,n),i&&ne(t,e+16,r,n+4)}function oe(t,e,r,n){on(t,e+0,r,n,1),on(t,e+32,r,n+128,1)}function se(t,e,r,n){var i;for(t=t[e+0]+4,i=0;4>i;++i)for(e=0;4>e;++e)te(r,n,e,i,t)}function ce(t,e,r,n){t[e+0]&&un(t,e+0,r,n),t[e+16]&&un(t,e+16,r,n+4),t[e+32]&&un(t,e+32,r,n+128),t[e+48]&&un(t,e+48,r,n+128+4)}function ue(t,e,r,n){var i,o=a(16);for(i=0;4>i;++i){var s=t[e+0+i]+t[e+12+i],c=t[e+4+i]+t[e+8+i],u=t[e+4+i]-t[e+8+i],h=t[e+0+i]-t[e+12+i];o[0+i]=s+c,o[8+i]=s-c,o[4+i]=h+u,o[12+i]=h-u}for(i=0;4>i;++i)s=(t=o[0+4*i]+3)+o[3+4*i],c=o[1+4*i]+o[2+4*i],u=o[1+4*i]-o[2+4*i],h=t-o[3+4*i],r[n+0]=s+c>>3,r[n+16]=h+u>>3,r[n+32]=s-c>>3,r[n+48]=h-u>>3,n+=64}function he(t,e,r){var n,i=e-32,a=Bn,o=255-t[i-1];for(n=0;n<r;++n){var s,c=a,u=o+t[e-1];for(s=0;s<r;++s)t[e+s]=c[u+t[i+s]];e+=32}}function le(t,e){he(t,e,4)}function fe(t,e){he(t,e,8)}function de(t,e){he(t,e,16)}function pe(t,e){var r;for(r=0;16>r;++r)n(t,e+32*r,t,e-32,16)}function ge(t,e){var r;for(r=16;0<r;--r)i(t,e,t[e-1],16),e+=32}function me(t,e,r){var n;for(n=0;16>n;++n)i(e,r+32*n,t,16)}function ve(t,e){var r,n=16;for(r=0;16>r;++r)n+=t[e-1+32*r]+t[e+r-32];me(n>>5,t,e)}function be(t,e){var r,n=8;for(r=0;16>r;++r)n+=t[e-1+32*r];me(n>>4,t,e)}function ye(t,e){var r,n=8;for(r=0;16>r;++r)n+=t[e+r-32];me(n>>4,t,e)}function we(t,e){me(128,t,e)}function Ne(t,e,r){return t+2*e+r+2>>2}function Le(t,e){var r,i=e-32;i=new Uint8Array([Ne(t[i-1],t[i+0],t[i+1]),Ne(t[i+0],t[i+1],t[i+2]),Ne(t[i+1],t[i+2],t[i+3]),Ne(t[i+2],t[i+3],t[i+4])]);for(r=0;4>r;++r)n(t,e+32*r,i,0,i.length)}function Ae(t,e){var r=t[e-1],n=t[e-1+32],i=t[e-1+64],a=t[e-1+96];I(t,e+0,16843009*Ne(t[e-1-32],r,n)),I(t,e+32,16843009*Ne(r,n,i)),I(t,e+64,16843009*Ne(n,i,a)),I(t,e+96,16843009*Ne(i,a,a))}function xe(t,e){var r,n=4;for(r=0;4>r;++r)n+=t[e+r-32]+t[e-1+32*r];for(n>>=3,r=0;4>r;++r)i(t,e+32*r,n,4)}function Se(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1-32],o=t[e+0-32],s=t[e+1-32],c=t[e+2-32],u=t[e+3-32];t[e+0+96]=Ne(n,i,t[e-1+96]),t[e+1+96]=t[e+0+64]=Ne(r,n,i),t[e+2+96]=t[e+1+64]=t[e+0+32]=Ne(a,r,n),t[e+3+96]=t[e+2+64]=t[e+1+32]=t[e+0+0]=Ne(o,a,r),t[e+3+64]=t[e+2+32]=t[e+1+0]=Ne(s,o,a),t[e+3+32]=t[e+2+0]=Ne(c,s,o),t[e+3+0]=Ne(u,c,s)}function _e(t,e){var r=t[e+1-32],n=t[e+2-32],i=t[e+3-32],a=t[e+4-32],o=t[e+5-32],s=t[e+6-32],c=t[e+7-32];t[e+0+0]=Ne(t[e+0-32],r,n),t[e+1+0]=t[e+0+32]=Ne(r,n,i),t[e+2+0]=t[e+1+32]=t[e+0+64]=Ne(n,i,a),t[e+3+0]=t[e+2+32]=t[e+1+64]=t[e+0+96]=Ne(i,a,o),t[e+3+32]=t[e+2+64]=t[e+1+96]=Ne(a,o,s),t[e+3+64]=t[e+2+96]=Ne(o,s,c),t[e+3+96]=Ne(s,c,c)}function Pe(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1-32],o=t[e+0-32],s=t[e+1-32],c=t[e+2-32],u=t[e+3-32];t[e+0+0]=t[e+1+64]=a+o+1>>1,t[e+1+0]=t[e+2+64]=o+s+1>>1,t[e+2+0]=t[e+3+64]=s+c+1>>1,t[e+3+0]=c+u+1>>1,t[e+0+96]=Ne(i,n,r),t[e+0+64]=Ne(n,r,a),t[e+0+32]=t[e+1+96]=Ne(r,a,o),t[e+1+32]=t[e+2+96]=Ne(a,o,s),t[e+2+32]=t[e+3+96]=Ne(o,s,c),t[e+3+32]=Ne(s,c,u)}function ke(t,e){var r=t[e+0-32],n=t[e+1-32],i=t[e+2-32],a=t[e+3-32],o=t[e+4-32],s=t[e+5-32],c=t[e+6-32],u=t[e+7-32];t[e+0+0]=r+n+1>>1,t[e+1+0]=t[e+0+64]=n+i+1>>1,t[e+2+0]=t[e+1+64]=i+a+1>>1,t[e+3+0]=t[e+2+64]=a+o+1>>1,t[e+0+32]=Ne(r,n,i),t[e+1+32]=t[e+0+96]=Ne(n,i,a),t[e+2+32]=t[e+1+96]=Ne(i,a,o),t[e+3+32]=t[e+2+96]=Ne(a,o,s),t[e+3+64]=Ne(o,s,c),t[e+3+96]=Ne(s,c,u)}function Ie(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1+96];t[e+0+0]=r+n+1>>1,t[e+2+0]=t[e+0+32]=n+i+1>>1,t[e+2+32]=t[e+0+64]=i+a+1>>1,t[e+1+0]=Ne(r,n,i),t[e+3+0]=t[e+1+32]=Ne(n,i,a),t[e+3+32]=t[e+1+64]=Ne(i,a,a),t[e+3+64]=t[e+2+64]=t[e+0+96]=t[e+1+96]=t[e+2+96]=t[e+3+96]=a}function Fe(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1+96],o=t[e-1-32],s=t[e+0-32],c=t[e+1-32],u=t[e+2-32];t[e+0+0]=t[e+2+32]=r+o+1>>1,t[e+0+32]=t[e+2+64]=n+r+1>>1,t[e+0+64]=t[e+2+96]=i+n+1>>1,t[e+0+96]=a+i+1>>1,t[e+3+0]=Ne(s,c,u),t[e+2+0]=Ne(o,s,c),t[e+1+0]=t[e+3+32]=Ne(r,o,s),t[e+1+32]=t[e+3+64]=Ne(n,r,o),t[e+1+64]=t[e+3+96]=Ne(i,n,r),t[e+1+96]=Ne(a,i,n)}function Ce(t,e){var r;for(r=0;8>r;++r)n(t,e+32*r,t,e-32,8)}function je(t,e){var r;for(r=0;8>r;++r)i(t,e,t[e-1],8),e+=32}function Oe(t,e,r){var n;for(n=0;8>n;++n)i(e,r+32*n,t,8)}function Be(t,e){var r,n=8;for(r=0;8>r;++r)n+=t[e+r-32]+t[e-1+32*r];Oe(n>>4,t,e)}function Me(t,e){var r,n=4;for(r=0;8>r;++r)n+=t[e+r-32];Oe(n>>3,t,e)}function Ee(t,e){var r,n=4;for(r=0;8>r;++r)n+=t[e-1+32*r];Oe(n>>3,t,e)}function qe(t,e){Oe(128,t,e)}function De(t,e,r){var n=t[e-r],i=t[e+0],a=3*(i-n)+jn[1020+t[e-2*r]-t[e+r]],o=On[112+(a+4>>3)];t[e-r]=Bn[255+n+On[112+(a+3>>3)]],t[e+0]=Bn[255+i-o]}function Re(t,e,r,n){var i=t[e+0],a=t[e+r];return Mn[255+t[e-2*r]-t[e-r]]>n||Mn[255+a-i]>n}function Te(t,e,r,n){return 4*Mn[255+t[e-r]-t[e+0]]+Mn[255+t[e-2*r]-t[e+r]]<=n}function Ue(t,e,r,n,i){var a=t[e-3*r],o=t[e-2*r],s=t[e-r],c=t[e+0],u=t[e+r],h=t[e+2*r],l=t[e+3*r];return 4*Mn[255+s-c]+Mn[255+o-u]>n?0:Mn[255+t[e-4*r]-a]<=i&&Mn[255+a-o]<=i&&Mn[255+o-s]<=i&&Mn[255+l-h]<=i&&Mn[255+h-u]<=i&&Mn[255+u-c]<=i}function ze(t,e,r,n){var i=2*n+1;for(n=0;16>n;++n)Te(t,e+n,r,i)&&De(t,e+n,r)}function He(t,e,r,n){var i=2*n+1;for(n=0;16>n;++n)Te(t,e+n*r,1,i)&&De(t,e+n*r,1)}function We(t,e,r,n){var i;for(i=3;0<i;--i)ze(t,e+=4*r,r,n)}function Ve(t,e,r,n){var i;for(i=3;0<i;--i)He(t,e+=4,r,n)}function Ge(t,e,r,n,i,a,o,s){for(a=2*a+1;0<i--;){if(Ue(t,e,r,a,o))if(Re(t,e,r,s))De(t,e,r);else{var c=t,u=e,h=r,l=c[u-2*h],f=c[u-h],d=c[u+0],p=c[u+h],g=c[u+2*h],m=27*(b=jn[1020+3*(d-f)+jn[1020+l-p]])+63>>7,v=18*b+63>>7,b=9*b+63>>7;c[u-3*h]=Bn[255+c[u-3*h]+b],c[u-2*h]=Bn[255+l+v],c[u-h]=Bn[255+f+m],c[u+0]=Bn[255+d-m],c[u+h]=Bn[255+p-v],c[u+2*h]=Bn[255+g-b]}e+=n}}function Ye(t,e,r,n,i,a,o,s){for(a=2*a+1;0<i--;){if(Ue(t,e,r,a,o))if(Re(t,e,r,s))De(t,e,r);else{var c=t,u=e,h=r,l=c[u-h],f=c[u+0],d=c[u+h],p=On[112+((g=3*(f-l))+4>>3)],g=On[112+(g+3>>3)],m=p+1>>1;c[u-2*h]=Bn[255+c[u-2*h]+m],c[u-h]=Bn[255+l+g],c[u+0]=Bn[255+f-p],c[u+h]=Bn[255+d-m]}e+=n}}function Je(t,e,r,n,i,a){Ge(t,e,r,1,16,n,i,a)}function Xe(t,e,r,n,i,a){Ge(t,e,1,r,16,n,i,a)}function Ke(t,e,r,n,i,a){var o;for(o=3;0<o;--o)Ye(t,e+=4*r,r,1,16,n,i,a)}function Ze(t,e,r,n,i,a){var o;for(o=3;0<o;--o)Ye(t,e+=4,1,r,16,n,i,a)}function $e(t,e,r,n,i,a,o,s){Ge(t,e,i,1,8,a,o,s),Ge(r,n,i,1,8,a,o,s)}function Qe(t,e,r,n,i,a,o,s){Ge(t,e,1,i,8,a,o,s),Ge(r,n,1,i,8,a,o,s)}function tr(t,e,r,n,i,a,o,s){Ye(t,e+4*i,i,1,8,a,o,s),Ye(r,n+4*i,i,1,8,a,o,s)}function er(t,e,r,n,i,a,o,s){Ye(t,e+4,1,i,8,a,o,s),Ye(r,n+4,1,i,8,a,o,s)}function rr(){this.ba=new ot,this.ec=[],this.cc=[],this.Mc=[],this.Dc=this.Nc=this.dc=this.fc=0,this.Oa=new ct,this.memory=0,this.Ib=\"OutputFunc\",this.Jb=\"OutputAlphaFunc\",this.Nd=\"OutputRowFunc\"}function nr(){this.data=[],this.offset=this.kd=this.ha=this.w=0,this.na=[],this.xa=this.gb=this.Ja=this.Sa=this.P=0}function ir(){this.nc=this.Ea=this.b=this.hc=0,this.K=[],this.w=0}function ar(){this.ua=0,this.Wa=new M,this.vb=new M,this.md=this.xc=this.wc=0,this.vc=[],this.Wb=0,this.Ya=new d,this.yc=new l}function or(){this.xb=this.a=0,this.l=new Gt,this.ca=new ot,this.V=[],this.Ba=0,this.Ta=[],this.Ua=0,this.m=new N,this.Pb=0,this.wd=new N,this.Ma=this.$=this.C=this.i=this.c=this.xd=0,this.s=new ar,this.ab=0,this.gc=o(4,ir),this.Oc=0}function sr(){this.Lc=this.Z=this.$a=this.i=this.c=0,this.l=new Gt,this.ic=0,this.ca=[],this.tb=0,this.qd=null,this.rd=0}function cr(t,e,r,n,i,a,o){for(t=null==t?0:t[e+0],e=0;e<o;++e)i[a+e]=t+r[n+e]&255,t=i[a+e]}function ur(t,e,r,n,i,a,o){var s;if(null==t)cr(null,null,r,n,i,a,o);else for(s=0;s<o;++s)i[a+s]=t[e+s]+r[n+s]&255}function hr(t,e,r,n,i,a,o){if(null==t)cr(null,null,r,n,i,a,o);else{var s,c=t[e+0],u=c,h=c;for(s=0;s<o;++s)u=h+(c=t[e+s])-u,h=r[n+s]+(-256&u?0>u?0:255:u)&255,u=c,i[a+s]=h}}function lr(t,r,i,o){var s=r.width,c=r.o;if(e(null!=t&&null!=r),0>i||0>=o||i+o>c)return null;if(!t.Cc){if(null==t.ga){var u;if(t.ga=new sr,(u=null==t.ga)||(u=r.width*r.o,e(0==t.Gb.length),t.Gb=a(u),t.Uc=0,null==t.Gb?u=0:(t.mb=t.Gb,t.nb=t.Uc,t.rc=null,u=1),u=!u),!u){u=t.ga;var h=t.Fa,l=t.P,f=t.qc,d=t.mb,p=t.nb,g=l+1,m=f-1,b=u.l;if(e(null!=h&&null!=d&&null!=r),mi[0]=null,mi[1]=cr,mi[2]=ur,mi[3]=hr,u.ca=d,u.tb=p,u.c=r.width,u.i=r.height,e(0<u.c&&0<u.i),1>=f)r=0;else if(u.$a=h[l+0]>>0&3,u.Z=h[l+0]>>2&3,u.Lc=h[l+0]>>4&3,l=h[l+0]>>6&3,0>u.$a||1<u.$a||4<=u.Z||1<u.Lc||l)r=0;else if(b.put=dt,b.ac=ft,b.bc=pt,b.ma=u,b.width=r.width,b.height=r.height,b.Da=r.Da,b.v=r.v,b.va=r.va,b.j=r.j,b.o=r.o,u.$a)t:{e(1==u.$a),r=kt();e:for(;;){if(null==r){r=0;break t}if(e(null!=u),u.mc=r,r.c=u.c,r.i=u.i,r.l=u.l,r.l.ma=u,r.l.width=u.c,r.l.height=u.i,r.a=0,v(r.m,h,g,m),!It(u.c,u.i,1,r,null))break e;if(1==r.ab&&3==r.gc[0].hc&&At(r.s)?(u.ic=1,h=r.c*r.i,r.Ta=null,r.Ua=0,r.V=a(h),r.Ba=0,null==r.V?(r.a=1,r=0):r=1):(u.ic=0,r=Ft(r,u.c)),!r)break e;r=1;break t}u.mc=null,r=0}else r=m>=u.c*u.i;u=!r}if(u)return null;1!=t.ga.Lc?t.Ga=0:o=c-i}e(null!=t.ga),e(i+o<=c);t:{if(r=(h=t.ga).c,c=h.l.o,0==h.$a){if(g=t.rc,m=t.Vc,b=t.Fa,l=t.P+1+i*r,f=t.mb,d=t.nb+i*r,e(l<=t.P+t.qc),0!=h.Z)for(e(null!=mi[h.Z]),u=0;u<o;++u)mi[h.Z](g,m,b,l,f,d,r),g=f,m=d,d+=r,l+=r;else for(u=0;u<o;++u)n(f,d,b,l,r),g=f,m=d,d+=r,l+=r;t.rc=g,t.Vc=m}else{if(e(null!=h.mc),r=i+o,e(null!=(u=h.mc)),e(r<=u.i),u.C>=r)r=1;else if(h.ic||mr(),h.ic){h=u.V,g=u.Ba,m=u.c;var y=u.i,w=(b=1,l=u.$/m,f=u.$%m,d=u.m,p=u.s,u.$),N=m*y,L=m*r,x=p.wc,_=w<L?wt(p,f,l):null;e(w<=N),e(r<=y),e(At(p));e:for(;;){for(;!d.h&&w<L;){if(f&x||(_=wt(p,f,l)),e(null!=_),S(d),256>(y=bt(_.G[0],_.H[0],d)))h[g+w]=y,++w,++f>=m&&(f=0,++l<=r&&!(l%16)&&St(u,l));else{if(!(280>y)){b=0;break e}y=mt(y-256,d);var P,k=bt(_.G[4],_.H[4],d);if(S(d),!(w>=(k=vt(m,k=mt(k,d)))&&N-w>=y)){b=0;break e}for(P=0;P<y;++P)h[g+w+P]=h[g+w+P-k];for(w+=y,f+=y;f>=m;)f-=m,++l<=r&&!(l%16)&&St(u,l);w<L&&f&x&&(_=wt(p,f,l))}e(d.h==A(d))}St(u,l>r?r:l);break e}!b||d.h&&w<N?(b=0,u.a=d.h?5:3):u.$=w,r=b}else r=_t(u,u.V,u.Ba,u.c,u.i,r,Ct);if(!r){o=0;break t}}i+o>=c&&(t.Cc=1),o=1}if(!o)return null;if(t.Cc&&(null!=(o=t.ga)&&(o.mc=null),t.ga=null,0<t.Ga))return alert(\"todo:WebPDequantizeLevels\"),null}return t.nb+i*s}function fr(t,e,r,n,i,a){for(;0<i--;){var o,s=t,c=e+(r?1:0),u=t,h=e+(r?0:3);for(o=0;o<n;++o){var l=u[h+4*o];255!=l&&(l*=32897,s[c+4*o+0]=s[c+4*o+0]*l>>23,s[c+4*o+1]=s[c+4*o+1]*l>>23,s[c+4*o+2]=s[c+4*o+2]*l>>23)}e+=a}}function dr(t,e,r,n,i){for(;0<n--;){var a;for(a=0;a<r;++a){var o=t[e+2*a+0],s=15&(u=t[e+2*a+1]),c=4369*s,u=(240&u|u>>4)*c>>16;t[e+2*a+0]=(240&o|o>>4)*c>>16&240|(15&o|o<<4)*c>>16>>4&15,t[e+2*a+1]=240&u|s}e+=i}}function pr(t,e,r,n,i,a,o,s){var c,u,h=255;for(u=0;u<i;++u){for(c=0;c<n;++c){var l=t[e+c];a[o+4*c]=l,h&=l}e+=r,o+=s}return 255!=h}function gr(t,e,r,n,i){var a;for(a=0;a<i;++a)r[n+a]=t[e+a]>>8}function mr(){An=fr,xn=dr,Sn=pr,_n=gr}function vr(r,n,i){t[r]=function(t,r,a,o,s,c,u,h,l,f,d,p,g,m,v,b,y){var w,N=y-1>>1,L=s[c+0]|u[h+0]<<16,A=l[f+0]|d[p+0]<<16;e(null!=t);var x=3*L+A+131074>>2;for(n(t[r+0],255&x,x>>16,g,m),null!=a&&(x=3*A+L+131074>>2,n(a[o+0],255&x,x>>16,v,b)),w=1;w<=N;++w){var S=s[c+w]|u[h+w]<<16,_=l[f+w]|d[p+w]<<16,P=L+S+A+_+524296,k=P+2*(S+A)>>3;x=k+L>>1,L=(P=P+2*(L+_)>>3)+S>>1,n(t[r+2*w-1],255&x,x>>16,g,m+(2*w-1)*i),n(t[r+2*w-0],255&L,L>>16,g,m+(2*w-0)*i),null!=a&&(x=P+A>>1,L=k+_>>1,n(a[o+2*w-1],255&x,x>>16,v,b+(2*w-1)*i),n(a[o+2*w+0],255&L,L>>16,v,b+(2*w+0)*i)),L=S,A=_}1&y||(x=3*L+A+131074>>2,n(t[r+y-1],255&x,x>>16,g,m+(y-1)*i),null!=a&&(x=3*A+L+131074>>2,n(a[o+y-1],255&x,x>>16,v,b+(y-1)*i)))}}function br(){vi[En]=bi,vi[qn]=wi,vi[Dn]=yi,vi[Rn]=Ni,vi[Tn]=Li,vi[Un]=Ai,vi[zn]=xi,vi[Hn]=wi,vi[Wn]=Ni,vi[Vn]=Li,vi[Gn]=Ai}function yr(t){return t&~Fi?0>t?0:255:t>>Ii}function wr(t,e){return yr((19077*t>>8)+(26149*e>>8)-14234)}function Nr(t,e,r){return yr((19077*t>>8)-(6419*e>>8)-(13320*r>>8)+8708)}function Lr(t,e){return yr((19077*t>>8)+(33050*e>>8)-17685)}function Ar(t,e,r,n,i){n[i+0]=wr(t,r),n[i+1]=Nr(t,e,r),n[i+2]=Lr(t,e)}function xr(t,e,r,n,i){n[i+0]=Lr(t,e),n[i+1]=Nr(t,e,r),n[i+2]=wr(t,r)}function Sr(t,e,r,n,i){var a=Nr(t,e,r);e=a<<3&224|Lr(t,e)>>3,n[i+0]=248&wr(t,r)|a>>5,n[i+1]=e}function _r(t,e,r,n,i){var a=240&Lr(t,e)|15;n[i+0]=240&wr(t,r)|Nr(t,e,r)>>4,n[i+1]=a}function Pr(t,e,r,n,i){n[i+0]=255,Ar(t,e,r,n,i+1)}function kr(t,e,r,n,i){xr(t,e,r,n,i),n[i+3]=255}function Ir(t,e,r,n,i){Ar(t,e,r,n,i),n[i+3]=255}function Vt(t,e){return 0>t?0:t>e?e:t}function Fr(e,r,n){t[e]=function(t,e,i,a,o,s,c,u,h){for(var l=u+(-2&h)*n;u!=l;)r(t[e+0],i[a+0],o[s+0],c,u),r(t[e+1],i[a+0],o[s+0],c,u+n),e+=2,++a,++s,u+=2*n;1&h&&r(t[e+0],i[a+0],o[s+0],c,u)}}function Cr(t,e,r){return 0==r?0==t?0==e?6:5:0==e?4:0:r}function jr(t,e,r,n,i){switch(t>>>30){case 3:on(e,r,n,i,0);break;case 2:sn(e,r,n,i);break;case 1:un(e,r,n,i)}}function Or(t,e){var r,a,o=e.M,s=e.Nb,c=t.oc,u=t.pc+40,h=t.oc,l=t.pc+584,f=t.oc,d=t.pc+600;for(r=0;16>r;++r)c[u+32*r-1]=129;for(r=0;8>r;++r)h[l+32*r-1]=129,f[d+32*r-1]=129;for(0<o?c[u-1-32]=h[l-1-32]=f[d-1-32]=129:(i(c,u-32-1,127,21),i(h,l-32-1,127,9),i(f,d-32-1,127,9)),a=0;a<t.za;++a){var p=e.ya[e.aa+a];if(0<a){for(r=-1;16>r;++r)n(c,u+32*r-4,c,u+32*r+12,4);for(r=-1;8>r;++r)n(h,l+32*r-4,h,l+32*r+4,4),n(f,d+32*r-4,f,d+32*r+4,4)}var g=t.Gd,m=t.Hd+a,v=p.ad,b=p.Hc;if(0<o&&(n(c,u-32,g[m].y,0,16),n(h,l-32,g[m].f,0,8),n(f,d-32,g[m].ea,0,8)),p.Za){var y=c,w=u-32+16;for(0<o&&(a>=t.za-1?i(y,w,g[m].y[15],4):n(y,w,g[m+1].y,0,4)),r=0;4>r;r++)y[w+128+r]=y[w+256+r]=y[w+384+r]=y[w+0+r];for(r=0;16>r;++r,b<<=2)y=c,w=u+Di[r],fi[p.Ob[r]](y,w),jr(b,v,16*+r,y,w)}else if(y=Cr(a,o,p.Ob[0]),li[y](c,u),0!=b)for(r=0;16>r;++r,b<<=2)jr(b,v,16*+r,c,u+Di[r]);for(r=p.Gc,y=Cr(a,o,p.Dd),di[y](h,l),di[y](f,d),b=v,y=h,w=l,255&(p=r>>0)&&(170&p?cn(b,256,y,w):hn(b,256,y,w)),p=f,b=d,255&(r>>=8)&&(170&r?cn(v,320,p,b):hn(v,320,p,b)),o<t.Ub-1&&(n(g[m].y,0,c,u+480,16),n(g[m].f,0,h,l+224,8),n(g[m].ea,0,f,d+224,8)),r=8*s*t.B,g=t.sa,m=t.ta+16*a+16*s*t.R,v=t.qa,p=t.ra+8*a+r,b=t.Ha,y=t.Ia+8*a+r,r=0;16>r;++r)n(g,m+r*t.R,c,u+32*r,16);for(r=0;8>r;++r)n(v,p+r*t.B,h,l+32*r,8),n(b,y+r*t.B,f,d+32*r,8)}}function Br(t,n,i,a,o,s,c,u,h){var l=[0],f=[0],d=0,p=null!=h?h.kd:0,g=null!=h?h:new nr;if(null==t||12>i)return 7;g.data=t,g.w=n,g.ha=i,n=[n],i=[i],g.gb=[g.gb];t:{var m=n,b=i,y=g.gb;if(e(null!=t),e(null!=b),e(null!=y),y[0]=0,12<=b[0]&&!r(t,m[0],\"RIFF\")){if(r(t,m[0]+8,\"WEBP\")){y=3;break t}var w=j(t,m[0]+4);if(12>w||4294967286<w){y=3;break t}if(p&&w>b[0]-8){y=7;break t}y[0]=w,m[0]+=12,b[0]-=12}y=0}if(0!=y)return y;for(w=0<g.gb[0],i=i[0];;){t:{var L=t;b=n,y=i;var A=l,x=f,S=m=[0];if((k=d=[d])[0]=0,8>y[0])y=7;else{if(!r(L,b[0],\"VP8X\")){if(10!=j(L,b[0]+4)){y=3;break t}if(18>y[0]){y=7;break t}var _=j(L,b[0]+8),P=1+C(L,b[0]+12);if(2147483648<=P*(L=1+C(L,b[0]+15))){y=3;break t}null!=S&&(S[0]=_),null!=A&&(A[0]=P),null!=x&&(x[0]=L),b[0]+=18,y[0]-=18,k[0]=1}y=0}}if(d=d[0],m=m[0],0!=y)return y;if(b=!!(2&m),!w&&d)return 3;if(null!=s&&(s[0]=!!(16&m)),null!=c&&(c[0]=b),null!=u&&(u[0]=0),c=l[0],m=f[0],d&&b&&null==h){y=0;break}if(4>i){y=7;break}if(w&&d||!w&&!d&&!r(t,n[0],\"ALPH\")){i=[i],g.na=[g.na],g.P=[g.P],g.Sa=[g.Sa];t:{_=t,y=n,w=i;var k=g.gb;A=g.na,x=g.P,S=g.Sa;P=22,e(null!=_),e(null!=w),L=y[0];var I=w[0];for(e(null!=A),e(null!=S),A[0]=null,x[0]=null,S[0]=0;;){if(y[0]=L,w[0]=I,8>I){y=7;break t}var F=j(_,L+4);if(4294967286<F){y=3;break t}var O=8+F+1&-2;if(P+=O,0<k&&P>k){y=3;break t}if(!r(_,L,\"VP8 \")||!r(_,L,\"VP8L\")){y=0;break t}if(I[0]<O){y=7;break t}r(_,L,\"ALPH\")||(A[0]=_,x[0]=L+8,S[0]=F),L+=O,I-=O}}if(i=i[0],g.na=g.na[0],g.P=g.P[0],g.Sa=g.Sa[0],0!=y)break}i=[i],g.Ja=[g.Ja],g.xa=[g.xa];t:if(k=t,y=n,w=i,A=g.gb[0],x=g.Ja,S=g.xa,_=y[0],L=!r(k,_,\"VP8 \"),P=!r(k,_,\"VP8L\"),e(null!=k),e(null!=w),e(null!=x),e(null!=S),8>w[0])y=7;else{if(L||P){if(k=j(k,_+4),12<=A&&k>A-12){y=3;break t}if(p&&k>w[0]-8){y=7;break t}x[0]=k,y[0]+=8,w[0]-=8,S[0]=P}else S[0]=5<=w[0]&&47==k[_+0]&&!(k[_+4]>>5),x[0]=w[0];y=0}if(i=i[0],g.Ja=g.Ja[0],g.xa=g.xa[0],n=n[0],0!=y)break;if(4294967286<g.Ja)return 3;if(null==u||b||(u[0]=g.xa?2:1),c=[c],m=[m],g.xa){if(5>i){y=7;break}u=c,p=m,b=s,null==t||5>i?t=0:5<=i&&47==t[n+0]&&!(t[n+4]>>5)?(w=[0],k=[0],A=[0],v(x=new N,t,n,i),gt(x,w,k,A)?(null!=u&&(u[0]=w[0]),null!=p&&(p[0]=k[0]),null!=b&&(b[0]=A[0]),t=1):t=0):t=0}else{if(10>i){y=7;break}u=m,null==t||10>i||!Xt(t,n+3,i-3)?t=0:(p=t[n+0]|t[n+1]<<8|t[n+2]<<16,b=16383&(t[n+7]<<8|t[n+6]),t=16383&(t[n+9]<<8|t[n+8]),1&p||3<(p>>1&7)||!(p>>4&1)||p>>5>=g.Ja||!b||!t?t=0:(c&&(c[0]=b),u&&(u[0]=t),t=1))}if(!t)return 3;if(c=c[0],m=m[0],d&&(l[0]!=c||f[0]!=m))return 3;null!=h&&(h[0]=g,h.offset=n-h.w,e(4294967286>n-h.w),e(h.offset==h.ha-i));break}return 0==y||7==y&&d&&null==h?(null!=s&&(s[0]|=null!=g.na&&0<g.na.length),null!=a&&(a[0]=c),null!=o&&(o[0]=m),0):y}function Mr(t,e,r){var n=e.width,i=e.height,a=0,o=0,s=n,c=i;if(e.Da=null!=t&&0<t.Da,e.Da&&(s=t.cd,c=t.bd,a=t.v,o=t.j,11>r||(a&=-2,o&=-2),0>a||0>o||0>=s||0>=c||a+s>n||o+c>i))return 0;if(e.v=a,e.j=o,e.va=a+s,e.o=o+c,e.U=s,e.T=c,e.da=null!=t&&0<t.da,e.da){if(!E(s,c,r=[t.ib],a=[t.hb]))return 0;e.ib=r[0],e.hb=a[0]}return e.ob=null!=t&&t.ob,e.Kb=null==t||!t.Sd,e.da&&(e.ob=e.ib<3*n/4&&e.hb<3*i/4,e.Kb=0),1}function Er(t){if(null==t)return 2;if(11>t.S){var e=t.f.RGBA;e.fb+=(t.height-1)*e.A,e.A=-e.A}else e=t.f.kb,t=t.height,e.O+=(t-1)*e.fa,e.fa=-e.fa,e.N+=(t-1>>1)*e.Ab,e.Ab=-e.Ab,e.W+=(t-1>>1)*e.Db,e.Db=-e.Db,null!=e.F&&(e.J+=(t-1)*e.lb,e.lb=-e.lb);return 0}function qr(t,e,r,n){if(null==n||0>=t||0>=e)return 2;if(null!=r){if(r.Da){var i=r.cd,o=r.bd,s=-2&r.v,c=-2&r.j;if(0>s||0>c||0>=i||0>=o||s+i>t||c+o>e)return 2;t=i,e=o}if(r.da){if(!E(t,e,i=[r.ib],o=[r.hb]))return 2;t=i[0],e=o[0]}}n.width=t,n.height=e;t:{var u=n.width,h=n.height;if(t=n.S,0>=u||0>=h||!(t>=En&&13>t))t=2;else{if(0>=n.Rd&&null==n.sd){s=o=i=e=0;var l=(c=u*zi[t])*h;if(11>t||(o=(h+1)/2*(e=(u+1)/2),12==t&&(s=(i=u)*h)),null==(h=a(l+2*o+s))){t=1;break t}n.sd=h,11>t?((u=n.f.RGBA).eb=h,u.fb=0,u.A=c,u.size=l):((u=n.f.kb).y=h,u.O=0,u.fa=c,u.Fd=l,u.f=h,u.N=0+l,u.Ab=e,u.Cd=o,u.ea=h,u.W=0+l+o,u.Db=e,u.Ed=o,12==t&&(u.F=h,u.J=0+l+2*o),u.Tc=s,u.lb=i)}if(e=1,i=n.S,o=n.width,s=n.height,i>=En&&13>i)if(11>i)t=n.f.RGBA,e&=(c=Math.abs(t.A))*(s-1)+o<=t.size,e&=c>=o*zi[i],e&=null!=t.eb;else{t=n.f.kb,c=(o+1)/2,l=(s+1)/2,u=Math.abs(t.fa);h=Math.abs(t.Ab);var f=Math.abs(t.Db),d=Math.abs(t.lb),p=d*(s-1)+o;e&=u*(s-1)+o<=t.Fd,e&=h*(l-1)+c<=t.Cd,e=(e&=f*(l-1)+c<=t.Ed)&u>=o&h>=c&f>=c,e&=null!=t.y,e&=null!=t.f,e&=null!=t.ea,12==i&&(e&=d>=o,e&=p<=t.Tc,e&=null!=t.F)}else e=0;t=e?0:2}}return 0!=t||null!=r&&r.fd&&(t=Er(n)),t}var Dr=64,Rr=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215],Tr=24,Ur=32,zr=8,Hr=[0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7];R(\"Predictor0\",\"PredictorAdd0\"),t.Predictor0=function(){return 4278190080},t.Predictor1=function(t){return t},t.Predictor2=function(t,e,r){return e[r+0]},t.Predictor3=function(t,e,r){return e[r+1]},t.Predictor4=function(t,e,r){return e[r-1]},t.Predictor5=function(t,e,r){return U(U(t,e[r+1]),e[r+0])},t.Predictor6=function(t,e,r){return U(t,e[r-1])},t.Predictor7=function(t,e,r){return U(t,e[r+0])},t.Predictor8=function(t,e,r){return U(e[r-1],e[r+0])},t.Predictor9=function(t,e,r){return U(e[r+0],e[r+1])},t.Predictor10=function(t,e,r){return U(U(t,e[r-1]),U(e[r+0],e[r+1]))},t.Predictor11=function(t,e,r){var n=e[r+0];return 0>=W(n>>24&255,t>>24&255,(e=e[r-1])>>24&255)+W(n>>16&255,t>>16&255,e>>16&255)+W(n>>8&255,t>>8&255,e>>8&255)+W(255&n,255&t,255&e)?n:t},t.Predictor12=function(t,e,r){var n=e[r+0];return(z((t>>24&255)+(n>>24&255)-((e=e[r-1])>>24&255))<<24|z((t>>16&255)+(n>>16&255)-(e>>16&255))<<16|z((t>>8&255)+(n>>8&255)-(e>>8&255))<<8|z((255&t)+(255&n)-(255&e)))>>>0},t.Predictor13=function(t,e,r){var n=e[r-1];return(H((t=U(t,e[r+0]))>>24&255,n>>24&255)<<24|H(t>>16&255,n>>16&255)<<16|H(t>>8&255,n>>8&255)<<8|H(t>>0&255,n>>0&255))>>>0};var Wr=t.PredictorAdd0;t.PredictorAdd1=V,R(\"Predictor2\",\"PredictorAdd2\"),R(\"Predictor3\",\"PredictorAdd3\"),R(\"Predictor4\",\"PredictorAdd4\"),R(\"Predictor5\",\"PredictorAdd5\"),R(\"Predictor6\",\"PredictorAdd6\"),R(\"Predictor7\",\"PredictorAdd7\"),R(\"Predictor8\",\"PredictorAdd8\"),R(\"Predictor9\",\"PredictorAdd9\"),R(\"Predictor10\",\"PredictorAdd10\"),R(\"Predictor11\",\"PredictorAdd11\"),R(\"Predictor12\",\"PredictorAdd12\"),R(\"Predictor13\",\"PredictorAdd13\");var Vr=t.PredictorAdd2;X(\"ColorIndexInverseTransform\",\"MapARGB\",\"32b\",(function(t){return t>>8&255}),(function(t){return t})),X(\"VP8LColorIndexInverseTransformAlpha\",\"MapAlpha\",\"8b\",(function(t){return t}),(function(t){return t>>8&255}));var Gr,Yr=t.ColorIndexInverseTransform,Jr=t.MapARGB,Xr=t.VP8LColorIndexInverseTransformAlpha,Kr=t.MapAlpha,Zr=t.VP8LPredictorsAdd=[];Zr.length=16,(t.VP8LPredictors=[]).length=16,(t.VP8LPredictorsAdd_C=[]).length=16,(t.VP8LPredictors_C=[]).length=16;var $r,Qr,tn,en,rn,nn,an,on,sn,cn,un,hn,ln,fn,dn,pn,gn,mn,vn,bn,yn,wn,Nn,Ln,An,xn,Sn,_n,Pn=a(511),kn=a(2041),In=a(225),Fn=a(767),Cn=0,jn=kn,On=In,Bn=Fn,Mn=Pn,En=0,qn=1,Dn=2,Rn=3,Tn=4,Un=5,zn=6,Hn=7,Wn=8,Vn=9,Gn=10,Yn=[2,3,7],Jn=[3,3,11],Xn=[280,256,256,256,40],Kn=[0,1,1,1,0],Zn=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],$n=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],Qn=[2954,2956,2958,2962,2970,2986,3018,3082,3212,3468,3980,5004],ti=8,ei=[4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,17,18,19,20,20,21,21,22,22,23,23,24,25,25,26,27,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,43,44,45,46,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,93,95,96,98,100,101,102,104,106,108,110,112,114,116,118,122,124,126,128,130,132,134,136,138,140,143,145,148,151,154,157],ri=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,234,239,245,249,254,259,264,269,274,279,284],ni=null,ii=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],ai=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],oi=[-0,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],si=[[[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]],[[253,136,254,255,228,219,128,128,128,128,128],[189,129,242,255,227,213,255,219,128,128,128],[106,126,227,252,214,209,255,255,128,128,128]],[[1,98,248,255,236,226,255,255,128,128,128],[181,133,238,254,221,234,255,154,128,128,128],[78,134,202,247,198,180,255,219,128,128,128]],[[1,185,249,255,243,255,128,128,128,128,128],[184,150,247,255,236,224,128,128,128,128,128],[77,110,216,255,236,230,128,128,128,128,128]],[[1,101,251,255,241,255,128,128,128,128,128],[170,139,241,252,236,209,255,255,128,128,128],[37,116,196,243,228,255,255,255,128,128,128]],[[1,204,254,255,245,255,128,128,128,128,128],[207,160,250,255,238,128,128,128,128,128,128],[102,103,231,255,211,171,128,128,128,128,128]],[[1,152,252,255,240,255,128,128,128,128,128],[177,135,243,255,234,225,128,128,128,128,128],[80,129,211,255,194,224,128,128,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[246,1,255,128,128,128,128,128,128,128,128],[255,128,128,128,128,128,128,128,128,128,128]]],[[[198,35,237,223,193,187,162,160,145,155,62],[131,45,198,221,172,176,220,157,252,221,1],[68,47,146,208,149,167,221,162,255,223,128]],[[1,149,241,255,221,224,255,255,128,128,128],[184,141,234,253,222,220,255,199,128,128,128],[81,99,181,242,176,190,249,202,255,255,128]],[[1,129,232,253,214,197,242,196,255,255,128],[99,121,210,250,201,198,255,202,128,128,128],[23,91,163,242,170,187,247,210,255,255,128]],[[1,200,246,255,234,255,128,128,128,128,128],[109,178,241,255,231,245,255,255,128,128,128],[44,130,201,253,205,192,255,255,128,128,128]],[[1,132,239,251,219,209,255,165,128,128,128],[94,136,225,251,218,190,255,255,128,128,128],[22,100,174,245,186,161,255,199,128,128,128]],[[1,182,249,255,232,235,128,128,128,128,128],[124,143,241,255,227,234,128,128,128,128,128],[35,77,181,251,193,211,255,205,128,128,128]],[[1,157,247,255,236,231,255,255,128,128,128],[121,141,235,255,225,227,255,255,128,128,128],[45,99,188,251,195,217,255,224,128,128,128]],[[1,1,251,255,213,255,128,128,128,128,128],[203,1,248,255,255,128,128,128,128,128,128],[137,1,177,255,224,255,128,128,128,128,128]]],[[[253,9,248,251,207,208,255,192,128,128,128],[175,13,224,243,193,185,249,198,255,255,128],[73,17,171,221,161,179,236,167,255,234,128]],[[1,95,247,253,212,183,255,255,128,128,128],[239,90,244,250,211,209,255,255,128,128,128],[155,77,195,248,188,195,255,255,128,128,128]],[[1,24,239,251,218,219,255,205,128,128,128],[201,51,219,255,196,186,128,128,128,128,128],[69,46,190,239,201,218,255,228,128,128,128]],[[1,191,251,255,255,128,128,128,128,128,128],[223,165,249,255,213,255,128,128,128,128,128],[141,124,248,255,255,128,128,128,128,128,128]],[[1,16,248,255,255,128,128,128,128,128,128],[190,36,230,255,236,255,128,128,128,128,128],[149,1,255,128,128,128,128,128,128,128,128]],[[1,226,255,128,128,128,128,128,128,128,128],[247,192,255,128,128,128,128,128,128,128,128],[240,128,255,128,128,128,128,128,128,128,128]],[[1,134,252,255,255,128,128,128,128,128,128],[213,62,250,255,255,128,128,128,128,128,128],[55,93,255,128,128,128,128,128,128,128,128]],[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]]],[[[202,24,213,235,186,191,220,160,240,175,255],[126,38,182,232,169,184,228,174,255,187,128],[61,46,138,219,151,178,240,170,255,216,128]],[[1,112,230,250,199,191,247,159,255,255,128],[166,109,228,252,211,215,255,174,128,128,128],[39,77,162,232,172,180,245,178,255,255,128]],[[1,52,220,246,198,199,249,220,255,255,128],[124,74,191,243,183,193,250,221,255,255,128],[24,71,130,219,154,170,243,182,255,255,128]],[[1,182,225,249,219,240,255,224,128,128,128],[149,150,226,252,216,205,255,171,128,128,128],[28,108,170,242,183,194,254,223,255,255,128]],[[1,81,230,252,204,203,255,192,128,128,128],[123,102,209,247,188,196,255,233,128,128,128],[20,95,153,243,164,173,255,203,128,128,128]],[[1,222,248,255,216,213,128,128,128,128,128],[168,175,246,252,235,205,255,255,128,128,128],[47,116,215,255,211,212,255,255,128,128,128]],[[1,121,236,253,212,214,255,255,128,128,128],[141,84,213,252,201,202,255,219,128,128,128],[42,80,160,240,162,185,255,205,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[244,1,255,128,128,128,128,128,128,128,128],[238,1,255,128,128,128,128,128,128,128,128]]]],ci=[[[231,120,48,89,115,113,120,152,112],[152,179,64,126,170,118,46,70,95],[175,69,143,80,85,82,72,155,103],[56,58,10,171,218,189,17,13,152],[114,26,17,163,44,195,21,10,173],[121,24,80,195,26,62,44,64,85],[144,71,10,38,171,213,144,34,26],[170,46,55,19,136,160,33,206,71],[63,20,8,114,114,208,12,9,226],[81,40,11,96,182,84,29,16,36]],[[134,183,89,137,98,101,106,165,148],[72,187,100,130,157,111,32,75,80],[66,102,167,99,74,62,40,234,128],[41,53,9,178,241,141,26,8,107],[74,43,26,146,73,166,49,23,157],[65,38,105,160,51,52,31,115,128],[104,79,12,27,217,255,87,17,7],[87,68,71,44,114,51,15,186,23],[47,41,14,110,182,183,21,17,194],[66,45,25,102,197,189,23,18,22]],[[88,88,147,150,42,46,45,196,205],[43,97,183,117,85,38,35,179,61],[39,53,200,87,26,21,43,232,171],[56,34,51,104,114,102,29,93,77],[39,28,85,171,58,165,90,98,64],[34,22,116,206,23,34,43,166,73],[107,54,32,26,51,1,81,43,31],[68,25,106,22,64,171,36,225,114],[34,19,21,102,132,188,16,76,124],[62,18,78,95,85,57,50,48,51]],[[193,101,35,159,215,111,89,46,111],[60,148,31,172,219,228,21,18,111],[112,113,77,85,179,255,38,120,114],[40,42,1,196,245,209,10,25,109],[88,43,29,140,166,213,37,43,154],[61,63,30,155,67,45,68,1,209],[100,80,8,43,154,1,51,26,71],[142,78,78,16,255,128,34,197,171],[41,40,5,102,211,183,4,1,221],[51,50,17,168,209,192,23,25,82]],[[138,31,36,171,27,166,38,44,229],[67,87,58,169,82,115,26,59,179],[63,59,90,180,59,166,93,73,154],[40,40,21,116,143,209,34,39,175],[47,15,16,183,34,223,49,45,183],[46,17,33,183,6,98,15,32,183],[57,46,22,24,128,1,54,17,37],[65,32,73,115,28,128,23,128,205],[40,3,9,115,51,192,18,6,223],[87,37,9,115,59,77,64,21,47]],[[104,55,44,218,9,54,53,130,226],[64,90,70,205,40,41,23,26,57],[54,57,112,184,5,41,38,166,213],[30,34,26,133,152,116,10,32,134],[39,19,53,221,26,114,32,73,255],[31,9,65,234,2,15,1,118,73],[75,32,12,51,192,255,160,43,51],[88,31,35,67,102,85,55,186,85],[56,21,23,111,59,205,45,37,192],[55,38,70,124,73,102,1,34,98]],[[125,98,42,88,104,85,117,175,82],[95,84,53,89,128,100,113,101,45],[75,79,123,47,51,128,81,171,1],[57,17,5,71,102,57,53,41,49],[38,33,13,121,57,73,26,1,85],[41,10,67,138,77,110,90,47,114],[115,21,2,10,102,255,166,23,6],[101,29,16,10,85,128,101,196,26],[57,18,10,102,102,213,34,20,43],[117,20,15,36,163,128,68,1,26]],[[102,61,71,37,34,53,31,243,192],[69,60,71,38,73,119,28,222,37],[68,45,128,34,1,47,11,245,171],[62,17,19,70,146,85,55,62,70],[37,43,37,154,100,163,85,160,1],[63,9,92,136,28,64,32,201,85],[75,15,9,9,64,255,184,119,16],[86,6,28,5,64,255,25,248,1],[56,8,17,132,137,255,55,116,128],[58,15,20,82,135,57,26,121,40]],[[164,50,31,137,154,133,25,35,218],[51,103,44,131,131,123,31,6,158],[86,40,64,135,148,224,45,183,128],[22,26,17,131,240,154,14,1,209],[45,16,21,91,64,222,7,1,197],[56,21,39,155,60,138,23,102,213],[83,12,13,54,192,255,68,47,28],[85,26,85,85,128,128,32,146,171],[18,11,7,63,144,171,4,4,246],[35,27,10,146,174,171,12,26,128]],[[190,80,35,99,180,80,126,54,45],[85,126,47,87,176,51,41,20,32],[101,75,128,139,118,146,116,128,85],[56,41,15,176,236,85,37,9,62],[71,30,17,119,118,255,17,18,138],[101,38,60,138,55,70,43,26,142],[146,36,19,30,171,255,97,27,20],[138,45,61,62,219,1,81,188,64],[32,41,20,117,151,142,20,21,163],[112,19,12,61,195,128,48,4,24]]],ui=[[[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[176,246,255,255,255,255,255,255,255,255,255],[223,241,252,255,255,255,255,255,255,255,255],[249,253,253,255,255,255,255,255,255,255,255]],[[255,244,252,255,255,255,255,255,255,255,255],[234,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255]],[[255,246,254,255,255,255,255,255,255,255,255],[239,253,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[251,255,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[251,254,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,254,253,255,254,255,255,255,255,255,255],[250,255,254,255,254,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[217,255,255,255,255,255,255,255,255,255,255],[225,252,241,253,255,255,254,255,255,255,255],[234,250,241,250,253,255,253,254,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[223,254,254,255,255,255,255,255,255,255,255],[238,253,254,254,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[249,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,255,255,255,255,255,255,255,255,255],[247,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[252,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[186,251,250,255,255,255,255,255,255,255,255],[234,251,244,254,255,255,255,255,255,255,255],[251,251,243,253,254,255,254,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[236,253,254,255,255,255,255,255,255,255,255],[251,253,253,254,254,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[254,254,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[254,254,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[248,255,255,255,255,255,255,255,255,255,255],[250,254,252,254,255,255,255,255,255,255,255],[248,254,249,253,255,255,255,255,255,255,255]],[[255,253,253,255,255,255,255,255,255,255,255],[246,253,253,255,255,255,255,255,255,255,255],[252,254,251,254,254,255,255,255,255,255,255]],[[255,254,252,255,255,255,255,255,255,255,255],[248,254,253,255,255,255,255,255,255,255,255],[253,255,254,254,255,255,255,255,255,255,255]],[[255,251,254,255,255,255,255,255,255,255,255],[245,251,254,255,255,255,255,255,255,255,255],[253,253,254,255,255,255,255,255,255,255,255]],[[255,251,253,255,255,255,255,255,255,255,255],[252,253,254,255,255,255,255,255,255,255,255],[255,254,255,255,255,255,255,255,255,255,255]],[[255,252,255,255,255,255,255,255,255,255,255],[249,255,254,255,255,255,255,255,255,255,255],[255,255,254,255,255,255,255,255,255,255,255]],[[255,255,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]]],hi=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],li=[],fi=[],di=[],pi=1,gi=2,mi=[],vi=[];vr(\"UpsampleRgbLinePair\",Ar,3),vr(\"UpsampleBgrLinePair\",xr,3),vr(\"UpsampleRgbaLinePair\",Ir,4),vr(\"UpsampleBgraLinePair\",kr,4),vr(\"UpsampleArgbLinePair\",Pr,4),vr(\"UpsampleRgba4444LinePair\",_r,2),vr(\"UpsampleRgb565LinePair\",Sr,2);var bi=t.UpsampleRgbLinePair,yi=t.UpsampleBgrLinePair,wi=t.UpsampleRgbaLinePair,Ni=t.UpsampleBgraLinePair,Li=t.UpsampleArgbLinePair,Ai=t.UpsampleRgba4444LinePair,xi=t.UpsampleRgb565LinePair,Si=16,_i=1<<Si-1,Pi=-227,ki=482,Ii=6,Fi=(256<<Ii)-1,Ci=0,ji=a(256),Oi=a(256),Bi=a(256),Mi=a(256),Ei=a(ki-Pi),qi=a(ki-Pi);Fr(\"YuvToRgbRow\",Ar,3),Fr(\"YuvToBgrRow\",xr,3),Fr(\"YuvToRgbaRow\",Ir,4),Fr(\"YuvToBgraRow\",kr,4),Fr(\"YuvToArgbRow\",Pr,4),Fr(\"YuvToRgba4444Row\",_r,2),Fr(\"YuvToRgb565Row\",Sr,2);var Di=[0,4,8,12,128,132,136,140,256,260,264,268,384,388,392,396],Ri=[0,2,8],Ti=[8,7,6,4,4,2,2,2,1,1,1,1],Ui=1;this.WebPDecodeRGBA=function(t,r,n,i,a){var o=qn,s=new rr,c=new ot;s.ba=c,c.S=o,c.width=[c.width],c.height=[c.height];var u=c.width,h=c.height,l=new st;if(null==l||null==t)var f=2;else e(null!=l),f=Br(t,r,n,l.width,l.height,l.Pd,l.Qd,l.format,null);if(0!=f?u=0:(null!=u&&(u[0]=l.width[0]),null!=h&&(h[0]=l.height[0]),u=1),u){c.width=c.width[0],c.height=c.height[0],null!=i&&(i[0]=c.width),null!=a&&(a[0]=c.height);t:{if(i=new Gt,(a=new nr).data=t,a.w=r,a.ha=n,a.kd=1,r=[0],e(null!=a),(0==(t=Br(a.data,a.w,a.ha,null,null,null,r,null,a))||7==t)&&r[0]&&(t=4),0==(r=t)){if(e(null!=s),i.data=a.data,i.w=a.w+a.offset,i.ha=a.ha-a.offset,i.put=dt,i.ac=ft,i.bc=pt,i.ma=s,a.xa){if(null==(t=kt())){s=1;break t}if(function(t,r){var n=[0],i=[0],a=[0];e:for(;;){if(null==t)return 0;if(null==r)return t.a=2,0;if(t.l=r,t.a=0,v(t.m,r.data,r.w,r.ha),!gt(t.m,n,i,a)){t.a=3;break e}if(t.xb=gi,r.width=n[0],r.height=i[0],!It(n[0],i[0],1,t,null))break e;return 1}return e(0!=t.a),0}(t,i)){if(i=0==(r=qr(i.width,i.height,s.Oa,s.ba))){e:{i=t;r:for(;;){if(null==i){i=0;break e}if(e(null!=i.s.yc),e(null!=i.s.Ya),e(0<i.s.Wb),e(null!=(n=i.l)),e(null!=(a=n.ma)),0!=i.xb){if(i.ca=a.ba,i.tb=a.tb,e(null!=i.ca),!Mr(a.Oa,n,Rn)){i.a=2;break r}if(!Ft(i,n.width))break r;if(n.da)break r;if((n.da||nt(i.ca.S))&&mr(),11>i.ca.S||(alert(\"todo:WebPInitConvertARGBToYUV\"),null!=i.ca.f.kb.F&&mr()),i.Pb&&0<i.s.ua&&null==i.s.vb.X&&!O(i.s.vb,i.s.Wa.Xa)){i.a=1;break r}i.xb=0}if(!_t(i,i.V,i.Ba,i.c,i.i,n.o,Lt))break r;a.Dc=i.Ma,i=1;break e}e(0!=i.a),i=0}i=!i}i&&(r=t.a)}else r=t.a}else{if(null==(t=new Yt)){s=1;break t}if(t.Fa=a.na,t.P=a.P,t.qc=a.Sa,Kt(t,i)){if(0==(r=qr(i.width,i.height,s.Oa,s.ba))){if(t.Aa=0,n=s.Oa,e(null!=(a=t)),null!=n){if(0<(u=0>(u=n.Md)?0:100<u?255:255*u/100)){for(h=l=0;4>h;++h)12>(f=a.pb[h]).lc&&(f.ia=u*Ti[0>f.lc?0:f.lc]>>3),l|=f.ia;l&&(alert(\"todo:VP8InitRandom\"),a.ia=1)}a.Ga=n.Id,100<a.Ga?a.Ga=100:0>a.Ga&&(a.Ga=0)}Qt(t,i)||(r=t.a)}}else r=t.a}0==r&&null!=s.Oa&&s.Oa.fd&&(r=Er(s.ba))}s=r}o=0!=s?null:11>o?c.f.RGBA.eb:c.f.kb.y}else o=null;return o};var zi=[3,4,3,4,4,2,2,4,4,4,2,1,1]};function u(t,e){for(var r=\"\",n=0;n<4;n++)r+=String.fromCharCode(t[e++]);return r}function h(t,e){return(t[e+0]<<0|t[e+1]<<8|t[e+2]<<16)>>>0}function l(t,e){return(t[e+0]<<0|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0}new c;var f=[0],d=[0],p=[],g=new c,m=t,v=function(t,e){var r={},n=0,i=!1,a=0,o=0;if(r.frames=[],!\n/** @license\n   * Copyright (c) 2017 Dominik Homberger\n  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n  https://webpjs.appspot.com\n  WebPRiffParser dominikhlbg@gmail.com\n  */\nfunction(t,e,r,n){for(var i=0;i<n;i++)if(t[e+i]!=r.charCodeAt(i))return!0;return!1}(t,e,\"RIFF\",4)){var s,c;l(t,e+=4);for(e+=8;e<t.length;){var f=u(t,e),d=l(t,e+=4);e+=4;var p=d+(1&d);switch(f){case\"VP8 \":case\"VP8L\":void 0===r.frames[n]&&(r.frames[n]={});(v=r.frames[n]).src_off=i?o:e-8,v.src_size=a+d+8,n++,i&&(i=!1,a=0,o=0);break;case\"VP8X\":(v=r.header={}).feature_flags=t[e];var g=e+4;v.canvas_width=1+h(t,g);g+=3;v.canvas_height=1+h(t,g);g+=3;break;case\"ALPH\":i=!0,a=p+8,o=e-8;break;case\"ANIM\":(v=r.header).bgcolor=l(t,e);g=e+4;v.loop_count=(s=t)[(c=g)+0]<<0|s[c+1]<<8;g+=2;break;case\"ANMF\":var m,v;(v=r.frames[n]={}).offset_x=2*h(t,e),e+=3,v.offset_y=2*h(t,e),e+=3,v.width=1+h(t,e),e+=3,v.height=1+h(t,e),e+=3,v.duration=h(t,e),e+=3,m=t[e++],v.dispose=1&m,v.blend=m>>1&1}\"ANMF\"!=f&&(e+=p)}return r}}(m,0);v.response=m,v.rgbaoutput=!0,v.dataurl=!1;var b=v.header?v.header:null,y=v.frames?v.frames:null;if(b){b.loop_counter=b.loop_count,f=[b.canvas_height],d=[b.canvas_width];for(var w=0;w<y.length&&0!=y[w].blend;w++);}var N=y[0],L=g.WebPDecodeRGBA(m,N.src_off,N.src_size,d,f);N.rgba=L,N.imgwidth=d[0],N.imgheight=f[0];for(var A=0;A<d[0]*f[0]*4;A++)p[A]=L[A];return this.width=d,this.height=f,this.data=p,this}!function(t){var r=function(){return\"function\"==typeof e},n=function(r,n,a,h){var l=4,f=s;switch(h){case t.image_compression.FAST:l=1,f=o;break;case t.image_compression.MEDIUM:l=6,f=c;break;case t.image_compression.SLOW:l=9,f=u}r=i(r,n,a,f);var d=e(r,{level:l});return t.__addimage__.arrayBufferToBinaryString(d)},i=function(t,e,r,n){for(var i,a,o,s=t.length/e,c=new Uint8Array(t.length+s),u=l(),h=0;h<s;h+=1){if(o=h*e,i=t.subarray(o,o+e),n)c.set(n(i,r,a),o+h);else{for(var d,p=u.length,g=[];d<p;d+=1)g[d]=u[d](i,r,a);var m=f(g.concat());c.set(g[m],o+h)}a=i}return c},a=function(t){var e=Array.apply([],t);return e.unshift(0),e},o=function(t,e){var r,n=[],i=t.length;n[0]=1;for(var a=0;a<i;a+=1)r=t[a-e]||0,n[a+1]=t[a]-r+256&255;return n},s=function(t,e,r){var n,i=[],a=t.length;i[0]=2;for(var o=0;o<a;o+=1)n=r&&r[o]||0,i[o+1]=t[o]-n+256&255;return i},c=function(t,e,r){var n,i,a=[],o=t.length;a[0]=3;for(var s=0;s<o;s+=1)n=t[s-e]||0,i=r&&r[s]||0,a[s+1]=t[s]+256-(n+i>>>1)&255;return a},u=function(t,e,r){var n,i,a,o,s=[],c=t.length;s[0]=4;for(var u=0;u<c;u+=1)n=t[u-e]||0,i=r&&r[u]||0,a=r&&r[u-e]||0,o=h(n,i,a),s[u+1]=t[u]-o+256&255;return s},h=function(t,e,r){if(t===e&&e===r)return t;var n=Math.abs(e-r),i=Math.abs(t-r),a=Math.abs(t+e-r-r);return n<=i&&n<=a?t:i<=a?e:r},l=function(){return[a,o,s,c,u]},f=function(t){var e=t.map((function(t){return t.reduce((function(t,e){return t+Math.abs(e)}),0)}));return e.indexOf(Math.min.apply(null,e))};t.processPNG=function(e,i,a,o){var s,c,u,h,l,f,d,p,g,m,v,b,y,w,N,L=this.decode.FLATE_DECODE,A=\"\";if(this.__addimage__.isArrayBuffer(e)&&(e=new Uint8Array(e)),this.__addimage__.isArrayBufferView(e)){if(e=(u=new Kt(e)).imgData,c=u.bits,s=u.colorSpace,l=u.colors,-1!==[4,6].indexOf(u.colorType)){if(8===u.bits){g=(p=32==u.pixelBitlength?new Uint32Array(u.decodePixels().buffer):16==u.pixelBitlength?new Uint16Array(u.decodePixels().buffer):new Uint8Array(u.decodePixels().buffer)).length,v=new Uint8Array(g*u.colors),m=new Uint8Array(g);var x,S=u.pixelBitlength-u.bits;for(w=0,N=0;w<g;w++){for(y=p[w],x=0;x<S;)v[N++]=y>>>x&255,x+=u.bits;m[w]=y>>>x&255}}if(16===u.bits){g=(p=new Uint32Array(u.decodePixels().buffer)).length,v=new Uint8Array(g*(32/u.pixelBitlength)*u.colors),m=new Uint8Array(g*(32/u.pixelBitlength)),b=u.colors>1,w=0,N=0;for(var _=0;w<g;)y=p[w++],v[N++]=y>>>0&255,b&&(v[N++]=y>>>16&255,y=p[w++],v[N++]=y>>>0&255),m[_++]=y>>>16&255;c=8}o!==t.image_compression.NONE&&r()?(e=n(v,u.width*u.colors,u.colors,o),d=n(m,u.width,1,o)):(e=v,d=m,L=void 0)}if(3===u.colorType&&(s=this.color_spaces.INDEXED,f=u.palette,u.transparency.indexed)){var P=u.transparency.indexed,k=0;for(w=0,g=P.length;w<g;++w)k+=P[w];if((k/=255)===g-1&&-1!==P.indexOf(0))h=[P.indexOf(0)];else if(k!==g){for(p=u.decodePixels(),m=new Uint8Array(p.length),w=0,g=p.length;w<g;w++)m[w]=P[p[w]];d=n(m,u.width,1)}}var I=function(e){var r;switch(e){case t.image_compression.FAST:r=11;break;case t.image_compression.MEDIUM:r=13;break;case t.image_compression.SLOW:r=14;break;default:r=12}return r}(o);return L===this.decode.FLATE_DECODE&&(A=\"/Predictor \"+I+\" \"),A+=\"/Colors \"+l+\" /BitsPerComponent \"+c+\" /Columns \"+u.width,(this.__addimage__.isArrayBuffer(e)||this.__addimage__.isArrayBufferView(e))&&(e=this.__addimage__.arrayBufferToBinaryString(e)),(d&&this.__addimage__.isArrayBuffer(d)||this.__addimage__.isArrayBufferView(d))&&(d=this.__addimage__.arrayBufferToBinaryString(d)),{alias:a,data:e,index:i,filter:L,decodeParameters:A,transparency:h,palette:f,sMask:d,predictor:I,width:u.width,height:u.height,bitsPerComponent:c,colorSpace:s}}}}(E.API),function(t){t.processGIF89A=function(e,r,n,i){var a=new Zt(e),o=a.width,s=a.height,c=[];a.decodeAndBlitFrameRGBA(0,c);var u={data:c,width:o,height:s},h=new Qt(100).encode(u,100);return t.processJPEG.call(this,h,r,n,i)},t.processGIF87A=t.processGIF89A}(E.API),te.prototype.parseHeader=function(){if(this.fileSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.reserved=this.datav.getUint32(this.pos,!0),this.pos+=4,this.offset=this.datav.getUint32(this.pos,!0),this.pos+=4,this.headerSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.width=this.datav.getUint32(this.pos,!0),this.pos+=4,this.height=this.datav.getInt32(this.pos,!0),this.pos+=4,this.planes=this.datav.getUint16(this.pos,!0),this.pos+=2,this.bitPP=this.datav.getUint16(this.pos,!0),this.pos+=2,this.compress=this.datav.getUint32(this.pos,!0),this.pos+=4,this.rawSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.hr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.vr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.colors=this.datav.getUint32(this.pos,!0),this.pos+=4,this.importantColors=this.datav.getUint32(this.pos,!0),this.pos+=4,16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15),this.bitPP<15){var t=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(t);for(var e=0;e<t;e++){var r=this.datav.getUint8(this.pos++,!0),n=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0);this.palette[e]={red:i,green:n,blue:r,quad:a}}}this.height<0&&(this.height*=-1,this.bottom_up=!1)},te.prototype.parseBGR=function(){this.pos=this.offset;try{var t=\"bit\"+this.bitPP,e=this.width*this.height*4;this.data=new Uint8Array(e),this[t]()}catch(t){a.log(\"bit decode error:\"+t)}},te.prototype.bit1=function(){var t,e=Math.ceil(this.width/8),r=e%4;for(t=this.height-1;t>=0;t--){for(var n=this.bottom_up?t:this.height-1-t,i=0;i<e;i++)for(var a=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+8*i*4,s=0;s<8&&8*i+s<this.width;s++){var c=this.palette[a>>7-s&1];this.data[o+4*s]=c.blue,this.data[o+4*s+1]=c.green,this.data[o+4*s+2]=c.red,this.data[o+4*s+3]=255}0!==r&&(this.pos+=4-r)}},te.prototype.bit4=function(){for(var t=Math.ceil(this.width/2),e=t%4,r=this.height-1;r>=0;r--){for(var n=this.bottom_up?r:this.height-1-r,i=0;i<t;i++){var a=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+2*i*4,s=a>>4,c=15&a,u=this.palette[s];if(this.data[o]=u.blue,this.data[o+1]=u.green,this.data[o+2]=u.red,this.data[o+3]=255,2*i+1>=this.width)break;u=this.palette[c],this.data[o+4]=u.blue,this.data[o+4+1]=u.green,this.data[o+4+2]=u.red,this.data[o+4+3]=255}0!==e&&(this.pos+=4-e)}},te.prototype.bit8=function(){for(var t=this.width%4,e=this.height-1;e>=0;e--){for(var r=this.bottom_up?e:this.height-1-e,n=0;n<this.width;n++){var i=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+4*n;if(i<this.palette.length){var o=this.palette[i];this.data[a]=o.red,this.data[a+1]=o.green,this.data[a+2]=o.blue,this.data[a+3]=255}else this.data[a]=255,this.data[a+1]=255,this.data[a+2]=255,this.data[a+3]=255}0!==t&&(this.pos+=4-t)}},te.prototype.bit15=function(){for(var t=this.width%3,e=parseInt(\"11111\",2),r=this.height-1;r>=0;r--){for(var n=this.bottom_up?r:this.height-1-r,i=0;i<this.width;i++){var a=this.datav.getUint16(this.pos,!0);this.pos+=2;var o=(a&e)/e*255|0,s=(a>>5&e)/e*255|0,c=(a>>10&e)/e*255|0,u=a>>15?255:0,h=n*this.width*4+4*i;this.data[h]=c,this.data[h+1]=s,this.data[h+2]=o,this.data[h+3]=u}this.pos+=t}},te.prototype.bit16=function(){for(var t=this.width%3,e=parseInt(\"11111\",2),r=parseInt(\"111111\",2),n=this.height-1;n>=0;n--){for(var i=this.bottom_up?n:this.height-1-n,a=0;a<this.width;a++){var o=this.datav.getUint16(this.pos,!0);this.pos+=2;var s=(o&e)/e*255|0,c=(o>>5&r)/r*255|0,u=(o>>11)/e*255|0,h=i*this.width*4+4*a;this.data[h]=u,this.data[h+1]=c,this.data[h+2]=s,this.data[h+3]=255}this.pos+=t}},te.prototype.bit24=function(){for(var t=this.height-1;t>=0;t--){for(var e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++){var n=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),o=e*this.width*4+4*r;this.data[o]=a,this.data[o+1]=i,this.data[o+2]=n,this.data[o+3]=255}this.pos+=this.width%4}},te.prototype.bit32=function(){for(var t=this.height-1;t>=0;t--)for(var e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++){var n=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),s=e*this.width*4+4*r;this.data[s]=a,this.data[s+1]=i,this.data[s+2]=n,this.data[s+3]=o}},te.prototype.getData=function(){return this.data},\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){t.processBMP=function(e,r,n,i){var a=new te(e,!1),o=a.width,s=a.height,c={data:a.getData(),width:o,height:s},u=new Qt(100).encode(c,100);return t.processJPEG.call(this,u,r,n,i)}}(E.API),ee.prototype.getData=function(){return this.data},\n/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){t.processWEBP=function(e,r,n,i){var a=new ee(e,!1),o=a.width,s=a.height,c={data:a.getData(),width:o,height:s},u=new Qt(100).encode(c,100);return t.processJPEG.call(this,u,r,n,i)}}(E.API),E.API.processRGBA=function(t,e,r){for(var n=t.data,i=n.length,a=new Uint8Array(i/4*3),o=new Uint8Array(i/4),s=0,c=0,u=0;u<i;u+=4){var h=n[u],l=n[u+1],f=n[u+2],d=n[u+3];a[s++]=h,a[s++]=l,a[s++]=f,o[c++]=d}var p=this.__addimage__.arrayBufferToBinaryString(a);return{alpha:this.__addimage__.arrayBufferToBinaryString(o),data:p,index:e,alias:r,colorSpace:\"DeviceRGB\",bitsPerComponent:8,width:t.width,height:t.height}},E.API.setLanguage=function(t){return void 0===this.internal.languageSettings&&(this.internal.languageSettings={},this.internal.languageSettings.isSubscribed=!1),void 0!=={af:\"Afrikaans\",sq:\"Albanian\",ar:\"Arabic (Standard)\",\"ar-DZ\":\"Arabic (Algeria)\",\"ar-BH\":\"Arabic (Bahrain)\",\"ar-EG\":\"Arabic (Egypt)\",\"ar-IQ\":\"Arabic (Iraq)\",\"ar-JO\":\"Arabic (Jordan)\",\"ar-KW\":\"Arabic (Kuwait)\",\"ar-LB\":\"Arabic (Lebanon)\",\"ar-LY\":\"Arabic (Libya)\",\"ar-MA\":\"Arabic (Morocco)\",\"ar-OM\":\"Arabic (Oman)\",\"ar-QA\":\"Arabic (Qatar)\",\"ar-SA\":\"Arabic (Saudi Arabia)\",\"ar-SY\":\"Arabic (Syria)\",\"ar-TN\":\"Arabic (Tunisia)\",\"ar-AE\":\"Arabic (U.A.E.)\",\"ar-YE\":\"Arabic (Yemen)\",an:\"Aragonese\",hy:\"Armenian\",as:\"Assamese\",ast:\"Asturian\",az:\"Azerbaijani\",eu:\"Basque\",be:\"Belarusian\",bn:\"Bengali\",bs:\"Bosnian\",br:\"Breton\",bg:\"Bulgarian\",my:\"Burmese\",ca:\"Catalan\",ch:\"Chamorro\",ce:\"Chechen\",zh:\"Chinese\",\"zh-HK\":\"Chinese (Hong Kong)\",\"zh-CN\":\"Chinese (PRC)\",\"zh-SG\":\"Chinese (Singapore)\",\"zh-TW\":\"Chinese (Taiwan)\",cv:\"Chuvash\",co:\"Corsican\",cr:\"Cree\",hr:\"Croatian\",cs:\"Czech\",da:\"Danish\",nl:\"Dutch (Standard)\",\"nl-BE\":\"Dutch (Belgian)\",en:\"English\",\"en-AU\":\"English (Australia)\",\"en-BZ\":\"English (Belize)\",\"en-CA\":\"English (Canada)\",\"en-IE\":\"English (Ireland)\",\"en-JM\":\"English (Jamaica)\",\"en-NZ\":\"English (New Zealand)\",\"en-PH\":\"English (Philippines)\",\"en-ZA\":\"English (South Africa)\",\"en-TT\":\"English (Trinidad & Tobago)\",\"en-GB\":\"English (United Kingdom)\",\"en-US\":\"English (United States)\",\"en-ZW\":\"English (Zimbabwe)\",eo:\"Esperanto\",et:\"Estonian\",fo:\"Faeroese\",fj:\"Fijian\",fi:\"Finnish\",fr:\"French (Standard)\",\"fr-BE\":\"French (Belgium)\",\"fr-CA\":\"French (Canada)\",\"fr-FR\":\"French (France)\",\"fr-LU\":\"French (Luxembourg)\",\"fr-MC\":\"French (Monaco)\",\"fr-CH\":\"French (Switzerland)\",fy:\"Frisian\",fur:\"Friulian\",gd:\"Gaelic (Scots)\",\"gd-IE\":\"Gaelic (Irish)\",gl:\"Galacian\",ka:\"Georgian\",de:\"German (Standard)\",\"de-AT\":\"German (Austria)\",\"de-DE\":\"German (Germany)\",\"de-LI\":\"German (Liechtenstein)\",\"de-LU\":\"German (Luxembourg)\",\"de-CH\":\"German (Switzerland)\",el:\"Greek\",gu:\"Gujurati\",ht:\"Haitian\",he:\"Hebrew\",hi:\"Hindi\",hu:\"Hungarian\",is:\"Icelandic\",id:\"Indonesian\",iu:\"Inuktitut\",ga:\"Irish\",it:\"Italian (Standard)\",\"it-CH\":\"Italian (Switzerland)\",ja:\"Japanese\",kn:\"Kannada\",ks:\"Kashmiri\",kk:\"Kazakh\",km:\"Khmer\",ky:\"Kirghiz\",tlh:\"Klingon\",ko:\"Korean\",\"ko-KP\":\"Korean (North Korea)\",\"ko-KR\":\"Korean (South Korea)\",la:\"Latin\",lv:\"Latvian\",lt:\"Lithuanian\",lb:\"Luxembourgish\",mk:\"North Macedonia\",ms:\"Malay\",ml:\"Malayalam\",mt:\"Maltese\",mi:\"Maori\",mr:\"Marathi\",mo:\"Moldavian\",nv:\"Navajo\",ng:\"Ndonga\",ne:\"Nepali\",no:\"Norwegian\",nb:\"Norwegian (Bokmal)\",nn:\"Norwegian (Nynorsk)\",oc:\"Occitan\",or:\"Oriya\",om:\"Oromo\",fa:\"Persian\",\"fa-IR\":\"Persian/Iran\",pl:\"Polish\",pt:\"Portuguese\",\"pt-BR\":\"Portuguese (Brazil)\",pa:\"Punjabi\",\"pa-IN\":\"Punjabi (India)\",\"pa-PK\":\"Punjabi (Pakistan)\",qu:\"Quechua\",rm:\"Rhaeto-Romanic\",ro:\"Romanian\",\"ro-MO\":\"Romanian (Moldavia)\",ru:\"Russian\",\"ru-MO\":\"Russian (Moldavia)\",sz:\"Sami (Lappish)\",sg:\"Sango\",sa:\"Sanskrit\",sc:\"Sardinian\",sd:\"Sindhi\",si:\"Singhalese\",sr:\"Serbian\",sk:\"Slovak\",sl:\"Slovenian\",so:\"Somani\",sb:\"Sorbian\",es:\"Spanish\",\"es-AR\":\"Spanish (Argentina)\",\"es-BO\":\"Spanish (Bolivia)\",\"es-CL\":\"Spanish (Chile)\",\"es-CO\":\"Spanish (Colombia)\",\"es-CR\":\"Spanish (Costa Rica)\",\"es-DO\":\"Spanish (Dominican Republic)\",\"es-EC\":\"Spanish (Ecuador)\",\"es-SV\":\"Spanish (El Salvador)\",\"es-GT\":\"Spanish (Guatemala)\",\"es-HN\":\"Spanish (Honduras)\",\"es-MX\":\"Spanish (Mexico)\",\"es-NI\":\"Spanish (Nicaragua)\",\"es-PA\":\"Spanish (Panama)\",\"es-PY\":\"Spanish (Paraguay)\",\"es-PE\":\"Spanish (Peru)\",\"es-PR\":\"Spanish (Puerto Rico)\",\"es-ES\":\"Spanish (Spain)\",\"es-UY\":\"Spanish (Uruguay)\",\"es-VE\":\"Spanish (Venezuela)\",sx:\"Sutu\",sw:\"Swahili\",sv:\"Swedish\",\"sv-FI\":\"Swedish (Finland)\",\"sv-SV\":\"Swedish (Sweden)\",ta:\"Tamil\",tt:\"Tatar\",te:\"Teluga\",th:\"Thai\",tig:\"Tigre\",ts:\"Tsonga\",tn:\"Tswana\",tr:\"Turkish\",tk:\"Turkmen\",uk:\"Ukrainian\",hsb:\"Upper Sorbian\",ur:\"Urdu\",ve:\"Venda\",vi:\"Vietnamese\",vo:\"Volapuk\",wa:\"Walloon\",cy:\"Welsh\",xh:\"Xhosa\",ji:\"Yiddish\",zu:\"Zulu\"}[t]&&(this.internal.languageSettings.languageCode=t,!1===this.internal.languageSettings.isSubscribed&&(this.internal.events.subscribe(\"putCatalog\",(function(){this.internal.write(\"/Lang (\"+this.internal.languageSettings.languageCode+\")\")})),this.internal.languageSettings.isSubscribed=!0)),this},Vt=E.API,Gt=Vt.getCharWidthsArray=function(e,r){var n,i,a=(r=r||{}).font||this.internal.getFont(),o=r.fontSize||this.internal.getFontSize(),s=r.charSpace||this.internal.getCharSpace(),c=r.widths?r.widths:a.metadata.Unicode.widths,u=c.fof?c.fof:1,h=r.kerning?r.kerning:a.metadata.Unicode.kerning,l=h.fof?h.fof:1,f=!1!==r.doKerning,d=0,p=e.length,g=0,m=c[0]||u,v=[];for(n=0;n<p;n++)i=e.charCodeAt(n),\"function\"==typeof a.metadata.widthOfString?v.push((a.metadata.widthOfGlyph(a.metadata.characterToGlyph(i))+s*(1e3/o)||0)/1e3):(d=f&&\"object\"===t(h[i])&&!isNaN(parseInt(h[i][g],10))?h[i][g]/l:0,v.push((c[i]||m)/u+d)),g=i;return v},Yt=Vt.getStringUnitWidth=function(t,e){var r=(e=e||{}).fontSize||this.internal.getFontSize(),n=e.font||this.internal.getFont(),i=e.charSpace||this.internal.getCharSpace();return Vt.processArabic&&(t=Vt.processArabic(t)),\"function\"==typeof n.metadata.widthOfString?n.metadata.widthOfString(t,r,i)/r:Gt.apply(this,arguments).reduce((function(t,e){return t+e}),0)},Jt=function(t,e,r,n){for(var i=[],a=0,o=t.length,s=0;a!==o&&s+e[a]<r;)s+=e[a],a++;i.push(t.slice(0,a));var c=a;for(s=0;a!==o;)s+e[a]>n&&(i.push(t.slice(c,a)),s=0,c=a),s+=e[a],a++;return c!==a&&i.push(t.slice(c,a)),i},Xt=function(t,e,r){r||(r={});var n,i,a,o,s,c,u,h=[],l=[h],f=r.textIndent||0,d=0,p=0,g=t.split(\" \"),m=Gt.apply(this,[\" \",r])[0];if(c=-1===r.lineIndent?g[0].length+2:r.lineIndent||0){var v=Array(c).join(\" \"),b=[];g.map((function(t){(t=t.split(/\\s*\\n/)).length>1?b=b.concat(t.map((function(t,e){return(e&&t.length?\"\\n\":\"\")+t}))):b.push(t[0])})),g=b,c=Yt.apply(this,[v,r])}for(a=0,o=g.length;a<o;a++){var y=0;if(n=g[a],c&&\"\\n\"==n[0]&&(n=n.substr(1),y=1),f+d+(p=(i=Gt.apply(this,[n,r])).reduce((function(t,e){return t+e}),0))>e||y){if(p>e){for(s=Jt.apply(this,[n,i,e-(f+d),e]),h.push(s.shift()),h=[s.pop()];s.length;)l.push([s.shift()]);p=i.slice(n.length-(h[0]?h[0].length:0)).reduce((function(t,e){return t+e}),0)}else h=[n];l.push(h),f=p+c,d=m}else h.push(n),f+=d+p,d=m}return u=c?function(t,e){return(e?v:\"\")+t.join(\" \")}:function(t){return t.join(\" \")},l.map(u)},Vt.splitTextToSize=function(t,e,r){var n,i=(r=r||{}).fontSize||this.internal.getFontSize(),a=function(t){if(t.widths&&t.kerning)return{widths:t.widths,kerning:t.kerning};var e=this.internal.getFont(t.fontName,t.fontStyle);return e.metadata.Unicode?{widths:e.metadata.Unicode.widths||{0:1},kerning:e.metadata.Unicode.kerning||{}}:{font:e.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}.call(this,r);n=Array.isArray(t)?t:String(t).split(/\\r?\\n/);var o=1*this.internal.scaleFactor*e/i;a.textIndent=r.textIndent?1*r.textIndent*this.internal.scaleFactor/i:0,a.lineIndent=r.lineIndent;var s,c,u=[];for(s=0,c=n.length;s<c;s++)u=u.concat(Xt.apply(this,[n[s],o,a]));return u},function(e){e.__fontmetrics__=e.__fontmetrics__||{};for(var r=\"klmnopqrstuvwxyz\",n={},i={},a=0;a<r.length;a++)n[r[a]]=\"0123456789abcdef\"[a],i[\"0123456789abcdef\"[a]]=r[a];var o=function(t){return\"0x\"+parseInt(t,10).toString(16)},s=e.__fontmetrics__.compress=function(e){var r,n,a,c,u=[\"{\"];for(var h in e){if(r=e[h],isNaN(parseInt(h,10))?n=\"'\"+h+\"'\":(h=parseInt(h,10),n=(n=o(h).slice(2)).slice(0,-1)+i[n.slice(-1)]),\"number\"==typeof r)r<0?(a=o(r).slice(3),c=\"-\"):(a=o(r).slice(2),c=\"\"),a=c+a.slice(0,-1)+i[a.slice(-1)];else{if(\"object\"!==t(r))throw new Error(\"Don't know what to do with value type \"+t(r)+\".\");a=s(r)}u.push(n+a)}return u.push(\"}\"),u.join(\"\")},c=e.__fontmetrics__.uncompress=function(t){if(\"string\"!=typeof t)throw new Error(\"Invalid argument passed to uncompress.\");for(var e,r,i,a,o={},s=1,c=o,u=[],h=\"\",l=\"\",f=t.length-1,d=1;d<f;d+=1)\"'\"==(a=t[d])?e?(i=e.join(\"\"),e=void 0):e=[]:e?e.push(a):\"{\"==a?(u.push([c,i]),c={},i=void 0):\"}\"==a?((r=u.pop())[0][r[1]]=c,i=void 0,c=r[0]):\"-\"==a?s=-1:void 0===i?n.hasOwnProperty(a)?(h+=n[a],i=parseInt(h,16)*s,s=1,h=\"\"):h+=a:n.hasOwnProperty(a)?(l+=n[a],c[i]=parseInt(l,16)*s,s=1,i=void 0,l=\"\"):l+=a;return o},u={codePages:[\"WinAnsiEncoding\"],WinAnsiEncoding:c(\"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\")},h={Unicode:{Courier:u,\"Courier-Bold\":u,\"Courier-BoldOblique\":u,\"Courier-Oblique\":u,Helvetica:u,\"Helvetica-Bold\":u,\"Helvetica-BoldOblique\":u,\"Helvetica-Oblique\":u,\"Times-Roman\":u,\"Times-Bold\":u,\"Times-BoldItalic\":u,\"Times-Italic\":u}},l={Unicode:{\"Courier-Oblique\":c(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Times-BoldItalic\":c(\"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"),\"Helvetica-Bold\":c(\"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"),Courier:c(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Courier-BoldOblique\":c(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Times-Bold\":c(\"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"),Symbol:c(\"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"),Helvetica:c(\"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"),\"Helvetica-BoldOblique\":c(\"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"),ZapfDingbats:c(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\"Courier-Bold\":c(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Times-Italic\":c(\"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"),\"Times-Roman\":c(\"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"),\"Helvetica-Oblique\":c(\"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\")}};e.events.push([\"addFont\",function(t){var e=t.font,r=l.Unicode[e.postScriptName];r&&(e.metadata.Unicode={},e.metadata.Unicode.widths=r.widths,e.metadata.Unicode.kerning=r.kerning);var n=h.Unicode[e.postScriptName];n&&(e.metadata.Unicode.encoding=n,e.encoding=n.codePages[0])}])}(E.API),\n/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++)r[n]=t.charCodeAt(n);return r};t.API.events.push([\"addFont\",function(r){var n=void 0,i=r.font,a=r.instance;if(!i.isStandardFont){if(void 0===a)throw new Error(\"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\"+i.postScriptName+\"').\");if(\"string\"!=typeof(n=!1===a.existsFileInVFS(i.postScriptName)?a.loadFile(i.postScriptName):a.getFileFromVFS(i.postScriptName)))throw new Error(\"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\"+i.postScriptName+\"').\");!function(r,n){n=/^\\x00\\x01\\x00\\x00/.test(n)?e(n):e(u(n)),r.metadata=t.API.TTFFont.open(n),r.metadata.Unicode=r.metadata.Unicode||{encoding:{},kerning:{},widths:[]},r.metadata.glyIdsUsed=[0]}(i,n)}}])}(E),\n/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\nfunction(t){function e(){return(n.canvg?Promise.resolve(n.canvg):import(\"canvg\")).catch((function(t){return Promise.reject(new Error(\"Could not load canvg: \"+t))})).then((function(t){return t.default?t.default:t}))}E.API.addSvgAsImage=function(t,r,n,i,o,s,c,u){if(isNaN(r)||isNaN(n))throw a.error(\"jsPDF.addSvgAsImage: Invalid coordinates\",arguments),new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");if(isNaN(i)||isNaN(o))throw a.error(\"jsPDF.addSvgAsImage: Invalid measurements\",arguments),new Error(\"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\");var h=document.createElement(\"canvas\");h.width=i,h.height=o;var l=h.getContext(\"2d\");l.fillStyle=\"#fff\",l.fillRect(0,0,h.width,h.height);var f={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0},d=this;return e().then((function(e){return e.fromString(l,t,f)}),(function(){return Promise.reject(new Error(\"Could not load canvg.\"))})).then((function(t){return t.render(f)})).then((function(){d.addImage(h.toDataURL(\"image/jpeg\",1),r,n,i,o,c,u)}))}}(),E.API.putTotalPages=function(t){var e,r=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(e=new RegExp(t,\"g\"),r=this.internal.getNumberOfPages()):(e=new RegExp(this.pdfEscape16(t,this.internal.getFont()),\"g\"),r=this.pdfEscape16(this.internal.getNumberOfPages()+\"\",this.internal.getFont()));for(var n=1;n<=this.internal.getNumberOfPages();n++)for(var i=0;i<this.internal.pages[n].length;i++)this.internal.pages[n][i]=this.internal.pages[n][i].replace(e,r);return this},E.API.viewerPreferences=function(e,r){var n;e=e||{},r=r||!1;var i,a,o,s={HideToolbar:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:\"UseNone\",value:\"UseNone\",type:\"name\",explicitSet:!1,valueSet:[\"UseNone\",\"UseOutlines\",\"UseThumbs\",\"UseOC\"],pdfVersion:1.3},Direction:{defaultValue:\"L2R\",value:\"L2R\",type:\"name\",explicitSet:!1,valueSet:[\"L2R\",\"R2L\"],pdfVersion:1.3},ViewArea:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},ViewClip:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},PrintArea:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},PrintClip:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},PrintScaling:{defaultValue:\"AppDefault\",value:\"AppDefault\",type:\"name\",explicitSet:!1,valueSet:[\"AppDefault\",\"None\"],pdfVersion:1.6},Duplex:{defaultValue:\"\",value:\"none\",type:\"name\",explicitSet:!1,valueSet:[\"Simplex\",\"DuplexFlipShortEdge\",\"DuplexFlipLongEdge\",\"none\"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:\"\",value:\"\",type:\"array\",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:\"integer\",explicitSet:!1,valueSet:null,pdfVersion:1.7}},c=Object.keys(s),u=[],h=0,l=0,f=0;function d(t,e){var r,n=!1;for(r=0;r<t.length;r+=1)t[r]===e&&(n=!0);return n}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(s)),this.internal.viewerpreferences.isSubscribed=!1),n=this.internal.viewerpreferences.configuration,\"reset\"===e||!0===r){var p=c.length;for(f=0;f<p;f+=1)n[c[f]].value=n[c[f]].defaultValue,n[c[f]].explicitSet=!1}if(\"object\"===t(e))for(a in e)if(o=e[a],d(c,a)&&void 0!==o){if(\"boolean\"===n[a].type&&\"boolean\"==typeof o)n[a].value=o;else if(\"name\"===n[a].type&&d(n[a].valueSet,o))n[a].value=o;else if(\"integer\"===n[a].type&&Number.isInteger(o))n[a].value=o;else if(\"array\"===n[a].type){for(h=0;h<o.length;h+=1)if(i=!0,1===o[h].length&&\"number\"==typeof o[h][0])u.push(String(o[h]-1));else if(o[h].length>1){for(l=0;l<o[h].length;l+=1)\"number\"!=typeof o[h][l]&&(i=!1);!0===i&&u.push([o[h][0]-1,o[h][1]-1].join(\" \"))}n[a].value=\"[\"+u.join(\" \")+\"]\"}else n[a].value=n[a].defaultValue;n[a].explicitSet=!0}return!1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe(\"putCatalog\",(function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&(\"name\"===n[t].type?e.push(\"/\"+t+\" /\"+n[t].value):e.push(\"/\"+t+\" \"+n[t].value));0!==e.length&&this.internal.write(\"/ViewerPreferences\\n<<\\n\"+e.join(\"\\n\")+\"\\n>>\")})),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this},\n/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\nfunction(t){var e=function(){var t='<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"><rdf:Description rdf:about=\"\" xmlns:jspdf=\"'+this.internal.__metadata__.namespaceuri+'\"><jspdf:metadata>',e=unescape(encodeURIComponent('<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">')),r=unescape(encodeURIComponent(t)),n=unescape(encodeURIComponent(this.internal.__metadata__.metadata)),i=unescape(encodeURIComponent(\"</jspdf:metadata></rdf:Description></rdf:RDF>\")),a=unescape(encodeURIComponent(\"</x:xmpmeta>\")),o=r.length+n.length+i.length+e.length+a.length;this.internal.__metadata__.metadata_object_number=this.internal.newObject(),this.internal.write(\"<< /Type /Metadata /Subtype /XML /Length \"+o+\" >>\"),this.internal.write(\"stream\"),this.internal.write(e+r+n+i+a),this.internal.write(\"endstream\"),this.internal.write(\"endobj\")},r=function(){this.internal.__metadata__.metadata_object_number&&this.internal.write(\"/Metadata \"+this.internal.__metadata__.metadata_object_number+\" 0 R\")};t.addMetadata=function(t,n){return void 0===this.internal.__metadata__&&(this.internal.__metadata__={metadata:t,namespaceuri:n||\"http://jspdf.default.namespaceuri/\"},this.internal.events.subscribe(\"putCatalog\",r),this.internal.events.subscribe(\"postPutResources\",e)),this}}(E.API),function(t){var e=t.API,r=e.pdfEscape16=function(t,e){for(var r,n=e.metadata.Unicode.widths,i=[\"\",\"0\",\"00\",\"000\",\"0000\"],a=[\"\"],o=0,s=t.length;o<s;++o){if(r=e.metadata.characterToGlyph(t.charCodeAt(o)),e.metadata.glyIdsUsed.push(r),e.metadata.toUnicode[r]=t.charCodeAt(o),-1==n.indexOf(r)&&(n.push(r),n.push([parseInt(e.metadata.widthOfGlyph(r),10)])),\"0\"==r)return a.join(\"\");r=r.toString(16),a.push(i[4-r.length],r)}return a.join(\"\")},n=function(t){var e,r,n,i,a,o,s;for(a=\"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n  /Registry (Adobe)\\n  /Ordering (UCS)\\n  /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000><ffff>\\nendcodespacerange\",n=[],o=0,s=(r=Object.keys(t).sort((function(t,e){return t-e}))).length;o<s;o++)e=r[o],n.length>=100&&(a+=\"\\n\"+n.length+\" beginbfchar\\n\"+n.join(\"\\n\")+\"\\nendbfchar\",n=[]),void 0!==t[e]&&null!==t[e]&&\"function\"==typeof t[e].toString&&(i=(\"0000\"+t[e].toString(16)).slice(-4),e=(\"0000\"+(+e).toString(16)).slice(-4),n.push(\"<\"+e+\"><\"+i+\">\"));return n.length&&(a+=\"\\n\"+n.length+\" beginbfchar\\n\"+n.join(\"\\n\")+\"\\nendbfchar\\n\"),a+=\"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\"};e.events.push([\"putFont\",function(e){!function(e){var r=e.font,i=e.out,a=e.newObject,o=e.putStream;if(r.metadata instanceof t.API.TTFFont&&\"Identity-H\"===r.encoding){for(var s=r.metadata.Unicode.widths,c=r.metadata.subset.encode(r.metadata.glyIdsUsed,1),u=\"\",h=0;h<c.length;h++)u+=String.fromCharCode(c[h]);var l=a();o({data:u,addLength1:!0,objectId:l}),i(\"endobj\");var f=a();o({data:n(r.metadata.toUnicode),addLength1:!0,objectId:f}),i(\"endobj\");var d=a();i(\"<<\"),i(\"/Type /FontDescriptor\"),i(\"/FontName /\"+F(r.fontName)),i(\"/FontFile2 \"+l+\" 0 R\"),i(\"/FontBBox \"+t.API.PDFObject.convert(r.metadata.bbox)),i(\"/Flags \"+r.metadata.flags),i(\"/StemV \"+r.metadata.stemV),i(\"/ItalicAngle \"+r.metadata.italicAngle),i(\"/Ascent \"+r.metadata.ascender),i(\"/Descent \"+r.metadata.decender),i(\"/CapHeight \"+r.metadata.capHeight),i(\">>\"),i(\"endobj\");var p=a();i(\"<<\"),i(\"/Type /Font\"),i(\"/BaseFont /\"+F(r.fontName)),i(\"/FontDescriptor \"+d+\" 0 R\"),i(\"/W \"+t.API.PDFObject.convert(s)),i(\"/CIDToGIDMap /Identity\"),i(\"/DW 1000\"),i(\"/Subtype /CIDFontType2\"),i(\"/CIDSystemInfo\"),i(\"<<\"),i(\"/Supplement 0\"),i(\"/Registry (Adobe)\"),i(\"/Ordering (\"+r.encoding+\")\"),i(\">>\"),i(\">>\"),i(\"endobj\"),r.objectNumber=a(),i(\"<<\"),i(\"/Type /Font\"),i(\"/Subtype /Type0\"),i(\"/ToUnicode \"+f+\" 0 R\"),i(\"/BaseFont /\"+F(r.fontName)),i(\"/Encoding /\"+r.encoding),i(\"/DescendantFonts [\"+p+\" 0 R]\"),i(\">>\"),i(\"endobj\"),r.isAlreadyPutted=!0}}(e)}]);e.events.push([\"putFont\",function(e){!function(e){var r=e.font,i=e.out,a=e.newObject,o=e.putStream;if(r.metadata instanceof t.API.TTFFont&&\"WinAnsiEncoding\"===r.encoding){for(var s=r.metadata.rawData,c=\"\",u=0;u<s.length;u++)c+=String.fromCharCode(s[u]);var h=a();o({data:c,addLength1:!0,objectId:h}),i(\"endobj\");var l=a();o({data:n(r.metadata.toUnicode),addLength1:!0,objectId:l}),i(\"endobj\");var f=a();i(\"<<\"),i(\"/Descent \"+r.metadata.decender),i(\"/CapHeight \"+r.metadata.capHeight),i(\"/StemV \"+r.metadata.stemV),i(\"/Type /FontDescriptor\"),i(\"/FontFile2 \"+h+\" 0 R\"),i(\"/Flags 96\"),i(\"/FontBBox \"+t.API.PDFObject.convert(r.metadata.bbox)),i(\"/FontName /\"+F(r.fontName)),i(\"/ItalicAngle \"+r.metadata.italicAngle),i(\"/Ascent \"+r.metadata.ascender),i(\">>\"),i(\"endobj\"),r.objectNumber=a();for(var d=0;d<r.metadata.hmtx.widths.length;d++)r.metadata.hmtx.widths[d]=parseInt(r.metadata.hmtx.widths[d]*(1e3/r.metadata.head.unitsPerEm));i(\"<</Subtype/TrueType/Type/Font/ToUnicode \"+l+\" 0 R/BaseFont/\"+F(r.fontName)+\"/FontDescriptor \"+f+\" 0 R/Encoding/\"+r.encoding+\" /FirstChar 29 /LastChar 255 /Widths \"+t.API.PDFObject.convert(r.metadata.hmtx.widths)+\">>\"),i(\"endobj\"),r.isAlreadyPutted=!0}}(e)}]);var i=function(t){var e,n=t.text||\"\",i=t.x,a=t.y,o=t.options||{},s=t.mutex||{},c=s.pdfEscape,u=s.activeFontKey,h=s.fonts,l=u,f=\"\",d=0,p=\"\",g=h[l].encoding;if(\"Identity-H\"!==h[l].encoding)return{text:n,x:i,y:a,options:o,mutex:s};for(p=n,l=u,Array.isArray(n)&&(p=n[0]),d=0;d<p.length;d+=1)h[l].metadata.hasOwnProperty(\"cmap\")&&(e=h[l].metadata.cmap.unicode.codeMap[p[d].charCodeAt(0)]),e||p[d].charCodeAt(0)<256&&h[l].metadata.hasOwnProperty(\"Unicode\")?f+=p[d]:f+=\"\";var m=\"\";return parseInt(l.slice(1))<14||\"WinAnsiEncoding\"===g?m=c(f,l).split(\"\").map((function(t){return t.charCodeAt(0).toString(16)})).join(\"\"):\"Identity-H\"===g&&(m=r(f,h[l])),s.isHex=!0,{text:m,x:i,y:a,options:o,mutex:s}};e.events.push([\"postProcessText\",function(t){var e=t.text||\"\",r=[],n={text:e,x:t.x,y:t.y,options:t.options,mutex:t.mutex};if(Array.isArray(e)){var a=0;for(a=0;a<e.length;a+=1)Array.isArray(e[a])&&3===e[a].length?r.push([i(Object.assign({},n,{text:e[a][0]})).text,e[a][1],e[a][2]]):r.push(i(Object.assign({},n,{text:e[a]})).text);t.text=r}else t.text=i(Object.assign({},n,{text:e})).text}])}(E),\n/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(t){var e=function(){return void 0===this.internal.vFS&&(this.internal.vFS={}),!0};t.existsFileInVFS=function(t){return e.call(this),void 0!==this.internal.vFS[t]},t.addFileToVFS=function(t,r){return e.call(this),this.internal.vFS[t]=r,this},t.getFileFromVFS=function(t){return e.call(this),void 0!==this.internal.vFS[t]?this.internal.vFS[t]:null}}(E.API),\n/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\nfunction(t){t.__bidiEngine__=t.prototype.__bidiEngine__=function(t){var r,n,i,a,o,s,c,u=e,h=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],l=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],f={L:0,R:1,EN:2,AN:3,N:4,B:5,S:6},d={0:0,5:1,6:2,7:3,32:4,251:5,254:6,255:7},p=[\"(\",\")\",\"(\",\"<\",\">\",\"<\",\"[\",\"]\",\"[\",\"{\",\"}\",\"{\",\"«\",\"»\",\"«\",\"‹\",\"›\",\"‹\",\"⁅\",\"⁆\",\"⁅\",\"⁽\",\"⁾\",\"⁽\",\"₍\",\"₎\",\"₍\",\"≤\",\"≥\",\"≤\",\"〈\",\"〉\",\"〈\",\"﹙\",\"﹚\",\"﹙\",\"﹛\",\"﹜\",\"﹛\",\"﹝\",\"﹞\",\"﹝\",\"﹤\",\"﹥\",\"﹤\"],g=new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/),m=!1,v=0;this.__bidiEngine__={};var b=function(t){var e=t.charCodeAt(),r=e>>8,n=d[r];return void 0!==n?u[256*n+(255&e)]:252===r||253===r?\"AL\":g.test(r)?\"L\":8===r?\"R\":\"N\"},y=function(t){for(var e,r=0;r<t.length;r++){if(\"L\"===(e=b(t.charAt(r))))return!1;if(\"R\"===e)return!0}return!1},w=function(t,e,o,s){var c,u,h,l,f=e[s];switch(f){case\"L\":case\"R\":m=!1;break;case\"N\":case\"AN\":break;case\"EN\":m&&(f=\"AN\");break;case\"AL\":m=!0,f=\"R\";break;case\"WS\":f=\"N\";break;case\"CS\":s<1||s+1>=e.length||\"EN\"!==(c=o[s-1])&&\"AN\"!==c||\"EN\"!==(u=e[s+1])&&\"AN\"!==u?f=\"N\":m&&(u=\"AN\"),f=u===c?u:\"N\";break;case\"ES\":f=\"EN\"===(c=s>0?o[s-1]:\"B\")&&s+1<e.length&&\"EN\"===e[s+1]?\"EN\":\"N\";break;case\"ET\":if(s>0&&\"EN\"===o[s-1]){f=\"EN\";break}if(m){f=\"N\";break}for(h=s+1,l=e.length;h<l&&\"ET\"===e[h];)h++;f=h<l&&\"EN\"===e[h]?\"EN\":\"N\";break;case\"NSM\":if(i&&!a){for(l=e.length,h=s+1;h<l&&\"NSM\"===e[h];)h++;if(h<l){var d=t[s],p=d>=1425&&d<=2303||64286===d;if(c=e[h],p&&(\"R\"===c||\"AL\"===c)){f=\"R\";break}}}f=s<1||\"B\"===(c=e[s-1])?\"N\":o[s-1];break;case\"B\":m=!1,r=!0,f=v;break;case\"S\":n=!0,f=\"N\";break;case\"LRE\":case\"RLE\":case\"LRO\":case\"RLO\":case\"PDF\":m=!1;break;case\"BN\":f=\"N\"}return f},N=function(t,e,r){var n=t.split(\"\");return r&&L(n,r,{hiLevel:v}),n.reverse(),e&&e.reverse(),n.join(\"\")},L=function(t,e,i){var a,o,s,c,u,d=-1,p=t.length,g=0,y=[],N=v?l:h,L=[];for(m=!1,r=!1,n=!1,o=0;o<p;o++)L[o]=b(t[o]);for(s=0;s<p;s++){if(u=g,y[s]=w(t,L,y,s),a=240&(g=N[u][f[y[s]]]),g&=15,e[s]=c=N[g][5],a>0)if(16===a){for(o=d;o<s;o++)e[o]=1;d=-1}else d=-1;if(N[g][6])-1===d&&(d=s);else if(d>-1){for(o=d;o<s;o++)e[o]=c;d=-1}\"B\"===L[s]&&(e[s]=0),i.hiLevel|=c}n&&function(t,e,r){for(var n=0;n<r;n++)if(\"S\"===t[n]){e[n]=v;for(var i=n-1;i>=0&&\"WS\"===t[i];i--)e[i]=v}}(L,e,p)},A=function(t,e,n,i,a){if(!(a.hiLevel<t)){if(1===t&&1===v&&!r)return e.reverse(),void(n&&n.reverse());for(var o,s,c,u,h=e.length,l=0;l<h;){if(i[l]>=t){for(c=l+1;c<h&&i[c]>=t;)c++;for(u=l,s=c-1;u<s;u++,s--)o=e[u],e[u]=e[s],e[s]=o,n&&(o=n[u],n[u]=n[s],n[s]=o);l=c}l++}}},x=function(t,e,r){var n=t.split(\"\"),i={hiLevel:v};return r||(r=[]),L(n,r,i),function(t,e,r){if(0!==r.hiLevel&&c)for(var n,i=0;i<t.length;i++)1===e[i]&&(n=p.indexOf(t[i]))>=0&&(t[i]=p[n+1])}(n,r,i),A(2,n,e,r,i),A(1,n,e,r,i),n.join(\"\")};return this.__bidiEngine__.doBidiReorder=function(t,e,r){if(function(t,e){if(e)for(var r=0;r<t.length;r++)e[r]=r;void 0===a&&(a=y(t)),void 0===s&&(s=y(t))}(t,e),i||!o||s)if(i&&o&&a^s)v=a?1:0,t=N(t,e,r);else if(!i&&o&&s)v=a?1:0,t=x(t,e,r),t=N(t,e);else if(!i||a||o||s){if(i&&!o&&a^s)t=N(t,e),a?(v=0,t=x(t,e,r)):(v=1,t=x(t,e,r),t=N(t,e));else if(i&&a&&!o&&s)v=1,t=x(t,e,r),t=N(t,e);else if(!i&&!o&&a^s){var n=c;a?(v=1,t=x(t,e,r),v=0,c=!1,t=x(t,e,r),c=n):(v=0,t=x(t,e,r),t=N(t,e),v=1,c=!1,t=x(t,e,r),c=n,t=N(t,e))}}else v=0,t=x(t,e,r);else v=a?1:0,t=x(t,e,r);return t},this.__bidiEngine__.setOptions=function(t){t&&(i=t.isInputVisual,o=t.isOutputVisual,a=t.isInputRtl,s=t.isOutputRtl,c=t.isSymmetricSwapping)},this.__bidiEngine__.setOptions(t),this.__bidiEngine__};var e=[\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"S\",\"B\",\"S\",\"WS\",\"B\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"B\",\"B\",\"B\",\"S\",\"WS\",\"N\",\"N\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ES\",\"CS\",\"ES\",\"CS\",\"CS\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"B\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"CS\",\"N\",\"ET\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"L\",\"N\",\"N\",\"BN\",\"N\",\"N\",\"ET\",\"ET\",\"EN\",\"EN\",\"N\",\"L\",\"N\",\"N\",\"N\",\"EN\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ET\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"R\",\"NSM\",\"R\",\"NSM\",\"NSM\",\"R\",\"NSM\",\"NSM\",\"R\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"N\",\"N\",\"AL\",\"ET\",\"ET\",\"AL\",\"CS\",\"AL\",\"N\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"AL\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"ET\",\"AN\",\"AN\",\"AL\",\"AL\",\"AL\",\"NSM\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AN\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"AL\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"AL\",\"AL\",\"NSM\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"R\",\"R\",\"N\",\"N\",\"N\",\"N\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"BN\",\"BN\",\"BN\",\"L\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"WS\",\"B\",\"LRE\",\"RLE\",\"PDF\",\"LRO\",\"RLO\",\"CS\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"WS\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"N\",\"LRI\",\"RLI\",\"FSI\",\"PDI\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"EN\",\"L\",\"N\",\"N\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"ES\",\"ES\",\"N\",\"N\",\"N\",\"L\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"ES\",\"ES\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"NSM\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"ES\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"R\",\"N\",\"R\",\"R\",\"N\",\"R\",\"R\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"CS\",\"N\",\"CS\",\"N\",\"N\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ET\",\"N\",\"N\",\"ES\",\"ES\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"N\",\"BN\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ES\",\"CS\",\"ES\",\"CS\",\"CS\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\"],r=new t.__bidiEngine__({isInputVisual:!0});t.API.events.push([\"postProcessText\",function(t){var e=t.text,n=(t.x,t.y,t.options||{}),i=(t.mutex,n.lang,[]);if(n.isInputVisual=\"boolean\"!=typeof n.isInputVisual||n.isInputVisual,r.setOptions(n),\"[object Array]\"===Object.prototype.toString.call(e)){var a=0;for(i=[],a=0;a<e.length;a+=1)\"[object Array]\"===Object.prototype.toString.call(e[a])?i.push([r.doBidiReorder(e[a][0]),e[a][1],e[a][2]]):i.push([r.doBidiReorder(e[a])]);t.text=i}else t.text=r.doBidiReorder(e);r.setOptions({isInputVisual:!0})}])}(E),E.API.TTFFont=function(){function t(t){var e;if(this.rawData=t,e=this.contents=new ne(t),this.contents.pos=4,\"ttcf\"===e.readString(4))throw new Error(\"TTCF not supported.\");e.pos=0,this.parse(),this.subset=new Le(this),this.registerTTF()}return t.open=function(e){return new t(e)},t.prototype.parse=function(){return this.directory=new ie(this.contents),this.head=new se(this),this.name=new pe(this),this.cmap=new ue(this),this.toUnicode={},this.hhea=new he(this),this.maxp=new ge(this),this.hmtx=new me(this),this.post=new fe(this),this.os2=new le(this),this.loca=new Ne(this),this.glyf=new be(this),this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender,this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender,this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap,this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]},t.prototype.registerTTF=function(){var t,e,r,n,i;if(this.scaleFactor=1e3/this.head.unitsPerEm,this.bbox=function(){var e,r,n,i;for(i=[],e=0,r=(n=this.bbox).length;e<r;e++)t=n[e],i.push(Math.round(t*this.scaleFactor));return i}.call(this),this.stemV=0,this.post.exists?(r=255&(n=this.post.italic_angle),0!=(32768&(e=n>>16))&&(e=-(1+(65535^e))),this.italicAngle=+(e+\".\"+r)):this.italicAngle=0,this.ascender=Math.round(this.ascender*this.scaleFactor),this.decender=Math.round(this.decender*this.scaleFactor),this.lineGap=Math.round(this.lineGap*this.scaleFactor),this.capHeight=this.os2.exists&&this.os2.capHeight||this.ascender,this.xHeight=this.os2.exists&&this.os2.xHeight||0,this.familyClass=(this.os2.exists&&this.os2.familyClass||0)>>8,this.isSerif=1===(i=this.familyClass)||2===i||3===i||4===i||5===i||7===i,this.isScript=10===this.familyClass,this.flags=0,this.post.isFixedPitch&&(this.flags|=1),this.isSerif&&(this.flags|=2),this.isScript&&(this.flags|=8),0!==this.italicAngle&&(this.flags|=64),this.flags|=32,!this.cmap.unicode)throw new Error(\"No unicode cmap for font\")},t.prototype.characterToGlyph=function(t){var e;return(null!=(e=this.cmap.unicode)?e.codeMap[t]:void 0)||0},t.prototype.widthOfGlyph=function(t){var e;return e=1e3/this.head.unitsPerEm,this.hmtx.forGlyph(t).advance*e},t.prototype.widthOfString=function(t,e,r){var n,i,a,o;for(a=0,i=0,o=(t=\"\"+t).length;0<=o?i<o:i>o;i=0<=o?++i:--i)n=t.charCodeAt(i),a+=this.widthOfGlyph(this.characterToGlyph(n))+r*(1e3/e)||0;return a*(e/1e3)},t.prototype.lineHeight=function(t,e){var r;return null==e&&(e=!1),r=e?this.lineGap:0,(this.ascender+r-this.decender)/1e3*t},t}();var re,ne=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return(t=this.readUInt32())>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return(t=this.readUInt16())>=32768?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,r;for(r=[],e=0;0<=t?e<t:e>t;e=0<=t?++e:--e)r[e]=String.fromCharCode(this.readByte());return r.join(\"\")},t.prototype.writeString=function(t){var e,r,n;for(n=[],e=0,r=t.length;0<=r?e<r:e>r;e=0<=r?++e:--e)n.push(this.writeByte(t.charCodeAt(e)));return n},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,r,n,i,a,o,s;return t=this.readByte(),e=this.readByte(),r=this.readByte(),n=this.readByte(),i=this.readByte(),a=this.readByte(),o=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^r)+4294967296*(255^n)+16777216*(255^i)+65536*(255^a)+256*(255^o)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*r+4294967296*n+16777216*i+65536*a+256*o+s},t.prototype.writeLongLong=function(t){var e,r;return e=Math.floor(t/4294967296),r=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(r>>24&255),this.writeByte(r>>16&255),this.writeByte(r>>8&255),this.writeByte(255&r)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.read=function(t){var e,r;for(e=[],r=0;0<=t?r<t:r>t;r=0<=t?++r:--r)e.push(this.readByte());return e},t.prototype.write=function(t){var e,r,n,i;for(i=[],r=0,n=t.length;r<n;r++)e=t[r],i.push(this.writeByte(e));return i},t}(),ie=function(){var t;function e(t){var e,r,n;for(this.scalarType=t.readInt(),this.tableCount=t.readShort(),this.searchRange=t.readShort(),this.entrySelector=t.readShort(),this.rangeShift=t.readShort(),this.tables={},r=0,n=this.tableCount;0<=n?r<n:r>n;r=0<=n?++r:--r)e={tag:t.readString(4),checksum:t.readInt(),offset:t.readInt(),length:t.readInt()},this.tables[e.tag]=e}return e.prototype.encode=function(e){var r,n,i,a,o,s,c,u,h,l,f,d,p;for(p in f=Object.keys(e).length,s=Math.log(2),h=16*Math.floor(Math.log(f)/s),a=Math.floor(h/s),u=16*f-h,(n=new ne).writeInt(this.scalarType),n.writeShort(f),n.writeShort(h),n.writeShort(a),n.writeShort(u),i=16*f,c=n.pos+i,o=null,d=[],e)for(l=e[p],n.writeString(p),n.writeInt(t(l)),n.writeInt(c),n.writeInt(l.length),d=d.concat(l),\"head\"===p&&(o=c),c+=l.length;c%4;)d.push(0),c++;return n.write(d),r=2981146554-t(n.data),n.pos=o+8,n.writeUInt32(r),n.data},t=function(t){var e,r,n,i;for(t=ve.call(t);t.length%4;)t.push(0);for(n=new ne(t),r=0,e=0,i=t.length;e<i;e=e+=4)r+=n.readUInt32();return 4294967295&r},e}(),ae={}.hasOwnProperty,oe=function(t,e){for(var r in e)ae.call(e,r)&&(t[r]=e[r]);function n(){this.constructor=t}return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};re=function(){function t(t){var e;this.file=t,e=this.file.directory.tables[this.tag],this.exists=!!e,e&&(this.offset=e.offset,this.length=e.length,this.parse(this.file.contents))}return t.prototype.parse=function(){},t.prototype.encode=function(){},t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset,this.file.contents.read(this.length)):null},t}();var se=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"head\",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.revision=t.readInt(),this.checkSumAdjustment=t.readInt(),this.magicNumber=t.readInt(),this.flags=t.readShort(),this.unitsPerEm=t.readShort(),this.created=t.readLongLong(),this.modified=t.readLongLong(),this.xMin=t.readShort(),this.yMin=t.readShort(),this.xMax=t.readShort(),this.yMax=t.readShort(),this.macStyle=t.readShort(),this.lowestRecPPEM=t.readShort(),this.fontDirectionHint=t.readShort(),this.indexToLocFormat=t.readShort(),this.glyphDataFormat=t.readShort()},e.prototype.encode=function(t){var e;return(e=new ne).writeInt(this.version),e.writeInt(this.revision),e.writeInt(this.checkSumAdjustment),e.writeInt(this.magicNumber),e.writeShort(this.flags),e.writeShort(this.unitsPerEm),e.writeLongLong(this.created),e.writeLongLong(this.modified),e.writeShort(this.xMin),e.writeShort(this.yMin),e.writeShort(this.xMax),e.writeShort(this.yMax),e.writeShort(this.macStyle),e.writeShort(this.lowestRecPPEM),e.writeShort(this.fontDirectionHint),e.writeShort(t),e.writeShort(this.glyphDataFormat),e.data},e}(),ce=function(){function t(t,e){var r,n,i,a,o,s,c,u,h,l,f,d,p,g,m,v,b;switch(this.platformID=t.readUInt16(),this.encodingID=t.readShort(),this.offset=e+t.readInt(),h=t.pos,t.pos=this.offset,this.format=t.readUInt16(),this.length=t.readUInt16(),this.language=t.readUInt16(),this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format,this.codeMap={},this.format){case 0:for(s=0;s<256;++s)this.codeMap[s]=t.readByte();break;case 4:for(f=t.readUInt16(),l=f/2,t.pos+=6,i=function(){var e,r;for(r=[],s=e=0;0<=l?e<l:e>l;s=0<=l?++e:--e)r.push(t.readUInt16());return r}(),t.pos+=2,p=function(){var e,r;for(r=[],s=e=0;0<=l?e<l:e>l;s=0<=l?++e:--e)r.push(t.readUInt16());return r}(),c=function(){var e,r;for(r=[],s=e=0;0<=l?e<l:e>l;s=0<=l?++e:--e)r.push(t.readUInt16());return r}(),u=function(){var e,r;for(r=[],s=e=0;0<=l?e<l:e>l;s=0<=l?++e:--e)r.push(t.readUInt16());return r}(),n=(this.length-t.pos+this.offset)/2,o=function(){var e,r;for(r=[],s=e=0;0<=n?e<n:e>n;s=0<=n?++e:--e)r.push(t.readUInt16());return r}(),s=m=0,b=i.length;m<b;s=++m)for(g=i[s],r=v=d=p[s];d<=g?v<=g:v>=g;r=d<=g?++v:--v)0===u[s]?a=r+c[s]:0!==(a=o[u[s]/2+(r-d)-(l-s)]||0)&&(a+=c[s]),this.codeMap[r]=65535&a}t.pos=h}return t.encode=function(t,e){var r,n,i,a,o,s,c,u,h,l,f,d,p,g,m,v,b,y,w,N,L,A,x,S,_,P,k,I,F,C,j,O,B,M,E,q,D,R,T,U,z,H,W,V,G,Y;switch(I=new ne,a=Object.keys(t).sort((function(t,e){return t-e})),e){case\"macroman\":for(p=0,g=function(){var t=[];for(d=0;d<256;++d)t.push(0);return t}(),v={0:0},i={},F=0,B=a.length;F<B;F++)null==v[W=t[n=a[F]]]&&(v[W]=++p),i[n]={old:t[n],new:v[t[n]]},g[n]=v[t[n]];return I.writeUInt16(1),I.writeUInt16(0),I.writeUInt32(12),I.writeUInt16(0),I.writeUInt16(262),I.writeUInt16(0),I.write(g),{charMap:i,subtable:I.data,maxGlyphID:p+1};case\"unicode\":for(P=[],h=[],b=0,v={},r={},m=c=null,C=0,M=a.length;C<M;C++)null==v[w=t[n=a[C]]]&&(v[w]=++b),r[n]={old:w,new:v[w]},o=v[w]-n,null!=m&&o===c||(m&&h.push(m),P.push(n),c=o),m=n;for(m&&h.push(m),h.push(65535),P.push(65535),S=2*(x=P.length),A=2*Math.pow(Math.log(x)/Math.LN2,2),l=Math.log(A/2)/Math.LN2,L=2*x-A,s=[],N=[],f=[],d=j=0,E=P.length;j<E;d=++j){if(_=P[d],u=h[d],65535===_){s.push(0),N.push(0);break}if(_-(k=r[_].new)>=32768)for(s.push(0),N.push(2*(f.length+x-d)),n=O=_;_<=u?O<=u:O>=u;n=_<=u?++O:--O)f.push(r[n].new);else s.push(k-_),N.push(0)}for(I.writeUInt16(3),I.writeUInt16(1),I.writeUInt32(12),I.writeUInt16(4),I.writeUInt16(16+8*x+2*f.length),I.writeUInt16(0),I.writeUInt16(S),I.writeUInt16(A),I.writeUInt16(l),I.writeUInt16(L),z=0,q=h.length;z<q;z++)n=h[z],I.writeUInt16(n);for(I.writeUInt16(0),H=0,D=P.length;H<D;H++)n=P[H],I.writeUInt16(n);for(V=0,R=s.length;V<R;V++)o=s[V],I.writeUInt16(o);for(G=0,T=N.length;G<T;G++)y=N[G],I.writeUInt16(y);for(Y=0,U=f.length;Y<U;Y++)p=f[Y],I.writeUInt16(p);return{charMap:r,subtable:I.data,maxGlyphID:b+1}}},t}(),ue=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"cmap\",e.prototype.parse=function(t){var e,r,n;for(t.pos=this.offset,this.version=t.readUInt16(),n=t.readUInt16(),this.tables=[],this.unicode=null,r=0;0<=n?r<n:r>n;r=0<=n?++r:--r)e=new ce(t,this.offset),this.tables.push(e),e.isUnicode&&null==this.unicode&&(this.unicode=e);return!0},e.encode=function(t,e){var r,n;return null==e&&(e=\"macroman\"),r=ce.encode(t,e),(n=new ne).writeUInt16(0),n.writeUInt16(1),r.table=n.data.concat(r.subtable),r},e}(),he=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"hhea\",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.ascender=t.readShort(),this.decender=t.readShort(),this.lineGap=t.readShort(),this.advanceWidthMax=t.readShort(),this.minLeftSideBearing=t.readShort(),this.minRightSideBearing=t.readShort(),this.xMaxExtent=t.readShort(),this.caretSlopeRise=t.readShort(),this.caretSlopeRun=t.readShort(),this.caretOffset=t.readShort(),t.pos+=8,this.metricDataFormat=t.readShort(),this.numberOfMetrics=t.readUInt16()},e}(),le=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"OS/2\",e.prototype.parse=function(t){if(t.pos=this.offset,this.version=t.readUInt16(),this.averageCharWidth=t.readShort(),this.weightClass=t.readUInt16(),this.widthClass=t.readUInt16(),this.type=t.readShort(),this.ySubscriptXSize=t.readShort(),this.ySubscriptYSize=t.readShort(),this.ySubscriptXOffset=t.readShort(),this.ySubscriptYOffset=t.readShort(),this.ySuperscriptXSize=t.readShort(),this.ySuperscriptYSize=t.readShort(),this.ySuperscriptXOffset=t.readShort(),this.ySuperscriptYOffset=t.readShort(),this.yStrikeoutSize=t.readShort(),this.yStrikeoutPosition=t.readShort(),this.familyClass=t.readShort(),this.panose=function(){var e,r;for(r=[],e=0;e<10;++e)r.push(t.readByte());return r}(),this.charRange=function(){var e,r;for(r=[],e=0;e<4;++e)r.push(t.readInt());return r}(),this.vendorID=t.readString(4),this.selection=t.readShort(),this.firstCharIndex=t.readShort(),this.lastCharIndex=t.readShort(),this.version>0&&(this.ascent=t.readShort(),this.descent=t.readShort(),this.lineGap=t.readShort(),this.winAscent=t.readShort(),this.winDescent=t.readShort(),this.codePageRange=function(){var e,r;for(r=[],e=0;e<2;e=++e)r.push(t.readInt());return r}(),this.version>1))return this.xHeight=t.readShort(),this.capHeight=t.readShort(),this.defaultChar=t.readShort(),this.breakChar=t.readShort(),this.maxContext=t.readShort()},e}(),fe=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"post\",e.prototype.parse=function(t){var e,r,n;switch(t.pos=this.offset,this.format=t.readInt(),this.italicAngle=t.readInt(),this.underlinePosition=t.readShort(),this.underlineThickness=t.readShort(),this.isFixedPitch=t.readInt(),this.minMemType42=t.readInt(),this.maxMemType42=t.readInt(),this.minMemType1=t.readInt(),this.maxMemType1=t.readInt(),this.format){case 65536:break;case 131072:var i;for(r=t.readUInt16(),this.glyphNameIndex=[],i=0;0<=r?i<r:i>r;i=0<=r?++i:--i)this.glyphNameIndex.push(t.readUInt16());for(this.names=[],n=[];t.pos<this.offset+this.length;)e=t.readByte(),n.push(this.names.push(t.readString(e)));return n;case 151552:return r=t.readUInt16(),this.offsets=t.read(r);case 196608:break;case 262144:return this.map=function(){var e,r,n;for(n=[],i=e=0,r=this.file.maxp.numGlyphs;0<=r?e<r:e>r;i=0<=r?++e:--e)n.push(t.readUInt32());return n}.call(this)}},e}(),de=function(t,e){this.raw=t,this.length=t.length,this.platformID=e.platformID,this.encodingID=e.encodingID,this.languageID=e.languageID},pe=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"name\",e.prototype.parse=function(t){var e,r,n,i,a,o,s,c,u,h,l;for(t.pos=this.offset,t.readShort(),e=t.readShort(),o=t.readShort(),r=[],i=0;0<=e?i<e:i>e;i=0<=e?++i:--i)r.push({platformID:t.readShort(),encodingID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:this.offset+o+t.readShort()});for(s={},i=u=0,h=r.length;u<h;i=++u)n=r[i],t.pos=n.offset,c=t.readString(n.length),a=new de(c,n),null==s[l=n.nameID]&&(s[l]=[]),s[n.nameID].push(a);this.strings=s,this.copyright=s[0],this.fontFamily=s[1],this.fontSubfamily=s[2],this.uniqueSubfamily=s[3],this.fontName=s[4],this.version=s[5];try{this.postscriptName=s[6][0].raw.replace(/[\\x00-\\x19\\x80-\\xff]/g,\"\")}catch(t){this.postscriptName=s[4][0].raw.replace(/[\\x00-\\x19\\x80-\\xff]/g,\"\")}return this.trademark=s[7],this.manufacturer=s[8],this.designer=s[9],this.description=s[10],this.vendorUrl=s[11],this.designerUrl=s[12],this.license=s[13],this.licenseUrl=s[14],this.preferredFamily=s[15],this.preferredSubfamily=s[17],this.compatibleFull=s[18],this.sampleText=s[19]},e}(),ge=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"maxp\",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.numGlyphs=t.readUInt16(),this.maxPoints=t.readUInt16(),this.maxContours=t.readUInt16(),this.maxCompositePoints=t.readUInt16(),this.maxComponentContours=t.readUInt16(),this.maxZones=t.readUInt16(),this.maxTwilightPoints=t.readUInt16(),this.maxStorage=t.readUInt16(),this.maxFunctionDefs=t.readUInt16(),this.maxInstructionDefs=t.readUInt16(),this.maxStackElements=t.readUInt16(),this.maxSizeOfInstructions=t.readUInt16(),this.maxComponentElements=t.readUInt16(),this.maxComponentDepth=t.readUInt16()},e}(),me=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"hmtx\",e.prototype.parse=function(t){var e,r,n,i,a,o,s;for(t.pos=this.offset,this.metrics=[],e=0,o=this.file.hhea.numberOfMetrics;0<=o?e<o:e>o;e=0<=o?++e:--e)this.metrics.push({advance:t.readUInt16(),lsb:t.readInt16()});for(n=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics,this.leftSideBearings=function(){var r,i;for(i=[],e=r=0;0<=n?r<n:r>n;e=0<=n?++r:--r)i.push(t.readInt16());return i}(),this.widths=function(){var t,e,r,n;for(n=[],t=0,e=(r=this.metrics).length;t<e;t++)i=r[t],n.push(i.advance);return n}.call(this),r=this.widths[this.widths.length-1],s=[],e=a=0;0<=n?a<n:a>n;e=0<=n?++a:--a)s.push(this.widths.push(r));return s},e.prototype.forGlyph=function(t){return t in this.metrics?this.metrics[t]:{advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[t-this.metrics.length]}},e}(),ve=[].slice,be=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"glyf\",e.prototype.parse=function(){return this.cache={}},e.prototype.glyphFor=function(t){var e,r,n,i,a,o,s,c,u,h;return t in this.cache?this.cache[t]:(i=this.file.loca,e=this.file.contents,r=i.indexOf(t),0===(n=i.lengthOf(t))?this.cache[t]=null:(e.pos=this.offset+r,a=(o=new ne(e.read(n))).readShort(),c=o.readShort(),h=o.readShort(),s=o.readShort(),u=o.readShort(),this.cache[t]=-1===a?new we(o,c,h,s,u):new ye(o,a,c,h,s,u),this.cache[t]))},e.prototype.encode=function(t,e,r){var n,i,a,o,s;for(a=[],i=[],o=0,s=e.length;o<s;o++)n=t[e[o]],i.push(a.length),n&&(a=a.concat(n.encode(r)));return i.push(a.length),{table:a,offsets:i}},e}(),ye=function(){function t(t,e,r,n,i,a){this.raw=t,this.numberOfContours=e,this.xMin=r,this.yMin=n,this.xMax=i,this.yMax=a,this.compound=!1}return t.prototype.encode=function(){return this.raw.data},t}(),we=function(){function t(t,e,r,n,i){var a,o;for(this.raw=t,this.xMin=e,this.yMin=r,this.xMax=n,this.yMax=i,this.compound=!0,this.glyphIDs=[],this.glyphOffsets=[],a=this.raw;o=a.readShort(),this.glyphOffsets.push(a.pos),this.glyphIDs.push(a.readUInt16()),32&o;)a.pos+=1&o?4:2,128&o?a.pos+=8:64&o?a.pos+=4:8&o&&(a.pos+=2)}return 1,8,32,64,128,t.prototype.encode=function(){var t,e,r;for(e=new ne(ve.call(this.raw.data)),t=0,r=this.glyphIDs.length;t<r;++t)e.pos=this.glyphOffsets[t];return e.data},t}(),Ne=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,re),e.prototype.tag=\"loca\",e.prototype.parse=function(t){var e,r;return t.pos=this.offset,e=this.file.head.indexToLocFormat,this.offsets=0===e?function(){var e,n;for(n=[],r=0,e=this.length;r<e;r+=2)n.push(2*t.readUInt16());return n}.call(this):function(){var e,n;for(n=[],r=0,e=this.length;r<e;r+=4)n.push(t.readUInt32());return n}.call(this)},e.prototype.indexOf=function(t){return this.offsets[t]},e.prototype.lengthOf=function(t){return this.offsets[t+1]-this.offsets[t]},e.prototype.encode=function(t,e){for(var r=new Uint32Array(this.offsets.length),n=0,i=0,a=0;a<r.length;++a)if(r[a]=n,i<e.length&&e[i]==a){++i,r[a]=n;var o=this.offsets[a],s=this.offsets[a+1]-o;s>0&&(n+=s)}for(var c=new Array(4*r.length),u=0;u<r.length;++u)c[4*u+3]=255&r[u],c[4*u+2]=(65280&r[u])>>8,c[4*u+1]=(16711680&r[u])>>16,c[4*u]=(4278190080&r[u])>>24;return c},e}(),Le=function(){function t(t){this.font=t,this.subset={},this.unicodes={},this.next=33}return t.prototype.generateCmap=function(){var t,e,r,n,i;for(e in n=this.font.cmap.tables[0].codeMap,t={},i=this.subset)r=i[e],t[e]=n[r];return t},t.prototype.glyphsFor=function(t){var e,r,n,i,a,o,s;for(n={},a=0,o=t.length;a<o;a++)n[i=t[a]]=this.font.glyf.glyphFor(i);for(i in e=[],n)(null!=(r=n[i])?r.compound:void 0)&&e.push.apply(e,r.glyphIDs);if(e.length>0)for(i in s=this.glyphsFor(e))r=s[i],n[i]=r;return n},t.prototype.encode=function(t,e){var r,n,i,a,o,s,c,u,h,l,f,d,p,g,m;for(n in r=ue.encode(this.generateCmap(),\"unicode\"),a=this.glyphsFor(t),f={0:0},m=r.charMap)f[(s=m[n]).old]=s.new;for(d in l=r.maxGlyphID,a)d in f||(f[d]=l++);return u=function(t){var e,r;for(e in r={},t)r[t[e]]=e;return r}(f),h=Object.keys(u).sort((function(t,e){return t-e})),p=function(){var t,e,r;for(r=[],t=0,e=h.length;t<e;t++)o=h[t],r.push(u[o]);return r}(),i=this.font.glyf.encode(a,p,f),c=this.font.loca.encode(i.offsets,p),g={cmap:this.font.cmap.raw(),glyf:i.table,loca:c,hmtx:this.font.hmtx.raw(),hhea:this.font.hhea.raw(),maxp:this.font.maxp.raw(),post:this.font.post.raw(),name:this.font.name.raw(),head:this.font.head.encode(e)},this.font.os2.exists&&(g[\"OS/2\"]=this.font.os2.raw()),this.font.directory.encode(g)},t}();E.API.PDFObject=function(){var t;function e(){}return t=function(t,e){return(Array(e+1).join(\"0\")+t).slice(-e)},e.convert=function(r){var n,i,a,o;if(Array.isArray(r))return\"[\"+function(){var t,i,a;for(a=[],t=0,i=r.length;t<i;t++)n=r[t],a.push(e.convert(n));return a}().join(\" \")+\"]\";if(\"string\"==typeof r)return\"/\"+r;if(null!=r?r.isString:void 0)return\"(\"+r+\")\";if(r instanceof Date)return\"(D:\"+t(r.getUTCFullYear(),4)+t(r.getUTCMonth(),2)+t(r.getUTCDate(),2)+t(r.getUTCHours(),2)+t(r.getUTCMinutes(),2)+t(r.getUTCSeconds(),2)+\"Z)\";if(\"[object Object]\"==={}.toString.call(r)){for(i in a=[\"<<\"],r)o=r[i],a.push(\"/\"+i+\" \"+e.convert(o));return a.push(\">>\"),a.join(\"\\n\")}return\"\"+r},e}();export default E;export{St as AcroForm,At as AcroFormAppearance,mt as AcroFormButton,wt as AcroFormCheckBox,ft as AcroFormChoiceField,pt as AcroFormComboBox,gt as AcroFormEditBox,dt as AcroFormListBox,Lt as AcroFormPasswordField,vt as AcroFormPushButton,bt as AcroFormRadioButton,Nt as AcroFormTextField,j as GState,B as ShadingPattern,M as TilingPattern,E as jsPDF};\n//# sourceMappingURL=jspdf.es.min.js.map\n","import { jsPDF } from 'jspdf'\nimport { PolarActionTree } from '@polar/lib-custom-types'\nimport { ExportFormat, ExportGetters, ExportState } from '../types'\n\n// PDF options\nconst dims = {\n  a0: [1189, 841],\n  a1: [841, 594],\n  a2: [594, 420],\n  a3: [420, 297],\n  a4: [297, 210],\n  a5: [210, 148],\n}\n\n// Screenshot canvas\nconst CANVAS_ID = 'export-canvas'\n\nconst convertToPdf = (src: string) => {\n  // NOTE: when supporting more formats, scale map accordingly\n  const format = 'a4'\n  const dim = dims[format]\n  // Import of jspdf is in mounted.\n  const jsPdf = new jsPDF('landscape', undefined, format) // eslint-disable-line\n  jsPdf.addImage(src, 'JPEG', 0, 0, dim[0], dim[1])\n\n  return {\n    pdfSrc: jsPdf.output('datauristring'),\n    jsPdf,\n  }\n}\n\nconst downloadAsImage = (src: string, type: ExportFormat) => {\n  const link = document.createElement('a')\n  link.download = 'map.' + (type === ExportFormat.PNG ? 'png' : 'jpeg')\n  link.href = src\n  document.body.appendChild(link)\n  link.click()\n  document.body.removeChild(link)\n}\n\n// For every ol-layer, get matrix and apply on canvas\nconst getDataUrl = (size: number[], type: ExportFormat) => {\n  // The canvas to render the screenshot in\n  const mapCanvas: HTMLCanvasElement = document.createElement('canvas')\n  mapCanvas.id = CANVAS_ID\n  // mapCanvas.setAttribute('crossOrigin', 'anonymous')\n  mapCanvas.width = size[0]\n  mapCanvas.height = size[1]\n\n  // Write on this\n  const mapContext = mapCanvas.getContext('2d')\n  if (!mapContext) {\n    console.error(\n      '@polar/plugin-export: map does not have a 2d context, export failed.'\n    )\n    return\n  }\n\n  Array.prototype.forEach.call(\n    document.querySelector('[data-app]')?.querySelectorAll('.ol-layer canvas'),\n    function (canvas) {\n      if (canvas.width > 0) {\n        const opacity = canvas.parentNode.style.opacity\n        mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity)\n        const transform = canvas.style.transform\n        // Get the transform parameters from the style's transform matrix\n        const matrix = transform\n          .match(/^matrix\\(([^(]*)\\)$/)[1]\n          .split(',')\n          .map(Number)\n        // Apply the transform to the export map context\n        CanvasRenderingContext2D.prototype.setTransform.apply(\n          mapContext,\n          matrix\n        )\n        mapContext.drawImage(canvas, 0, 0)\n      } else console.warn('@polar/plugin-export: canvas width is 0.')\n    }\n  )\n\n  return mapCanvas.toDataURL(\n    type === ExportFormat.PNG ? 'image/png' : 'image/jpeg'\n  )\n}\n\nconst actions: PolarActionTree<ExportState, ExportGetters> = {\n  exportAs(\n    { commit, getters: { download }, rootGetters: { map } },\n    type: ExportFormat\n  ) {\n    if (!map) {\n      console.warn('@polar/plugin-export: map is not initialized.')\n      return\n    }\n\n    map.getInteractions().forEach((interaction) => interaction.setActive(false))\n\n    map.once('postrender', function () {\n      const size = map.getSize()\n      if (!Array.isArray(size) || size.length !== 2) {\n        throw Error('Export: Map has no size.')\n      }\n      let src = getDataUrl(size, type)\n      if (!src) return\n\n      if (type === ExportFormat.JPG || type === ExportFormat.PNG) {\n        if (download) downloadAsImage(src, type)\n      } else {\n        const { pdfSrc, jsPdf } = convertToPdf(src)\n        src = pdfSrc\n\n        if (download) jsPdf.save('map.pdf')\n      }\n\n      map.getInteractions().forEach((interaction) => {\n        interaction.setActive(true)\n      })\n\n      commit('setExportedMap', src)\n    })\n\n    map.renderSync()\n  },\n}\n\nexport default actions\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { ExportDirection, ExportGetters, ExportState } from '../types'\nimport actions from './actions'\n\nconst getInitialState = (): ExportState => ({\n  exportedMap: '',\n  openInDirection: ExportDirection.RIGHT,\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<ExportState, ExportGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions,\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      configuration(_, __, ___, rootGetters) {\n        return {\n          download: false,\n          showJpg: true,\n          showPdf: true,\n          showPng: true,\n          ...rootGetters.configuration?.export,\n        }\n      },\n      download(_, { configuration }) {\n        return configuration.download\n      },\n      showJpg(_, { configuration }) {\n        return configuration.showJpg\n      },\n      showPng(_, { configuration }) {\n        return configuration.showPng\n      },\n      showPdf(_, { configuration }) {\n        return configuration.showPdf\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { ExportConfiguration } from '@polar/lib-custom-types'\n\nimport { Export } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport { ExportDirection } from './types'\nexport default (options: ExportConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'export',\n    plugin: Export,\n    locales,\n    options,\n    storeModule: makeStoreModule(),\n  })\n","<template>\n  <div>\n    <v-card class=\"polar-plugin-filter-wrapper\">\n      <template v-for=\"(layerId, layerIndex) of layers\">\n        <v-card-title :key=\"`plugin-filter-layer-title-${layerIndex}`\">\n          {{ $t(`plugins.filter.layerName.${layerId}`) }}\n        </v-card-title>\n        <v-divider :key=\"`plugin-filter-divider-${layerIndex}`\"></v-divider>\n        <v-expansion-panels\n          :key=\"`plugin-filter-accordion-${layerIndex}`\"\n          accordion\n        >\n          <template v-if=\"getCategories(layerId)\">\n            <v-expansion-panel\n              v-for=\"(\n                { targetProperty, knownValues, selectAll }, categoryIndex\n              ) of getCategories(layerId)\"\n              :key=\"`plugin-filter-panel-${layerIndex}-${categoryIndex}`\"\n            >\n              <v-expansion-panel-header>\n                {{\n                  $t(\n                    `plugins.filter.category.${layerId}.title.${targetProperty}`\n                  )\n                }}\n              </v-expansion-panel-header>\n              <v-expansion-panel-content>\n                <v-checkbox\n                  v-if=\"selectAll\"\n                  dense\n                  hide-details\n                  :label=\"$t('plugins.filter.category.deselectAll')\"\n                  :indeterminate=\"\n                    getActiveCategoryAll({ layerId, targetProperty }) ===\n                    'indeterminate'\n                  \"\n                  :input-value=\"\n                    getActiveCategoryAll({ layerId, targetProperty })\n                  \"\n                  @change=\"toggleCategoryAll({ layerId, targetProperty })\"\n                ></v-checkbox>\n                <v-checkbox\n                  v-for=\"(knownValue, knownValueIndex) of knownValues\"\n                  :key=\"`plugin-filter-checkbox-${layerIndex}-${categoryIndex}-${knownValueIndex}`\"\n                  dense\n                  hide-details\n                  :label=\"\n                    $t(\n                      `plugins.filter.category.${layerId}.${targetProperty}.${knownValue}`\n                    )\n                  \"\n                  :input-value=\"\n                    getActiveCategory({\n                      layerId,\n                      targetProperty,\n                      knownValue,\n                    })\n                  \"\n                  @change=\"\n                    toggleCategory({ layerId, targetProperty, knownValue })\n                  \"\n                ></v-checkbox>\n              </v-expansion-panel-content>\n            </v-expansion-panel>\n          </template>\n          <v-expansion-panel v-if=\"getTimeConfig(layerId)\">\n            <v-expansion-panel-header class=\"polar-plugin-filter-expansion\">\n              {{ $t(`plugins.filter.time.header`) }}\n            </v-expansion-panel-header>\n            <v-expansion-panel-content>\n              <v-radio-group\n                :value=\"\n                  getActiveTime({\n                    layerId,\n                  })\n                \"\n                dense\n                hide-details\n                @change=\"\n                  (radioId) =>\n                    changeTimeRadio({\n                      radioId,\n                      layerId,\n                    })\n                \"\n              >\n                <v-radio\n                  :label=\"$t('plugins.filter.time.noRestriction')\"\n                  :value=\"0\"\n                  @keydown.up.stop\n                  @keydown.right.stop\n                  @keydown.down.stop\n                  @keydown.left.stop\n                ></v-radio>\n                <template\n                  v-for=\"(\n                    { label, component, amount, now }, timeIndex\n                  ) of getTimeOptions(layerId)\"\n                >\n                  <v-radio\n                    :key=\"`plugin-filter-checkbox-${layerIndex}-${timeIndex}`\"\n                    :label=\"$t(label, { count: amount })\"\n                    :value=\"timeIndex + 1\"\n                    @keydown.up.stop\n                    @keydown.right.stop\n                    @keydown.down.stop\n                    @keydown.left.stop\n                  ></v-radio>\n                  <component\n                    :is=\"component\"\n                    v-if=\"\n                      component && getActiveTime({ layerId }) === timeIndex + 1\n                    \"\n                    :key=\"`plugin-filter-checkbox-${layerIndex}-${timeIndex}-options`\"\n                    :layer-id=\"layerId\"\n                    :now=\"now\"\n                  ></component>\n                </template>\n              </v-radio-group>\n            </v-expansion-panel-content>\n          </v-expansion-panel>\n        </v-expansion-panels>\n      </template>\n    </v-card>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'PolarFilter',\n  computed: {\n    ...mapGetters('plugin/filter', [\n      'filterConfiguration',\n      'getActiveCategory',\n      'getActiveCategoryAll',\n      'getActiveTime',\n      'getCategories',\n      'getTimeConfig',\n      'getTimeOptions',\n    ]),\n    layers(): string[] {\n      return Object.keys(this.filterConfiguration.layers)\n    },\n  },\n  methods: {\n    ...mapActions('plugin/filter', [\n      'toggleCategory',\n      'toggleCategoryAll',\n      'changeTimeRadio',\n    ]),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-plugin-filter-wrapper {\n  min-width: 300px;\n\n  // tone down spacing\n  .v-expansion-panel-header.v-expansion-panel-header--active {\n    min-height: 48px;\n  }\n\n  .v-input--radio-group {\n    margin-top: 0;\n  }\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    filter: {\n      category: {\n        deselectAll: 'Alle an-/abwählen',\n      },\n      time: {\n        header: 'Zeitraum',\n        noRestriction: 'Keine Einschränkung',\n        last: {\n          days_one: 'Der letzte Tag',\n          days_other: 'Die letzten {{ count }} Tage',\n        },\n        next: {\n          days_one: 'Der nächste Tag',\n          days_other: 'Die nächsten {{ count }} Tage',\n        },\n        chooseTimeFrame: {\n          label: 'Zeitraum wählen',\n          info: 'Bitte wählen Sie ein Einzeldatum oder das erste und letzte Datum eines Zeitraums.',\n        },\n        vuetify: {\n          aria: {\n            nextMonth: 'Nächsten Monat auswählen',\n            nextYear: 'Nächstes Jahr auswählen',\n            prevMonth: 'Vorherigen Monat auswählen',\n            prevYear: 'Vorheriges Jahr auswählen',\n          },\n        },\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    filter: {\n      category: {\n        deselectAll: 'De-/select all',\n      },\n      time: {\n        header: 'Time frame',\n        noRestriction: 'No restriction',\n        last: {\n          days_one: 'The last day',\n          days_other: 'The last {{ count }} days',\n        },\n        next: {\n          days_one: 'The next day',\n          days_other: 'The next {{ count }} days',\n        },\n        chooseTimeFrame: {\n          label: 'Choose time frame',\n          info: 'Please choose a singular date or the first and last date of a time frame.',\n        },\n        vuetify: {\n          aria: {\n            nextMonth: 'Choose next month',\n            nextYear: 'Choose next year',\n            prevMonth: 'Choose previous month',\n            prevYear: 'Choose previous year',\n          },\n        },\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","<template>\n  <div>\n    <v-date-picker\n      v-model=\"dates\"\n      range\n      no-title\n      scrollable\n      elevation=\"5\"\n      :min=\"minDate\"\n      :max=\"maxDate\"\n      :first-day-of-week=\"1\"\n      :locale=\"language\"\n      :next-month-aria-label=\"$t('plugins.filter.time.vuetify.aria.nextMonth')\"\n      :next-year-aria-label=\"$t('plugins.filter.time.vuetify.aria.nextYear')\"\n      :prev-month-aria-label=\"$t('plugins.filter.time.vuetify.aria.prevMonth')\"\n      :prev-year-aria-label=\"$t('plugins.filter.time.vuetify.aria.prevYear')\"\n    ></v-date-picker>\n    <p class=\"polar-filter-time-frame-explanation\">\n      {{ $t('plugins.filter.time.chooseTimeFrame.info') }}\n    </p>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'PolarFilterChooseTimeFrame',\n  props: {\n    layerId: {\n      type: String,\n      required: true,\n    },\n    now: {\n      type: String,\n      required: true,\n      validator: function (value: string | undefined): boolean {\n        return ['until', 'from', undefined].includes(value)\n      },\n    },\n  },\n  computed: {\n    ...mapGetters('plugin/filter', ['getFreeSelection']),\n    ...mapGetters(['language']),\n    dates: {\n      get() {\n        return this.getFreeSelection(this.layerId)\n      },\n      set(freeSelection) {\n        this.changeFreeSelection({\n          freeSelection,\n          layerId: this.layerId,\n        })\n      },\n    },\n    minDate() {\n      if (this.now === 'from') {\n        return new Date(Date.now()).toISOString().split('T')[0]\n      }\n      return undefined\n    },\n    maxDate() {\n      if (this.now === 'until') {\n        return new Date(Date.now()).toISOString().split('T')[0]\n      }\n      return undefined\n    },\n  },\n  methods: {\n    ...mapActions('plugin/filter', ['changeFreeSelection']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-filter-time-frame-explanation {\n  letter-spacing: 0.05em;\n  font-size: 13px;\n  line-height: 14px;\n  margin-top: 0.5em;\n  margin-bottom: 0;\n}\n</style>\n","import { Feature, Map } from 'ol'\nimport { InvisibleStyle } from '@polar/lib-invisible-style'\nimport { FilterConfiguration } from '@polar/lib-custom-types'\nimport ClusterSource from 'ol/source/Cluster'\nimport BaseLayer from 'ol/layer/Base'\nimport { DatePattern, FilterState, LayerId, TimeOption } from '../types'\n\nconst doesFeaturePassCategoryFilter = (\n  categories: FilterConfiguration['layers'][string]['categories'],\n  category: FilterState['category'],\n  feature: Feature,\n  layerId: LayerId\n) =>\n  (categories || []).every(\n    ({ targetProperty }) =>\n      category[layerId][targetProperty][feature.get(targetProperty)]\n  )\n\nconst getFreeSelectionLimits = (clickLimits: Date[]): Date[] => {\n  const limits = clickLimits\n    .slice(0, 2)\n    .sort()\n    .map((x) => new Date(x))\n  if (!limits[1]) {\n    limits[1] = new Date(limits[0])\n  }\n  return limits\n}\n\nconst getDateFromValue = (\n  propertyValue: string,\n  pattern: DatePattern\n): Date => {\n  const yearIndices: number[] = []\n  const monthIndices: number[] = []\n  const dayIndices: number[] = []\n  const indexLookup = {\n    Y: yearIndices,\n    M: monthIndices,\n    D: dayIndices,\n  }\n  ;[...pattern].forEach((letter, index) => indexLookup[letter]?.push?.(index))\n  function getFromPropertyValue(index: number) {\n    return propertyValue[index]\n  }\n  return new Date(\n    Number(yearIndices.map(getFromPropertyValue).join('')),\n    Number(monthIndices.map(getFromPropertyValue).join('')) - 1,\n    Number(dayIndices.map(getFromPropertyValue).join(''))\n  )\n}\n\nconst doesFeaturePassTimeFilter = (\n  layerId: LayerId,\n  time: FilterState['time'],\n  timeOptions: TimeOption[],\n  feature: Feature\n): boolean => {\n  // radioId=0 means 'no restriction'\n  if (!time || !time[layerId] || time[layerId].radioId === 0) {\n    return true\n  }\n  const { targetProperty, radioId, pattern } = time[layerId]\n  const selectedTimeFilter = timeOptions[radioId - 1]\n  const propertyValue = feature.get(targetProperty)\n  const featureDate = getDateFromValue(propertyValue, pattern)\n  const { type, amount, unit } = selectedTimeFilter\n\n  // only unit 'days' currently supported\n  const unitMilliseconds = {\n    days: 24 * 60 * 60 * 1000,\n  }[unit || 'days']\n  const limits: Date[] = []\n\n  if (type === 'freeSelection') {\n    const chosenLimits = time[layerId].freeSelection\n    if (chosenLimits.length === 0) {\n      // no limits selected? feature passes automatically\n      return true\n    }\n    ;[limits[0], limits[1]] = getFreeSelectionLimits(chosenLimits)\n  } else {\n    limits[type === 'last' ? 0 : 1] = new Date(\n      // @ts-expect-error | amount is number in last/next case\n      Date.now() - amount * unitMilliseconds\n    )\n    limits[type === 'last' ? 1 : 0] = new Date(Date.now())\n  }\n  limits[0].setHours(0, 0, 0, 0)\n  limits[1].setHours(23, 59, 59, 999)\n\n  return limits[0] <= featureDate && featureDate <= limits[1]\n}\n\nconst doesFeaturePassFilter = (\n  feature: Feature,\n  { category, time }: FilterState,\n  categories: FilterConfiguration['layers'][string]['categories'],\n  layerId: LayerId,\n  timeOptions: TimeOption[]\n): boolean => {\n  if (\n    category &&\n    !doesFeaturePassCategoryFilter(categories, category, feature, layerId)\n  ) {\n    return false\n  }\n\n  return Boolean(\n    time && doesFeaturePassTimeFilter(layerId, time, timeOptions, feature)\n  )\n}\n\nexport const getLayer = (map: Map, layerId: LayerId): BaseLayer => {\n  const layer = map\n    .getLayers()\n    .getArray()\n    .find((layer) => layer.get('id') === layerId)\n  if (!layer) {\n    throw new Error(\n      `Layer ${layerId} undefined in Filter.utils.updateFeatureVisibility.`\n    )\n  }\n  return layer\n}\n\nexport const updateFeatureVisibility = ({\n  map,\n  layerId,\n  state,\n  categories,\n  timeOptions,\n}: {\n  map: Map\n  layerId: LayerId\n  state: FilterState\n  categories: FilterConfiguration['layers'][string]['categories']\n  timeOptions: TimeOption[]\n}) => {\n  const layer = getLayer(map, layerId)\n\n  // @ts-expect-error | only layers with getSource allowed\n  let source = layer.getSource()\n  while (source instanceof ClusterSource) {\n    source = source.getSource()\n  }\n  const updateFeatures = source\n    .getFeatures()\n    .map((feature) => feature.get('features') || [feature])\n    .flat(1)\n  // only update finally to prevent overly recalculating clusters\n  source.clear()\n\n  updateFeatures.forEach((feature) => {\n    const targetStyle = doesFeaturePassFilter(\n      feature,\n      state,\n      categories,\n      layerId,\n      timeOptions\n    )\n      ? null\n      : InvisibleStyle\n    if (feature.getStyle() !== targetStyle) {\n      feature.setStyle(targetStyle)\n    }\n  })\n  source.addFeatures(updateFeatures)\n}\n","import Vue from 'vue'\n\nexport const setState = (state: object, path: string[], value: unknown) => {\n  if (path.length === 1) {\n    Vue.set(state, path[0], value)\n    return\n  }\n  const [step, ...restPath] = path\n  if (!state[step]) {\n    Vue.set(state, step, {})\n  }\n  setState(state[step], restPath, value)\n}\n","export const arrayOnlyContains = (array: unknown[], value: unknown) =>\n  array.reduce((accumulator, current) => accumulator && current === value, true)\n","import { FilterConfigurationTimeOption } from '@polar/lib-custom-types'\nimport { TimeOption } from '../types'\n\nexport const parseTimeOption =\n  (timeDirection: 'last' | 'next') =>\n  (config: FilterConfigurationTimeOption): TimeOption[] =>\n    config.amounts.map((amount) => ({\n      label: `plugins.filter.time.${timeDirection}.${config.unit || 'days'}`,\n      component: null,\n      amount,\n      unit: config.unit || 'days',\n      now: null,\n      type: timeDirection,\n    }))\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { FilterConfiguration, PolarModule } from '@polar/lib-custom-types'\nimport ClusterSource from 'ol/source/Cluster'\nimport ChooseTimeFrame from '../components/ChooseTimeFrame.vue'\nimport {\n  FilterGetters,\n  FilterState,\n  KnownValue,\n  LayerId,\n  TargetProperty,\n} from '../types'\nimport {\n  getLayer,\n  updateFeatureVisibility,\n} from '../utils/updateFeatureVisibility'\nimport { setState } from '../utils/setState'\nimport { arrayOnlyContains } from '../utils/arrayOnlyContains'\nimport { parseTimeOption } from '../utils/parseTimeOption'\n\nconst getInitialState = (): FilterState => ({\n  category: {},\n  time: {},\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<FilterState, FilterGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({\n        getters: { filterConfiguration },\n        rootGetters: { map },\n        commit,\n        dispatch,\n      }): void {\n        if (Object.entries(filterConfiguration.layers).length === 0) {\n          console.error(\n            '@polar/plugin-filter: No configuration for parameter \"layers\" was found. Plugin will not be usable.'\n          )\n        }\n        Object.entries(filterConfiguration.layers).forEach(\n          ([layerId, { categories, time }]) => {\n            if (categories) {\n              categories.forEach(({ targetProperty, knownValues }) =>\n                commit('setupState', {\n                  path: ['category', layerId, targetProperty],\n                  value: knownValues.reduce((accumulator, current) => {\n                    accumulator[current] = true\n                    return accumulator\n                  }, {}),\n                })\n              )\n            }\n            if (time) {\n              const { targetProperty, freeSelection, pattern } = time\n              commit('setupState', {\n                path: ['time', layerId],\n                value: {\n                  targetProperty,\n                  pattern: pattern || 'YYYY-MM-DD',\n                  radioId: 0,\n                  freeSelection: freeSelection ? [] : null,\n                },\n              })\n            }\n            // apply filter effects on layer loads\n            // @ts-expect-error | only layers with getSource allowed\n            let source = getLayer(map, layerId).getSource()\n            while (source instanceof ClusterSource) {\n              source = source.getSource()\n            }\n            source.on('featuresloadend', () =>\n              dispatch('updateFeatureVisibility', layerId)\n            )\n            // initially update visibility in case loading already took place\n            dispatch('updateFeatureVisibility', layerId)\n          }\n        )\n      },\n      toggleCategory(\n        { getters, commit, dispatch },\n        payload: {\n          layerId: LayerId\n          targetProperty: TargetProperty\n          knownValue: KnownValue\n        }\n      ) {\n        const value = !getters.getActiveCategory(payload)\n        commit('setCategory', { ...payload, value })\n        dispatch('updateFeatureVisibility', payload.layerId)\n      },\n      toggleCategoryAll(\n        { getters, commit, dispatch },\n        payload: {\n          layerId: LayerId\n          targetProperty: TargetProperty\n        }\n      ) {\n        // 'indeterminate' to false intentionally (something had to be decided)\n        const value = !getters.getActiveCategoryAll(payload)\n        const { layerId } = payload\n        // @ts-expect-error | this call only happens if structures exist (generation in .vue)\n        getters\n          .getCategories(layerId)\n          .find(\n            ({ targetProperty }) => targetProperty === payload.targetProperty\n          )\n          .knownValues.forEach((knownValue) => {\n            commit('setCategory', { ...payload, knownValue, value })\n          })\n        dispatch('updateFeatureVisibility', payload.layerId)\n      },\n      changeTimeRadio(\n        { commit, dispatch },\n        payload: { layerId: LayerId; radioId: number }\n      ) {\n        commit('setTimeRadio', payload)\n        dispatch('updateFeatureVisibility', payload.layerId)\n      },\n      changeFreeSelection(\n        { commit, dispatch },\n        { layerId, freeSelection }: { layerId: LayerId; freeSelection: Date[] }\n      ) {\n        commit('setFreeSelection', { layerId, freeSelection })\n        dispatch('updateFeatureVisibility', layerId)\n      },\n      updateFeatureVisibility(\n        { state, rootGetters, getters },\n        layerId: LayerId\n      ) {\n        updateFeatureVisibility({\n          map: rootGetters.map,\n          layerId,\n          categories: getters.getCategories(layerId),\n          timeOptions: getters.getTimeOptions(layerId),\n          state: JSON.parse(JSON.stringify(state)),\n        })\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n      setCategory(\n        state,\n        {\n          layerId,\n          targetProperty,\n          knownValue,\n          value,\n        }: {\n          layerId: LayerId\n          targetProperty: TargetProperty\n          knownValue: KnownValue\n          value: boolean\n        }\n      ) {\n        state.category[layerId][targetProperty][knownValue] = value\n      },\n      setupState(state, { path, value }: { path: string[]; value: boolean }) {\n        setState(state, path, value)\n      },\n      setTimeRadio(\n        state,\n        { layerId, radioId }: { layerId: LayerId; radioId: number }\n      ) {\n        state.time[layerId].radioId = radioId\n      },\n      setFreeSelection(\n        state,\n        { layerId, freeSelection }: { layerId: LayerId; freeSelection: Date[] }\n      ) {\n        state.time[layerId].freeSelection = freeSelection\n      },\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      filterConfiguration(_, __, ___, rootGetters): FilterConfiguration {\n        return rootGetters.configuration?.filter || { layers: {} }\n      },\n      getActiveCategory:\n        (state) =>\n        ({ layerId, targetProperty, knownValue }) =>\n          state.category[layerId][targetProperty][knownValue],\n      getActiveCategoryAll:\n        (state) =>\n        ({ layerId, targetProperty }) => {\n          const allValues = Object.values(\n            state.category[layerId][targetProperty]\n          )\n          if (arrayOnlyContains(allValues, true)) {\n            return true\n          }\n          if (arrayOnlyContains(allValues, false)) {\n            return false\n          }\n          return 'indeterminate'\n        },\n      getActiveTime:\n        (state) =>\n        ({ layerId }) =>\n          state.time[layerId].radioId,\n      getCategories: (_, getters) => (layerId) =>\n        getters.filterConfiguration.layers[layerId]?.categories || [],\n      getTimeConfig:\n        (_, { filterConfiguration }) =>\n        (layerId) =>\n          filterConfiguration.layers[layerId]?.time || null,\n      getTimeOptions:\n        (_, { getTimeConfig }) =>\n        (layerId) => {\n          const timeConfig = getTimeConfig(layerId)\n          if (!timeConfig) {\n            return []\n          }\n          return [\n            ...(timeConfig.last || []).map(parseTimeOption('last')).flat(1),\n            ...(timeConfig.next || []).map(parseTimeOption('next')).flat(1),\n            ...(!timeConfig.freeSelection\n              ? []\n              : [\n                  {\n                    label: 'plugins.filter.time.chooseTimeFrame.label',\n                    component: ChooseTimeFrame,\n                    amount: null,\n                    unit: timeConfig.freeSelection.unit || 'days',\n                    now: timeConfig.freeSelection.now,\n                    type: 'freeSelection',\n                  },\n                ]),\n          ]\n        },\n      getFreeSelection: (state) => (layerId: string) =>\n        state.time[layerId].freeSelection,\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { FilterConfiguration } from '@polar/lib-custom-types'\nimport { Filter } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport default (options: FilterConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'filter',\n    plugin: Filter,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <v-tooltip v-if=\"fullscreenAvailable\" left :disabled=\"hasSmallDisplay\">\n    <template #activator=\"{ on, attrs }\">\n      <v-btn\n        :aria-label=\"\n          isInFullscreen\n            ? $t('plugins.fullscreen.button.tooltip.deactivate')\n            : $t('plugins.fullscreen.button.tooltip.activate')\n        \"\n        :class=\"{ 'ma-2': renderType === 'independent' }\"\n        color=\"primary\"\n        small\n        fab\n        v-bind=\"attrs\"\n        v-on=\"on\"\n        @click=\"toggleFullscreen\"\n      >\n        <v-icon color=\"primaryContrast\">\n          {{ isInFullscreen ? 'fa-compress' : 'fa-expand' }}\n        </v-icon>\n      </v-btn>\n    </template>\n    <span>{{\n      isInFullscreen\n        ? $t('plugins.fullscreen.button.tooltip.deactivate')\n        : $t('plugins.fullscreen.button.tooltip.activate')\n    }}</span>\n  </v-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\n\nexport default Vue.extend({\n  name: 'FullscreenPlugin',\n  computed: {\n    ...mapGetters(['hasSmallDisplay', 'map']),\n    ...mapGetters('plugin/fullscreen', [\n      'isInFullscreen',\n      'renderType',\n      'targetContainerId',\n    ]),\n    targetContainer(): Element {\n      if (this.targetContainerId.length > 0) {\n        if (document.getElementById(this.targetContainerId)) {\n          return document.getElementById(this.targetContainerId) as HTMLElement\n        }\n        console.error(\n          `@polar/plugin-fullscreen: The given targetContainerId ${this.targetContainerId} does not refer to a valid html element.`\n        )\n      }\n      return this.$root.$el\n    },\n    fullscreenAvailable(): boolean {\n      return Boolean(\n        this.targetContainer &&\n          (this.targetContainer.requestFullscreen ||\n            // @ts-expect-error | 'TS2339: Property 'webkitRequestFullscreen' does not exist on type 'Element'.'; For information refer to https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility\n            this.targetContainer.webkitRequestFullscreen)\n      )\n    },\n  },\n  mounted() {\n    document.addEventListener('webkitfullscreenchange', this.escapeHandler)\n    document.addEventListener('fullscreenchange', this.escapeHandler)\n  },\n  beforeDestroy() {\n    document.removeEventListener('webkitfullscreenchange', this.escapeHandler)\n    document.removeEventListener('fullscreenchange', this.escapeHandler)\n  },\n  methods: {\n    ...mapMutations('plugin/fullscreen', ['setIsInFullscreen']),\n    /**\n     * function that gets fired on changes to the fullscreen mode via the F11 or ESC keys.\n     * Sets the state variable accordingly.\n     */\n    escapeHandler(): void {\n      this.setIsInFullscreen(this.checkForFullscreen())\n    },\n    /**\n     * checks if the browser is in fullscreen\n     * @returns true if the fullscreen is activated\n     */\n    checkForFullscreen(): boolean {\n      return Boolean(\n        // @ts-expect-error | Error: 'TS2339: Property 'webkitFullscreenElement' does not exist on type 'Element'.'; For information refer to https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility\n        document.fullscreenElement || document.webkitFullscreenElement\n      )\n    },\n    /**\n     * Toggles the fullscreen mode\n     * As there is currently only support from Chrome, Edge and FireFox for the FullScreen-API\n     * without vendor prefix there must be a case distinction.\n     */\n    toggleFullscreen(): void {\n      if (!this.isInFullscreen) {\n        if (this.targetContainer.requestFullscreen) {\n          this.targetContainer.requestFullscreen()\n          // @ts-expect-error | Error: 'TS2339: Property 'webkitRequestFullscreen' does not exist on type 'Element'.'; For information refer to https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility\n        } else if (this.targetContainer.webkitRequestFullscreen) {\n          // @ts-expect-error | 'TS2339: Property 'webkitRequestFullscreen' does not exist on type 'Element'.'; For information refer to https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility\n          this.targetContainer.webkitRequestFullscreen() // iOS Safari\n        }\n        /* HACK: workaround for edge case\n         * 1. user uses F11 to fullscreen whole page\n         * 2. user fullscreens map with this plugin\n         * Ol doesn't notice resize in this specific situation,\n         * but does when normally fullscreening with the plugin.\n         */\n        setTimeout(() => this.map.updateSize(), 200)\n      } else if (document.exitFullscreen) {\n        document.exitFullscreen()\n        // @ts-expect-error | Error: 'TS2339: Property 'webkitExitFullscreen' does not exist on type 'Element'.'; For information refer to https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility\n      } else if (document.webkitExitFullscreen) {\n        // @ts-expect-error | Error: 'TS2339: Property 'webkitExitFullscreen' does not exist on type 'Element'.'; For information refer to https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility\n        document.webkitExitFullscreen() // iOS Safari\n      }\n      this.setIsInFullscreen(!this.isInFullscreen)\n    },\n  },\n})\n</script>\n<style lang=\"scss\" scoped></style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    fullscreen: {\n      button: {\n        tooltip: {\n          activate: 'Vollbildmodus aktivieren',\n          deactivate: 'Vollbildmodus deaktivieren',\n        },\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    fullscreen: {\n      button: {\n        tooltip: {\n          activate: 'Activate fullscreen',\n          deactivate: 'Deactivate fullscreen',\n        },\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { FullscreenGetters, FullscreenState } from '../types'\n\nexport const getInitialState = (): FullscreenState => ({\n  isInFullscreen: false,\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<FullscreenState, FullscreenGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      renderType: (_, __, ___, rootGetters) => {\n        return rootGetters.configuration?.fullscreen?.renderType\n          ? rootGetters.configuration.fullscreen.renderType\n          : 'independent'\n      },\n      targetContainerId(_, __, ___, rootGetters) {\n        return rootGetters.configuration?.fullscreen?.targetContainerId\n          ? rootGetters.configuration?.fullscreen?.targetContainerId\n          : ''\n      },\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { FullscreenConfiguration } from '@polar/lib-custom-types'\n\nimport { Fullscreen } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport default (options: FullscreenConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'fullscreen',\n    plugin: Fullscreen,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <div>\n    <v-tooltip left :disabled=\"hasSmallDisplay\">\n      <template #activator=\"{ on, attrs }\">\n        <v-btn\n          :aria-label=\"$t(tooltipMessage)\"\n          :class=\"{\n            'ma-2': renderType !== 'iconMenu',\n          }\"\n          color=\"primary\"\n          small\n          fab\n          :disabled=\"isGeolocationDenied\"\n          v-bind=\"attrs\"\n          v-on=\"on\"\n          @click=\"geolocation === null ? track() : untrack()\"\n        >\n          <v-icon color=\"primaryContrast\">fa-map-pin</v-icon>\n        </v-btn>\n      </template>\n      <span>{{ $t(tooltipMessage) }}</span>\n    </v-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\n\nexport default Vue.extend({\n  name: 'GeoLocation',\n  computed: {\n    ...mapGetters(['hasSmallDisplay']),\n    ...mapGetters('plugin/geoLocation', [\n      'geolocation',\n      'renderType',\n      'tracking',\n      'isGeolocationDenied',\n    ]),\n    tooltipMessage() {\n      if (this.isGeolocationDenied) {\n        return 'plugins.geoLocation.button.tooltip.locationAccessDenied'\n      }\n      if (this.tracking) {\n        return 'plugins.geoLocation.button.tooltip.removeLocationMarker'\n      }\n      return 'plugins.geoLocation.button.tooltip.placeLocationMarker'\n    },\n  },\n  methods: {\n    ...mapActions('plugin/geoLocation', ['track', 'untrack']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    geoLocation: {\n      markerText: 'Aktuelle Position',\n      button: {\n        tooltip: {\n          placeLocationMarker: 'Eigene Position markieren',\n          removeLocationMarker: 'Positionsmarker entfernen',\n          locationAccessDenied: 'Standortzugriff nutzerseitig abgelehnt',\n        },\n      },\n      toast: {\n        notInBoundary: 'Sie befinden sich nicht im Kartengebiet.',\n        boundaryError:\n          'Die Überprüfung Ihrer Position ist fehlgeschlagen. Bitte versuchen Sie es später erneut oder wenden Sie sich an einen Administrator, wenn das Problem bestehen bleibt.',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    geoLocation: {\n      markerText: 'Current location',\n      button: {\n        tooltip: {\n          placeLocationMarker: 'Mark own location',\n          removeLocationMarker: 'Remove location marker',\n          locationAccessDenied: 'Location access denied by user',\n        },\n      },\n      toast: {\n        notInBoundary: \"You are not within the map's boundaries.\",\n        boundaryError:\n          'Validating your position failed. Please try later again or contact an administrator if the issue persists.',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import { GeoLocationState } from '../types'\n\nconst getInitialState = (): GeoLocationState => ({\n  geolocation: null,\n  position: [],\n  tracking: false,\n  isGeolocationDenied: false,\n  boundaryCheck: null,\n})\n\nexport default getInitialState\n","import i18next from 'i18next'\n\nexport type TooltipLocaleKeys = [string, string][]\n\nexport interface GetTooltipParams {\n  /** Inline style string. If none used, default styling is applied. */\n  style?: string\n  /**\n   * Locale keys to use in the tooltip. In the format [string, string][], the\n   * first entry is an HTML element tag, and the second entry is a locale key\n   * used as (translated) child of that tag. May also include values that are\n   * not locale keys. Translation will be tried on anything.\n   */\n  localeKeys: TooltipLocaleKeys\n}\n\nexport interface Tooltip {\n  /** tooltip as a div, bound to inputs */\n  element: HTMLDivElement\n  /** unregisters i18next listeners so garbage collection may pick tooltip up when you no longer need it. usage only required on dynamic div creation. */\n  unregister: () => void\n}\n\nconst setInnerHtml =\n  (tooltip: HTMLDivElement, localeKeys: TooltipLocaleKeys) => () =>\n    (tooltip.innerHTML = localeKeys\n      .map(\n        ([element, localeKey]) =>\n          // @ts-expect-error | can't control key configuration\n          `<${element}>${i18next.t(localeKey)}</${element}>`\n      )\n      .join(''))\n\nconst defaultStyle = `\n  background: rgba(255, 255, 255, 0.8);\n  padding: 0.2em 0.5em;\n  border-radius: 4px;\n  color: #16161d;\n  box-shadow: 0px 0px 3px 2px rgba(0, 0, 0, 0.5);\n`\n\nexport const getTooltip = ({\n  style = defaultStyle,\n  localeKeys,\n}: GetTooltipParams): Tooltip => {\n  const element = document.createElement('div')\n  element.style.cssText = style\n\n  const translate = setInnerHtml(element, localeKeys)\n  i18next.on('languageChanged', translate)\n  i18next.store.on('added', translate)\n\n  // initialize\n  translate()\n\n  return {\n    element,\n    unregister: () => {\n      i18next.off('languageChanges', translate)\n      i18next.store.off('added', translate)\n    },\n  }\n}\n","import { Map } from 'ol'\nimport { Coordinate } from 'ol/coordinate'\nimport VectorLayer from 'ol/layer/Vector'\nimport VectorSource from 'ol/source/Vector'\nimport { LayerBoundPluginOptions } from '@polar/lib-custom-types'\n\n// arbitrarily give up after 10s of stalling\nlet readinessChecks = 0\nconst readinessCheckLimit = 100\nconst readinessWaitTime = 100\n\nexport const errors = {\n  undefinedBoundaryLayer: Symbol.for('Boundary Layer undefined'),\n  undefinedBoundarySource: Symbol.for('Boundary Source undefined'),\n  sourceNotReady: Symbol.for('Source not ready'),\n} as const\n\n/**\n * @param source - source to check\n * @returns Promise that resolves true if source is in 'ready' state with at\n *          least one feature within 10s; false else.\n */\nconst isReady = async (source: VectorSource): Promise<boolean> => {\n  while (source.getState() !== 'ready' || source.getFeatures().length === 0) {\n    if (readinessChecks++ < readinessCheckLimit) {\n      await new Promise((resolve) => {\n        setTimeout(resolve, readinessWaitTime)\n      })\n    } else {\n      return false\n    }\n  }\n  readinessChecks = 0\n  return true\n}\n\n/**\n * @returns Promise that resolves false if anything about the boundary check\n *          broke.\n */\nexport const passesBoundaryCheck = async (\n  map: Map,\n  boundaryLayerId: LayerBoundPluginOptions['boundaryLayerId'],\n  coordinate: Coordinate\n): Promise<boolean | symbol> => {\n  if (typeof boundaryLayerId === 'undefined') {\n    return Promise.resolve(true)\n  }\n\n  const boundaryLayer = map\n    .getLayers()\n    .getArray()\n    .find((layer) => layer.get('id') === boundaryLayerId) as VectorLayer\n\n  if (!boundaryLayer) {\n    console.error(\n      `@polar/lib-passes-boundary-check: No layer configured to match boundaryLayerId \"${boundaryLayerId}\".`\n    )\n    return Promise.resolve(errors.undefinedBoundaryLayer)\n  }\n\n  const boundaryLayerSource = boundaryLayer.getSource()\n\n  if (!boundaryLayerSource) {\n    console.error(\n      `@polar/lib-passes-boundary-check: Layer with boundaryLayerId \"${boundaryLayerId}\" missing source.`\n    )\n    return Promise.resolve(errors.undefinedBoundarySource)\n  }\n\n  const sourceReady = await isReady(boundaryLayerSource)\n\n  if (!sourceReady) {\n    console.error(\n      `@polar/lib-passes-boundary-check: Layer with boundaryLayerId \"${boundaryLayerId}\" did not load or is featureless.`\n    )\n    return Promise.resolve(errors.sourceNotReady)\n  }\n\n  const features = boundaryLayerSource.getFeatures() || []\n  return Promise.resolve(\n    features.some((feature) =>\n      feature.getGeometry()?.intersectsCoordinate(coordinate)\n    )\n  )\n}\n","/**\n * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.\n */\nexport default '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"512\" height=\"512\">' +\n  '<path d=\"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\" />' +\n  '</svg>'\n","export default function positionChanged(\n  oldPosition: number[],\n  newPosition: number[]\n): boolean {\n  return oldPosition[0] !== newPosition[0] || oldPosition[1] !== newPosition[1]\n}\n","import { PolarActionTree } from '@polar/lib-custom-types'\nimport VectorLayer from 'ol/layer/Vector'\nimport Point from 'ol/geom/Point'\nimport { Vector } from 'ol/source'\nimport Feature from 'ol/Feature'\nimport { containsCoordinate } from 'ol/extent'\nimport { Style, Icon } from 'ol/style'\nimport * as Proj from 'ol/proj.js'\nimport Geolocation from 'ol/Geolocation.js'\nimport { transform as transformCoordinates } from 'ol/proj'\nimport Overlay from 'ol/Overlay'\nimport { getTooltip } from '@polar/lib-tooltip'\nimport { passesBoundaryCheck } from '@polar/lib-passes-boundary-check'\nimport { GeoLocationState, GeoLocationGetters } from '../types'\nimport geoLocationMarker from '../assets/geoLocationMarker'\nimport positionChanged from '../utils/positionChanged'\n\nlet boundaryCheckChanged = true\n\nconst actions: PolarActionTree<GeoLocationState, GeoLocationGetters> = {\n  setupModule({ getters, commit, dispatch }): void {\n    dispatch('addMarkerLayer')\n\n    // NOTE: limited support across browsers; nice but optional initially\n    if (navigator.permissions?.query) {\n      navigator.permissions.query({ name: 'geolocation' }).then((result) => {\n        if (result.state === 'denied') {\n          commit('setIsGeolocationDenied', true)\n        }\n      })\n    }\n    if (getters.checkLocationInitially) {\n      dispatch('track')\n    }\n    dispatch('setupTooltip')\n  },\n  setupTooltip({ getters, rootGetters }) {\n    if (getters.showTooltip) {\n      const { map } = rootGetters\n      const overlay = new Overlay({\n        element: getTooltip({\n          localeKeys: [['h2', 'plugins.geoLocation.markerText']],\n        }).element,\n        positioning: 'bottom-center',\n        offset: [0, -5],\n      })\n      map.addOverlay(overlay)\n      map.on('pointermove', ({ pixel, dragging }) => {\n        if (dragging) {\n          return\n        }\n        const features = map.getFeaturesAtPixel(pixel, {\n          layerFilter: (layer) =>\n            layer.get('name') === 'geoLocationMarkerLayer',\n        })\n\n        const coordinate = features.length\n          ? map.getCoordinateFromPixel(pixel)\n          : undefined\n        overlay.setPosition(coordinate)\n      })\n    }\n  },\n\n  /** Enable tracking of geo position */\n  track({ getters: { isGeolocationDenied, geolocation }, commit, dispatch }) {\n    if (isGeolocationDenied === false) {\n      if (geolocation === null) {\n        geolocation = new Geolocation({\n          tracking: true,\n          projection: Proj.get('EPSG:4326') as Proj.Projection,\n        })\n        commit('setGeolocation', geolocation)\n      } else {\n        dispatch('positioning')\n      }\n      geolocation.on('change:position', () => dispatch('positioning'))\n      geolocation.on('error', (error) => dispatch('onError', error))\n      commit('setTracking', true)\n    } else {\n      dispatch('onError')\n    }\n  },\n\n  /**\n   * Stop tracking of geo position\n   */\n  untrack({ getters: { geolocation }, commit, dispatch }) {\n    geolocation?.setTracking(false) // for FireFox - cannot handle geolocation.un(...)\n    dispatch('removeMarker')\n    commit('setTracking', false)\n    commit('setGeolocation', null)\n  },\n\n  /**\n   * Adds the geoLocationMarkerLayer to the map which also has a feature\n   * called geoLocationMarker for visualising the geoLocation of a user.\n   * Until the tracking is initiated the style of the layer will be null and\n   * gets only changed when the addMarker function gets called.\n   */\n  addMarkerLayer({ rootGetters: { map } }) {\n    const geoLocationMarkerLayer = new VectorLayer({\n      source: new Vector({\n        features: [\n          new Feature({\n            type: 'point',\n            name: 'geoLocationMarker',\n          }),\n        ],\n      }),\n      style: null,\n      properties: { name: 'geoLocationMarkerLayer' },\n    })\n    map.addLayer(geoLocationMarkerLayer)\n    geoLocationMarkerLayer.setZIndex(Infinity)\n  },\n\n  /**\n   * Setting the current map on the position\n   */\n  async positioning({\n    rootGetters: { map, configuration },\n    getters: {\n      boundaryOnError,\n      boundaryLayerId,\n      geolocation,\n      configuredEpsg,\n      position,\n      boundaryCheck,\n    },\n    commit,\n    dispatch,\n  }) {\n    const transformedCoords = transformCoordinates(\n      geolocation?.getPosition() as number[],\n      Proj.get('EPSG:4326') as Proj.Projection,\n      configuredEpsg\n    )\n    const coordinateInExtent = containsCoordinate(\n      // NOTE: The fallback is the default value set by @masterportal/masterportalApi\n      configuration?.extent || [510000.0, 5850000.0, 625000.4, 6000000.0],\n      transformedCoords\n    )\n    const boundaryCheckPassed = await passesBoundaryCheck(\n      map,\n      boundaryLayerId,\n      transformedCoords\n    )\n    boundaryCheckChanged = boundaryCheck !== boundaryCheckPassed\n    commit('setBoundaryCheck', boundaryCheckPassed)\n    const showBoundaryLayerError =\n      typeof boundaryCheckPassed === 'symbol' && boundaryOnError === 'strict'\n    if (!coordinateInExtent || showBoundaryLayerError) {\n      dispatch('printPositioningFailed', showBoundaryLayerError)\n      dispatch('untrack')\n      return\n    }\n    if (positionChanged(position, transformedCoords)) {\n      commit('setPosition', transformedCoords)\n      dispatch('addMarker', transformedCoords)\n      if (boundaryCheckChanged && !boundaryCheckPassed) {\n        dispatch('printPositioningFailed', false)\n      }\n    }\n  },\n  printPositioningFailed(\n    { dispatch, getters: { toastAction } },\n    boundaryErrorOccurred: boolean\n  ) {\n    if (toastAction) {\n      const toast = boundaryErrorOccurred\n        ? {\n            type: 'error',\n            text: 'plugins.geoLocation.toast.boundaryError',\n          }\n        : {\n            type: 'info',\n            text: 'plugins.geoLocation.toast.notInBoundary',\n            timeout: 10000,\n          }\n      dispatch(toastAction, toast, { root: true })\n    } else {\n      // eslint-disable-next-line no-console\n      console[boundaryErrorOccurred ? 'error' : 'log'](\n        boundaryErrorOccurred\n          ? 'Checking boundary layer failed.'\n          : 'User position outside of boundary layer.'\n      )\n    }\n  },\n\n  /**\n   * Adds a marker to the map, which indicates the users geoLocation.\n   * This happens by applying a style to the geoLocationMarkerLayer and\n   * a geometry to the geoLocationMarker.\n   */\n  addMarker(\n    {\n      getters: {\n        geoLocationMarkerLayer,\n        markerFeature,\n        keepCentered,\n        boundaryCheck,\n      },\n      dispatch,\n    },\n    coordinates\n  ) {\n    const hadPosition = Boolean(markerFeature.getGeometry())\n\n    markerFeature.setGeometry(new Point(coordinates))\n\n    geoLocationMarkerLayer?.setStyle(\n      new Style({\n        image: new Icon({\n          // TODO: It might be interesting to be able to change the color.\n          src: `data:image/svg+xml;utf8,${geoLocationMarker}`,\n          scale: 0.08,\n          opacity: 1,\n        }),\n      })\n    )\n    if ((keepCentered || !hadPosition) && boundaryCheck) {\n      dispatch('zoomAndCenter')\n    }\n  },\n\n  /**\n   * Removes the geoLocation marker from the map by setting style property\n   * of the geoLocationMarkerLayer to null.\n   */\n  removeMarker({\n    getters: { geoLocationMarkerLayer, markerFeature },\n    commit,\n  }): void {\n    geoLocationMarkerLayer?.setStyle(null)\n    markerFeature.setGeometry(undefined)\n    commit('setPosition', [])\n  },\n\n  /**\n   * Zooms to the configured zoomLevel and centers the map\n   * according to a users coordinates\n   */\n  zoomAndCenter({ rootGetters, getters: { position, zoomLevel } }) {\n    rootGetters.map.getView().setCenter(position)\n    rootGetters.map.getView().setZoom(zoomLevel)\n  },\n\n  /**\n   * Show error information and stop tracking if there are errors by tracking the position\n   */\n  onError({ commit, dispatch, getters: { toastAction } }, error) {\n    if (toastAction) {\n      const toast = {\n        type: 'error',\n        text: 'plugins.geoLocation.button.tooltip.locationAccessDenied',\n      }\n      dispatch(toastAction, toast, { root: true })\n    } else {\n      console.error(\n        '@polar/plugin-geo-location: Location access denied by user.'\n      )\n    }\n    console.error('@polar/plugin-geo-location', error.message)\n\n    commit('setIsGeolocationDenied', true)\n    commit('setTracking', false)\n    dispatch('removeMarker')\n  },\n}\n\nexport default actions\n","import { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport { PolarGetterTree, RenderType } from '@polar/lib-custom-types'\nimport { GeoLocationGetters, GeoLocationState } from '../types'\nimport getInitialState from './getInitialState'\n\nconst getters: PolarGetterTree<GeoLocationState, GeoLocationGetters> = {\n  ...generateSimpleGetters(getInitialState()),\n  boundaryLayerId: (_, __, ___, rootGetters): string | undefined => {\n    return rootGetters.configuration?.geoLocation?.boundaryLayerId\n  },\n  boundaryOnError: (_, __, ___, rootGetters) => {\n    return (\n      rootGetters.configuration?.geoLocation?.boundaryOnError || 'permissive'\n    )\n  },\n  configuredEpsg: (_, __, ___, rootGetters): string | undefined => {\n    return rootGetters.configuration?.epsg\n  },\n  checkLocationInitially: (_, __, ___, rootGetters): boolean => {\n    return (\n      rootGetters.configuration?.geoLocation?.checkLocationInitially || false\n    )\n  },\n  keepCentered: (_, __, ___, rootGetters): boolean => {\n    const keepCentered = rootGetters.configuration?.geoLocation?.keepCentered\n    if (typeof keepCentered === 'boolean') {\n      return keepCentered\n    }\n    return false\n  },\n  renderType: (_, __, ___, rootGetters): RenderType => {\n    return rootGetters.configuration?.geoLocation?.renderType || 'independent'\n  },\n  showTooltip: (_, __, ___, rootGetters): boolean => {\n    return Boolean(rootGetters.configuration?.geoLocation?.showTooltip)\n  },\n  toastAction: (_, __, ___, rootGetters): string | undefined => {\n    return rootGetters.configuration?.geoLocation?.toastAction\n  },\n  zoomLevel: (_, __, ___, rootGetters): number => {\n    return rootGetters.configuration?.geoLocation?.zoomLevel ?? 7\n  },\n  geoLocationMarkerLayer(_, __, ___, rootGetters) {\n    return rootGetters?.map\n      .getLayers()\n      .getArray()\n      .find((layer) => layer.get('name') === 'geoLocationMarkerLayer')\n  },\n  markerFeature(_, { geoLocationMarkerLayer }) {\n    return (\n      geoLocationMarkerLayer\n        ?.getSource?.()\n        ?.getFeatures?.()\n        ?.find?.((feature) => feature.get('name') === 'geoLocationMarker') ||\n      null\n    )\n  },\n}\n\nexport default getters\n","import { generateSimpleMutations } from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { GeoLocationGetters, GeoLocationState } from '../types'\nimport getInitialState from './getInitialState'\nimport actions from './actions'\nimport getters from './getters'\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<GeoLocationState, GeoLocationGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions,\n    getters,\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { GeoLocationConfiguration } from '@polar/lib-custom-types'\n\nimport { GeoLocation } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport default (options: GeoLocationConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'geoLocation',\n    plugin: GeoLocation,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <div id=\"polar-gfi-switch-buttons\">\n    <v-btn\n      elevation=\"2\"\n      class=\"ma-2\"\n      fab\n      x-small\n      :aria-label=\"$t('plugins.gfi.switch.previous')\"\n      @click=\"switchFeature(-1)\"\n    >\n      <v-icon>fa-chevron-left</v-icon>\n    </v-btn>\n    <v-btn\n      elevation=\"2\"\n      class=\"ma-2\"\n      fab\n      x-small\n      :aria-label=\"$t('plugins.gfi.switch.next')\"\n      @click=\"switchFeature(1)\"\n    >\n      <v-icon>fa-chevron-right</v-icon>\n    </v-btn>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\n\ntype GfiIndexStep = -1 | 1\n\nexport default Vue.extend({\n  name: 'GfiFeatureSwitchButtons',\n  computed: {\n    ...mapGetters('plugin/gfi', [\n      'windowFeatures',\n      'visibleWindowFeatureIndex',\n    ]),\n  },\n  methods: {\n    ...mapMutations('plugin/gfi', ['setVisibleWindowFeatureIndex']),\n    /** switch to next or previous feature */\n    switchFeature(by: GfiIndexStep): void {\n      const {\n        visibleWindowFeatureIndex,\n        windowFeatures,\n        setVisibleWindowFeatureIndex,\n      } = this\n      const maxIndex = windowFeatures.length - 1\n      const nextIndex = visibleWindowFeatureIndex + by\n      if (nextIndex < 0) {\n        setVisibleWindowFeatureIndex(windowFeatures.length - 1)\n        return\n      }\n      if (nextIndex > maxIndex) {\n        setVisibleWindowFeatureIndex(0)\n        return\n      }\n      setVisibleWindowFeatureIndex(nextIndex)\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n#polar-gfi-switch-buttons {\n  float: right !important;\n}\n</style>\n","<template>\n  <div id=\"polar-plugin-gfi-button-group\">\n    <div>\n      <v-btn\n        v-if=\"exportProperty\"\n        id=\"polar-plugin-gfi-export-link\"\n        elevation=\"2\"\n        class=\"ma-2 text-none reticent-button primaryContrast--text\"\n        color=\"primary\"\n        :href=\"exportProperty\"\n        target=\"_blank\"\n        :title=\"$t('plugins.gfi.property.linkTitle')\"\n        :aria-label=\"$t('plugins.gfi.property.export')\"\n        onmousedown=\"return false\"\n      >\n        {{ $t('plugins.gfi.property.export') }}\n      </v-btn>\n    </div>\n    <FeatureSwitchButtons v-if=\"showSwitchButtons\"></FeatureSwitchButtons>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport FeatureSwitchButtons from './FeatureSwitchButtons.vue'\n\nexport default Vue.extend({\n  name: 'GfiFeatureButtonGroup',\n  components: {\n    FeatureSwitchButtons,\n  },\n  computed: {\n    ...mapGetters('plugin/gfi', ['exportProperty', 'showSwitchButtons']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n#polar-plugin-gfi-button-group {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  background-color: #ffffff;\n\n  #polar-plugin-gfi-export-link {\n    text-decoration: none;\n    color: white !important;\n  }\n\n  .reticent-button {\n    font-size: 14px;\n    letter-spacing: normal;\n  }\n}\n</style>\n","export default function isValidHttpUrl(string) {\n  let url\n\n  try {\n    url = new URL(string)\n  } catch (_) {\n    return false\n  }\n\n  return url.protocol === 'http:' || url.protocol === 'https:'\n}\n","<template>\n  <tbody>\n    <tr v-for=\"[key, value] of Object.entries(filteredProperties)\" :key=\"key\">\n      <td>{{ key }}</td>\n      <td\n        v-if=\"\n          typeof value === 'string' &&\n          value.match(/\\.(jpeg|jpg|gif|png)$/) !== null\n        \"\n      >\n        <a :href=\"value\" target=\"_blank\">\n          <img\n            :src=\"value\"\n            :alt=\"$t('plugins.gfi.property.imageAlt')\"\n            :title=\"$t('plugins.gfi.property.linkTitle')\"\n            :aria-label=\"$t('plugins.gfi.property.linkTitle')\"\n            :height=\"photoHeight\"\n            width=\"auto\"\n          />\n        </a>\n      </td>\n      <td v-else-if=\"isValidHttpUrl(value)\">\n        <a\n          :href=\"value\"\n          target=\"_blank\"\n          :title=\"$t('plugins.gfi.property.linkTitle')\"\n          :aria-label=\"$t('plugins.gfi.property.linkTitle')\"\n        >\n          {{ 'Link' }}\n        </a>\n      </td>\n      <td v-else>\n        {{ value }}\n      </td>\n    </tr>\n  </tbody>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport isValidHttpUrl from '../utils/isValidHttpUrl'\n\nexport default Vue.extend({\n  name: 'GfiFeatureTableBody',\n  computed: {\n    ...mapGetters(['clientWidth']),\n    ...mapGetters('plugin/gfi', ['currentProperties']),\n    /** Removes polarInternalLayerKey as it shouldn't be displayed to the user. */\n    filteredProperties() {\n      if (this.currentProperties) {\n        return Object.fromEntries(\n          Object.entries(this.currentProperties).filter(\n            ([key]) => key !== 'polarInternalLayerKey'\n          )\n        )\n      }\n      return {}\n    },\n    photoHeight() {\n      const height = this.clientWidth * 0.15\n      return height < 200 ? 200 : height\n    },\n  },\n  methods: {\n    isValidHttpUrl,\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n  <thead>\n    <tr>\n      <th class=\"text-left\">{{ $t('plugins.gfi.header.field') }}</th>\n      <th class=\"text-left\">{{ $t('plugins.gfi.header.value') }}</th>\n    </tr>\n  </thead>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  name: 'GfiFeatureTableHead',\n})\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n  <div>\n    <div\n      v-if=\"!hasWindowSize || !hasSmallWidth\"\n      class=\"polar-plugin-gfi-button-container\"\n    >\n      <v-btn\n        id=\"polar-plugin-gfi-close-button\"\n        icon\n        small\n        :aria-label=\"$t(closeLabel)\"\n        @click=\"close(true)\"\n      >\n        <v-icon>fa-xmark</v-icon>\n      </v-btn>\n    </div>\n    <v-simple-table class=\"polar-edgy-table\" dense>\n      <template #default>\n        <FeatureTableHead></FeatureTableHead>\n        <FeatureTableBody></FeatureTableBody>\n      </template>\n    </v-simple-table>\n    <FeatureButtonGroup\n      v-if=\"exportProperty || showSwitchButtons\"\n    ></FeatureButtonGroup>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\nimport FeatureButtonGroup from './FeatureButtonGroup.vue'\nimport FeatureTableBody from './FeatureTableBody.vue'\nimport FeatureTableHead from './FeatureTableHead.vue'\n\nexport default Vue.extend({\n  name: 'GfiFeature',\n  components: {\n    FeatureButtonGroup,\n    FeatureTableBody,\n    FeatureTableHead,\n  },\n  data: () => ({ closeLabel: 'plugins.gfi.header.close' }),\n  computed: {\n    ...mapGetters(['hasSmallWidth', 'hasWindowSize']),\n    ...mapGetters('plugin/gfi', ['exportProperty', 'showSwitchButtons']),\n  },\n  methods: {\n    ...mapActions('plugin/gfi', ['close']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-plugin-gfi-button-container {\n  display: grid;\n  align-items: center;\n  background-color: #ffffff;\n  padding: 0.25em;\n\n  #polar-plugin-gfi-close-button {\n    grid-column: 3;\n    justify-self: end;\n  }\n}\n\n.polar-edgy-table {\n  border-radius: 0;\n}\n</style>\n","<template>\n  <v-scroll-x-reverse-transition>\n    <v-card class=\"plugin-gfi-list\">\n      <v-card-title>\n        <v-icon>fa-list</v-icon>\n        {{ $t('plugins.gfi.list.header') }}\n      </v-card-title>\n      <v-card-subtitle v-if=\"maxPage > 1\">\n        {{\n          `${$t('plugins.gfi.list.entry')} ${page * pageLength + 1} ${$t(\n            'plugins.gfi.list.to'\n          )} ${Math.min((page + 1) * pageLength, listFeatures.length)} ${$t(\n            'plugins.gfi.list.of'\n          )} ${listFeatures.length}`\n        }}\n        <v-pagination\n          v-model=\"_page\"\n          color=\"primary\"\n          :length=\"maxPage\"\n          :current-page-aria-label=\"\n            $t('plugins.gfi.list.pagination.currentPage', {\n              page: _page,\n              maxPage,\n            })\n          \"\n          :page-aria-label=\"\n            $t('plugins.gfi.list.pagination.page', {\n              page: _page,\n              maxPage,\n            })\n          \"\n          :next-aria-label=\"$t('plugins.gfi.list.pagination.next')\"\n          :previous-aria-label=\"$t('plugins.gfi.list.pagination.previous')\"\n          :wrapper-aria-label=\"$t('plugins.gfi.list.pagination.wrapper')\"\n        ></v-pagination>\n      </v-card-subtitle>\n      <v-list>\n        <v-list-item v-if=\"!visibleListFeatures.length\">\n          {{ $t('plugins.gfi.list.emptyView') }}\n        </v-list-item>\n        <v-list-item\n          v-for=\"feature of visibleListFeatures\"\n          :key=\"`gfi-feature-list-${feature.ol_uid}`\"\n          :two-line=\"listText.length === 2\"\n          :three-line=\"listText.length === 3\"\n          :class=\"{\n            'gfi-feature-list-item-hovered': isFeatureHovered(feature),\n          }\"\n          @click=\"\n            setOlFeatureInformation({\n              feature: getCluster(map, feature, '_gfiLayerId'),\n              centerOnFeature: true,\n            })\n          \"\n          @keydown.space.prevent=\"\n            setOlFeatureInformation({\n              feature: getCluster(map, feature, '_gfiLayerId'),\n              centerOnFeature: true,\n            })\n          \"\n          @mouseleave=\"unhover\"\n          @mouseover=\"hover(feature)\"\n          @focusout=\"unhover\"\n          @focus=\"hover(feature)\"\n        >\n          <v-list-item-content>\n            <component\n              :is=\"index === 0 ? 'v-list-item-title' : 'v-list-item-subtitle'\"\n              v-for=\"(_, index) of listText\"\n              :key=\"`gfi-feature-list-${feature.ol_uid}-${index}`\"\n            >\n              {{ $t(applyListText(feature, index)) }}\n            </component>\n          </v-list-item-content>\n        </v-list-item>\n      </v-list>\n    </v-card>\n  </v-scroll-x-reverse-transition>\n</template>\n\n<script lang=\"ts\">\nimport { Feature } from 'ol'\nimport Vue from 'vue'\nimport { mapGetters, mapMutations, mapActions } from 'vuex'\nimport getCluster from '@polar/lib-get-cluster'\n\nexport default Vue.extend({\n  name: 'GfiList',\n  computed: {\n    ...mapGetters(['map']),\n    ...mapGetters('plugin/gfi', [\n      'listFeatures',\n      'listText',\n      'page',\n      'gfiConfiguration',\n      'isFeatureHovered',\n    ]),\n    _page: {\n      get() {\n        return this.page + 1\n      },\n      set(value) {\n        this.setPage(value - 1)\n      },\n    },\n    pageLength() {\n      return (\n        this.gfiConfiguration.featureList.pageLength || Number.MAX_SAFE_INTEGER\n      )\n    },\n    maxPage() {\n      return Math.ceil(this.listFeatures.length / this.pageLength)\n    },\n    visibleListFeatures() {\n      return this.listFeatures.slice(\n        (this._page - 1) * this.pageLength,\n        this._page * this.pageLength\n      )\n    },\n  },\n  watch: {\n    maxPage: function (nextMaxPage) {\n      if (this._page > nextMaxPage) {\n        this._page = Math.max(nextMaxPage, 1)\n      }\n    },\n  },\n  mounted() {\n    if (this._page > this.maxPage) {\n      this._page = Math.max(this.maxPage, 1)\n    }\n  },\n  methods: {\n    ...mapActions('plugin/gfi', [\n      'setOlFeatureInformation',\n      'setPage',\n      'hover',\n      'unhover',\n    ]),\n    ...mapMutations('plugin/gfi', ['setPage']),\n    getCluster,\n    applyListText(feature: Feature, index: number) {\n      const text: string | ((f: Feature) => string) | undefined =\n        this.listText[index]\n      if (text === undefined) {\n        console.error(\n          `@polar/plugin-gfi: Missing text entry in configuration. See documentation of gfi.featureList.text for more information. Fallback to ol_uid.`\n        )\n        // @ts-expect-error | It does exist.\n        return feature.ol_uid\n      }\n      if (typeof text === 'string') {\n        return feature.get(text)\n      }\n      return text(feature)\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.plugin-gfi-list {\n  .v-pagination__navigation,\n  .v-pagination__item {\n    &:focus {\n      outline: thick solid #3fa535;\n    }\n  }\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.v-card {\n  @media only screen and (min-width: 769px) {\n    /* magic number; leaves minimal space to minimal size AddressSearch in IconMenu mode */\n    max-width: 420px;\n  }\n}\n\n.v-card__title {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: nowrap;\n  gap: 0.5em;\n  word-break: normal;\n}\n\n.v-list-item__title + .v-list-item__subtitle {\n  font-style: italic;\n}\n\n.v-list-item {\n  // needed for FF\n  outline-offset: -2px;\n\n  &::before {\n    background: transparent;\n  }\n\n  &:hover {\n    outline: dashed 2px #3fa535;\n  }\n\n  &:focus {\n    outline: solid 2px #3fa535;\n  }\n}\n\n.gfi-feature-list-item-hovered {\n  background: #dff0dd;\n}\n</style>\n","<template>\n  <div v-if=\"renderUi\" id=\"polar-plugin-gfi\">\n    <v-card v-if=\"!windowLayerKeysActive\">\n      <v-card-text>{{ $t('plugins.gfi.noActiveLayer') }}</v-card-text>\n    </v-card>\n    <component :is=\"contentComponent\" v-else-if=\"!renderMoveHandle\" />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { t } from 'i18next'\nimport Vue from 'vue'\nimport { mapActions, mapGetters, mapMutations } from 'vuex'\nimport { MoveHandleProperties } from '@polar/lib-custom-types'\nimport Feature from './Feature.vue'\nimport List from './List.vue'\n\nexport default Vue.extend({\n  name: 'GfiPlugin',\n  computed: {\n    ...mapGetters(['moveHandle']),\n    ...mapGetters('plugin/gfi', [\n      'gfiContentComponent',\n      'gfiConfiguration',\n      'renderMoveHandle',\n      'renderType',\n      'showList',\n      'windowFeatures',\n      'windowLayerKeysActive',\n    ]),\n    contentComponent(): Vue {\n      return this.showList ? List : this.gfiContentComponent || Feature\n    },\n    moveHandleProperties() {\n      return {\n        closeIcon: this.gfiConfiguration.featureList\n          ? 'fa-angles-right'\n          : 'fa-xmark',\n        closeLabel: t('plugins.gfi.header.close'),\n        closeFunction: this.closeWindow,\n        component: this.contentComponent,\n        plugin: this.renderType === 'independent' ? 'gfi' : 'iconMenu',\n      } as MoveHandleProperties\n    },\n    renderUi(): boolean {\n      return this.windowFeatures.length > 0 || this.showList\n    },\n  },\n  watch: {\n    windowFeatures() {\n      if (this.windowFeatures.length) {\n        this.setMoveHandle(this.moveHandleProperties)\n      } else if (\n        !this.windowFeatures.length &&\n        this.moveHandle !== null &&\n        this.moveHandle.component === this.contentComponent\n      ) {\n        this.setMoveHandle(null)\n      }\n    },\n  },\n  methods: {\n    ...mapMutations(['setMoveHandle']),\n    ...mapActions('plugin/gfi', ['close']),\n    closeWindow(userInteraction: boolean) {\n      this.close(userInteraction)\n      // The list view is currently only implemented if the gfi is rendered as part of the iconMenu.\n      // TODO: Finding a different solution may be a task to be tackled in the future\n      if (\n        this.gfiConfiguration.featureList &&\n        this.$store.hasModule(['plugin', 'iconMenu']) &&\n        this.$store.getters['plugin/iconMenu/open'] !== null\n      ) {\n        this.$store.dispatch(\n          'plugin/iconMenu/openInMoveHandle',\n          this.$store.getters['plugin/iconMenu/menus'].findIndex(\n            ({ id }) => id === 'gfi'\n          )\n        )\n      }\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n@media only screen and (min-width: 769px) {\n  #polar-plugin-gfi {\n    margin-left: 1em;\n    margin-bottom: 1em;\n    overflow-y: auto;\n    overflow-x: hidden;\n    scrollbar-gutter: stable;\n    pointer-events: all;\n    min-width: 300px;\n\n    &::v-deep .v-data-table__wrapper {\n      /* table cell padding underlaps scrollbar; prevent horizontal scroll */\n      overflow-x: clip;\n    }\n  }\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    gfi: {\n      header: {\n        close: 'Informationsfenster schließen',\n        field: 'Feld',\n        value: 'Wert',\n      },\n      property: {\n        export: 'Export als PDF',\n        imageAlt:\n          'Bitte entnehmen Sie Informationen zum Inhalt des Bildes aus den umliegenden Tabellenfeldern',\n        linkTitle: 'In neuem Tab öffnen',\n      },\n      switch: {\n        previous: 'Vorangehender Datensatz',\n        next: 'Nächster Datensatz',\n      },\n      noActiveLayer:\n        'Derzeit ist kein Kartenmaterial mit passenden Objekten eingeschaltet.',\n      list: {\n        header: 'Objektliste',\n        entry: 'Eintrag',\n        to: 'bis',\n        of: 'von',\n        emptyView:\n          'Im aktuellen Kartenausschnitt sind keine Objekte enthalten.',\n        pagination: {\n          currentPage: 'Aktuelle Seite, Seite {{page}}',\n          page: 'Seite {{page}}',\n          next: 'Nächste Seite',\n          previous: 'Vorherige Seite',\n          wrapper: 'Seitenauswahl',\n        },\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    gfi: {\n      header: {\n        close: 'Close information window',\n        field: 'Field',\n        value: 'Value',\n      },\n      property: {\n        export: 'Export as a PDF document',\n        imageAlt:\n          'Please refer to the other table fields for further information about the topics of the displayed picture',\n        link: 'Open in a new tab',\n      },\n      switch: {\n        previous: 'Previous data',\n        next: 'Next data',\n      },\n      noActiveLayer: 'Currently, no map layer with fitting objects is active.',\n      list: {\n        header: 'Feature list',\n        entry: 'Entry',\n        to: 'to',\n        of: 'of',\n        emptyView: 'There are no features in the current view.',\n        pagination: {\n          currentPage: 'Current page, page {{page}}',\n          page: 'Page {{page}}',\n          next: 'Next page',\n          previous: 'Previous page',\n          wrapper: 'Pagination',\n        },\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import { GfiState } from '../types'\n\nconst getInitialState = (): GfiState => ({\n  featureInformation: {},\n  imageLoaded: false,\n  visibleWindowFeatureIndex: 0,\n  visibilityChangeIndicator: 0,\n  defaultHighlightStyle: {\n    stroke: {\n      color: '#003064',\n      width: 3,\n    },\n    fill: {\n      color: 'rgb(255, 255, 255, 0.7)',\n    },\n  },\n  page: 0,\n})\n\nexport default getInitialState\n","import { Feature as GeoJsonFeature } from 'geojson'\nimport { FeaturesByLayerId } from '../types'\n\nexport function filterFeatures(\n  featuresByLayerId: FeaturesByLayerId\n): Record<string, GeoJsonFeature[]> {\n  const entries = Object.entries(featuresByLayerId)\n  const filtered = entries.filter((keyValue) => Array.isArray(keyValue[1])) as [\n    string,\n    GeoJsonFeature[]\n  ][]\n  return Object.fromEntries(filtered)\n}\n","import { Feature } from 'ol'\nimport VectorLayer from 'ol/layer/Vector'\nimport { Vector } from 'ol/source'\nimport { GeoJSON } from 'ol/format'\nimport { Feature as GeoJsonFeature } from 'geojson'\n\nexport function getFeatureDisplayLayer() {\n  const featureDisplayLayer = new VectorLayer({\n    source: new Vector<Feature>({\n      features: [],\n    }),\n  })\n\n  featureDisplayLayer.set('polarInternalId', 'pluginGfiFeatureDisplay')\n  featureDisplayLayer.setZIndex(90)\n  // NOTE: This may be changed in the future to not use the default styling of @masterportal/masterportalapi\n  featureDisplayLayer.set('styleId', 'defaultHighlightFeaturesPoint')\n\n  return featureDisplayLayer\n}\n\nfunction isVectorSource(source): source is Vector {\n  return source instanceof Vector\n}\n\n/**\n * reset feature layer's features.\n */\nexport function clear(featureDisplayLayer: VectorLayer): void {\n  const source = featureDisplayLayer.getSource()\n  if (isVectorSource(source)) {\n    source.clear()\n  }\n}\n\n/**\n * add feature from jsonable GeoJson object.\n */\nexport function addFeature(\n  feature: GeoJsonFeature,\n  featureDisplayLayer: VectorLayer\n): void {\n  const source = featureDisplayLayer.getSource()\n  if (isVectorSource(source)) {\n    // Since ol@10, readFeature may also return a Feature[]?\n    source.addFeature(new GeoJSON().readFeature(feature) as Feature)\n  }\n}\n","import VectorLayer from 'ol/layer/Vector'\nimport { FeaturesByLayerId } from '../types'\nimport { addFeature } from './displayFeatureLayer'\nimport { filterFeatures } from './filterFeatures'\n\nexport function renderFeatures(\n  featureDisplayLayer: VectorLayer,\n  geometryLayerKeys: string[],\n  features: FeaturesByLayerId\n) {\n  const filteredFeatures = filterFeatures(features)\n  geometryLayerKeys\n    .filter((key) => Array.isArray(features[key]))\n    .forEach((key) =>\n      filteredFeatures[key].forEach((feature) =>\n        addFeature(feature, featureDisplayLayer)\n      )\n    )\n}\n","import WFS from 'ol/format/WFS'\nimport GML32 from 'ol/format/GML32'\nimport GML3 from 'ol/format/GML3'\nimport GML2 from 'ol/format/GML2'\nimport GML from 'ol/format/GML'\nimport { GeoJSON } from 'ol/format'\nimport { Feature } from 'ol'\nimport { Feature as GeoJsonFeature } from 'geojson'\nimport Geometry from 'ol/geom/Geometry'\nimport { TileWMS } from 'ol/source'\nimport { RequestGfiWmsParameters } from '../types'\n\n// list of supported reply formats that can be used from OL\nconst formats = {\n  GML,\n  GML2,\n  GML3,\n  GML32,\n}\n\n/**\n * This is a custom text response reader working on an unspecified format that\n * commonly occurs in WMS GFI replies. It can be used by specifying \"text\" as\n * \"format\" on a GFI specification. Please mind that it's written from\n * experience, not from a clear definition, and may need attention whenever\n * new cases arise.\n * @param text - Custom text response, hopefully in the implemented format\n * @returns array of OpenLayers features\n */\nfunction readTextFeatures(text: string): Feature<Geometry>[] {\n  const lines = text.split('\\n')\n  const features: Feature<Geometry>[] = []\n  let feature: Feature<Geometry> | undefined\n  /* TODO: Format supposedly looks like this – is this a standard or arbitrary?\n      GetFeatureInfo results:\n        LayerName:\n          FeatureId:\n            Horse: Yes\n            Speed: Fast\n            Horsepower: 4\n  */\n\n  for (const line of lines) {\n    if (\n      line === '' ||\n      line.startsWith('GetFeatureInfo results') ||\n      line.startsWith('Layer')\n    ) {\n      continue\n    }\n    if (line.startsWith('    ')) {\n      if (typeof feature !== 'undefined') {\n        const equalIndex = line.indexOf('=')\n        const [key, value] = [\n          line.substring(0, equalIndex),\n          line.substring(equalIndex + 3, line.length - 1),\n        ].map((s) => s.trim())\n        feature.set(key, value)\n      } else {\n        console.error(\n          '@polar/plugin-gfi: Found property before feature declaration in readTextFeatures.',\n          line,\n          'Skipping ...'\n        )\n      }\n      continue\n    }\n    if (line.startsWith('  ')) {\n      if (line.includes('Search returned no results')) {\n        break\n      }\n      const id = line.substring(0, line.length - 2).trim()\n      feature = new Feature()\n      feature.setId(id)\n      features.push(feature)\n    }\n  }\n  return features\n}\n\n/**\n * In case the layer configuration does not specify a parser, we're trying to\n * detect the returned XML format by searching for a GML namespace. Any return\n * format outside GML will currently not work with this automated parsing.\n * @param data - data as parsed from response body\n * @returns WFS capable of parsing data\n */\nfunction getParserFromData(data: string): WFS {\n  // NOTE: Tested for GML32 and GML, may break on GML2/GML3\n  const GMLFormat = data.includes('xmlns:gml=\"http://www.opengis.net/gml/3.2\"')\n    ? GML32\n    : data.includes('xmlns:gml=\"http://www.opengis.net/gml\"')\n    ? GML\n    : data.includes('xmlns:gml=\"http://www.opengis.net/gml/2')\n    ? GML2\n    : GML3\n\n  return new WFS({\n    gmlFormat: new GMLFormat(),\n  })\n}\n\n/**\n * A layer may have its parser specified in the configuration. In this case,\n * the specified parser is retrieved from a list of supported GML parsers, or a\n * custom text parser is used in case it fits.\n * @param format - format as specified by mapConfiguration\n * @returns object that supplies 'readTextFeatures' method\n */\nfunction getParserFromFormat(format: string): Pick<WFS, 'readFeatures'> {\n  if (formats[format]) {\n    return new WFS({\n      gmlFormat: new formats[format](),\n    })\n  }\n\n  if (format === 'text') {\n    return {\n      readFeatures: readTextFeatures,\n    }\n  }\n\n  throw new Error(`Format '${format}' not yet implemented in requestGfiWms.ts.`)\n}\n\n/**\n * @param parameters - map, layer, and coordinate to use for GFI request\n * @returns url to request for feature information\n */\nfunction getWmsGfiUrl(\n  { map, layer, coordinate }: RequestGfiWmsParameters,\n  { infoFormat }: Record<string, unknown>\n): string {\n  // Only layers with a valid source reach this point\n  const source = layer.getSource() as TileWMS\n  const view = map.getView()\n  const url = source.getFeatureInfoUrl(\n    coordinate,\n    // The view always has a resolution if this function is called\n    view.getResolution() as number,\n    view.getProjection(),\n    {\n      feature_count: 10,\n    }\n  )\n  const suffix = infoFormat ? `&info_format=${infoFormat}` : ''\n  return url + suffix\n}\n\n/**\n * Method fetches WMS feature information. Result will be filtered and modified\n * according to layerConfiguration.\n * @param parameters - parameter object\n * @returns promise of all features that hold relevant feature information\n */\nexport default (\n  parameters: RequestGfiWmsParameters\n): Promise<GeoJsonFeature[]> => {\n  const { coordinate, layerConfiguration, layerSpecification } = parameters\n  const { filterBy, geometryName, format } = layerConfiguration\n\n  const url = getWmsGfiUrl(parameters, layerSpecification)\n\n  return fetch(url)\n    .then((response) => response.text())\n    .then((data) => {\n      /* NOTE: test block for WMS GFI\n      import WMSGetFeatureInfo from 'ol/format/WMSGetFeatureInfo'\n      try {\n        console.error('WMS GFI', url)\n        console.error(new WMSGetFeatureInfo().readFeatures(data))\n      } catch (e) {\n        console.error(e)\n      }\n      */\n\n      const parser =\n        layerSpecification.infoFormat === 'application/geojson'\n          ? new GeoJSON()\n          : format\n          ? getParserFromFormat(format)\n          : getParserFromData(data)\n\n      const parsedFeatures: Feature<Geometry>[] = parser.readFeatures(data)\n      const writer = new GeoJSON()\n\n      if (geometryName) {\n        parsedFeatures.forEach((f) => f.setGeometryName('geometry'))\n      }\n\n      const jsonFeatures = parsedFeatures\n        // WMS may return features nearby - filter to hit features\n        .filter((feature) =>\n          filterBy === 'clickPosition'\n            ? feature.getGeometry()?.intersectsCoordinate(coordinate)\n            : true\n        )\n        // transform to jsonable object representation\n        .map((f) => JSON.parse(writer.writeFeature(f)))\n\n      return jsonFeatures\n    })\n    .catch((e) => Promise.reject(e))\n}\n","import { GeoJSON, WFS } from 'ol/format'\nimport { Feature as GeoJsonFeature } from 'geojson'\nimport { RequestGfiParameters } from '../types'\n\n/**\n * Parses WFS reply to jsonable objects.\n * NOTE This method may break on unexpected formats and require further\n * detection. For now, all WFS seem to \"behave\".\n * @param xmlString - Features as returned by WFS service\n * @param wfsVersion - Version of WFS service\n * @returns features as flat GeoJSON (NOT ol/GeoJSON)\n */\nconst xml2GeoJson = (\n  xmlString: string,\n  wfsVersion: string\n): GeoJsonFeature[] => {\n  const parser = new WFS({ version: wfsVersion })\n  const writer = new GeoJSON()\n  const features = parser.readFeatures(xmlString)\n  const geoJsonFeatures = features.map((f) =>\n    JSON.parse(writer.writeFeature(f))\n  )\n\n  return geoJsonFeatures\n}\n\n/**\n * Executes gfi request on wfs layer and returns result as GeoJSON.\n * NOTE Optimization idea: For layers where features are regularly loaded,\n * no new request should be started. Instead, wait for any running load to\n * finish and use feature at layer source coordinate. (Not trivial.)\n */\nexport default ({\n  map,\n  coordinateOrExtent,\n  layerConfiguration,\n  layerSpecification,\n  mode,\n}: Pick<\n  RequestGfiParameters,\n  | 'map'\n  | 'coordinateOrExtent'\n  | 'layerConfiguration'\n  | 'layerSpecification'\n  | 'mode'\n>): Promise<GeoJsonFeature[]> => {\n  if (coordinateOrExtent.length === 4 && mode !== 'bboxDot') {\n    return Promise.reject(\n      new Error(\n        `Configuration error in requestGfiWfs.ts: mode must be \"bboxDot\" to be able to use an extent for gfi requests, but was \"${mode}\".`\n      )\n    )\n  }\n  const { featureType, url, version } = layerSpecification\n  const { geometryName } = layerConfiguration\n  const code = map.getView().getProjection().getCode()\n  const typeName = version === '2.0.0' ? 'typeNames' : 'typename'\n  let featureUrl = `${url}?service=WFS&version=${version}&request=GetFeature&${typeName}=${featureType}&srsName=${code}`\n\n  if (mode === 'bboxDot') {\n    const extent =\n      coordinateOrExtent.length === 2\n        ? /* The extended extent is necessary because an extent with the same\n           * coordinates could lead to an empty featureCollection. */\n          [\n            coordinateOrExtent[0] - 0.1,\n            coordinateOrExtent[1] - 0.1,\n            coordinateOrExtent[0] + 0.1,\n            coordinateOrExtent[1] + 0.1,\n          ]\n        : coordinateOrExtent\n\n    featureUrl += `&bbox=${extent},${code}`\n  } else if (mode === 'intersects') {\n    const point =\n      `<gml:Point srsName=\"${code}\">` +\n      `<gml:coordinates>${coordinateOrExtent[0]},${coordinateOrExtent[1]}</gml:coordinates>` +\n      '</gml:Point>'\n    featureUrl +=\n      '&FILTER=' +\n      // NOTE: fes as a namespace and ValueReference for a property has been introduced in 2.0.0\n      (version === '2.0.0'\n        ? '<fes:Filter>' +\n          '<fes:Intersects>' +\n          `<fes:ValueReference>${geometryName}</fes:ValueReference>` +\n          point +\n          '</fes:Intersects>' +\n          '</fes:Filter>'\n        : '<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">' +\n          '<ogc:Intersects>' +\n          `<ogc:PropertyName>${geometryName}</ogc:PropertyName>` +\n          point +\n          '</fes:Intersects>' +\n          '</fes:Filter>')\n  } else {\n    return Promise.reject(\n      new Error(\n        `Type error in requestGfiWfs.ts: mode must be \"intersects\" or \"bboxDot\", but was \"${mode}\".`\n      )\n    )\n  }\n\n  return (\n    fetch(featureUrl, { method: 'GET' })\n      .then((response) => response.text())\n      // TODO: Type of layerSpecification needs an update to better reflect the possibilities of the services\n      //  and get rid of this @ts-ignore\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      .then((xmlText) => xml2GeoJson(xmlText, version))\n  )\n}\n","import { Feature as GeoJsonFeature } from 'geojson'\nimport { Feature, Map } from 'ol'\nimport { GeoJSON } from 'ol/format'\nimport VectorLayer from 'ol/layer/Vector'\nimport { FeatureLike } from 'ol/Feature'\n\nconst writer = new GeoJSON()\n\nconst getNestedFeatures = (\n  feature: Feature | FeatureLike\n): Feature | Feature[] | FeatureLike =>\n  feature instanceof Feature\n    ? feature.get('features')?.length\n      ? feature.get('features')\n      : feature\n    : feature\n\n/**\n * Returns features from GeoJSON layer as GeoJSON.\n */\nexport default ({\n  map,\n  coordinateOrExtent,\n  layer,\n}: {\n  map: Map\n  coordinateOrExtent: [number, number] | [number, number, number, number]\n  layer: VectorLayer\n}): Promise<GeoJsonFeature[]> =>\n  Promise.resolve(\n    (coordinateOrExtent.length === 2\n      ? map.getFeaturesAtPixel(map.getPixelFromCoordinate(coordinateOrExtent), {\n          layerFilter: (candidate) => candidate === layer,\n        })\n      : // @ts-expect-error | Layers reaching this place have a source\n        layer\n          .getSource()\n          .getFeaturesInExtent(coordinateOrExtent)\n          .map(getNestedFeatures)\n          .flat(1)\n    )\n      .map((feature) =>\n        feature instanceof Feature\n          ? JSON.parse(writer.writeFeature(feature))\n          : false\n      )\n      // remove FeatureLikes\n      .filter((x) => x)\n  )\n","import { Feature as GeoJsonFeature } from 'geojson'\nimport ImageLayer from 'ol/layer/Image'\nimport TileLayer from 'ol/layer/Tile'\nimport VectorLayer from 'ol/layer/Vector'\nimport { rawLayerList } from '@masterportal/masterportalapi'\nimport { RequestGfiParameters } from '../types'\n\nimport requestGfiWms from './requestGfiWms'\nimport requestGfiWfs from './requestGfiWfs'\nimport requestGfiGeoJson from './requestGfiGeoJson'\n\n/**\n * The requestGfi method abstracts from service-specific implementation and\n * retrieves feature information. Not all formats are supported yet.\n *\n * Namely, services returning any GML variant, or fitting text responses by\n * default, should work. All others are not yet implemented.\n * @param parameters - parameter object\n * @returns found features for GFI request\n */\nexport function requestGfi({\n  map,\n  layer,\n  coordinateOrExtent,\n  layerConfiguration,\n  layerSpecification,\n  mode,\n}: RequestGfiParameters): Promise<GeoJsonFeature[]> {\n  const layerId = layer.get('id')\n  try {\n    const params = {\n      map,\n      layerConfiguration,\n      layerSpecification,\n    }\n    if (layer instanceof TileLayer || layer instanceof ImageLayer) {\n      return coordinateOrExtent.length === 2\n        ? requestGfiWms({\n            ...params,\n            coordinate: coordinateOrExtent,\n            layer,\n          })\n        : Promise.reject(\n            new Error(\n              `An extent can not be used for ${layerId} as it is a WMS layer which only support coordinates for gfi requests.`\n            )\n          )\n    }\n    if (\n      rawLayerList.getLayerWhere({ id: layerId })?.typ === 'GeoJSON' &&\n      // NOTE: This is the case by design of @masterportal/masterportalapi but is added here for type safety\n      layer instanceof VectorLayer\n    ) {\n      return requestGfiGeoJson({ ...params, coordinateOrExtent, layer })\n    }\n    if (layer instanceof VectorLayer) {\n      return requestGfiWfs({ ...params, coordinateOrExtent, mode })\n    }\n    const notImplemented = `Layer ${layerId} was neither a Tile- nor a VectorLayer. GFI not implemented.`\n    return Promise.reject(new Error(notImplemented))\n  } catch (e) {\n    const error = `An error occurred while requesting features from layer with the id ${layerId}.`\n    return Promise.reject(new Error(error))\n  }\n}\n","import { Feature as GeoJsonFeature } from 'geojson'\nimport GeoJSON from 'ol/format/GeoJSON'\nimport { LineString, MultiLineString, MultiPolygon, Polygon } from 'ol/geom'\n\n/**\n * If multiple features are selected on a layer, it is necessary to order them by size.\n * This means that the order of the features in the array is largest to smallest,\n * as the first feature of the array is rendered first from OpenLayers.\n *\n * This function is used with Array.prototype.sort to order the given features its order.\n * The meaning of the return value can be read up on {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description}.\n */\nexport default function (\n  featureA: GeoJsonFeature,\n  featureB: GeoJsonFeature,\n  srsName: string\n): number {\n  const parser = new GeoJSON({\n    dataProjection: srsName,\n    featureProjection: srsName,\n  })\n  const geometryA = parser.readGeometry(featureA.geometry)\n  const geometryB = parser.readGeometry(featureB.geometry)\n\n  const aIsPolygon =\n    geometryA instanceof Polygon || geometryA instanceof MultiPolygon\n  const bIsPolygon =\n    geometryB instanceof Polygon || geometryB instanceof MultiPolygon\n\n  if (aIsPolygon && bIsPolygon) {\n    return geometryB.getArea() - geometryA.getArea()\n  }\n  // If one of the geometries is not a polygon, Polygons are ordered to the front, then LineStrings, lastly Points\n  if (aIsPolygon) {\n    return -1\n  }\n  if (bIsPolygon) {\n    return 1\n  }\n  const aIsLineString =\n    geometryA instanceof LineString || geometryA instanceof MultiLineString\n  const bIsLineString =\n    geometryB instanceof LineString || geometryB instanceof MultiLineString\n\n  if (aIsLineString && bIsLineString) {\n    return 0\n  }\n  if (aIsLineString) {\n    return -1\n  }\n  if (bIsLineString) {\n    return 1\n  }\n  return 0\n}\n","import debounce from 'lodash.debounce'\nimport { rawLayerList } from '@masterportal/masterportalapi'\nimport { Feature as GeoJsonFeature } from 'geojson'\nimport {\n  GfiConfiguration,\n  MapConfig,\n  PolarActionContext,\n} from '@polar/lib-custom-types'\nimport { Map } from 'ol'\nimport VectorLayer from 'ol/layer/Vector'\nimport compare from 'just-compare'\nimport { filterFeatures } from '../../utils/filterFeatures'\nimport { requestGfi } from '../../utils/requestGfi'\nimport sortFeatures from '../../utils/sortFeatures'\nimport { FeaturesByLayerId, GfiGetters, GfiState } from '../../types'\nimport { renderFeatures } from '../../utils/renderFeatures'\n\ninterface GetFeatureInfoParameters {\n  coordinateOrExtent: [number, number] | [number, number, number, number]\n  modifierPressed?: boolean\n}\n\nconst filterAndMapFeaturesToLayerIds = (\n  layerKeys: string[],\n  gfiConfiguration: GfiConfiguration,\n  features: (symbol | GeoJsonFeature[])[],\n  srsName: string\n): FeaturesByLayerId => {\n  const generalMaxFeatures =\n    gfiConfiguration.maxFeatures || Number.POSITIVE_INFINITY\n  const featuresByLayerId = layerKeys.reduce(\n    (accumulator, key, index) => ({\n      ...accumulator,\n      [key]: Array.isArray(features[index])\n        ? (features[index] as [])\n            .filter(gfiConfiguration.layers[key].isSelectable || (() => true))\n            .slice(\n              0,\n              gfiConfiguration.layers[key].maxFeatures || generalMaxFeatures\n            )\n        : features[index],\n    }),\n    {}\n  )\n  return Object.entries(featuresByLayerId).reduce(\n    (accumulator, [layerKey, layerValues]) => ({\n      ...accumulator,\n      [layerKey]:\n        Array.isArray(layerValues) && layerValues.length >= 2\n          ? layerValues.sort((a, b) => sortFeatures(a, b, srsName))\n          : layerValues,\n    }),\n    {}\n  )\n}\n\nconst getPromisedFeatures = (\n  map: Map,\n  configuration: MapConfig,\n  layerKeys: string[],\n  coordinateOrExtent: [number, number] | [number, number, number, number]\n) =>\n  layerKeys.map((key) => {\n    const layer = map\n      .getLayers()\n      .getArray()\n      .find((layer) => layer.getProperties().id === key)\n\n    if (!layer) {\n      console.error(\n        `@polar/plugin-gfi: No layer with id \"${key}\" found during run-time. GFI skipped.`\n      )\n      return [] as GeoJsonFeature[]\n    }\n\n    const layerConfiguration = configuration.gfi?.layers[key] || {}\n    const layerSpecification = rawLayerList.getLayerWhere({ id: key })\n    const mainLayerConfiguration = configuration.layers.find(\n      (element) => element.id === key\n    )\n    const layerGfiMode =\n      mainLayerConfiguration?.gfiMode || configuration?.gfi?.mode || 'bboxDot'\n\n    return requestGfi({\n      map,\n      layer,\n      coordinateOrExtent,\n      layerConfiguration,\n      layerSpecification,\n      mode: layerGfiMode,\n    })\n  })\n\nconst createSelectionDiff = (\n  oldSelection: FeaturesByLayerId,\n  newSelection: FeaturesByLayerId\n): FeaturesByLayerId =>\n  Object.entries(newSelection).reduce(\n    (acc, [layerId, features]) => ({\n      ...acc,\n      [layerId]:\n        Array.isArray(features) && Array.isArray(oldSelection[layerId])\n          ? features.reduce((acc, newFeature) => {\n              // If the feature is already in the old selection, remove it\n              const oldFeatureIndex = acc.findIndex((oldFeature) =>\n                compare(oldFeature.properties, newFeature.properties)\n              )\n              return oldFeatureIndex === -1\n                ? [...acc, newFeature]\n                : acc.filter((_, i) => i !== oldFeatureIndex)\n            }, oldSelection[layerId] as GeoJsonFeature[])\n          : features,\n    }),\n    {}\n  )\n\nconst errorSymbol = (err) => Symbol(err)\n\n/**\n * Code from `getFeatureInfo`, pulled to avoid overly requesting feature\n * information. Since sources in Pins plugin update right after each other\n * (and such effects are to be expected across the system), we're debouncing\n * this *after* resetting the module state, as something is bound to happen.\n */\nconst gfiRequest =\n  (featureDisplayLayer: VectorLayer) =>\n  async (\n    {\n      commit,\n      getters,\n      rootGetters: { map, configuration },\n    }: PolarActionContext<GfiState, GfiGetters>,\n    { coordinateOrExtent, modifierPressed = false }: GetFeatureInfoParameters\n  ): Promise<void> => {\n    const { afterLoadFunction, layerKeys } = getters\n    // fetch new feature information for all configured layers\n    const features = (\n      await Promise.allSettled(\n        getPromisedFeatures(map, configuration, layerKeys, coordinateOrExtent)\n      )\n    ).map((result) =>\n      result.status === 'fulfilled'\n        ? result.value\n        : errorSymbol(result.reason.message)\n    )\n    const srsName: string = map.getView().getProjection().getCode()\n    let featuresByLayerId = filterAndMapFeaturesToLayerIds(\n      layerKeys,\n      getters.gfiConfiguration,\n      features,\n      srsName\n    )\n    // store features in state, if configured via client after specific function\n    if (typeof afterLoadFunction === 'function') {\n      featuresByLayerId = await afterLoadFunction(\n        filterFeatures(featuresByLayerId),\n        srsName\n      )\n    }\n    if (modifierPressed) {\n      featuresByLayerId = createSelectionDiff(\n        getters.featureInformation,\n        featuresByLayerId\n      )\n    }\n    commit('setFeatureInformation', featuresByLayerId)\n    renderFeatures(\n      featureDisplayLayer,\n      getters.geometryLayerKeys,\n      featuresByLayerId\n    )\n  }\n\nexport const debouncedGfiRequest = (featureDisplayLayer: VectorLayer) =>\n  debounce(gfiRequest(featureDisplayLayer), 50)\n","import { GeoJSON } from 'ol/format'\nimport { Geometry } from 'ol/geom'\nimport { Feature } from 'ol'\nimport compare from 'just-compare'\nimport { isVisible } from '@polar/lib-invisible-style'\nimport { GeoJsonProperties } from 'geojson'\nimport VectorSource from 'ol/source/Vector'\n\nexport const getOriginalFeature = (\n  sources: VectorSource<Feature<Geometry>>[],\n  properties: GeoJsonProperties\n) =>\n  sources\n    .map((source) =>\n      source\n        .getFeatures()\n        .filter(isVisible)\n        .map((feature) => {\n          // true = silent change (prevents cluster recomputation & rerender)\n          feature.set('_gfiLayerId', source.get('_gfiLayerId'), true)\n          return feature\n        })\n    )\n    .flat(1)\n    .find((f) =>\n      compare(JSON.parse(new GeoJSON().writeFeature(f)).properties, properties)\n    )\n","import { PolarActionContext, PolarStore } from '@polar/lib-custom-types'\nimport { GeoJsonProperties } from 'geojson'\nimport getCluster from '@polar/lib-get-cluster'\nimport { getTooltip, Tooltip } from '@polar/lib-tooltip'\nimport Overlay from 'ol/Overlay'\nimport { Feature } from 'ol'\nimport { GfiGetters, GfiState } from '../../types'\nimport { getOriginalFeature } from '../../utils/getOriginalFeature'\n\nexport function setupCoreListener(\n  this: PolarStore<GfiState, GfiGetters>,\n  {\n    getters: { gfiConfiguration },\n    rootGetters,\n    dispatch,\n  }: PolarActionContext<GfiState, GfiGetters>\n) {\n  if (gfiConfiguration.featureList?.bindWithCoreHoverSelect) {\n    this.watch(\n      () => rootGetters.selected,\n      (feature) => dispatch('setOlFeatureInformation', { feature }),\n      { deep: true }\n    )\n  }\n}\n\nexport function setupTooltip({\n  getters: { gfiConfiguration },\n  rootGetters: { map },\n}: PolarActionContext<GfiState, GfiGetters>) {\n  const tooltipLayerIds = Object.keys(gfiConfiguration.layers).filter(\n    (key) => gfiConfiguration.layers[key].showTooltip\n  )\n  if (!tooltipLayerIds.length) {\n    return\n  }\n\n  let element: Tooltip['element'], unregister: Tooltip['unregister']\n  const overlay = new Overlay({\n    positioning: 'bottom-center',\n    offset: [0, -5],\n  })\n  map.addOverlay(overlay)\n  map.on('pointermove', ({ pixel, dragging, originalEvent }) => {\n    if (dragging || ['touch', 'pen'].includes(originalEvent.pointerType)) {\n      return\n    }\n    let hasFeatureAtPixel = false\n    // stops on return `true`, thus only using the uppermost feature\n    map.forEachFeatureAtPixel(\n      pixel,\n      (feature, layer) => {\n        if (!(feature instanceof Feature)) {\n          return false\n        }\n        hasFeatureAtPixel = true\n        overlay.setPosition(map.getCoordinateFromPixel(pixel))\n        if (unregister) {\n          unregister()\n        }\n        ;({ element, unregister } = getTooltip({\n          localeKeys:\n            // @ts-expect-error | it exists by virtue of layerFilter below\n            gfiConfiguration.layers[layer.get('id')].showTooltip(feature, map),\n        }))\n        overlay.setElement(element)\n        return true\n      },\n      { layerFilter: (layer) => tooltipLayerIds.includes(layer.get('id')) }\n    )\n    if (!hasFeatureAtPixel) {\n      overlay.setPosition(undefined)\n    }\n  })\n}\n\nexport function setupZoomListeners(\n  this: PolarStore<GfiState, GfiGetters>,\n  { dispatch, getters, rootGetters }: PolarActionContext<GfiState, GfiGetters>\n) {\n  if (getters.gfiConfiguration.featureList) {\n    this.watch(\n      () => rootGetters.zoomLevel,\n      () => {\n        const {\n          featureInformation,\n          listableLayerSources,\n          visibleWindowFeatureIndex,\n          windowFeatures,\n        } = getters\n\n        if (windowFeatures.length) {\n          const layerId: string =\n            // @ts-expect-error | if windowFeatures has features, visibleWindowFeatureIndex is in the range of possible features\n            windowFeatures[visibleWindowFeatureIndex].polarInternalLayerKey\n          const selectedFeatureProperties: GeoJsonProperties = {\n            // eslint-disable-next-line @typescript-eslint/naming-convention\n            _gfiLayerId: layerId,\n            ...featureInformation[layerId][visibleWindowFeatureIndex]\n              .properties,\n          }\n          const originalFeature = getOriginalFeature(\n            listableLayerSources,\n            selectedFeatureProperties\n          )\n          if (originalFeature) {\n            dispatch('setOlFeatureInformation', {\n              feature: getCluster(\n                rootGetters.map,\n                originalFeature,\n                '_gfiLayerId'\n              ),\n            })\n          }\n        }\n      }\n    )\n  }\n}\n","import { Map } from 'ol'\nimport { Modify } from 'ol/interaction'\nimport Draw, {\n  createBox,\n  type Options as DrawOptions,\n} from 'ol/interaction/Draw'\nimport { platformModifierKeyOnly } from 'ol/events/condition'\nimport { Fill, Stroke, Style } from 'ol/style'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { GfiGetters, GfiState } from '../../types'\n\nconst isDrawing = (map: Map) =>\n  map\n    .getInteractions()\n    .getArray()\n    .some(\n      (interaction) =>\n        (interaction instanceof Draw &&\n          // @ts-expect-error | internal hack to detect it from @polar/plugin-gfi\n          (interaction._isMultiSelect ||\n            // @ts-expect-error | internal hack to detect it from @polar/plugin-routing\n            interaction._isRoutingDraw ||\n            // @ts-expect-error | internal hack to detect it from @polar/plugin-draw\n            interaction._isDrawPlugin)) ||\n        interaction instanceof Modify ||\n        // @ts-expect-error | internal hack to detect it from @polar/plugin-draw\n        interaction._isDeleteSelect ||\n        // @ts-expect-error | internal hack to detect it from @polar/plugin-measure\n        interaction._isMeasureSelect\n    )\n\nconst drawOptions: DrawOptions = {\n  stopClick: true,\n  type: 'Circle',\n  style: new Style({\n    stroke: new Stroke({ color: 'white', width: 1.5 }),\n    fill: new Fill({ color: [255, 255, 255, 0.75] }),\n  }),\n  freehandCondition: (event) => {\n    if (event.type === 'pointermove') {\n      return false\n    } else if (event.type === 'pointerup') {\n      return true\n    }\n    return platformModifierKeyOnly(event)\n  },\n  condition: () => false,\n}\n\nexport function setupMultiSelection({\n  dispatch,\n  getters: {\n    gfiConfiguration: { boxSelect, directSelect, multiSelect },\n  },\n  rootGetters,\n}: PolarActionContext<GfiState, GfiGetters>) {\n  if (boxSelect || multiSelect === 'box' || multiSelect === 'circle') {\n    if (boxSelect) {\n      console.warn(\n        '@polar/plugin-gfi: Configuration parameter \"boxSelect\" has been deprecated. Please use the new parameter \"multiSelect\" set to \"box\" instead.'\n      )\n    }\n    if (multiSelect !== 'circle') {\n      drawOptions.geometryFunction = createBox()\n    } else {\n      delete drawOptions.geometryFunction\n    }\n    const draw = new Draw(drawOptions)\n    draw.on('drawstart', () => {\n      // @ts-expect-error | internal hack to detect it in @polar/plugin-pins\n      draw._isMultiSelect = true\n    })\n    draw.on('drawabort', () => {\n      // @ts-expect-error | internal hack to detect it in @polar/plugin-pins\n      draw._isMultiSelect = false\n    })\n    draw.on('drawend', (e) =>\n      dispatch('getFeatureInfo', {\n        // @ts-expect-error | A feature that is drawn has a geometry.\n        coordinateOrExtent: e.feature.getGeometry().getExtent(),\n        modifierPressed: true,\n      }).finally(() => {\n        // @ts-expect-error | internal hack to detect it in @polar/plugin-pins\n        draw._isMultiSelect = false\n      })\n    )\n    rootGetters.map.addInteraction(draw)\n  }\n  if (directSelect) {\n    rootGetters.map.on('click', ({ coordinate, originalEvent }) => {\n      if (!isDrawing(rootGetters.map)) {\n        dispatch('getFeatureInfo', {\n          coordinateOrExtent: coordinate,\n          modifierPressed:\n            navigator.userAgent.indexOf('Mac') !== -1\n              ? originalEvent.metaKey\n              : originalEvent.ctrlKey,\n        })\n      }\n    })\n  }\n}\n","import debounce from 'lodash.debounce'\nimport { Feature as GeoJsonFeature } from 'geojson'\nimport { Fill, Stroke, Style } from 'ol/style'\nimport { GeoJSON } from 'ol/format'\nimport { Feature } from 'ol'\nimport { PolarActionTree } from '@polar/lib-custom-types'\nimport { filterFeatures } from '../../utils/filterFeatures'\nimport { renderFeatures } from '../../utils/renderFeatures'\nimport { clear, getFeatureDisplayLayer } from '../../utils/displayFeatureLayer'\nimport { FeaturesByLayerId, GfiGetters, GfiState } from '../../types'\nimport { debouncedGfiRequest } from './debouncedGfiRequest'\nimport { setupCoreListener, setupTooltip, setupZoomListeners } from './setup'\nimport { setupMultiSelection } from './setupMultiSelection'\n\nexport const makeActions = () => {\n  const writer = new GeoJSON()\n  const featureDisplayLayer = getFeatureDisplayLayer()\n\n  let debouncedVisibilityChangeIndicator\n\n  const actions: PolarActionTree<GfiState, GfiGetters> = {\n    /**\n     * Responsible for setting up the module by\n     * - adding watchers to configured coordinate sources. Whenever one of these\n     *   sources changes, the module is reset and all information is fetched\n     *   anew.\n     * - adding the geometry display layer to the map.\n     */\n    setupModule({\n      getters: { gfiConfiguration, defaultHighlightStyle },\n      rootGetters,\n      dispatch,\n    }): void {\n      const { coordinateSources, customHighlightStyle } = gfiConfiguration\n      const { map } = rootGetters\n\n      const reaction = (coordinate) => {\n        clear(featureDisplayLayer)\n        if (coordinate && coordinate.length) {\n          dispatch('getFeatureInfo', { coordinateOrExtent: coordinate })\n        }\n      }\n\n      coordinateSources.forEach((coordinateSource) =>\n        this.watch(() => rootGetters[coordinateSource], reaction)\n      )\n\n      map.addLayer(featureDisplayLayer)\n      featureDisplayLayer.setStyle(\n        new Style({\n          stroke: new Stroke(\n            customHighlightStyle?.stroke || defaultHighlightStyle.stroke\n          ),\n          fill: new Fill(\n            customHighlightStyle?.fill || defaultHighlightStyle.fill\n          ),\n        })\n      )\n\n      dispatch('setupTooltip')\n      dispatch('setupFeatureVisibilityUpdates')\n      dispatch('setupCoreListener')\n      dispatch('setupZoomListeners')\n      dispatch('setupMultiSelection')\n    },\n    setupCoreListener,\n    setupMultiSelection,\n    setupTooltip,\n    setupZoomListeners,\n    setupFeatureVisibilityUpdates({ commit, state, getters, rootGetters }) {\n      // debounce to prevent update spam\n      debouncedVisibilityChangeIndicator = debounce(\n        () =>\n          commit(\n            'setVisibilityChangeIndicator',\n            state.visibilityChangeIndicator + 1\n          ),\n        10\n      )\n      rootGetters.map\n        .getLayers()\n        .getArray()\n        .forEach((layer) => {\n          if (getters.layerKeys.includes(layer.get('id'))) {\n            layer\n              // @ts-expect-error | layers reaching this have a source\n              .getSource()\n              .on('addfeature', debouncedVisibilityChangeIndicator)\n          }\n        })\n    },\n    close({ commit, dispatch, rootGetters }, userInteraction = false) {\n      commit('clearFeatureInformation')\n      commit('setImageLoaded', false)\n      // NOTE: null is needed, as the payload is always the second argument...\n      if (\n        !rootGetters.configuration?.extendedMasterportalapiMarkers &&\n        userInteraction\n      ) {\n        dispatch('plugin/pins/removeMarker', null, { root: true })\n      }\n      dispatch('setCoreSelection', { feature: null })\n      clear(featureDisplayLayer) // ... features of gfi layer\n    },\n    /**\n     * Action getFeatureInfo\n     * 1. resets the module state\n     * 2. fetches new feature information for each configured layer\n     * 3. adds features to the display layer optionally (if configured)\n     */\n    async getFeatureInfo(\n      { commit, dispatch },\n      coordinateOrExtent: [number, number] | [number, number, number, number]\n    ): Promise<GeoJsonFeature[]> {\n      if (coordinateOrExtent.length === 2) {\n        commit('clearFeatureInformation')\n        commit('setVisibleWindowFeatureIndex', 0)\n      }\n      clear(featureDisplayLayer)\n      // call further stepped in a debounced fashion to avoid a mess\n      return await dispatch('debouncedGfiRequest', coordinateOrExtent)\n    },\n    debouncedGfiRequest: debouncedGfiRequest(featureDisplayLayer),\n    setCoreSelection(\n      { commit, dispatch, rootGetters },\n      {\n        feature,\n        centerOnFeature = false,\n      }: { feature: Feature | null; centerOnFeature?: boolean }\n    ) {\n      if (rootGetters.selected !== feature) {\n        commit('setSelected', feature, { root: true })\n        dispatch(\n          'updateSelection',\n          { feature, centerOnFeature },\n          { root: true }\n        )\n      }\n    },\n    setOlFeatureInformation(\n      { commit, dispatch },\n      {\n        feature,\n        centerOnFeature = false,\n      }: { feature: Feature | null; centerOnFeature?: boolean }\n    ) {\n      commit('clearFeatureInformation')\n      commit('setVisibleWindowFeatureIndex', 0)\n      clear(featureDisplayLayer)\n      if (feature !== null) {\n        commit('setFeatureInformation', {\n          [feature.get('_gfiLayerId')]: feature.get('features')?.length\n            ? feature\n                .get('features')\n                .map((feature) => JSON.parse(writer.writeFeature(feature)))\n            : [JSON.parse(writer.writeFeature(feature))],\n        })\n        dispatch('setCoreSelection', { feature, centerOnFeature })\n      }\n    },\n    setFeatureInformation(\n      { commit, getters },\n      featuresByLayerId: FeaturesByLayerId\n    ) {\n      commit('clearFeatureInformation')\n      commit('setVisibleWindowFeatureIndex', 0)\n      clear(featureDisplayLayer)\n\n      const filteredFeatures = Object.fromEntries(\n        Object.entries(filterFeatures(featuresByLayerId)).map(\n          ([layerId, features]) => {\n            const { isSelectable } = getters.gfiConfiguration.layers[layerId]\n            return [\n              layerId,\n              typeof isSelectable === 'function'\n                ? features.filter((feature) => isSelectable(feature))\n                : features,\n            ]\n          }\n        )\n      )\n      commit('setFeatureInformation', filteredFeatures)\n      renderFeatures(\n        featureDisplayLayer,\n        getters.geometryLayerKeys,\n        filteredFeatures\n      )\n    },\n    hover({ commit, rootGetters }, feature: Feature) {\n      if (rootGetters.configuration.extendedMasterportalapiMarkers) {\n        commit('setHovered', feature, { root: true })\n      }\n    },\n    unhover({ commit, rootGetters }) {\n      if (rootGetters.configuration.extendedMasterportalapiMarkers) {\n        commit('setHovered', null, { root: true })\n      }\n    },\n  }\n\n  return actions\n}\n","import { generateSimpleMutations } from '@repositoryname/vuex-generators'\nimport getInitialState from './getInitialState'\n\nconst mutations = {\n  ...generateSimpleMutations(getInitialState()),\n  clearFeatureInformation(state) {\n    state.featureInformation = {}\n  },\n}\n\nexport default mutations\n","import { Vector as VectorLayer } from 'ol/layer'\nimport BaseLayer from 'ol/layer/Base'\n\nexport const listableLayersFilter = (layer: BaseLayer): boolean =>\n  Boolean(\n    layer instanceof VectorLayer ||\n      console.warn(\n        `@polar/plugin-gfi: Layer ${layer.get(\n          'id'\n        )} will not produce list results since it is not a vector layer.`\n      )\n  )\n","import { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport { GfiConfiguration, PolarGetterTree } from '@polar/lib-custom-types'\nimport noop from '@repositoryname/noop'\nimport { isVisible } from '@polar/lib-invisible-style'\nimport { Cluster as ClusterSource } from 'ol/source'\nimport { GeoJSON } from 'ol/format'\nimport { GfiGetters, GfiState } from '../types'\nimport { listableLayersFilter } from '../utils/listableLayersFilter'\nimport getInitialState from './getInitialState'\n\nconst getters: PolarGetterTree<GfiState, GfiGetters> = {\n  ...generateSimpleGetters(getInitialState()),\n  gfiConfiguration(_, __, ___, rootGetters) {\n    return <GfiConfiguration>(rootGetters.configuration?.gfi || {\n      afterLoadFunction: null,\n      coordinateSources: [],\n      layers: {},\n    })\n  },\n  renderType(_, __, ___, rootGetters) {\n    return rootGetters.configuration?.gfi?.renderType || 'independent'\n  },\n  renderMoveHandle(_, getters, __, rootGetters) {\n    return (\n      getters.renderType === 'independent' &&\n      rootGetters.hasWindowSize &&\n      rootGetters.hasSmallWidth\n    )\n  },\n  gfiContentComponent(_, { gfiConfiguration }) {\n    return gfiConfiguration.gfiContentComponent || null\n  },\n  afterLoadFunction(_, { gfiConfiguration }) {\n    return typeof gfiConfiguration?.afterLoadFunction === 'function'\n      ? gfiConfiguration.afterLoadFunction\n      : null\n  },\n  currentProperties(\n    _,\n    { exportPropertyLayerKeys, visibleWindowFeatureIndex, windowFeatures }\n  ) {\n    const properties = {\n      ...windowFeatures[visibleWindowFeatureIndex],\n    }\n    const exportProperty =\n      exportPropertyLayerKeys[properties.polarInternalLayerKey]\n    if (exportProperty?.length > 0) {\n      delete properties[exportProperty]\n    }\n    return properties\n  },\n  layerKeys(_, { gfiConfiguration }) {\n    return Object.keys(gfiConfiguration.layers)\n  },\n  exportProperty(\n    _,\n    {\n      currentProperties,\n      exportPropertyLayerKeys,\n      visibleWindowFeatureIndex,\n      windowFeatures,\n    }\n  ) {\n    if (currentProperties) {\n      const property =\n        exportPropertyLayerKeys[currentProperties.polarInternalLayerKey]\n      return property.length > 0\n        ? (windowFeatures[visibleWindowFeatureIndex]?.[property] as string)\n        : ''\n    }\n    return ''\n  },\n  exportPropertyLayerKeys(_, { gfiConfiguration }) {\n    return Object.entries(gfiConfiguration.layers).reduce(\n      (accumulator, [key, { exportProperty }]) => ({\n        ...accumulator,\n        [key]: typeof exportProperty === 'string' ? exportProperty : '',\n      }),\n      {} as Record<string, string>\n    )\n  },\n  /** only show switch buttons if multiple property sets are available */\n  showSwitchButtons(_, { windowFeatures }) {\n    return windowFeatures.length > 1\n  },\n  windowLayerKeys(_, { gfiConfiguration }) {\n    return Object.entries(gfiConfiguration.layers).reduce(\n      (accumulator, [key, { window }]) => {\n        if (window) {\n          return [...accumulator, key]\n        }\n        return accumulator\n      },\n      [] as string[]\n    )\n  },\n  windowLayerKeysActive(\n    _,\n    { windowLayerKeys, gfiConfiguration },\n    __,\n    rootGetters\n  ) {\n    const { activeLayerPath } = gfiConfiguration\n    if (!activeLayerPath) {\n      // if not configured, restriction does not apply\n      return true\n    }\n    // update on change indicator\n    noop(rootGetters[activeLayerPath])\n    return Boolean(\n      rootGetters.map\n        .getLayers()\n        .getArray()\n        .filter(\n          (layer) =>\n            windowLayerKeys.includes(layer.get('id')) && layer.getVisible()\n        ).length\n    )\n  },\n  geometryLayerKeys(_, { gfiConfiguration }) {\n    return Object.entries(gfiConfiguration.layers).reduce(\n      (accumulator, [key, { geometry }]) => {\n        if (geometry) {\n          return [...accumulator, key]\n        }\n        return accumulator\n      },\n      [] as string[]\n    )\n  },\n  windowFeatures(_, { featureInformation, windowLayerKeys, gfiConfiguration }) {\n    return Object.entries(featureInformation)\n      .map(([key, features]) =>\n        /*\n          NOTE: When displaying the features in the map, the first feature is rendered first\n            thus lying under every other following feature. However, when using the gfi window,\n            the first feature is initially displayed in the window.\n            To have both in line, the feature displayed on top, the order of the features is reversed here for the window.\n         */\n        windowLayerKeys.includes(key) && Array.isArray(features)\n          ? features.reverse().map(({ properties }) => {\n              const baseProperties = { polarInternalLayerKey: key }\n              const propertyReducer = gfiConfiguration.layers[key].properties\n\n              // if it is an Array, just forward properties named in it\n              if (Array.isArray(propertyReducer)) {\n                return {\n                  ...Object.fromEntries(\n                    Object.entries(properties || {}).filter(([key]) =>\n                      propertyReducer.includes(key)\n                    )\n                  ),\n                  ...baseProperties,\n                }\n              }\n              // if of type object, map keys, forward properties named in object keys\n              if (typeof propertyReducer === 'object') {\n                const relevantKeys = Object.keys(propertyReducer)\n                return {\n                  ...Object.fromEntries(\n                    Object.entries(properties || {})\n                      .filter(([key]) => relevantKeys.includes(key))\n                      .map(([key, value]) => [propertyReducer[key], value])\n                  ),\n                  ...baseProperties,\n                }\n              }\n\n              // if neither, just forward properties\n              return { ...properties, ...baseProperties }\n            })\n          : []\n      )\n      .flat(1)\n  },\n  listMode(_, { gfiConfiguration }) {\n    if (gfiConfiguration.featureList && !gfiConfiguration.featureList.mode) {\n      console.error(\n        '@polar/plugin-gfi: When using featureList a mode has to be chosen.'\n      )\n    }\n    return gfiConfiguration.featureList?.mode\n  },\n  listText(_, { gfiConfiguration }) {\n    return gfiConfiguration.featureList?.text || []\n  },\n  showList(_, { windowFeatures, gfiConfiguration }) {\n    return Boolean(gfiConfiguration.featureList && !windowFeatures.length)\n  },\n  listableLayerSources(_, { layerKeys }, __, rootGetters) {\n    return rootGetters.map\n      .getLayers()\n      .getArray()\n      .filter((layer) => layerKeys.includes(layer.get('id')))\n      .filter(listableLayersFilter)\n      .map((layer) => {\n        // @ts-expect-error | no sourceless layers in masterportalAPI generation\n        let source = layer.getSource()\n        while (source instanceof ClusterSource) {\n          source = source.getSource()\n        }\n        source.set('_gfiLayerId', layer.get('id'), true)\n        return source\n      })\n  },\n  listFeatures(\n    { visibilityChangeIndicator },\n    { gfiConfiguration, listableLayerSources, listMode },\n    __,\n    rootGetters\n  ) {\n    const { map, clientHeight, clientWidth, center, zoomLevel } = rootGetters\n    const writer = new GeoJSON()\n    // trigger getter on those who indicate feature change possibility\n    noop(clientHeight, clientWidth, center, zoomLevel)\n    noop(visibilityChangeIndicator)\n    return listableLayerSources\n      .map((source) => {\n        const layerId = source.get('_gfiLayerId')\n        return (\n          listMode === 'loaded'\n            ? source.getFeatures()\n            : source.getFeaturesInExtent(\n                map.getView().calculateExtent(map.getSize()),\n                map.getView().getProjection()\n              )\n        )\n          .filter(isVisible)\n          .filter((feature) => {\n            const { isSelectable } = gfiConfiguration.layers[layerId]\n            return typeof isSelectable === 'function'\n              ? isSelectable(JSON.parse(writer.writeFeature(feature)))\n              : true\n          })\n          .map((feature) => {\n            // true = silent change (prevents cluster recomputation & rerender)\n            feature.set('_gfiLayerId', layerId, true)\n            return feature\n          })\n      })\n      .flat(1)\n  },\n  isFeatureHovered: (_, __, ___, rootGetters) => (feature) => {\n    const { hovered } = rootGetters\n    return (\n      hovered !== null &&\n      (hovered === feature || hovered.get('features')\n        ? hovered.get('features').includes(feature)\n        : false)\n    )\n  },\n}\n\nexport default getters\n","import { PolarModule } from '@polar/lib-custom-types'\nimport { GfiGetters, GfiState } from '../types'\n\nimport getInitialState from './getInitialState'\nimport { makeActions } from './actions'\nimport mutations from './mutations'\nimport getters from './getters'\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<GfiState, GfiGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: makeActions(),\n    mutations,\n    getters,\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { GfiConfiguration } from '@polar/lib-custom-types'\nimport { Gfi } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport default (options: GfiConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'gfi',\n    plugin: Gfi,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <v-tooltip left :disabled=\"hasSmallDisplay\">\n    <template #activator=\"{ on, attrs }\">\n      <v-btn\n        :color=\"open === index ? 'primaryContrast' : 'primary'\"\n        fab\n        small\n        :aria-label=\"$t(hint ? hint : `plugins.iconMenu.hints.${id}`)\"\n        v-bind=\"attrs\"\n        @click=\"toggle(index)\"\n        v-on=\"on\"\n      >\n        <v-icon :color=\"open === index ? 'primary' : 'primaryContrast'\">\n          {{ icon }}\n        </v-icon>\n      </v-btn>\n    </template>\n    <span>{{ $t(hint ? hint : `plugins.iconMenu.hints.${id}`) }}</span>\n  </v-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapActions, mapGetters, mapMutations } from 'vuex'\n\nexport default Vue.extend({\n  name: 'IconMenuButton',\n  props: {\n    id: {\n      type: String,\n      required: true,\n    },\n    icon: {\n      type: String,\n      required: true,\n    },\n    index: {\n      type: Number,\n      required: true,\n    },\n    hint: {\n      type: String,\n      default: '',\n    },\n  },\n  computed: {\n    ...mapGetters(['hasSmallDisplay']),\n    ...mapGetters('plugin/iconMenu', ['open']),\n  },\n  methods: {\n    ...mapMutations(['setMoveHandle']),\n    ...mapMutations('plugin/iconMenu', ['setOpen']),\n    ...mapActions('plugin/iconMenu', ['openInMoveHandle']),\n    toggle(index: number) {\n      if (this.open === index) {\n        this.setOpen(null)\n        this.setMoveHandle(null)\n      } else {\n        this.setOpen(index)\n        this.openInMoveHandle(index)\n      }\n      this.$parent.updateMaxWidth()\n    },\n  },\n})\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n  <component :is=\"wrapperComponent\" class=\"icon-menu-list ma-2\">\n    <component\n      :is=\"itemComponent\"\n      v-for=\"({ plugin, icon, id, hint }, index) of menus\"\n      :key=\"index\"\n      :class=\"\n        deviceIsHorizontal\n          ? 'icon-menu-list-item-horizontal'\n          : 'icon-menu-list-item'\n      \"\n    >\n      <component :is=\"plugin\" v-if=\"icon === undefined\" />\n      <template v-else>\n        <component\n          :is=\"buttonComponent\"\n          v-if=\"buttonComponent\"\n          :id=\"id\"\n          :icon=\"icon\"\n          :hint=\"hint\"\n          :index=\"index\"\n        />\n        <IconMenuButton\n          v-else\n          :id=\"id\"\n          :icon=\"icon\"\n          :hint=\"hint\"\n          :index=\"index\"\n        />\n        <!-- Content displayed in MoveHandle of the core if has-window-size and has-small-width are true -->\n        <component\n          :is=\"plugin\"\n          v-if=\"open === index && (!hasWindowSize || !hasSmallWidth)\"\n          ref=\"item-component\"\n          :class=\"[\n            deviceIsHorizontal\n              ? 'icon-menu-list-item-content-horizontal'\n              : 'icon-menu-list-item-content',\n            'icon-menu-list-item-content-scrollable-y',\n          ]\"\n          :style=\"`max-height: ${maxHeight}; max-width: ${maxWidth}`\"\n        />\n      </template>\n    </component>\n  </component>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport IconMenuButton from './IconMenuButton.vue'\n\nexport default Vue.extend({\n  name: 'IconMenu',\n  components: { IconMenuButton },\n  data: () => ({ maxWidth: 'inherit' }),\n  computed: {\n    ...mapGetters([\n      'clientHeight',\n      'deviceIsHorizontal',\n      'hasSmallWidth',\n      'hasWindowSize',\n    ]),\n    ...mapGetters('plugin/iconMenu', ['buttonComponent', 'menus', 'open']),\n    asList() {\n      return this.menus.length > 1\n    },\n    wrapperComponent() {\n      return this.asList ? 'ul' : 'div'\n    },\n    itemComponent() {\n      return this.asList ? 'li' : 'div'\n    },\n    maxHeight() {\n      if (!this.hasWindowSize) {\n        return 'inherit'\n      }\n      return `calc(${this.clientHeight}px - ${\n        this.deviceIsHorizontal ? 'calc(100% + 1.5em)' : '1em'\n      })`\n    },\n  },\n  watch: {\n    // Fixes an issue if the orientation of a mobile device is changed while a plugin is open\n    deviceIsHorizontal(newVal: boolean) {\n      if (!newVal) {\n        this.updateMaxWidth()\n      }\n    },\n  },\n  mounted() {\n    addEventListener('resize', this.updateMaxWidth)\n    this.updateMaxWidth()\n  },\n  beforeDestroy() {\n    removeEventListener('resize', this.updateMaxWidth)\n  },\n  methods: {\n    updateMaxWidth() {\n      this.$nextTick(() => {\n        const plugin = this.$refs['item-component']\n        if (plugin?.[0]) {\n          if (!this.hasWindowSize) {\n            const { width, left } = plugin[0].$el.getBoundingClientRect()\n            this.maxWidth = `${width + left}px`\n          } else {\n            this.maxWidth = 'inherit'\n          }\n        }\n      })\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.icon-menu-list-item-content,\n.icon-menu-list-item-horizontal {\n  .v-card__text {\n    // Prevents a x-scrollbar being shown if not necessary\n    width: inherit;\n  }\n}\n</style>\n\n<style scoped lang=\"scss\">\n.icon-menu-list {\n  position: relative;\n  list-style: none;\n  padding: 0;\n}\n\n.icon-menu-list-item-horizontal {\n  float: left;\n  margin-left: 0.5rem;\n}\n\n.icon-menu-list-item {\n  margin-bottom: 0.5rem;\n  z-index: 1;\n}\n\n.icon-menu-list-item-content {\n  position: absolute;\n  white-space: nowrap;\n  top: 0;\n  right: calc(100% + 0.5em);\n}\n\n.icon-menu-list-item-content-horizontal {\n  position: absolute;\n  white-space: nowrap;\n  top: calc(100% + 0.5em);\n  right: -0.5em;\n}\n\n.icon-menu-list-item-content-scrollable-y {\n  z-index: 1;\n  overflow-y: auto;\n  scrollbar-gutter: stable;\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    iconMenu: {\n      mobileCloseButton: '{{plugin}} schließen',\n      hints: {\n        attributions: 'Quellennachweis',\n        draw: 'Zeichenwerkzeuge',\n        filter: 'Filter',\n        layerChooser: 'Kartenauswahl',\n        gfi: 'Objektliste',\n        routing: 'Routenplaner',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    iconMenu: {\n      mobileCloseButton: 'Close {{plugin}}',\n      hints: {\n        attributions: 'Attributions',\n        draw: 'Draw tools',\n        filter: 'Filter',\n        layerChooser: 'Choose map',\n        gfi: 'Feature list',\n        routing: 'Routing planner',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import { t } from 'i18next'\nimport {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { IconMenuGetters, IconMenuState } from '../types'\n\nconst getInitialState = (): IconMenuState => ({\n  menus: [],\n  open: null,\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<IconMenuState, IconMenuGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({ commit, dispatch, getters, rootGetters }): void {\n        const menus = rootGetters.configuration?.iconMenu?.menus || []\n        const initializedMenus = menus\n          .filter(({ id }) => {\n            const display = rootGetters.configuration?.[id]?.displayComponent\n            return typeof display === 'boolean' ? display : true\n          })\n          .map((menu) => {\n            let plugin\n            const fakeVm = {\n              $store: {\n                ...this,\n                dispatch: (name, payload) => {\n                  this.dispatch(name, payload)\n                  plugin = payload.plugin\n                },\n              },\n            }\n            // @ts-expect-error | Issue 'TS2349: This expression is not callable. Type '{}' has no call signatures.' Arises as noted in @polar/lib-custom-types\n            menu.plugin(fakeVm)\n            return {\n              ...menu,\n              plugin,\n            }\n          })\n\n        commit('setMenus', initializedMenus)\n\n        // The map initially has a height of 0, so initially opening a menu only works after the height has changed\n        this.watch(\n          () => rootGetters.mapHasDimensions,\n          (value) => {\n            if (\n              value &&\n              !rootGetters.hasSmallHeight &&\n              !rootGetters.hasSmallWidth\n            ) {\n              dispatch('openMenuById', getters.initiallyOpen)\n            }\n          }\n        )\n      },\n      openMenuById({ commit, dispatch, getters }, openId: string) {\n        const index = getters.menus.findIndex(({ id }) => id === openId)\n\n        if (index !== -1) {\n          commit('setOpen', index)\n          dispatch('openInMoveHandle', index)\n        }\n      },\n      openInMoveHandle({ commit, getters }, index: number) {\n        const { hint, id, plugin } = getters.menus[index]\n        commit(\n          'setMoveHandle',\n          {\n            closeLabel: t('plugins.iconMenu.mobileCloseButton', {\n              plugin: hint || `plugins.iconMenu.hints.${id}`,\n            }),\n            closeFunction: () => commit('setOpen', null),\n            component: plugin,\n            plugin: 'iconMenu',\n          },\n          { root: true }\n        )\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      buttonComponent: (_, __, ___, rootGetters) =>\n        rootGetters.configuration.iconMenu?.buttonComponent || null,\n      initiallyOpen: (_, __, ___, rootGetters) =>\n        rootGetters.configuration.iconMenu?.initiallyOpen || '',\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { IconMenuConfiguration } from '@polar/lib-custom-types'\nimport { IconMenu } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nimport IconMenuButton from './components/IconMenuButton.vue'\nexport { IconMenuButton }\n\nexport default (options: IconMenuConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'iconMenu',\n    plugin: IconMenu,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <v-card class=\"layer-chooser-options\">\n    <v-card-actions>\n      <v-btn\n        id=\"polar-layer-chooser-options-back-button\"\n        icon\n        small\n        :aria-label=\"$t('plugins.layerChooser.returnToLayers')\"\n        @click=\"closeOptions\"\n      >\n        <v-icon small>fa-chevron-left</v-icon>\n      </v-btn>\n      <v-card-title class=\"layer-chooser-options-card-title\">{{\n        $t('plugins.layerChooser.optionsHeader', openedOptionsService)\n      }}</v-card-title>\n    </v-card-actions>\n    <template\n      v-if=\"openedOptionsService.options.layers && openedOptionsServiceLayers\"\n    >\n      <v-card-title id=\"polar-label-options-layer-title\">{{\n        $t('plugins.layerChooser.layerHeader')\n      }}</v-card-title>\n      <v-card-text>\n        <template\n          v-for=\"{\n            layerName,\n            displayName,\n            layerImage,\n          } in openedOptionsServiceLayers\"\n        >\n          <v-checkbox\n            :key=\"`layer-chooser-layer-option-${layerName}`\"\n            v-model=\"activeLayers\"\n            :label=\"$t(displayName)\"\n            :value=\"layerName\"\n            aria-describedby=\"polar-label-options-layer-title\"\n            dense\n            hide-details\n            :disabled=\"\n              activeLayers.length === 1 && activeLayers.includes(layerName)\n            \"\n          >\n            <template v-if=\"layerImage\" #prepend>\n              <img :src=\"layerImage\" />\n            </template>\n          </v-checkbox>\n        </template>\n      </v-card-text>\n    </template>\n  </v-card>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'LayerChooserOptions',\n  computed: {\n    ...mapGetters('plugin/layerChooser', [\n      'activeLayerIds',\n      'openedOptions',\n      'openedOptionsService',\n      'openedOptionsServiceLayers',\n    ]),\n    activeLayers: {\n      get() {\n        return this.activeLayerIds[this.openedOptionsService.id]\n      },\n      set(value) {\n        this.toggleOpenedOptionsServiceLayer(value)\n      },\n    },\n  },\n  methods: {\n    ...mapMutations('plugin/layerChooser', ['setOpenedOptions']),\n    ...mapActions('plugin/layerChooser', ['toggleOpenedOptionsServiceLayer']),\n    closeOptions() {\n      const previousOptions = this.openedOptions\n      this.setOpenedOptions(null)\n      this.$nextTick(() => {\n        const button = (\n          document.querySelector('[data-app]') as ShadowRoot\n        ).getElementById(\n          `polar-layer-chooser-options-${previousOptions}-button`\n        )\n        // Sadly needed as the button is not focused otherwise.\n        setTimeout(() => button?.focus(), 0)\n      })\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.layer-chooser-options {\n  label {\n    text-overflow: ellipsis;\n    overflow: hidden;\n    flex-wrap: nowrap;\n    display: inline-block !important;\n  }\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.layer-chooser-options {\n  display: flex;\n  flex-direction: column;\n  max-width: inherit;\n  white-space: nowrap;\n\n  label {\n    text-overflow: ellipsis;\n    overflow: hidden;\n    flex-wrap: nowrap;\n    display: inline-block;\n  }\n\n  .v-card__title {\n    padding-top: 0;\n    padding-bottom: 0;\n    font-size: 100%;\n  }\n  .v-card__actions {\n    white-space: normal;\n  }\n}\n\n.layer-chooser-options-card-title {\n  line-height: initial;\n  word-break: initial;\n}\n</style>\n","<template>\n  <v-tooltip left :disabled=\"hasSmallDisplay\">\n    <template #activator=\"{ on }\">\n      <div class=\"polar-layer-chooser-option-line\" v-on=\"disabled && on\">\n        <slot></slot>\n        <v-btn\n          :id=\"`polar-layer-chooser-options-${layerId}-button`\"\n          class=\"ml-1\"\n          :class=\"!hasOptions && 'polar-layer-chooser-option-invisible'\"\n          :aria-label=\"$t('plugins.layerChooser.layerOptions')\"\n          icon\n          small\n          @click=\"updateOpenedOptions(layerId)\"\n        >\n          <v-icon small>{{ icon }}</v-icon>\n        </v-btn>\n      </div>\n    </template>\n    {{ $t('plugins.layerChooser.tooltipDisabledLayer') }}\n  </v-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport Vue, { PropType } from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\nimport { DisabledLayers } from '../types'\n\n/**\n * Adds tooltip and option action to arbitrary selection element.\n */\nexport default Vue.extend({\n  name: 'LayerChooserLayerWrapper',\n  props: {\n    disabledLayers: {\n      type: Object as PropType<DisabledLayers>,\n      required: true,\n    },\n    layerId: {\n      type: String,\n      required: true,\n    },\n    icon: {\n      type: String,\n      default: 'fa-gear',\n    },\n  },\n  computed: {\n    ...mapGetters(['hasSmallDisplay']),\n    ...mapGetters('plugin/layerChooser', ['idsWithOptions']),\n    hasOptions() {\n      return this.idsWithOptions.includes(this.layerId)\n    },\n    disabled() {\n      return this.disabledLayers[this.layerId]\n    },\n  },\n  methods: {\n    ...mapMutations('plugin/layerChooser', ['setOpenedOptions']),\n    updateOpenedOptions(layerId: string) {\n      this.setOpenedOptions(layerId)\n      this.$nextTick(() =>\n        (document.querySelector('[data-app]') as ShadowRoot)\n          .getElementById('polar-layer-chooser-options-back-button')\n          ?.focus()\n      )\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.polar-layer-chooser-option-line {\n  > div {\n    min-width: 0;\n  }\n\n  label {\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n    display: inline-block !important;\n  }\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.polar-layer-chooser-option-line {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  align-items: center;\n}\n.polar-layer-chooser-option-invisible {\n  /* kept in DOM for even spacing */\n  visibility: hidden;\n}\n</style>\n","<template>\n  <v-card class=\"layer-chooser-selection\">\n    <template v-if=\"backgrounds.length\">\n      <v-card-title id=\"polar-label-background-title\">{{\n        $t('plugins.layerChooser.backgroundTitle')\n      }}</v-card-title>\n      <v-card-text>\n        <v-radio-group v-model=\"activeBackground\" dense hide-details>\n          <template v-for=\"{ name, id } in backgrounds\">\n            <LayerWrapper\n              :key=\"`background-layer-${id}`\"\n              :disabled-layers=\"disabledBackgrounds\"\n              :layer-id=\"id\"\n            >\n              <v-radio\n                aria-describedby=\"polar-label-background-title\"\n                dense\n                hide-details\n                :label=\"$t(name)\"\n                :value=\"id\"\n                :disabled=\"disabledBackgrounds[id]\"\n                @keydown.up.stop\n                @keydown.right.stop\n                @keydown.down.stop\n                @keydown.left.stop\n              ></v-radio>\n            </LayerWrapper>\n          </template>\n        </v-radio-group>\n      </v-card-text>\n    </template>\n    <template v-if=\"shownMasks.length\">\n      <template v-for=\"[type, masks] in Object.entries(masksSeparatedByType)\">\n        <v-card-title\n          :id=\"`polar-label-${type}-title`\"\n          :key=\"`layer-chooser-mask-title-${type}`\"\n        >\n          {{ $t(`plugins.layerChooser.${type}Title`) }}\n        </v-card-title>\n        <v-card-text :key=\"`layer-chooser-mask-text-${type}`\">\n          <template v-for=\"{ name, id } in masks\">\n            <LayerWrapper\n              :key=\"`mask-layer-${type}-${id}`\"\n              :disabled-layers=\"disabledMasks\"\n              :layer-id=\"id\"\n            >\n              <v-checkbox\n                v-model=\"activeMasks\"\n                :label=\"$t(name)\"\n                :value=\"id\"\n                :aria-describedby=\"`polar-label-${type}-title`\"\n                dense\n                hide-details\n                class=\"cut-off-top-space\"\n                :disabled=\"disabledMasks[id]\"\n              />\n            </LayerWrapper>\n          </template>\n        </v-card-text>\n      </template>\n    </template>\n  </v-card>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\nimport LayerWrapper from './LayerWrapper.vue'\n\nexport default Vue.extend({\n  name: 'LayerChooserSelection',\n  components: { LayerWrapper },\n  computed: {\n    ...mapGetters('plugin/layerChooser', [\n      'activeBackgroundId',\n      'activeMaskIds',\n      'backgrounds',\n      'disabledBackgrounds',\n      'disabledMasks',\n      'masksSeparatedByType',\n      'shownMasks',\n    ]),\n    activeBackground: {\n      get() {\n        return this.activeBackgroundId\n      },\n      set(value) {\n        this.setActiveBackgroundId(value)\n      },\n    },\n    activeMasks: {\n      get() {\n        return this.activeMaskIds\n      },\n      set(value) {\n        this.setActiveMaskIds(value)\n      },\n    },\n  },\n  methods: {\n    ...mapActions('plugin/layerChooser', [\n      'setActiveBackgroundId',\n      'setActiveMaskIds',\n    ]),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.layer-chooser-selection {\n  display: flex;\n  flex-direction: column;\n  max-width: inherit;\n  white-space: nowrap;\n\n  .v-card__title {\n    padding-top: 0;\n    padding-bottom: 0;\n    font-size: 100%;\n  }\n\n  .v-card__text {\n    padding-bottom: 8px;\n  }\n\n  .v-input--radio-group {\n    margin-top: 0;\n    padding-top: 0;\n  }\n\n  .v-radio {\n    margin-bottom: 0 !important;\n  }\n\n  .cut-off-top-space {\n    margin-top: 0;\n    padding-top: 0;\n  }\n}\n</style>\n","<template>\n  <v-scroll-x-reverse-transition>\n    <component :is=\"component\" v-if=\"component\" />\n    <template v-else>\n      <Selection v-if=\"displaySelection\"></Selection>\n      <Options v-else></Options>\n    </template>\n  </v-scroll-x-reverse-transition>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport Options from './Options.vue'\nimport Selection from './Selection.vue'\n\nexport default Vue.extend({\n  name: 'LayerChooser',\n  components: {\n    Options,\n    Selection,\n  },\n  computed: {\n    ...mapGetters(['clientWidth', 'hasSmallWidth', 'hasWindowSize']),\n    ...mapGetters('plugin/layerChooser', ['component', 'openedOptions']),\n    displaySelection() {\n      return this.openedOptions === null\n    },\n  },\n})\n</script>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    layerChooser: {\n      backgroundTitle: 'Hintergrundkarten',\n      maskTitle: 'Fachdaten',\n      tooltipDisabledLayer: 'Auf der aktuellen Zoomstufe nicht verfügbar.',\n      optionsHeader: 'Optionen für Layer \"$t({{name}})\"',\n      layerHeader: 'Auswahl sichtbarer Ebenen',\n      layerOptions: 'Optionen für Kartenmaterial',\n      returnToLayers: 'Zurück zur Auswahl',\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    layerChooser: {\n      backgroundTitle: 'Background maps',\n      maskTitle: 'Subject data',\n      tooltipDisabledLayer: 'Not available on the current zoom level.',\n      optionsHeader: '\"{{name}}\" layer options',\n      layerHeader: 'Visible layer selection',\n      layerOptions: 'Map data options',\n      returnToLayers: 'Return to selection',\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import { LayerConfiguration } from '@polar/lib-custom-types'\nimport { IdManipulator } from '../types'\n\n/**\n * Returns a boolean list which contains the attributions for every visible Layer\n * @param layers - layers carry setup information\n * @param zoom - the zoom the map is currently in\n * @returns information about layer active property.\n */\nexport function areLayersActive(\n  layers: LayerConfiguration[],\n  zoom: number\n): LayerConfiguration[] {\n  return layers.filter((layer) => {\n    let { minZoom, maxZoom } = layer\n    if (typeof minZoom === 'undefined') minZoom = 0\n    if (typeof maxZoom === 'undefined') maxZoom = Number.MAX_SAFE_INTEGER\n    return minZoom <= zoom && zoom <= maxZoom\n  })\n}\n\n/**\n * Returns the return value of the given callback, which takes the extracted list of layer ids\n * @param layers - layers carry setup information\n * @param callback - can be used to make the created list available, but with a local scope;\n *  can also be used to manipulate the list of ids, before returning it\n * @returns list of id properties, if not manipulated by callback.\n */\nexport function asIdList(\n  layers: LayerConfiguration[],\n  callback: IdManipulator = (ids) => ids\n) {\n  const ids: string[] = layers.map(({ id }) => String(id))\n  return callback(ids)\n}\n","import { rawLayerList } from '@masterportal/masterportalapi'\nimport { LayerConfiguration, MapConfig } from '@polar/lib-custom-types'\n\nexport const getBackgroundsAndMasks = (\n  configuration: MapConfig\n): [LayerConfiguration[], LayerConfiguration[]] =>\n  configuration.layers.reduce(\n    ([backgrounds, masks], current) => {\n      const rawLayer = rawLayerList.getLayerWhere({\n        id: current.id,\n      })\n\n      if (rawLayer === null) {\n        console.error(\n          `@polar/plugin-layer-chooser: Layer ${current.id} not found in service register. This is a configuration issue. The map might behave in unexpected ways.`,\n          current\n        )\n\n        return [backgrounds, masks]\n      }\n      if (current.type === 'background') {\n        return [[...backgrounds, current], masks]\n      }\n\n      return [backgrounds, [...masks, current]]\n    },\n    [[] as LayerConfiguration[], [] as LayerConfiguration[]]\n  )\n","/* NOTE: dig up from Capabilities by OGC WMS Capabilities specification E.1 in\n * https://portal.ogc.org/files/?artifact_id=14416\n * OL currently has no TS support for its return object, hence :any'ing here */\n\n/**\n * Finds a named layer from a root layer (array). First-found is returned,\n * assuming that not multiple layers will have the same name, since they're a\n * distinguishing feature for layer enabling/disabling via URL. Layers can be\n * nested arbitrarily deep.\n * NOTE Should we start doing this a lot, consider memoization\n * @param layer - layer from ol/format/WMSCapabilities\n * @param name - name to search for\n * @returns capabilities layer with matching name\n */\nconst deepLayerFind = (layer, name: string) => {\n  if (Array.isArray(layer)) {\n    return (\n      layer.map((l) => deepLayerFind(l, name)).find((l) => l !== null) || null\n    )\n  } else if (typeof layer === 'object') {\n    if (layer.Name === name) {\n      return layer\n    } else if (layer.Layer) {\n      return deepLayerFind(layer.Layer, name)\n    }\n  }\n\n  // layer is minOccurs=\"0\", so we may always end up empty-handed\n  return null\n}\n\n/**\n * @param style - style of a layer from ol/format/WMSCapabilities\n * @returns array of all found legend URLs\n */\nconst getAllLegendURLs = (style): string[] =>\n  (Array.isArray(style) ? style : [style])\n    .map((styleObject) =>\n      (Array.isArray(styleObject.LegendURL)\n        ? styleObject.LegendURL\n        : typeof styleObject.LegendURL === 'object'\n        ? [styleObject.LegendURL]\n        : []\n      ).map((legendUrl) => legendUrl.OnlineResource)\n    )\n    .flat(1)\n\n/**\n * @param capabilities - capabilities from ol/format/WMSCapabilities\n * @param name - name of the layer to find title for\n * @returns title, or empty string if not found\n */\nexport const findLayerTitleInCapabilitiesByName = (\n  capabilities,\n  name: string\n): string => {\n  const layer = deepLayerFind(capabilities.Capability.Layer, name)\n  return layer?.Title || ''\n}\n\n/**\n * @param capabilities - capabilities from ol/format/WMSCapabilities\n * @param name - name of the layer to find legendURL for\n * @returns legend URL as string, or empty string if not found\n */\nexport const findLegendUrlInCapabilitiesByName = (\n  capabilities,\n  name: string\n): string => {\n  const layer = deepLayerFind(capabilities.Capability.Layer, name)\n  const style = layer?.Style\n  if (!style) {\n    return ''\n  }\n  const urls: string[] = getAllLegendURLs(style)\n  // NOTE: choosing URL is more complex when supporting layer styles\n  return urls[0] || ''\n}\n","import { LayerConfigurationOptionLayers } from '@polar/lib-custom-types'\nimport {\n  findLayerTitleInCapabilitiesByName,\n  findLegendUrlInCapabilitiesByName,\n} from './findInCapabilities'\n\nexport const getOpenedOptionsServiceLayers = (\n  technicalLayerNames: string[],\n  layers: LayerConfigurationOptionLayers,\n  wmsCapabilitiesJson: object\n) =>\n  technicalLayerNames.map((technicalLayerName) => ({\n    layerName: technicalLayerName,\n    displayName:\n      (layers.title === true\n        ? findLayerTitleInCapabilitiesByName(\n            wmsCapabilitiesJson,\n            technicalLayerName\n          )\n        : layers.title === false\n        ? technicalLayerName\n        : layers.title?.[technicalLayerName]) || technicalLayerName,\n    layerImage:\n      layers.legend === false\n        ? null\n        : layers.legend === true\n        ? findLegendUrlInCapabilitiesByName(\n            wmsCapabilitiesJson,\n            technicalLayerName\n          )\n        : layers.legend?.[technicalLayerName] || null,\n  }))\n","import { LayerConfiguration } from '@polar/lib-custom-types'\n\nexport const isLayerIdIncluded = (layers: LayerConfiguration[], id: string) =>\n  layers.findIndex((available) => available.id === id) === -1\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport {\n  LayerConfigurationOptionLayers,\n  PolarModule,\n} from '@polar/lib-custom-types'\nimport { rawLayerList } from '@masterportal/masterportalapi'\nimport { ImageWMS, TileWMS } from 'ol/source'\nimport Layer from 'ol/layer/Layer'\nimport { LayerChooserGetters, LayerChooserState } from '../types'\nimport { asIdList, areLayersActive } from '../utils/layerFolding'\nimport { getBackgroundsAndMasks } from '../utils/getBackgroundsAndMasks'\nimport { getOpenedOptionsServiceLayers } from '../utils/getOpenedOptionsServiceLayers'\nimport { isLayerIdIncluded } from '../utils/isLayerIdIncluded'\n\nexport const getInitialState = (): LayerChooserState => ({\n  openedOptions: null,\n  backgrounds: [],\n  masks: [],\n  availableBackgrounds: [],\n  availableMasks: [],\n  activeBackgroundId: '',\n  activeMaskIds: [],\n  activeLayerIds: {},\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<LayerChooserState, LayerChooserGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({\n        state,\n        rootGetters: { configuration, map },\n        commit,\n        dispatch,\n      }): void {\n        const [backgrounds, masks] = getBackgroundsAndMasks(configuration)\n\n        // at most one background, arbitrarily many masks\n        const activeBackground = backgrounds.find(\n          ({ visibility }) => visibility\n        )\n        const activeMasks = masks.filter(({ visibility }) => visibility)\n\n        commit('setBackgrounds', backgrounds)\n        commit('setMasks', masks)\n        dispatch('setActiveBackgroundId', activeBackground?.id || null)\n        dispatch('setActiveMaskIds', asIdList(activeMasks))\n\n        dispatch('updateActiveAndAvailableLayersByZoom')\n        map.on('moveend', () =>\n          dispatch('updateActiveAndAvailableLayersByZoom')\n        )\n\n        configuration.layers.forEach((layer) => {\n          const rawLayer = rawLayerList.getLayerWhere({\n            id: layer.id,\n          })\n\n          // Store preparation needed when `layers` is an option\n          if (layer.options?.layers) {\n            commit('setActiveLayerIds', {\n              ...state.activeLayerIds,\n              [layer.id]: rawLayer.layers.split(','),\n            })\n          }\n          // GetCapabilities exactly needed when `true` set for an inferrable option\n          if (\n            typeof layer.options?.layers === 'object' &&\n            (layer.options.layers?.title === true ||\n              layer.options.layers?.legend === true)\n          ) {\n            dispatch('capabilities/loadCapabilities', layer.id, { root: true })\n          }\n        })\n      },\n      setActiveBackgroundId(\n        { rootGetters: { map }, getters: { backgrounds }, commit },\n        id\n      ) {\n        map\n          .getLayers()\n          .getArray()\n          .forEach((layer) => {\n            // only influence visibility if layer is managed as background\n            if (backgrounds.find(({ id }) => id === layer.get('id'))) {\n              layer.setVisible(layer.get('id') === id)\n            }\n          })\n        commit('setActiveBackgroundId', id)\n      },\n      setActiveMaskIdsVisibility(\n        { rootGetters: { map }, getters: { masks } },\n        ids\n      ) {\n        map\n          .getLayers()\n          .getArray()\n          .forEach((layer) => {\n            // only influence visibility if layer is managed as background\n            if (masks.find(({ id }) => id === layer.get('id'))) {\n              layer.setVisible(ids.includes(layer.get('id')))\n            }\n          })\n      },\n      setActiveMaskIds({ commit, dispatch }, ids) {\n        dispatch('setActiveMaskIdsVisibility', ids)\n        commit('setActiveMaskIds', ids)\n      },\n      // when the zoom changes, it does what needs to be done\n      updateActiveAndAvailableLayersByZoom({\n        rootGetters: { map },\n        getters: { backgrounds, masks, activeBackgroundId, activeMaskIds },\n        commit,\n        dispatch,\n      }) {\n        // NOTE: It is assumed that getZoom actually returns the currentZoomLevel, thus the view has a constraint in the resolution.\n        const currentZoomLevel = map.getView().getZoom() as number\n\n        const availableBackgrounds = areLayersActive(\n          backgrounds,\n          currentZoomLevel\n        )\n        const availableMasks = areLayersActive(masks, currentZoomLevel)\n\n        const availableBackgroundIds = asIdList(availableBackgrounds)\n        const availableMaskIds = asIdList(availableMasks)\n\n        // if the background map is no longer available, switch to first-best or none\n        if (!availableBackgroundIds.includes(activeBackgroundId)) {\n          dispatch('setActiveBackgroundId', availableBackgroundIds[0] || '')\n        }\n\n        // update mask layer visibility, but don't toggle on/off – we still keep active layers active even when currently not available, so after zooming back they snap right back in\n        dispatch(\n          'setActiveMaskIdsVisibility',\n          availableMaskIds.filter((id) => activeMaskIds.includes(id as string))\n        )\n\n        // commits as a final step to not override source information during work\n        commit('setAvailableBackgrounds', availableBackgrounds)\n        commit('setAvailableMasks', availableMasks)\n      },\n      toggleOpenedOptionsServiceLayer(\n        {\n          commit,\n          rootGetters,\n          getters: {\n            openedOptionsService,\n            openedOptionsServiceLayers,\n            activeLayerIds,\n          },\n        },\n        value\n      ) {\n        // keep configured layer order - vuetify puts last activated last\n        const sortedValue =\n          openedOptionsServiceLayers === null\n            ? value\n            : openedOptionsServiceLayers\n                .filter(({ layerName }) => value.includes(layerName))\n                .map(({ layerName }) => layerName)\n                .reverse()\n        const olLayer = rootGetters.map\n          .getLayers()\n          .getArray()\n          .find((l) => l.get('id') === openedOptionsService.id) as Layer<\n          ImageWMS | TileWMS\n        >\n        const olSource = olLayer?.getSource?.()\n\n        if (!olLayer || !olSource) {\n          console.error(\n            `@polar/plugin-layer-chooser: Action 'toggleOpenedOptionsServiceLayer' failed on ${openedOptionsService.id} with value ${sortedValue}. Layer not found in OL, or source not initialized in OL.`\n          )\n          return\n        }\n\n        const updatedParams = { ...olSource.getParams(), LAYERS: sortedValue }\n\n        olSource.updateParams(updatedParams)\n        commit('setActiveLayerIds', {\n          ...activeLayerIds,\n          [openedOptionsService.id]: sortedValue,\n        })\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      component: (_, __, ___, rootGetters) =>\n        rootGetters.configuration.layerChooser?.component\n          ? rootGetters.configuration.layerChooser.component\n          : null,\n      disabledBackgrounds(_, { availableBackgrounds, backgrounds }) {\n        return backgrounds.reduce(\n          (acc, { id }) => ({\n            ...acc,\n            [id]: isLayerIdIncluded(availableBackgrounds, id),\n          }),\n          {}\n        )\n      },\n      disabledMasks(_, { availableMasks, masks }) {\n        return masks\n          .filter(({ hideInMenu }) => !hideInMenu)\n          .reduce(\n            (acc, { id }) => ({\n              ...acc,\n              [id]: isLayerIdIncluded(availableMasks, id),\n            }),\n            {}\n          )\n      },\n      displayOptionsForType: (_, { masksSeparatedByType, openedOptions }) =>\n        Object.entries(masksSeparatedByType).reduce(\n          (acc, [type, masks]) => ({\n            ...acc,\n            [type]:\n              openedOptions !== null &&\n              masks.map(({ id }) => id).includes(openedOptions),\n          }),\n          {}\n        ),\n      idsWithOptions(_, { backgrounds, masks }) {\n        return [...backgrounds, ...masks]\n          .filter((layer) => Boolean(layer.options))\n          .map((layer) => layer.id)\n      },\n      masksSeparatedByType: (_, { shownMasks }) =>\n        shownMasks.reduce((acc, mask) => {\n          if (Object.keys(acc).includes(mask.type)) {\n            return { ...acc, [mask.type]: [...acc[mask.type], mask] }\n          }\n          return { ...acc, [mask.type]: [mask] }\n        }, {}),\n      openedOptionsService(_, { backgrounds, masks, openedOptions }) {\n        return [...backgrounds, ...masks].find(\n          (service) => service.id === openedOptions\n        )\n      },\n      openedOptionsServiceLayers(_, { openedOptionsService }, __, rootGetters) {\n        const layers: LayerConfigurationOptionLayers | undefined =\n          openedOptionsService?.options?.layers\n\n        if (typeof layers === 'undefined') {\n          return null\n        }\n\n        const serviceDefinition = rawLayerList.getLayerWhere({\n          id: openedOptionsService.id,\n        })\n\n        if (!serviceDefinition.layers) {\n          console.error(\n            '@polar/plugin-layer-chooser: Trying to configure layers of a layer without \"layers\" field.',\n            serviceDefinition\n          )\n          return null\n        }\n\n        const wmsCapabilitiesJson = rootGetters?.[\n          'capabilities/wmsCapabilitiesAsJsonById'\n        ](openedOptionsService.id)\n\n        if (wmsCapabilitiesJson === null) {\n          console.error(\n            `@polar/plugin-layer-chooser: CapabilitiesJson for layer ${JSON.stringify(\n              openedOptionsService\n            )} is null.`\n          )\n          return null\n        }\n\n        return getOpenedOptionsServiceLayers(\n          layers.order?.split?.(',') || serviceDefinition.layers.split(','),\n          layers,\n          wmsCapabilitiesJson\n        )\n      },\n      shownMasks({ masks }) {\n        return masks.filter(({ hideInMenu }) => !hideInMenu)\n      },\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { LayerChooserConfiguration } from '@polar/lib-custom-types'\nimport { LayerChooser } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nimport { type DisabledLayers } from './types'\nimport LayerChooserLayerWrapper from './components/LayerWrapper.vue'\nimport LayerChooserOptions from './components/Options.vue'\n\nexport { type DisabledLayers, LayerChooserLayerWrapper, LayerChooserOptions }\n\nexport default (options: LayerChooserConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'layerChooser',\n    plugin: LayerChooser,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <div class=\"polar-plugin-legend-wrapper\">\n    <div class=\"mr-2\">\n      <v-scroll-x-reverse-transition>\n        <v-card\n          v-show=\"isOpen\"\n          class=\"mx-auto pa-2\"\n          dense\n          filled\n          color=\"#ffffffdd\"\n        >\n          <v-card-title>{{ $t('plugins.legend.title') }}</v-card-title>\n          <v-card-text v-if=\"legends.length === 0\">\n            {{ $t('plugins.legend.empty') }}\n          </v-card-text>\n          <div class=\"polar-scroll-box\" role=\"list\" :style=\"maxHeight\">\n            <template v-for=\"({ legendUrl, name }, index) in legends\">\n              <div :key=\"'polar-legend-image-item-' + index\" role=\"listitem\">\n                <div class=\"text-body-1\">{{ $t(name) }}</div>\n                <a\n                  class=\"text-body-2\"\n                  :href=\"legendUrl\"\n                  :aria-label=\"$t('plugins.legend.openLegendTo', { name })\"\n                  target=\"_blank\"\n                >\n                  <v-img\n                    contain\n                    :max-width=\"250\"\n                    :src=\"legendUrl\"\n                    :alt=\"$t('plugins.legend.legendTo', { name })\"\n                    :title=\"$t('plugins.legend.openLegendTo', { name })\"\n                  />\n                </a>\n              </div>\n            </template>\n          </div>\n        </v-card>\n      </v-scroll-x-reverse-transition>\n    </div>\n    <v-btn\n      class=\"buttonSecondary\"\n      x-small\n      fab\n      color=\"secondary\"\n      :title=\"$t(`plugins.legend.button.${isOpen ? 'close' : 'open'}Title`)\"\n      @click=\"toggleMapLegend\"\n    >\n      <v-icon color=\"secondaryContrast\">{{ mapLegendIcon }}</v-icon>\n    </v-btn>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport * as masterportalapi from '@masterportal/masterportalapi'\n\nexport default Vue.extend({\n  name: 'LegendPlugin',\n  data: () => ({\n    isOpen: false,\n  }),\n  computed: {\n    ...mapGetters(['clientHeight', 'configuration', 'hasSmallHeight']),\n    mapLegendIcon() {\n      const icons = this.configuration.legend?.icons\n      if (!this.isOpen) {\n        return icons?.open ?? `fa-info`\n      }\n      return icons?.close ?? `fa-chevron-right`\n    },\n    maxHeight(): string {\n      return `\n        max-height: ${this.hasSmallHeight ? this.clientHeight * 0.5 : 300}px;\n      `\n    },\n    legends() {\n      // TODO: 'layers' should always be defined as MapConfig dictates\n      return this.configuration?.layers\n        ?.map(({ id, name }) => ({ id, name }))\n        .map((layer) => ({\n          ...layer,\n          rawLayer: masterportalapi.rawLayerList.getLayerWhere({\n            id: layer.id,\n          }),\n        }))\n        .map((layer) => {\n          if (layer.rawLayer === null) {\n            // skip undefined layers\n            console.warn(`@polar/plugin-legend: Unknown layer.`, layer)\n            return {}\n          }\n          return {\n            ...layer,\n            legendUrl: masterportalapi.layerLib.getLegendURLs(\n              layer.rawLayer\n            )[0],\n          }\n        })\n        .filter((layer) => layer.name && layer.legendUrl)\n    },\n  },\n  methods: {\n    toggleMapLegend() {\n      this.isOpen = !this.isOpen\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-plugin-legend-wrapper {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  align-items: end;\n  padding: 6px;\n}\n\n.polar-scroll-box {\n  overflow-y: scroll;\n}\n.buttonSecondary.v-btn:hover {\n  border: solid var(--polar-secondary-contrast) !important;\n  outline: solid var(--polar-secondary);\n  outline-offset: 1px;\n}\n.buttonSecondary.v-btn:focus {\n  border: solid var(--polar-secondary-contrast) !important;\n  outline: solid var(--polar-secondary);\n  outline-offset: 1px;\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    legend: {\n      title: 'Legenden',\n      legendTo: 'Legendenbild zu \"{{name}}\"',\n      openLegendTo: '$t(plugins.legend.legendTo) öffnen',\n      empty: 'Keine Legende konfiguriert',\n      button: {\n        closeTitle: 'Legenden ausblenden',\n        openTitle: 'Legenden einblenden',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    legend: {\n      title: 'Legends',\n      legendTo: '\"{{name}}\" legend image',\n      openLegendTo: 'Open $t(plugins.legend.legendTo)',\n      empty: 'No legend configured',\n      button: {\n        closeTitle: 'Hide legends',\n        openTitle: 'Show legends',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import Vue from 'vue'\nimport { LegendConfiguration } from '@polar/lib-custom-types'\n\nimport { Legend } from './components'\nimport locales from './locales'\n\nexport default (options: LegendConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'legend',\n    plugin: Legend,\n    locales,\n    options,\n  })\n","<template>\n  <div class=\"lds-roller\">\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  name: 'RollerLoader',\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.lds-roller {\n  color: var(--polar-primary);\n}\n.lds-roller,\n.lds-roller div,\n.lds-roller div:after {\n  box-sizing: border-box;\n}\n.lds-roller {\n  display: inline-block;\n  position: relative;\n  width: 80px;\n  height: 80px;\n}\n.lds-roller div {\n  animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n  transform-origin: 40px 40px;\n}\n.lds-roller div:after {\n  content: ' ';\n  display: block;\n  position: absolute;\n  width: 7.2px;\n  height: 7.2px;\n  border-radius: 50%;\n  background: currentColor;\n  margin: -3.6px 0 0 -3.6px;\n}\n.lds-roller div:nth-child(1) {\n  animation-delay: -0.036s;\n}\n.lds-roller div:nth-child(1):after {\n  top: 62.62742px;\n  left: 62.62742px;\n}\n.lds-roller div:nth-child(2) {\n  animation-delay: -0.072s;\n}\n.lds-roller div:nth-child(2):after {\n  top: 67.71281px;\n  left: 56px;\n}\n.lds-roller div:nth-child(3) {\n  animation-delay: -0.108s;\n}\n.lds-roller div:nth-child(3):after {\n  top: 70.90963px;\n  left: 48.28221px;\n}\n.lds-roller div:nth-child(4) {\n  animation-delay: -0.144s;\n}\n.lds-roller div:nth-child(4):after {\n  top: 72px;\n  left: 40px;\n}\n.lds-roller div:nth-child(5) {\n  animation-delay: -0.18s;\n}\n.lds-roller div:nth-child(5):after {\n  top: 70.90963px;\n  left: 31.71779px;\n}\n.lds-roller div:nth-child(6) {\n  animation-delay: -0.216s;\n}\n.lds-roller div:nth-child(6):after {\n  top: 67.71281px;\n  left: 24px;\n}\n.lds-roller div:nth-child(7) {\n  animation-delay: -0.252s;\n}\n.lds-roller div:nth-child(7):after {\n  top: 62.62742px;\n  left: 17.37258px;\n}\n.lds-roller div:nth-child(8) {\n  animation-delay: -0.288s;\n}\n.lds-roller div:nth-child(8):after {\n  top: 56px;\n  left: 12.28719px;\n}\n@keyframes lds-roller {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n</style>\n","<template>\n  <div class=\"lds-circle\"><div></div></div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  name: 'CircleLoader',\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.lds-circle {\n  color: var(--polar-primary);\n}\n.lds-circle,\n.lds-circle div {\n  box-sizing: border-box;\n}\n.lds-circle {\n  display: inline-block;\n  transform: translateZ(1px);\n}\n.lds-circle > div {\n  display: inline-block;\n  width: 64px;\n  height: 64px;\n  margin: 8px;\n  background: currentColor;\n  border-radius: 50%;\n  animation: lds-circle 2.4s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n@keyframes lds-circle {\n  0%,\n  100% {\n    animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5);\n  }\n  0% {\n    transform: rotateY(0deg);\n  }\n  50% {\n    transform: rotateY(1800deg);\n    animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1);\n  }\n  100% {\n    transform: rotateY(3600deg);\n  }\n}\n</style>\n","<template>\n  <div class=\"lds-spinner\">\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  name: 'SpinnerLoader',\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.lds-spinner {\n  color: var(--polar-primary);\n}\n.lds-spinner,\n.lds-spinner div,\n.lds-spinner div:after {\n  box-sizing: border-box;\n}\n.lds-spinner {\n  color: currentColor;\n  display: inline-block;\n  position: relative;\n  width: 80px;\n  height: 80px;\n}\n.lds-spinner div {\n  transform-origin: 40px 40px;\n  animation: lds-spinner 1.2s linear infinite;\n}\n.lds-spinner div:after {\n  content: ' ';\n  display: block;\n  position: absolute;\n  top: 3.2px;\n  left: 36.8px;\n  width: 6.4px;\n  height: 17.6px;\n  border-radius: 20%;\n  background: currentColor;\n}\n.lds-spinner div:nth-child(1) {\n  transform: rotate(0deg);\n  animation-delay: -1.1s;\n}\n.lds-spinner div:nth-child(2) {\n  transform: rotate(30deg);\n  animation-delay: -1s;\n}\n.lds-spinner div:nth-child(3) {\n  transform: rotate(60deg);\n  animation-delay: -0.9s;\n}\n.lds-spinner div:nth-child(4) {\n  transform: rotate(90deg);\n  animation-delay: -0.8s;\n}\n.lds-spinner div:nth-child(5) {\n  transform: rotate(120deg);\n  animation-delay: -0.7s;\n}\n.lds-spinner div:nth-child(6) {\n  transform: rotate(150deg);\n  animation-delay: -0.6s;\n}\n.lds-spinner div:nth-child(7) {\n  transform: rotate(180deg);\n  animation-delay: -0.5s;\n}\n.lds-spinner div:nth-child(8) {\n  transform: rotate(210deg);\n  animation-delay: -0.4s;\n}\n.lds-spinner div:nth-child(9) {\n  transform: rotate(240deg);\n  animation-delay: -0.3s;\n}\n.lds-spinner div:nth-child(10) {\n  transform: rotate(270deg);\n  animation-delay: -0.2s;\n}\n.lds-spinner div:nth-child(11) {\n  transform: rotate(300deg);\n  animation-delay: -0.1s;\n}\n.lds-spinner div:nth-child(12) {\n  transform: rotate(330deg);\n  animation-delay: 0s;\n}\n@keyframes lds-spinner {\n  0% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0;\n  }\n}\n</style>\n","<template>\n  <div class=\"lds-ring\">\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\nexport default Vue.extend({\n  name: 'RingLoader',\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.lds-ring {\n  /* change color here */\n  color: var(--polar-primary);\n}\n.lds-ring,\n.lds-ring div {\n  box-sizing: border-box;\n}\n.lds-ring {\n  display: inline-block;\n  position: relative;\n  width: 80px;\n  height: 80px;\n}\n.lds-ring div {\n  box-sizing: border-box;\n  display: block;\n  position: absolute;\n  width: 64px;\n  height: 64px;\n  margin: 8px;\n  border: 8px solid currentColor;\n  border-radius: 50%;\n  animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n  border-color: currentColor transparent transparent transparent;\n}\n.lds-ring div:nth-child(1) {\n  animation-delay: -0.45s;\n}\n.lds-ring div:nth-child(2) {\n  animation-delay: -0.3s;\n}\n.lds-ring div:nth-child(3) {\n  animation-delay: -0.15s;\n}\n@keyframes lds-ring {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n</style>\n","<template>\n  <div class=\"lds-default\">\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n    <div></div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\n\n/**\n * This loader is the lds-default loader from https://loading.io/css/.\n * It was renamed to BasicLoader to avoid confusion with the default loader.\n */\n\nexport default Vue.extend({\n  name: 'BasicLoader',\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.lds-default {\n  /* change color here */\n  color: var(--polar-primary);\n}\n.lds-default,\n.lds-default div {\n  box-sizing: border-box;\n}\n.lds-default {\n  display: inline-block;\n  position: relative;\n  width: 80px;\n  height: 80px;\n}\n.lds-default div {\n  position: absolute;\n  width: 6.4px;\n  height: 6.4px;\n  background: currentColor;\n  border-radius: 50%;\n  animation: lds-default 1.2s linear infinite;\n}\n.lds-default div:nth-child(1) {\n  animation-delay: 0s;\n  top: 36.8px;\n  left: 66.24px;\n}\n.lds-default div:nth-child(2) {\n  animation-delay: -0.1s;\n  top: 22.08px;\n  left: 62.29579px;\n}\n.lds-default div:nth-child(3) {\n  animation-delay: -0.2s;\n  top: 11.30421px;\n  left: 51.52px;\n}\n.lds-default div:nth-child(4) {\n  animation-delay: -0.3s;\n  top: 7.36px;\n  left: 36.8px;\n}\n.lds-default div:nth-child(5) {\n  animation-delay: -0.4s;\n  top: 11.30421px;\n  left: 22.08px;\n}\n.lds-default div:nth-child(6) {\n  animation-delay: -0.5s;\n  top: 22.08px;\n  left: 11.30421px;\n}\n.lds-default div:nth-child(7) {\n  animation-delay: -0.6s;\n  top: 36.8px;\n  left: 7.36px;\n}\n.lds-default div:nth-child(8) {\n  animation-delay: -0.7s;\n  top: 51.52px;\n  left: 11.30421px;\n}\n.lds-default div:nth-child(9) {\n  animation-delay: -0.8s;\n  top: 62.29579px;\n  left: 22.08px;\n}\n.lds-default div:nth-child(10) {\n  animation-delay: -0.9s;\n  top: 66.24px;\n  left: 36.8px;\n}\n.lds-default div:nth-child(11) {\n  animation-delay: -1s;\n  top: 62.29579px;\n  left: 51.52px;\n}\n.lds-default div:nth-child(12) {\n  animation-delay: -1.1s;\n  top: 51.52px;\n  left: 62.29579px;\n}\n@keyframes lds-default {\n  0%,\n  20%,\n  80%,\n  100% {\n    transform: scale(1);\n  }\n  50% {\n    transform: scale(1.5);\n  }\n}\n</style>\n","<template>\n  <div v-if=\"showLoader\">\n    <v-card>\n      <v-card-text>\n        <v-container>\n          <v-row justify=\"center\">\n            {{ $t('plugins.loadingIndicator.loading') }}\n          </v-row>\n          <v-row v-if=\"loaderStyle !== 'none'\">\n            <component\n              :is=\"loaderStyle\"\n              indeterminate\n              color=\"primary\"\n              class=\"mb-0\"\n            />\n          </v-row>\n        </v-container>\n      </v-card-text>\n    </v-card>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport RollerLoader from './loaderStyles/Roller.vue'\nimport CircleLoader from './loaderStyles/Circle.vue'\nimport SpinnerLoader from './loaderStyles/Spinner.vue'\nimport RingLoader from './loaderStyles/Ring.vue'\nimport BasicLoader from './loaderStyles/Basic.vue'\n\nexport default Vue.extend({\n  name: 'LoadingIndicator',\n  components: {\n    RollerLoader,\n    CircleLoader,\n    SpinnerLoader,\n    RingLoader,\n    BasicLoader,\n  },\n  computed: {\n    ...mapGetters('plugin/loadingIndicator', ['showLoader', 'loaderStyle']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    loadingIndicator: {\n      loading: 'Lädt...',\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    loadingIndicator: {\n      loading: 'Loading...',\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import { LoadingIndicatorState } from '../types'\n\nexport const getInitialState = (): LoadingIndicatorState => ({\n  loadKeys: new Set(),\n  loaderStyle: 'v-progress-linear',\n})\n","import { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport { PolarGetterTree } from '@polar/lib-custom-types'\nimport { LoadingIndicatorGetters, LoadingIndicatorState } from '../types'\nimport { getInitialState } from './state'\n\nconst getters: PolarGetterTree<LoadingIndicatorState, LoadingIndicatorGetters> =\n  {\n    ...generateSimpleGetters(getInitialState()),\n    showLoader: ({ loadKeys }) => loadKeys.size > 0,\n  }\n\nexport default getters\n","import { generateSimpleMutations } from '@repositoryname/vuex-generators'\nimport { LoaderStyles } from '@polar/lib-custom-types'\nimport { LoadingIndicatorMutations } from '../types'\nimport { getInitialState } from './state'\nconst styles = [\n  'CircleLoader',\n  'BasicLoader',\n  'none',\n  'RingLoader',\n  'RollerLoader',\n  'SpinnerLoader',\n  'v-progress-linear',\n]\n\nconst mutations: LoadingIndicatorMutations = {\n  ...generateSimpleMutations(getInitialState()),\n  setLoaderStyle(state, style?: LoaderStyles) {\n    if (style) {\n      if (styles.includes(style)) {\n        state.loaderStyle = style\n      } else {\n        console.error(\n          `@polar/plugin-loading-indicator: loader style ${style} does not exist. Falling back to default.`\n        )\n      }\n    }\n  },\n  addLoadingKey(state, key: string) {\n    state.loadKeys = new Set([...state.loadKeys, key])\n  },\n  removeLoadingKey(state, key: string) {\n    const loadKeys = new Set(state.loadKeys)\n    loadKeys.delete(key)\n    state.loadKeys = loadKeys\n  },\n}\n\nexport default mutations\n","// NOTE: The reassignments in the mutations are needed as calling 'add'\n//  or 'delete' on the Set does not change the object itself so the getter does\n//  not register any changes.\n\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { LoadingIndicatorGetters, LoadingIndicatorState } from '../types'\nimport getters from './getters'\nimport { getInitialState } from './state'\nimport mutations from './mutations'\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<\n    LoadingIndicatorState,\n    LoadingIndicatorGetters\n  > = {\n    namespaced: true,\n    state: getInitialState(),\n    mutations,\n    getters,\n    actions: {\n      setupModule({ rootGetters, commit }) {\n        commit(\n          'setLoaderStyle',\n          (rootGetters.configuration.loadingIndicator || {}).loaderStyle\n        )\n      },\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { PluginOptions } from '@polar/lib-custom-types'\nimport { LoadingIndicator } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport default (options: PluginOptions) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'loadingIndicator',\n    plugin: LoadingIndicator,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { transform } from 'ol/proj'\nimport { getCenter } from 'ol/extent'\n\nimport {\n  Circle,\n  LinearRing,\n  LineString,\n  MultiLineString,\n  MultiPoint,\n  MultiPolygon,\n  Point,\n  Polygon,\n} from 'ol/geom'\n\nconst geoms = {\n  Circle,\n  LinearRing,\n  LineString,\n  MultiLineString,\n  MultiPoint,\n  MultiPolygon,\n  Point,\n  Polygon,\n}\n\nexport default function (\n  sourceEpsg,\n  targetEpsg,\n  geometryType,\n  geometryCoordinates\n) {\n  const Type = geoms[geometryType || 'Point']\n  const instance = new Type(geometryCoordinates)\n  let pointCoordinate = getCenter(instance.getExtent())\n\n  // return random point if bbox center is not in shape\n  if (\n    (geometryType === 'Polygon' || geometryType === 'MultiPolygon') &&\n    !instance.intersectsCoordinate(pointCoordinate)\n  ) {\n    pointCoordinate =\n      geometryType === 'Polygon'\n        ? instance.getInteriorPoint().getFirstCoordinate()\n        : instance.getInteriorPoints().getFirstCoordinate()\n  }\n\n  return sourceEpsg === targetEpsg\n    ? pointCoordinate\n    : transform(pointCoordinate, sourceEpsg, targetEpsg)\n}\n","/*\n * Uses SVG of icon \"Location On\" from Material Icons:\n * @material-design-icons/svg/filled/location_on.svg, version 0.14.13\n * https://github.com/google/material-design-icons\n * Copyright Google. Licensed under Apache License 2.0.\n * License supplied at end of file.\n * There is no NOTICE file.\n */\n\n/* this is the content of the original file; usage of adapted parts below\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5z\"/></svg>\n*/\n\nexport const getPinSvg = ({ fill = '#005CA9', stroke = '#FFF' }) => `\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"24\"\n    height=\"24\"\n    viewBox=\"-1 -1 25 25\"\n  >\n    <path\n      d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5z\"\n      fill=\"${fill}\"\n      stroke=\"${stroke}\"\n      stroke-width=\"1\"\n    />\n  </svg>\n`\n\n/*\n\n                                Apache License\n                          Version 2.0, January 2004\n                      http://www.apache.org/licenses/\n\n  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n  1. Definitions.\n\n    \"License\" shall mean the terms and conditions for use, reproduction,\n    and distribution as defined by Sections 1 through 9 of this document.\n\n    \"Licensor\" shall mean the copyright owner or entity authorized by\n    the copyright owner that is granting the License.\n\n    \"Legal Entity\" shall mean the union of the acting entity and all\n    other entities that control, are controlled by, or are under common\n    control with that entity. For the purposes of this definition,\n    \"control\" means (i) the power, direct or indirect, to cause the\n    direction or management of such entity, whether by contract or\n    otherwise, or (ii) ownership of fifty percent (50%) or more of the\n    outstanding shares, or (iii) beneficial ownership of such entity.\n\n    \"You\" (or \"Your\") shall mean an individual or Legal Entity\n    exercising permissions granted by this License.\n\n    \"Source\" form shall mean the preferred form for making modifications,\n    including but not limited to software source code, documentation\n    source, and configuration files.\n\n    \"Object\" form shall mean any form resulting from mechanical\n    transformation or translation of a Source form, including but\n    not limited to compiled object code, generated documentation,\n    and conversions to other media types.\n\n    \"Work\" shall mean the work of authorship, whether in Source or\n    Object form, made available under the License, as indicated by a\n    copyright notice that is included in or attached to the work\n    (an example is provided in the Appendix below).\n\n    \"Derivative Works\" shall mean any work, whether in Source or Object\n    form, that is based on (or derived from) the Work and for which the\n    editorial revisions, annotations, elaborations, or other modifications\n    represent, as a whole, an original work of authorship. For the purposes\n    of this License, Derivative Works shall not include works that remain\n    separable from, or merely link (or bind by name) to the interfaces of,\n    the Work and Derivative Works thereof.\n\n    \"Contribution\" shall mean any work of authorship, including\n    the original version of the Work and any modifications or additions\n    to that Work or Derivative Works thereof, that is intentionally\n    submitted to Licensor for inclusion in the Work by the copyright owner\n    or by an individual or Legal Entity authorized to submit on behalf of\n    the copyright owner. For the purposes of this definition, \"submitted\"\n    means any form of electronic, verbal, or written communication sent\n    to the Licensor or its representatives, including but not limited to\n    communication on electronic mailing lists, source code control systems,\n    and issue tracking systems that are managed by, or on behalf of, the\n    Licensor for the purpose of discussing and improving the Work, but\n    excluding communication that is conspicuously marked or otherwise\n    designated in writing by the copyright owner as \"Not a Contribution.\"\n\n    \"Contributor\" shall mean Licensor and any individual or Legal Entity\n    on behalf of whom a Contribution has been received by Licensor and\n    subsequently incorporated within the Work.\n\n  2. Grant of Copyright License. Subject to the terms and conditions of\n    this License, each Contributor hereby grants to You a perpetual,\n    worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n    copyright license to reproduce, prepare Derivative Works of,\n    publicly display, publicly perform, sublicense, and distribute the\n    Work and such Derivative Works in Source or Object form.\n\n  3. Grant of Patent License. Subject to the terms and conditions of\n    this License, each Contributor hereby grants to You a perpetual,\n    worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n    (except as stated in this section) patent license to make, have made,\n    use, offer to sell, sell, import, and otherwise transfer the Work,\n    where such license applies only to those patent claims licensable\n    by such Contributor that are necessarily infringed by their\n    Contribution(s) alone or by combination of their Contribution(s)\n    with the Work to which such Contribution(s) was submitted. If You\n    institute patent litigation against any entity (including a\n    cross-claim or counterclaim in a lawsuit) alleging that the Work\n    or a Contribution incorporated within the Work constitutes direct\n    or contributory patent infringement, then any patent licenses\n    granted to You under this License for that Work shall terminate\n    as of the date such litigation is filed.\n\n  4. Redistribution. You may reproduce and distribute copies of the\n    Work or Derivative Works thereof in any medium, with or without\n    modifications, and in Source or Object form, provided that You\n    meet the following conditions:\n\n    (a) You must give any other recipients of the Work or\n        Derivative Works a copy of this License; and\n\n    (b) You must cause any modified files to carry prominent notices\n        stating that You changed the files; and\n\n    (c) You must retain, in the Source form of any Derivative Works\n        that You distribute, all copyright, patent, trademark, and\n        attribution notices from the Source form of the Work,\n        excluding those notices that do not pertain to any part of\n        the Derivative Works; and\n\n    (d) If the Work includes a \"NOTICE\" text file as part of its\n        distribution, then any Derivative Works that You distribute must\n        include a readable copy of the attribution notices contained\n        within such NOTICE file, excluding those notices that do not\n        pertain to any part of the Derivative Works, in at least one\n        of the following places: within a NOTICE text file distributed\n        as part of the Derivative Works; within the Source form or\n        documentation, if provided along with the Derivative Works; or,\n        within a display generated by the Derivative Works, if and\n        wherever such third-party notices normally appear. The contents\n        of the NOTICE file are for informational purposes only and\n        do not modify the License. You may add Your own attribution\n        notices within Derivative Works that You distribute, alongside\n        or as an addendum to the NOTICE text from the Work, provided\n        that such additional attribution notices cannot be construed\n        as modifying the License.\n\n    You may add Your own copyright statement to Your modifications and\n    may provide additional or different license terms and conditions\n    for use, reproduction, or distribution of Your modifications, or\n    for any such Derivative Works as a whole, provided Your use,\n    reproduction, and distribution of the Work otherwise complies with\n    the conditions stated in this License.\n\n  5. Submission of Contributions. Unless You explicitly state otherwise,\n    any Contribution intentionally submitted for inclusion in the Work\n    by You to the Licensor shall be under the terms and conditions of\n    this License, without any additional terms or conditions.\n    Notwithstanding the above, nothing herein shall supersede or modify\n    the terms of any separate license agreement you may have executed\n    with Licensor regarding such Contributions.\n\n  6. Trademarks. This License does not grant permission to use the trade\n    names, trademarks, service marks, or product names of the Licensor,\n    except as required for reasonable and customary use in describing the\n    origin of the Work and reproducing the content of the NOTICE file.\n\n  7. Disclaimer of Warranty. Unless required by applicable law or\n    agreed to in writing, Licensor provides the Work (and each\n    Contributor provides its Contributions) on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n    implied, including, without limitation, any warranties or conditions\n    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n    PARTICULAR PURPOSE. You are solely responsible for determining the\n    appropriateness of using or redistributing the Work and assume any\n    risks associated with Your exercise of permissions under this License.\n\n  8. Limitation of Liability. In no event and under no legal theory,\n    whether in tort (including negligence), contract, or otherwise,\n    unless required by applicable law (such as deliberate and grossly\n    negligent acts) or agreed to in writing, shall any Contributor be\n    liable to You for damages, including any direct, indirect, special,\n    incidental, or consequential damages of any character arising as a\n    result of this License or out of the use or inability to use the\n    Work (including but not limited to damages for loss of goodwill,\n    work stoppage, computer failure or malfunction, or any and all\n    other commercial damages or losses), even if such Contributor\n    has been advised of the possibility of such damages.\n\n  9. Accepting Warranty or Additional Liability. While redistributing\n    the Work or Derivative Works thereof, You may choose to offer,\n    and charge a fee for, acceptance of support, warranty, indemnity,\n    or other liability obligations and/or rights consistent with this\n    License. However, in accepting such obligations, You may act only\n    on Your own behalf and on Your sole responsibility, not on behalf\n    of any other Contributor, and only if You agree to indemnify,\n    defend, and hold each Contributor harmless for any liability\n    incurred by, or claims asserted against, such Contributor by reason\n    of your accepting any such warranty or additional liability.\n\n  END OF TERMS AND CONDITIONS\n\n  APPENDIX: How to apply the Apache License to your work.\n\n    To apply the Apache License to your work, attach the following\n    boilerplate notice, with the fields enclosed by brackets \"[]\"\n    replaced with your own identifying information. (Don't include\n    the brackets!)  The text should be enclosed in the appropriate\n    comment syntax for the file format. We also recommend that a\n    file or class name and description of purpose be included on the\n    same \"printed page\" as the copyright notice for easier\n    identification within third-party archives.\n\n  Copyright [yyyy] [name of copyright owner]\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n*/\n","import { Style, Icon } from 'ol/style'\nimport { getPinSvg } from './getPinSvg'\n\nexport const getPinStyle = (style) =>\n  new Style({\n    image: new Icon({\n      src: `data:image/svg+xml;base64,${btoa(getPinSvg(style))}`,\n      scale: 2,\n      anchor: [0.5, 1],\n    }),\n  })\n","import { PinsState } from '../types'\n\nexport const getInitialState = (): PinsState => ({\n  transformedCoordinate: [],\n  latLon: [],\n  coordinatesAfterDrag: [],\n  getsDragged: false,\n})\n","import { PolarGetterTree } from '@polar/lib-custom-types'\nimport { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport { PinsGetters, PinsState } from '../types'\nimport { getInitialState } from './state'\n\nconst getters: PolarGetterTree<PinsState, PinsGetters> = {\n  ...generateSimpleGetters(getInitialState()),\n  toZoomLevel(_, __, ___, rootGetters) {\n    return (rootGetters.configuration.pins || {}).toZoomLevel || 0\n  },\n  atZoomLevel(_, __, ___, rootGetters) {\n    return (\n      (rootGetters.configuration.pins || {}).appearOnClick?.atZoomLevel || 0\n    )\n  },\n}\n\nexport default getters\n","import { generateSimpleMutations } from '@repositoryname/vuex-generators'\nimport { passesBoundaryCheck } from '@polar/lib-passes-boundary-check'\nimport VectorLayer from 'ol/layer/Vector'\nimport Point from 'ol/geom/Point'\nimport { Vector } from 'ol/source'\nimport Feature from 'ol/Feature'\nimport { Draw, Modify, Select, Translate } from 'ol/interaction'\nimport { PinsConfiguration, PolarModule } from '@polar/lib-custom-types'\nimport { toLonLat, transform } from 'ol/proj'\nimport { pointerMove } from 'ol/events/condition'\nimport { Coordinate } from 'ol/coordinate'\nimport { PinsState, PinsGetters } from '../types'\nimport getPointCoordinate from '../util/getPointCoordinate'\nimport { getPinStyle } from '../util/getPinStyle'\nimport { getInitialState } from './state'\nimport getters from './getters'\n\nexport const makeStoreModule = () => {\n  let pinsLayer: VectorLayer\n  const move = new Select({\n    layers: (l) => l === pinsLayer,\n    style: null,\n    condition: pointerMove,\n  })\n\n  const storeModule: PolarModule<PinsState, PinsGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({ rootGetters, dispatch }): void {\n        dispatch('setupClickInteraction')\n        dispatch('setupCoordinateSource')\n        rootGetters.map.addInteraction(move)\n        move.on('select', ({ selected }) => {\n          const { movable } = rootGetters.configuration.pins || {}\n          if (movable === 'none') {\n            document.body.style.cursor = selected.length ? 'not-allowed' : ''\n          }\n        })\n        dispatch('setupInitial')\n        // without update, map will pan during drag\n        this.watch(\n          () => rootGetters.hasSmallWidth || rootGetters.hasSmallHeight,\n          () => dispatch('updateMarkerDraggability')\n        )\n      },\n      setupClickInteraction({ rootGetters, getters, commit, dispatch }): void {\n        const { appearOnClick, movable } = rootGetters.configuration.pins || {}\n        const interactions = rootGetters.map.getInteractions()\n        const showPin = appearOnClick === undefined ? true : appearOnClick.show\n        rootGetters.map.on('singleclick', async ({ coordinate }) => {\n          const isDrawing = interactions.getArray().some(\n            (interaction) =>\n              (interaction instanceof Draw &&\n                // @ts-expect-error | internal hack to detect it from @polar/plugin-gfi\n                (interaction._isMultiSelect ||\n                  // @ts-expect-error | internal hack to detect it from @polar/plugin-routing\n                  interaction._isRoutingDraw ||\n                  // @ts-expect-error | internal hack to detect it from @polar/plugin-draw\n                  interaction._isDrawPlugin)) ||\n              interaction instanceof Modify ||\n              // @ts-expect-error | internal hack to detect it from @polar/plugin-draw\n              interaction._isDeleteSelect\n          )\n          if (\n            (movable === 'drag' || movable === 'click') &&\n            showPin &&\n            // NOTE: It is assumed that getZoom actually returns the currentZoomLevel, thus the view has a constraint in the resolution.\n            (rootGetters.map.getView().getZoom() as number) >=\n              getters.atZoomLevel &&\n            !isDrawing &&\n            (await dispatch('isCoordinateInBoundaryLayer', coordinate))\n          ) {\n            const payload = { coordinates: coordinate, clicked: true }\n            dispatch('showMarker', payload)\n            commit('setCoordinatesAfterDrag', coordinate)\n            dispatch('updateCoordinates', coordinate)\n          }\n        })\n      },\n      setupCoordinateSource({ rootGetters, dispatch }): void {\n        const { coordinateSource } = rootGetters.configuration.pins || {}\n        if (coordinateSource) {\n          // redo marker if source (e.g. from addressSearch) changes\n          this.watch(\n            () => rootGetters[coordinateSource],\n            (feature) => {\n              // NOTE: 'reverse_geocoded' is set as type on reverse geocoded features to prevent infinite loops\n              // as in: ReverseGeocode->AddressSearch->Pins->ReverseGeocode.\n              if (feature && feature.type !== 'reverse_geocoded') {\n                const payload = {\n                  coordinates: feature.geometry.coordinates,\n                  type: feature.geometry.type,\n                  clicked: false,\n                  epsg: feature.epsg,\n                }\n                dispatch('showMarker', payload)\n              }\n            },\n            { deep: true }\n          )\n        }\n      },\n      setupInitial({ rootGetters, getters, dispatch, commit }): void {\n        const { initial } = rootGetters.configuration.pins as PinsConfiguration\n        if (initial) {\n          const { coordinates, centerOn, epsg } = initial\n          const transformedCoordinates =\n            typeof epsg === 'string'\n              ? transform(coordinates, epsg, rootGetters.configuration.epsg)\n              : coordinates\n          dispatch('showMarker', {\n            coordinates: transformedCoordinates,\n            clicked: true,\n          })\n          commit('setCoordinatesAfterDrag', transformedCoordinates)\n          dispatch('updateCoordinates', transformedCoordinates)\n          if (centerOn) {\n            rootGetters.map.getView().setCenter(getters.transformedCoordinate)\n            rootGetters.map.getView().setZoom(getters.toZoomLevel)\n          }\n        }\n      },\n      /**\n       * Builds a vectorLayer which contains the mapMarker as\n       * a vectorFeature and adds it to the map.\n       * @param payload - an object with a boolean that shows if the coordinate\n       * was submitted via click and the corresponding coordinates.\n       */\n      showMarker({ getters, rootGetters, dispatch }, payload): void {\n        // always clean up other/old markers first – single marker only atm\n        dispatch('removeMarker')\n        const { configuration, map } = rootGetters\n        if (payload.clicked === false) {\n          dispatch(\n            'updateCoordinates',\n            getPointCoordinate(\n              payload.epsg,\n              configuration.epsg,\n              payload.type,\n              payload.coordinates\n            )\n          )\n          map.getView().setCenter(getters.transformedCoordinate)\n          map.getView().setZoom(getters.toZoomLevel)\n        }\n        const coordinatesForIcon =\n          payload.clicked === true\n            ? payload.coordinates\n            : getters.transformedCoordinate\n        map.removeLayer(pinsLayer)\n        pinsLayer = new VectorLayer({\n          source: new Vector({\n            features: [\n              new Feature({\n                geometry: new Point(coordinatesForIcon),\n                type: 'point',\n                name: 'mapMarker',\n                zIndex: 100,\n              }),\n            ],\n          }),\n          style: getPinStyle(configuration?.pins?.style || {}),\n        })\n        pinsLayer.set('polarInternalId', 'mapMarkerVectorLayer')\n        map.addLayer(pinsLayer)\n        pinsLayer.setZIndex(100)\n        dispatch('updateMarkerDraggability')\n      },\n      // Decides whether to make the mapMarker draggable and, if so, does so.\n      updateMarkerDraggability({\n        rootGetters: { map, configuration },\n        getters,\n        commit,\n        dispatch,\n      }): void {\n        const movable = configuration.pins?.movable\n        if (movable !== 'drag') {\n          return\n        }\n        const { atZoomLevel } = getters\n        const previousTranslate = map\n          .getInteractions()\n          .getArray()\n          .find((interaction) => interaction.get('_polar_plugin_pins'))\n        const translate = new Translate({\n          condition: () => (map.getView().getZoom() as number) >= atZoomLevel,\n          layers: [pinsLayer],\n        })\n        translate.set('_polar_plugin_pins', true)\n        if (previousTranslate) {\n          map.removeInteraction(previousTranslate)\n        }\n        map.addInteraction(translate)\n        translate.on('translatestart', () => {\n          commit('setGetsDragged', true)\n        })\n        translate.on('translateend', (evt) => {\n          commit('setGetsDragged', false)\n          evt.features.forEach(async (feat) => {\n            const geometry = feat.getGeometry()\n            // @ts-expect-error | abstract method missing on type, exists in all implementations\n            let coordinates = geometry?.getCoordinates()\n            if (!(await dispatch('isCoordinateInBoundaryLayer', coordinates))) {\n              coordinates = getters.transformedCoordinate\n              dispatch('showMarker', {\n                coordinates,\n                clicked: true,\n              })\n            }\n            commit('setCoordinatesAfterDrag', coordinates)\n            dispatch('updateCoordinates', coordinates)\n          })\n        })\n      },\n      // Removes the mapMarker from the map by removing its vectorLayer\n      removeMarker({ rootGetters: { map } }): void {\n        map.getLayers().forEach(function (layer) {\n          if (layer?.get?.('polarInternalId') === 'mapMarkerVectorLayer') {\n            map.removeLayer(layer)\n          }\n        })\n      },\n      /**\n       * Set the value for the transformed coordinate and save it as latLon as well.\n       * @param coordinates - Coordinates of the pin.\n       */\n      updateCoordinates({ commit, rootGetters }, coordinates: Coordinate) {\n        const lonLat = toLonLat(coordinates, rootGetters.configuration.epsg)\n        const latLon = [lonLat[1], lonLat[0]]\n        commit('setTransformedCoordinate', coordinates)\n        commit('setLatLon', latLon)\n      },\n      /**\n       * Checks if boundary layer conditions are met; returns false if not and\n       * toasts to the user about why the action was blocked, if `toastAction` is\n       * configured. If no boundaryLayer configured, always returns true.\n       */\n      async isCoordinateInBoundaryLayer(\n        { rootGetters, dispatch },\n        coordinates: Coordinate\n      ): Promise<boolean> {\n        const { boundaryLayerId, toastAction, boundaryOnError } =\n          rootGetters.configuration?.pins || {}\n        const boundaryCheckResult = await passesBoundaryCheck(\n          rootGetters.map,\n          boundaryLayerId,\n          coordinates\n        )\n        if (\n          !boundaryLayerId ||\n          // if a setup error occurred, client will act as if no boundaryLayerId specified\n          boundaryCheckResult === true ||\n          (typeof boundaryCheckResult === 'symbol' &&\n            boundaryOnError !== 'strict')\n        ) {\n          return true\n        }\n        const errorOccurred = typeof boundaryCheckResult === 'symbol'\n        if (toastAction) {\n          const toast = errorOccurred\n            ? { type: 'error', text: 'plugins.pins.toast.boundaryError' }\n            : {\n                type: 'info',\n                text: 'plugins.pins.toast.notInBoundary',\n                timeout: 10000,\n              }\n          dispatch(toastAction, toast, { root: true })\n        } else {\n          // eslint-disable-next-line no-console\n          console[errorOccurred ? 'error' : 'log'](\n            errorOccurred\n              ? 'Checking boundary layer failed.'\n              : ['Pin position outside of boundary layer:', coordinates]\n          )\n        }\n        return false\n      },\n    },\n    mutations: { ...generateSimpleMutations(getInitialState()) },\n    getters,\n  }\n  return storeModule\n}\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    pins: {\n      toast: {\n        notInBoundary: 'Diese Koordinate kann nicht gewählt werden.',\n        boundaryError:\n          'Die Überprüfung der Koordinate ist fehlgeschlagen. Bitte versuchen Sie es später erneut oder wenden Sie sich an einen Administrator, wenn das Problem bestehen bleibt.',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    pins: {\n      toast: {\n        notInBoundary: 'It is not possible to select this coordinate.',\n        boundaryError:\n          'Validating the coordinate failed. Please try again later or contact an administrator if the issue persists.',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import Vue from 'vue'\nimport { PinsConfiguration } from '@polar/lib-custom-types'\nimport { makeStoreModule } from './store'\nimport locales from './locales'\n\nexport { default as getPointCoordinate } from './util/getPointCoordinate'\n\nexport default (options: PinsConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'pins',\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <v-card class=\"polar-plugin-pointer-position\">\n    <span>\n      {{ $t('plugins.pointerPosition.label', { value: coordinateString }) }}\n    </span>\n    <v-select\n      v-if=\"projections.length > 1\"\n      v-model=\"projection\"\n      class=\"polar-plugin-epsg-select\"\n      :label=\"$t('plugins.pointerPosition.projectionSelect.label')\"\n      :items=\"\n        projections.map((projection, index) => ({\n          value: index,\n          text: projection.code,\n        }))\n      \"\n      dense\n      hide-details\n      @keydown.up.stop\n      @keydown.right.stop\n      @keydown.down.stop\n      @keydown.left.stop\n    />\n  </v-card>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'PointerPosition',\n  computed: {\n    ...mapGetters('plugin/pointerPosition', [\n      'coordinateString',\n      'projections',\n      'selectedProjection',\n    ]),\n    projection: {\n      get() {\n        return this.selectedProjection\n      },\n      set(value) {\n        this.setSelectedProjection(value)\n      },\n    },\n    showSelectionChooser() {\n      return this.projections.length > 1\n    },\n  },\n  methods: {\n    ...mapActions('plugin/pointerPosition', ['setSelectedProjection']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-plugin-pointer-position {\n  display: flex;\n  flex-direction: column;\n  gap: 1em;\n  margin: 4px;\n  padding: 12px;\n\n  .polar-plugin-epsg-select {\n    max-width: 250px;\n  }\n}\n</style>\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { transform } from 'ol/proj'\nimport { Coordinate, createStringXY } from 'ol/coordinate'\nimport { PointerPositionGetters, PointerPositionState } from '../types'\n\nconst getInitialState = (): PointerPositionState => ({\n  selectedProjection: 0,\n  pointerPosition: [],\n})\n\n// putting this as a module variable to skip map .on/.un hassle\nlet converter: (coordinate: Coordinate) => Coordinate\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<PointerPositionState, PointerPositionGetters> =\n    {\n      namespaced: true,\n      state: getInitialState(),\n      actions: {\n        setupModule({ state, rootGetters: { map }, commit, dispatch }) {\n          dispatch('setSelectedProjection', state.selectedProjection)\n          map.on('pointermove', (event) =>\n            commit('setPointerPosition', converter?.(event.coordinate) || [])\n          )\n        },\n        setSelectedProjection(\n          { rootGetters: { map }, commit, getters },\n          nextSelectedProjection: number\n        ) {\n          converter = (coordinate) =>\n            transform(\n              coordinate,\n              map.getView().getProjection().getCode(),\n              getters.projections[nextSelectedProjection].code\n            )\n          // one-time conversions on CRS change if previous value exists\n          if (getters.pointerPosition.length) {\n            commit(\n              'setPointerPosition',\n              transform(\n                getters.pointerPosition,\n                getters.projections[getters.selectedProjection].code,\n                getters.projections[nextSelectedProjection].code\n              )\n            )\n          }\n          commit('setSelectedProjection', nextSelectedProjection)\n        },\n      },\n      getters: {\n        ...generateSimpleGetters(getInitialState()),\n        configuration(_, __, ___, rootGetters) {\n          return rootGetters.configuration?.pointerPosition || {}\n        },\n        projections(_, getters, ___, rootGetters) {\n          if (getters.configuration.projections) {\n            return getters.configuration.projections.map((entry) => ({\n              ...entry,\n              decimals: entry.decimals ?? 4,\n            }))\n          }\n          return rootGetters.configuration.namedProjections.map(([code]) => ({\n            code,\n            decimals: 4,\n          }))\n        },\n        coordinateString(_, getters) {\n          return getters.pointerPosition.length\n            ? createStringXY(\n                getters.projections[getters.selectedProjection].decimals\n              )(getters.pointerPosition)\n            : 'X, Y'\n        },\n      },\n      mutations: {\n        ...generateSimpleMutations(getInitialState()),\n      },\n    }\n\n  return storeModule\n}\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    pointerPosition: {\n      label: 'Zeigerposition: {{value}}',\n      projectionSelect: {\n        label: 'Koordinatenreferenzsystem',\n      },\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    pointerPosition: {\n      label: 'Pointer position: {{value}}',\n      projectionSelect: {\n        label: 'Coordinate reference system',\n      },\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import Vue from 'vue'\nimport { PointerPositionConfiguration } from '@polar/lib-custom-types'\nimport { PointerPosition } from './components'\nimport { makeStoreModule } from './store'\nimport locales from './locales'\n\nexport default (options: PointerPositionConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'pointerPosition',\n    plugin: PointerPosition,\n    storeModule: makeStoreModule(),\n    locales,\n    options,\n  })\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    result[key] = iteratee(value, key, object);\n  });\n  return result;\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = mapValues;\n","import mapValues from 'lodash.mapvalues'\nimport xml2js from 'xml2js'\nimport { PolarActionContext } from '@polar/lib-custom-types'\nimport { ReverseGeocoderFeature } from '../../types'\n\nconst { parseString, processors } = xml2js\n\nconst buildPostBody = ([x, y]: [number, number]) => `\n  <wps:Execute xmlns:wps='http://www.opengis.net/wps/1.0.0' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:ows='http://www.opengis.net/ows/1.1' service='WPS' version='1.0.0' xsi:schemaLocation='http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd'>\n    <ows:Identifier>ReverseGeocoder.fmw</ows:Identifier>\n      <wps:DataInputs>\n        <wps:Input>\n          <ows:Identifier>X</ows:Identifier>\n          <wps:Data>\n            <wps:LiteralData dataType='float'>${x}</wps:LiteralData>\n          </wps:Data>\n        </wps:Input>\n        <wps:Input>\n        <ows:Identifier>Y</ows:Identifier>\n        <wps:Data>\n          <wps:LiteralData dataType='float'>${y}</wps:LiteralData>\n        </wps:Data>\n      </wps:Input>\n    </wps:DataInputs>\n  </wps:Execute>\n`\n\nconst readResponseText = (xmlString: string): Promise<object> =>\n  new Promise((resolve, reject) =>\n    parseString(\n      xmlString,\n      { tagNameProcessors: [processors.stripPrefix] },\n      (err, source) => (err ? reject(err) : resolve(source))\n    )\n  )\n\nexport async function reverseGeocode(\n  {\n    rootGetters: { configuration },\n  }: PolarActionContext<Record<string, never>, Record<string, never>>,\n  coordinate: [number, number]\n): Promise<ReverseGeocoderFeature> {\n  const url = configuration.reverseGeocoder?.url\n\n  if (!url) {\n    throw new Error('POLAR ReverseGeocoder#reverseGeocode: No URL specified.')\n  }\n\n  const response = await fetch(url, {\n    method: 'POST',\n    body: buildPostBody(coordinate),\n  })\n\n  const parsedBody = await readResponseText(await response.text())\n\n  const address = mapValues(\n    // @ts-expect-error | no types for WPS output defined\n    parsedBody.ExecuteResponse.ProcessOutputs[0].Output[0].Data[0]\n      .ComplexData[0].ReverseGeocoder[0].Ergebnis[0].Adresse[0],\n    (v) => v[0]\n  )\n  // NOTE: Property names come from the WPS\n  /* eslint-disable @typescript-eslint/naming-convention */\n  const properties = {\n    Distanz: parseFloat(address.Distanz),\n    Hausnr: parseInt(address.Hausnr, 10),\n    Plz: parseInt(address.Plz, 10),\n    Strasse: address.Strasse,\n    XKoordinate: parseFloat(address.XKoordinate),\n    YKoordinate: parseFloat(address.YKoordinate),\n    Zusatz: address.Zusatz,\n  }\n  /* eslint-enable @typescript-eslint/naming-convention */\n\n  return {\n    type: 'reverse_geocoded',\n    title: `${properties.Strasse} ${properties.Hausnr}${properties.Zusatz}`,\n    properties,\n    geometry: {\n      // as clicked by user - usually want to keep this since user is pointing at something\n      coordinates: coordinate,\n      type: 'Point',\n    },\n    addressGeometry: {\n      // as returned by reverse geocoder\n      coordinates: [properties.XKoordinate, properties.YKoordinate],\n      type: 'Point',\n    },\n  }\n}\n","import { PolarModule } from '@polar/lib-custom-types'\nimport { easeOut } from 'ol/easing'\nimport Point from 'ol/geom/Point'\nimport { ReverseGeocoderFeature } from '../types'\nimport { reverseGeocode } from './actions/reverseGeocode'\n\nexport const makeStoreModule = () => {\n  let loaderCounter = 0\n\n  /*\n   * NOTE: state, mutations, and getters are added to match PolarModule.\n   * This module is created to interact with other modules via vuex context.\n   * */\n  const storeModule: PolarModule<\n    Record<string, never>,\n    Record<string, never>\n  > = {\n    namespaced: true,\n    state: {},\n    actions: {\n      setupModule({ rootGetters, dispatch }): void {\n        const { coordinateSource } =\n          rootGetters.configuration.reverseGeocoder || {}\n\n        if (coordinateSource) {\n          this.watch<[number, number]>(\n            () => rootGetters[coordinateSource],\n            (coordinate) => {\n              if (coordinate && coordinate.length) {\n                dispatch('resolveCoordinate', coordinate)\n              }\n            },\n            { deep: true }\n          )\n        }\n      },\n      async resolveCoordinate(\n        { rootGetters, commit, dispatch },\n        coordinate: [number, number]\n      ): Promise<ReverseGeocoderFeature | null> {\n        const { addressTarget, addLoading, removeLoading, zoomTo } =\n          rootGetters.configuration.reverseGeocoder || {}\n        const { map } = rootGetters\n\n        const localLoaderCounter = ++loaderCounter\n        const loaderKey = `reverse-geocoder-load-${localLoaderCounter}`\n\n        if (addLoading) {\n          commit(addLoading, loaderKey, { root: true })\n        }\n\n        let feature: ReverseGeocoderFeature | null = null\n\n        try {\n          feature = await dispatch('reverseGeocode', coordinate)\n          if (localLoaderCounter === loaderCounter) {\n            if (addressTarget) {\n              dispatch(addressTarget, { feature }, { root: true })\n            }\n            if (typeof zoomTo === 'number') {\n              map.getView().fit(new Point(coordinate), {\n                maxZoom: zoomTo,\n                duration: 400,\n                easing: easeOut,\n              })\n            }\n          }\n        } catch (e) {\n          console.error(\n            '@polar/plugin-reverse-geocoder: An error occurred while resolving the coordinate: ',\n            e\n          )\n        } finally {\n          if (removeLoading) {\n            commit(removeLoading, loaderKey, { root: true })\n          }\n        }\n\n        return feature\n      },\n      reverseGeocode,\n    },\n    getters: {},\n    mutations: {},\n  }\n  return storeModule\n}\n","import Vue from 'vue'\nimport { ReverseGeocoderConfiguration } from '@polar/lib-custom-types'\nimport { makeStoreModule } from './store'\n\nexport default (options: ReverseGeocoderConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'reverseGeocoder',\n    storeModule: makeStoreModule(),\n    options,\n  })\n","import i18next from 'i18next'\nimport { transform } from 'ol/proj'\n\nasync function fetchRoutingDirections(\n  url: string,\n  searchCoordinates: number[][],\n  selectedRouteTypesToAvoid: string[],\n  selectedPreference: string,\n  apiKey: string\n) {\n  const response = await fetch(url, {\n    method: 'POST',\n    headers: {\n      /* eslint-disable @typescript-eslint/naming-convention */\n      'Content-Type': 'application/json',\n      Authorization: apiKey,\n      /* eslint-enable @typescript-eslint/naming-convention */\n    },\n    body: JSON.stringify({\n      coordinates: searchCoordinates,\n      geometry: true,\n      instructions: true,\n      language: i18next.language,\n      options: {\n        avoid_features: selectedRouteTypesToAvoid,\n      },\n      preference: selectedPreference,\n      units: 'm',\n    }),\n  })\n  if (!response.ok) {\n    throw new Error('Route could not be determined. Try different coordinates.')\n  }\n  return response\n}\n\n/**\n * Transforms a coordinate from a given EPSG system to WGS84 (EPSG:4326).\n *\n * @param coordinate - The coordinate to be transformed.\n * @param sourceEpsg - The source EPSG code (e.g., \"EPSG:3857\").\n * @returns The transformed coordinate in WGS84 format.\n */\nfunction transformCoordinateToWGS84(\n  coordinate: number[],\n  sourceEpsg: string\n): number[] {\n  if (!sourceEpsg) {\n    throw new Error('Source EPSG code is required')\n  }\n\n  return transform(coordinate, sourceEpsg, 'EPSG:4326')\n}\n\nexport { fetchRoutingDirections, transformCoordinateToWGS84 }\n","import { FeatureCollection, LineString } from 'geojson'\nimport { RoutingState } from '../types'\n\nexport const getInitialState = (): RoutingState => ({\n  currentlyFocusedInput: -1,\n  route: [[], []],\n  routingResponseData: {} as FeatureCollection<LineString>,\n  selectableRouteTypesToAvoid: [\n    {\n      key: 'highways',\n      locale: 'plugins.routing.avoidRoutes.highways',\n    },\n    {\n      key: 'tollways',\n      locale: 'plugins.routing.avoidRoutes.tollways',\n    },\n    {\n      key: 'ferries',\n      locale: 'plugins.routing.avoidRoutes.ferries',\n    },\n  ],\n  selectedPreference: 'recommended',\n  selectedRouteTypesToAvoid: [],\n  selectedTravelMode: 'driving-car',\n  showSteps: false,\n})\n","import { type PolarActionTree } from '@polar/lib-custom-types'\nimport Feature from 'ol/Feature'\nimport { LineString, Point } from 'ol/geom'\nimport Draw from 'ol/interaction/Draw'\nimport VectorLayer from 'ol/layer/Vector'\nimport { transform } from 'ol/proj'\nimport VectorSource from 'ol/source/Vector'\nimport { Stroke, Style } from 'ol/style'\nimport { RoutingState, RoutingGetters } from '../types'\nimport { fetchRoutingDirections } from '../utils/routingServiceUtils'\n\nconst routeSource = new VectorSource()\nlet routeLayer\nlet draw: Draw\n\nconst actions: PolarActionTree<RoutingState, RoutingGetters> = {\n  /**\n   * Initializes the tool by updating the state from mapConfig and by setting up the draw layer and click event listener.\n   */\n  setupModule({ rootGetters, dispatch }) {\n    routeLayer = new VectorLayer({\n      source: routeSource,\n      style: new Style({\n        stroke: new Stroke({ color: 'blue', width: 6 }),\n      }),\n    })\n    rootGetters.map.addLayer(routeLayer)\n\n    dispatch('initializeDraw')\n  },\n  initializeDraw({ commit }) {\n    draw = new Draw({ stopClick: true, type: 'Point' })\n    // @ts-expect-error | internal hack to detect it in @polar/plugin-pins and @polar/plugin-gfi\n    draw._isRoutingDraw = true\n    draw.on('drawend', (e) => {\n      commit(\n        'addCoordinateToRoute',\n        (e.feature.getGeometry() as Point).getCoordinates()\n      )\n      // @ts-expect-error | internal hack to detect it in @polar/plugin-pins and @polar/plugin-gfi\n      draw._isRoutingDraw = false\n    })\n  },\n  setCurrentlyFocusedInput({ commit, getters, rootGetters }, index: number) {\n    const previousIndex = getters.currentlyFocusedInput\n    commit('setCurrentlyFocusedInput', index)\n    if (previousIndex === -1 && index !== -1) {\n      rootGetters.map.addInteraction(draw)\n    } else if (previousIndex !== -1 && index === -1) {\n      rootGetters.map.removeInteraction(draw)\n    }\n  },\n  // TODO: Add implementation for the search functionality\n  /* async search({ commit, dispatch, getters, rootGetters }, input: string) {\n    if (getters.searchConfiguration) {\n      searchConfiguration: {\n        availability: 'plugin/addressSearch/featuresAvailable',\n        method: 'plugin/addressSearch/search',\n        results: 'plugin/addressSearch/searchResults',\n      },\n      const { availability, method, results } = getters.searchConfiguration\n      // TODO: Show some form of loader\n      // TODO: Results are currently shown in @polar/plugin-address-search and not in the related input in this plugin\n      await dispatch(method, { input }, { root: true })\n      if (availability) {\n        commit('setSearchResults', rootGetters[results])\n      } else {\n        // TODO: Show some info that the search failed? set searchResults to null or sth?\n      }\n    }\n  }, */\n  handleErrors({ dispatch }, error) {\n    let errorMessage = ''\n    if (error instanceof Error) {\n      errorMessage = error.message\n      console.error(error.message)\n    } else {\n      console.error('Unexpected error', error)\n    }\n    dispatch(\n      'plugin/toast/addToast',\n      {\n        type: 'error',\n        text: errorMessage,\n      },\n      { root: true }\n    )\n  },\n  /**\n   * Sends a routing request to the configured service.\n   */\n  async getRoute({ commit, dispatch, state, getters }) {\n    dispatch('clearRoute')\n    try {\n      const response = await fetchRoutingDirections(\n        getters.url,\n        getters.routeAsWGS84,\n        state.selectedRouteTypesToAvoid,\n        state.selectedPreference,\n        getters.configuration.apiKey\n      )\n      const data = await response.json()\n      commit('setRoutingResponseData', data)\n      dispatch('drawRoute')\n    } catch (error) {\n      dispatch('handleErrors', error)\n    }\n  },\n  /**\n   * Draws the calculated route on the map.\n   */\n  drawRoute({ getters }) {\n    const transformedCoordinates =\n      getters.routingResponseData.features[0].geometry.coordinates.map(\n        (coordinate) => transform(coordinate, 'EPSG:4326', 'EPSG:25832')\n      )\n    const routeLineString = new LineString(transformedCoordinates)\n\n    const routeFeature = new Feature({\n      geometry: routeLineString,\n    })\n    routeSource.addFeature(routeFeature)\n  },\n  /**\n   * Deletes the current route drawing from the map.\n   */\n  clearRoute() {\n    routeSource.clear()\n  },\n  /**\n   * Resets the selected coordinates and routing settings.\n   */\n  reset({ commit, dispatch }) {\n    commit('resetRoute')\n    commit('setCurrentlyFocusedInput', -1)\n    commit('setSelectedTravelMode', 'driving-car')\n    commit('setSelectedPreference', 'recommended')\n    commit('setSelectedRouteTypesToAvoid', [])\n    commit('setRoutingResponseData', {})\n    dispatch('clearRoute')\n  },\n}\n\nexport default actions\n","import { type PolarModule } from '@polar/lib-custom-types'\nimport {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { type Coordinate } from 'ol/coordinate'\nimport { RoutingGetters, RoutingState } from '../types'\nimport { transformCoordinateToWGS84 } from '../utils/routingServiceUtils'\nimport { getInitialState } from './state'\nimport actions from './actions'\n\ninterface SetRoutePayload {\n  index: number\n  remove?: boolean\n}\n\n/**\n * Creates and returns a Vuex store module with namespacing enabled.\n *\n * The module is initialized with a predefined state, actions, getters, and mutations.\n *\n * @returns A Vuex store module configured with state, actions, getters, and mutations.\n */\nexport const makeStoreModule = (): PolarModule<\n  RoutingState,\n  RoutingGetters\n> => ({\n  namespaced: true,\n  state: getInitialState(),\n  actions,\n  getters: {\n    ...generateSimpleGetters(getInitialState()),\n    configuration: (_, __, ___, rootGetters) =>\n      rootGetters.configuration.routing,\n    displayPreferences: (_, { configuration }) =>\n      configuration.displayPreferences || false,\n    displayRouteTypesToAvoid: (_, { configuration }) =>\n      configuration.displayRouteTypesToAvoid || false,\n    routeAsWGS84: (_, getters, __, rootGetters) =>\n      getters.route.map((coordinate) =>\n        transformCoordinateToWGS84(\n          coordinate,\n          rootGetters.map.getView().getProjection().getCode()\n        )\n      ),\n    /* searchConfiguration: (_, getters) =>\n      getters.configuration.searchConfiguration || null, */\n    selectableTravelModes: (_, { configuration }) =>\n      configuration.selectableTravelModes || [\n        'driving-car',\n        'cycling-regular',\n        'foot-walking',\n      ],\n    url: (_, getters) =>\n      getters.configuration.url +\n      getters.selectedTravelMode +\n      '/' +\n      getters.configuration.format,\n  },\n  mutations: {\n    ...generateSimpleMutations(getInitialState()),\n    addCoordinateToRoute(state, coordinate: Coordinate) {\n      const currentRoute = [...state.route]\n      currentRoute[state.currentlyFocusedInput] = coordinate\n      state.route = currentRoute\n    },\n    resetRoute(state) {\n      state.route = [[], []]\n    },\n    setRoute(state, { index, remove }: SetRoutePayload) {\n      if (remove) {\n        state.route = state.route.toSpliced(index, 1)\n        return\n      }\n      state.route = state.route.toSpliced(index, 0, [])\n    },\n    updateShowSteps(state) {\n      state.showSteps = !state.showSteps\n    },\n  },\n})\n","<template>\n  <div\n    v-if=\"showSteps && Object.keys(routingResponseData).length !== 0\"\n    class=\"polar-plugin-routing-details-container\"\n  >\n    {{ $t('plugins.routing.duration') }}\n    {{ formatDuration(duration) }} &nbsp;\n    {{ $t('plugins.routing.distance') }}\n    {{ formatDistance(distance) }}\n    <v-list class=\"polar-plugin-routing-detail-list\">\n      <v-list-item v-for=\"(step, i) in steps\" :key=\"i\">\n        <v-list-item-content>\n          <v-list-item-title>\n            {{ step['instruction'] }}\n          </v-list-item-title>\n          <v-list-item-subtitle>\n            {{ $t('plugins.routing.distance') }}\n            {{ formatDistance(step['distance']) }},\n            {{ $t('plugins.routing.duration') }}\n            {{ formatDuration(step['duration']) }}\n          </v-list-item-subtitle>\n        </v-list-item-content>\n      </v-list-item>\n    </v-list>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\n\nexport default Vue.extend({\n  name: 'RoutingDetails',\n  computed: {\n    ...mapGetters('plugin/routing', ['routingResponseData', 'showSteps']),\n    distance() {\n      return this.segments.reduce((acc, segment) => acc + segment.distance, 0)\n    },\n    duration() {\n      return this.segments.reduce((acc, segment) => acc + segment.duration, 0)\n    },\n    segments() {\n      return this.routingResponseData.features[0].properties.segments\n    },\n    steps() {\n      return this.segments.flatMap((segment) => segment.steps)\n    },\n  },\n  methods: {\n    formatDistance(distance: number) {\n      if (distance >= 1000) {\n        return `${(distance / 1000).toFixed(1)} km`\n      }\n      return `${distance} m`\n    },\n    formatDuration(duration: number) {\n      if (duration >= 3600) {\n        return `${(duration / 3600).toFixed(2)} h`\n      } else if (duration >= 60) {\n        return `${(duration / 60).toFixed(1)} min`\n      }\n      return `${duration} sec`\n    },\n  },\n})\n</script>\n\n<style scoped lang=\"scss\">\n.polar-plugin-routing-details-container {\n  max-height: 300px;\n  overflow-y: scroll;\n  padding-top: 10px;\n  text-align: center;\n}\n.polar-plugin-routing-detail-list {\n  text-align: left;\n}\n</style>\n","<template>\n  <div>\n    <v-btn-toggle\n      v-model=\"selectedTravelModeItem\"\n      class=\"polar-plugin-routing-travel-mode-container\"\n      mandatory\n    >\n      <!-- NOTE: Inline style is needed as otherwise another class overrides this. -->\n      <v-btn\n        v-for=\"mode in travelModes\"\n        :key=\"mode.key\"\n        :value=\"mode.key\"\n        :label=\"$t(mode.translatedKey)\"\n        :aria-label=\"$t(mode.translatedKey)\"\n        style=\"border: solid medium transparent !important; min-width: 64px\"\n        class=\"polar-plugin-routing-travel-mode-button\"\n      >\n        <v-icon>{{ mode.icon }}</v-icon>\n      </v-btn>\n    </v-btn-toggle>\n    <!-- NOTE: Adding @keydown.prevent.stop here would prevent the map movement but would also prevent the tabbing -->\n    <v-select\n      v-if=\"displayPreferences\"\n      v-model=\"selectedPreferenceItem\"\n      :label=\"$t('plugins.routing.label.preference')\"\n      :aria-label=\"$t('plugins.routing.label.preference')\"\n      :items=\"\n        ['recommended', 'fastest', 'shortest'].map((value) => ({\n          value,\n          text: $t(`plugins.routing.preference.${value}`),\n        }))\n      \"\n    />\n    <div\n      v-if=\"displayRouteTypesToAvoid\"\n      class=\"polar-plugin-routing-route-types-to-avoid-container\"\n    >\n      <p>{{ $t('plugins.routing.avoidRoutesTitle') }}</p>\n      <div class=\"polar-routing-checkbox-container\">\n        <v-checkbox\n          v-for=\"(routeType, i) in routeTypesToAvoidForSelectedProfile\"\n          :key=\"i\"\n          v-model=\"selectedRouteTypesToAvoidItem\"\n          :label=\"$t(translatedRouteTypeToAvoid(routeType['key']))\"\n          :aria-label=\"$t(translatedRouteTypeToAvoid(routeType['key']))\"\n          :value=\"routeType['key']\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport noop from '@repositoryname/noop'\nimport Vue from 'vue'\nimport { mapGetters, mapMutations } from 'vuex'\n\nexport default Vue.extend({\n  name: 'RoutingOptions',\n  computed: {\n    ...mapGetters('plugin/routing', [\n      'displayPreferences',\n      'displayRouteTypesToAvoid',\n      'selectableRouteTypesToAvoid',\n      'selectableTravelModes',\n      'selectedPreference',\n      'selectedRouteTypesToAvoid',\n      'selectedTravelMode',\n    ]),\n    travelModes() {\n      return [\n        {\n          key: 'driving-car',\n          translatedKey: 'plugins.routing.travelMode.car',\n          icon: 'fa-car',\n        },\n        {\n          key: 'driving-hgv',\n          translatedKey: 'plugins.routing.travelMode.hgv',\n          icon: 'fa-truck',\n        },\n        {\n          key: 'cycling-regular',\n          translatedKey: 'plugins.routing.travelMode.bike',\n          icon: 'fa-person-biking',\n        },\n        {\n          key: 'foot-walking',\n          translatedKey: 'plugins.routing.travelMode.walking',\n          icon: 'fa-person-walking',\n        },\n        {\n          key: 'wheelchair',\n          translatedKey: 'plugins.routing.travelMode.wheelchair',\n          icon: 'fa-wheelchair-move',\n        },\n      ].filter(({ key }) => this.selectableTravelModes.includes(key))\n    },\n\n    routeTypesToAvoidForSelectedProfile() {\n      return this.selectedTravelMode === 'driving-car' ||\n        this.selectedTravelMode === 'driving-hgv'\n        ? this.selectableRouteTypesToAvoid\n        : [\n            {\n              key: 'ferries',\n              locale: 'plugins.routing.avoidRoutes.ferries',\n            },\n          ]\n    },\n    selectedTravelModeItem: {\n      get(): string {\n        return this.selectedTravelMode\n      },\n      set(value: string): void {\n        this.setSelectedTravelMode(value)\n      },\n    },\n    selectedPreferenceItem: {\n      get(): string {\n        return this.selectedPreference\n      },\n      set(value: string): void {\n        this.setSelectedPreference(value)\n      },\n    },\n    selectedRouteTypesToAvoidItem: {\n      get(): string {\n        return this.selectedRouteTypesToAvoid\n      },\n      set(value: string): void {\n        this.setSelectedRouteTypesToAvoid(value)\n      },\n    },\n  },\n  watch: {\n    selectedTravelMode() {\n      this.selectedRouteTypesToAvoidItem = []\n    },\n  },\n  methods: {\n    ...mapMutations('plugin/routing', [\n      'setSelectedTravelMode',\n      'setSelectedPreference',\n      'setSelectedRouteTypesToAvoid',\n    ]),\n    noop,\n    translatedRouteTypeToAvoid(myKey: string) {\n      return this.selectableRouteTypesToAvoid.find(\n        (element) => element.key === myKey\n      ).locale\n    },\n  },\n})\n</script>\n\n<style scoped lang=\"scss\">\n.polar-plugin-routing-travel-mode-container {\n  display: inline grid;\n  grid-auto-flow: column;\n  grid-auto-columns: 1fr;\n  width: 100%;\n  margin-bottom: 1em;\n\n  .polar-plugin-routing-travel-mode-button {\n    &:focus,\n    &:hover {\n      z-index: 1;\n    }\n  }\n}\n\n.polar-plugin-routing-route-types-to-avoid-container {\n  p {\n    margin: 0;\n  }\n  .polar-routing-checkbox-container {\n    display: flex;\n    flex-wrap: nowrap;\n    gap: 20px;\n    justify-content: space-evenly;\n\n    .v-input {\n      margin-top: 0.5em;\n    }\n  }\n}\n</style>\n","<template>\n  <v-scroll-x-reverse-transition>\n    <v-card id=\"polar-plugin-routing-card\">\n      <v-card-title>{{ $t('plugins.routing.title') }}</v-card-title>\n      <div\n        v-for=\"(_, index) in route\"\n        :key=\"`polar-plugin-routing-route-container-${index}`\"\n        class=\"polar-plugin-routing-route-container\"\n      >\n        <v-text-field\n          :id=\"`polar-plugin-routing-input-${index}`\"\n          v-model=\"route[index]\"\n          class=\"polar-plugin-routing-input\"\n          :label=\"$t(getRouteLabel(index))\"\n          :aria-label=\"\n            $t('plugins.routing.label.aria', {\n              position: $t(getRouteLabel(index)),\n            })\n          \"\n          @focus=\"(e) => focusInput(e, index)\"\n        />\n        <div>\n          <v-btn\n            icon\n            small\n            :disabled=\"addWaypointButtonDisabled\"\n            :aria-label=\"$t('plugins.routing.label.add')\"\n            @click=\"setRoute({ index })\"\n          >\n            <v-icon small>fa-plus</v-icon>\n          </v-btn>\n          <v-btn\n            icon\n            small\n            :disabled=\"route.length === 2\"\n            :aria-label=\"$t('plugins.routing.label.remove')\"\n            @click=\"setRoute({ index, remove: true })\"\n          >\n            <v-icon small>fa-minus</v-icon>\n          </v-btn>\n        </div>\n      </div>\n      <RoutingOptions />\n      <div id=\"polar-plugin-routing-button-group\">\n        <v-btn :aria-label=\"$t('plugins.routing.resetButton')\" @click=\"reset\">\n          {{ $t('plugins.routing.resetButton') }}\n        </v-btn>\n        <v-btn\n          :aria-label=\"$t('plugins.routing.routeDetails')\"\n          :disabled=\"Object.keys(routingResponseData).length === 0\"\n          @click=\"updateShowSteps\"\n        >\n          {{ $t('plugins.routing.routeDetails') }}\n        </v-btn>\n      </div>\n      <RoutingDetails />\n    </v-card>\n  </v-scroll-x-reverse-transition>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions, mapMutations } from 'vuex'\nimport RoutingDetails from './RoutingDetails.vue'\nimport RoutingOptions from './RoutingOptions.vue'\n\nexport default Vue.extend({\n  name: 'PolarRouting',\n  components: {\n    RoutingDetails,\n    RoutingOptions,\n  },\n  computed: {\n    ...mapGetters(['language']),\n    ...mapGetters('plugin/routing', [\n      'currentlyFocusedInput',\n      'route',\n      'routingResponseData',\n      'searchResults',\n      'selectedPreference',\n      'selectedRouteTypesToAvoid',\n      'selectedTravelMode',\n    ]),\n    addWaypointButtonDisabled() {\n      return (\n        this.route.filter((part) => Boolean(part.length)).length <\n        this.route.length - 1\n      )\n    },\n    routeIncomplete() {\n      return this.route.some((part) => part.length === 0)\n    },\n  },\n  watch: {\n    language() {\n      if (!this.routeIncomplete) {\n        this.getRoute()\n      }\n    },\n    route() {\n      if (!this.routeIncomplete) {\n        this.getRoute()\n      }\n    },\n    selectedRouteTypesToAvoid() {\n      if (!this.routeIncomplete) {\n        this.getRoute()\n      }\n    },\n    selectedPreference() {\n      if (!this.routeIncomplete) {\n        this.getRoute()\n      }\n    },\n  },\n  beforeDestroy() {\n    this.setCurrentlyFocusedInput(-1)\n  },\n  methods: {\n    ...mapActions('plugin/routing', [\n      'getRoute',\n      'reset',\n      'setCurrentlyFocusedInput',\n    ]),\n    ...mapMutations('plugin/routing', ['setRoute', 'updateShowSteps']),\n    focusInput(e: FocusEvent, index: number) {\n      const previousIndex = this.currentlyFocusedInput\n      if (previousIndex !== -1) {\n        // @ts-expect-error | Type conversion is fine here as the querySelector method is monkeyPatched in core/Maaceeprt\n        ;(document.querySelector('[data-app]') as ShadowRoot)\n          .getElementById(`polar-plugin-routing-input-${previousIndex}`)\n          ?.classList.remove('polar-plugin-routing-input-focused')\n      }\n      e.currentTarget.classList.add('polar-plugin-routing-input-focused')\n      this.setCurrentlyFocusedInput(index)\n    },\n    getRouteLabel(index: number) {\n      return `plugins.routing.label.${\n        index === 0\n          ? 'start'\n          : index === this.route.length - 1\n          ? 'end'\n          : 'middle'\n      }`\n    },\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.polar-plugin-routing-input {\n  border: solid transparent;\n}\n\n.polar-plugin-routing-input-focused {\n  border: solid var(--polar-primary);\n}\n</style>\n\n<style lang=\"scss\" scoped>\n#polar-plugin-routing-card {\n  display: flex;\n  flex-direction: column;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  padding-left: 20px;\n  padding-right: 20px;\n  padding-bottom: 20px;\n  min-width: 360px;\n\n  .polar-plugin-routing-route-container {\n    display: flex;\n    align-items: center;\n    gap: 1.5em;\n  }\n\n  #polar-plugin-routing-button-group {\n    display: flex;\n    justify-content: space-between;\n    margin-bottom: 1em;\n\n    .v-btn {\n      width: 47.5%;\n    }\n  }\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    routing: {\n      title: 'Routenplaner',\n      button: {\n        closeTitle: 'Routenplanung schließen',\n        openTitle: 'Routenplanung öffnen',\n      },\n      label: {\n        aria: 'Durch Klicken in die Karte eine Koordinate als {{position}} auswählen.',\n        add: 'Wegpunkt hinzufügen',\n        remove: 'Wegpunkt entfernen',\n        start: 'Startadresse',\n        middle: 'Wegpunkt',\n        end: 'Zieladresse',\n        mode: 'Fortbewegungsart',\n        preference: 'Bevorzugte Route',\n      },\n      inputHint:\n        'Wählen Sie durch Klicken einen Punkt auf der Karte aus oder geben Sie eine Adresse ein.',\n      resetButton: 'Zurücksetzen',\n      travelMode: {\n        car: 'Auto',\n        hgv: 'LKW',\n        bike: 'Fahrrad',\n        walking: 'Zu Fuß',\n        wheelchair: 'Rollstuhl',\n      },\n      preference: {\n        recommended: 'Empfohlen',\n        fastest: 'Schnellste',\n        shortest: 'Kürzeste',\n      },\n      avoidRoutesTitle: 'Verkehrswege meiden',\n      avoidRoutes: {\n        highways: 'Autobahnen',\n        tollways: 'Mautstraßen',\n        ferries: 'Fähren',\n      },\n      sendRequestButton: 'Absenden',\n      routeDetails: 'Details zur Route',\n      distance: 'Entfernung:',\n      duration: 'Dauer:',\n    },\n  },\n}\n\nexport const resourcesEn = {\n  plugins: {\n    routing: {\n      title: 'Route Planner',\n      button: {\n        closeTitle: 'Hide routing tool',\n        openTitle: 'Show rooting tool',\n      },\n      label: {\n        aria: 'Add a coordinate as {{position}} by clicking in the map.',\n        add: 'Add waypoint',\n        remove: 'Remove waypoint',\n        start: 'Start Address',\n        middle: 'Waypoint',\n        end: 'Destination Address',\n        mode: 'Travel Mode',\n        preference: 'Preferred Route',\n      },\n      inputHint: 'Click the map to choose a point or enter an Ad',\n      resetButton: 'Reset',\n      travelMode: {\n        car: 'Car',\n        hgv: 'Heavy Goods Vehicle',\n        bike: 'Bike',\n        walking: 'Walking',\n        wheelchair: 'Wheelchair',\n      },\n      preference: {\n        recommended: 'Recommended',\n        fastest: 'Fastest',\n        shortest: 'Shortest',\n      },\n      avoidRoutesTitle: 'Types of routes to avoid',\n      avoidRoutes: {\n        highways: 'Highways',\n        tollways: 'Tollways',\n        ferries: 'Ferries',\n      },\n      sendRequestButton: 'Send',\n      routeDetails: 'Route Details',\n      distance: 'Distance:',\n      duration: 'Duration:',\n    },\n  },\n}\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import Vue from 'vue'\nimport { RoutingConfiguration } from '@polar/lib-custom-types'\nimport { makeStoreModule } from './store'\nimport { Routing } from './components'\nimport locales from './locales'\n\n/**\n * A function that dispatches an action to add the routing component to the Vuex store.\n *\n * This function returns another function that accepts a Vue instance. It dispatches the\n * 'addComponent' action to the store with relevant configuration options such as the\n * routing plugin, language, and the store module.\n *\n * @param options - Configuration options for the routing setup, including language and other routing-related settings.\n * @returns A function that accepts a Vue instance and dispatches the 'addComponent' action to the Vuex store.\n */\nexport default (options: RoutingConfiguration) => (instance: Vue) => {\n  return instance.$store.dispatch('addComponent', {\n    name: 'routing',\n    plugin: Routing,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n}\n","/**\n * Adds thousands separators into a number and changes the decimal point\n *\n * @param num - the number as number or string\n * @param delimAbs - the letter(s) to use as thousand point\n * @param delimDec - the letter(s) to use as decimal point\n * @returns the given number with thousands separators or an empty string if any invalid num was given\n */\nfunction thousandsSeparator(\n  num: number | string,\n  delimAbs = '.',\n  delimDec = ','\n): string {\n  const value = typeof num !== 'string' ? num.toString() : num\n  const decPointPos = value.indexOf('.')\n  const abs = decPointPos > -1 ? value.substring(0, decPointPos) : value\n  const result = abs.replace(/\\B(?=(\\d{3})+(?!\\d),?.*)/g, delimAbs)\n  const dec = decPointPos > -1 ? value.substring(decPointPos + 1) : false\n\n  return dec ? result + delimDec + dec : result\n}\n\nexport default thousandsSeparator\n","/**\n * Rounds the scale number so that the scale can be displayed in a beautified format in the map.\n * @param scaleNumber - the scale to be beautified\n * @returns the scale in a beautified format (=rounded based on its value)\n */\nfunction beautifyScale(scaleNumber: number) {\n  if (scaleNumber > 10000) {\n    scaleNumber = Math.round(scaleNumber / 500) * 500\n  } else if (scaleNumber > 1000) {\n    scaleNumber = Math.round(scaleNumber / 50) * 50\n  }\n  return scaleNumber\n}\n\nexport default beautifyScale\n","<template>\n  <div\n    id=\"polar-plugin-scales\"\n    :title=\"$t('plugins.scale.label')\"\n    :aria-label=\"$t('plugins.scale.label')\"\n  >\n    <select\n      v-if=\"showSelectOptions\"\n      :title=\"$t('plugins.scale.scaleSwitcher')\"\n      :aria-label=\"$t('plugins.scale.scaleSwitcher')\"\n      class=\"scale-as-a-ratio scale-switcher\"\n      :value=\"beautifyScale(scaleValue)\"\n      @change=\"setZoomLevelByScale($event.target.selectedIndex)\"\n    >\n      <option\n        v-for=\"(option, i) in zoomOptions\"\n        :key=\"i\"\n        :value=\"option.scale\"\n        class=\"scale-as-a-ratio\"\n      >\n        {{ '1 : ' + thousandsSeparator(option.scale) }}\n      </option>\n    </select>\n    <span v-else class=\"scale-as-a-ratio\">\n      {{ scaleToOne }}\n    </span>\n    <span class=\"scale-line\">\n      {{ scaleWithUnit }}\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\nimport thousandsSeparator from '../utils/thousandsSeperator'\nimport beautifyScale from '../utils/beautifyScale'\n\nexport default Vue.extend({\n  name: 'PolarScale',\n  computed: {\n    ...mapGetters('plugin/scale', [\n      'scaleToOne',\n      'scaleValue',\n      'scaleWithUnit',\n      'showScaleSwitcher',\n      'zoomOptions',\n      'zoomMethod',\n    ]),\n    showSelectOptions() {\n      return this.showScaleSwitcher && this.zoomMethod\n    },\n  },\n  methods: {\n    ...mapActions('plugin/scale', ['zoomToScale']),\n    setZoomLevelByScale(index: number) {\n      this.zoomToScale(this.zoomOptions[index].zoomLevel)\n    },\n    thousandsSeparator,\n    beautifyScale,\n  },\n})\n</script>\n\n<style lang=\"scss\">\n#polar-plugin-scales {\n  display: flex;\n  flex-direction: row;\n\n  text-align: center;\n  font-size: 14px;\n  gap: 4px;\n  margin: 4px;\n\n  > span,\n  > select {\n    background: #ffffffcc;\n    border-radius: 2px;\n    border-width: 0 2px 2px 2px;\n    border-style: solid;\n  }\n\n  .scale-line {\n    display: inline-block;\n    border-color: black;\n\n    width: 2cm;\n  }\n\n  .scale-as-a-ratio {\n    display: inline-block;\n    white-space: nowrap;\n    /* keeping border so texts align well */\n    border-color: transparent;\n\n    padding-left: 1em;\n    padding-right: 1em;\n  }\n\n  .scale-switcher {\n    cursor: pointer;\n    background: var(--polar-primary);\n    color: var(--polar-primary-contrast);\n    border-radius: 5px;\n    box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2),\n      0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n    border: 3px solid transparent;\n    box-sizing: border-box;\n  }\n\n  .scale-switcher:hover,\n  .scale-switcher:focus {\n    cursor: pointer;\n    border: 3px solid var(--polar-primary-contrast);\n    outline: 3px solid var(--polar-primary);\n  }\n\n  .scale-switcher option {\n    cursor: pointer;\n    font-weight: normal;\n    background: #ffffff;\n    color: black;\n  }\n\n  @media only screen and (max-width: 768px) {\n    flex-direction: column-reverse;\n    align-items: flex-end;\n  }\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    scale: {\n      toOneNegative: 'Skalierung muss eine positive Zahl sein',\n      label: 'Skala',\n      scaleSwitcher: 'Maßstab ändern',\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    scale: {\n      toOneNegative: 'scale must be a positive number',\n      label: 'Scale',\n      scaleSwitcher: 'Change scale',\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","/**\n * Since device dpi are not directly available, this common hack is applied to get the actual device dpi.\n * If dpi can not be inferred, 96 is returned as default value, and a warning is logged.\n * @returns The device dpi\n */\nfunction getDpi(): number {\n  let dpi = 96\n\n  try {\n    const dpiDiv = document.createElement('div')\n    const body = document.body\n\n    dpiDiv.id = 'programmatical-dpidiv'\n    dpiDiv.setAttribute(\n      'style',\n      'position: absolute; height: 1in; width: 1in; top: -100%; left: -100%;'\n    )\n    body.appendChild(dpiDiv)\n\n    dpi = dpiDiv.offsetWidth * (window.devicePixelRatio || 1)\n    body.removeChild(dpiDiv)\n  } catch (e) {\n    console.error('@polar/plugin-scale', e)\n    console.warn(\n      `@polar/plugin-scale: Since the dpi could not be inferred, the default value ${dpi} will be used.`\n    )\n  }\n\n  return dpi\n}\n\nexport default getDpi\n","import { METERS_PER_UNIT, Units } from 'ol/proj/Units'\nimport getDpi from './getDpi'\n\nfunction calculateScaleFromResolution(unit: Units, resolution: number): number {\n  // inchesPerMetre is used to convert the resolution (distance in meters) to\n  // inches per pixel (1in = 96px) so that it can be multiplied with dpi.\n  const inchesPerMetre = 39.37\n  const scale = Math.round(\n    resolution * METERS_PER_UNIT[unit] * inchesPerMetre * getDpi()\n  )\n  return scale\n}\n\nexport default calculateScaleFromResolution\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { t as translate } from 'i18next'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport thousandsSeparator from '../utils/thousandsSeperator'\nimport beautifyScale from '../utils/beautifyScale'\nimport { ScaleState, ScaleGetters } from '../types'\nimport calculateScaleFromResolution from '../utils/calculateScaleFromResolution'\n\nconst getInitialState = (): ScaleState => ({\n  scaleValue: 0,\n  scaleToOne: '',\n  scaleWithUnit: '',\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<ScaleState, ScaleGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({ rootGetters: { map }, dispatch }): void {\n        map.on('moveend', () => dispatch('getScale'))\n      },\n      /**\n       * gets the current scale and sets it to the state variable scaleValue\n       */\n      getScale({ rootGetters: { map }, commit, dispatch }): void {\n        const unit = map.getView().getProjection().getUnits()\n        const resolution: number = map.getView().getResolution() as number\n        const scale: number = calculateScaleFromResolution(unit, resolution)\n        commit('setScaleValue', scale)\n        dispatch('scaleWithUnit')\n        dispatch('scaleToOne')\n      },\n      /**\n       * generates a beautified state in format \"1 : scale\" where scale is rounded based on its value\n       */\n      scaleToOne({ getters, commit }): string | void {\n        let currentScaleValue = getters.scaleValue\n        if (typeof currentScaleValue !== 'number' || currentScaleValue <= 0) {\n          return `1 : ${translate('plugins.scale.toOneNegative')}`\n        }\n        currentScaleValue = beautifyScale(currentScaleValue)\n\n        const scaleToOne = '1 : ' + thousandsSeparator(currentScaleValue)\n        commit('setScaleToOne', scaleToOne)\n      },\n      /**\n       * generates a beautified scale with a km or m unit\n       */\n      scaleWithUnit({ getters, commit }): void {\n        const scaleNumber = Math.round(0.02 * getters.scaleValue)\n\n        const newValue =\n          scaleNumber >= 1000\n            ? `${Math.round(scaleNumber / 100) / 10} km`\n            : `${scaleNumber} m`\n        commit('setScaleWithUnit', newValue)\n      },\n      zoomToScale({ dispatch, getters }, zoomLevel: number): void {\n        const { zoomMethod } = getters\n        if (zoomMethod.length > 0) {\n          dispatch(zoomMethod, zoomLevel, { root: true })\n        }\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      zoomOptions: (_, __, ___, rootGetters) => {\n        const options = rootGetters.configuration.options\n\n        if (!options) {\n          console.error(\n            \"@polar/plugin-scale: Configuration parameter `options` is missing. Scale switcher won't be rendered.\"\n          )\n          return []\n        }\n        return options.map((option) => {\n          return {\n            ...option,\n            scale: beautifyScale(\n              calculateScaleFromResolution(\n                rootGetters.map.getView().getProjection().getUnits(),\n                option.resolution\n              )\n            ),\n          }\n        })\n      },\n      showScaleSwitcher: (_, getters, ___, rootGetters) => {\n        return (\n          rootGetters.configuration?.scale?.showScaleSwitcher &&\n          getters.zoomOptions.length > 0\n        )\n      },\n      zoomMethod: (_, __, ___, rootGetters) => {\n        const zoomMethod = rootGetters.configuration?.scale?.zoomMethod\n\n        if (!zoomMethod) {\n          console.error(\n            \"@polar/plugin-scale: Configuration parameter `zoomMethod` is missing. Scale switcher won't be rendered.\"\n          )\n          return ''\n        }\n        return zoomMethod\n      },\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { ScaleConfiguration } from '@polar/lib-custom-types'\nimport { Scale } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport { default as beautifyScale } from './utils/beautifyScale'\nexport { default as thousandsSeparator } from './utils/thousandsSeperator'\nexport { default as getDpi } from './utils/getDpi'\nexport { default as calculateScaleFromResolution } from './utils/calculateScaleFromResolution'\n\nexport default (options: ScaleConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'scale',\n    plugin: Scale,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","<template>\n  <div class=\"polar-alert-invert\">\n    <v-alert\n      v-for=\"(toast, index) of toasts\"\n      :key=\"toast.type + '-' + index + '-' + toast.text\"\n      dismissible\n      dense\n      class=\"v-alert\"\n      :close-label=\"$t('plugins.toast.close')\"\n      :type=\"toast.type\"\n      :color=\"toast.color\"\n      :icon=\"toast.icon\"\n      @input=\"removeToast(toast)\"\n    >\n      {{ $t(toast.text) }}\n    </v-alert>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapMutations, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'PolarToast',\n  computed: {\n    ...mapGetters('plugin/toast', ['toasts', 'types']),\n  },\n  methods: {\n    ...mapMutations('plugin/toast', ['removeToast']),\n    ...mapActions('plugin/toast', ['addToast']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.polar-alert-invert {\n  display: flex;\n  flex-direction: column;\n  /* grow sideways above other elements (temporary/important) */\n  z-index: 1;\n  min-width: 200%;\n}\n.polar-alert-invert::v-deep .v-btn:hover {\n  border: solid #000000 !important;\n  outline: solid #ffffff;\n}\n</style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    toast: {\n      close: 'Benachrichtigung ausblenden',\n    },\n  },\n} as const\nexport const resourcesEn = {\n  plugins: {\n    toast: {\n      close: 'Hide notification',\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import merge from 'lodash.merge'\nimport { generateSimpleGetters } from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { Toast, ToastState } from '../types'\n\nexport const getInitialState = (): ToastState => ({\n  toasts: [],\n  types: {\n    success: {\n      color: undefined,\n      icon: undefined,\n    },\n    warning: {\n      color: undefined,\n      icon: undefined,\n    },\n    info: {\n      color: undefined,\n      icon: undefined,\n    },\n    error: {\n      color: undefined,\n      icon: undefined,\n    },\n  },\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<ToastState, ToastState> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({ state, commit, rootGetters }) {\n        const pluginConfiguration =\n          rootGetters.configuration.toast || getInitialState().types\n        const mergedTypes = merge({}, state.types, {\n          error: pluginConfiguration.error || {},\n          warning: pluginConfiguration.warning || {},\n          info: pluginConfiguration.info || {},\n          success: pluginConfiguration.success || {},\n        })\n        commit('setTypes', mergedTypes)\n      },\n      addToast({ state, commit }, toast: Toast) {\n        // use potential overrides from config; always prefer toast-specifics\n        const smearedToast: Toast = {\n          ...(state.types[toast.type] || {}),\n          ...toast,\n        }\n        commit('addToast', smearedToast)\n        if (toast.timeout) {\n          if (toast.type !== 'error') {\n            setTimeout(() => {\n              commit('removeToast', smearedToast)\n            }, toast.timeout)\n          } else {\n            console.warn(\n              '@polar/plugin-toast: Timeouts for error messages are disabled, they can only be dismissed manually.'\n            )\n          }\n        }\n      },\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n    },\n    mutations: {\n      setTypes(state, types) {\n        state.types = types\n      },\n      addToast(state, toast) {\n        state.toasts = [...state.toasts, toast]\n      },\n      removeToast(state, toast) {\n        state.toasts = state.toasts.filter((t) => t !== toast)\n      },\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { ToastConfiguration } from '@polar/lib-custom-types'\nimport { Toast } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nexport default (options: ToastConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'toast',\n    plugin: Toast,\n    locales,\n    options,\n    storeModule: makeStoreModule(),\n  })\n","<template>\n  <v-slider\n    v-model=\"zoomLevelRange\"\n    vertical\n    class=\"polar-zoom-slider\"\n    :min=\"minimumZoomLevel\"\n    :max=\"maximumZoomLevel\"\n    :aria-label=\"$t('plugins.zoom.slider')\"\n  ></v-slider>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters, mapActions } from 'vuex'\n\nexport default Vue.extend({\n  name: 'ZoomSlider',\n  computed: {\n    ...mapGetters('plugin/zoom', [\n      'zoomLevel',\n      'maximumZoomLevel',\n      'minimumZoomLevel',\n    ]),\n    zoomLevelRange: {\n      get(): number {\n        return this.zoomLevel\n      },\n      set(value: number): void {\n        this.setZoomLevel(value)\n      },\n    },\n  },\n  methods: {\n    ...mapActions('plugin/zoom', ['setZoomLevel']),\n  },\n})\n</script>\n\n<style lang=\"scss\">\n.polar-zoom-slider .v-slider__thumb::before {\n  opacity: 0;\n}\n\n.polar-zoom-slider .v-slider__thumb {\n  width: 16px;\n  height: 16px;\n  border-radius: 2px;\n  left: -8px;\n}\n\n.polar-zoom-slider :hover .v-slider__track-background,\n.polar-zoom-slider :hover .v-slider__track-fill,\n.polar-zoom-slider :hover .v-slider__thumb,\n.polar-zoom-slider :focus .v-slider__thumb {\n  box-shadow: 0 0 0 2px white, 0 0 0 4px #003064;\n}\n\n.polar-zoom-slider .v-slider--vertical {\n  .v-slider__track-container,\n  .v-slider__track-fill,\n  .v-slider__track-background {\n    width: 12px;\n    border-radius: 2px;\n  }\n}\n</style>\n","<template>\n  <div class=\"polar-zoom-wrap\">\n    <template v-if=\"showZoomButtons\">\n      <v-tooltip left :disabled=\"hasSmallDisplay\">\n        <template #activator=\"{ on, attrs }\">\n          <v-btn\n            :aria-label=\"$t('plugins.zoom.in')\"\n            :class=\"\n              renderType === 'iconMenu'\n                ? `polar-zoom-dependent${\n                    deviceIsHorizontal ? '-horizontal' : ''\n                  }`\n                : 'ma-2'\n            \"\n            color=\"primary\"\n            small\n            fab\n            :disabled=\"maximumZoomLevelActive\"\n            v-bind=\"attrs\"\n            @click=\"increaseZoomLevel\"\n            v-on=\"on\"\n          >\n            <v-icon color=\"primaryContrast\"> {{ icons.zoomIn }} </v-icon>\n          </v-btn>\n        </template>\n        <span>{{ $t('plugins.zoom.in') }}</span>\n      </v-tooltip>\n      <v-tooltip left :disabled=\"hasSmallDisplay\">\n        <template #activator=\"{ on, attrs }\">\n          <v-btn\n            :aria-label=\"$t('plugins.zoom.out')\"\n            :class=\"{ 'ma-2': renderType === 'independent' }\"\n            color=\"primary\"\n            small\n            fab\n            :disabled=\"minimumZoomLevelActive\"\n            v-bind=\"attrs\"\n            @click=\"decreaseZoomLevel\"\n            v-on=\"on\"\n          >\n            <v-icon color=\"primaryContrast\"> {{ icons.zoomOut }} </v-icon>\n          </v-btn>\n        </template>\n        <span>{{ $t('plugins.zoom.out') }}</span>\n      </v-tooltip>\n    </template>\n    <v-tooltip v-if=\"addZoomSlider\" left :disabled=\"hasSmallDisplay\">\n      <template #activator=\"{ on, attrs }\">\n        <div v-bind=\"attrs\" v-on=\"on\">\n          <ZoomSlider></ZoomSlider>\n        </div>\n      </template>\n      <span>{{ $t('plugins.zoom.slider') }}</span>\n    </v-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapActions, mapGetters } from 'vuex'\nimport ZoomSlider from './ZoomSlider.vue'\n\nexport default Vue.extend({\n  name: 'ZoomButtonContainer',\n  components: { ZoomSlider },\n  computed: {\n    ...mapGetters(['deviceIsHorizontal', 'hasSmallDisplay', 'hasSmallHeight']),\n    ...mapGetters('plugin/zoom', [\n      'icons',\n      'maximumZoomLevelActive',\n      'minimumZoomLevelActive',\n      'renderType',\n      'showMobile',\n      'showZoomSlider',\n    ]),\n    showZoomButtons(): boolean {\n      return this.hasSmallHeight ? this.showMobile : true\n    },\n    addZoomSlider(): boolean {\n      return !this.hasSmallHeight && this.showZoomSlider\n    },\n  },\n  methods: {\n    ...mapActions('plugin/zoom', ['increaseZoomLevel', 'decreaseZoomLevel']),\n  },\n})\n</script>\n\n<style scoped lang=\"scss\">\n.polar-zoom-dependent-horizontal {\n  margin-left: 0.5rem;\n}\n\n.polar-zoom-dependent {\n  margin-bottom: 0.5rem;\n}\n.polar-zoom-wrap {\n  display: flex;\n  flex-direction: column;\n}\n</style>\n","<template>\n  <component :is=\"component\" v-if=\"component\" />\n  <ZoomButtonContainer v-else />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport ZoomZoomButtonContainer from './ZoomButtonContainer.vue'\n\nexport default Vue.extend({\n  name: 'PolarZoom',\n  components: { ZoomButtonContainer: ZoomZoomButtonContainer },\n  computed: {\n    ...mapGetters('plugin/zoom', ['component']),\n  },\n})\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import { Locale } from '@polar/lib-custom-types'\n\nexport const resourcesDe = {\n  plugins: {\n    zoom: {\n      in: 'Hinein zoomen',\n      out: 'Heraus zoomen',\n      slider: 'Zoomstufe wählen',\n    },\n  },\n} as const\n\nexport const resourcesEn = {\n  plugins: {\n    zoom: {\n      in: 'Zoom in',\n      out: 'Zoom out',\n      slider: 'Choose zoom level',\n    },\n  },\n} as const\n\nconst locales: Locale[] = [\n  {\n    type: 'de',\n    resources: resourcesDe,\n  },\n  {\n    type: 'en',\n    resources: resourcesEn,\n  },\n]\n\nexport default locales\n","import {\n  generateSimpleGetters,\n  generateSimpleMutations,\n} from '@repositoryname/vuex-generators'\nimport { PolarModule } from '@polar/lib-custom-types'\nimport { ZoomGetters, ZoomState } from '../types'\n\nconst getInitialState = (): ZoomState => ({\n  zoomLevel: 0,\n  maximumZoomLevel: 12,\n  minimumZoomLevel: 0,\n})\n\nexport const makeStoreModule = () => {\n  const storeModule: PolarModule<ZoomState, ZoomGetters> = {\n    namespaced: true,\n    state: getInitialState(),\n    actions: {\n      setupModule({ rootGetters: { map }, commit, dispatch }) {\n        const mapView = map.getView()\n        map.on('moveend', () => dispatch('setZoomLevel', mapView.getZoom()))\n\n        dispatch('setZoomLevel', mapView.getZoom())\n        commit('setMaximumZoomLevel', mapView.getMaxZoom())\n        commit('setMinimumZoomLevel', mapView.getMinZoom())\n      },\n      setZoomLevel(\n        {\n          getters: { maximumZoomLevel, minimumZoomLevel, zoomLevel },\n          rootGetters: { map },\n          commit,\n          dispatch,\n        },\n        payload\n      ) {\n        if (\n          payload !== zoomLevel &&\n          zoomLevel <= maximumZoomLevel &&\n          zoomLevel >= minimumZoomLevel &&\n          map\n        ) {\n          commit('setZoomLevel', payload)\n          dispatch('smoothZoom')\n        }\n      },\n      increaseZoomLevel({ dispatch, getters: { zoomLevel } }): void {\n        dispatch('setZoomLevel', zoomLevel + 1)\n      },\n      decreaseZoomLevel({ dispatch, getters: { zoomLevel } }): void {\n        dispatch('setZoomLevel', zoomLevel - 1)\n      },\n      smoothZoom({ rootGetters: { map }, getters: { zoomLevel } }): void {\n        const view = map.getView()\n        if (view) {\n          view.animate({\n            zoom: zoomLevel,\n            duration: 500,\n          })\n        }\n      },\n    },\n    mutations: {\n      ...generateSimpleMutations(getInitialState()),\n    },\n    getters: {\n      ...generateSimpleGetters(getInitialState()),\n      configuration: (_, __, ___, rootGetters) =>\n        rootGetters.configuration.zoom || {},\n      component: (_, getters) => getters.configuration.component || null,\n      icons(_, getters) {\n        const icons = getters.configuration.icons\n        return {\n          zoomIn: icons?.zoomIn ?? 'fa-plus',\n          zoomOut: icons?.zoomOut ?? 'fa-minus',\n        }\n      },\n      maximumZoomLevelActive: (_, { zoomLevel, maximumZoomLevel }): boolean =>\n        zoomLevel >= maximumZoomLevel,\n      minimumZoomLevelActive: (_, { zoomLevel, minimumZoomLevel }): boolean =>\n        zoomLevel <= minimumZoomLevel,\n      renderType: (_, getters) =>\n        getters.configuration.renderType\n          ? getters.configuration.renderType\n          : 'independent',\n      showMobile: (_, getters) =>\n        typeof getters.configuration.showMobile === 'boolean'\n          ? getters.configuration.showMobile\n          : false,\n      showZoomSlider: (_, getters) =>\n        typeof getters.configuration.showZoomSlider === 'boolean'\n          ? getters.configuration.showZoomSlider\n          : false,\n    },\n  }\n\n  return storeModule\n}\n","import Vue from 'vue'\nimport { ZoomConfiguration } from '@polar/lib-custom-types'\nimport { Zoom } from './components'\nimport locales from './locales'\nimport { makeStoreModule } from './store'\n\nimport ZoomButtonContainer from './components/ZoomButtonContainer.vue'\nexport { ZoomButtonContainer }\n\nexport default (options: ZoomConfiguration) => (instance: Vue) =>\n  instance.$store.dispatch('addComponent', {\n    name: 'zoom',\n    plugin: Zoom,\n    locales,\n    storeModule: makeStoreModule(),\n    options,\n  })\n","import core, {\n  setLayout,\n  NineLayout,\n  NineLayoutTag,\n  PolarCore,\n} from '@polar/core'\nimport { MapConfig, Menu } from '@polar/lib-custom-types'\nimport AddressSearch from '@polar/plugin-address-search'\nimport Attributions from '@polar/plugin-attributions'\nimport Draw from '@polar/plugin-draw'\nimport Export from '@polar/plugin-export'\nimport Filter from '@polar/plugin-filter'\nimport Fullscreen from '@polar/plugin-fullscreen'\nimport GeoLocation from '@polar/plugin-geo-location'\nimport Gfi from '@polar/plugin-gfi'\nimport IconMenu from '@polar/plugin-icon-menu'\nimport LayerChooser from '@polar/plugin-layer-chooser'\nimport Legend from '@polar/plugin-legend'\nimport LoadingIndicator from '@polar/plugin-loading-indicator'\nimport Pins from '@polar/plugin-pins'\nimport PointerPosition from '@polar/plugin-pointer-position'\nimport ReverseGeocoder from '@polar/plugin-reverse-geocoder'\nimport Routing from '@polar/plugin-routing'\nimport Scale from '@polar/plugin-scale'\nimport Toast from '@polar/plugin-toast'\nimport Zoom from '@polar/plugin-zoom'\nimport packageInfo from '../package.json'\n\n/* TODO\n * The types below do not match. This is intentional due to this file setting\n * a base for later configuration; it is not meant to contain a full config.\n *\n * We should work something out to make types partial, and maybe identify what's\n * left to do as a type on a per-client basis.\n */\n\ntype PluginName =\n  | 'address-search'\n  | 'attributions'\n  | 'draw'\n  | 'export'\n  | 'filter'\n  | 'fullscreen'\n  | 'geo-location'\n  | 'gfi'\n  | 'icon-menu'\n  | 'layer-chooser'\n  | 'legend'\n  | 'loading-indicator'\n  | 'pins'\n  | 'pointer-position'\n  | 'reverse-geocoder'\n  | 'routing'\n  | 'scale'\n  | 'toast'\n  | 'zoom'\n\n// eslint-disable-next-line no-console\nconsole.info(`@polar/client-generic: running in v${packageInfo.version}.`)\n\nsetLayout(NineLayout)\n\nconst addPlugins = (coreInstance: PolarCore, enabledPlugins: PluginName[]) => {\n  const iconMenu =\n    enabledPlugins.includes('icon-menu') &&\n    IconMenu({\n      displayComponent: true,\n      menus: [\n        enabledPlugins.includes('layer-chooser') && {\n          plugin: LayerChooser({}),\n          icon: 'fa-layer-group',\n          id: 'layerChooser',\n        },\n        enabledPlugins.includes('draw') && {\n          plugin: Draw({}),\n          icon: 'fa-pencil',\n          id: 'draw',\n        },\n        enabledPlugins.includes('filter') && {\n          plugin: Filter({\n            layers: {},\n          }),\n          icon: 'fa-filter',\n          id: 'filter',\n        },\n        enabledPlugins.includes('gfi') && {\n          plugin: Gfi({\n            renderType: 'iconMenu',\n            coordinateSources: [],\n            layers: {},\n          }),\n          icon: 'fa-location-pin',\n          id: 'gfi',\n        },\n        enabledPlugins.includes('zoom') && {\n          plugin: Zoom({ renderType: 'iconMenu' }),\n          id: 'zoom',\n        },\n        enabledPlugins.includes('fullscreen') && {\n          plugin: Fullscreen({ renderType: 'iconMenu' }),\n          id: 'fullscreen',\n        },\n        enabledPlugins.includes('geo-location') && {\n          plugin: GeoLocation({\n            renderType: 'iconMenu',\n          }),\n          id: 'geoLocation',\n        },\n        enabledPlugins.includes('routing') && {\n          plugin: Routing({\n            // Has to be set later\n            apiKey: '',\n            url: 'https://api.openrouteservice.org/v2/directions/',\n            format: 'geojson',\n            type: 'ors',\n          }),\n          icon: 'fa-route',\n          id: 'routing',\n        },\n        enabledPlugins.includes('attributions') && {\n          plugin: Attributions({\n            renderType: 'iconMenu',\n          }),\n          icon: 'fa-regular fa-copyright',\n          id: 'attributions',\n        },\n      ].filter((x) => x) as Menu[],\n      layoutTag: NineLayoutTag.TOP_RIGHT,\n    })\n\n  coreInstance.addPlugins(\n    [\n      iconMenu,\n      enabledPlugins.includes('address-search') &&\n        AddressSearch({\n          layoutTag: NineLayoutTag.TOP_LEFT,\n          searchMethods: [],\n        }),\n      enabledPlugins.includes('pins') && Pins({}),\n      enabledPlugins.includes('legend') &&\n        Legend({\n          layoutTag: NineLayoutTag.BOTTOM_RIGHT,\n          displayComponent: true,\n        }),\n      enabledPlugins.includes('export') &&\n        Export({\n          layoutTag: NineLayoutTag.BOTTOM_LEFT,\n          displayComponent: true,\n        }),\n      enabledPlugins.includes('loading-indicator') &&\n        LoadingIndicator({\n          layoutTag: NineLayoutTag.MIDDLE_MIDDLE,\n        }),\n      enabledPlugins.includes('reverse-geocoder') &&\n        ReverseGeocoder({\n          url: '',\n        }),\n      enabledPlugins.includes('scale') &&\n        Scale({\n          layoutTag: NineLayoutTag.BOTTOM_RIGHT,\n          displayComponent: true,\n        }),\n      enabledPlugins.includes('toast') &&\n        Toast({\n          layoutTag: NineLayoutTag.BOTTOM_MIDDLE,\n          displayComponent: true,\n        }),\n      enabledPlugins.includes('pointer-position') &&\n        PointerPosition({\n          layoutTag: NineLayoutTag.BOTTOM_LEFT,\n          displayComponent: true,\n        }),\n    ].filter((x) => x)\n  )\n}\n\nexport const createMap = ({\n  containerId,\n  services,\n  mapConfiguration,\n  enabledPlugins = [],\n  modifyLayerConfiguration = (x) => x,\n}: {\n  containerId: string\n  services: object[]\n  mapConfiguration: MapConfig\n  enabledPlugins: Array<PluginName>\n  modifyLayerConfiguration: (layerConf: object[]) => object[]\n}) =>\n  new Promise((resolve) => {\n    const coreInstance = { ...core }\n\n    addPlugins(coreInstance, enabledPlugins)\n\n    coreInstance.rawLayerList.initializeLayerList(\n      services,\n      async (layerConf) => {\n        const client = await coreInstance.createMap({\n          containerId,\n          mapConfiguration: {\n            ...mapConfiguration,\n            layerConf: modifyLayerConfiguration(layerConf),\n          },\n        })\n\n        resolve(client)\n      }\n    )\n  })\n\nexport default {\n  createMap,\n}\n","/*!\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\n\nvar Bounds = /** @class */ (function () {\n    function Bounds(left, top, width, height) {\n        this.left = left;\n        this.top = top;\n        this.width = width;\n        this.height = height;\n    }\n    Bounds.prototype.add = function (x, y, w, h) {\n        return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n    };\n    Bounds.fromClientRect = function (context, clientRect) {\n        return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n    };\n    Bounds.fromDOMRectList = function (context, domRectList) {\n        var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });\n        return domRect\n            ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)\n            : Bounds.EMPTY;\n    };\n    Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n    return Bounds;\n}());\nvar parseBounds = function (context, node) {\n    return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\nvar parseDocumentSize = function (document) {\n    var body = document.body;\n    var documentElement = document.documentElement;\n    if (!body || !documentElement) {\n        throw new Error(\"Unable to get document size\");\n    }\n    var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n    var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n    return new Bounds(0, 0, width, height);\n};\n\n/*\n * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar toCodePoints$1 = function (str) {\n    var codePoints = [];\n    var i = 0;\n    var length = str.length;\n    while (i < length) {\n        var value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            var extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            }\n            else {\n                codePoints.push(value);\n                i--;\n            }\n        }\n        else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\nvar fromCodePoint$1 = function () {\n    var codePoints = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        codePoints[_i] = arguments[_i];\n    }\n    if (String.fromCodePoint) {\n        return String.fromCodePoint.apply(String, codePoints);\n    }\n    var length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n    var codeUnits = [];\n    var index = -1;\n    var result = '';\n    while (++index < length) {\n        var codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        }\n        else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode.apply(String, codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\nvar chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n    lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n}\n\n/*\n * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\n    lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\n}\nvar decode$1 = function (base64) {\n    var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n    var buffer = typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n        ? new ArrayBuffer(bufferLength)\n        : new Array(bufferLength);\n    var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup$1$1[base64.charCodeAt(i)];\n        encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\n        encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\n        encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n    return buffer;\n};\nvar polyUint16Array$1 = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\nvar polyUint32Array$1 = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\n/** Shift size for getting the index-2 table offset. */\nvar UTRIE2_SHIFT_2$1 = 5;\n/** Shift size for getting the index-1 table offset. */\nvar UTRIE2_SHIFT_1$1 = 6 + 5;\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nvar UTRIE2_INDEX_SHIFT$1 = 2;\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nvar UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nvar UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n/** Number of entries in a data block. 32=0x20 */\nvar UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n/** Mask for getting the lower bits for the in-data-block offset. */\nvar UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\nvar UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nvar UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nvar UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\nvar UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nvar UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nvar UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n/** Number of entries in an index-2 block. 64=0x40 */\nvar UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nvar UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\nvar slice16$1 = function (view, start, end) {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\nvar slice32$1 = function (view, start, end) {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\nvar createTrieFromBase64$1 = function (base64, _byteLength) {\n    var buffer = decode$1(base64);\n    var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n    var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n    var headerLength = 24;\n    var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n    var data = view32[5] === 2\n        ? slice16$1(view16, (headerLength + view32[4]) / 2)\n        : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n    return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n};\nvar Trie$1 = /** @class */ (function () {\n    function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    Trie.prototype.get = function (codePoint) {\n        var ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n                ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n                return this.data[ix];\n            }\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];\n                ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n                return this.data[ix];\n            }\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    };\n    return Trie;\n}());\n\n/*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i$3 = 0; i$3 < chars$3.length; i$3++) {\n    lookup$3[chars$3.charCodeAt(i$3)] = i$3;\n}\n\nvar base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\n\nvar LETTER_NUMBER_MODIFIER = 50;\n// Non-tailorable Line Breaking Classes\nvar BK = 1; //  Cause a line break (after)\nvar CR$1 = 2; //  Cause a line break (after), except between CR and LF\nvar LF$1 = 3; //  Cause a line break (after)\nvar CM = 4; //  Prohibit a line break between the character and the preceding character\nvar NL = 5; //  Cause a line break (after)\nvar WJ = 7; //  Prohibit line breaks before and after\nvar ZW = 8; //  Provide a break opportunity\nvar GL = 9; //  Prohibit line breaks before and after\nvar SP = 10; // Enable indirect line breaks\nvar ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nvar B2 = 12; //  Provide a line break opportunity before and after the character\nvar BA = 13; //  Generally provide a line break opportunity after the character\nvar BB = 14; //  Generally provide a line break opportunity before the character\nvar HY = 15; //  Provide a line break opportunity after the character, except in numeric context\nvar CB = 16; //   Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nvar CL = 17; //  Prohibit line breaks before\nvar CP = 18; //  Prohibit line breaks before\nvar EX = 19; //  Prohibit line breaks before\nvar IN = 20; //  Allow only indirect line breaks between pairs\nvar NS = 21; //  Allow only indirect line breaks before\nvar OP = 22; //  Prohibit line breaks after\nvar QU = 23; //  Act like they are both opening and closing\n// Numeric Context\nvar IS = 24; //  Prevent breaks after any and before numeric\nvar NU = 25; //  Form numeric expressions for line breaking purposes\nvar PO = 26; //  Do not break following a numeric expression\nvar PR = 27; //  Do not break in front of a numeric expression\nvar SY = 28; //  Prevent a break before; and allow a break after\n// Other Characters\nvar AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\nvar AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\nvar CJ = 31; //  Treat as NS or ID for strict or normal breaking.\nvar EB = 32; //  Do not break from following Emoji Modifier\nvar EM = 33; //  Do not break from preceding Emoji Base\nvar H2 = 34; //  Form Korean syllable blocks\nvar H3 = 35; //  Form Korean syllable blocks\nvar HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\nvar ID = 37; //  Break before or after; except in some numeric context\nvar JL = 38; //  Form Korean syllable blocks\nvar JV = 39; //  Form Korean syllable blocks\nvar JT = 40; //  Form Korean syllable blocks\nvar RI$1 = 41; //  Keep pairs together. For pairs; break before and after other classes\nvar SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\nvar XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\nvar ea_OP = [0x2329, 0xff08];\nvar BREAK_MANDATORY = '!';\nvar BREAK_NOT_ALLOWED$1 = '×';\nvar BREAK_ALLOWED$1 = '÷';\nvar UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\nvar ALPHABETICS = [AL, HL];\nvar HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\nvar SPACE$1 = [SP, ZW];\nvar PREFIX_POSTFIX = [PR, PO];\nvar LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\nvar KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nvar HYPHEN = [HY, BA];\nvar codePointsToCharacterClasses = function (codePoints, lineBreak) {\n    if (lineBreak === void 0) { lineBreak = 'strict'; }\n    var types = [];\n    var indices = [];\n    var categories = [];\n    codePoints.forEach(function (codePoint, index) {\n        var classType = UnicodeTrie$1.get(codePoint);\n        if (classType > LETTER_NUMBER_MODIFIER) {\n            categories.push(true);\n            classType -= LETTER_NUMBER_MODIFIER;\n        }\n        else {\n            categories.push(false);\n        }\n        if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n            // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n            if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n                indices.push(index);\n                return types.push(CB);\n            }\n        }\n        if (classType === CM || classType === ZWJ$1) {\n            // LB10 Treat any remaining combining mark or ZWJ as AL.\n            if (index === 0) {\n                indices.push(index);\n                return types.push(AL);\n            }\n            // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n            // the base character in all of the following rules. Treat ZWJ as if it were CM.\n            var prev = types[index - 1];\n            if (LINE_BREAKS.indexOf(prev) === -1) {\n                indices.push(indices[index - 1]);\n                return types.push(prev);\n            }\n            indices.push(index);\n            return types.push(AL);\n        }\n        indices.push(index);\n        if (classType === CJ) {\n            return types.push(lineBreak === 'strict' ? NS : ID);\n        }\n        if (classType === SA) {\n            return types.push(AL);\n        }\n        if (classType === AI) {\n            return types.push(AL);\n        }\n        // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n        // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n        // to take into account the actual line breaking properties for these characters.\n        if (classType === XX) {\n            if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n                return types.push(ID);\n            }\n            else {\n                return types.push(AL);\n            }\n        }\n        types.push(classType);\n    });\n    return [indices, types, categories];\n};\nvar isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n    var current = classTypes[currentIndex];\n    if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n        var i = currentIndex;\n        while (i <= classTypes.length) {\n            i++;\n            var next = classTypes[i];\n            if (next === b) {\n                return true;\n            }\n            if (next !== SP) {\n                break;\n            }\n        }\n    }\n    if (current === SP) {\n        var i = currentIndex;\n        while (i > 0) {\n            i--;\n            var prev = classTypes[i];\n            if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n                var n = currentIndex;\n                while (n <= classTypes.length) {\n                    n++;\n                    var next = classTypes[n];\n                    if (next === b) {\n                        return true;\n                    }\n                    if (next !== SP) {\n                        break;\n                    }\n                }\n            }\n            if (prev !== SP) {\n                break;\n            }\n        }\n    }\n    return false;\n};\nvar previousNonSpaceClassType = function (currentIndex, classTypes) {\n    var i = currentIndex;\n    while (i >= 0) {\n        var type = classTypes[i];\n        if (type === SP) {\n            i--;\n        }\n        else {\n            return type;\n        }\n    }\n    return 0;\n};\nvar _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n    if (indicies[index] === 0) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    var currentIndex = index - 1;\n    if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    var beforeIndex = currentIndex - 1;\n    var afterIndex = currentIndex + 1;\n    var current = classTypes[currentIndex];\n    // LB4 Always break after hard line breaks.\n    // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n    var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n    var next = classTypes[afterIndex];\n    if (current === CR$1 && next === LF$1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n        return BREAK_MANDATORY;\n    }\n    // LB6 Do not break before hard line breaks.\n    if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB7 Do not break before spaces or zero width space.\n    if (SPACE$1.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n        return BREAK_ALLOWED$1;\n    }\n    // LB8a Do not break after a zero width joiner.\n    if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // zwj emojis\n    if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB11 Do not break before or after Word joiner and related characters.\n    if (current === WJ || next === WJ) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB12 Do not break after NBSP and related characters.\n    if (current === GL) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n    if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n    if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB14 Do not break after ‘[’, even after spaces.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB15 Do not break within ‘”[’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB17 Do not break within ‘——’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB18 Break after spaces.\n    if (current === SP) {\n        return BREAK_ALLOWED$1;\n    }\n    // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n    if (current === QU || next === QU) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB20 Break before and after unresolved CB.\n    if (next === CB || current === CB) {\n        return BREAK_ALLOWED$1;\n    }\n    // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n    if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB21a Don't break after Hebrew + Hyphen.\n    if (before === HL && HYPHEN.indexOf(current) !== -1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB21b Don’t break between Solidus and Hebrew letters.\n    if (current === SY && next === HL) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB22 Do not break before ellipsis.\n    if (next === IN) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB23 Do not break between digits and letters.\n    if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n    if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n        ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n    if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n        (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB25 Do not break between the following pairs of classes relevant to numbers:\n    if (\n    // (PR | PO) × ( OP | HY )? NU\n    ([PR, PO].indexOf(current) !== -1 &&\n        (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n        // ( OP | HY ) × NU\n        ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n        // NU ×\t(NU | SY | IS)\n        (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n    if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n        var prevIndex = currentIndex;\n        while (prevIndex >= 0) {\n            var type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED$1;\n            }\n            else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            }\n            else {\n                break;\n            }\n        }\n    }\n    // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n    if ([PR, PO].indexOf(next) !== -1) {\n        var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n        while (prevIndex >= 0) {\n            var type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED$1;\n            }\n            else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            }\n            else {\n                break;\n            }\n        }\n    }\n    // LB26 Do not break a Korean syllable.\n    if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n        ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n        ([JT, H3].indexOf(current) !== -1 && next === JT)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB27 Treat a Korean Syllable Block the same as ID.\n    if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n        (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB28 Do not break between alphabetics (“at”).\n    if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n    if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n    if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n        next === OP &&\n        ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n        (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n    // indicators preceding the position of the break.\n    if (current === RI$1 && next === RI$1) {\n        var i = indicies[currentIndex];\n        var count = 1;\n        while (i > 0) {\n            i--;\n            if (classTypes[i] === RI$1) {\n                count++;\n            }\n            else {\n                break;\n            }\n        }\n        if (count % 2 !== 0) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n    }\n    // LB30b Do not break between an emoji base and an emoji modifier.\n    if (current === EB && next === EM) {\n        return BREAK_NOT_ALLOWED$1;\n    }\n    return BREAK_ALLOWED$1;\n};\nvar cssFormattedClasses = function (codePoints, options) {\n    if (!options) {\n        options = { lineBreak: 'normal', wordBreak: 'normal' };\n    }\n    var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\n    if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n        classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\n    }\n    var forbiddenBreakpoints = options.wordBreak === 'keep-all'\n        ? isLetterNumber.map(function (letterNumber, i) {\n            return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n        })\n        : undefined;\n    return [indicies, classTypes, forbiddenBreakpoints];\n};\nvar Break = /** @class */ (function () {\n    function Break(codePoints, lineBreak, start, end) {\n        this.codePoints = codePoints;\n        this.required = lineBreak === BREAK_MANDATORY;\n        this.start = start;\n        this.end = end;\n    }\n    Break.prototype.slice = function () {\n        return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n    };\n    return Break;\n}());\nvar LineBreaker = function (str, options) {\n    var codePoints = toCodePoints$1(str);\n    var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\n    var length = codePoints.length;\n    var lastEnd = 0;\n    var nextIndex = 0;\n    return {\n        next: function () {\n            if (nextIndex >= length) {\n                return { done: true, value: null };\n            }\n            var lineBreak = BREAK_NOT_ALLOWED$1;\n            while (nextIndex < length &&\n                (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n                    BREAK_NOT_ALLOWED$1) { }\n            if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n                var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n                lastEnd = nextIndex;\n                return { value: value, done: false };\n            }\n            return { done: true, value: null };\n        },\n    };\n};\n\n// https://www.w3.org/TR/css-syntax-3\nvar FLAG_UNRESTRICTED = 1 << 0;\nvar FLAG_ID = 1 << 1;\nvar FLAG_INTEGER = 1 << 2;\nvar FLAG_NUMBER = 1 << 3;\nvar LINE_FEED = 0x000a;\nvar SOLIDUS = 0x002f;\nvar REVERSE_SOLIDUS = 0x005c;\nvar CHARACTER_TABULATION = 0x0009;\nvar SPACE = 0x0020;\nvar QUOTATION_MARK = 0x0022;\nvar EQUALS_SIGN = 0x003d;\nvar NUMBER_SIGN = 0x0023;\nvar DOLLAR_SIGN = 0x0024;\nvar PERCENTAGE_SIGN = 0x0025;\nvar APOSTROPHE = 0x0027;\nvar LEFT_PARENTHESIS = 0x0028;\nvar RIGHT_PARENTHESIS = 0x0029;\nvar LOW_LINE = 0x005f;\nvar HYPHEN_MINUS = 0x002d;\nvar EXCLAMATION_MARK = 0x0021;\nvar LESS_THAN_SIGN = 0x003c;\nvar GREATER_THAN_SIGN = 0x003e;\nvar COMMERCIAL_AT = 0x0040;\nvar LEFT_SQUARE_BRACKET = 0x005b;\nvar RIGHT_SQUARE_BRACKET = 0x005d;\nvar CIRCUMFLEX_ACCENT = 0x003d;\nvar LEFT_CURLY_BRACKET = 0x007b;\nvar QUESTION_MARK = 0x003f;\nvar RIGHT_CURLY_BRACKET = 0x007d;\nvar VERTICAL_LINE = 0x007c;\nvar TILDE = 0x007e;\nvar CONTROL = 0x0080;\nvar REPLACEMENT_CHARACTER = 0xfffd;\nvar ASTERISK = 0x002a;\nvar PLUS_SIGN = 0x002b;\nvar COMMA = 0x002c;\nvar COLON = 0x003a;\nvar SEMICOLON = 0x003b;\nvar FULL_STOP = 0x002e;\nvar NULL = 0x0000;\nvar BACKSPACE = 0x0008;\nvar LINE_TABULATION = 0x000b;\nvar SHIFT_OUT = 0x000e;\nvar INFORMATION_SEPARATOR_ONE = 0x001f;\nvar DELETE = 0x007f;\nvar EOF = -1;\nvar ZERO = 0x0030;\nvar a = 0x0061;\nvar e = 0x0065;\nvar f = 0x0066;\nvar u = 0x0075;\nvar z = 0x007a;\nvar A = 0x0041;\nvar E = 0x0045;\nvar F = 0x0046;\nvar U = 0x0055;\nvar Z = 0x005a;\nvar isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\nvar isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\nvar isHex = function (codePoint) {\n    return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\n};\nvar isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\nvar isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\nvar isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\nvar isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\nvar isWhiteSpace = function (codePoint) {\n    return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n};\nvar isNameStartCodePoint = function (codePoint) {\n    return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n};\nvar isNameCodePoint = function (codePoint) {\n    return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n};\nvar isNonPrintableCodePoint = function (codePoint) {\n    return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\n        codePoint === LINE_TABULATION ||\n        (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n        codePoint === DELETE);\n};\nvar isValidEscape = function (c1, c2) {\n    if (c1 !== REVERSE_SOLIDUS) {\n        return false;\n    }\n    return c2 !== LINE_FEED;\n};\nvar isIdentifierStart = function (c1, c2, c3) {\n    if (c1 === HYPHEN_MINUS) {\n        return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n    }\n    else if (isNameStartCodePoint(c1)) {\n        return true;\n    }\n    else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n        return true;\n    }\n    return false;\n};\nvar isNumberStart = function (c1, c2, c3) {\n    if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n        if (isDigit(c2)) {\n            return true;\n        }\n        return c2 === FULL_STOP && isDigit(c3);\n    }\n    if (c1 === FULL_STOP) {\n        return isDigit(c2);\n    }\n    return isDigit(c1);\n};\nvar stringToNumber = function (codePoints) {\n    var c = 0;\n    var sign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            sign = -1;\n        }\n        c++;\n    }\n    var integers = [];\n    while (isDigit(codePoints[c])) {\n        integers.push(codePoints[c++]);\n    }\n    var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n    if (codePoints[c] === FULL_STOP) {\n        c++;\n    }\n    var fraction = [];\n    while (isDigit(codePoints[c])) {\n        fraction.push(codePoints[c++]);\n    }\n    var fracd = fraction.length;\n    var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n    if (codePoints[c] === E || codePoints[c] === e) {\n        c++;\n    }\n    var expsign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            expsign = -1;\n        }\n        c++;\n    }\n    var exponent = [];\n    while (isDigit(codePoints[c])) {\n        exponent.push(codePoints[c++]);\n    }\n    var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n    return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\nvar LEFT_PARENTHESIS_TOKEN = {\n    type: 2 /* LEFT_PARENTHESIS_TOKEN */\n};\nvar RIGHT_PARENTHESIS_TOKEN = {\n    type: 3 /* RIGHT_PARENTHESIS_TOKEN */\n};\nvar COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\nvar SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\nvar PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\nvar COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\nvar DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\nvar INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\nvar LEFT_CURLY_BRACKET_TOKEN = {\n    type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\n};\nvar RIGHT_CURLY_BRACKET_TOKEN = {\n    type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\n};\nvar SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\nvar BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\nvar BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\nvar CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\nvar CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\nvar COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\nvar SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\nvar LEFT_SQUARE_BRACKET_TOKEN = {\n    type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\n};\nvar RIGHT_SQUARE_BRACKET_TOKEN = {\n    type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\n};\nvar WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\nvar EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\nvar Tokenizer = /** @class */ (function () {\n    function Tokenizer() {\n        this._value = [];\n    }\n    Tokenizer.prototype.write = function (chunk) {\n        this._value = this._value.concat(toCodePoints$1(chunk));\n    };\n    Tokenizer.prototype.read = function () {\n        var tokens = [];\n        var token = this.consumeToken();\n        while (token !== EOF_TOKEN) {\n            tokens.push(token);\n            token = this.consumeToken();\n        }\n        return tokens;\n    };\n    Tokenizer.prototype.consumeToken = function () {\n        var codePoint = this.consumeCodePoint();\n        switch (codePoint) {\n            case QUOTATION_MARK:\n                return this.consumeStringToken(QUOTATION_MARK);\n            case NUMBER_SIGN:\n                var c1 = this.peekCodePoint(0);\n                var c2 = this.peekCodePoint(1);\n                var c3 = this.peekCodePoint(2);\n                if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n                    var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n                    var value = this.consumeName();\n                    return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\n                }\n                break;\n            case DOLLAR_SIGN:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUFFIX_MATCH_TOKEN;\n                }\n                break;\n            case APOSTROPHE:\n                return this.consumeStringToken(APOSTROPHE);\n            case LEFT_PARENTHESIS:\n                return LEFT_PARENTHESIS_TOKEN;\n            case RIGHT_PARENTHESIS:\n                return RIGHT_PARENTHESIS_TOKEN;\n            case ASTERISK:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUBSTRING_MATCH_TOKEN;\n                }\n                break;\n            case PLUS_SIGN:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case COMMA:\n                return COMMA_TOKEN;\n            case HYPHEN_MINUS:\n                var e1 = codePoint;\n                var e2 = this.peekCodePoint(0);\n                var e3 = this.peekCodePoint(1);\n                if (isNumberStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                if (isIdentifierStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n                if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDC_TOKEN;\n                }\n                break;\n            case FULL_STOP:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case SOLIDUS:\n                if (this.peekCodePoint(0) === ASTERISK) {\n                    this.consumeCodePoint();\n                    while (true) {\n                        var c = this.consumeCodePoint();\n                        if (c === ASTERISK) {\n                            c = this.consumeCodePoint();\n                            if (c === SOLIDUS) {\n                                return this.consumeToken();\n                            }\n                        }\n                        if (c === EOF) {\n                            return this.consumeToken();\n                        }\n                    }\n                }\n                break;\n            case COLON:\n                return COLON_TOKEN;\n            case SEMICOLON:\n                return SEMICOLON_TOKEN;\n            case LESS_THAN_SIGN:\n                if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\n                    this.peekCodePoint(1) === HYPHEN_MINUS &&\n                    this.peekCodePoint(2) === HYPHEN_MINUS) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDO_TOKEN;\n                }\n                break;\n            case COMMERCIAL_AT:\n                var a1 = this.peekCodePoint(0);\n                var a2 = this.peekCodePoint(1);\n                var a3 = this.peekCodePoint(2);\n                if (isIdentifierStart(a1, a2, a3)) {\n                    var value = this.consumeName();\n                    return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\n                }\n                break;\n            case LEFT_SQUARE_BRACKET:\n                return LEFT_SQUARE_BRACKET_TOKEN;\n            case REVERSE_SOLIDUS:\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n                break;\n            case RIGHT_SQUARE_BRACKET:\n                return RIGHT_SQUARE_BRACKET_TOKEN;\n            case CIRCUMFLEX_ACCENT:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return PREFIX_MATCH_TOKEN;\n                }\n                break;\n            case LEFT_CURLY_BRACKET:\n                return LEFT_CURLY_BRACKET_TOKEN;\n            case RIGHT_CURLY_BRACKET:\n                return RIGHT_CURLY_BRACKET_TOKEN;\n            case u:\n            case U:\n                var u1 = this.peekCodePoint(0);\n                var u2 = this.peekCodePoint(1);\n                if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n                    this.consumeCodePoint();\n                    this.consumeUnicodeRangeToken();\n                }\n                this.reconsumeCodePoint(codePoint);\n                return this.consumeIdentLikeToken();\n            case VERTICAL_LINE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return DASH_MATCH_TOKEN;\n                }\n                if (this.peekCodePoint(0) === VERTICAL_LINE) {\n                    this.consumeCodePoint();\n                    return COLUMN_TOKEN;\n                }\n                break;\n            case TILDE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return INCLUDE_MATCH_TOKEN;\n                }\n                break;\n            case EOF:\n                return EOF_TOKEN;\n        }\n        if (isWhiteSpace(codePoint)) {\n            this.consumeWhiteSpace();\n            return WHITESPACE_TOKEN;\n        }\n        if (isDigit(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n        }\n        if (isNameStartCodePoint(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeIdentLikeToken();\n        }\n        return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\n    };\n    Tokenizer.prototype.consumeCodePoint = function () {\n        var value = this._value.shift();\n        return typeof value === 'undefined' ? -1 : value;\n    };\n    Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n        this._value.unshift(codePoint);\n    };\n    Tokenizer.prototype.peekCodePoint = function (delta) {\n        if (delta >= this._value.length) {\n            return -1;\n        }\n        return this._value[delta];\n    };\n    Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n        var digits = [];\n        var codePoint = this.consumeCodePoint();\n        while (isHex(codePoint) && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n        }\n        var questionMarks = false;\n        while (codePoint === QUESTION_MARK && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n            questionMarks = true;\n        }\n        if (questionMarks) {\n            var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\n            var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\n            return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\n        }\n        var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n        if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n            this.consumeCodePoint();\n            codePoint = this.consumeCodePoint();\n            var endDigits = [];\n            while (isHex(codePoint) && endDigits.length < 6) {\n                endDigits.push(codePoint);\n                codePoint = this.consumeCodePoint();\n            }\n            var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n            return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\n        }\n        else {\n            return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\n        }\n    };\n    Tokenizer.prototype.consumeIdentLikeToken = function () {\n        var value = this.consumeName();\n        if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return this.consumeUrlToken();\n        }\n        else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return { type: 19 /* FUNCTION_TOKEN */, value: value };\n        }\n        return { type: 20 /* IDENT_TOKEN */, value: value };\n    };\n    Tokenizer.prototype.consumeUrlToken = function () {\n        var value = [];\n        this.consumeWhiteSpace();\n        if (this.peekCodePoint(0) === EOF) {\n            return { type: 22 /* URL_TOKEN */, value: '' };\n        }\n        var next = this.peekCodePoint(0);\n        if (next === APOSTROPHE || next === QUOTATION_MARK) {\n            var stringToken = this.consumeStringToken(this.consumeCodePoint());\n            if (stringToken.type === 0 /* STRING_TOKEN */) {\n                this.consumeWhiteSpace();\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return { type: 22 /* URL_TOKEN */, value: stringToken.value };\n                }\n            }\n            this.consumeBadUrlRemnants();\n            return BAD_URL_TOKEN;\n        }\n        while (true) {\n            var codePoint = this.consumeCodePoint();\n            if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n                return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n            }\n            else if (isWhiteSpace(codePoint)) {\n                this.consumeWhiteSpace();\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n                }\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            }\n            else if (codePoint === QUOTATION_MARK ||\n                codePoint === APOSTROPHE ||\n                codePoint === LEFT_PARENTHESIS ||\n                isNonPrintableCodePoint(codePoint)) {\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            }\n            else if (codePoint === REVERSE_SOLIDUS) {\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    value.push(this.consumeEscapedCodePoint());\n                }\n                else {\n                    this.consumeBadUrlRemnants();\n                    return BAD_URL_TOKEN;\n                }\n            }\n            else {\n                value.push(codePoint);\n            }\n        }\n    };\n    Tokenizer.prototype.consumeWhiteSpace = function () {\n        while (isWhiteSpace(this.peekCodePoint(0))) {\n            this.consumeCodePoint();\n        }\n    };\n    Tokenizer.prototype.consumeBadUrlRemnants = function () {\n        while (true) {\n            var codePoint = this.consumeCodePoint();\n            if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n                return;\n            }\n            if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                this.consumeEscapedCodePoint();\n            }\n        }\n    };\n    Tokenizer.prototype.consumeStringSlice = function (count) {\n        var SLICE_STACK_SIZE = 50000;\n        var value = '';\n        while (count > 0) {\n            var amount = Math.min(SLICE_STACK_SIZE, count);\n            value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n            count -= amount;\n        }\n        this._value.shift();\n        return value;\n    };\n    Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n        var value = '';\n        var i = 0;\n        do {\n            var codePoint = this._value[i];\n            if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n                value += this.consumeStringSlice(i);\n                return { type: 0 /* STRING_TOKEN */, value: value };\n            }\n            if (codePoint === LINE_FEED) {\n                this._value.splice(0, i);\n                return BAD_STRING_TOKEN;\n            }\n            if (codePoint === REVERSE_SOLIDUS) {\n                var next = this._value[i + 1];\n                if (next !== EOF && next !== undefined) {\n                    if (next === LINE_FEED) {\n                        value += this.consumeStringSlice(i);\n                        i = -1;\n                        this._value.shift();\n                    }\n                    else if (isValidEscape(codePoint, next)) {\n                        value += this.consumeStringSlice(i);\n                        value += fromCodePoint$1(this.consumeEscapedCodePoint());\n                        i = -1;\n                    }\n                }\n            }\n            i++;\n        } while (true);\n    };\n    Tokenizer.prototype.consumeNumber = function () {\n        var repr = [];\n        var type = FLAG_INTEGER;\n        var c1 = this.peekCodePoint(0);\n        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n            repr.push(this.consumeCodePoint());\n        }\n        while (isDigit(this.peekCodePoint(0))) {\n            repr.push(this.consumeCodePoint());\n        }\n        c1 = this.peekCodePoint(0);\n        var c2 = this.peekCodePoint(1);\n        if (c1 === FULL_STOP && isDigit(c2)) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n        c1 = this.peekCodePoint(0);\n        c2 = this.peekCodePoint(1);\n        var c3 = this.peekCodePoint(2);\n        if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n        return [stringToNumber(repr), type];\n    };\n    Tokenizer.prototype.consumeNumericToken = function () {\n        var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\n        var c1 = this.peekCodePoint(0);\n        var c2 = this.peekCodePoint(1);\n        var c3 = this.peekCodePoint(2);\n        if (isIdentifierStart(c1, c2, c3)) {\n            var unit = this.consumeName();\n            return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };\n        }\n        if (c1 === PERCENTAGE_SIGN) {\n            this.consumeCodePoint();\n            return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };\n        }\n        return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\n    };\n    Tokenizer.prototype.consumeEscapedCodePoint = function () {\n        var codePoint = this.consumeCodePoint();\n        if (isHex(codePoint)) {\n            var hex = fromCodePoint$1(codePoint);\n            while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n                hex += fromCodePoint$1(this.consumeCodePoint());\n            }\n            if (isWhiteSpace(this.peekCodePoint(0))) {\n                this.consumeCodePoint();\n            }\n            var hexCodePoint = parseInt(hex, 16);\n            if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n                return REPLACEMENT_CHARACTER;\n            }\n            return hexCodePoint;\n        }\n        if (codePoint === EOF) {\n            return REPLACEMENT_CHARACTER;\n        }\n        return codePoint;\n    };\n    Tokenizer.prototype.consumeName = function () {\n        var result = '';\n        while (true) {\n            var codePoint = this.consumeCodePoint();\n            if (isNameCodePoint(codePoint)) {\n                result += fromCodePoint$1(codePoint);\n            }\n            else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                result += fromCodePoint$1(this.consumeEscapedCodePoint());\n            }\n            else {\n                this.reconsumeCodePoint(codePoint);\n                return result;\n            }\n        }\n    };\n    return Tokenizer;\n}());\n\nvar Parser = /** @class */ (function () {\n    function Parser(tokens) {\n        this._tokens = tokens;\n    }\n    Parser.create = function (value) {\n        var tokenizer = new Tokenizer();\n        tokenizer.write(value);\n        return new Parser(tokenizer.read());\n    };\n    Parser.parseValue = function (value) {\n        return Parser.create(value).parseComponentValue();\n    };\n    Parser.parseValues = function (value) {\n        return Parser.create(value).parseComponentValues();\n    };\n    Parser.prototype.parseComponentValue = function () {\n        var token = this.consumeToken();\n        while (token.type === 31 /* WHITESPACE_TOKEN */) {\n            token = this.consumeToken();\n        }\n        if (token.type === 32 /* EOF_TOKEN */) {\n            throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n        }\n        this.reconsumeToken(token);\n        var value = this.consumeComponentValue();\n        do {\n            token = this.consumeToken();\n        } while (token.type === 31 /* WHITESPACE_TOKEN */);\n        if (token.type === 32 /* EOF_TOKEN */) {\n            return value;\n        }\n        throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n    };\n    Parser.prototype.parseComponentValues = function () {\n        var values = [];\n        while (true) {\n            var value = this.consumeComponentValue();\n            if (value.type === 32 /* EOF_TOKEN */) {\n                return values;\n            }\n            values.push(value);\n            values.push();\n        }\n    };\n    Parser.prototype.consumeComponentValue = function () {\n        var token = this.consumeToken();\n        switch (token.type) {\n            case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\n            case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\n            case 2 /* LEFT_PARENTHESIS_TOKEN */:\n                return this.consumeSimpleBlock(token.type);\n            case 19 /* FUNCTION_TOKEN */:\n                return this.consumeFunction(token);\n        }\n        return token;\n    };\n    Parser.prototype.consumeSimpleBlock = function (type) {\n        var block = { type: type, values: [] };\n        var token = this.consumeToken();\n        while (true) {\n            if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\n                return block;\n            }\n            this.reconsumeToken(token);\n            block.values.push(this.consumeComponentValue());\n            token = this.consumeToken();\n        }\n    };\n    Parser.prototype.consumeFunction = function (functionToken) {\n        var cssFunction = {\n            name: functionToken.value,\n            values: [],\n            type: 18 /* FUNCTION */\n        };\n        while (true) {\n            var token = this.consumeToken();\n            if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\n                return cssFunction;\n            }\n            this.reconsumeToken(token);\n            cssFunction.values.push(this.consumeComponentValue());\n        }\n    };\n    Parser.prototype.consumeToken = function () {\n        var token = this._tokens.shift();\n        return typeof token === 'undefined' ? EOF_TOKEN : token;\n    };\n    Parser.prototype.reconsumeToken = function (token) {\n        this._tokens.unshift(token);\n    };\n    return Parser;\n}());\nvar isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };\nvar isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };\nvar isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };\nvar isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };\nvar isIdentWithValue = function (token, value) {\n    return isIdentToken(token) && token.value === value;\n};\nvar nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };\nvar nonFunctionArgSeparator = function (token) {\n    return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\n};\nvar parseFunctionArgs = function (tokens) {\n    var args = [];\n    var arg = [];\n    tokens.forEach(function (token) {\n        if (token.type === 4 /* COMMA_TOKEN */) {\n            if (arg.length === 0) {\n                throw new Error(\"Error parsing function args, zero tokens for arg\");\n            }\n            args.push(arg);\n            arg = [];\n            return;\n        }\n        if (token.type !== 31 /* WHITESPACE_TOKEN */) {\n            arg.push(token);\n        }\n    });\n    if (arg.length) {\n        args.push(arg);\n    }\n    return args;\n};\nvar isEndingTokenFor = function (token, type) {\n    if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\n        return true;\n    }\n    if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\n        return true;\n    }\n    return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\n};\n\nvar isLength = function (token) {\n    return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\n};\n\nvar isLengthPercentage = function (token) {\n    return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\n};\nvar parseLengthPercentageTuple = function (tokens) {\n    return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n};\nvar ZERO_LENGTH = {\n    type: 17 /* NUMBER_TOKEN */,\n    number: 0,\n    flags: FLAG_INTEGER\n};\nvar FIFTY_PERCENT = {\n    type: 16 /* PERCENTAGE_TOKEN */,\n    number: 50,\n    flags: FLAG_INTEGER\n};\nvar HUNDRED_PERCENT = {\n    type: 16 /* PERCENTAGE_TOKEN */,\n    number: 100,\n    flags: FLAG_INTEGER\n};\nvar getAbsoluteValueForTuple = function (tuple, width, height) {\n    var x = tuple[0], y = tuple[1];\n    return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nvar getAbsoluteValue = function (token, parent) {\n    if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n        return (token.number / 100) * parent;\n    }\n    if (isDimensionToken(token)) {\n        switch (token.unit) {\n            case 'rem':\n            case 'em':\n                return 16 * token.number; // TODO use correct font-size\n            case 'px':\n            default:\n                return token.number;\n        }\n    }\n    return token.number;\n};\n\nvar DEG = 'deg';\nvar GRAD = 'grad';\nvar RAD = 'rad';\nvar TURN = 'turn';\nvar angle = {\n    name: 'angle',\n    parse: function (_context, value) {\n        if (value.type === 15 /* DIMENSION_TOKEN */) {\n            switch (value.unit) {\n                case DEG:\n                    return (Math.PI * value.number) / 180;\n                case GRAD:\n                    return (Math.PI / 200) * value.number;\n                case RAD:\n                    return value.number;\n                case TURN:\n                    return Math.PI * 2 * value.number;\n            }\n        }\n        throw new Error(\"Unsupported angle type\");\n    }\n};\nvar isAngle = function (value) {\n    if (value.type === 15 /* DIMENSION_TOKEN */) {\n        if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n            return true;\n        }\n    }\n    return false;\n};\nvar parseNamedSide = function (tokens) {\n    var sideOrCorner = tokens\n        .filter(isIdentToken)\n        .map(function (ident) { return ident.value; })\n        .join(' ');\n    switch (sideOrCorner) {\n        case 'to bottom right':\n        case 'to right bottom':\n        case 'left top':\n        case 'top left':\n            return [ZERO_LENGTH, ZERO_LENGTH];\n        case 'to top':\n        case 'bottom':\n            return deg(0);\n        case 'to bottom left':\n        case 'to left bottom':\n        case 'right top':\n        case 'top right':\n            return [ZERO_LENGTH, HUNDRED_PERCENT];\n        case 'to right':\n        case 'left':\n            return deg(90);\n        case 'to top left':\n        case 'to left top':\n        case 'right bottom':\n        case 'bottom right':\n            return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n        case 'to bottom':\n        case 'top':\n            return deg(180);\n        case 'to top right':\n        case 'to right top':\n        case 'left bottom':\n        case 'bottom left':\n            return [HUNDRED_PERCENT, ZERO_LENGTH];\n        case 'to left':\n        case 'right':\n            return deg(270);\n    }\n    return 0;\n};\nvar deg = function (deg) { return (Math.PI * deg) / 180; };\n\nvar color$1 = {\n    name: 'color',\n    parse: function (context, value) {\n        if (value.type === 18 /* FUNCTION */) {\n            var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n            if (typeof colorFunction === 'undefined') {\n                throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n            }\n            return colorFunction(context, value.values);\n        }\n        if (value.type === 5 /* HASH_TOKEN */) {\n            if (value.value.length === 3) {\n                var r = value.value.substring(0, 1);\n                var g = value.value.substring(1, 2);\n                var b = value.value.substring(2, 3);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n            }\n            if (value.value.length === 4) {\n                var r = value.value.substring(0, 1);\n                var g = value.value.substring(1, 2);\n                var b = value.value.substring(2, 3);\n                var a = value.value.substring(3, 4);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n            }\n            if (value.value.length === 6) {\n                var r = value.value.substring(0, 2);\n                var g = value.value.substring(2, 4);\n                var b = value.value.substring(4, 6);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n            }\n            if (value.value.length === 8) {\n                var r = value.value.substring(0, 2);\n                var g = value.value.substring(2, 4);\n                var b = value.value.substring(4, 6);\n                var a = value.value.substring(6, 8);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n            }\n        }\n        if (value.type === 20 /* IDENT_TOKEN */) {\n            var namedColor = COLORS[value.value.toUpperCase()];\n            if (typeof namedColor !== 'undefined') {\n                return namedColor;\n            }\n        }\n        return COLORS.TRANSPARENT;\n    }\n};\nvar isTransparent = function (color) { return (0xff & color) === 0; };\nvar asString = function (color) {\n    var alpha = 0xff & color;\n    var blue = 0xff & (color >> 8);\n    var green = 0xff & (color >> 16);\n    var red = 0xff & (color >> 24);\n    return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n};\nvar pack = function (r, g, b, a) {\n    return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n};\nvar getTokenColorValue = function (token, i) {\n    if (token.type === 17 /* NUMBER_TOKEN */) {\n        return token.number;\n    }\n    if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n        var max = i === 3 ? 1 : 255;\n        return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n    }\n    return 0;\n};\nvar rgb = function (_context, args) {\n    var tokens = args.filter(nonFunctionArgSeparator);\n    if (tokens.length === 3) {\n        var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\n        return pack(r, g, b, 1);\n    }\n    if (tokens.length === 4) {\n        var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\n        return pack(r, g, b, a);\n    }\n    return 0;\n};\nfunction hue2rgb(t1, t2, hue) {\n    if (hue < 0) {\n        hue += 1;\n    }\n    if (hue >= 1) {\n        hue -= 1;\n    }\n    if (hue < 1 / 6) {\n        return (t2 - t1) * hue * 6 + t1;\n    }\n    else if (hue < 1 / 2) {\n        return t2;\n    }\n    else if (hue < 2 / 3) {\n        return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n    }\n    else {\n        return t1;\n    }\n}\nvar hsl = function (context, args) {\n    var tokens = args.filter(nonFunctionArgSeparator);\n    var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\n    var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n    var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n    var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n    var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n    if (s === 0) {\n        return pack(l * 255, l * 255, l * 255, 1);\n    }\n    var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n    var t1 = l * 2 - t2;\n    var r = hue2rgb(t1, t2, h + 1 / 3);\n    var g = hue2rgb(t1, t2, h);\n    var b = hue2rgb(t1, t2, h - 1 / 3);\n    return pack(r * 255, g * 255, b * 255, a);\n};\nvar SUPPORTED_COLOR_FUNCTIONS = {\n    hsl: hsl,\n    hsla: hsl,\n    rgb: rgb,\n    rgba: rgb\n};\nvar parseColor = function (context, value) {\n    return color$1.parse(context, Parser.create(value).parseComponentValue());\n};\nvar COLORS = {\n    ALICEBLUE: 0xf0f8ffff,\n    ANTIQUEWHITE: 0xfaebd7ff,\n    AQUA: 0x00ffffff,\n    AQUAMARINE: 0x7fffd4ff,\n    AZURE: 0xf0ffffff,\n    BEIGE: 0xf5f5dcff,\n    BISQUE: 0xffe4c4ff,\n    BLACK: 0x000000ff,\n    BLANCHEDALMOND: 0xffebcdff,\n    BLUE: 0x0000ffff,\n    BLUEVIOLET: 0x8a2be2ff,\n    BROWN: 0xa52a2aff,\n    BURLYWOOD: 0xdeb887ff,\n    CADETBLUE: 0x5f9ea0ff,\n    CHARTREUSE: 0x7fff00ff,\n    CHOCOLATE: 0xd2691eff,\n    CORAL: 0xff7f50ff,\n    CORNFLOWERBLUE: 0x6495edff,\n    CORNSILK: 0xfff8dcff,\n    CRIMSON: 0xdc143cff,\n    CYAN: 0x00ffffff,\n    DARKBLUE: 0x00008bff,\n    DARKCYAN: 0x008b8bff,\n    DARKGOLDENROD: 0xb886bbff,\n    DARKGRAY: 0xa9a9a9ff,\n    DARKGREEN: 0x006400ff,\n    DARKGREY: 0xa9a9a9ff,\n    DARKKHAKI: 0xbdb76bff,\n    DARKMAGENTA: 0x8b008bff,\n    DARKOLIVEGREEN: 0x556b2fff,\n    DARKORANGE: 0xff8c00ff,\n    DARKORCHID: 0x9932ccff,\n    DARKRED: 0x8b0000ff,\n    DARKSALMON: 0xe9967aff,\n    DARKSEAGREEN: 0x8fbc8fff,\n    DARKSLATEBLUE: 0x483d8bff,\n    DARKSLATEGRAY: 0x2f4f4fff,\n    DARKSLATEGREY: 0x2f4f4fff,\n    DARKTURQUOISE: 0x00ced1ff,\n    DARKVIOLET: 0x9400d3ff,\n    DEEPPINK: 0xff1493ff,\n    DEEPSKYBLUE: 0x00bfffff,\n    DIMGRAY: 0x696969ff,\n    DIMGREY: 0x696969ff,\n    DODGERBLUE: 0x1e90ffff,\n    FIREBRICK: 0xb22222ff,\n    FLORALWHITE: 0xfffaf0ff,\n    FORESTGREEN: 0x228b22ff,\n    FUCHSIA: 0xff00ffff,\n    GAINSBORO: 0xdcdcdcff,\n    GHOSTWHITE: 0xf8f8ffff,\n    GOLD: 0xffd700ff,\n    GOLDENROD: 0xdaa520ff,\n    GRAY: 0x808080ff,\n    GREEN: 0x008000ff,\n    GREENYELLOW: 0xadff2fff,\n    GREY: 0x808080ff,\n    HONEYDEW: 0xf0fff0ff,\n    HOTPINK: 0xff69b4ff,\n    INDIANRED: 0xcd5c5cff,\n    INDIGO: 0x4b0082ff,\n    IVORY: 0xfffff0ff,\n    KHAKI: 0xf0e68cff,\n    LAVENDER: 0xe6e6faff,\n    LAVENDERBLUSH: 0xfff0f5ff,\n    LAWNGREEN: 0x7cfc00ff,\n    LEMONCHIFFON: 0xfffacdff,\n    LIGHTBLUE: 0xadd8e6ff,\n    LIGHTCORAL: 0xf08080ff,\n    LIGHTCYAN: 0xe0ffffff,\n    LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n    LIGHTGRAY: 0xd3d3d3ff,\n    LIGHTGREEN: 0x90ee90ff,\n    LIGHTGREY: 0xd3d3d3ff,\n    LIGHTPINK: 0xffb6c1ff,\n    LIGHTSALMON: 0xffa07aff,\n    LIGHTSEAGREEN: 0x20b2aaff,\n    LIGHTSKYBLUE: 0x87cefaff,\n    LIGHTSLATEGRAY: 0x778899ff,\n    LIGHTSLATEGREY: 0x778899ff,\n    LIGHTSTEELBLUE: 0xb0c4deff,\n    LIGHTYELLOW: 0xffffe0ff,\n    LIME: 0x00ff00ff,\n    LIMEGREEN: 0x32cd32ff,\n    LINEN: 0xfaf0e6ff,\n    MAGENTA: 0xff00ffff,\n    MAROON: 0x800000ff,\n    MEDIUMAQUAMARINE: 0x66cdaaff,\n    MEDIUMBLUE: 0x0000cdff,\n    MEDIUMORCHID: 0xba55d3ff,\n    MEDIUMPURPLE: 0x9370dbff,\n    MEDIUMSEAGREEN: 0x3cb371ff,\n    MEDIUMSLATEBLUE: 0x7b68eeff,\n    MEDIUMSPRINGGREEN: 0x00fa9aff,\n    MEDIUMTURQUOISE: 0x48d1ccff,\n    MEDIUMVIOLETRED: 0xc71585ff,\n    MIDNIGHTBLUE: 0x191970ff,\n    MINTCREAM: 0xf5fffaff,\n    MISTYROSE: 0xffe4e1ff,\n    MOCCASIN: 0xffe4b5ff,\n    NAVAJOWHITE: 0xffdeadff,\n    NAVY: 0x000080ff,\n    OLDLACE: 0xfdf5e6ff,\n    OLIVE: 0x808000ff,\n    OLIVEDRAB: 0x6b8e23ff,\n    ORANGE: 0xffa500ff,\n    ORANGERED: 0xff4500ff,\n    ORCHID: 0xda70d6ff,\n    PALEGOLDENROD: 0xeee8aaff,\n    PALEGREEN: 0x98fb98ff,\n    PALETURQUOISE: 0xafeeeeff,\n    PALEVIOLETRED: 0xdb7093ff,\n    PAPAYAWHIP: 0xffefd5ff,\n    PEACHPUFF: 0xffdab9ff,\n    PERU: 0xcd853fff,\n    PINK: 0xffc0cbff,\n    PLUM: 0xdda0ddff,\n    POWDERBLUE: 0xb0e0e6ff,\n    PURPLE: 0x800080ff,\n    REBECCAPURPLE: 0x663399ff,\n    RED: 0xff0000ff,\n    ROSYBROWN: 0xbc8f8fff,\n    ROYALBLUE: 0x4169e1ff,\n    SADDLEBROWN: 0x8b4513ff,\n    SALMON: 0xfa8072ff,\n    SANDYBROWN: 0xf4a460ff,\n    SEAGREEN: 0x2e8b57ff,\n    SEASHELL: 0xfff5eeff,\n    SIENNA: 0xa0522dff,\n    SILVER: 0xc0c0c0ff,\n    SKYBLUE: 0x87ceebff,\n    SLATEBLUE: 0x6a5acdff,\n    SLATEGRAY: 0x708090ff,\n    SLATEGREY: 0x708090ff,\n    SNOW: 0xfffafaff,\n    SPRINGGREEN: 0x00ff7fff,\n    STEELBLUE: 0x4682b4ff,\n    TAN: 0xd2b48cff,\n    TEAL: 0x008080ff,\n    THISTLE: 0xd8bfd8ff,\n    TOMATO: 0xff6347ff,\n    TRANSPARENT: 0x00000000,\n    TURQUOISE: 0x40e0d0ff,\n    VIOLET: 0xee82eeff,\n    WHEAT: 0xf5deb3ff,\n    WHITE: 0xffffffff,\n    WHITESMOKE: 0xf5f5f5ff,\n    YELLOW: 0xffff00ff,\n    YELLOWGREEN: 0x9acd32ff\n};\n\nvar backgroundClip = {\n    name: 'background-clip',\n    initialValue: 'border-box',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return tokens.map(function (token) {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return 1 /* PADDING_BOX */;\n                    case 'content-box':\n                        return 2 /* CONTENT_BOX */;\n                }\n            }\n            return 0 /* BORDER_BOX */;\n        });\n    }\n};\n\nvar backgroundColor = {\n    name: \"background-color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n};\n\nvar parseColorStop = function (context, args) {\n    var color = color$1.parse(context, args[0]);\n    var stop = args[1];\n    return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };\n};\nvar processColorStops = function (stops, lineLength) {\n    var first = stops[0];\n    var last = stops[stops.length - 1];\n    if (first.stop === null) {\n        first.stop = ZERO_LENGTH;\n    }\n    if (last.stop === null) {\n        last.stop = HUNDRED_PERCENT;\n    }\n    var processStops = [];\n    var previous = 0;\n    for (var i = 0; i < stops.length; i++) {\n        var stop_1 = stops[i].stop;\n        if (stop_1 !== null) {\n            var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n            if (absoluteValue > previous) {\n                processStops.push(absoluteValue);\n            }\n            else {\n                processStops.push(previous);\n            }\n            previous = absoluteValue;\n        }\n        else {\n            processStops.push(null);\n        }\n    }\n    var gapBegin = null;\n    for (var i = 0; i < processStops.length; i++) {\n        var stop_2 = processStops[i];\n        if (stop_2 === null) {\n            if (gapBegin === null) {\n                gapBegin = i;\n            }\n        }\n        else if (gapBegin !== null) {\n            var gapLength = i - gapBegin;\n            var beforeGap = processStops[gapBegin - 1];\n            var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n            for (var g = 1; g <= gapLength; g++) {\n                processStops[gapBegin + g - 1] = gapValue * g;\n            }\n            gapBegin = null;\n        }\n    }\n    return stops.map(function (_a, i) {\n        var color = _a.color;\n        return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\n    });\n};\nvar getAngleFromCorner = function (corner, width, height) {\n    var centerX = width / 2;\n    var centerY = height / 2;\n    var x = getAbsoluteValue(corner[0], width) - centerX;\n    var y = centerY - getAbsoluteValue(corner[1], height);\n    return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\nvar calculateGradientDirection = function (angle, width, height) {\n    var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n    var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n    var halfWidth = width / 2;\n    var halfHeight = height / 2;\n    var halfLineLength = lineLength / 2;\n    var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n    var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n    return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\nvar distance = function (a, b) { return Math.sqrt(a * a + b * b); };\nvar findCorner = function (width, height, x, y, closest) {\n    var corners = [\n        [0, 0],\n        [0, height],\n        [width, 0],\n        [width, height]\n    ];\n    return corners.reduce(function (stat, corner) {\n        var cx = corner[0], cy = corner[1];\n        var d = distance(x - cx, y - cy);\n        if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n            return {\n                optimumCorner: corner,\n                optimumDistance: d\n            };\n        }\n        return stat;\n    }, {\n        optimumDistance: closest ? Infinity : -Infinity,\n        optimumCorner: null\n    }).optimumCorner;\n};\nvar calculateRadius = function (gradient, x, y, width, height) {\n    var rx = 0;\n    var ry = 0;\n    switch (gradient.size) {\n        case 0 /* CLOSEST_SIDE */:\n            // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n            if (gradient.shape === 0 /* CIRCLE */) {\n                rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            }\n            else if (gradient.shape === 1 /* ELLIPSE */) {\n                rx = Math.min(Math.abs(x), Math.abs(x - width));\n                ry = Math.min(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n        case 2 /* CLOSEST_CORNER */:\n            // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n            if (gradient.shape === 0 /* CIRCLE */) {\n                rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n            }\n            else if (gradient.shape === 1 /* ELLIPSE */) {\n                // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n                var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n                var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n        case 1 /* FARTHEST_SIDE */:\n            // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n            if (gradient.shape === 0 /* CIRCLE */) {\n                rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            }\n            else if (gradient.shape === 1 /* ELLIPSE */) {\n                rx = Math.max(Math.abs(x), Math.abs(x - width));\n                ry = Math.max(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n        case 3 /* FARTHEST_CORNER */:\n            // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n            // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n            if (gradient.shape === 0 /* CIRCLE */) {\n                rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n            }\n            else if (gradient.shape === 1 /* ELLIPSE */) {\n                // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n                var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n                var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n    }\n    if (Array.isArray(gradient.size)) {\n        rx = getAbsoluteValue(gradient.size[0], width);\n        ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n    }\n    return [rx, ry];\n};\n\nvar linearGradient = function (context, tokens) {\n    var angle$1 = deg(180);\n    var stops = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n        if (i === 0) {\n            var firstToken = arg[0];\n            if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\n                angle$1 = parseNamedSide(arg);\n                return;\n            }\n            else if (isAngle(firstToken)) {\n                angle$1 = angle.parse(context, firstToken);\n                return;\n            }\n        }\n        var colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n    return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\n};\n\nvar prefixLinearGradient = function (context, tokens) {\n    var angle$1 = deg(180);\n    var stops = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n        if (i === 0) {\n            var firstToken = arg[0];\n            if (firstToken.type === 20 /* IDENT_TOKEN */ &&\n                ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n                angle$1 = parseNamedSide(arg);\n                return;\n            }\n            else if (isAngle(firstToken)) {\n                angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n                return;\n            }\n        }\n        var colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n    return {\n        angle: angle$1,\n        stops: stops,\n        type: 1 /* LINEAR_GRADIENT */\n    };\n};\n\nvar webkitGradient = function (context, tokens) {\n    var angle = deg(180);\n    var stops = [];\n    var type = 1 /* LINEAR_GRADIENT */;\n    var shape = 0 /* CIRCLE */;\n    var size = 3 /* FARTHEST_CORNER */;\n    var position = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n        var firstToken = arg[0];\n        if (i === 0) {\n            if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n                type = 1 /* LINEAR_GRADIENT */;\n                return;\n            }\n            else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n                type = 2 /* RADIAL_GRADIENT */;\n                return;\n            }\n        }\n        if (firstToken.type === 18 /* FUNCTION */) {\n            if (firstToken.name === 'from') {\n                var color = color$1.parse(context, firstToken.values[0]);\n                stops.push({ stop: ZERO_LENGTH, color: color });\n            }\n            else if (firstToken.name === 'to') {\n                var color = color$1.parse(context, firstToken.values[0]);\n                stops.push({ stop: HUNDRED_PERCENT, color: color });\n            }\n            else if (firstToken.name === 'color-stop') {\n                var values = firstToken.values.filter(nonFunctionArgSeparator);\n                if (values.length === 2) {\n                    var color = color$1.parse(context, values[1]);\n                    var stop_1 = values[0];\n                    if (isNumberToken(stop_1)) {\n                        stops.push({\n                            stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },\n                            color: color\n                        });\n                    }\n                }\n            }\n        }\n    });\n    return type === 1 /* LINEAR_GRADIENT */\n        ? {\n            angle: (angle + deg(180)) % deg(360),\n            stops: stops,\n            type: type\n        }\n        : { size: size, shape: shape, stops: stops, position: position, type: type };\n};\n\nvar CLOSEST_SIDE = 'closest-side';\nvar FARTHEST_SIDE = 'farthest-side';\nvar CLOSEST_CORNER = 'closest-corner';\nvar FARTHEST_CORNER = 'farthest-corner';\nvar CIRCLE = 'circle';\nvar ELLIPSE = 'ellipse';\nvar COVER = 'cover';\nvar CONTAIN = 'contain';\nvar radialGradient = function (context, tokens) {\n    var shape = 0 /* CIRCLE */;\n    var size = 3 /* FARTHEST_CORNER */;\n    var stops = [];\n    var position = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n        var isColorStop = true;\n        if (i === 0) {\n            var isAtPosition_1 = false;\n            isColorStop = arg.reduce(function (acc, token) {\n                if (isAtPosition_1) {\n                    if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case 'center':\n                                position.push(FIFTY_PERCENT);\n                                return acc;\n                            case 'top':\n                            case 'left':\n                                position.push(ZERO_LENGTH);\n                                return acc;\n                            case 'right':\n                            case 'bottom':\n                                position.push(HUNDRED_PERCENT);\n                                return acc;\n                        }\n                    }\n                    else if (isLengthPercentage(token) || isLength(token)) {\n                        position.push(token);\n                    }\n                }\n                else if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = 0 /* CIRCLE */;\n                            return false;\n                        case ELLIPSE:\n                            shape = 1 /* ELLIPSE */;\n                            return false;\n                        case 'at':\n                            isAtPosition_1 = true;\n                            return false;\n                        case CLOSEST_SIDE:\n                            size = 0 /* CLOSEST_SIDE */;\n                            return false;\n                        case COVER:\n                        case FARTHEST_SIDE:\n                            size = 1 /* FARTHEST_SIDE */;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_CORNER:\n                            size = 2 /* CLOSEST_CORNER */;\n                            return false;\n                        case FARTHEST_CORNER:\n                            size = 3 /* FARTHEST_CORNER */;\n                            return false;\n                    }\n                }\n                else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n                return acc;\n            }, isColorStop);\n        }\n        if (isColorStop) {\n            var colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n    return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n};\n\nvar prefixRadialGradient = function (context, tokens) {\n    var shape = 0 /* CIRCLE */;\n    var size = 3 /* FARTHEST_CORNER */;\n    var stops = [];\n    var position = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n        var isColorStop = true;\n        if (i === 0) {\n            isColorStop = arg.reduce(function (acc, token) {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case 'center':\n                            position.push(FIFTY_PERCENT);\n                            return false;\n                        case 'top':\n                        case 'left':\n                            position.push(ZERO_LENGTH);\n                            return false;\n                        case 'right':\n                        case 'bottom':\n                            position.push(HUNDRED_PERCENT);\n                            return false;\n                    }\n                }\n                else if (isLengthPercentage(token) || isLength(token)) {\n                    position.push(token);\n                    return false;\n                }\n                return acc;\n            }, isColorStop);\n        }\n        else if (i === 1) {\n            isColorStop = arg.reduce(function (acc, token) {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = 0 /* CIRCLE */;\n                            return false;\n                        case ELLIPSE:\n                            shape = 1 /* ELLIPSE */;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_SIDE:\n                            size = 0 /* CLOSEST_SIDE */;\n                            return false;\n                        case FARTHEST_SIDE:\n                            size = 1 /* FARTHEST_SIDE */;\n                            return false;\n                        case CLOSEST_CORNER:\n                            size = 2 /* CLOSEST_CORNER */;\n                            return false;\n                        case COVER:\n                        case FARTHEST_CORNER:\n                            size = 3 /* FARTHEST_CORNER */;\n                            return false;\n                    }\n                }\n                else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n                return acc;\n            }, isColorStop);\n        }\n        if (isColorStop) {\n            var colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n    return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n};\n\nvar isLinearGradient = function (background) {\n    return background.type === 1 /* LINEAR_GRADIENT */;\n};\nvar isRadialGradient = function (background) {\n    return background.type === 2 /* RADIAL_GRADIENT */;\n};\nvar image = {\n    name: 'image',\n    parse: function (context, value) {\n        if (value.type === 22 /* URL_TOKEN */) {\n            var image_1 = { url: value.value, type: 0 /* URL */ };\n            context.cache.addImage(value.value);\n            return image_1;\n        }\n        if (value.type === 18 /* FUNCTION */) {\n            var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n            if (typeof imageFunction === 'undefined') {\n                throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n            }\n            return imageFunction(context, value.values);\n        }\n        throw new Error(\"Unsupported image type \" + value.type);\n    }\n};\nfunction isSupportedImage(value) {\n    return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&\n        (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));\n}\nvar SUPPORTED_IMAGE_FUNCTIONS = {\n    'linear-gradient': linearGradient,\n    '-moz-linear-gradient': prefixLinearGradient,\n    '-ms-linear-gradient': prefixLinearGradient,\n    '-o-linear-gradient': prefixLinearGradient,\n    '-webkit-linear-gradient': prefixLinearGradient,\n    'radial-gradient': radialGradient,\n    '-moz-radial-gradient': prefixRadialGradient,\n    '-ms-radial-gradient': prefixRadialGradient,\n    '-o-radial-gradient': prefixRadialGradient,\n    '-webkit-radial-gradient': prefixRadialGradient,\n    '-webkit-gradient': webkitGradient\n};\n\nvar backgroundImage = {\n    name: 'background-image',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (context, tokens) {\n        if (tokens.length === 0) {\n            return [];\n        }\n        var first = tokens[0];\n        if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n            return [];\n        }\n        return tokens\n            .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })\n            .map(function (value) { return image.parse(context, value); });\n    }\n};\n\nvar backgroundOrigin = {\n    name: 'background-origin',\n    initialValue: 'border-box',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return tokens.map(function (token) {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return 1 /* PADDING_BOX */;\n                    case 'content-box':\n                        return 2 /* CONTENT_BOX */;\n                }\n            }\n            return 0 /* BORDER_BOX */;\n        });\n    }\n};\n\nvar backgroundPosition = {\n    name: 'background-position',\n    initialValue: '0% 0%',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (_context, tokens) {\n        return parseFunctionArgs(tokens)\n            .map(function (values) { return values.filter(isLengthPercentage); })\n            .map(parseLengthPercentageTuple);\n    }\n};\n\nvar backgroundRepeat = {\n    name: 'background-repeat',\n    initialValue: 'repeat',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return parseFunctionArgs(tokens)\n            .map(function (values) {\n            return values\n                .filter(isIdentToken)\n                .map(function (token) { return token.value; })\n                .join(' ');\n        })\n            .map(parseBackgroundRepeat);\n    }\n};\nvar parseBackgroundRepeat = function (value) {\n    switch (value) {\n        case 'no-repeat':\n            return 1 /* NO_REPEAT */;\n        case 'repeat-x':\n        case 'repeat no-repeat':\n            return 2 /* REPEAT_X */;\n        case 'repeat-y':\n        case 'no-repeat repeat':\n            return 3 /* REPEAT_Y */;\n        case 'repeat':\n        default:\n            return 0 /* REPEAT */;\n    }\n};\n\nvar BACKGROUND_SIZE;\n(function (BACKGROUND_SIZE) {\n    BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n    BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n    BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n})(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\nvar backgroundSize = {\n    name: 'background-size',\n    initialValue: '0',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\n    }\n};\nvar isBackgroundSizeInfoToken = function (value) {\n    return isIdentToken(value) || isLengthPercentage(value);\n};\n\nvar borderColorForSide = function (side) { return ({\n    name: \"border-\" + side + \"-color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n}); };\nvar borderTopColor = borderColorForSide('top');\nvar borderRightColor = borderColorForSide('right');\nvar borderBottomColor = borderColorForSide('bottom');\nvar borderLeftColor = borderColorForSide('left');\n\nvar borderRadiusForSide = function (side) { return ({\n    name: \"border-radius-\" + side,\n    initialValue: '0 0',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n    }\n}); };\nvar borderTopLeftRadius = borderRadiusForSide('top-left');\nvar borderTopRightRadius = borderRadiusForSide('top-right');\nvar borderBottomRightRadius = borderRadiusForSide('bottom-right');\nvar borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\nvar borderStyleForSide = function (side) { return ({\n    name: \"border-\" + side + \"-style\",\n    initialValue: 'solid',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, style) {\n        switch (style) {\n            case 'none':\n                return 0 /* NONE */;\n            case 'dashed':\n                return 2 /* DASHED */;\n            case 'dotted':\n                return 3 /* DOTTED */;\n            case 'double':\n                return 4 /* DOUBLE */;\n        }\n        return 1 /* SOLID */;\n    }\n}); };\nvar borderTopStyle = borderStyleForSide('top');\nvar borderRightStyle = borderStyleForSide('right');\nvar borderBottomStyle = borderStyleForSide('bottom');\nvar borderLeftStyle = borderStyleForSide('left');\n\nvar borderWidthForSide = function (side) { return ({\n    name: \"border-\" + side + \"-width\",\n    initialValue: '0',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n}); };\nvar borderTopWidth = borderWidthForSide('top');\nvar borderRightWidth = borderWidthForSide('right');\nvar borderBottomWidth = borderWidthForSide('bottom');\nvar borderLeftWidth = borderWidthForSide('left');\n\nvar color = {\n    name: \"color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n};\n\nvar direction = {\n    name: 'direction',\n    initialValue: 'ltr',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, direction) {\n        switch (direction) {\n            case 'rtl':\n                return 1 /* RTL */;\n            case 'ltr':\n            default:\n                return 0 /* LTR */;\n        }\n    }\n};\n\nvar display = {\n    name: 'display',\n    initialValue: 'inline-block',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return tokens.filter(isIdentToken).reduce(function (bit, token) {\n            return bit | parseDisplayValue(token.value);\n        }, 0 /* NONE */);\n    }\n};\nvar parseDisplayValue = function (display) {\n    switch (display) {\n        case 'block':\n        case '-webkit-box':\n            return 2 /* BLOCK */;\n        case 'inline':\n            return 4 /* INLINE */;\n        case 'run-in':\n            return 8 /* RUN_IN */;\n        case 'flow':\n            return 16 /* FLOW */;\n        case 'flow-root':\n            return 32 /* FLOW_ROOT */;\n        case 'table':\n            return 64 /* TABLE */;\n        case 'flex':\n        case '-webkit-flex':\n            return 128 /* FLEX */;\n        case 'grid':\n        case '-ms-grid':\n            return 256 /* GRID */;\n        case 'ruby':\n            return 512 /* RUBY */;\n        case 'subgrid':\n            return 1024 /* SUBGRID */;\n        case 'list-item':\n            return 2048 /* LIST_ITEM */;\n        case 'table-row-group':\n            return 4096 /* TABLE_ROW_GROUP */;\n        case 'table-header-group':\n            return 8192 /* TABLE_HEADER_GROUP */;\n        case 'table-footer-group':\n            return 16384 /* TABLE_FOOTER_GROUP */;\n        case 'table-row':\n            return 32768 /* TABLE_ROW */;\n        case 'table-cell':\n            return 65536 /* TABLE_CELL */;\n        case 'table-column-group':\n            return 131072 /* TABLE_COLUMN_GROUP */;\n        case 'table-column':\n            return 262144 /* TABLE_COLUMN */;\n        case 'table-caption':\n            return 524288 /* TABLE_CAPTION */;\n        case 'ruby-base':\n            return 1048576 /* RUBY_BASE */;\n        case 'ruby-text':\n            return 2097152 /* RUBY_TEXT */;\n        case 'ruby-base-container':\n            return 4194304 /* RUBY_BASE_CONTAINER */;\n        case 'ruby-text-container':\n            return 8388608 /* RUBY_TEXT_CONTAINER */;\n        case 'contents':\n            return 16777216 /* CONTENTS */;\n        case 'inline-block':\n            return 33554432 /* INLINE_BLOCK */;\n        case 'inline-list-item':\n            return 67108864 /* INLINE_LIST_ITEM */;\n        case 'inline-table':\n            return 134217728 /* INLINE_TABLE */;\n        case 'inline-flex':\n            return 268435456 /* INLINE_FLEX */;\n        case 'inline-grid':\n            return 536870912 /* INLINE_GRID */;\n    }\n    return 0 /* NONE */;\n};\n\nvar float = {\n    name: 'float',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, float) {\n        switch (float) {\n            case 'left':\n                return 1 /* LEFT */;\n            case 'right':\n                return 2 /* RIGHT */;\n            case 'inline-start':\n                return 3 /* INLINE_START */;\n            case 'inline-end':\n                return 4 /* INLINE_END */;\n        }\n        return 0 /* NONE */;\n    }\n};\n\nvar letterSpacing = {\n    name: 'letter-spacing',\n    initialValue: '0',\n    prefix: false,\n    type: 0 /* VALUE */,\n    parse: function (_context, token) {\n        if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\n            return 0;\n        }\n        if (token.type === 17 /* NUMBER_TOKEN */) {\n            return token.number;\n        }\n        if (token.type === 15 /* DIMENSION_TOKEN */) {\n            return token.number;\n        }\n        return 0;\n    }\n};\n\nvar LINE_BREAK;\n(function (LINE_BREAK) {\n    LINE_BREAK[\"NORMAL\"] = \"normal\";\n    LINE_BREAK[\"STRICT\"] = \"strict\";\n})(LINE_BREAK || (LINE_BREAK = {}));\nvar lineBreak = {\n    name: 'line-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, lineBreak) {\n        switch (lineBreak) {\n            case 'strict':\n                return LINE_BREAK.STRICT;\n            case 'normal':\n            default:\n                return LINE_BREAK.NORMAL;\n        }\n    }\n};\n\nvar lineHeight = {\n    name: 'line-height',\n    initialValue: 'normal',\n    prefix: false,\n    type: 4 /* TOKEN_VALUE */\n};\nvar computeLineHeight = function (token, fontSize) {\n    if (isIdentToken(token) && token.value === 'normal') {\n        return 1.2 * fontSize;\n    }\n    else if (token.type === 17 /* NUMBER_TOKEN */) {\n        return fontSize * token.number;\n    }\n    else if (isLengthPercentage(token)) {\n        return getAbsoluteValue(token, fontSize);\n    }\n    return fontSize;\n};\n\nvar listStyleImage = {\n    name: 'list-style-image',\n    initialValue: 'none',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (context, token) {\n        if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n            return null;\n        }\n        return image.parse(context, token);\n    }\n};\n\nvar listStylePosition = {\n    name: 'list-style-position',\n    initialValue: 'outside',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, position) {\n        switch (position) {\n            case 'inside':\n                return 0 /* INSIDE */;\n            case 'outside':\n            default:\n                return 1 /* OUTSIDE */;\n        }\n    }\n};\n\nvar listStyleType = {\n    name: 'list-style-type',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, type) {\n        switch (type) {\n            case 'disc':\n                return 0 /* DISC */;\n            case 'circle':\n                return 1 /* CIRCLE */;\n            case 'square':\n                return 2 /* SQUARE */;\n            case 'decimal':\n                return 3 /* DECIMAL */;\n            case 'cjk-decimal':\n                return 4 /* CJK_DECIMAL */;\n            case 'decimal-leading-zero':\n                return 5 /* DECIMAL_LEADING_ZERO */;\n            case 'lower-roman':\n                return 6 /* LOWER_ROMAN */;\n            case 'upper-roman':\n                return 7 /* UPPER_ROMAN */;\n            case 'lower-greek':\n                return 8 /* LOWER_GREEK */;\n            case 'lower-alpha':\n                return 9 /* LOWER_ALPHA */;\n            case 'upper-alpha':\n                return 10 /* UPPER_ALPHA */;\n            case 'arabic-indic':\n                return 11 /* ARABIC_INDIC */;\n            case 'armenian':\n                return 12 /* ARMENIAN */;\n            case 'bengali':\n                return 13 /* BENGALI */;\n            case 'cambodian':\n                return 14 /* CAMBODIAN */;\n            case 'cjk-earthly-branch':\n                return 15 /* CJK_EARTHLY_BRANCH */;\n            case 'cjk-heavenly-stem':\n                return 16 /* CJK_HEAVENLY_STEM */;\n            case 'cjk-ideographic':\n                return 17 /* CJK_IDEOGRAPHIC */;\n            case 'devanagari':\n                return 18 /* DEVANAGARI */;\n            case 'ethiopic-numeric':\n                return 19 /* ETHIOPIC_NUMERIC */;\n            case 'georgian':\n                return 20 /* GEORGIAN */;\n            case 'gujarati':\n                return 21 /* GUJARATI */;\n            case 'gurmukhi':\n                return 22 /* GURMUKHI */;\n            case 'hebrew':\n                return 22 /* HEBREW */;\n            case 'hiragana':\n                return 23 /* HIRAGANA */;\n            case 'hiragana-iroha':\n                return 24 /* HIRAGANA_IROHA */;\n            case 'japanese-formal':\n                return 25 /* JAPANESE_FORMAL */;\n            case 'japanese-informal':\n                return 26 /* JAPANESE_INFORMAL */;\n            case 'kannada':\n                return 27 /* KANNADA */;\n            case 'katakana':\n                return 28 /* KATAKANA */;\n            case 'katakana-iroha':\n                return 29 /* KATAKANA_IROHA */;\n            case 'khmer':\n                return 30 /* KHMER */;\n            case 'korean-hangul-formal':\n                return 31 /* KOREAN_HANGUL_FORMAL */;\n            case 'korean-hanja-formal':\n                return 32 /* KOREAN_HANJA_FORMAL */;\n            case 'korean-hanja-informal':\n                return 33 /* KOREAN_HANJA_INFORMAL */;\n            case 'lao':\n                return 34 /* LAO */;\n            case 'lower-armenian':\n                return 35 /* LOWER_ARMENIAN */;\n            case 'malayalam':\n                return 36 /* MALAYALAM */;\n            case 'mongolian':\n                return 37 /* MONGOLIAN */;\n            case 'myanmar':\n                return 38 /* MYANMAR */;\n            case 'oriya':\n                return 39 /* ORIYA */;\n            case 'persian':\n                return 40 /* PERSIAN */;\n            case 'simp-chinese-formal':\n                return 41 /* SIMP_CHINESE_FORMAL */;\n            case 'simp-chinese-informal':\n                return 42 /* SIMP_CHINESE_INFORMAL */;\n            case 'tamil':\n                return 43 /* TAMIL */;\n            case 'telugu':\n                return 44 /* TELUGU */;\n            case 'thai':\n                return 45 /* THAI */;\n            case 'tibetan':\n                return 46 /* TIBETAN */;\n            case 'trad-chinese-formal':\n                return 47 /* TRAD_CHINESE_FORMAL */;\n            case 'trad-chinese-informal':\n                return 48 /* TRAD_CHINESE_INFORMAL */;\n            case 'upper-armenian':\n                return 49 /* UPPER_ARMENIAN */;\n            case 'disclosure-open':\n                return 50 /* DISCLOSURE_OPEN */;\n            case 'disclosure-closed':\n                return 51 /* DISCLOSURE_CLOSED */;\n            case 'none':\n            default:\n                return -1 /* NONE */;\n        }\n    }\n};\n\nvar marginForSide = function (side) { return ({\n    name: \"margin-\" + side,\n    initialValue: '0',\n    prefix: false,\n    type: 4 /* TOKEN_VALUE */\n}); };\nvar marginTop = marginForSide('top');\nvar marginRight = marginForSide('right');\nvar marginBottom = marginForSide('bottom');\nvar marginLeft = marginForSide('left');\n\nvar overflow = {\n    name: 'overflow',\n    initialValue: 'visible',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return tokens.filter(isIdentToken).map(function (overflow) {\n            switch (overflow.value) {\n                case 'hidden':\n                    return 1 /* HIDDEN */;\n                case 'scroll':\n                    return 2 /* SCROLL */;\n                case 'clip':\n                    return 3 /* CLIP */;\n                case 'auto':\n                    return 4 /* AUTO */;\n                case 'visible':\n                default:\n                    return 0 /* VISIBLE */;\n            }\n        });\n    }\n};\n\nvar overflowWrap = {\n    name: 'overflow-wrap',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, overflow) {\n        switch (overflow) {\n            case 'break-word':\n                return \"break-word\" /* BREAK_WORD */;\n            case 'normal':\n            default:\n                return \"normal\" /* NORMAL */;\n        }\n    }\n};\n\nvar paddingForSide = function (side) { return ({\n    name: \"padding-\" + side,\n    initialValue: '0',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'length-percentage'\n}); };\nvar paddingTop = paddingForSide('top');\nvar paddingRight = paddingForSide('right');\nvar paddingBottom = paddingForSide('bottom');\nvar paddingLeft = paddingForSide('left');\n\nvar textAlign = {\n    name: 'text-align',\n    initialValue: 'left',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, textAlign) {\n        switch (textAlign) {\n            case 'right':\n                return 2 /* RIGHT */;\n            case 'center':\n            case 'justify':\n                return 1 /* CENTER */;\n            case 'left':\n            default:\n                return 0 /* LEFT */;\n        }\n    }\n};\n\nvar position = {\n    name: 'position',\n    initialValue: 'static',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, position) {\n        switch (position) {\n            case 'relative':\n                return 1 /* RELATIVE */;\n            case 'absolute':\n                return 2 /* ABSOLUTE */;\n            case 'fixed':\n                return 3 /* FIXED */;\n            case 'sticky':\n                return 4 /* STICKY */;\n        }\n        return 0 /* STATIC */;\n    }\n};\n\nvar textShadow = {\n    name: 'text-shadow',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (context, tokens) {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n        return parseFunctionArgs(tokens).map(function (values) {\n            var shadow = {\n                color: COLORS.TRANSPARENT,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH\n            };\n            var c = 0;\n            for (var i = 0; i < values.length; i++) {\n                var token = values[i];\n                if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    }\n                    else if (c === 1) {\n                        shadow.offsetY = token;\n                    }\n                    else {\n                        shadow.blur = token;\n                    }\n                    c++;\n                }\n                else {\n                    shadow.color = color$1.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n\nvar textTransform = {\n    name: 'text-transform',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, textTransform) {\n        switch (textTransform) {\n            case 'uppercase':\n                return 2 /* UPPERCASE */;\n            case 'lowercase':\n                return 1 /* LOWERCASE */;\n            case 'capitalize':\n                return 3 /* CAPITALIZE */;\n        }\n        return 0 /* NONE */;\n    }\n};\n\nvar transform$1 = {\n    name: 'transform',\n    initialValue: 'none',\n    prefix: true,\n    type: 0 /* VALUE */,\n    parse: function (_context, token) {\n        if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n            return null;\n        }\n        if (token.type === 18 /* FUNCTION */) {\n            var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n            if (typeof transformFunction === 'undefined') {\n                throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n            }\n            return transformFunction(token.values);\n        }\n        return null;\n    }\n};\nvar matrix = function (args) {\n    var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n    return values.length === 6 ? values : null;\n};\n// doesn't support 3D transforms at the moment\nvar matrix3d = function (args) {\n    var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n    var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];\n    return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\nvar SUPPORTED_TRANSFORM_FUNCTIONS = {\n    matrix: matrix,\n    matrix3d: matrix3d\n};\n\nvar DEFAULT_VALUE = {\n    type: 16 /* PERCENTAGE_TOKEN */,\n    number: 50,\n    flags: FLAG_INTEGER\n};\nvar DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\nvar transformOrigin = {\n    name: 'transform-origin',\n    initialValue: '50% 50%',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        var origins = tokens.filter(isLengthPercentage);\n        if (origins.length !== 2) {\n            return DEFAULT;\n        }\n        return [origins[0], origins[1]];\n    }\n};\n\nvar visibility = {\n    name: 'visible',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, visibility) {\n        switch (visibility) {\n            case 'hidden':\n                return 1 /* HIDDEN */;\n            case 'collapse':\n                return 2 /* COLLAPSE */;\n            case 'visible':\n            default:\n                return 0 /* VISIBLE */;\n        }\n    }\n};\n\nvar WORD_BREAK;\n(function (WORD_BREAK) {\n    WORD_BREAK[\"NORMAL\"] = \"normal\";\n    WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n    WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n})(WORD_BREAK || (WORD_BREAK = {}));\nvar wordBreak = {\n    name: 'word-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, wordBreak) {\n        switch (wordBreak) {\n            case 'break-all':\n                return WORD_BREAK.BREAK_ALL;\n            case 'keep-all':\n                return WORD_BREAK.KEEP_ALL;\n            case 'normal':\n            default:\n                return WORD_BREAK.NORMAL;\n        }\n    }\n};\n\nvar zIndex = {\n    name: 'z-index',\n    initialValue: 'auto',\n    prefix: false,\n    type: 0 /* VALUE */,\n    parse: function (_context, token) {\n        if (token.type === 20 /* IDENT_TOKEN */) {\n            return { auto: true, order: 0 };\n        }\n        if (isNumberToken(token)) {\n            return { auto: false, order: token.number };\n        }\n        throw new Error(\"Invalid z-index number parsed\");\n    }\n};\n\nvar time = {\n    name: 'time',\n    parse: function (_context, value) {\n        if (value.type === 15 /* DIMENSION_TOKEN */) {\n            switch (value.unit.toLowerCase()) {\n                case 's':\n                    return 1000 * value.number;\n                case 'ms':\n                    return value.number;\n            }\n        }\n        throw new Error(\"Unsupported time type\");\n    }\n};\n\nvar opacity = {\n    name: 'opacity',\n    initialValue: '1',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n        return 1;\n    }\n};\n\nvar textDecorationColor = {\n    name: \"text-decoration-color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n};\n\nvar textDecorationLine = {\n    name: 'text-decoration-line',\n    initialValue: 'none',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        return tokens\n            .filter(isIdentToken)\n            .map(function (token) {\n            switch (token.value) {\n                case 'underline':\n                    return 1 /* UNDERLINE */;\n                case 'overline':\n                    return 2 /* OVERLINE */;\n                case 'line-through':\n                    return 3 /* LINE_THROUGH */;\n                case 'none':\n                    return 4 /* BLINK */;\n            }\n            return 0 /* NONE */;\n        })\n            .filter(function (line) { return line !== 0 /* NONE */; });\n    }\n};\n\nvar fontFamily = {\n    name: \"font-family\",\n    initialValue: '',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        var accumulator = [];\n        var results = [];\n        tokens.forEach(function (token) {\n            switch (token.type) {\n                case 20 /* IDENT_TOKEN */:\n                case 0 /* STRING_TOKEN */:\n                    accumulator.push(token.value);\n                    break;\n                case 17 /* NUMBER_TOKEN */:\n                    accumulator.push(token.number.toString());\n                    break;\n                case 4 /* COMMA_TOKEN */:\n                    results.push(accumulator.join(' '));\n                    accumulator.length = 0;\n                    break;\n            }\n        });\n        if (accumulator.length) {\n            results.push(accumulator.join(' '));\n        }\n        return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\n    }\n};\n\nvar fontSize = {\n    name: \"font-size\",\n    initialValue: '0',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'length'\n};\n\nvar fontWeight = {\n    name: 'font-weight',\n    initialValue: 'normal',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n        if (isIdentToken(token)) {\n            switch (token.value) {\n                case 'bold':\n                    return 700;\n                case 'normal':\n                default:\n                    return 400;\n            }\n        }\n        return 400;\n    }\n};\n\nvar fontVariant = {\n    name: 'font-variant',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (_context, tokens) {\n        return tokens.filter(isIdentToken).map(function (token) { return token.value; });\n    }\n};\n\nvar fontStyle = {\n    name: 'font-style',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, overflow) {\n        switch (overflow) {\n            case 'oblique':\n                return \"oblique\" /* OBLIQUE */;\n            case 'italic':\n                return \"italic\" /* ITALIC */;\n            case 'normal':\n            default:\n                return \"normal\" /* NORMAL */;\n        }\n    }\n};\n\nvar contains = function (bit, value) { return (bit & value) !== 0; };\n\nvar content = {\n    name: 'content',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (_context, tokens) {\n        if (tokens.length === 0) {\n            return [];\n        }\n        var first = tokens[0];\n        if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n            return [];\n        }\n        return tokens;\n    }\n};\n\nvar counterIncrement = {\n    name: 'counter-increment',\n    initialValue: 'none',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        if (tokens.length === 0) {\n            return null;\n        }\n        var first = tokens[0];\n        if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n            return null;\n        }\n        var increments = [];\n        var filtered = tokens.filter(nonWhiteSpace);\n        for (var i = 0; i < filtered.length; i++) {\n            var counter = filtered[i];\n            var next = filtered[i + 1];\n            if (counter.type === 20 /* IDENT_TOKEN */) {\n                var increment = next && isNumberToken(next) ? next.number : 1;\n                increments.push({ counter: counter.value, increment: increment });\n            }\n        }\n        return increments;\n    }\n};\n\nvar counterReset = {\n    name: 'counter-reset',\n    initialValue: 'none',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        if (tokens.length === 0) {\n            return [];\n        }\n        var resets = [];\n        var filtered = tokens.filter(nonWhiteSpace);\n        for (var i = 0; i < filtered.length; i++) {\n            var counter = filtered[i];\n            var next = filtered[i + 1];\n            if (isIdentToken(counter) && counter.value !== 'none') {\n                var reset = next && isNumberToken(next) ? next.number : 0;\n                resets.push({ counter: counter.value, reset: reset });\n            }\n        }\n        return resets;\n    }\n};\n\nvar duration = {\n    name: 'duration',\n    initialValue: '0s',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (context, tokens) {\n        return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });\n    }\n};\n\nvar quotes = {\n    name: 'quotes',\n    initialValue: 'none',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        if (tokens.length === 0) {\n            return null;\n        }\n        var first = tokens[0];\n        if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n            return null;\n        }\n        var quotes = [];\n        var filtered = tokens.filter(isStringToken);\n        if (filtered.length % 2 !== 0) {\n            return null;\n        }\n        for (var i = 0; i < filtered.length; i += 2) {\n            var open_1 = filtered[i].value;\n            var close_1 = filtered[i + 1].value;\n            quotes.push({ open: open_1, close: close_1 });\n        }\n        return quotes;\n    }\n};\nvar getQuote = function (quotes, depth, open) {\n    if (!quotes) {\n        return '';\n    }\n    var quote = quotes[Math.min(depth, quotes.length - 1)];\n    if (!quote) {\n        return '';\n    }\n    return open ? quote.open : quote.close;\n};\n\nvar boxShadow = {\n    name: 'box-shadow',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (context, tokens) {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n        return parseFunctionArgs(tokens).map(function (values) {\n            var shadow = {\n                color: 0x000000ff,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH,\n                spread: ZERO_LENGTH,\n                inset: false\n            };\n            var c = 0;\n            for (var i = 0; i < values.length; i++) {\n                var token = values[i];\n                if (isIdentWithValue(token, 'inset')) {\n                    shadow.inset = true;\n                }\n                else if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    }\n                    else if (c === 1) {\n                        shadow.offsetY = token;\n                    }\n                    else if (c === 2) {\n                        shadow.blur = token;\n                    }\n                    else {\n                        shadow.spread = token;\n                    }\n                    c++;\n                }\n                else {\n                    shadow.color = color$1.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n\nvar paintOrder = {\n    name: 'paint-order',\n    initialValue: 'normal',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n        var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\n        var layers = [];\n        tokens.filter(isIdentToken).forEach(function (token) {\n            switch (token.value) {\n                case 'stroke':\n                    layers.push(1 /* STROKE */);\n                    break;\n                case 'fill':\n                    layers.push(0 /* FILL */);\n                    break;\n                case 'markers':\n                    layers.push(2 /* MARKERS */);\n                    break;\n            }\n        });\n        DEFAULT_VALUE.forEach(function (value) {\n            if (layers.indexOf(value) === -1) {\n                layers.push(value);\n            }\n        });\n        return layers;\n    }\n};\n\nvar webkitTextStrokeColor = {\n    name: \"-webkit-text-stroke-color\",\n    initialValue: 'currentcolor',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n};\n\nvar webkitTextStrokeWidth = {\n    name: \"-webkit-text-stroke-width\",\n    initialValue: '0',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n};\n\nvar CSSParsedDeclaration = /** @class */ (function () {\n    function CSSParsedDeclaration(context, declaration) {\n        var _a, _b;\n        this.animationDuration = parse(context, duration, declaration.animationDuration);\n        this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n        this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n        this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n        this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n        this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n        this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n        this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n        this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n        this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n        this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n        this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n        this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n        this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n        this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n        this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n        this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n        this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n        this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n        this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n        this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n        this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n        this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n        this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n        this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n        this.color = parse(context, color, declaration.color);\n        this.direction = parse(context, direction, declaration.direction);\n        this.display = parse(context, display, declaration.display);\n        this.float = parse(context, float, declaration.cssFloat);\n        this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n        this.fontSize = parse(context, fontSize, declaration.fontSize);\n        this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n        this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n        this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n        this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n        this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n        this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n        this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n        this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n        this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n        this.marginTop = parse(context, marginTop, declaration.marginTop);\n        this.marginRight = parse(context, marginRight, declaration.marginRight);\n        this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n        this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n        this.opacity = parse(context, opacity, declaration.opacity);\n        var overflowTuple = parse(context, overflow, declaration.overflow);\n        this.overflowX = overflowTuple[0];\n        this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n        this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n        this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n        this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n        this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n        this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n        this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n        this.position = parse(context, position, declaration.position);\n        this.textAlign = parse(context, textAlign, declaration.textAlign);\n        this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n        this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n        this.textShadow = parse(context, textShadow, declaration.textShadow);\n        this.textTransform = parse(context, textTransform, declaration.textTransform);\n        this.transform = parse(context, transform$1, declaration.transform);\n        this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n        this.visibility = parse(context, visibility, declaration.visibility);\n        this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n        this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n        this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n        this.zIndex = parse(context, zIndex, declaration.zIndex);\n    }\n    CSSParsedDeclaration.prototype.isVisible = function () {\n        return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\n    };\n    CSSParsedDeclaration.prototype.isTransparent = function () {\n        return isTransparent(this.backgroundColor);\n    };\n    CSSParsedDeclaration.prototype.isTransformed = function () {\n        return this.transform !== null;\n    };\n    CSSParsedDeclaration.prototype.isPositioned = function () {\n        return this.position !== 0 /* STATIC */;\n    };\n    CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n        return this.isPositioned() && !this.zIndex.auto;\n    };\n    CSSParsedDeclaration.prototype.isFloating = function () {\n        return this.float !== 0 /* NONE */;\n    };\n    CSSParsedDeclaration.prototype.isInlineLevel = function () {\n        return (contains(this.display, 4 /* INLINE */) ||\n            contains(this.display, 33554432 /* INLINE_BLOCK */) ||\n            contains(this.display, 268435456 /* INLINE_FLEX */) ||\n            contains(this.display, 536870912 /* INLINE_GRID */) ||\n            contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\n            contains(this.display, 134217728 /* INLINE_TABLE */));\n    };\n    return CSSParsedDeclaration;\n}());\nvar CSSParsedPseudoDeclaration = /** @class */ (function () {\n    function CSSParsedPseudoDeclaration(context, declaration) {\n        this.content = parse(context, content, declaration.content);\n        this.quotes = parse(context, quotes, declaration.quotes);\n    }\n    return CSSParsedPseudoDeclaration;\n}());\nvar CSSParsedCounterDeclaration = /** @class */ (function () {\n    function CSSParsedCounterDeclaration(context, declaration) {\n        this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n        this.counterReset = parse(context, counterReset, declaration.counterReset);\n    }\n    return CSSParsedCounterDeclaration;\n}());\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar parse = function (context, descriptor, style) {\n    var tokenizer = new Tokenizer();\n    var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n    tokenizer.write(value);\n    var parser = new Parser(tokenizer.read());\n    switch (descriptor.type) {\n        case 2 /* IDENT_VALUE */:\n            var token = parser.parseComponentValue();\n            return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n        case 0 /* VALUE */:\n            return descriptor.parse(context, parser.parseComponentValue());\n        case 1 /* LIST */:\n            return descriptor.parse(context, parser.parseComponentValues());\n        case 4 /* TOKEN_VALUE */:\n            return parser.parseComponentValue();\n        case 3 /* TYPE_VALUE */:\n            switch (descriptor.format) {\n                case 'angle':\n                    return angle.parse(context, parser.parseComponentValue());\n                case 'color':\n                    return color$1.parse(context, parser.parseComponentValue());\n                case 'image':\n                    return image.parse(context, parser.parseComponentValue());\n                case 'length':\n                    var length_1 = parser.parseComponentValue();\n                    return isLength(length_1) ? length_1 : ZERO_LENGTH;\n                case 'length-percentage':\n                    var value_1 = parser.parseComponentValue();\n                    return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n                case 'time':\n                    return time.parse(context, parser.parseComponentValue());\n            }\n            break;\n    }\n};\n\nvar elementDebuggerAttribute = 'data-html2canvas-debug';\nvar getElementDebugType = function (element) {\n    var attribute = element.getAttribute(elementDebuggerAttribute);\n    switch (attribute) {\n        case 'all':\n            return 1 /* ALL */;\n        case 'clone':\n            return 2 /* CLONE */;\n        case 'parse':\n            return 3 /* PARSE */;\n        case 'render':\n            return 4 /* RENDER */;\n        default:\n            return 0 /* NONE */;\n    }\n};\nvar isDebugging = function (element, type) {\n    var elementType = getElementDebugType(element);\n    return elementType === 1 /* ALL */ || type === elementType;\n};\n\nvar ElementContainer = /** @class */ (function () {\n    function ElementContainer(context, element) {\n        this.context = context;\n        this.textNodes = [];\n        this.elements = [];\n        this.flags = 0;\n        if (isDebugging(element, 3 /* PARSE */)) {\n            debugger;\n        }\n        this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n        if (isHTMLElementNode(element)) {\n            if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {\n                element.style.animationDuration = '0s';\n            }\n            if (this.styles.transform !== null) {\n                // getBoundingClientRect takes transforms into account\n                element.style.transform = 'none';\n            }\n        }\n        this.bounds = parseBounds(this.context, element);\n        if (isDebugging(element, 4 /* RENDER */)) {\n            this.flags |= 16 /* DEBUG_RENDER */;\n        }\n    }\n    return ElementContainer;\n}());\n\n/*\n * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n\n/*\n * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n    lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n}\nvar decode = function (base64) {\n    var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n    var buffer = typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n        ? new ArrayBuffer(bufferLength)\n        : new Array(bufferLength);\n    var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup$1[base64.charCodeAt(i)];\n        encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n        encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n        encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n    return buffer;\n};\nvar polyUint16Array = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\nvar polyUint32Array = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\n/** Shift size for getting the index-2 table offset. */\nvar UTRIE2_SHIFT_2 = 5;\n/** Shift size for getting the index-1 table offset. */\nvar UTRIE2_SHIFT_1 = 6 + 5;\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nvar UTRIE2_INDEX_SHIFT = 2;\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nvar UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nvar UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n/** Number of entries in a data block. 32=0x20 */\nvar UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nvar UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\nvar UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nvar UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nvar UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nvar UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nvar UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nvar UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n/** Number of entries in an index-2 block. 64=0x40 */\nvar UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nvar UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\nvar slice16 = function (view, start, end) {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\nvar slice32 = function (view, start, end) {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\nvar createTrieFromBase64 = function (base64, _byteLength) {\n    var buffer = decode(base64);\n    var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    var headerLength = 24;\n    var index = slice16(view16, headerLength / 2, view32[4] / 2);\n    var data = view32[5] === 2\n        ? slice16(view16, (headerLength + view32[4]) / 2)\n        : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\nvar Trie = /** @class */ (function () {\n    function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    Trie.prototype.get = function (codePoint) {\n        var ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    };\n    return Trie;\n}());\n\n/*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nvar Prepend = 1;\nvar CR = 2;\nvar LF = 3;\nvar Control = 4;\nvar Extend = 5;\nvar SpacingMark = 7;\nvar L = 8;\nvar V = 9;\nvar T = 10;\nvar LV = 11;\nvar LVT = 12;\nvar ZWJ = 13;\nvar Extended_Pictographic = 14;\nvar RI = 15;\nvar toCodePoints = function (str) {\n    var codePoints = [];\n    var i = 0;\n    var length = str.length;\n    while (i < length) {\n        var value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            var extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            }\n            else {\n                codePoints.push(value);\n                i--;\n            }\n        }\n        else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\nvar fromCodePoint = function () {\n    var codePoints = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        codePoints[_i] = arguments[_i];\n    }\n    if (String.fromCodePoint) {\n        return String.fromCodePoint.apply(String, codePoints);\n    }\n    var length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n    var codeUnits = [];\n    var index = -1;\n    var result = '';\n    while (++index < length) {\n        var codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        }\n        else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode.apply(String, codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\nvar UnicodeTrie = createTrieFromBase64(base64);\nvar BREAK_NOT_ALLOWED = '×';\nvar BREAK_ALLOWED = '÷';\nvar codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };\nvar _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\n    var prevIndex = index - 2;\n    var prev = classTypes[prevIndex];\n    var current = classTypes[index - 1];\n    var next = classTypes[index];\n    // GB3 Do not break between a CR and LF\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // GB4 Otherwise, break before and after controls.\n    if (current === CR || current === LF || current === Control) {\n        return BREAK_ALLOWED;\n    }\n    // GB5\n    if (next === CR || next === LF || next === Control) {\n        return BREAK_ALLOWED;\n    }\n    // Do not break Hangul syllable sequences.\n    // GB6\n    if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // GB7\n    if ((current === LV || current === V) && (next === V || next === T)) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // GB8\n    if ((current === LVT || current === T) && next === T) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // GB9 Do not break before extending characters or ZWJ.\n    if (next === ZWJ || next === Extend) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // Do not break before SpacingMarks, or after Prepend characters.\n    // GB9a\n    if (next === SpacingMark) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // GB9a\n    if (current === Prepend) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n    if (current === ZWJ && next === Extended_Pictographic) {\n        while (prev === Extend) {\n            prev = classTypes[--prevIndex];\n        }\n        if (prev === Extended_Pictographic) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n    // GB12 Do not break within emoji flag sequences.\n    // That is, do not break between regional indicator (RI) symbols\n    // if there is an odd number of RI characters before the break point.\n    if (current === RI && next === RI) {\n        var countRI = 0;\n        while (prev === RI) {\n            countRI++;\n            prev = classTypes[--prevIndex];\n        }\n        if (countRI % 2 === 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n    return BREAK_ALLOWED;\n};\nvar GraphemeBreaker = function (str) {\n    var codePoints = toCodePoints(str);\n    var length = codePoints.length;\n    var index = 0;\n    var lastEnd = 0;\n    var classTypes = codePoints.map(codePointToClass);\n    return {\n        next: function () {\n            if (index >= length) {\n                return { done: true, value: null };\n            }\n            var graphemeBreak = BREAK_NOT_ALLOWED;\n            while (index < length &&\n                (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }\n            if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n                var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n                lastEnd = index;\n                return { value: value, done: false };\n            }\n            return { done: true, value: null };\n        },\n    };\n};\nvar splitGraphemes = function (str) {\n    var breaker = GraphemeBreaker(str);\n    var graphemes = [];\n    var bk;\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            graphemes.push(bk.value.slice());\n        }\n    }\n    return graphemes;\n};\n\nvar testRangeBounds = function (document) {\n    var TEST_HEIGHT = 123;\n    if (document.createRange) {\n        var range = document.createRange();\n        if (range.getBoundingClientRect) {\n            var testElement = document.createElement('boundtest');\n            testElement.style.height = TEST_HEIGHT + \"px\";\n            testElement.style.display = 'block';\n            document.body.appendChild(testElement);\n            range.selectNode(testElement);\n            var rangeBounds = range.getBoundingClientRect();\n            var rangeHeight = Math.round(rangeBounds.height);\n            document.body.removeChild(testElement);\n            if (rangeHeight === TEST_HEIGHT) {\n                return true;\n            }\n        }\n    }\n    return false;\n};\nvar testIOSLineBreak = function (document) {\n    var testElement = document.createElement('boundtest');\n    testElement.style.width = '50px';\n    testElement.style.display = 'block';\n    testElement.style.fontSize = '12px';\n    testElement.style.letterSpacing = '0px';\n    testElement.style.wordSpacing = '0px';\n    document.body.appendChild(testElement);\n    var range = document.createRange();\n    testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n    var node = testElement.firstChild;\n    var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });\n    var offset = 0;\n    var prev = {};\n    // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n    var supports = textList.every(function (text, i) {\n        range.setStart(node, offset);\n        range.setEnd(node, offset + text.length);\n        var rect = range.getBoundingClientRect();\n        offset += text.length;\n        var boundAhead = rect.x > prev.x || rect.y > prev.y;\n        prev = rect;\n        if (i === 0) {\n            return true;\n        }\n        return boundAhead;\n    });\n    document.body.removeChild(testElement);\n    return supports;\n};\nvar testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\nvar testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\nvar testSVG = function (document) {\n    var img = new Image();\n    var canvas = document.createElement('canvas');\n    var ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return false;\n    }\n    img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n    try {\n        ctx.drawImage(img, 0, 0);\n        canvas.toDataURL();\n    }\n    catch (e) {\n        return false;\n    }\n    return true;\n};\nvar isGreenPixel = function (data) {\n    return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n};\nvar testForeignObject = function (document) {\n    var canvas = document.createElement('canvas');\n    var size = 100;\n    canvas.width = size;\n    canvas.height = size;\n    var ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return Promise.reject(false);\n    }\n    ctx.fillStyle = 'rgb(0, 255, 0)';\n    ctx.fillRect(0, 0, size, size);\n    var img = new Image();\n    var greenImageSrc = canvas.toDataURL();\n    img.src = greenImageSrc;\n    var svg = createForeignObjectSVG(size, size, 0, 0, img);\n    ctx.fillStyle = 'red';\n    ctx.fillRect(0, 0, size, size);\n    return loadSerializedSVG$1(svg)\n        .then(function (img) {\n        ctx.drawImage(img, 0, 0);\n        var data = ctx.getImageData(0, 0, size, size).data;\n        ctx.fillStyle = 'red';\n        ctx.fillRect(0, 0, size, size);\n        var node = document.createElement('div');\n        node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n        node.style.height = size + \"px\";\n        // Firefox 55 does not render inline <img /> tags\n        return isGreenPixel(data)\n            ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\n            : Promise.reject(false);\n    })\n        .then(function (img) {\n        ctx.drawImage(img, 0, 0);\n        // Edge does not render background-images\n        return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n    })\n        .catch(function () { return false; });\n};\nvar createForeignObjectSVG = function (width, height, x, y, node) {\n    var xmlns = 'http://www.w3.org/2000/svg';\n    var svg = document.createElementNS(xmlns, 'svg');\n    var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n    svg.setAttributeNS(null, 'width', width.toString());\n    svg.setAttributeNS(null, 'height', height.toString());\n    foreignObject.setAttributeNS(null, 'width', '100%');\n    foreignObject.setAttributeNS(null, 'height', '100%');\n    foreignObject.setAttributeNS(null, 'x', x.toString());\n    foreignObject.setAttributeNS(null, 'y', y.toString());\n    foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n    svg.appendChild(foreignObject);\n    foreignObject.appendChild(node);\n    return svg;\n};\nvar loadSerializedSVG$1 = function (svg) {\n    return new Promise(function (resolve, reject) {\n        var img = new Image();\n        img.onload = function () { return resolve(img); };\n        img.onerror = reject;\n        img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n    });\n};\nvar FEATURES = {\n    get SUPPORT_RANGE_BOUNDS() {\n        var value = testRangeBounds(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n        return value;\n    },\n    get SUPPORT_WORD_BREAKING() {\n        var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });\n        return value;\n    },\n    get SUPPORT_SVG_DRAWING() {\n        var value = testSVG(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n        return value;\n    },\n    get SUPPORT_FOREIGNOBJECT_DRAWING() {\n        var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\n            ? testForeignObject(document)\n            : Promise.resolve(false);\n        Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n        return value;\n    },\n    get SUPPORT_CORS_IMAGES() {\n        var value = testCORS();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n        return value;\n    },\n    get SUPPORT_RESPONSE_TYPE() {\n        var value = testResponseType();\n        Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n        return value;\n    },\n    get SUPPORT_CORS_XHR() {\n        var value = 'withCredentials' in new XMLHttpRequest();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n        return value;\n    },\n    get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\n        Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });\n        return value;\n    }\n};\n\nvar TextBounds = /** @class */ (function () {\n    function TextBounds(text, bounds) {\n        this.text = text;\n        this.bounds = bounds;\n    }\n    return TextBounds;\n}());\nvar parseTextBounds = function (context, value, styles, node) {\n    var textList = breakText(value, styles);\n    var textBounds = [];\n    var offset = 0;\n    textList.forEach(function (text) {\n        if (styles.textDecorationLine.length || text.trim().length > 0) {\n            if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n                var clientRects = createRange(node, offset, text.length).getClientRects();\n                if (clientRects.length > 1) {\n                    var subSegments = segmentGraphemes(text);\n                    var subOffset_1 = 0;\n                    subSegments.forEach(function (subSegment) {\n                        textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\n                        subOffset_1 += subSegment.length;\n                    });\n                }\n                else {\n                    textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n                }\n            }\n            else {\n                var replacementNode = node.splitText(text.length);\n                textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n                node = replacementNode;\n            }\n        }\n        else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n            node = node.splitText(text.length);\n        }\n        offset += text.length;\n    });\n    return textBounds;\n};\nvar getWrapperBounds = function (context, node) {\n    var ownerDocument = node.ownerDocument;\n    if (ownerDocument) {\n        var wrapper = ownerDocument.createElement('html2canvaswrapper');\n        wrapper.appendChild(node.cloneNode(true));\n        var parentNode = node.parentNode;\n        if (parentNode) {\n            parentNode.replaceChild(wrapper, node);\n            var bounds = parseBounds(context, wrapper);\n            if (wrapper.firstChild) {\n                parentNode.replaceChild(wrapper.firstChild, wrapper);\n            }\n            return bounds;\n        }\n    }\n    return Bounds.EMPTY;\n};\nvar createRange = function (node, offset, length) {\n    var ownerDocument = node.ownerDocument;\n    if (!ownerDocument) {\n        throw new Error('Node has no owner document');\n    }\n    var range = ownerDocument.createRange();\n    range.setStart(node, offset);\n    range.setEnd(node, offset + length);\n    return range;\n};\nvar segmentGraphemes = function (value) {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n    }\n    return splitGraphemes(value);\n};\nvar segmentWords = function (value, styles) {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        var segmenter = new Intl.Segmenter(void 0, {\n            granularity: 'word'\n        });\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n    }\n    return breakWords(value, styles);\n};\nvar breakText = function (value, styles) {\n    return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n// https://drafts.csswg.org/css-text/#word-separator\nvar wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\nvar breakWords = function (str, styles) {\n    var breaker = LineBreaker(str, {\n        lineBreak: styles.lineBreak,\n        wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\n    });\n    var words = [];\n    var bk;\n    var _loop_1 = function () {\n        if (bk.value) {\n            var value = bk.value.slice();\n            var codePoints = toCodePoints$1(value);\n            var word_1 = '';\n            codePoints.forEach(function (codePoint) {\n                if (wordSeparators.indexOf(codePoint) === -1) {\n                    word_1 += fromCodePoint$1(codePoint);\n                }\n                else {\n                    if (word_1.length) {\n                        words.push(word_1);\n                    }\n                    words.push(fromCodePoint$1(codePoint));\n                    word_1 = '';\n                }\n            });\n            if (word_1.length) {\n                words.push(word_1);\n            }\n        }\n    };\n    while (!(bk = breaker.next()).done) {\n        _loop_1();\n    }\n    return words;\n};\n\nvar TextContainer = /** @class */ (function () {\n    function TextContainer(context, node, styles) {\n        this.text = transform(node.data, styles.textTransform);\n        this.textBounds = parseTextBounds(context, this.text, styles, node);\n    }\n    return TextContainer;\n}());\nvar transform = function (text, transform) {\n    switch (transform) {\n        case 1 /* LOWERCASE */:\n            return text.toLowerCase();\n        case 3 /* CAPITALIZE */:\n            return text.replace(CAPITALIZE, capitalize);\n        case 2 /* UPPERCASE */:\n            return text.toUpperCase();\n        default:\n            return text;\n    }\n};\nvar CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\nvar capitalize = function (m, p1, p2) {\n    if (m.length > 0) {\n        return p1 + p2.toUpperCase();\n    }\n    return m;\n};\n\nvar ImageElementContainer = /** @class */ (function (_super) {\n    __extends(ImageElementContainer, _super);\n    function ImageElementContainer(context, img) {\n        var _this = _super.call(this, context, img) || this;\n        _this.src = img.currentSrc || img.src;\n        _this.intrinsicWidth = img.naturalWidth;\n        _this.intrinsicHeight = img.naturalHeight;\n        _this.context.cache.addImage(_this.src);\n        return _this;\n    }\n    return ImageElementContainer;\n}(ElementContainer));\n\nvar CanvasElementContainer = /** @class */ (function (_super) {\n    __extends(CanvasElementContainer, _super);\n    function CanvasElementContainer(context, canvas) {\n        var _this = _super.call(this, context, canvas) || this;\n        _this.canvas = canvas;\n        _this.intrinsicWidth = canvas.width;\n        _this.intrinsicHeight = canvas.height;\n        return _this;\n    }\n    return CanvasElementContainer;\n}(ElementContainer));\n\nvar SVGElementContainer = /** @class */ (function (_super) {\n    __extends(SVGElementContainer, _super);\n    function SVGElementContainer(context, img) {\n        var _this = _super.call(this, context, img) || this;\n        var s = new XMLSerializer();\n        var bounds = parseBounds(context, img);\n        img.setAttribute('width', bounds.width + \"px\");\n        img.setAttribute('height', bounds.height + \"px\");\n        _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n        _this.intrinsicWidth = img.width.baseVal.value;\n        _this.intrinsicHeight = img.height.baseVal.value;\n        _this.context.cache.addImage(_this.svg);\n        return _this;\n    }\n    return SVGElementContainer;\n}(ElementContainer));\n\nvar LIElementContainer = /** @class */ (function (_super) {\n    __extends(LIElementContainer, _super);\n    function LIElementContainer(context, element) {\n        var _this = _super.call(this, context, element) || this;\n        _this.value = element.value;\n        return _this;\n    }\n    return LIElementContainer;\n}(ElementContainer));\n\nvar OLElementContainer = /** @class */ (function (_super) {\n    __extends(OLElementContainer, _super);\n    function OLElementContainer(context, element) {\n        var _this = _super.call(this, context, element) || this;\n        _this.start = element.start;\n        _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n        return _this;\n    }\n    return OLElementContainer;\n}(ElementContainer));\n\nvar CHECKBOX_BORDER_RADIUS = [\n    {\n        type: 15 /* DIMENSION_TOKEN */,\n        flags: 0,\n        unit: 'px',\n        number: 3\n    }\n];\nvar RADIO_BORDER_RADIUS = [\n    {\n        type: 16 /* PERCENTAGE_TOKEN */,\n        flags: 0,\n        number: 50\n    }\n];\nvar reformatInputBounds = function (bounds) {\n    if (bounds.width > bounds.height) {\n        return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n    }\n    else if (bounds.width < bounds.height) {\n        return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n    }\n    return bounds;\n};\nvar getInputValue = function (node) {\n    var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n    return value.length === 0 ? node.placeholder || '' : value;\n};\nvar CHECKBOX = 'checkbox';\nvar RADIO = 'radio';\nvar PASSWORD = 'password';\nvar INPUT_COLOR = 0x2a2a2aff;\nvar InputElementContainer = /** @class */ (function (_super) {\n    __extends(InputElementContainer, _super);\n    function InputElementContainer(context, input) {\n        var _this = _super.call(this, context, input) || this;\n        _this.type = input.type.toLowerCase();\n        _this.checked = input.checked;\n        _this.value = getInputValue(input);\n        if (_this.type === CHECKBOX || _this.type === RADIO) {\n            _this.styles.backgroundColor = 0xdededeff;\n            _this.styles.borderTopColor =\n                _this.styles.borderRightColor =\n                    _this.styles.borderBottomColor =\n                        _this.styles.borderLeftColor =\n                            0xa5a5a5ff;\n            _this.styles.borderTopWidth =\n                _this.styles.borderRightWidth =\n                    _this.styles.borderBottomWidth =\n                        _this.styles.borderLeftWidth =\n                            1;\n            _this.styles.borderTopStyle =\n                _this.styles.borderRightStyle =\n                    _this.styles.borderBottomStyle =\n                        _this.styles.borderLeftStyle =\n                            1 /* SOLID */;\n            _this.styles.backgroundClip = [0 /* BORDER_BOX */];\n            _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n            _this.bounds = reformatInputBounds(_this.bounds);\n        }\n        switch (_this.type) {\n            case CHECKBOX:\n                _this.styles.borderTopRightRadius =\n                    _this.styles.borderTopLeftRadius =\n                        _this.styles.borderBottomRightRadius =\n                            _this.styles.borderBottomLeftRadius =\n                                CHECKBOX_BORDER_RADIUS;\n                break;\n            case RADIO:\n                _this.styles.borderTopRightRadius =\n                    _this.styles.borderTopLeftRadius =\n                        _this.styles.borderBottomRightRadius =\n                            _this.styles.borderBottomLeftRadius =\n                                RADIO_BORDER_RADIUS;\n                break;\n        }\n        return _this;\n    }\n    return InputElementContainer;\n}(ElementContainer));\n\nvar SelectElementContainer = /** @class */ (function (_super) {\n    __extends(SelectElementContainer, _super);\n    function SelectElementContainer(context, element) {\n        var _this = _super.call(this, context, element) || this;\n        var option = element.options[element.selectedIndex || 0];\n        _this.value = option ? option.text || '' : '';\n        return _this;\n    }\n    return SelectElementContainer;\n}(ElementContainer));\n\nvar TextareaElementContainer = /** @class */ (function (_super) {\n    __extends(TextareaElementContainer, _super);\n    function TextareaElementContainer(context, element) {\n        var _this = _super.call(this, context, element) || this;\n        _this.value = element.value;\n        return _this;\n    }\n    return TextareaElementContainer;\n}(ElementContainer));\n\nvar IFrameElementContainer = /** @class */ (function (_super) {\n    __extends(IFrameElementContainer, _super);\n    function IFrameElementContainer(context, iframe) {\n        var _this = _super.call(this, context, iframe) || this;\n        _this.src = iframe.src;\n        _this.width = parseInt(iframe.width, 10) || 0;\n        _this.height = parseInt(iframe.height, 10) || 0;\n        _this.backgroundColor = _this.styles.backgroundColor;\n        try {\n            if (iframe.contentWindow &&\n                iframe.contentWindow.document &&\n                iframe.contentWindow.document.documentElement) {\n                _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n                // http://www.w3.org/TR/css3-background/#special-backgrounds\n                var documentBackgroundColor = iframe.contentWindow.document.documentElement\n                    ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)\n                    : COLORS.TRANSPARENT;\n                var bodyBackgroundColor = iframe.contentWindow.document.body\n                    ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\n                    : COLORS.TRANSPARENT;\n                _this.backgroundColor = isTransparent(documentBackgroundColor)\n                    ? isTransparent(bodyBackgroundColor)\n                        ? _this.styles.backgroundColor\n                        : bodyBackgroundColor\n                    : documentBackgroundColor;\n            }\n        }\n        catch (e) { }\n        return _this;\n    }\n    return IFrameElementContainer;\n}(ElementContainer));\n\nvar LIST_OWNERS = ['OL', 'UL', 'MENU'];\nvar parseNodeTree = function (context, node, parent, root) {\n    for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n        nextNode = childNode.nextSibling;\n        if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n            parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n        }\n        else if (isElementNode(childNode)) {\n            if (isSlotElement(childNode) && childNode.assignedNodes) {\n                childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });\n            }\n            else {\n                var container = createContainer(context, childNode);\n                if (container.styles.isVisible()) {\n                    if (createsRealStackingContext(childNode, container, root)) {\n                        container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n                    }\n                    else if (createsStackingContext(container.styles)) {\n                        container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n                    }\n                    if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n                        container.flags |= 8 /* IS_LIST_OWNER */;\n                    }\n                    parent.elements.push(container);\n                    childNode.slot;\n                    if (childNode.shadowRoot) {\n                        parseNodeTree(context, childNode.shadowRoot, container, root);\n                    }\n                    else if (!isTextareaElement(childNode) &&\n                        !isSVGElement(childNode) &&\n                        !isSelectElement(childNode)) {\n                        parseNodeTree(context, childNode, container, root);\n                    }\n                }\n            }\n        }\n    }\n};\nvar createContainer = function (context, element) {\n    if (isImageElement(element)) {\n        return new ImageElementContainer(context, element);\n    }\n    if (isCanvasElement(element)) {\n        return new CanvasElementContainer(context, element);\n    }\n    if (isSVGElement(element)) {\n        return new SVGElementContainer(context, element);\n    }\n    if (isLIElement(element)) {\n        return new LIElementContainer(context, element);\n    }\n    if (isOLElement(element)) {\n        return new OLElementContainer(context, element);\n    }\n    if (isInputElement(element)) {\n        return new InputElementContainer(context, element);\n    }\n    if (isSelectElement(element)) {\n        return new SelectElementContainer(context, element);\n    }\n    if (isTextareaElement(element)) {\n        return new TextareaElementContainer(context, element);\n    }\n    if (isIFrameElement(element)) {\n        return new IFrameElementContainer(context, element);\n    }\n    return new ElementContainer(context, element);\n};\nvar parseTree = function (context, element) {\n    var container = createContainer(context, element);\n    container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n    parseNodeTree(context, element, container, container);\n    return container;\n};\nvar createsRealStackingContext = function (node, container, root) {\n    return (container.styles.isPositionedWithZIndex() ||\n        container.styles.opacity < 1 ||\n        container.styles.isTransformed() ||\n        (isBodyElement(node) && root.styles.isTransparent()));\n};\nvar createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\nvar isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\nvar isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\nvar isHTMLElementNode = function (node) {\n    return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n};\nvar isSVGElementNode = function (element) {\n    return typeof element.className === 'object';\n};\nvar isLIElement = function (node) { return node.tagName === 'LI'; };\nvar isOLElement = function (node) { return node.tagName === 'OL'; };\nvar isInputElement = function (node) { return node.tagName === 'INPUT'; };\nvar isHTMLElement = function (node) { return node.tagName === 'HTML'; };\nvar isSVGElement = function (node) { return node.tagName === 'svg'; };\nvar isBodyElement = function (node) { return node.tagName === 'BODY'; };\nvar isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\nvar isVideoElement = function (node) { return node.tagName === 'VIDEO'; };\nvar isImageElement = function (node) { return node.tagName === 'IMG'; };\nvar isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\nvar isStyleElement = function (node) { return node.tagName === 'STYLE'; };\nvar isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\nvar isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\nvar isSelectElement = function (node) { return node.tagName === 'SELECT'; };\nvar isSlotElement = function (node) { return node.tagName === 'SLOT'; };\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nvar isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };\n\nvar CounterState = /** @class */ (function () {\n    function CounterState() {\n        this.counters = {};\n    }\n    CounterState.prototype.getCounterValue = function (name) {\n        var counter = this.counters[name];\n        if (counter && counter.length) {\n            return counter[counter.length - 1];\n        }\n        return 1;\n    };\n    CounterState.prototype.getCounterValues = function (name) {\n        var counter = this.counters[name];\n        return counter ? counter : [];\n    };\n    CounterState.prototype.pop = function (counters) {\n        var _this = this;\n        counters.forEach(function (counter) { return _this.counters[counter].pop(); });\n    };\n    CounterState.prototype.parse = function (style) {\n        var _this = this;\n        var counterIncrement = style.counterIncrement;\n        var counterReset = style.counterReset;\n        var canReset = true;\n        if (counterIncrement !== null) {\n            counterIncrement.forEach(function (entry) {\n                var counter = _this.counters[entry.counter];\n                if (counter && entry.increment !== 0) {\n                    canReset = false;\n                    if (!counter.length) {\n                        counter.push(1);\n                    }\n                    counter[Math.max(0, counter.length - 1)] += entry.increment;\n                }\n            });\n        }\n        var counterNames = [];\n        if (canReset) {\n            counterReset.forEach(function (entry) {\n                var counter = _this.counters[entry.counter];\n                counterNames.push(entry.counter);\n                if (!counter) {\n                    counter = _this.counters[entry.counter] = [];\n                }\n                counter.push(entry.reset);\n            });\n        }\n        return counterNames;\n    };\n    return CounterState;\n}());\nvar ROMAN_UPPER = {\n    integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n    values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\nvar ARMENIAN = {\n    integers: [\n        9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n        60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'Ք',\n        'Փ',\n        'Ւ',\n        'Ց',\n        'Ր',\n        'Տ',\n        'Վ',\n        'Ս',\n        'Ռ',\n        'Ջ',\n        'Պ',\n        'Չ',\n        'Ո',\n        'Շ',\n        'Ն',\n        'Յ',\n        'Մ',\n        'Ճ',\n        'Ղ',\n        'Ձ',\n        'Հ',\n        'Կ',\n        'Ծ',\n        'Խ',\n        'Լ',\n        'Ի',\n        'Ժ',\n        'Թ',\n        'Ը',\n        'Է',\n        'Զ',\n        'Ե',\n        'Դ',\n        'Գ',\n        'Բ',\n        'Ա'\n    ]\n};\nvar HEBREW = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n        19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'י׳',\n        'ט׳',\n        'ח׳',\n        'ז׳',\n        'ו׳',\n        'ה׳',\n        'ד׳',\n        'ג׳',\n        'ב׳',\n        'א׳',\n        'ת',\n        'ש',\n        'ר',\n        'ק',\n        'צ',\n        'פ',\n        'ע',\n        'ס',\n        'נ',\n        'מ',\n        'ל',\n        'כ',\n        'יט',\n        'יח',\n        'יז',\n        'טז',\n        'טו',\n        'י',\n        'ט',\n        'ח',\n        'ז',\n        'ו',\n        'ה',\n        'ד',\n        'ג',\n        'ב',\n        'א'\n    ]\n};\nvar GEORGIAN = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n        80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\n        'ჵ',\n        'ჰ',\n        'ჯ',\n        'ჴ',\n        'ხ',\n        'ჭ',\n        'წ',\n        'ძ',\n        'ც',\n        'ჩ',\n        'შ',\n        'ყ',\n        'ღ',\n        'ქ',\n        'ფ',\n        'ჳ',\n        'ტ',\n        'ს',\n        'რ',\n        'ჟ',\n        'პ',\n        'ო',\n        'ჲ',\n        'ნ',\n        'მ',\n        'ლ',\n        'კ',\n        'ი',\n        'თ',\n        'ჱ',\n        'ზ',\n        'ვ',\n        'ე',\n        'დ',\n        'გ',\n        'ბ',\n        'ა'\n    ]\n};\nvar createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n    if (value < min || value > max) {\n        return createCounterText(value, fallback, suffix.length > 0);\n    }\n    return (symbols.integers.reduce(function (string, integer, index) {\n        while (value >= integer) {\n            value -= integer;\n            string += symbols.values[index];\n        }\n        return string;\n    }, '') + suffix);\n};\nvar createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n    var string = '';\n    do {\n        if (!isNumeric) {\n            value--;\n        }\n        string = resolver(value) + string;\n        value /= codePointRangeLength;\n    } while (value * codePointRangeLength >= codePointRangeLength);\n    return string;\n};\nvar createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n    var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n    return ((value < 0 ? '-' : '') +\n        (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n            return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n        }) +\n            suffix));\n};\nvar createCounterStyleFromSymbols = function (value, symbols, suffix) {\n    if (suffix === void 0) { suffix = '. '; }\n    var codePointRangeLength = symbols.length;\n    return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\n};\nvar CJK_ZEROS = 1 << 0;\nvar CJK_TEN_COEFFICIENTS = 1 << 1;\nvar CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nvar CJK_HUNDRED_COEFFICIENTS = 1 << 3;\nvar createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n    if (value < -9999 || value > 9999) {\n        return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\n    }\n    var tmp = Math.abs(value);\n    var string = suffix;\n    if (tmp === 0) {\n        return numbers[0] + string;\n    }\n    for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n        var coefficient = tmp % 10;\n        if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n            string = numbers[coefficient] + string;\n        }\n        else if (coefficient > 1 ||\n            (coefficient === 1 && digit === 0) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n            (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\n            string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n        }\n        else if (coefficient === 1 && digit > 0) {\n            string = multipliers[digit - 1] + string;\n        }\n        tmp = Math.floor(tmp / 10);\n    }\n    return (value < 0 ? negativeSign : '') + string;\n};\nvar CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nvar CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nvar JAPANESE_NEGATIVE = 'マイナス';\nvar KOREAN_NEGATIVE = '마이너스';\nvar createCounterText = function (value, type, appendSuffix) {\n    var defaultSuffix = appendSuffix ? '. ' : '';\n    var cjkSuffix = appendSuffix ? '、' : '';\n    var koreanSuffix = appendSuffix ? ', ' : '';\n    var spaceSuffix = appendSuffix ? ' ' : '';\n    switch (type) {\n        case 0 /* DISC */:\n            return '•' + spaceSuffix;\n        case 1 /* CIRCLE */:\n            return '◦' + spaceSuffix;\n        case 2 /* SQUARE */:\n            return '◾' + spaceSuffix;\n        case 5 /* DECIMAL_LEADING_ZERO */:\n            var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n            return string.length < 4 ? \"0\" + string : string;\n        case 4 /* CJK_DECIMAL */:\n            return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n        case 6 /* LOWER_ROMAN */:\n            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n        case 7 /* UPPER_ROMAN */:\n            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\n        case 8 /* LOWER_GREEK */:\n            return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n        case 9 /* LOWER_ALPHA */:\n            return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n        case 10 /* UPPER_ALPHA */:\n            return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n        case 11 /* ARABIC_INDIC */:\n            return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n        case 12 /* ARMENIAN */:\n        case 49 /* UPPER_ARMENIAN */:\n            return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\n        case 35 /* LOWER_ARMENIAN */:\n            return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n        case 13 /* BENGALI */:\n            return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n        case 14 /* CAMBODIAN */:\n        case 30 /* KHMER */:\n            return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n        case 15 /* CJK_EARTHLY_BRANCH */:\n            return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n        case 16 /* CJK_HEAVENLY_STEM */:\n            return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n        case 17 /* CJK_IDEOGRAPHIC */:\n        case 48 /* TRAD_CHINESE_INFORMAL */:\n            return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n        case 47 /* TRAD_CHINESE_FORMAL */:\n            return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n        case 42 /* SIMP_CHINESE_INFORMAL */:\n            return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n        case 41 /* SIMP_CHINESE_FORMAL */:\n            return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n        case 26 /* JAPANESE_INFORMAL */:\n            return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n        case 25 /* JAPANESE_FORMAL */:\n            return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n        case 31 /* KOREAN_HANGUL_FORMAL */:\n            return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n        case 33 /* KOREAN_HANJA_INFORMAL */:\n            return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n        case 32 /* KOREAN_HANJA_FORMAL */:\n            return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n        case 18 /* DEVANAGARI */:\n            return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n        case 20 /* GEORGIAN */:\n            return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\n        case 21 /* GUJARATI */:\n            return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n        case 22 /* GURMUKHI */:\n            return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n        case 22 /* HEBREW */:\n            return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\n        case 23 /* HIRAGANA */:\n            return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n        case 24 /* HIRAGANA_IROHA */:\n            return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n        case 27 /* KANNADA */:\n            return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n        case 28 /* KATAKANA */:\n            return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n        case 29 /* KATAKANA_IROHA */:\n            return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n        case 34 /* LAO */:\n            return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n        case 37 /* MONGOLIAN */:\n            return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n        case 38 /* MYANMAR */:\n            return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n        case 39 /* ORIYA */:\n            return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n        case 40 /* PERSIAN */:\n            return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n        case 43 /* TAMIL */:\n            return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n        case 44 /* TELUGU */:\n            return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n        case 45 /* THAI */:\n            return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n        case 46 /* TIBETAN */:\n            return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n        case 3 /* DECIMAL */:\n        default:\n            return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n    }\n};\n\nvar IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\nvar DocumentCloner = /** @class */ (function () {\n    function DocumentCloner(context, element, options) {\n        this.context = context;\n        this.options = options;\n        this.scrolledElements = [];\n        this.referenceElement = element;\n        this.counters = new CounterState();\n        this.quoteDepth = 0;\n        if (!element.ownerDocument) {\n            throw new Error('Cloned element does not have an owner document');\n        }\n        this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\n    }\n    DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n        var _this = this;\n        var iframe = createIFrameContainer(ownerDocument, windowSize);\n        if (!iframe.contentWindow) {\n            return Promise.reject(\"Unable to find iframe window\");\n        }\n        var scrollX = ownerDocument.defaultView.pageXOffset;\n        var scrollY = ownerDocument.defaultView.pageYOffset;\n        var cloneWindow = iframe.contentWindow;\n        var documentClone = cloneWindow.document;\n        /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n         if window url is about:blank, we can assign the url to current by writing onto the document\n         */\n        var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {\n            var onclone, referenceElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.scrolledElements.forEach(restoreNodeScroll);\n                        if (cloneWindow) {\n                            cloneWindow.scrollTo(windowSize.left, windowSize.top);\n                            if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n                                (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\n                                this.context.logger.warn('Unable to restore scroll position for cloned document');\n                                this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);\n                            }\n                        }\n                        onclone = this.options.onclone;\n                        referenceElement = this.clonedReferenceElement;\n                        if (typeof referenceElement === 'undefined') {\n                            return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\n                        }\n                        if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\n                        return [4 /*yield*/, documentClone.fonts.ready];\n                    case 1:\n                        _a.sent();\n                        _a.label = 2;\n                    case 2:\n                        if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];\n                        return [4 /*yield*/, imagesReady(documentClone)];\n                    case 3:\n                        _a.sent();\n                        _a.label = 4;\n                    case 4:\n                        if (typeof onclone === 'function') {\n                            return [2 /*return*/, Promise.resolve()\n                                    .then(function () { return onclone(documentClone, referenceElement); })\n                                    .then(function () { return iframe; })];\n                        }\n                        return [2 /*return*/, iframe];\n                }\n            });\n        }); });\n        documentClone.open();\n        documentClone.write(serializeDoctype(document.doctype) + \"<html></html>\");\n        // Chrome scrolls the parent document for some reason after the write to the cloned window???\n        restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n        documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n        documentClone.close();\n        return iframeLoad;\n    };\n    DocumentCloner.prototype.createElementClone = function (node) {\n        if (isDebugging(node, 2 /* CLONE */)) {\n            debugger;\n        }\n        if (isCanvasElement(node)) {\n            return this.createCanvasClone(node);\n        }\n        if (isVideoElement(node)) {\n            return this.createVideoClone(node);\n        }\n        if (isStyleElement(node)) {\n            return this.createStyleClone(node);\n        }\n        var clone = node.cloneNode(false);\n        if (isImageElement(clone)) {\n            if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n                clone.src = node.currentSrc;\n                clone.srcset = '';\n            }\n            if (clone.loading === 'lazy') {\n                clone.loading = 'eager';\n            }\n        }\n        if (isCustomElement(clone)) {\n            return this.createCustomElementClone(clone);\n        }\n        return clone;\n    };\n    DocumentCloner.prototype.createCustomElementClone = function (node) {\n        var clone = document.createElement('html2canvascustomelement');\n        copyCSSStyles(node.style, clone);\n        return clone;\n    };\n    DocumentCloner.prototype.createStyleClone = function (node) {\n        try {\n            var sheet = node.sheet;\n            if (sheet && sheet.cssRules) {\n                var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\n                    if (rule && typeof rule.cssText === 'string') {\n                        return css + rule.cssText;\n                    }\n                    return css;\n                }, '');\n                var style = node.cloneNode(false);\n                style.textContent = css;\n                return style;\n            }\n        }\n        catch (e) {\n            // accessing node.sheet.cssRules throws a DOMException\n            this.context.logger.error('Unable to access cssRules property', e);\n            if (e.name !== 'SecurityError') {\n                throw e;\n            }\n        }\n        return node.cloneNode(false);\n    };\n    DocumentCloner.prototype.createCanvasClone = function (canvas) {\n        var _a;\n        if (this.options.inlineImages && canvas.ownerDocument) {\n            var img = canvas.ownerDocument.createElement('img');\n            try {\n                img.src = canvas.toDataURL();\n                return img;\n            }\n            catch (e) {\n                this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\", canvas);\n            }\n        }\n        var clonedCanvas = canvas.cloneNode(false);\n        try {\n            clonedCanvas.width = canvas.width;\n            clonedCanvas.height = canvas.height;\n            var ctx = canvas.getContext('2d');\n            var clonedCtx = clonedCanvas.getContext('2d');\n            if (clonedCtx) {\n                if (!this.options.allowTaint && ctx) {\n                    clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n                }\n                else {\n                    var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');\n                    if (gl) {\n                        var attribs = gl.getContextAttributes();\n                        if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {\n                            this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);\n                        }\n                    }\n                    clonedCtx.drawImage(canvas, 0, 0);\n                }\n            }\n            return clonedCanvas;\n        }\n        catch (e) {\n            this.context.logger.info(\"Unable to clone canvas as it is tainted\", canvas);\n        }\n        return clonedCanvas;\n    };\n    DocumentCloner.prototype.createVideoClone = function (video) {\n        var canvas = video.ownerDocument.createElement('canvas');\n        canvas.width = video.offsetWidth;\n        canvas.height = video.offsetHeight;\n        var ctx = canvas.getContext('2d');\n        try {\n            if (ctx) {\n                ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n                if (!this.options.allowTaint) {\n                    ctx.getImageData(0, 0, canvas.width, canvas.height);\n                }\n            }\n            return canvas;\n        }\n        catch (e) {\n            this.context.logger.info(\"Unable to clone video as it is tainted\", video);\n        }\n        var blankCanvas = video.ownerDocument.createElement('canvas');\n        blankCanvas.width = video.offsetWidth;\n        blankCanvas.height = video.offsetHeight;\n        return blankCanvas;\n    };\n    DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {\n        if (!isElementNode(child) ||\n            (!isScriptElement(child) &&\n                !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n                (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {\n            if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n                clone.appendChild(this.cloneNode(child, copyStyles));\n            }\n        }\n    };\n    DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {\n        var _this = this;\n        for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {\n            if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n                var assignedNodes = child.assignedNodes();\n                if (assignedNodes.length) {\n                    assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });\n                }\n            }\n            else {\n                this.appendChildNode(clone, child, copyStyles);\n            }\n        }\n    };\n    DocumentCloner.prototype.cloneNode = function (node, copyStyles) {\n        if (isTextNode(node)) {\n            return document.createTextNode(node.data);\n        }\n        if (!node.ownerDocument) {\n            return node.cloneNode(false);\n        }\n        var window = node.ownerDocument.defaultView;\n        if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n            var clone = this.createElementClone(node);\n            clone.style.transitionProperty = 'none';\n            var style = window.getComputedStyle(node);\n            var styleBefore = window.getComputedStyle(node, ':before');\n            var styleAfter = window.getComputedStyle(node, ':after');\n            if (this.referenceElement === node && isHTMLElementNode(clone)) {\n                this.clonedReferenceElement = clone;\n            }\n            if (isBodyElement(clone)) {\n                createPseudoHideStyles(clone);\n            }\n            var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n            var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n            if (isCustomElement(node)) {\n                copyStyles = true;\n            }\n            if (!isVideoElement(node)) {\n                this.cloneChildNodes(node, clone, copyStyles);\n            }\n            if (before) {\n                clone.insertBefore(before, clone.firstChild);\n            }\n            var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n            if (after) {\n                clone.appendChild(after);\n            }\n            this.counters.pop(counters);\n            if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n                copyStyles) {\n                copyCSSStyles(style, clone);\n            }\n            if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n                this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n            }\n            if ((isTextareaElement(node) || isSelectElement(node)) &&\n                (isTextareaElement(clone) || isSelectElement(clone))) {\n                clone.value = node.value;\n            }\n            return clone;\n        }\n        return node.cloneNode(false);\n    };\n    DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\n        var _this = this;\n        if (!style) {\n            return;\n        }\n        var value = style.content;\n        var document = clone.ownerDocument;\n        if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n            return;\n        }\n        this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n        var declaration = new CSSParsedPseudoDeclaration(this.context, style);\n        var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n        copyCSSStyles(style, anonymousReplacedElement);\n        declaration.content.forEach(function (token) {\n            if (token.type === 0 /* STRING_TOKEN */) {\n                anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n            }\n            else if (token.type === 22 /* URL_TOKEN */) {\n                var img = document.createElement('img');\n                img.src = token.value;\n                img.style.opacity = '1';\n                anonymousReplacedElement.appendChild(img);\n            }\n            else if (token.type === 18 /* FUNCTION */) {\n                if (token.name === 'attr') {\n                    var attr = token.values.filter(isIdentToken);\n                    if (attr.length) {\n                        anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\n                    }\n                }\n                else if (token.name === 'counter') {\n                    var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];\n                    if (counter && isIdentToken(counter)) {\n                        var counterState = _this.counters.getCounterValue(counter.value);\n                        var counterType = counterStyle && isIdentToken(counterStyle)\n                            ? listStyleType.parse(_this.context, counterStyle.value)\n                            : 3 /* DECIMAL */;\n                        anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\n                    }\n                }\n                else if (token.name === 'counters') {\n                    var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];\n                    if (counter && isIdentToken(counter)) {\n                        var counterStates = _this.counters.getCounterValues(counter.value);\n                        var counterType_1 = counterStyle && isIdentToken(counterStyle)\n                            ? listStyleType.parse(_this.context, counterStyle.value)\n                            : 3 /* DECIMAL */;\n                        var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';\n                        var text = counterStates\n                            .map(function (value) { return createCounterText(value, counterType_1, false); })\n                            .join(separator);\n                        anonymousReplacedElement.appendChild(document.createTextNode(text));\n                    }\n                }\n                else ;\n            }\n            else if (token.type === 20 /* IDENT_TOKEN */) {\n                switch (token.value) {\n                    case 'open-quote':\n                        anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\n                        break;\n                    case 'close-quote':\n                        anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\n                        break;\n                    default:\n                        // safari doesn't parse string tokens correctly because of lack of quotes\n                        anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n                }\n            }\n        });\n        anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n        var newClassName = pseudoElt === PseudoElementType.BEFORE\n            ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE\n            : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n        if (isSVGElementNode(clone)) {\n            clone.className.baseValue += newClassName;\n        }\n        else {\n            clone.className += newClassName;\n        }\n        return anonymousReplacedElement;\n    };\n    DocumentCloner.destroy = function (container) {\n        if (container.parentNode) {\n            container.parentNode.removeChild(container);\n            return true;\n        }\n        return false;\n    };\n    return DocumentCloner;\n}());\nvar PseudoElementType;\n(function (PseudoElementType) {\n    PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\n    PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\n})(PseudoElementType || (PseudoElementType = {}));\nvar createIFrameContainer = function (ownerDocument, bounds) {\n    var cloneIframeContainer = ownerDocument.createElement('iframe');\n    cloneIframeContainer.className = 'html2canvas-container';\n    cloneIframeContainer.style.visibility = 'hidden';\n    cloneIframeContainer.style.position = 'fixed';\n    cloneIframeContainer.style.left = '-10000px';\n    cloneIframeContainer.style.top = '0px';\n    cloneIframeContainer.style.border = '0';\n    cloneIframeContainer.width = bounds.width.toString();\n    cloneIframeContainer.height = bounds.height.toString();\n    cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n    cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n    ownerDocument.body.appendChild(cloneIframeContainer);\n    return cloneIframeContainer;\n};\nvar imageReady = function (img) {\n    return new Promise(function (resolve) {\n        if (img.complete) {\n            resolve();\n            return;\n        }\n        if (!img.src) {\n            resolve();\n            return;\n        }\n        img.onload = resolve;\n        img.onerror = resolve;\n    });\n};\nvar imagesReady = function (document) {\n    return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\nvar iframeLoader = function (iframe) {\n    return new Promise(function (resolve, reject) {\n        var cloneWindow = iframe.contentWindow;\n        if (!cloneWindow) {\n            return reject(\"No window assigned for iframe\");\n        }\n        var documentClone = cloneWindow.document;\n        cloneWindow.onload = iframe.onload = function () {\n            cloneWindow.onload = iframe.onload = null;\n            var interval = setInterval(function () {\n                if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n                    clearInterval(interval);\n                    resolve(iframe);\n                }\n            }, 50);\n        };\n    });\n};\nvar ignoredStyleProperties = [\n    'all',\n    'd',\n    'content' // Safari shows pseudoelements if content is set\n];\nvar copyCSSStyles = function (style, target) {\n    // Edge does not provide value for cssText\n    for (var i = style.length - 1; i >= 0; i--) {\n        var property = style.item(i);\n        if (ignoredStyleProperties.indexOf(property) === -1) {\n            target.style.setProperty(property, style.getPropertyValue(property));\n        }\n    }\n    return target;\n};\nvar serializeDoctype = function (doctype) {\n    var str = '';\n    if (doctype) {\n        str += '<!DOCTYPE ';\n        if (doctype.name) {\n            str += doctype.name;\n        }\n        if (doctype.internalSubset) {\n            str += doctype.internalSubset;\n        }\n        if (doctype.publicId) {\n            str += \"\\\"\" + doctype.publicId + \"\\\"\";\n        }\n        if (doctype.systemId) {\n            str += \"\\\"\" + doctype.systemId + \"\\\"\";\n        }\n        str += '>';\n    }\n    return str;\n};\nvar restoreOwnerScroll = function (ownerDocument, x, y) {\n    if (ownerDocument &&\n        ownerDocument.defaultView &&\n        (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n        ownerDocument.defaultView.scrollTo(x, y);\n    }\n};\nvar restoreNodeScroll = function (_a) {\n    var element = _a[0], x = _a[1], y = _a[2];\n    element.scrollLeft = x;\n    element.scrollTop = y;\n};\nvar PSEUDO_BEFORE = ':before';\nvar PSEUDO_AFTER = ':after';\nvar PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nvar PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\nvar PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n    content: \\\"\\\" !important;\\n    display: none !important;\\n}\";\nvar createPseudoHideStyles = function (body) {\n    createStyles(body, \".\" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + \"\\n         .\" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);\n};\nvar createStyles = function (body, styles) {\n    var document = body.ownerDocument;\n    if (document) {\n        var style = document.createElement('style');\n        style.textContent = styles;\n        body.appendChild(style);\n    }\n};\n\nvar CacheStorage = /** @class */ (function () {\n    function CacheStorage() {\n    }\n    CacheStorage.getOrigin = function (url) {\n        var link = CacheStorage._link;\n        if (!link) {\n            return 'about:blank';\n        }\n        link.href = url;\n        link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n        return link.protocol + link.hostname + link.port;\n    };\n    CacheStorage.isSameOrigin = function (src) {\n        return CacheStorage.getOrigin(src) === CacheStorage._origin;\n    };\n    CacheStorage.setContext = function (window) {\n        CacheStorage._link = window.document.createElement('a');\n        CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n    };\n    CacheStorage._origin = 'about:blank';\n    return CacheStorage;\n}());\nvar Cache = /** @class */ (function () {\n    function Cache(context, _options) {\n        this.context = context;\n        this._options = _options;\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this._cache = {};\n    }\n    Cache.prototype.addImage = function (src) {\n        var result = Promise.resolve();\n        if (this.has(src)) {\n            return result;\n        }\n        if (isBlobImage(src) || isRenderable(src)) {\n            (this._cache[src] = this.loadImage(src)).catch(function () {\n                // prevent unhandled rejection\n            });\n            return result;\n        }\n        return result;\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Cache.prototype.match = function (src) {\n        return this._cache[src];\n    };\n    Cache.prototype.loadImage = function (key) {\n        return __awaiter(this, void 0, void 0, function () {\n            var isSameOrigin, useCORS, useProxy, src;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        isSameOrigin = CacheStorage.isSameOrigin(key);\n                        useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n                        useProxy = !isInlineImage(key) &&\n                            !isSameOrigin &&\n                            !isBlobImage(key) &&\n                            typeof this._options.proxy === 'string' &&\n                            FEATURES.SUPPORT_CORS_XHR &&\n                            !useCORS;\n                        if (!isSameOrigin &&\n                            this._options.allowTaint === false &&\n                            !isInlineImage(key) &&\n                            !isBlobImage(key) &&\n                            !useProxy &&\n                            !useCORS) {\n                            return [2 /*return*/];\n                        }\n                        src = key;\n                        if (!useProxy) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.proxy(src)];\n                    case 1:\n                        src = _a.sent();\n                        _a.label = 2;\n                    case 2:\n                        this.context.logger.debug(\"Added image \" + key.substring(0, 256));\n                        return [4 /*yield*/, new Promise(function (resolve, reject) {\n                                var img = new Image();\n                                img.onload = function () { return resolve(img); };\n                                img.onerror = reject;\n                                //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n                                if (isInlineBase64Image(src) || useCORS) {\n                                    img.crossOrigin = 'anonymous';\n                                }\n                                img.src = src;\n                                if (img.complete === true) {\n                                    // Inline XML images may fail to parse, throwing an Error later on\n                                    setTimeout(function () { return resolve(img); }, 500);\n                                }\n                                if (_this._options.imageTimeout > 0) {\n                                    setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\n                                }\n                            })];\n                    case 3: return [2 /*return*/, _a.sent()];\n                }\n            });\n        });\n    };\n    Cache.prototype.has = function (key) {\n        return typeof this._cache[key] !== 'undefined';\n    };\n    Cache.prototype.keys = function () {\n        return Promise.resolve(Object.keys(this._cache));\n    };\n    Cache.prototype.proxy = function (src) {\n        var _this = this;\n        var proxy = this._options.proxy;\n        if (!proxy) {\n            throw new Error('No proxy defined');\n        }\n        var key = src.substring(0, 256);\n        return new Promise(function (resolve, reject) {\n            var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n            var xhr = new XMLHttpRequest();\n            xhr.onload = function () {\n                if (xhr.status === 200) {\n                    if (responseType === 'text') {\n                        resolve(xhr.response);\n                    }\n                    else {\n                        var reader_1 = new FileReader();\n                        reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\n                        reader_1.addEventListener('error', function (e) { return reject(e); }, false);\n                        reader_1.readAsDataURL(xhr.response);\n                    }\n                }\n                else {\n                    reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n                }\n            };\n            xhr.onerror = reject;\n            var queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n            xhr.open('GET', \"\" + proxy + queryString + \"url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n            if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n                xhr.responseType = responseType;\n            }\n            if (_this._options.imageTimeout) {\n                var timeout_1 = _this._options.imageTimeout;\n                xhr.timeout = timeout_1;\n                xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\n            }\n            xhr.send();\n        });\n    };\n    return Cache;\n}());\nvar INLINE_SVG = /^data:image\\/svg\\+xml/i;\nvar INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nvar INLINE_IMG = /^data:image\\/.*/i;\nvar isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\nvar isInlineImage = function (src) { return INLINE_IMG.test(src); };\nvar isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\nvar isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\nvar isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\n\nvar Vector = /** @class */ (function () {\n    function Vector(x, y) {\n        this.type = 0 /* VECTOR */;\n        this.x = x;\n        this.y = y;\n    }\n    Vector.prototype.add = function (deltaX, deltaY) {\n        return new Vector(this.x + deltaX, this.y + deltaY);\n    };\n    return Vector;\n}());\n\nvar lerp = function (a, b, t) {\n    return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\nvar BezierCurve = /** @class */ (function () {\n    function BezierCurve(start, startControl, endControl, end) {\n        this.type = 1 /* BEZIER_CURVE */;\n        this.start = start;\n        this.startControl = startControl;\n        this.endControl = endControl;\n        this.end = end;\n    }\n    BezierCurve.prototype.subdivide = function (t, firstHalf) {\n        var ab = lerp(this.start, this.startControl, t);\n        var bc = lerp(this.startControl, this.endControl, t);\n        var cd = lerp(this.endControl, this.end, t);\n        var abbc = lerp(ab, bc, t);\n        var bccd = lerp(bc, cd, t);\n        var dest = lerp(abbc, bccd, t);\n        return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n    };\n    BezierCurve.prototype.add = function (deltaX, deltaY) {\n        return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\n    };\n    BezierCurve.prototype.reverse = function () {\n        return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n    };\n    return BezierCurve;\n}());\nvar isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };\n\nvar BoundCurves = /** @class */ (function () {\n    function BoundCurves(element) {\n        var styles = element.styles;\n        var bounds = element.bounds;\n        var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];\n        var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];\n        var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];\n        var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];\n        var factors = [];\n        factors.push((tlh + trh) / bounds.width);\n        factors.push((blh + brh) / bounds.width);\n        factors.push((tlv + blv) / bounds.height);\n        factors.push((trv + brv) / bounds.height);\n        var maxFactor = Math.max.apply(Math, factors);\n        if (maxFactor > 1) {\n            tlh /= maxFactor;\n            tlv /= maxFactor;\n            trh /= maxFactor;\n            trv /= maxFactor;\n            brh /= maxFactor;\n            brv /= maxFactor;\n            blh /= maxFactor;\n            blv /= maxFactor;\n        }\n        var topWidth = bounds.width - trh;\n        var rightHeight = bounds.height - brv;\n        var bottomWidth = bounds.width - brh;\n        var leftHeight = bounds.height - blv;\n        var borderTopWidth = styles.borderTopWidth;\n        var borderRightWidth = styles.borderRightWidth;\n        var borderBottomWidth = styles.borderBottomWidth;\n        var borderLeftWidth = styles.borderLeftWidth;\n        var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n        var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n        var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n        var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n        this.topLeftBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n        this.topRightBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n        this.bottomRightBorderDoubleOuterBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n        this.bottomLeftBorderDoubleOuterBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n        this.topLeftBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)\n                : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n        this.topRightBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n        this.bottomRightBorderDoubleInnerBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n        this.bottomLeftBorderDoubleInnerBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n        this.topLeftBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n        this.topRightBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n        this.bottomRightBorderStroke =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n        this.bottomLeftBorderStroke =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n        this.topLeftBorderBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n                : new Vector(bounds.left, bounds.top);\n        this.topRightBorderBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top);\n        this.bottomRightBorderBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n        this.bottomLeftBorderBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left, bounds.top + bounds.height);\n        this.topLeftPaddingBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n        this.topRightPaddingBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n        this.bottomRightPaddingBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\n        this.bottomLeftPaddingBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n        this.topLeftContentBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)\n                : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n        this.topRightContentBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\n        this.bottomRightContentBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n        this.bottomLeftContentBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n    }\n    return BoundCurves;\n}());\nvar CORNER;\n(function (CORNER) {\n    CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n    CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\n    CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\n    CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\n})(CORNER || (CORNER = {}));\nvar getCurvePoints = function (x, y, r1, r2, position) {\n    var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n    var ox = r1 * kappa; // control point offset horizontal\n    var oy = r2 * kappa; // control point offset vertical\n    var xm = x + r1; // x-middle\n    var ym = y + r2; // y-middle\n    switch (position) {\n        case CORNER.TOP_LEFT:\n            return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\n        case CORNER.TOP_RIGHT:\n            return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\n        case CORNER.BOTTOM_RIGHT:\n            return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\n        case CORNER.BOTTOM_LEFT:\n        default:\n            return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\n    }\n};\nvar calculateBorderBoxPath = function (curves) {\n    return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\nvar calculateContentBoxPath = function (curves) {\n    return [\n        curves.topLeftContentBox,\n        curves.topRightContentBox,\n        curves.bottomRightContentBox,\n        curves.bottomLeftContentBox\n    ];\n};\nvar calculatePaddingBoxPath = function (curves) {\n    return [\n        curves.topLeftPaddingBox,\n        curves.topRightPaddingBox,\n        curves.bottomRightPaddingBox,\n        curves.bottomLeftPaddingBox\n    ];\n};\n\nvar TransformEffect = /** @class */ (function () {\n    function TransformEffect(offsetX, offsetY, matrix) {\n        this.offsetX = offsetX;\n        this.offsetY = offsetY;\n        this.matrix = matrix;\n        this.type = 0 /* TRANSFORM */;\n        this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n    }\n    return TransformEffect;\n}());\nvar ClipEffect = /** @class */ (function () {\n    function ClipEffect(path, target) {\n        this.path = path;\n        this.target = target;\n        this.type = 1 /* CLIP */;\n    }\n    return ClipEffect;\n}());\nvar OpacityEffect = /** @class */ (function () {\n    function OpacityEffect(opacity) {\n        this.opacity = opacity;\n        this.type = 2 /* OPACITY */;\n        this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n    }\n    return OpacityEffect;\n}());\nvar isTransformEffect = function (effect) {\n    return effect.type === 0 /* TRANSFORM */;\n};\nvar isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };\nvar isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };\n\nvar equalPath = function (a, b) {\n    if (a.length === b.length) {\n        return a.some(function (v, i) { return v === b[i]; });\n    }\n    return false;\n};\nvar transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\n    return path.map(function (point, index) {\n        switch (index) {\n            case 0:\n                return point.add(deltaX, deltaY);\n            case 1:\n                return point.add(deltaX + deltaW, deltaY);\n            case 2:\n                return point.add(deltaX + deltaW, deltaY + deltaH);\n            case 3:\n                return point.add(deltaX, deltaY + deltaH);\n        }\n        return point;\n    });\n};\n\nvar StackingContext = /** @class */ (function () {\n    function StackingContext(container) {\n        this.element = container;\n        this.inlineLevel = [];\n        this.nonInlineLevel = [];\n        this.negativeZIndex = [];\n        this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n        this.positiveZIndex = [];\n        this.nonPositionedFloats = [];\n        this.nonPositionedInlineLevel = [];\n    }\n    return StackingContext;\n}());\nvar ElementPaint = /** @class */ (function () {\n    function ElementPaint(container, parent) {\n        this.container = container;\n        this.parent = parent;\n        this.effects = [];\n        this.curves = new BoundCurves(this.container);\n        if (this.container.styles.opacity < 1) {\n            this.effects.push(new OpacityEffect(this.container.styles.opacity));\n        }\n        if (this.container.styles.transform !== null) {\n            var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n            var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n            var matrix = this.container.styles.transform;\n            this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n        }\n        if (this.container.styles.overflowX !== 0 /* VISIBLE */) {\n            var borderBox = calculateBorderBoxPath(this.curves);\n            var paddingBox = calculatePaddingBoxPath(this.curves);\n            if (equalPath(borderBox, paddingBox)) {\n                this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n            }\n            else {\n                this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\n                this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\n            }\n        }\n    }\n    ElementPaint.prototype.getEffects = function (target) {\n        var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;\n        var parent = this.parent;\n        var effects = this.effects.slice(0);\n        while (parent) {\n            var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });\n            if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {\n                effects.unshift.apply(effects, croplessEffects);\n                inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;\n                if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {\n                    var borderBox = calculateBorderBoxPath(parent.curves);\n                    var paddingBox = calculatePaddingBoxPath(parent.curves);\n                    if (!equalPath(borderBox, paddingBox)) {\n                        effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n                    }\n                }\n            }\n            else {\n                effects.unshift.apply(effects, croplessEffects);\n            }\n            parent = parent.parent;\n        }\n        return effects.filter(function (effect) { return contains(effect.target, target); });\n    };\n    return ElementPaint;\n}());\nvar parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\n    parent.container.elements.forEach(function (child) {\n        var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\n        var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\n        var paintContainer = new ElementPaint(child, parent);\n        if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\n            listItems.push(paintContainer);\n        }\n        var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\n        if (treatAsRealStackingContext || createsStackingContext) {\n            var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n            var stack = new StackingContext(paintContainer);\n            if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n                var order_1 = child.styles.zIndex.order;\n                if (order_1 < 0) {\n                    var index_1 = 0;\n                    parentStack.negativeZIndex.some(function (current, i) {\n                        if (order_1 > current.element.container.styles.zIndex.order) {\n                            index_1 = i;\n                            return false;\n                        }\n                        else if (index_1 > 0) {\n                            return true;\n                        }\n                        return false;\n                    });\n                    parentStack.negativeZIndex.splice(index_1, 0, stack);\n                }\n                else if (order_1 > 0) {\n                    var index_2 = 0;\n                    parentStack.positiveZIndex.some(function (current, i) {\n                        if (order_1 >= current.element.container.styles.zIndex.order) {\n                            index_2 = i + 1;\n                            return false;\n                        }\n                        else if (index_2 > 0) {\n                            return true;\n                        }\n                        return false;\n                    });\n                    parentStack.positiveZIndex.splice(index_2, 0, stack);\n                }\n                else {\n                    parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n                }\n            }\n            else {\n                if (child.styles.isFloating()) {\n                    parentStack.nonPositionedFloats.push(stack);\n                }\n                else {\n                    parentStack.nonPositionedInlineLevel.push(stack);\n                }\n            }\n            parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\n        }\n        else {\n            if (child.styles.isInlineLevel()) {\n                stackingContext.inlineLevel.push(paintContainer);\n            }\n            else {\n                stackingContext.nonInlineLevel.push(paintContainer);\n            }\n            parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n        }\n        if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\n            processListItems(child, listOwnerItems);\n        }\n    });\n};\nvar processListItems = function (owner, elements) {\n    var numbering = owner instanceof OLElementContainer ? owner.start : 1;\n    var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n    for (var i = 0; i < elements.length; i++) {\n        var item = elements[i];\n        if (item.container instanceof LIElementContainer &&\n            typeof item.container.value === 'number' &&\n            item.container.value !== 0) {\n            numbering = item.container.value;\n        }\n        item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n        numbering += reversed ? -1 : 1;\n    }\n};\nvar parseStackingContexts = function (container) {\n    var paintContainer = new ElementPaint(container, null);\n    var root = new StackingContext(paintContainer);\n    var listItems = [];\n    parseStackTree(paintContainer, root, root, listItems);\n    processListItems(paintContainer.container, listItems);\n    return root;\n};\n\nvar parsePathForBorder = function (curves, borderSide) {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\n        case 1:\n            return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\n        case 2:\n            return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\n        case 3:\n        default:\n            return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\n    }\n};\nvar parsePathForBorderDoubleOuter = function (curves, borderSide) {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);\n        case 1:\n            return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);\n        case 2:\n            return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);\n        case 3:\n        default:\n            return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);\n    }\n};\nvar parsePathForBorderDoubleInner = function (curves, borderSide) {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);\n        case 1:\n            return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);\n        case 2:\n            return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);\n        case 3:\n        default:\n            return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);\n    }\n};\nvar parsePathForBorderStroke = function (curves, borderSide) {\n    switch (borderSide) {\n        case 0:\n            return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n        case 1:\n            return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n        case 2:\n            return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n        case 3:\n        default:\n            return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n    }\n};\nvar createStrokePathFromCurves = function (outer1, outer2) {\n    var path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    }\n    else {\n        path.push(outer1);\n    }\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    }\n    else {\n        path.push(outer2);\n    }\n    return path;\n};\nvar createPathFromCurves = function (outer1, inner1, outer2, inner2) {\n    var path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    }\n    else {\n        path.push(outer1);\n    }\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    }\n    else {\n        path.push(outer2);\n    }\n    if (isBezierCurve(inner2)) {\n        path.push(inner2.subdivide(0.5, true).reverse());\n    }\n    else {\n        path.push(inner2);\n    }\n    if (isBezierCurve(inner1)) {\n        path.push(inner1.subdivide(0.5, false).reverse());\n    }\n    else {\n        path.push(inner1);\n    }\n    return path;\n};\n\nvar paddingBox = function (element) {\n    var bounds = element.bounds;\n    var styles = element.styles;\n    return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\n};\nvar contentBox = function (element) {\n    var styles = element.styles;\n    var bounds = element.bounds;\n    var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n    var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n    var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n    var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n    return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\n};\n\nvar calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\n    if (backgroundOrigin === 0 /* BORDER_BOX */) {\n        return element.bounds;\n    }\n    if (backgroundOrigin === 2 /* CONTENT_BOX */) {\n        return contentBox(element);\n    }\n    return paddingBox(element);\n};\nvar calculateBackgroundPaintingArea = function (backgroundClip, element) {\n    if (backgroundClip === 0 /* BORDER_BOX */) {\n        return element.bounds;\n    }\n    if (backgroundClip === 2 /* CONTENT_BOX */) {\n        return contentBox(element);\n    }\n    return paddingBox(element);\n};\nvar calculateBackgroundRendering = function (container, index, intrinsicSize) {\n    var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\n    var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\n    var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\n    var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];\n    var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\n    var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\n    var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n    var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n    return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\nvar isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };\nvar hasIntrinsicValue = function (value) { return typeof value === 'number'; };\nvar calculateBackgroundSize = function (size, _a, bounds) {\n    var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];\n    var first = size[0], second = size[1];\n    if (!first) {\n        return [0, 0];\n    }\n    if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n        return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n    }\n    var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n    if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n        if (hasIntrinsicValue(intrinsicProportion)) {\n            var targetRatio = bounds.width / bounds.height;\n            return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n                ? [bounds.width, bounds.width / intrinsicProportion]\n                : [bounds.height * intrinsicProportion, bounds.height];\n        }\n        return [bounds.width, bounds.height];\n    }\n    var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n    var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n    var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n    // If the background-size is auto or auto auto:\n    if (isAuto(first) && (!second || isAuto(second))) {\n        // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n        if (hasIntrinsicWidth && hasIntrinsicHeight) {\n            return [intrinsicWidth, intrinsicHeight];\n        }\n        // If the image has no intrinsic dimensions and has no intrinsic proportions,\n        // it's rendered at the size of the background positioning area.\n        if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n            return [bounds.width, bounds.height];\n        }\n        // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n        // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n        // The other dimension is computed using the specified dimension and the intrinsic proportions.\n        if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n            var width_1 = hasIntrinsicWidth\n                ? intrinsicWidth\n                : intrinsicHeight * intrinsicProportion;\n            var height_1 = hasIntrinsicHeight\n                ? intrinsicHeight\n                : intrinsicWidth / intrinsicProportion;\n            return [width_1, height_1];\n        }\n        // If the image has only one intrinsic dimension but has no intrinsic proportions,\n        // it's rendered using the specified dimension and the other dimension of the background positioning area.\n        var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\n        var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\n        return [width_2, height_2];\n    }\n    // If the image has intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n    if (hasIntrinsicProportion) {\n        var width_3 = 0;\n        var height_3 = 0;\n        if (isLengthPercentage(first)) {\n            width_3 = getAbsoluteValue(first, bounds.width);\n        }\n        else if (isLengthPercentage(second)) {\n            height_3 = getAbsoluteValue(second, bounds.height);\n        }\n        if (isAuto(first)) {\n            width_3 = height_3 * intrinsicProportion;\n        }\n        else if (!second || isAuto(second)) {\n            height_3 = width_3 / intrinsicProportion;\n        }\n        return [width_3, height_3];\n    }\n    // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n    // if there is one. If there is no such intrinsic dimension,\n    // it becomes the corresponding dimension of the background positioning area.\n    var width = null;\n    var height = null;\n    if (isLengthPercentage(first)) {\n        width = getAbsoluteValue(first, bounds.width);\n    }\n    else if (second && isLengthPercentage(second)) {\n        height = getAbsoluteValue(second, bounds.height);\n    }\n    if (width !== null && (!second || isAuto(second))) {\n        height =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (width / intrinsicWidth) * intrinsicHeight\n                : bounds.height;\n    }\n    if (height !== null && isAuto(first)) {\n        width =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (height / intrinsicHeight) * intrinsicWidth\n                : bounds.width;\n    }\n    if (width !== null && height !== null) {\n        return [width, height];\n    }\n    throw new Error(\"Unable to calculate background-size for element\");\n};\nvar getBackgroundValueForIndex = function (values, index) {\n    var value = values[index];\n    if (typeof value === 'undefined') {\n        return values[0];\n    }\n    return value;\n};\nvar calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\n    var x = _a[0], y = _a[1];\n    var width = _b[0], height = _b[1];\n    switch (repeat) {\n        case 2 /* REPEAT_X */:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),\n                new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))\n            ];\n        case 3 /* REPEAT_Y */:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n                new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),\n                new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))\n            ];\n        case 1 /* NO_REPEAT */:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))\n            ];\n        default:\n            return [\n                new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n                new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),\n                new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),\n                new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))\n            ];\n    }\n};\n\nvar SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\nvar SAMPLE_TEXT = 'Hidden Text';\nvar FontMetrics = /** @class */ (function () {\n    function FontMetrics(document) {\n        this._data = {};\n        this._document = document;\n    }\n    FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\n        var container = this._document.createElement('div');\n        var img = this._document.createElement('img');\n        var span = this._document.createElement('span');\n        var body = this._document.body;\n        container.style.visibility = 'hidden';\n        container.style.fontFamily = fontFamily;\n        container.style.fontSize = fontSize;\n        container.style.margin = '0';\n        container.style.padding = '0';\n        container.style.whiteSpace = 'nowrap';\n        body.appendChild(container);\n        img.src = SMALL_IMAGE;\n        img.width = 1;\n        img.height = 1;\n        img.style.margin = '0';\n        img.style.padding = '0';\n        img.style.verticalAlign = 'baseline';\n        span.style.fontFamily = fontFamily;\n        span.style.fontSize = fontSize;\n        span.style.margin = '0';\n        span.style.padding = '0';\n        span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n        container.appendChild(span);\n        container.appendChild(img);\n        var baseline = img.offsetTop - span.offsetTop + 2;\n        container.removeChild(span);\n        container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n        container.style.lineHeight = 'normal';\n        img.style.verticalAlign = 'super';\n        var middle = img.offsetTop - container.offsetTop + 2;\n        body.removeChild(container);\n        return { baseline: baseline, middle: middle };\n    };\n    FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\n        var key = fontFamily + \" \" + fontSize;\n        if (typeof this._data[key] === 'undefined') {\n            this._data[key] = this.parseMetrics(fontFamily, fontSize);\n        }\n        return this._data[key];\n    };\n    return FontMetrics;\n}());\n\nvar Renderer = /** @class */ (function () {\n    function Renderer(context, options) {\n        this.context = context;\n        this.options = options;\n    }\n    return Renderer;\n}());\n\nvar MASK_OFFSET = 10000;\nvar CanvasRenderer = /** @class */ (function (_super) {\n    __extends(CanvasRenderer, _super);\n    function CanvasRenderer(context, options) {\n        var _this = _super.call(this, context, options) || this;\n        _this._activeEffects = [];\n        _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        _this.ctx = _this.canvas.getContext('2d');\n        if (!options.canvas) {\n            _this.canvas.width = Math.floor(options.width * options.scale);\n            _this.canvas.height = Math.floor(options.height * options.scale);\n            _this.canvas.style.width = options.width + \"px\";\n            _this.canvas.style.height = options.height + \"px\";\n        }\n        _this.fontMetrics = new FontMetrics(document);\n        _this.ctx.scale(_this.options.scale, _this.options.scale);\n        _this.ctx.translate(-options.x, -options.y);\n        _this.ctx.textBaseline = 'bottom';\n        _this._activeEffects = [];\n        _this.context.logger.debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \") with scale \" + options.scale);\n        return _this;\n    }\n    CanvasRenderer.prototype.applyEffects = function (effects) {\n        var _this = this;\n        while (this._activeEffects.length) {\n            this.popEffect();\n        }\n        effects.forEach(function (effect) { return _this.applyEffect(effect); });\n    };\n    CanvasRenderer.prototype.applyEffect = function (effect) {\n        this.ctx.save();\n        if (isOpacityEffect(effect)) {\n            this.ctx.globalAlpha = effect.opacity;\n        }\n        if (isTransformEffect(effect)) {\n            this.ctx.translate(effect.offsetX, effect.offsetY);\n            this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\n            this.ctx.translate(-effect.offsetX, -effect.offsetY);\n        }\n        if (isClipEffect(effect)) {\n            this.path(effect.path);\n            this.ctx.clip();\n        }\n        this._activeEffects.push(effect);\n    };\n    CanvasRenderer.prototype.popEffect = function () {\n        this._activeEffects.pop();\n        this.ctx.restore();\n    };\n    CanvasRenderer.prototype.renderStack = function (stack) {\n        return __awaiter(this, void 0, void 0, function () {\n            var styles;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        styles = stack.element.container.styles;\n                        if (!styles.isVisible()) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.renderStackContent(stack)];\n                    case 1:\n                        _a.sent();\n                        _a.label = 2;\n                    case 2: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderNode = function (paint) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {\n                            debugger;\n                        }\n                        if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\n                        return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this.renderNodeContent(paint)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {\n        var _this = this;\n        if (letterSpacing === 0) {\n            this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n        }\n        else {\n            var letters = segmentGraphemes(text.text);\n            letters.reduce(function (left, letter) {\n                _this.ctx.fillText(letter, left, text.bounds.top + baseline);\n                return left + _this.ctx.measureText(letter).width;\n            }, text.bounds.left);\n        }\n    };\n    CanvasRenderer.prototype.createFontStyle = function (styles) {\n        var fontVariant = styles.fontVariant\n            .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })\n            .join('');\n        var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n        var fontSize = isDimensionToken(styles.fontSize)\n            ? \"\" + styles.fontSize.number + styles.fontSize.unit\n            : styles.fontSize.number + \"px\";\n        return [\n            [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n            fontFamily,\n            fontSize\n        ];\n    };\n    CanvasRenderer.prototype.renderTextNode = function (text, styles) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;\n            var _this = this;\n            return __generator(this, function (_c) {\n                _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\n                this.ctx.font = font;\n                this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';\n                this.ctx.textAlign = 'left';\n                this.ctx.textBaseline = 'alphabetic';\n                _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;\n                paintOrder = styles.paintOrder;\n                text.textBounds.forEach(function (text) {\n                    paintOrder.forEach(function (paintOrderLayer) {\n                        switch (paintOrderLayer) {\n                            case 0 /* FILL */:\n                                _this.ctx.fillStyle = asString(styles.color);\n                                _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                var textShadows = styles.textShadow;\n                                if (textShadows.length && text.text.trim().length) {\n                                    textShadows\n                                        .slice(0)\n                                        .reverse()\n                                        .forEach(function (textShadow) {\n                                        _this.ctx.shadowColor = asString(textShadow.color);\n                                        _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;\n                                        _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;\n                                        _this.ctx.shadowBlur = textShadow.blur.number;\n                                        _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                    });\n                                    _this.ctx.shadowColor = '';\n                                    _this.ctx.shadowOffsetX = 0;\n                                    _this.ctx.shadowOffsetY = 0;\n                                    _this.ctx.shadowBlur = 0;\n                                }\n                                if (styles.textDecorationLine.length) {\n                                    _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n                                    styles.textDecorationLine.forEach(function (textDecorationLine) {\n                                        switch (textDecorationLine) {\n                                            case 1 /* UNDERLINE */:\n                                                // Draws a line at the baseline of the font\n                                                // TODO As some browsers display the line as more than 1px if the font-size is big,\n                                                // need to take that into account both in position and size\n                                                _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\n                                                break;\n                                            case 2 /* OVERLINE */:\n                                                _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\n                                                break;\n                                            case 3 /* LINE_THROUGH */:\n                                                // TODO try and find exact position for line-through\n                                                _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\n                                                break;\n                                        }\n                                    });\n                                }\n                                break;\n                            case 1 /* STROKE */:\n                                if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n                                    _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n                                    _this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n                                    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                                    _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';\n                                    _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n                                }\n                                _this.ctx.strokeStyle = '';\n                                _this.ctx.lineWidth = 0;\n                                _this.ctx.lineJoin = 'miter';\n                                break;\n                        }\n                    });\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\n        if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n            var box = contentBox(container);\n            var path = calculatePaddingBoxPath(curves);\n            this.path(path);\n            this.ctx.save();\n            this.ctx.clip();\n            this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\n            this.ctx.restore();\n        }\n    };\n    CanvasRenderer.prototype.renderNodeContent = function (paint) {\n        return __awaiter(this, void 0, void 0, function () {\n            var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        this.applyEffects(paint.getEffects(4 /* CONTENT */));\n                        container = paint.container;\n                        curves = paint.curves;\n                        styles = container.styles;\n                        _i = 0, _a = container.textNodes;\n                        _c.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3 /*break*/, 4];\n                        child = _a[_i];\n                        return [4 /*yield*/, this.renderTextNode(child, styles)];\n                    case 2:\n                        _c.sent();\n                        _c.label = 3;\n                    case 3:\n                        _i++;\n                        return [3 /*break*/, 1];\n                    case 4:\n                        if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\n                        _c.label = 5;\n                    case 5:\n                        _c.trys.push([5, 7, , 8]);\n                        return [4 /*yield*/, this.context.cache.match(container.src)];\n                    case 6:\n                        image = _c.sent();\n                        this.renderReplacedElement(container, curves, image);\n                        return [3 /*break*/, 8];\n                    case 7:\n                        _c.sent();\n                        this.context.logger.error(\"Error loading image \" + container.src);\n                        return [3 /*break*/, 8];\n                    case 8:\n                        if (container instanceof CanvasElementContainer) {\n                            this.renderReplacedElement(container, curves, container.canvas);\n                        }\n                        if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\n                        _c.label = 9;\n                    case 9:\n                        _c.trys.push([9, 11, , 12]);\n                        return [4 /*yield*/, this.context.cache.match(container.svg)];\n                    case 10:\n                        image = _c.sent();\n                        this.renderReplacedElement(container, curves, image);\n                        return [3 /*break*/, 12];\n                    case 11:\n                        _c.sent();\n                        this.context.logger.error(\"Error loading svg \" + container.svg.substring(0, 255));\n                        return [3 /*break*/, 12];\n                    case 12:\n                        if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\n                        iframeRenderer = new CanvasRenderer(this.context, {\n                            scale: this.options.scale,\n                            backgroundColor: container.backgroundColor,\n                            x: 0,\n                            y: 0,\n                            width: container.width,\n                            height: container.height\n                        });\n                        return [4 /*yield*/, iframeRenderer.render(container.tree)];\n                    case 13:\n                        canvas = _c.sent();\n                        if (container.width && container.height) {\n                            this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\n                        }\n                        _c.label = 14;\n                    case 14:\n                        if (container instanceof InputElementContainer) {\n                            size = Math.min(container.bounds.width, container.bounds.height);\n                            if (container.type === CHECKBOX) {\n                                if (container.checked) {\n                                    this.ctx.save();\n                                    this.path([\n                                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n                                        new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n                                        new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n                                        new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n                                        new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n                                        new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n                                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n                                    ]);\n                                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                                    this.ctx.fill();\n                                    this.ctx.restore();\n                                }\n                            }\n                            else if (container.type === RADIO) {\n                                if (container.checked) {\n                                    this.ctx.save();\n                                    this.ctx.beginPath();\n                                    this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\n                                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                                    this.ctx.fill();\n                                    this.ctx.restore();\n                                }\n                            }\n                        }\n                        if (isTextInputElement(container) && container.value.length) {\n                            _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];\n                            baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\n                            this.ctx.font = fontFamily;\n                            this.ctx.fillStyle = asString(styles.color);\n                            this.ctx.textBaseline = 'alphabetic';\n                            this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n                            bounds = contentBox(container);\n                            x = 0;\n                            switch (container.styles.textAlign) {\n                                case 1 /* CENTER */:\n                                    x += bounds.width / 2;\n                                    break;\n                                case 2 /* RIGHT */:\n                                    x += bounds.width;\n                                    break;\n                            }\n                            textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n                            this.ctx.save();\n                            this.path([\n                                new Vector(bounds.left, bounds.top),\n                                new Vector(bounds.left + bounds.width, bounds.top),\n                                new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n                                new Vector(bounds.left, bounds.top + bounds.height)\n                            ]);\n                            this.ctx.clip();\n                            this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);\n                            this.ctx.restore();\n                            this.ctx.textBaseline = 'alphabetic';\n                            this.ctx.textAlign = 'left';\n                        }\n                        if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\n                        if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\n                        img = container.styles.listStyleImage;\n                        if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];\n                        image = void 0;\n                        url = img.url;\n                        _c.label = 15;\n                    case 15:\n                        _c.trys.push([15, 17, , 18]);\n                        return [4 /*yield*/, this.context.cache.match(url)];\n                    case 16:\n                        image = _c.sent();\n                        this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n                        return [3 /*break*/, 18];\n                    case 17:\n                        _c.sent();\n                        this.context.logger.error(\"Error loading list-style-image \" + url);\n                        return [3 /*break*/, 18];\n                    case 18: return [3 /*break*/, 20];\n                    case 19:\n                        if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {\n                            fontFamily = this.createFontStyle(styles)[0];\n                            this.ctx.font = fontFamily;\n                            this.ctx.fillStyle = asString(styles.color);\n                            this.ctx.textBaseline = 'middle';\n                            this.ctx.textAlign = 'right';\n                            bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);\n                            this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);\n                            this.ctx.textBaseline = 'bottom';\n                            this.ctx.textAlign = 'left';\n                        }\n                        _c.label = 20;\n                    case 20: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderStackContent = function (stack) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\n            return __generator(this, function (_p) {\n                switch (_p.label) {\n                    case 0:\n                        if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {\n                            debugger;\n                        }\n                        // https://www.w3.org/TR/css-position-3/#painting-order\n                        // 1. the background and borders of the element forming the stacking context.\n                        return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\n                    case 1:\n                        // https://www.w3.org/TR/css-position-3/#painting-order\n                        // 1. the background and borders of the element forming the stacking context.\n                        _p.sent();\n                        _i = 0, _a = stack.negativeZIndex;\n                        _p.label = 2;\n                    case 2:\n                        if (!(_i < _a.length)) return [3 /*break*/, 5];\n                        child = _a[_i];\n                        return [4 /*yield*/, this.renderStack(child)];\n                    case 3:\n                        _p.sent();\n                        _p.label = 4;\n                    case 4:\n                        _i++;\n                        return [3 /*break*/, 2];\n                    case 5: \n                    // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n                    return [4 /*yield*/, this.renderNodeContent(stack.element)];\n                    case 6:\n                        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n                        _p.sent();\n                        _b = 0, _c = stack.nonInlineLevel;\n                        _p.label = 7;\n                    case 7:\n                        if (!(_b < _c.length)) return [3 /*break*/, 10];\n                        child = _c[_b];\n                        return [4 /*yield*/, this.renderNode(child)];\n                    case 8:\n                        _p.sent();\n                        _p.label = 9;\n                    case 9:\n                        _b++;\n                        return [3 /*break*/, 7];\n                    case 10:\n                        _d = 0, _e = stack.nonPositionedFloats;\n                        _p.label = 11;\n                    case 11:\n                        if (!(_d < _e.length)) return [3 /*break*/, 14];\n                        child = _e[_d];\n                        return [4 /*yield*/, this.renderStack(child)];\n                    case 12:\n                        _p.sent();\n                        _p.label = 13;\n                    case 13:\n                        _d++;\n                        return [3 /*break*/, 11];\n                    case 14:\n                        _f = 0, _g = stack.nonPositionedInlineLevel;\n                        _p.label = 15;\n                    case 15:\n                        if (!(_f < _g.length)) return [3 /*break*/, 18];\n                        child = _g[_f];\n                        return [4 /*yield*/, this.renderStack(child)];\n                    case 16:\n                        _p.sent();\n                        _p.label = 17;\n                    case 17:\n                        _f++;\n                        return [3 /*break*/, 15];\n                    case 18:\n                        _h = 0, _j = stack.inlineLevel;\n                        _p.label = 19;\n                    case 19:\n                        if (!(_h < _j.length)) return [3 /*break*/, 22];\n                        child = _j[_h];\n                        return [4 /*yield*/, this.renderNode(child)];\n                    case 20:\n                        _p.sent();\n                        _p.label = 21;\n                    case 21:\n                        _h++;\n                        return [3 /*break*/, 19];\n                    case 22:\n                        _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\n                        _p.label = 23;\n                    case 23:\n                        if (!(_k < _l.length)) return [3 /*break*/, 26];\n                        child = _l[_k];\n                        return [4 /*yield*/, this.renderStack(child)];\n                    case 24:\n                        _p.sent();\n                        _p.label = 25;\n                    case 25:\n                        _k++;\n                        return [3 /*break*/, 23];\n                    case 26:\n                        _m = 0, _o = stack.positiveZIndex;\n                        _p.label = 27;\n                    case 27:\n                        if (!(_m < _o.length)) return [3 /*break*/, 30];\n                        child = _o[_m];\n                        return [4 /*yield*/, this.renderStack(child)];\n                    case 28:\n                        _p.sent();\n                        _p.label = 29;\n                    case 29:\n                        _m++;\n                        return [3 /*break*/, 27];\n                    case 30: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.mask = function (paths) {\n        this.ctx.beginPath();\n        this.ctx.moveTo(0, 0);\n        this.ctx.lineTo(this.canvas.width, 0);\n        this.ctx.lineTo(this.canvas.width, this.canvas.height);\n        this.ctx.lineTo(0, this.canvas.height);\n        this.ctx.lineTo(0, 0);\n        this.formatPath(paths.slice(0).reverse());\n        this.ctx.closePath();\n    };\n    CanvasRenderer.prototype.path = function (paths) {\n        this.ctx.beginPath();\n        this.formatPath(paths);\n        this.ctx.closePath();\n    };\n    CanvasRenderer.prototype.formatPath = function (paths) {\n        var _this = this;\n        paths.forEach(function (point, index) {\n            var start = isBezierCurve(point) ? point.start : point;\n            if (index === 0) {\n                _this.ctx.moveTo(start.x, start.y);\n            }\n            else {\n                _this.ctx.lineTo(start.x, start.y);\n            }\n            if (isBezierCurve(point)) {\n                _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n            }\n        });\n    };\n    CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\n        this.path(path);\n        this.ctx.fillStyle = pattern;\n        this.ctx.translate(offsetX, offsetY);\n        this.ctx.fill();\n        this.ctx.translate(-offsetX, -offsetY);\n    };\n    CanvasRenderer.prototype.resizeImage = function (image, width, height) {\n        var _a;\n        if (image.width === width && image.height === height) {\n            return image;\n        }\n        var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;\n        var canvas = ownerDocument.createElement('canvas');\n        canvas.width = Math.max(1, width);\n        canvas.height = Math.max(1, height);\n        var ctx = canvas.getContext('2d');\n        ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n        return canvas;\n    };\n    CanvasRenderer.prototype.renderBackgroundImage = function (container) {\n        return __awaiter(this, void 0, void 0, function () {\n            var index, _loop_1, this_1, _i, _a, backgroundImage;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        index = container.styles.backgroundImage.length - 1;\n                        _loop_1 = function (backgroundImage) {\n                            var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;\n                            return __generator(this, function (_h) {\n                                switch (_h.label) {\n                                    case 0:\n                                        if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];\n                                        image = void 0;\n                                        url = backgroundImage.url;\n                                        _h.label = 1;\n                                    case 1:\n                                        _h.trys.push([1, 3, , 4]);\n                                        return [4 /*yield*/, this_1.context.cache.match(url)];\n                                    case 2:\n                                        image = _h.sent();\n                                        return [3 /*break*/, 4];\n                                    case 3:\n                                        _h.sent();\n                                        this_1.context.logger.error(\"Error loading background-image \" + url);\n                                        return [3 /*break*/, 4];\n                                    case 4:\n                                        if (image) {\n                                            _c = calculateBackgroundRendering(container, index, [\n                                                image.width,\n                                                image.height,\n                                                image.width / image.height\n                                            ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];\n                                            pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\n                                            this_1.renderRepeat(path, pattern, x, y);\n                                        }\n                                        return [3 /*break*/, 6];\n                                    case 5:\n                                        if (isLinearGradient(backgroundImage)) {\n                                            _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];\n                                            _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];\n                                            canvas = document.createElement('canvas');\n                                            canvas.width = width;\n                                            canvas.height = height;\n                                            ctx = canvas.getContext('2d');\n                                            gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\n                                            processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\n                                                return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n                                            });\n                                            ctx.fillStyle = gradient_1;\n                                            ctx.fillRect(0, 0, width, height);\n                                            if (width > 0 && height > 0) {\n                                                pattern = this_1.ctx.createPattern(canvas, 'repeat');\n                                                this_1.renderRepeat(path, pattern, x, y);\n                                            }\n                                        }\n                                        else if (isRadialGradient(backgroundImage)) {\n                                            _f = calculateBackgroundRendering(container, index, [\n                                                null,\n                                                null,\n                                                null\n                                            ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];\n                                            position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n                                            x = getAbsoluteValue(position[0], width);\n                                            y = getAbsoluteValue(position[position.length - 1], height);\n                                            _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];\n                                            if (rx > 0 && ry > 0) {\n                                                radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\n                                                processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\n                                                    return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n                                                });\n                                                this_1.path(path);\n                                                this_1.ctx.fillStyle = radialGradient_1;\n                                                if (rx !== ry) {\n                                                    midX = container.bounds.left + 0.5 * container.bounds.width;\n                                                    midY = container.bounds.top + 0.5 * container.bounds.height;\n                                                    f = ry / rx;\n                                                    invF = 1 / f;\n                                                    this_1.ctx.save();\n                                                    this_1.ctx.translate(midX, midY);\n                                                    this_1.ctx.transform(1, 0, 0, f, 0, 0);\n                                                    this_1.ctx.translate(-midX, -midY);\n                                                    this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\n                                                    this_1.ctx.restore();\n                                                }\n                                                else {\n                                                    this_1.ctx.fill();\n                                                }\n                                            }\n                                        }\n                                        _h.label = 6;\n                                    case 6:\n                                        index--;\n                                        return [2 /*return*/];\n                                }\n                            });\n                        };\n                        this_1 = this;\n                        _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3 /*break*/, 4];\n                        backgroundImage = _a[_i];\n                        return [5 /*yield**/, _loop_1(backgroundImage)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3 /*break*/, 1];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.path(parsePathForBorder(curvePoints, side));\n                this.ctx.fillStyle = asString(color);\n                this.ctx.fill();\n                return [2 /*return*/];\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {\n        return __awaiter(this, void 0, void 0, function () {\n            var outerPaths, innerPaths;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(width < 3)) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                    case 2:\n                        outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n                        this.path(outerPaths);\n                        this.ctx.fillStyle = asString(color);\n                        this.ctx.fill();\n                        innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n                        this.path(innerPaths);\n                        this.ctx.fill();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\n        return __awaiter(this, void 0, void 0, function () {\n            var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));\n                        styles = paint.container.styles;\n                        hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n                        borders = [\n                            { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n                            { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n                            { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n                            { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n                        ];\n                        backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\n                        if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\n                        this.ctx.save();\n                        this.path(backgroundPaintingArea);\n                        this.ctx.clip();\n                        if (!isTransparent(styles.backgroundColor)) {\n                            this.ctx.fillStyle = asString(styles.backgroundColor);\n                            this.ctx.fill();\n                        }\n                        return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\n                    case 1:\n                        _a.sent();\n                        this.ctx.restore();\n                        styles.boxShadow\n                            .slice(0)\n                            .reverse()\n                            .forEach(function (shadow) {\n                            _this.ctx.save();\n                            var borderBoxArea = calculateBorderBoxPath(paint.curves);\n                            var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n                            var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));\n                            if (shadow.inset) {\n                                _this.path(borderBoxArea);\n                                _this.ctx.clip();\n                                _this.mask(shadowPaintingArea);\n                            }\n                            else {\n                                _this.mask(borderBoxArea);\n                                _this.ctx.clip();\n                                _this.path(shadowPaintingArea);\n                            }\n                            _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n                            _this.ctx.shadowOffsetY = shadow.offsetY.number;\n                            _this.ctx.shadowColor = asString(shadow.color);\n                            _this.ctx.shadowBlur = shadow.blur.number;\n                            _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n                            _this.ctx.fill();\n                            _this.ctx.restore();\n                        });\n                        _a.label = 2;\n                    case 2:\n                        side = 0;\n                        _i = 0, borders_1 = borders;\n                        _a.label = 3;\n                    case 3:\n                        if (!(_i < borders_1.length)) return [3 /*break*/, 13];\n                        border = borders_1[_i];\n                        if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];\n                        if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];\n                        return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];\n                    case 4:\n                        _a.sent();\n                        return [3 /*break*/, 11];\n                    case 5:\n                        if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];\n                        return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];\n                    case 6:\n                        _a.sent();\n                        return [3 /*break*/, 11];\n                    case 7:\n                        if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];\n                        return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];\n                    case 8:\n                        _a.sent();\n                        return [3 /*break*/, 11];\n                    case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];\n                    case 10:\n                        _a.sent();\n                        _a.label = 11;\n                    case 11:\n                        side++;\n                        _a.label = 12;\n                    case 12:\n                        _i++;\n                        return [3 /*break*/, 3];\n                    case 13: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {\n        return __awaiter(this, void 0, void 0, function () {\n            var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;\n            return __generator(this, function (_a) {\n                this.ctx.save();\n                strokePaths = parsePathForBorderStroke(curvePoints, side);\n                boxPaths = parsePathForBorder(curvePoints, side);\n                if (style === 2 /* DASHED */) {\n                    this.path(boxPaths);\n                    this.ctx.clip();\n                }\n                if (isBezierCurve(boxPaths[0])) {\n                    startX = boxPaths[0].start.x;\n                    startY = boxPaths[0].start.y;\n                }\n                else {\n                    startX = boxPaths[0].x;\n                    startY = boxPaths[0].y;\n                }\n                if (isBezierCurve(boxPaths[1])) {\n                    endX = boxPaths[1].end.x;\n                    endY = boxPaths[1].end.y;\n                }\n                else {\n                    endX = boxPaths[1].x;\n                    endY = boxPaths[1].y;\n                }\n                if (side === 0 || side === 2) {\n                    length = Math.abs(startX - endX);\n                }\n                else {\n                    length = Math.abs(startY - endY);\n                }\n                this.ctx.beginPath();\n                if (style === 3 /* DOTTED */) {\n                    this.formatPath(strokePaths);\n                }\n                else {\n                    this.formatPath(boxPaths.slice(0, 2));\n                }\n                dashLength = width < 3 ? width * 3 : width * 2;\n                spaceLength = width < 3 ? width * 2 : width;\n                if (style === 3 /* DOTTED */) {\n                    dashLength = width;\n                    spaceLength = width;\n                }\n                useLineDash = true;\n                if (length <= dashLength * 2) {\n                    useLineDash = false;\n                }\n                else if (length <= dashLength * 2 + spaceLength) {\n                    multiplier = length / (2 * dashLength + spaceLength);\n                    dashLength *= multiplier;\n                    spaceLength *= multiplier;\n                }\n                else {\n                    numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n                    minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n                    maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n                    spaceLength =\n                        maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n                            ? minSpace\n                            : maxSpace;\n                }\n                if (useLineDash) {\n                    if (style === 3 /* DOTTED */) {\n                        this.ctx.setLineDash([0, dashLength + spaceLength]);\n                    }\n                    else {\n                        this.ctx.setLineDash([dashLength, spaceLength]);\n                    }\n                }\n                if (style === 3 /* DOTTED */) {\n                    this.ctx.lineCap = 'round';\n                    this.ctx.lineWidth = width;\n                }\n                else {\n                    this.ctx.lineWidth = width * 2 + 1.1;\n                }\n                this.ctx.strokeStyle = asString(color);\n                this.ctx.stroke();\n                this.ctx.setLineDash([]);\n                // dashed round edge gap\n                if (style === 2 /* DASHED */) {\n                    if (isBezierCurve(boxPaths[0])) {\n                        path1 = boxPaths[3];\n                        path2 = boxPaths[0];\n                        this.ctx.beginPath();\n                        this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                        this.ctx.stroke();\n                    }\n                    if (isBezierCurve(boxPaths[1])) {\n                        path1 = boxPaths[1];\n                        path2 = boxPaths[2];\n                        this.ctx.beginPath();\n                        this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                        this.ctx.stroke();\n                    }\n                }\n                this.ctx.restore();\n                return [2 /*return*/];\n            });\n        });\n    };\n    CanvasRenderer.prototype.render = function (element) {\n        return __awaiter(this, void 0, void 0, function () {\n            var stack;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (this.options.backgroundColor) {\n                            this.ctx.fillStyle = asString(this.options.backgroundColor);\n                            this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n                        }\n                        stack = parseStackingContexts(element);\n                        return [4 /*yield*/, this.renderStack(stack)];\n                    case 1:\n                        _a.sent();\n                        this.applyEffects([]);\n                        return [2 /*return*/, this.canvas];\n                }\n            });\n        });\n    };\n    return CanvasRenderer;\n}(Renderer));\nvar isTextInputElement = function (container) {\n    if (container instanceof TextareaElementContainer) {\n        return true;\n    }\n    else if (container instanceof SelectElementContainer) {\n        return true;\n    }\n    else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n        return true;\n    }\n    return false;\n};\nvar calculateBackgroundCurvedPaintingArea = function (clip, curves) {\n    switch (clip) {\n        case 0 /* BORDER_BOX */:\n            return calculateBorderBoxPath(curves);\n        case 2 /* CONTENT_BOX */:\n            return calculateContentBoxPath(curves);\n        case 1 /* PADDING_BOX */:\n        default:\n            return calculatePaddingBoxPath(curves);\n    }\n};\nvar canvasTextAlign = function (textAlign) {\n    switch (textAlign) {\n        case 1 /* CENTER */:\n            return 'center';\n        case 2 /* RIGHT */:\n            return 'right';\n        case 0 /* LEFT */:\n        default:\n            return 'left';\n    }\n};\n// see https://github.com/niklasvh/html2canvas/pull/2645\nvar iOSBrokenFonts = ['-apple-system', 'system-ui'];\nvar fixIOSSystemFonts = function (fontFamilies) {\n    return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n        ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })\n        : fontFamilies;\n};\n\nvar ForeignObjectRenderer = /** @class */ (function (_super) {\n    __extends(ForeignObjectRenderer, _super);\n    function ForeignObjectRenderer(context, options) {\n        var _this = _super.call(this, context, options) || this;\n        _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        _this.ctx = _this.canvas.getContext('2d');\n        _this.options = options;\n        _this.canvas.width = Math.floor(options.width * options.scale);\n        _this.canvas.height = Math.floor(options.height * options.scale);\n        _this.canvas.style.width = options.width + \"px\";\n        _this.canvas.style.height = options.height + \"px\";\n        _this.ctx.scale(_this.options.scale, _this.options.scale);\n        _this.ctx.translate(-options.x, -options.y);\n        _this.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n        return _this;\n    }\n    ForeignObjectRenderer.prototype.render = function (element) {\n        return __awaiter(this, void 0, void 0, function () {\n            var svg, img;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);\n                        return [4 /*yield*/, loadSerializedSVG(svg)];\n                    case 1:\n                        img = _a.sent();\n                        if (this.options.backgroundColor) {\n                            this.ctx.fillStyle = asString(this.options.backgroundColor);\n                            this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n                        }\n                        this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n                        return [2 /*return*/, this.canvas];\n                }\n            });\n        });\n    };\n    return ForeignObjectRenderer;\n}(Renderer));\nvar loadSerializedSVG = function (svg) {\n    return new Promise(function (resolve, reject) {\n        var img = new Image();\n        img.onload = function () {\n            resolve(img);\n        };\n        img.onerror = reject;\n        img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n    });\n};\n\nvar Logger = /** @class */ (function () {\n    function Logger(_a) {\n        var id = _a.id, enabled = _a.enabled;\n        this.id = id;\n        this.enabled = enabled;\n        this.start = Date.now();\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.debug = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n                // eslint-disable-next-line no-console\n                console.debug.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n            }\n            else {\n                this.info.apply(this, args);\n            }\n        }\n    };\n    Logger.prototype.getTime = function () {\n        return Date.now() - this.start;\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.info = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n                // eslint-disable-next-line no-console\n                console.info.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n            }\n        }\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.warn = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n                // eslint-disable-next-line no-console\n                console.warn.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n            }\n            else {\n                this.info.apply(this, args);\n            }\n        }\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.error = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n                // eslint-disable-next-line no-console\n                console.error.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n            }\n            else {\n                this.info.apply(this, args);\n            }\n        }\n    };\n    Logger.instances = {};\n    return Logger;\n}());\n\nvar Context = /** @class */ (function () {\n    function Context(options, windowBounds) {\n        var _a;\n        this.windowBounds = windowBounds;\n        this.instanceName = \"#\" + Context.instanceCount++;\n        this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n        this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);\n    }\n    Context.instanceCount = 1;\n    return Context;\n}());\n\nvar html2canvas = function (element, options) {\n    if (options === void 0) { options = {}; }\n    return renderElement(element, options);\n};\nif (typeof window !== 'undefined') {\n    CacheStorage.setContext(window);\n}\nvar renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {\n    var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;\n    var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n    return __generator(this, function (_u) {\n        switch (_u.label) {\n            case 0:\n                if (!element || typeof element !== 'object') {\n                    return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];\n                }\n                ownerDocument = element.ownerDocument;\n                if (!ownerDocument) {\n                    throw new Error(\"Element is not attached to a Document\");\n                }\n                defaultView = ownerDocument.defaultView;\n                if (!defaultView) {\n                    throw new Error(\"Document is not attached to a Window\");\n                }\n                resourceOptions = {\n                    allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,\n                    imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,\n                    proxy: opts.proxy,\n                    useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false\n                };\n                contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);\n                windowOptions = {\n                    windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,\n                    windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,\n                    scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,\n                    scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset\n                };\n                windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);\n                context = new Context(contextOptions, windowBounds);\n                foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;\n                cloneOptions = {\n                    allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,\n                    onclone: opts.onclone,\n                    ignoreElements: opts.ignoreElements,\n                    inlineImages: foreignObjectRendering,\n                    copyStyles: foreignObjectRendering\n                };\n                context.logger.debug(\"Starting document clone with size \" + windowBounds.width + \"x\" + windowBounds.height + \" scrolled to \" + -windowBounds.left + \",\" + -windowBounds.top);\n                documentCloner = new DocumentCloner(context, element, cloneOptions);\n                clonedElement = documentCloner.clonedReferenceElement;\n                if (!clonedElement) {\n                    return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\n                }\n                return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\n            case 1:\n                container = _u.sent();\n                _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n                    ? parseDocumentSize(clonedElement.ownerDocument)\n                    : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\n                backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n                renderOptions = {\n                    canvas: opts.canvas,\n                    backgroundColor: backgroundColor,\n                    scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,\n                    x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,\n                    y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,\n                    width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),\n                    height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)\n                };\n                if (!foreignObjectRendering) return [3 /*break*/, 3];\n                context.logger.debug(\"Document cloned, using foreign object rendering\");\n                renderer = new ForeignObjectRenderer(context, renderOptions);\n                return [4 /*yield*/, renderer.render(clonedElement)];\n            case 2:\n                canvas = _u.sent();\n                return [3 /*break*/, 5];\n            case 3:\n                context.logger.debug(\"Document cloned, element located at \" + left + \",\" + top + \" with size \" + width + \"x\" + height + \" using computed rendering\");\n                context.logger.debug(\"Starting DOM parsing\");\n                root = parseTree(context, clonedElement);\n                if (backgroundColor === root.styles.backgroundColor) {\n                    root.styles.backgroundColor = COLORS.TRANSPARENT;\n                }\n                context.logger.debug(\"Starting renderer for element at \" + renderOptions.x + \",\" + renderOptions.y + \" with size \" + renderOptions.width + \"x\" + renderOptions.height);\n                renderer = new CanvasRenderer(context, renderOptions);\n                return [4 /*yield*/, renderer.render(root)];\n            case 4:\n                canvas = _u.sent();\n                _u.label = 5;\n            case 5:\n                if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {\n                    if (!DocumentCloner.destroy(container)) {\n                        context.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\n                    }\n                }\n                context.logger.debug(\"Finished rendering\");\n                return [2 /*return*/, canvas];\n        }\n    });\n}); };\nvar parseBackgroundColor = function (context, element, backgroundColorOverride) {\n    var ownerDocument = element.ownerDocument;\n    // http://www.w3.org/TR/css3-background/#special-backgrounds\n    var documentBackgroundColor = ownerDocument.documentElement\n        ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)\n        : COLORS.TRANSPARENT;\n    var bodyBackgroundColor = ownerDocument.body\n        ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)\n        : COLORS.TRANSPARENT;\n    var defaultBackgroundColor = typeof backgroundColorOverride === 'string'\n        ? parseColor(context, backgroundColorOverride)\n        : backgroundColorOverride === null\n            ? COLORS.TRANSPARENT\n            : 0xffffffff;\n    return element === ownerDocument.documentElement\n        ? isTransparent(documentBackgroundColor)\n            ? isTransparent(bodyBackgroundColor)\n                ? defaultBackgroundColor\n                : bodyBackgroundColor\n            : documentBackgroundColor\n        : defaultBackgroundColor;\n};\n\nexport default html2canvas;\n//# sourceMappingURL=html2canvas.esm.js.map\n","/*! @license DOMPurify 2.5.8 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.8/LICENSE */\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n  return _construct.apply(null, arguments);\n}\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar hasOwnProperty = Object.hasOwnProperty,\n  setPrototypeOf = Object.setPrototypeOf,\n  isFrozen = Object.isFrozen,\n  getPrototypeOf = Object.getPrototypeOf,\n  getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n  seal = Object.seal,\n  create = Object.create; // eslint-disable-line import/no-mutable-exports\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n  apply = _ref.apply,\n  construct = _ref.construct;\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!construct) {\n  construct = function construct(Func, args) {\n    return _construct(Func, _toConsumableArray(args));\n  };\n}\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n  return function (thisArg) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return apply(func, thisArg, args);\n  };\n}\nfunction unconstruct(func) {\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return construct(func, args);\n  };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array, transformCaseFunc) {\n  var _transformCaseFunc;\n  transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  var l = array.length;\n  while (l--) {\n    var element = array[l];\n    if (typeof element === 'string') {\n      var lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n  var newObject = create(null);\n  var property;\n  for (property in object) {\n    if (apply(hasOwnProperty, object, [property]) === true) {\n      newObject[property] = object[property];\n    }\n  }\n  return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    var desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue(element) {\n    console.warn('fallback value for', element);\n    return null;\n  }\n  return fallbackValue;\n}\n\nvar html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nvar mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nvar text = freeze(['#text']);\n\nvar html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\nvar svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nvar mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nvar DOCTYPE_NAME = seal(/^html$/i);\nvar CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n  if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  var suffix = null;\n  var ATTR_NAME = 'data-tt-policy-suffix';\n  if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n    suffix = document.currentScript.getAttribute(ATTR_NAME);\n  }\n  var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML: function createHTML(html) {\n        return html;\n      },\n      createScriptURL: function createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nfunction createDOMPurify() {\n  var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  var DOMPurify = function DOMPurify(root) {\n    return createDOMPurify(root);\n  };\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  DOMPurify.version = '2.5.8';\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== 9) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  var originalDocument = window.document;\n  var document = window.document;\n  var DocumentFragment = window.DocumentFragment,\n    HTMLTemplateElement = window.HTMLTemplateElement,\n    Node = window.Node,\n    Element = window.Element,\n    NodeFilter = window.NodeFilter,\n    _window$NamedNodeMap = window.NamedNodeMap,\n    NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n    HTMLFormElement = window.HTMLFormElement,\n    DOMParser = window.DOMParser,\n    trustedTypes = window.trustedTypes;\n  var ElementPrototype = Element.prototype;\n  var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    var template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n  var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n  var _document = document,\n    implementation = _document.implementation,\n    createNodeIterator = _document.createNodeIterator,\n    createDocumentFragment = _document.createDocumentFragment,\n    getElementsByTagName = _document.getElementsByTagName;\n  var importNode = originalDocument.importNode;\n  var documentMode = {};\n  try {\n    documentMode = clone(document).documentMode ? document.documentMode : {};\n  } catch (_) {}\n  var hooks = {};\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined && documentMode !== 9;\n  var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n    ERB_EXPR$1 = ERB_EXPR,\n    TMPLIT_EXPR$1 = TMPLIT_EXPR,\n    DATA_ATTR$1 = DATA_ATTR,\n    ARIA_ATTR$1 = ARIA_ATTR,\n    IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE$1 = ATTR_WHITESPACE,\n    CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n  var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  var ALLOWED_TAGS = null;\n  var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n\n  /* Allowed attribute names */\n  var ALLOWED_ATTR = null;\n  var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n\n  /*\n   * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  var FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  var FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  var ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  var ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  var ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  var SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  var SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  var WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  var SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  var FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  var RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  var RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  var RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  var SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  var SANITIZE_NAMED_PROPS = false;\n  var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  var KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  var IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  var USE_PROFILES = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  var FORBID_CONTENTS = null;\n  var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n  /* Tags that are safe for data: URIs */\n  var DATA_URI_TAGS = null;\n  var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n  /* Attributes safe for values like \"javascript:\" */\n  var URI_SAFE_ATTRIBUTES = null;\n  var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  var NAMESPACE = HTML_NAMESPACE;\n  var IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  var ALLOWED_NAMESPACES = null;\n  var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n\n  /* Parsing of strict XHTML documents */\n  var PARSER_MEDIA_TYPE;\n  var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  var transformCaseFunc;\n\n  /* Keep a reference to config to pass to hooks */\n  var CONFIG = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  var formElement = document.createElement('form');\n  var isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  var _parseConfig = function _parseConfig(cfg) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || _typeof(cfg) !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n    // eslint-disable-line indent\n    cfg.ADD_URI_SAFE_ATTR,\n    // eslint-disable-line indent\n    transformCaseFunc // eslint-disable-line indent\n    ) // eslint-disable-line indent\n    : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS),\n    // eslint-disable-line indent\n    cfg.ADD_DATA_URI_TAGS,\n    // eslint-disable-line indent\n    transformCaseFunc // eslint-disable-line indent\n    ) // eslint-disable-line indent\n    : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  var HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  var ALL_SVG_TAGS = addToSet({}, svg$1);\n  addToSet(ALL_SVG_TAGS, svgFilters);\n  addToSet(ALL_SVG_TAGS, svgDisallowed);\n  var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n  addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n  /**\n   *\n   *\n   * @param  {Element} element a DOM element whose namespace is being checked\n   * @returns {boolean} Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  var _checkValidNamespace = function _checkValidNamespace(element) {\n    var parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    var tagName = stringToLowerCase(element.tagName);\n    var parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n  var _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      node.parentNode.removeChild(node);\n    } catch (_) {\n      try {\n        node.outerHTML = emptyHTML;\n      } catch (_) {\n        node.remove();\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n  var _removeAttribute = function _removeAttribute(name, node) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: node.getAttributeNode(name),\n        from: node\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: node\n      });\n    }\n    node.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\"\" attributes\n    if (name === 'is' && !ALLOWED_ATTR[name]) {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(node);\n        } catch (_) {}\n      } else {\n        try {\n          node.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n  var _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    var doc;\n    var leadingWhitespace;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    var body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * _createIterator\n   *\n   * @param  {Document} root document/fragment to create iterator for\n   * @return {Iterator} iterator instance\n   */\n  var _createIterator = function _createIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null, false);\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n  var _isClobbered = function _isClobbered(elm) {\n    return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n  };\n\n  /**\n   * _isNode\n   *\n   * @param  {Node} obj object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n  var _isNode = function _isNode(object) {\n    return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n  };\n\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n  var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n    arrayForEach(hooks[entryPoint], function (hook) {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n  var _sanitizeElements = function _sanitizeElements(currentNode) {\n    var content;\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeElements', currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check if tagname contains Unicode */\n    if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    var tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName: tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Mitigate a problem with templates inside select */\n    if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any ocurrence of processing instructions */\n    if (currentNode.nodeType === 7) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === 8 && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n      }\n\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          var childCount = childNodes.length;\n          for (var i = childCount - 1; i >= 0; --i) {\n            var childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n      content = stringReplace(content, ERB_EXPR$1, ' ');\n      content = stringReplace(content, TMPLIT_EXPR$1, ' ');\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeElements', currentNode, null);\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n\n  /**\n   * _basicCustomElementCheck\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   * @param {string} tagName name of the tag of the node to sanitize\n   */\n  var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT$1);\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n  var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    var attr;\n    var value;\n    var lcName;\n    var l;\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n    var attributes = currentNode.attributes;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    var hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR\n    };\n    l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      attr = attributes[l];\n      var _attr = attr,\n        name = _attr.name,\n        namespaceURI = _attr.namespaceURI;\n      value = name === 'value' ? attr.value : stringTrim(attr.value);\n      lcName = transformCaseFunc(name);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n        value = stringReplace(value, ERB_EXPR$1, ' ');\n        value = stringReplace(value, TMPLIT_EXPR$1, ' ');\n      }\n\n      /* Is `value` valid for this attribute? */\n      var lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n  var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    var shadowNode;\n    var shadowIterator = _createIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} configuration object\n   */\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var body;\n    var importedNode;\n    var currentNode;\n    var oldNode;\n    var returnNode;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n\n    /* Check we can run. Otherwise fall back or ignore */\n    if (!DOMPurify.isSupported) {\n      if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n        if (typeof dirty === 'string') {\n          return window.toStaticHTML(dirty);\n        }\n        if (_isNode(dirty)) {\n          return window.toStaticHTML(dirty.outerHTML);\n        }\n      }\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        var tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Fix IE's strange behavior with manipulated textNodes #89 */\n      if (currentNode.nodeType === 3 && currentNode === oldNode) {\n        continue;\n      }\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n      oldNode = currentNode;\n    }\n    oldNode = null;\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n      serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n      serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, ' ');\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n  DOMPurify.setConfig = function (cfg) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {string} tag Tag name of containing element.\n   * @param  {string} attr Attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    var lcTag = transformCaseFunc(tag);\n    var lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   * @return {Function} removed(popped) hook\n   */\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      return arrayPop(hooks[entryPoint]);\n    }\n  };\n\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   *\n   */\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.js.map\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.40.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    requireObjectCoercible(O);\n    aPossiblePrototype(proto);\n    if (!isObject(O)) return O;\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, [], argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n  if (!DESCRIPTORS) return globalThis[name];\n  var descriptor = getOwnPropertyDescriptor(globalThis, name);\n  return descriptor && descriptor.value;\n};\n","'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, globalThis);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n","'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    globalThis.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: null\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n// `Promise` constructor\n// https://tc39.es/ecma262/#sec-promise-executor\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    var capabilityReject = capability.reject;\n    capabilityReject(r);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nexport { _asyncToGenerator as default };","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n  activeXDocument = null;\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegExp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n        }\n        return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      var fullUnicode;\n      if (global) {\n        fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return stringSlice(that, index, index + search.length) === search;\n  }\n});\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = null;\n    return createIterResultObject(undefined, true);\n  }\n  switch (state.kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    aCallable(callbackfn);\n    if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError(REDUCE_EMPTY);\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return slice(that, end - search.length, end) === search;\n  }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  'test'.split(/(?:)/, -1).length !== 4 ||\n  'ab'.split(/(?:ab)*/).length !== 2 ||\n  '.'.split(/(.?)(.?)/).length !== 4 ||\n  // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n  '.'.split(/()()/).length > 1 ||\n  ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n    return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n  } : nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (!BUGGY) {\n        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n        if (res.done) return res.value;\n      }\n\n      var C = speciesConstructor(rx, RegExp);\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n    this.ok = false;\n    this.alpha = 1.0;\n\n    // strip any leading #\n    if (color_string.charAt(0) == '#') { // remove # if any\n        color_string = color_string.substr(1,6);\n    }\n\n    color_string = color_string.replace(/ /g,'');\n    color_string = color_string.toLowerCase();\n\n    // before getting into regexps, try simple matches\n    // and overwrite the input\n    var simple_colors = {\n        aliceblue: 'f0f8ff',\n        antiquewhite: 'faebd7',\n        aqua: '00ffff',\n        aquamarine: '7fffd4',\n        azure: 'f0ffff',\n        beige: 'f5f5dc',\n        bisque: 'ffe4c4',\n        black: '000000',\n        blanchedalmond: 'ffebcd',\n        blue: '0000ff',\n        blueviolet: '8a2be2',\n        brown: 'a52a2a',\n        burlywood: 'deb887',\n        cadetblue: '5f9ea0',\n        chartreuse: '7fff00',\n        chocolate: 'd2691e',\n        coral: 'ff7f50',\n        cornflowerblue: '6495ed',\n        cornsilk: 'fff8dc',\n        crimson: 'dc143c',\n        cyan: '00ffff',\n        darkblue: '00008b',\n        darkcyan: '008b8b',\n        darkgoldenrod: 'b8860b',\n        darkgray: 'a9a9a9',\n        darkgreen: '006400',\n        darkkhaki: 'bdb76b',\n        darkmagenta: '8b008b',\n        darkolivegreen: '556b2f',\n        darkorange: 'ff8c00',\n        darkorchid: '9932cc',\n        darkred: '8b0000',\n        darksalmon: 'e9967a',\n        darkseagreen: '8fbc8f',\n        darkslateblue: '483d8b',\n        darkslategray: '2f4f4f',\n        darkturquoise: '00ced1',\n        darkviolet: '9400d3',\n        deeppink: 'ff1493',\n        deepskyblue: '00bfff',\n        dimgray: '696969',\n        dodgerblue: '1e90ff',\n        feldspar: 'd19275',\n        firebrick: 'b22222',\n        floralwhite: 'fffaf0',\n        forestgreen: '228b22',\n        fuchsia: 'ff00ff',\n        gainsboro: 'dcdcdc',\n        ghostwhite: 'f8f8ff',\n        gold: 'ffd700',\n        goldenrod: 'daa520',\n        gray: '808080',\n        green: '008000',\n        greenyellow: 'adff2f',\n        honeydew: 'f0fff0',\n        hotpink: 'ff69b4',\n        indianred : 'cd5c5c',\n        indigo : '4b0082',\n        ivory: 'fffff0',\n        khaki: 'f0e68c',\n        lavender: 'e6e6fa',\n        lavenderblush: 'fff0f5',\n        lawngreen: '7cfc00',\n        lemonchiffon: 'fffacd',\n        lightblue: 'add8e6',\n        lightcoral: 'f08080',\n        lightcyan: 'e0ffff',\n        lightgoldenrodyellow: 'fafad2',\n        lightgrey: 'd3d3d3',\n        lightgreen: '90ee90',\n        lightpink: 'ffb6c1',\n        lightsalmon: 'ffa07a',\n        lightseagreen: '20b2aa',\n        lightskyblue: '87cefa',\n        lightslateblue: '8470ff',\n        lightslategray: '778899',\n        lightsteelblue: 'b0c4de',\n        lightyellow: 'ffffe0',\n        lime: '00ff00',\n        limegreen: '32cd32',\n        linen: 'faf0e6',\n        magenta: 'ff00ff',\n        maroon: '800000',\n        mediumaquamarine: '66cdaa',\n        mediumblue: '0000cd',\n        mediumorchid: 'ba55d3',\n        mediumpurple: '9370d8',\n        mediumseagreen: '3cb371',\n        mediumslateblue: '7b68ee',\n        mediumspringgreen: '00fa9a',\n        mediumturquoise: '48d1cc',\n        mediumvioletred: 'c71585',\n        midnightblue: '191970',\n        mintcream: 'f5fffa',\n        mistyrose: 'ffe4e1',\n        moccasin: 'ffe4b5',\n        navajowhite: 'ffdead',\n        navy: '000080',\n        oldlace: 'fdf5e6',\n        olive: '808000',\n        olivedrab: '6b8e23',\n        orange: 'ffa500',\n        orangered: 'ff4500',\n        orchid: 'da70d6',\n        palegoldenrod: 'eee8aa',\n        palegreen: '98fb98',\n        paleturquoise: 'afeeee',\n        palevioletred: 'd87093',\n        papayawhip: 'ffefd5',\n        peachpuff: 'ffdab9',\n        peru: 'cd853f',\n        pink: 'ffc0cb',\n        plum: 'dda0dd',\n        powderblue: 'b0e0e6',\n        purple: '800080',\n        rebeccapurple: '663399',\n        red: 'ff0000',\n        rosybrown: 'bc8f8f',\n        royalblue: '4169e1',\n        saddlebrown: '8b4513',\n        salmon: 'fa8072',\n        sandybrown: 'f4a460',\n        seagreen: '2e8b57',\n        seashell: 'fff5ee',\n        sienna: 'a0522d',\n        silver: 'c0c0c0',\n        skyblue: '87ceeb',\n        slateblue: '6a5acd',\n        slategray: '708090',\n        snow: 'fffafa',\n        springgreen: '00ff7f',\n        steelblue: '4682b4',\n        tan: 'd2b48c',\n        teal: '008080',\n        thistle: 'd8bfd8',\n        tomato: 'ff6347',\n        turquoise: '40e0d0',\n        violet: 'ee82ee',\n        violetred: 'd02090',\n        wheat: 'f5deb3',\n        white: 'ffffff',\n        whitesmoke: 'f5f5f5',\n        yellow: 'ffff00',\n        yellowgreen: '9acd32'\n    };\n    color_string = simple_colors[color_string] || color_string;\n    // emd of simple type-in colors\n\n    // array of color definition objects\n    var color_defs = [\n        {\n            re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n            example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3]),\n                    parseFloat(bits[4])\n                ];\n            }\n        },\n        {\n            re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3])\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n            example: ['#00ff00', '336699'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1], 16),\n                    parseInt(bits[2], 16),\n                    parseInt(bits[3], 16)\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n            example: ['#fb0', 'f0f'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1] + bits[1], 16),\n                    parseInt(bits[2] + bits[2], 16),\n                    parseInt(bits[3] + bits[3], 16)\n                ];\n            }\n        }\n    ];\n\n    // search through the definitions to find a match\n    for (var i = 0; i < color_defs.length; i++) {\n        var re = color_defs[i].re;\n        var processor = color_defs[i].process;\n        var bits = re.exec(color_string);\n        if (bits) {\n            var channels = processor(bits);\n            this.r = channels[0];\n            this.g = channels[1];\n            this.b = channels[2];\n            if (channels.length > 3) {\n                this.alpha = channels[3];\n            }\n            this.ok = true;\n        }\n\n    }\n\n    // validate/cleanup values\n    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n    this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n    // some getters\n    this.toRGB = function () {\n        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n    }\n    this.toRGBA = function () {\n        return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n    }\n    this.toHex = function () {\n        var r = this.r.toString(16);\n        var g = this.g.toString(16);\n        var b = this.b.toString(16);\n        if (r.length == 1) r = '0' + r;\n        if (g.length == 1) g = '0' + g;\n        if (b.length == 1) b = '0' + b;\n        return '#' + r + g + b;\n    }\n\n    // help\n    this.getHelpXML = function () {\n\n        var examples = new Array();\n        // add regexps\n        for (var i = 0; i < color_defs.length; i++) {\n            var example = color_defs[i].example;\n            for (var j = 0; j < example.length; j++) {\n                examples[examples.length] = example[j];\n            }\n        }\n        // add type-in colors\n        for (var sc in simple_colors) {\n            examples[examples.length] = sc;\n        }\n\n        var xml = document.createElement('ul');\n        xml.setAttribute('id', 'rgbcolor-examples');\n        for (var i = 0; i < examples.length; i++) {\n            try {\n                var list_item = document.createElement('li');\n                var list_color = new RGBColor(examples[i]);\n                var example_div = document.createElement('div');\n                example_div.style.cssText =\n                        'margin: 3px; '\n                        + 'border: 1px solid black; '\n                        + 'background:' + list_color.toHex() + '; '\n                        + 'color:' + list_color.toHex()\n                ;\n                example_div.appendChild(document.createTextNode('test'));\n                var list_item_value = document.createTextNode(\n                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n                );\n                list_item.appendChild(example_div);\n                list_item.appendChild(list_item_value);\n                xml.appendChild(list_item);\n\n            } catch(e){}\n        }\n        return xml;\n\n    }\n\n}\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===_.CLOSE_PATH)r+=\"z\";else if(i.type===_.HORIZ_LINE_TO)r+=(i.relative?\"h\":\"H\")+i.x;else if(i.type===_.VERT_LINE_TO)r+=(i.relative?\"v\":\"V\")+i.y;else if(i.type===_.MOVE_TO)r+=(i.relative?\"m\":\"M\")+i.x+\" \"+i.y;else if(i.type===_.LINE_TO)r+=(i.relative?\"l\":\"L\")+i.x+\" \"+i.y;else if(i.type===_.CURVE_TO)r+=(i.relative?\"c\":\"C\")+i.x1+\" \"+i.y1+\" \"+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_CURVE_TO)r+=(i.relative?\"s\":\"S\")+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.QUAD_TO)r+=(i.relative?\"q\":\"Q\")+i.x1+\" \"+i.y1+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_QUAD_TO)r+=(i.relative?\"t\":\"T\")+i.x+\" \"+i.y;else{if(i.type!==_.ARC)throw new Error('Unexpected command type \"'+i.type+'\" at index '+e+\".\");r+=(i.relative?\"a\":\"A\")+i.rX+\" \"+i.rY+\" \"+i.xRot+\" \"+ +i.lArcFlag+\" \"+ +i.sweepFlag+\" \"+i.x+\" \"+i.y}}return r}function i(t,r){var e=t[0],i=t[1];return[e*Math.cos(r)-i*Math.sin(r),e*Math.sin(r)+i*Math.cos(r)]}function a(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if(\"number\"!=typeof t[e])throw new Error(\"assertNumbers arguments[\"+e+\"] is not a number. \"+typeof t[e]+\" == typeof \"+t[e]);return!0}var n=Math.PI;function o(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,o=t.rY,s=t.x,u=t.y;a=Math.abs(t.rX),o=Math.abs(t.rY);var h=i([(r-s)/2,(e-u)/2],-t.xRot/180*n),c=h[0],y=h[1],p=Math.pow(c,2)/Math.pow(a,2)+Math.pow(y,2)/Math.pow(o,2);1<p&&(a*=Math.sqrt(p),o*=Math.sqrt(p)),t.rX=a,t.rY=o;var m=Math.pow(a,2)*Math.pow(y,2)+Math.pow(o,2)*Math.pow(c,2),O=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(o,2)-m)/m)),l=a*y/o*O,T=-o*c/a*O,v=i([l,T],t.xRot/180*n);t.cX=v[0]+(r+s)/2,t.cY=v[1]+(e+u)/2,t.phi1=Math.atan2((y-T)/o,(c-l)/a),t.phi2=Math.atan2((-y-T)/o,(-c-l)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*n),t.phi1*=180/n,t.phi2*=180/n}function s(t,r,e){a(t,r,e);var i=t*t+r*r-e*e;if(0>i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<a?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var i=t*t/4-r;if(i<-e)return[];if(i<=e)return[-t/2];var a=Math.sqrt(i);return[-t/2-a,-t/2+a]}(u/s,h/s,a)}function m(t,r,e,i,a){var n=1-a;return t*(n*n*n)+r*(3*n*n*a)+e*(3*n*a*a)+i*(a*a*a)}!function(t){function r(){return u((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,i=NaN;return u((function(a,n,o){return a.type&_.SMOOTH_CURVE_TO&&(a.type=_.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,a.x1=a.relative?n-t:2*n-t,a.y1=a.relative?o-r:2*o-r),a.type&_.CURVE_TO?(t=a.relative?n+a.x2:a.x2,r=a.relative?o+a.y2:a.y2):(t=NaN,r=NaN),a.type&_.SMOOTH_QUAD_TO&&(a.type=_.QUAD_TO,e=isNaN(e)?n:e,i=isNaN(i)?o:i,a.x1=a.relative?n-e:2*n-e,a.y1=a.relative?o-i:2*o-i),a.type&_.QUAD_TO?(e=a.relative?n+a.x1:a.x1,i=a.relative?o+a.y1:a.y1):(e=NaN,i=NaN),a}))}function n(){var t=NaN,r=NaN;return u((function(e,i,a){if(e.type&_.SMOOTH_QUAD_TO&&(e.type=_.QUAD_TO,t=isNaN(t)?i:t,r=isNaN(r)?a:r,e.x1=e.relative?i-t:2*i-t,e.y1=e.relative?a-r:2*a-r),e.type&_.QUAD_TO){t=e.relative?i+e.x1:e.x1,r=e.relative?a+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=_.CURVE_TO,e.x1=((e.relative?0:i)+2*n)/3,e.y1=((e.relative?0:a)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function u(t){var r=0,e=0,i=NaN,a=NaN;return function(n){if(isNaN(i)&&!(n.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");var o=t(n,r,e,i,a);return n.type&_.CLOSE_PATH&&(r=i,e=a),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&_.MOVE_TO&&(i=r,a=e),o}}function O(t,r,e,i,n,o){return a(t,r,e,i,n,o),u((function(a,s,u,h){var c=a.x1,y=a.x2,p=a.relative&&!isNaN(h),m=void 0!==a.x?a.x:p?0:s,O=void 0!==a.y?a.y:p?0:u;function l(t){return t*t}a.type&_.HORIZ_LINE_TO&&0!==r&&(a.type=_.LINE_TO,a.y=a.relative?0:u),a.type&_.VERT_LINE_TO&&0!==e&&(a.type=_.LINE_TO,a.x=a.relative?0:s),void 0!==a.x&&(a.x=a.x*t+O*e+(p?0:n)),void 0!==a.y&&(a.y=m*r+a.y*i+(p?0:o)),void 0!==a.x1&&(a.x1=a.x1*t+a.y1*e+(p?0:n)),void 0!==a.y1&&(a.y1=c*r+a.y1*i+(p?0:o)),void 0!==a.x2&&(a.x2=a.x2*t+a.y2*e+(p?0:n)),void 0!==a.y2&&(a.y2=y*r+a.y2*i+(p?0:o));var T=t*i-r*e;if(void 0!==a.xRot&&(1!==t||0!==r||0!==e||1!==i))if(0===T)delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag,a.type=_.LINE_TO;else{var v=a.xRot*Math.PI/180,f=Math.sin(v),N=Math.cos(v),x=1/l(a.rX),d=1/l(a.rY),E=l(N)*x+l(f)*d,A=2*f*N*(x-d),C=l(f)*x+l(N)*d,M=E*i*i-A*r*i+C*r*r,R=A*(t*i+r*e)-2*(E*e*i+C*t*r),g=E*e*e-A*t*e+C*t*t,I=(Math.atan2(R,M-g)+Math.PI)%Math.PI/2,S=Math.sin(I),L=Math.cos(I);a.rX=Math.abs(T)/Math.sqrt(M*l(L)+R*S*L+g*l(S)),a.rY=Math.abs(T)/Math.sqrt(M*l(S)-R*S*L+g*l(L)),a.xRot=180*I/Math.PI}return void 0!==a.sweepFlag&&0>T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;v<m;v++){var f=c(t.phi1,t.phi2,v/m),N=c(t.phi1,t.phi2,(v+1)/m),x=N-f,d=4/3*Math.tan(x*h/4),E=[Math.cos(f*h)-d*Math.sin(f*h),Math.sin(f*h)+d*Math.cos(f*h)],A=E[0],C=E[1],M=[Math.cos(N*h),Math.sin(N*h)],R=M[0],g=M[1],I=[R+d*Math.sin(N*h),g-d*Math.cos(N*h)],S=I[0],L=I[1];O[v]={relative:t.relative,type:_.CURVE_TO};var H=function(r,e){var a=i([r*t.rX,e*t.rY],t.xRot),n=a[0],o=a[1];return[t.cX+n,t.cY+o]};a=H(A,C),O[v].x1=a[0],O[v].y1=a[1],n=H(S,L),O[v].x2=n[0],O[v].y2=n[1],s=H(R,g),O[v].x=s[0],O[v].y=s[1],t.relative&&(O[v].x1-=l,O[v].y1-=T,O[v].x2-=l,O[v].y2-=T,O[v].x-=l,O[v].y-=T),l=(u=[O[v].x,O[v].y])[0],T=u[1]}return O}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return u((function(t,r,e){return t.relative&&(r=0,e=0),_.ARC===t.type&&o(t,r,e),t}))},t.CLONE=l,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},i=r(),a=n(),h=e(),c=u((function(r,e,n){var u=h(a(i(t(r))));function O(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function l(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(u.type&_.DRAWING_COMMANDS&&(O(e),l(n)),u.type&_.HORIZ_LINE_TO&&O(u.x),u.type&_.VERT_LINE_TO&&l(u.y),u.type&_.LINE_TO&&(O(u.x),l(u.y)),u.type&_.CURVE_TO){O(u.x),l(u.y);for(var T=0,v=p(e,u.x1,u.x2,u.x);T<v.length;T++){0<(w=v[T])&&1>w&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);f<N.length;f++){0<(w=N[f])&&1>w&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1<u.phi2?[u.phi1,u.phi2]:-180>u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return i<R?i+360:i},S=0,L=s(A,-d,0).map(I);S<L.length;S++){(w=L[S])>R&&w<g&&O(y(u.cX,d,A,w))}for(var H=0,U=s(C,-E,0).map(I);H<U.length;H++){var w;(w=U[H])>R&&w<g&&l(y(u.cY,E,C,w))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(u||(u={}));var O,l=function(){function t(){}return t.prototype.round=function(t){return this.transform(u.ROUND(t))},t.prototype.toAbs=function(){return this.transform(u.TO_ABS())},t.prototype.toRel=function(){return this.transform(u.TO_REL())},t.prototype.normalizeHVZ=function(t,r,e){return this.transform(u.NORMALIZE_HVZ(t,r,e))},t.prototype.normalizeST=function(){return this.transform(u.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(u.QT_TO_C())},t.prototype.aToC=function(){return this.transform(u.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(u.SANITIZE(t))},t.prototype.translate=function(t,r){return this.transform(u.TRANSLATE(t,r))},t.prototype.scale=function(t,r){return this.transform(u.SCALE(t,r))},t.prototype.rotate=function(t,r,e){return this.transform(u.ROTATE(t,r,e))},t.prototype.matrix=function(t,r,e,i,a,n){return this.transform(u.MATRIX(t,r,e,i,a,n))},t.prototype.skewX=function(t){return this.transform(u.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(u.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(u.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(u.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(u.ANNOTATE_ARCS())},t}(),T=function(t){return\" \"===t||\"\\t\"===t||\"\\r\"===t||\"\\n\"===t},v=function(t){return\"0\".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<=\"9\".charCodeAt(0)},f=function(t){function e(){var r=t.call(this)||this;return r.curNumber=\"\",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return r(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(\" \",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError(\"Unterminated command at the path end.\");return t},e.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var i=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},a=0;a<t.length;a++){var n=t[a],o=!(this.curCommandType!==_.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||\"0\"!==this.curNumber&&\"1\"!==this.curNumber),s=v(n)&&(\"0\"===this.curNumber&&\"0\"===n||o);if(!v(n)||s)if(\"e\"!==n&&\"E\"!==n)if(\"-\"!==n&&\"+\"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if(\".\"!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError(\"Invalid number ending at \"+a);if(this.curCommandType===_.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i<a.length;i++){var n=a[i],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},e}(l),_=function(t){function i(r){var e=t.call(this)||this;return e.commands=\"string\"==typeof r?i.parse(r):r,e}return r(i,t),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var t=u.CALCULATE_BOUNDS();return this.transform(t),t},i.prototype.transform=function(t){for(var r=[],e=0,i=this.commands;e<i.length;e++){var a=t(i[e]);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return this.commands=r,this},i.encode=function(t){return e(t)},i.parse=function(t){var r=new f,e=[];return r.parse(t,e),r.finish(e),e},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(l),N=((O={})[_.MOVE_TO]=2,O[_.LINE_TO]=2,O[_.HORIZ_LINE_TO]=1,O[_.VERT_LINE_TO]=1,O[_.CLOSE_PATH]=0,O[_.QUAD_TO]=4,O[_.SMOOTH_QUAD_TO]=2,O[_.CURVE_TO]=6,O[_.SMOOTH_CURVE_TO]=4,O[_.ARC]=7,O);export{N as COMMAND_ARG_COUNTS,_ as SVGPathData,f as SVGPathDataParser,u as SVGPathDataTransformer,e as encodeSVGPath};\n//# sourceMappingURL=SVGPathData.module.js.map\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n  backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n  if (typeof img === 'string') {\n    img = document.getElementById(img);\n  }\n\n  if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('naturalWidth' in img)) {\n    return;\n  }\n\n  var dimensionType = useOffset ? 'offset' : 'natural';\n  var w = img[dimensionType + 'Width'];\n  var h = img[dimensionType + 'Height']; // add ImageBitmap support,can blur texture source\n\n  if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n    w = img.width;\n    h = img.height;\n  }\n\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || !('getContext' in canvas)) {\n    return;\n  }\n\n  if (!skipStyles) {\n    canvas.style.width = w + 'px';\n    canvas.style.height = h + 'px';\n  }\n\n  canvas.width = w;\n  canvas.height = h;\n  var context = canvas.getContext('2d');\n  context.clearRect(0, 0, w, h);\n  context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  if (blurAlphaChannel) {\n    processCanvasRGBA(canvas, 0, 0, w, h, radius);\n  } else {\n    processCanvasRGB(canvas, 0, 0, w, h, radius);\n  }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n    throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n  }\n\n  var context = canvas.getContext('2d');\n\n  try {\n    return context.getImageData(topX, topY, width, height);\n  } catch (e) {\n    throw new Error('unable to access image data: ' + e);\n  }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null,\n      stackOut = null,\n      yw = 0,\n      yi = 0;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n\n  for (var y = 0; y < height; y++) {\n    stack = stackStart;\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        pa = pixels[yi + 3];\n\n    for (var _i = 0; _i < radiusPlus1; _i++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack.a = pa;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0,\n        aInSum = 0,\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        aOutSum = radiusPlus1 * pa,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb,\n        aSum = sumFactor * pa;\n\n    for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n      var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n      var r = pixels[p],\n          g = pixels[p + 1],\n          b = pixels[p + 2],\n          a = pixels[p + 3];\n      var rbs = radiusPlus1 - _i2;\n      rSum += (stack.r = r) * rbs;\n      gSum += (stack.g = g) * rbs;\n      bSum += (stack.b = b) * rbs;\n      aSum += (stack.a = a) * rbs;\n      rInSum += r;\n      gInSum += g;\n      bInSum += b;\n      aInSum += a;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      var paInitial = aSum * mulSum >>> shgSum;\n      pixels[yi + 3] = paInitial;\n\n      if (paInitial !== 0) {\n        var _a2 = 255 / paInitial;\n\n        pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n        pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n        pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n      } else {\n        pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n      }\n\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      aSum -= aOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      aOutSum -= stackIn.a;\n\n      var _p = x + radius + 1;\n\n      _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[_p];\n      gInSum += stackIn.g = pixels[_p + 1];\n      bInSum += stackIn.b = pixels[_p + 2];\n      aInSum += stackIn.a = pixels[_p + 3];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      aSum += aInSum;\n      stackIn = stackIn.next;\n      var _stackOut = stackOut,\n          _r = _stackOut.r,\n          _g = _stackOut.g,\n          _b = _stackOut.b,\n          _a = _stackOut.a;\n      rOutSum += _r;\n      gOutSum += _g;\n      bOutSum += _b;\n      aOutSum += _a;\n      rInSum -= _r;\n      gInSum -= _g;\n      bInSum -= _b;\n      aInSum -= _a;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x = 0; _x < width; _x++) {\n    yi = _x << 2;\n\n    var _pr = pixels[yi],\n        _pg = pixels[yi + 1],\n        _pb = pixels[yi + 2],\n        _pa = pixels[yi + 3],\n        _rOutSum = radiusPlus1 * _pr,\n        _gOutSum = radiusPlus1 * _pg,\n        _bOutSum = radiusPlus1 * _pb,\n        _aOutSum = radiusPlus1 * _pa,\n        _rSum = sumFactor * _pr,\n        _gSum = sumFactor * _pg,\n        _bSum = sumFactor * _pb,\n        _aSum = sumFactor * _pa;\n\n    stack = stackStart;\n\n    for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n      stack.r = _pr;\n      stack.g = _pg;\n      stack.b = _pb;\n      stack.a = _pa;\n      stack = stack.next;\n    }\n\n    var yp = width;\n    var _gInSum = 0,\n        _bInSum = 0,\n        _aInSum = 0,\n        _rInSum = 0;\n\n    for (var _i4 = 1; _i4 <= radius; _i4++) {\n      yi = yp + _x << 2;\n\n      var _rbs = radiusPlus1 - _i4;\n\n      _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n      _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n      _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n      _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n      _rInSum += _pr;\n      _gInSum += _pg;\n      _bInSum += _pb;\n      _aInSum += _pa;\n      stack = stack.next;\n\n      if (_i4 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y = 0; _y < height; _y++) {\n      var _p2 = yi << 2;\n\n      pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n      if (_pa > 0) {\n        _pa = 255 / _pa;\n        pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n        pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n        pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n      } else {\n        pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n      }\n\n      _rSum -= _rOutSum;\n      _gSum -= _gOutSum;\n      _bSum -= _bOutSum;\n      _aSum -= _aOutSum;\n      _rOutSum -= stackIn.r;\n      _gOutSum -= stackIn.g;\n      _bOutSum -= stackIn.b;\n      _aOutSum -= stackIn.a;\n      _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n      _rSum += _rInSum += stackIn.r = pixels[_p2];\n      _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n      _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n      _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n      stackIn = stackIn.next;\n      _rOutSum += _pr = stackOut.r;\n      _gOutSum += _pg = stackOut.g;\n      _bOutSum += _pb = stackOut.b;\n      _aOutSum += _pa = stackOut.a;\n      _rInSum -= _pr;\n      _gInSum -= _pg;\n      _bInSum -= _pb;\n      _aInSum -= _pa;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null;\n  var stackOut = null;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n  var p, rbs;\n  var yw = 0,\n      yi = 0;\n\n  for (var y = 0; y < height; y++) {\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb;\n    stack = stackStart;\n\n    for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0;\n\n    for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n      p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n      rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n      gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n      bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n      rInSum += pr;\n      gInSum += pg;\n      bInSum += pb;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      pixels[yi] = rSum * mulSum >>> shgSum;\n      pixels[yi + 1] = gSum * mulSum >>> shgSum;\n      pixels[yi + 2] = bSum * mulSum >>> shgSum;\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[p];\n      gInSum += stackIn.g = pixels[p + 1];\n      bInSum += stackIn.b = pixels[p + 2];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      stackIn = stackIn.next;\n      rOutSum += pr = stackOut.r;\n      gOutSum += pg = stackOut.g;\n      bOutSum += pb = stackOut.b;\n      rInSum -= pr;\n      gInSum -= pg;\n      bInSum -= pb;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x2 = 0; _x2 < width; _x2++) {\n    yi = _x2 << 2;\n\n    var _pr2 = pixels[yi],\n        _pg2 = pixels[yi + 1],\n        _pb2 = pixels[yi + 2],\n        _rOutSum2 = radiusPlus1 * _pr2,\n        _gOutSum2 = radiusPlus1 * _pg2,\n        _bOutSum2 = radiusPlus1 * _pb2,\n        _rSum2 = sumFactor * _pr2,\n        _gSum2 = sumFactor * _pg2,\n        _bSum2 = sumFactor * _pb2;\n\n    stack = stackStart;\n\n    for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n      stack.r = _pr2;\n      stack.g = _pg2;\n      stack.b = _pb2;\n      stack = stack.next;\n    }\n\n    var _rInSum2 = 0,\n        _gInSum2 = 0,\n        _bInSum2 = 0;\n\n    for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n      yi = yp + _x2 << 2;\n      _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n      _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n      _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n      _rInSum2 += _pr2;\n      _gInSum2 += _pg2;\n      _bInSum2 += _pb2;\n      stack = stack.next;\n\n      if (_i8 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x2;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y2 = 0; _y2 < height; _y2++) {\n      p = yi << 2;\n      pixels[p] = _rSum2 * mulSum >>> shgSum;\n      pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n      pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n      _rSum2 -= _rOutSum2;\n      _gSum2 -= _gOutSum2;\n      _bSum2 -= _bOutSum2;\n      _rOutSum2 -= stackIn.r;\n      _gOutSum2 -= stackIn.g;\n      _bOutSum2 -= stackIn.b;\n      p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n      _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n      _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n      _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n      stackIn = stackIn.next;\n      _rOutSum2 += _pr2 = stackOut.r;\n      _gOutSum2 += _pg2 = stackOut.g;\n      _bOutSum2 += _pb2 = stackOut.b;\n      _rInSum2 -= _pr2;\n      _gInSum2 -= _pg2;\n      _bInSum2 -= _pb2;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n  _classCallCheck(this, BlurStack);\n\n  this.r = 0;\n  this.g = 0;\n  this.b = 0;\n  this.a = 0;\n  this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n  var {\n    DOMParser: DOMParserFallback\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var preset = {\n    window: null,\n    ignoreAnimation: true,\n    ignoreMouse: true,\n    DOMParser: DOMParserFallback,\n\n    createCanvas(width, height) {\n      return new OffscreenCanvas(width, height);\n    },\n\n    createImage(url) {\n      return _asyncToGenerator(function* () {\n        var response = yield fetch(url);\n        var blob = yield response.blob();\n        var img = yield createImageBitmap(blob);\n        return img;\n      })();\n    }\n\n  };\n\n  if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n    Reflect.deleteProperty(preset, 'DOMParser');\n  }\n\n  return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n  var {\n    DOMParser,\n    canvas,\n    fetch\n  } = _ref;\n  return {\n    window: null,\n    ignoreAnimation: true,\n    ignoreMouse: true,\n    DOMParser,\n    fetch,\n    createCanvas: canvas.createCanvas,\n    createImage: canvas.loadImage\n  };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n  return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n  return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n  return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n  var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n  return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n  if (allUppercase.test(name)) {\n    return name.toLowerCase();\n  }\n\n  return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n  //                      single quotes [2]\n  //                      v         double quotes [3]\n  //                      v         v         no quotes [4]\n  //                      v         v         v\n  var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n  return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n  if (!color.startsWith('rgb')) {\n    return color;\n  }\n\n  var rgbParts = 3;\n  var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n  return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n  var matches = regex.exec(selector);\n\n  if (!matches) {\n    return [selector, 0];\n  }\n\n  return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n  var specificity = [0, 0, 0];\n  var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, '     $1 ').replace(/{[\\s\\S]*/gm, ' ');\n  var delta = 0;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n  specificity[0] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n  specificity[2] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n  specificity[1] += delta;\n  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n  specificity[1] += delta;\n  currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n  [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n  specificity[2] += delta;\n  return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n  return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n  return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n  return t * t * t;\n}\nfunction CB2(t) {\n  return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n  return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n  return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n  return t * t;\n}\nfunction QB2(t) {\n  return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n  return (1 - t) * (1 - t);\n}\n\nclass Property {\n  constructor(document, name, value) {\n    this.document = document;\n    this.name = name;\n    this.value = value;\n    this.isNormalizedColor = false;\n  }\n\n  static empty(document) {\n    return new Property(document, 'EMPTY', '');\n  }\n\n  split() {\n    var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n    var {\n      document,\n      name\n    } = this;\n    return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n  }\n\n  hasValue(zeroIsValue) {\n    var {\n      value\n    } = this;\n    return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n  }\n\n  isString(regexp) {\n    var {\n      value\n    } = this;\n    var result = typeof value === 'string';\n\n    if (!result || !regexp) {\n      return result;\n    }\n\n    return regexp.test(value);\n  }\n\n  isUrlDefinition() {\n    return this.isString(/^url\\(/);\n  }\n\n  isPixels() {\n    if (!this.hasValue()) {\n      return false;\n    }\n\n    var asString = this.getString();\n\n    switch (true) {\n      case asString.endsWith('px'):\n      case /^[0-9]+$/.test(asString):\n        return true;\n\n      default:\n        return false;\n    }\n  }\n\n  setValue(value) {\n    this.value = value;\n    return this;\n  }\n\n  getValue(def) {\n    if (typeof def === 'undefined' || this.hasValue()) {\n      return this.value;\n    }\n\n    return def;\n  }\n\n  getNumber(def) {\n    if (!this.hasValue()) {\n      if (typeof def === 'undefined') {\n        return 0;\n      }\n\n      return parseFloat(def);\n    }\n\n    var {\n      value\n    } = this;\n    var n = parseFloat(value);\n\n    if (this.isString(/%$/)) {\n      n /= 100.0;\n    }\n\n    return n;\n  }\n\n  getString(def) {\n    if (typeof def === 'undefined' || this.hasValue()) {\n      return typeof this.value === 'undefined' ? '' : String(this.value);\n    }\n\n    return String(def);\n  }\n\n  getColor(def) {\n    var color = this.getString(def);\n\n    if (this.isNormalizedColor) {\n      return color;\n    }\n\n    this.isNormalizedColor = true;\n    color = normalizeColor(color);\n    this.value = color;\n    return color;\n  }\n\n  getDpi() {\n    return 96.0; // TODO: compute?\n  }\n\n  getRem() {\n    return this.document.rootEmSize;\n  }\n\n  getEm() {\n    return this.document.emSize;\n  }\n\n  getUnits() {\n    return this.getString().replace(/[0-9.-]/g, '');\n  }\n\n  getPixels(axisOrIsFontSize) {\n    var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n    var {\n      viewPort\n    } = this.document.screen;\n\n    switch (true) {\n      case this.isString(/vmin$/):\n        return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n      case this.isString(/vmax$/):\n        return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n      case this.isString(/vw$/):\n        return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n      case this.isString(/vh$/):\n        return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n      case this.isString(/rem$/):\n        return this.getNumber() * this.getRem();\n\n      case this.isString(/em$/):\n        return this.getNumber() * this.getEm();\n\n      case this.isString(/ex$/):\n        return this.getNumber() * this.getEm() / 2.0;\n\n      case this.isString(/px$/):\n        return this.getNumber();\n\n      case this.isString(/pt$/):\n        return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n      case this.isString(/pc$/):\n        return this.getNumber() * 15;\n\n      case this.isString(/cm$/):\n        return this.getNumber() * this.getDpi() / 2.54;\n\n      case this.isString(/mm$/):\n        return this.getNumber() * this.getDpi() / 25.4;\n\n      case this.isString(/in$/):\n        return this.getNumber() * this.getDpi();\n\n      case this.isString(/%$/) && isFontSize:\n        return this.getNumber() * this.getEm();\n\n      case this.isString(/%$/):\n        return this.getNumber() * viewPort.computeSize(axis);\n\n      default:\n        {\n          var n = this.getNumber();\n\n          if (processPercent && n < 1.0) {\n            return n * viewPort.computeSize(axis);\n          }\n\n          return n;\n        }\n    }\n  }\n\n  getMilliseconds() {\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    if (this.isString(/ms$/)) {\n      return this.getNumber();\n    }\n\n    return this.getNumber() * 1000;\n  }\n\n  getRadians() {\n    if (!this.hasValue()) {\n      return 0;\n    }\n\n    switch (true) {\n      case this.isString(/deg$/):\n        return this.getNumber() * (Math.PI / 180.0);\n\n      case this.isString(/grad$/):\n        return this.getNumber() * (Math.PI / 200.0);\n\n      case this.isString(/rad$/):\n        return this.getNumber();\n\n      default:\n        return this.getNumber() * (Math.PI / 180.0);\n    }\n  }\n\n  getDefinition() {\n    var asString = this.getString();\n    var name = /#([^)'\"]+)/.exec(asString);\n\n    if (name) {\n      name = name[1];\n    }\n\n    if (!name) {\n      name = asString;\n    }\n\n    return this.document.definitions[name];\n  }\n\n  getFillStyleDefinition(element, opacity) {\n    var def = this.getDefinition();\n\n    if (!def) {\n      return null;\n    } // gradient\n\n\n    if (typeof def.createGradient === 'function') {\n      return def.createGradient(this.document.ctx, element, opacity);\n    } // pattern\n\n\n    if (typeof def.createPattern === 'function') {\n      if (def.getHrefAttribute().hasValue()) {\n        var patternTransform = def.getAttribute('patternTransform');\n        def = def.getHrefAttribute().getDefinition();\n\n        if (patternTransform.hasValue()) {\n          def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n        }\n      }\n\n      return def.createPattern(this.document.ctx, element, opacity);\n    }\n\n    return null;\n  }\n\n  getTextBaseline() {\n    if (!this.hasValue()) {\n      return null;\n    }\n\n    return Property.textBaselineMapping[this.getString()];\n  }\n\n  addOpacity(opacity) {\n    var value = this.getColor();\n    var len = value.length;\n    var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n    for (var i = 0; i < len; i++) {\n      if (value[i] === ',') {\n        commas++;\n      }\n\n      if (commas === 3) {\n        break;\n      }\n    }\n\n    if (opacity.hasValue() && this.isString() && commas !== 3) {\n      var color = new RGBColor(value);\n\n      if (color.ok) {\n        color.alpha = opacity.getNumber();\n        value = color.toRGBA();\n      }\n    }\n\n    return new Property(this.document, this.name, value);\n  }\n\n}\nProperty.textBaselineMapping = {\n  'baseline': 'alphabetic',\n  'before-edge': 'top',\n  'text-before-edge': 'top',\n  'middle': 'middle',\n  'central': 'middle',\n  'after-edge': 'bottom',\n  'text-after-edge': 'bottom',\n  'ideographic': 'ideographic',\n  'alphabetic': 'alphabetic',\n  'hanging': 'hanging',\n  'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n  constructor() {\n    this.viewPorts = [];\n  }\n\n  clear() {\n    this.viewPorts = [];\n  }\n\n  setCurrent(width, height) {\n    this.viewPorts.push({\n      width,\n      height\n    });\n  }\n\n  removeCurrent() {\n    this.viewPorts.pop();\n  }\n\n  getCurrent() {\n    var {\n      viewPorts\n    } = this;\n    return viewPorts[viewPorts.length - 1];\n  }\n\n  get width() {\n    return this.getCurrent().width;\n  }\n\n  get height() {\n    return this.getCurrent().height;\n  }\n\n  computeSize(d) {\n    if (typeof d === 'number') {\n      return d;\n    }\n\n    if (d === 'x') {\n      return this.width;\n    }\n\n    if (d === 'y') {\n      return this.height;\n    }\n\n    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n  }\n\n}\n\nclass Point {\n  constructor(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  static parse(point) {\n    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var [x = defaultValue, y = defaultValue] = toNumbers(point);\n    return new Point(x, y);\n  }\n\n  static parseScale(scale) {\n    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var [x = defaultValue, y = x] = toNumbers(scale);\n    return new Point(x, y);\n  }\n\n  static parsePath(path) {\n    var points = toNumbers(path);\n    var len = points.length;\n    var pathPoints = [];\n\n    for (var i = 0; i < len; i += 2) {\n      pathPoints.push(new Point(points[i], points[i + 1]));\n    }\n\n    return pathPoints;\n  }\n\n  angleTo(point) {\n    return Math.atan2(point.y - this.y, point.x - this.x);\n  }\n\n  applyTransform(transform) {\n    var {\n      x,\n      y\n    } = this;\n    var xp = x * transform[0] + y * transform[2] + transform[4];\n    var yp = x * transform[1] + y * transform[3] + transform[5];\n    this.x = xp;\n    this.y = yp;\n  }\n\n}\n\nclass Mouse {\n  constructor(screen) {\n    this.screen = screen;\n    this.working = false;\n    this.events = [];\n    this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n    this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n    this.onMouseMove = this.onMouseMove.bind(this);\n  }\n\n  isWorking() {\n    return this.working;\n  }\n\n  start() {\n    if (this.working) {\n      return;\n    }\n\n    var {\n      screen,\n      onClick,\n      onMouseMove\n    } = this;\n    var canvas = screen.ctx.canvas;\n    canvas.onclick = onClick;\n    canvas.onmousemove = onMouseMove;\n    this.working = true;\n  }\n\n  stop() {\n    if (!this.working) {\n      return;\n    }\n\n    var canvas = this.screen.ctx.canvas;\n    this.working = false;\n    canvas.onclick = null;\n    canvas.onmousemove = null;\n  }\n\n  hasEvents() {\n    return this.working && this.events.length > 0;\n  }\n\n  runEvents() {\n    if (!this.working) {\n      return;\n    }\n\n    var {\n      screen: document,\n      events,\n      eventElements\n    } = this;\n    var {\n      style\n    } = document.ctx.canvas;\n\n    if (style) {\n      style.cursor = '';\n    }\n\n    events.forEach((_ref, i) => {\n      var {\n        run\n      } = _ref;\n      var element = eventElements[i];\n\n      while (element) {\n        run(element);\n        element = element.parent;\n      }\n    }); // done running, clear\n\n    this.events = [];\n    this.eventElements = [];\n  }\n\n  checkPath(element, ctx) {\n    if (!this.working || !ctx) {\n      return;\n    }\n\n    var {\n      events,\n      eventElements\n    } = this;\n    events.forEach((_ref2, i) => {\n      var {\n        x,\n        y\n      } = _ref2;\n\n      if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n        eventElements[i] = element;\n      }\n    });\n  }\n\n  checkBoundingBox(element, boundingBox) {\n    if (!this.working || !boundingBox) {\n      return;\n    }\n\n    var {\n      events,\n      eventElements\n    } = this;\n    events.forEach((_ref3, i) => {\n      var {\n        x,\n        y\n      } = _ref3;\n\n      if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n        eventElements[i] = element;\n      }\n    });\n  }\n\n  mapXY(x, y) {\n    var {\n      window,\n      ctx\n    } = this.screen;\n    var point = new Point(x, y);\n    var element = ctx.canvas;\n\n    while (element) {\n      point.x -= element.offsetLeft;\n      point.y -= element.offsetTop;\n      element = element.offsetParent;\n    }\n\n    if (window.scrollX) {\n      point.x += window.scrollX;\n    }\n\n    if (window.scrollY) {\n      point.y += window.scrollY;\n    }\n\n    return point;\n  }\n\n  onClick(event) {\n    var {\n      x,\n      y\n    } = this.mapXY(event.clientX, event.clientY);\n    this.events.push({\n      type: 'onclick',\n      x,\n      y,\n\n      run(eventTarget) {\n        if (eventTarget.onClick) {\n          eventTarget.onClick();\n        }\n      }\n\n    });\n  }\n\n  onMouseMove(event) {\n    var {\n      x,\n      y\n    } = this.mapXY(event.clientX, event.clientY);\n    this.events.push({\n      type: 'onmousemove',\n      x,\n      y,\n\n      run(eventTarget) {\n        if (eventTarget.onMouseMove) {\n          eventTarget.onMouseMove();\n        }\n      }\n\n    });\n  }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n  constructor(ctx) {\n    var {\n      fetch = defaultFetch$1,\n      window = defaultWindow\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.ctx = ctx;\n    this.FRAMERATE = 30;\n    this.MAX_VIRTUAL_PIXELS = 30000;\n    this.CLIENT_WIDTH = 800;\n    this.CLIENT_HEIGHT = 600;\n    this.viewPort = new ViewPort();\n    this.mouse = new Mouse(this);\n    this.animations = [];\n    this.waits = [];\n    this.frameDuration = 0;\n    this.isReadyLock = false;\n    this.isFirstRender = true;\n    this.intervalId = null;\n    this.window = window;\n    this.fetch = fetch;\n  }\n\n  wait(checker) {\n    this.waits.push(checker);\n  }\n\n  ready() {\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    if (!this.readyPromise) {\n      return Promise.resolve();\n    }\n\n    return this.readyPromise;\n  }\n\n  isReady() {\n    if (this.isReadyLock) {\n      return true;\n    }\n\n    var isReadyLock = this.waits.every(_ => _());\n\n    if (isReadyLock) {\n      this.waits = [];\n\n      if (this.resolveReady) {\n        this.resolveReady();\n      }\n    }\n\n    this.isReadyLock = isReadyLock;\n    return isReadyLock;\n  }\n\n  setDefaults(ctx) {\n    // initial values and defaults\n    ctx.strokeStyle = 'rgba(0,0,0,0)';\n    ctx.lineCap = 'butt';\n    ctx.lineJoin = 'miter';\n    ctx.miterLimit = 4;\n  }\n\n  setViewBox(_ref) {\n    var {\n      document,\n      ctx,\n      aspectRatio,\n      width,\n      desiredWidth,\n      height,\n      desiredHeight,\n      minX = 0,\n      minY = 0,\n      refX,\n      refY,\n      clip = false,\n      clipX = 0,\n      clipY = 0\n    } = _ref;\n    // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n    var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n    var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n    var align = aspectRatioAlign || 'xMidYMid';\n    var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n    var scaleX = width / desiredWidth;\n    var scaleY = height / desiredHeight;\n    var scaleMin = Math.min(scaleX, scaleY);\n    var scaleMax = Math.max(scaleX, scaleY);\n    var finalDesiredWidth = desiredWidth;\n    var finalDesiredHeight = desiredHeight;\n\n    if (meetOrSlice === 'meet') {\n      finalDesiredWidth *= scaleMin;\n      finalDesiredHeight *= scaleMin;\n    }\n\n    if (meetOrSlice === 'slice') {\n      finalDesiredWidth *= scaleMax;\n      finalDesiredHeight *= scaleMax;\n    }\n\n    var refXProp = new Property(document, 'refX', refX);\n    var refYProp = new Property(document, 'refY', refY);\n    var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n    if (hasRefs) {\n      ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n    }\n\n    if (clip) {\n      var scaledClipX = scaleMin * clipX;\n      var scaledClipY = scaleMin * clipY;\n      ctx.beginPath();\n      ctx.moveTo(scaledClipX, scaledClipY);\n      ctx.lineTo(width, scaledClipY);\n      ctx.lineTo(width, height);\n      ctx.lineTo(scaledClipX, height);\n      ctx.closePath();\n      ctx.clip();\n    }\n\n    if (!hasRefs) {\n      var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n      var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n      var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n      var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n      if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n        ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n      }\n\n      if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n        ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n      }\n\n      if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n        ctx.translate(width - finalDesiredWidth, 0);\n      }\n\n      if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n        ctx.translate(0, height - finalDesiredHeight);\n      }\n    } // scale\n\n\n    switch (true) {\n      case align === 'none':\n        ctx.scale(scaleX, scaleY);\n        break;\n\n      case meetOrSlice === 'meet':\n        ctx.scale(scaleMin, scaleMin);\n        break;\n\n      case meetOrSlice === 'slice':\n        ctx.scale(scaleMax, scaleMax);\n        break;\n    } // translate\n\n\n    ctx.translate(-minX, -minY);\n  }\n\n  start(element) {\n    var {\n      enableRedraw = false,\n      ignoreMouse = false,\n      ignoreAnimation = false,\n      ignoreDimensions = false,\n      ignoreClear = false,\n      forceRedraw,\n      scaleWidth,\n      scaleHeight,\n      offsetX,\n      offsetY\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      FRAMERATE,\n      mouse\n    } = this;\n    var frameDuration = 1000 / FRAMERATE;\n    this.frameDuration = frameDuration;\n    this.readyPromise = new Promise(resolve => {\n      this.resolveReady = resolve;\n    });\n\n    if (this.isReady()) {\n      this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n    }\n\n    if (!enableRedraw) {\n      return;\n    }\n\n    var now = Date.now();\n    var then = now;\n    var delta = 0;\n\n    var tick = () => {\n      now = Date.now();\n      delta = now - then;\n\n      if (delta >= frameDuration) {\n        then = now - delta % frameDuration;\n\n        if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n          this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n          mouse.runEvents();\n        }\n      }\n\n      this.intervalId = requestAnimationFrame(tick);\n    };\n\n    if (!ignoreMouse) {\n      mouse.start();\n    }\n\n    this.intervalId = requestAnimationFrame(tick);\n  }\n\n  stop() {\n    if (this.intervalId) {\n      requestAnimationFrame.cancel(this.intervalId);\n      this.intervalId = null;\n    }\n\n    this.mouse.stop();\n  }\n\n  shouldUpdate(ignoreAnimation, forceRedraw) {\n    // need update from animations?\n    if (!ignoreAnimation) {\n      var {\n        frameDuration\n      } = this;\n      var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n      if (shouldUpdate) {\n        return true;\n      }\n    } // need update from redraw?\n\n\n    if (typeof forceRedraw === 'function' && forceRedraw()) {\n      return true;\n    }\n\n    if (!this.isReadyLock && this.isReady()) {\n      return true;\n    } // need update from mouse events?\n\n\n    if (this.mouse.hasEvents()) {\n      return true;\n    }\n\n    return false;\n  }\n\n  render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n    var {\n      CLIENT_WIDTH,\n      CLIENT_HEIGHT,\n      viewPort,\n      ctx,\n      isFirstRender\n    } = this;\n    var canvas = ctx.canvas;\n    viewPort.clear();\n\n    if (canvas.width && canvas.height) {\n      viewPort.setCurrent(canvas.width, canvas.height);\n    } else {\n      viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n    }\n\n    var widthStyle = element.getStyle('width');\n    var heightStyle = element.getStyle('height');\n\n    if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n      // set canvas size\n      if (widthStyle.hasValue()) {\n        canvas.width = widthStyle.getPixels('x');\n\n        if (canvas.style) {\n          canvas.style.width = \"\".concat(canvas.width, \"px\");\n        }\n      }\n\n      if (heightStyle.hasValue()) {\n        canvas.height = heightStyle.getPixels('y');\n\n        if (canvas.style) {\n          canvas.style.height = \"\".concat(canvas.height, \"px\");\n        }\n      }\n    }\n\n    var cWidth = canvas.clientWidth || canvas.width;\n    var cHeight = canvas.clientHeight || canvas.height;\n\n    if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n      cWidth = widthStyle.getPixels('x');\n      cHeight = heightStyle.getPixels('y');\n    }\n\n    viewPort.setCurrent(cWidth, cHeight);\n\n    if (typeof offsetX === 'number') {\n      element.getAttribute('x', true).setValue(offsetX);\n    }\n\n    if (typeof offsetY === 'number') {\n      element.getAttribute('y', true).setValue(offsetY);\n    }\n\n    if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n      var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n      var xRatio = 0;\n      var yRatio = 0;\n\n      if (typeof scaleWidth === 'number') {\n        var _widthStyle = element.getStyle('width');\n\n        if (_widthStyle.hasValue()) {\n          xRatio = _widthStyle.getPixels('x') / scaleWidth;\n        } else if (!isNaN(viewBox[2])) {\n          xRatio = viewBox[2] / scaleWidth;\n        }\n      }\n\n      if (typeof scaleHeight === 'number') {\n        var _heightStyle = element.getStyle('height');\n\n        if (_heightStyle.hasValue()) {\n          yRatio = _heightStyle.getPixels('y') / scaleHeight;\n        } else if (!isNaN(viewBox[3])) {\n          yRatio = viewBox[3] / scaleHeight;\n        }\n      }\n\n      if (!xRatio) {\n        xRatio = yRatio;\n      }\n\n      if (!yRatio) {\n        yRatio = xRatio;\n      }\n\n      element.getAttribute('width', true).setValue(scaleWidth);\n      element.getAttribute('height', true).setValue(scaleHeight);\n      var transformStyle = element.getStyle('transform', true, true);\n      transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n    } // clear and render\n\n\n    if (!ignoreClear) {\n      ctx.clearRect(0, 0, cWidth, cHeight);\n    }\n\n    element.render(ctx);\n\n    if (isFirstRender) {\n      this.isFirstRender = false;\n    }\n  }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n  defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n  constructor() {\n    var {\n      fetch = defaultFetch,\n      DOMParser = DefaultDOMParser\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.fetch = fetch;\n    this.DOMParser = DOMParser;\n  }\n\n  parse(resource) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      if (resource.startsWith('<')) {\n        return _this.parseFromString(resource);\n      }\n\n      return _this.load(resource);\n    })();\n  }\n\n  parseFromString(xml) {\n    var parser = new this.DOMParser();\n\n    try {\n      return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n    } catch (err) {\n      return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n    }\n  }\n\n  checkDocument(document) {\n    var parserError = document.getElementsByTagName('parsererror')[0];\n\n    if (parserError) {\n      throw new Error(parserError.textContent);\n    }\n\n    return document;\n  }\n\n  load(url) {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      var response = yield _this2.fetch(url);\n      var xml = yield response.text();\n      return _this2.parseFromString(xml);\n    })();\n  }\n\n}\n\nclass Translate {\n  constructor(_, point) {\n    this.type = 'translate';\n    this.point = null;\n    this.point = Point.parse(point);\n  }\n\n  apply(ctx) {\n    var {\n      x,\n      y\n    } = this.point;\n    ctx.translate(x || 0.0, y || 0.0);\n  }\n\n  unapply(ctx) {\n    var {\n      x,\n      y\n    } = this.point;\n    ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n  }\n\n  applyToPoint(point) {\n    var {\n      x,\n      y\n    } = this.point;\n    point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n  }\n\n}\n\nclass Rotate {\n  constructor(document, rotate, transformOrigin) {\n    this.type = 'rotate';\n    this.angle = null;\n    this.originX = null;\n    this.originY = null;\n    this.cx = 0;\n    this.cy = 0;\n    var numbers = toNumbers(rotate);\n    this.angle = new Property(document, 'angle', numbers[0]);\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n    this.cx = numbers[1] || 0;\n    this.cy = numbers[2] || 0;\n  }\n\n  apply(ctx) {\n    var {\n      cx,\n      cy,\n      originX,\n      originY,\n      angle\n    } = this;\n    var tx = cx + originX.getPixels('x');\n    var ty = cy + originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.rotate(angle.getRadians());\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      cx,\n      cy,\n      originX,\n      originY,\n      angle\n    } = this;\n    var tx = cx + originX.getPixels('x');\n    var ty = cy + originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.rotate(-1.0 * angle.getRadians());\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    var {\n      cx,\n      cy,\n      angle\n    } = this;\n    var rad = angle.getRadians();\n    point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n    ]);\n    point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n    point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n    ]);\n  }\n\n}\n\nclass Scale {\n  constructor(_, scale, transformOrigin) {\n    this.type = 'scale';\n    this.scale = null;\n    this.originX = null;\n    this.originY = null;\n    var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n    if (scaleSize.x === 0 || scaleSize.y === 0) {\n      scaleSize.x = PSEUDO_ZERO;\n      scaleSize.y = PSEUDO_ZERO;\n    }\n\n    this.scale = scaleSize;\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n  }\n\n  apply(ctx) {\n    var {\n      scale: {\n        x,\n        y\n      },\n      originX,\n      originY\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.scale(x, y || x);\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      scale: {\n        x,\n        y\n      },\n      originX,\n      originY\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.scale(1.0 / x, 1.0 / y || x);\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    var {\n      x,\n      y\n    } = this.scale;\n    point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n  }\n\n}\n\nclass Matrix {\n  constructor(_, matrix, transformOrigin) {\n    this.type = 'matrix';\n    this.matrix = [];\n    this.originX = null;\n    this.originY = null;\n    this.matrix = toNumbers(matrix);\n    this.originX = transformOrigin[0];\n    this.originY = transformOrigin[1];\n  }\n\n  apply(ctx) {\n    var {\n      originX,\n      originY,\n      matrix\n    } = this;\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n    ctx.translate(-tx, -ty);\n  }\n\n  unapply(ctx) {\n    var {\n      originX,\n      originY,\n      matrix\n    } = this;\n    var a = matrix[0];\n    var b = matrix[2];\n    var c = matrix[4];\n    var d = matrix[1];\n    var e = matrix[3];\n    var f = matrix[5];\n    var g = 0.0;\n    var h = 0.0;\n    var i = 1.0;\n    var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n    var tx = originX.getPixels('x');\n    var ty = originY.getPixels('y');\n    ctx.translate(tx, ty);\n    ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n    ctx.translate(-tx, -ty);\n  }\n\n  applyToPoint(point) {\n    point.applyTransform(this.matrix);\n  }\n\n}\n\nclass Skew extends Matrix {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skew';\n    this.angle = null;\n    this.angle = new Property(document, 'angle', skew);\n  }\n\n}\n\nclass SkewX extends Skew {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skewX';\n    this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n  }\n\n}\n\nclass SkewY extends Skew {\n  constructor(document, skew, transformOrigin) {\n    super(document, skew, transformOrigin);\n    this.type = 'skewY';\n    this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n  }\n\n}\n\nfunction parseTransforms(transform) {\n  return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n  var [type, value] = transform.split('(');\n  return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n  constructor(document, transform, transformOrigin) {\n    this.document = document;\n    this.transforms = [];\n    var data = parseTransforms(transform);\n    data.forEach(transform => {\n      if (transform === 'none') {\n        return;\n      }\n\n      var [type, value] = parseTransform(transform);\n      var TransformType = Transform.transformTypes[type];\n\n      if (typeof TransformType !== 'undefined') {\n        this.transforms.push(new TransformType(this.document, value, transformOrigin));\n      }\n    });\n  }\n\n  static fromElement(document, element) {\n    var transformStyle = element.getStyle('transform', false, true);\n    var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n    var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n    if (transformStyle.hasValue()) {\n      return new Transform(document, transformStyle.getString(), transformOrigin);\n    }\n\n    return null;\n  }\n\n  apply(ctx) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = 0; i < len; i++) {\n      transforms[i].apply(ctx);\n    }\n  }\n\n  unapply(ctx) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = len - 1; i >= 0; i--) {\n      transforms[i].unapply(ctx);\n    }\n  } // TODO: applyToPoint unused ... remove?\n\n\n  applyToPoint(point) {\n    var {\n      transforms\n    } = this;\n    var len = transforms.length;\n\n    for (var i = 0; i < len; i++) {\n      transforms[i].applyToPoint(point);\n    }\n  }\n\n}\nTransform.transformTypes = {\n  translate: Translate,\n  rotate: Rotate,\n  scale: Scale,\n  matrix: Matrix,\n  skewX: SkewX,\n  skewY: SkewY\n};\n\nclass Element {\n  constructor(document, node) {\n    var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    this.document = document;\n    this.node = node;\n    this.captureTextNodes = captureTextNodes;\n    this.attributes = Object.create(null);\n    this.styles = Object.create(null);\n    this.stylesSpecificity = Object.create(null);\n    this.animationFrozen = false;\n    this.animationFrozenValue = '';\n    this.parent = null;\n    this.children = [];\n\n    if (!node || node.nodeType !== 1) {\n      // ELEMENT_NODE\n      return;\n    } // add attributes\n\n\n    Array.from(node.attributes).forEach(attribute => {\n      var nodeName = normalizeAttributeName(attribute.nodeName);\n      this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n    });\n    this.addStylesFromStyleDefinition(); // add inline styles\n\n    if (this.getAttribute('style').hasValue()) {\n      var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n      styles.forEach(style => {\n        if (!style) {\n          return;\n        }\n\n        var [name, value] = style.split(':').map(_ => _.trim());\n        this.styles[name] = new Property(document, name, value);\n      });\n    }\n\n    var {\n      definitions\n    } = document;\n    var id = this.getAttribute('id'); // add id\n\n    if (id.hasValue()) {\n      if (!definitions[id.getString()]) {\n        definitions[id.getString()] = this;\n      }\n    }\n\n    Array.from(node.childNodes).forEach(childNode => {\n      if (childNode.nodeType === 1) {\n        this.addChild(childNode); // ELEMENT_NODE\n      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n        var textNode = document.createTextNode(childNode);\n\n        if (textNode.getText().length > 0) {\n          this.addChild(textNode); // TEXT_NODE\n        }\n      }\n    });\n  }\n\n  getAttribute(name) {\n    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var attr = this.attributes[name];\n\n    if (!attr && createIfNotExists) {\n      var _attr = new Property(this.document, name, '');\n\n      this.attributes[name] = _attr;\n      return _attr;\n    }\n\n    return attr || Property.empty(this.document);\n  }\n\n  getHrefAttribute() {\n    for (var key in this.attributes) {\n      if (key === 'href' || key.endsWith(':href')) {\n        return this.attributes[key];\n      }\n    }\n\n    return Property.empty(this.document);\n  }\n\n  getStyle(name) {\n    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var style = this.styles[name];\n\n    if (style) {\n      return style;\n    }\n\n    var attr = this.getAttribute(name);\n\n    if (attr !== null && attr !== void 0 && attr.hasValue()) {\n      this.styles[name] = attr; // move up to me to cache\n\n      return attr;\n    }\n\n    if (!skipAncestors) {\n      var {\n        parent\n      } = this;\n\n      if (parent) {\n        var parentStyle = parent.getStyle(name);\n\n        if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n          return parentStyle;\n        }\n      }\n    }\n\n    if (createIfNotExists) {\n      var _style = new Property(this.document, name, '');\n\n      this.styles[name] = _style;\n      return _style;\n    }\n\n    return style || Property.empty(this.document);\n  }\n\n  render(ctx) {\n    // don't render display=none\n    // don't render visibility=hidden\n    if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n      return;\n    }\n\n    ctx.save();\n\n    if (this.getStyle('mask').hasValue()) {\n      // mask\n      var mask = this.getStyle('mask').getDefinition();\n\n      if (mask) {\n        this.applyEffects(ctx);\n        mask.apply(ctx, this);\n      }\n    } else if (this.getStyle('filter').getValue('none') !== 'none') {\n      // filter\n      var filter = this.getStyle('filter').getDefinition();\n\n      if (filter) {\n        this.applyEffects(ctx);\n        filter.apply(ctx, this);\n      }\n    } else {\n      this.setContext(ctx);\n      this.renderChildren(ctx);\n      this.clearContext(ctx);\n    }\n\n    ctx.restore();\n  }\n\n  setContext(_) {// NO RENDER\n  }\n\n  applyEffects(ctx) {\n    // transform\n    var transform = Transform.fromElement(this.document, this);\n\n    if (transform) {\n      transform.apply(ctx);\n    } // clip\n\n\n    var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n    if (clipPathStyleProp.hasValue()) {\n      var clip = clipPathStyleProp.getDefinition();\n\n      if (clip) {\n        clip.apply(ctx);\n      }\n    }\n  }\n\n  clearContext(_) {// NO RENDER\n  }\n\n  renderChildren(ctx) {\n    this.children.forEach(child => {\n      child.render(ctx);\n    });\n  }\n\n  addChild(childNode) {\n    var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n    child.parent = this;\n\n    if (!Element.ignoreChildTypes.includes(child.type)) {\n      this.children.push(child);\n    }\n  }\n\n  matchesSelector(selector) {\n    var _node$getAttribute;\n\n    var {\n      node\n    } = this;\n\n    if (typeof node.matches === 'function') {\n      return node.matches(selector);\n    }\n\n    var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n    if (!styleClasses || styleClasses === '') {\n      return false;\n    }\n\n    return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n  }\n\n  addStylesFromStyleDefinition() {\n    var {\n      styles,\n      stylesSpecificity\n    } = this.document;\n\n    for (var selector in styles) {\n      if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n        var style = styles[selector];\n        var specificity = stylesSpecificity[selector];\n\n        if (style) {\n          for (var name in style) {\n            var existingSpecificity = this.stylesSpecificity[name];\n\n            if (typeof existingSpecificity === 'undefined') {\n              existingSpecificity = '000';\n            }\n\n            if (specificity >= existingSpecificity) {\n              this.styles[name] = style[name];\n              this.stylesSpecificity[name] = specificity;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  removeStyles(element, ignoreStyles) {\n    var toRestore = ignoreStyles.reduce((toRestore, name) => {\n      var styleProp = element.getStyle(name);\n\n      if (!styleProp.hasValue()) {\n        return toRestore;\n      }\n\n      var value = styleProp.getString();\n      styleProp.setValue('');\n      return [...toRestore, [name, value]];\n    }, []);\n    return toRestore;\n  }\n\n  restoreStyles(element, styles) {\n    styles.forEach(_ref => {\n      var [name, value] = _ref;\n      element.getStyle(name, true).setValue(value);\n    });\n  }\n\n  isFirstChild() {\n    var _this$parent;\n\n    return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n  }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n  }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n  var trimmed = fontFamily.trim();\n  return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n  return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n  if (!fontStyle) {\n    return '';\n  }\n\n  var targetFontStyle = fontStyle.trim().toLowerCase();\n\n  switch (targetFontStyle) {\n    case 'normal':\n    case 'italic':\n    case 'oblique':\n    case 'inherit':\n    case 'initial':\n    case 'unset':\n      return targetFontStyle;\n\n    default:\n      if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n        return targetFontStyle;\n      }\n\n      return '';\n  }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n  if (!fontWeight) {\n    return '';\n  }\n\n  var targetFontWeight = fontWeight.trim().toLowerCase();\n\n  switch (targetFontWeight) {\n    case 'normal':\n    case 'bold':\n    case 'lighter':\n    case 'bolder':\n    case 'inherit':\n    case 'initial':\n    case 'unset':\n      return targetFontWeight;\n\n    default:\n      if (/^[\\d.]+$/.test(targetFontWeight)) {\n        return targetFontWeight;\n      }\n\n      return '';\n  }\n}\n\nclass Font {\n  constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n    var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n    this.fontFamily = fontFamily || inheritFont.fontFamily;\n    this.fontSize = fontSize || inheritFont.fontSize;\n    this.fontStyle = fontStyle || inheritFont.fontStyle;\n    this.fontWeight = fontWeight || inheritFont.fontWeight;\n    this.fontVariant = fontVariant || inheritFont.fontVariant;\n  }\n\n  static parse() {\n    var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var inherit = arguments.length > 1 ? arguments[1] : undefined;\n    var fontStyle = '';\n    var fontVariant = '';\n    var fontWeight = '';\n    var fontSize = '';\n    var fontFamily = '';\n    var parts = compressSpaces(font).trim().split(' ');\n    var set = {\n      fontSize: false,\n      fontStyle: false,\n      fontWeight: false,\n      fontVariant: false\n    };\n    parts.forEach(part => {\n      switch (true) {\n        case !set.fontStyle && Font.styles.includes(part):\n          if (part !== 'inherit') {\n            fontStyle = part;\n          }\n\n          set.fontStyle = true;\n          break;\n\n        case !set.fontVariant && Font.variants.includes(part):\n          if (part !== 'inherit') {\n            fontVariant = part;\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          break;\n\n        case !set.fontWeight && Font.weights.includes(part):\n          if (part !== 'inherit') {\n            fontWeight = part;\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          set.fontWeight = true;\n          break;\n\n        case !set.fontSize:\n          if (part !== 'inherit') {\n            [fontSize] = part.split('/');\n          }\n\n          set.fontStyle = true;\n          set.fontVariant = true;\n          set.fontWeight = true;\n          set.fontSize = true;\n          break;\n\n        default:\n          if (part !== 'inherit') {\n            fontFamily += part;\n          }\n\n      }\n    });\n    return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n  }\n\n  toString() {\n    return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n    prepareFontFamily(this.fontFamily)].join(' ').trim();\n  }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n  constructor() {\n    var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n    var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n    var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n    var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n    this.x1 = x1;\n    this.y1 = y1;\n    this.x2 = x2;\n    this.y2 = y2;\n    this.addPoint(x1, y1);\n    this.addPoint(x2, y2);\n  }\n\n  get x() {\n    return this.x1;\n  }\n\n  get y() {\n    return this.y1;\n  }\n\n  get width() {\n    return this.x2 - this.x1;\n  }\n\n  get height() {\n    return this.y2 - this.y1;\n  }\n\n  addPoint(x, y) {\n    if (typeof x !== 'undefined') {\n      if (isNaN(this.x1) || isNaN(this.x2)) {\n        this.x1 = x;\n        this.x2 = x;\n      }\n\n      if (x < this.x1) {\n        this.x1 = x;\n      }\n\n      if (x > this.x2) {\n        this.x2 = x;\n      }\n    }\n\n    if (typeof y !== 'undefined') {\n      if (isNaN(this.y1) || isNaN(this.y2)) {\n        this.y1 = y;\n        this.y2 = y;\n      }\n\n      if (y < this.y1) {\n        this.y1 = y;\n      }\n\n      if (y > this.y2) {\n        this.y2 = y;\n      }\n    }\n  }\n\n  addX(x) {\n    this.addPoint(x, null);\n  }\n\n  addY(y) {\n    this.addPoint(null, y);\n  }\n\n  addBoundingBox(boundingBox) {\n    if (!boundingBox) {\n      return;\n    }\n\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = boundingBox;\n    this.addPoint(x1, y1);\n    this.addPoint(x2, y2);\n  }\n\n  sumCubic(t, p0, p1, p2, p3) {\n    return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n  }\n\n  bezierCurveAdd(forX, p0, p1, p2, p3) {\n    var b = 6 * p0 - 12 * p1 + 6 * p2;\n    var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n    var c = 3 * p1 - 3 * p0;\n\n    if (a === 0) {\n      if (b === 0) {\n        return;\n      }\n\n      var t = -c / b;\n\n      if (0 < t && t < 1) {\n        if (forX) {\n          this.addX(this.sumCubic(t, p0, p1, p2, p3));\n        } else {\n          this.addY(this.sumCubic(t, p0, p1, p2, p3));\n        }\n      }\n\n      return;\n    }\n\n    var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n    if (b2ac < 0) {\n      return;\n    }\n\n    var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n    if (0 < t1 && t1 < 1) {\n      if (forX) {\n        this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n      } else {\n        this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n      }\n    }\n\n    var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n    if (0 < t2 && t2 < 1) {\n      if (forX) {\n        this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n      } else {\n        this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n      }\n    }\n  } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n  addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n    this.addPoint(p0x, p0y);\n    this.addPoint(p3x, p3y);\n    this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n    this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n  }\n\n  addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n    var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n    var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n    var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n    var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n    this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n  }\n\n  isPointInBox(x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this;\n    return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n  }\n\n}\n\nclass PathParser extends SVGPathData {\n  constructor(path) {\n    super(path // Fix spaces after signs.\n    .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n    .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n    this.control = null;\n    this.start = null;\n    this.current = null;\n    this.command = null;\n    this.commands = this.commands;\n    this.i = -1;\n    this.previousCommand = null;\n    this.points = [];\n    this.angles = [];\n  }\n\n  reset() {\n    this.i = -1;\n    this.command = null;\n    this.previousCommand = null;\n    this.start = new Point(0, 0);\n    this.control = new Point(0, 0);\n    this.current = new Point(0, 0);\n    this.points = [];\n    this.angles = [];\n  }\n\n  isEnd() {\n    var {\n      i,\n      commands\n    } = this;\n    return i >= commands.length - 1;\n  }\n\n  next() {\n    var command = this.commands[++this.i];\n    this.previousCommand = this.command;\n    this.command = command;\n    return command;\n  }\n\n  getPoint() {\n    var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n    var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n    var point = new Point(this.command[xProp], this.command[yProp]);\n    return this.makeAbsolute(point);\n  }\n\n  getAsControlPoint(xProp, yProp) {\n    var point = this.getPoint(xProp, yProp);\n    this.control = point;\n    return point;\n  }\n\n  getAsCurrentPoint(xProp, yProp) {\n    var point = this.getPoint(xProp, yProp);\n    this.current = point;\n    return point;\n  }\n\n  getReflectedControlPoint() {\n    var previousCommand = this.previousCommand.type;\n\n    if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n      return this.current;\n    } // reflect point\n\n\n    var {\n      current: {\n        x: cx,\n        y: cy\n      },\n      control: {\n        x: ox,\n        y: oy\n      }\n    } = this;\n    var point = new Point(2 * cx - ox, 2 * cy - oy);\n    return point;\n  }\n\n  makeAbsolute(point) {\n    if (this.command.relative) {\n      var {\n        x,\n        y\n      } = this.current;\n      point.x += x;\n      point.y += y;\n    }\n\n    return point;\n  }\n\n  addMarker(point, from, priorTo) {\n    var {\n      points,\n      angles\n    } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n    if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n      angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n    }\n\n    this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n  }\n\n  addMarkerAngle(point, angle) {\n    this.points.push(point);\n    this.angles.push(angle);\n  }\n\n  getMarkerPoints() {\n    return this.points;\n  }\n\n  getMarkerAngles() {\n    var {\n      angles\n    } = this;\n    var len = angles.length;\n\n    for (var i = 0; i < len; i++) {\n      if (!angles[i]) {\n        for (var j = i + 1; j < len; j++) {\n          if (angles[j]) {\n            angles[i] = angles[j];\n            break;\n          }\n        }\n      }\n    }\n\n    return angles;\n  }\n\n}\n\nclass RenderedElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.modifiedEmSizeStack = false;\n  }\n\n  calculateOpacity() {\n    var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n    var element = this;\n\n    while (element) {\n      var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n      if (opacityStyle.hasValue(true)) {\n        opacity *= opacityStyle.getNumber();\n      }\n\n      element = element.parent;\n    }\n\n    return opacity;\n  }\n\n  setContext(ctx) {\n    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!fromMeasure) {\n      // causes stack overflow when measuring text with gradients\n      // fill\n      var fillStyleProp = this.getStyle('fill');\n      var fillOpacityStyleProp = this.getStyle('fill-opacity');\n      var strokeStyleProp = this.getStyle('stroke');\n      var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n      if (fillStyleProp.isUrlDefinition()) {\n        var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n        if (fillStyle) {\n          ctx.fillStyle = fillStyle;\n        }\n      } else if (fillStyleProp.hasValue()) {\n        if (fillStyleProp.getString() === 'currentColor') {\n          fillStyleProp.setValue(this.getStyle('color').getColor());\n        }\n\n        var _fillStyle = fillStyleProp.getColor();\n\n        if (_fillStyle !== 'inherit') {\n          ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n        }\n      }\n\n      if (fillOpacityStyleProp.hasValue()) {\n        var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n        ctx.fillStyle = _fillStyle2;\n      } // stroke\n\n\n      if (strokeStyleProp.isUrlDefinition()) {\n        var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n        if (strokeStyle) {\n          ctx.strokeStyle = strokeStyle;\n        }\n      } else if (strokeStyleProp.hasValue()) {\n        if (strokeStyleProp.getString() === 'currentColor') {\n          strokeStyleProp.setValue(this.getStyle('color').getColor());\n        }\n\n        var _strokeStyle = strokeStyleProp.getString();\n\n        if (_strokeStyle !== 'inherit') {\n          ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n        }\n      }\n\n      if (strokeOpacityProp.hasValue()) {\n        var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n        ctx.strokeStyle = _strokeStyle2;\n      }\n\n      var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n      if (strokeWidthStyleProp.hasValue()) {\n        var newLineWidth = strokeWidthStyleProp.getPixels();\n        ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n        : newLineWidth;\n      }\n\n      var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n      var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n      var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n      // const pointOrderStyleProp = this.getStyle('paint-order');\n\n      var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n      var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n      if (strokeLinecapStyleProp.hasValue()) {\n        ctx.lineCap = strokeLinecapStyleProp.getString();\n      }\n\n      if (strokeLinejoinStyleProp.hasValue()) {\n        ctx.lineJoin = strokeLinejoinStyleProp.getString();\n      }\n\n      if (strokeMiterlimitProp.hasValue()) {\n        ctx.miterLimit = strokeMiterlimitProp.getNumber();\n      } // NEED TEST\n      // if (pointOrderStyleProp.hasValue()) {\n      // \t// ?\n      // \tctx.paintOrder = pointOrderStyleProp.getValue();\n      // }\n\n\n      if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n        var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n        if (typeof ctx.setLineDash !== 'undefined') {\n          ctx.setLineDash(gaps);\n        } else // @ts-expect-error Handle browser prefix.\n          if (typeof ctx.webkitLineDash !== 'undefined') {\n            // @ts-expect-error Handle browser prefix.\n            ctx.webkitLineDash = gaps;\n          } else // @ts-expect-error Handle browser prefix.\n            if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n              // @ts-expect-error Handle browser prefix.\n              ctx.mozDash = gaps;\n            }\n\n        var offset = strokeDashoffsetProp.getPixels();\n\n        if (typeof ctx.lineDashOffset !== 'undefined') {\n          ctx.lineDashOffset = offset;\n        } else // @ts-expect-error Handle browser prefix.\n          if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n            // @ts-expect-error Handle browser prefix.\n            ctx.webkitLineDashOffset = offset;\n          } else // @ts-expect-error Handle browser prefix.\n            if (typeof ctx.mozDashOffset !== 'undefined') {\n              // @ts-expect-error Handle browser prefix.\n              ctx.mozDashOffset = offset;\n            }\n      }\n    } // font\n\n\n    this.modifiedEmSizeStack = false;\n\n    if (typeof ctx.font !== 'undefined') {\n      var fontStyleProp = this.getStyle('font');\n      var fontStyleStyleProp = this.getStyle('font-style');\n      var fontVariantStyleProp = this.getStyle('font-variant');\n      var fontWeightStyleProp = this.getStyle('font-weight');\n      var fontSizeStyleProp = this.getStyle('font-size');\n      var fontFamilyStyleProp = this.getStyle('font-family');\n      var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n      fontStyleStyleProp.setValue(font.fontStyle);\n      fontVariantStyleProp.setValue(font.fontVariant);\n      fontWeightStyleProp.setValue(font.fontWeight);\n      fontSizeStyleProp.setValue(font.fontSize);\n      fontFamilyStyleProp.setValue(font.fontFamily);\n      ctx.font = font.toString();\n\n      if (fontSizeStyleProp.isPixels()) {\n        this.document.emSize = fontSizeStyleProp.getPixels();\n        this.modifiedEmSizeStack = true;\n      }\n    }\n\n    if (!fromMeasure) {\n      // effects\n      this.applyEffects(ctx); // opacity\n\n      ctx.globalAlpha = this.calculateOpacity();\n    }\n  }\n\n  clearContext(ctx) {\n    super.clearContext(ctx);\n\n    if (this.modifiedEmSizeStack) {\n      this.document.popEmSize();\n    }\n  }\n\n}\n\nclass PathElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'path';\n    this.pathParser = null;\n    this.pathParser = new PathParser(this.getAttribute('d').getString());\n  }\n\n  path(ctx) {\n    var {\n      pathParser\n    } = this;\n    var boundingBox = new BoundingBox();\n    pathParser.reset();\n\n    if (ctx) {\n      ctx.beginPath();\n    }\n\n    while (!pathParser.isEnd()) {\n      switch (pathParser.next().type) {\n        case PathParser.MOVE_TO:\n          this.pathM(ctx, boundingBox);\n          break;\n\n        case PathParser.LINE_TO:\n          this.pathL(ctx, boundingBox);\n          break;\n\n        case PathParser.HORIZ_LINE_TO:\n          this.pathH(ctx, boundingBox);\n          break;\n\n        case PathParser.VERT_LINE_TO:\n          this.pathV(ctx, boundingBox);\n          break;\n\n        case PathParser.CURVE_TO:\n          this.pathC(ctx, boundingBox);\n          break;\n\n        case PathParser.SMOOTH_CURVE_TO:\n          this.pathS(ctx, boundingBox);\n          break;\n\n        case PathParser.QUAD_TO:\n          this.pathQ(ctx, boundingBox);\n          break;\n\n        case PathParser.SMOOTH_QUAD_TO:\n          this.pathT(ctx, boundingBox);\n          break;\n\n        case PathParser.ARC:\n          this.pathA(ctx, boundingBox);\n          break;\n\n        case PathParser.CLOSE_PATH:\n          this.pathZ(ctx, boundingBox);\n          break;\n      }\n    }\n\n    return boundingBox;\n  }\n\n  getBoundingBox(_) {\n    return this.path();\n  }\n\n  getMarkers() {\n    var {\n      pathParser\n    } = this;\n    var points = pathParser.getMarkerPoints();\n    var angles = pathParser.getMarkerAngles();\n    var markers = points.map((point, i) => [point, angles[i]]);\n    return markers;\n  }\n\n  renderChildren(ctx) {\n    this.path(ctx);\n    this.document.screen.mouse.checkPath(this, ctx);\n    var fillRuleStyleProp = this.getStyle('fill-rule');\n\n    if (ctx.fillStyle !== '') {\n      if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n        ctx.fill(fillRuleStyleProp.getString());\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (ctx.strokeStyle !== '') {\n      if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n        ctx.save();\n        ctx.setTransform(1, 0, 0, 1, 0, 0);\n        ctx.stroke();\n        ctx.restore();\n      } else {\n        ctx.stroke();\n      }\n    }\n\n    var markers = this.getMarkers();\n\n    if (markers) {\n      var markersLastIndex = markers.length - 1;\n      var markerStartStyleProp = this.getStyle('marker-start');\n      var markerMidStyleProp = this.getStyle('marker-mid');\n      var markerEndStyleProp = this.getStyle('marker-end');\n\n      if (markerStartStyleProp.isUrlDefinition()) {\n        var marker = markerStartStyleProp.getDefinition();\n        var [point, angle] = markers[0];\n        marker.render(ctx, point, angle);\n      }\n\n      if (markerMidStyleProp.isUrlDefinition()) {\n        var _marker = markerMidStyleProp.getDefinition();\n\n        for (var i = 1; i < markersLastIndex; i++) {\n          var [_point, _angle] = markers[i];\n\n          _marker.render(ctx, _point, _angle);\n        }\n      }\n\n      if (markerEndStyleProp.isUrlDefinition()) {\n        var _marker2 = markerEndStyleProp.getDefinition();\n\n        var [_point2, _angle2] = markers[markersLastIndex];\n\n        _marker2.render(ctx, _point2, _angle2);\n      }\n    }\n  }\n\n  static pathM(pathParser) {\n    var point = pathParser.getAsCurrentPoint();\n    pathParser.start = pathParser.current;\n    return {\n      point\n    };\n  }\n\n  pathM(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      point\n    } = PathElement.pathM(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.moveTo(x, y);\n    }\n  }\n\n  static pathL(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point\n    };\n  }\n\n  pathL(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathL(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathH(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n    pathParser.current = point;\n    return {\n      current,\n      point\n    };\n  }\n\n  pathH(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathH(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathV(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n    pathParser.current = point;\n    return {\n      current,\n      point\n    };\n  }\n\n  pathV(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point\n    } = PathElement.pathV(pathParser);\n    var {\n      x,\n      y\n    } = point;\n    pathParser.addMarker(point, current);\n    boundingBox.addPoint(x, y);\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n    }\n  }\n\n  static pathC(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getPoint('x1', 'y1');\n    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathC(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathC(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, point);\n    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathS(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var point = pathParser.getReflectedControlPoint();\n    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathS(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathS(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, point);\n    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathQ(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathQ(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathQ(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathT(pathParser) {\n    var {\n      current\n    } = pathParser;\n    var controlPoint = pathParser.getReflectedControlPoint();\n    pathParser.control = controlPoint;\n    var currentPoint = pathParser.getAsCurrentPoint();\n    return {\n      current,\n      controlPoint,\n      currentPoint\n    };\n  }\n\n  pathT(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      current,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathT(pathParser);\n    pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n    if (ctx) {\n      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    }\n  }\n\n  static pathA(pathParser) {\n    var {\n      current,\n      command\n    } = pathParser;\n    var {\n      rX,\n      rY,\n      xRot,\n      lArcFlag,\n      sweepFlag\n    } = command;\n    var xAxisRotation = xRot * (Math.PI / 180.0);\n    var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n    // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n    // x1', y1'\n\n    var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n    var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n    if (l > 1) {\n      rX *= Math.sqrt(l);\n      rY *= Math.sqrt(l);\n    } // cx', cy'\n\n\n    var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n    if (isNaN(s)) {\n      s = 0;\n    }\n\n    var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n    var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n    var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n    // angle delta\n\n    var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n    var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n    var ad = vectorsAngle(u, v); // Δθ\n\n    if (vectorsRatio(u, v) <= -1) {\n      ad = Math.PI;\n    }\n\n    if (vectorsRatio(u, v) >= 1) {\n      ad = 0;\n    }\n\n    return {\n      currentPoint,\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    };\n  }\n\n  pathA(ctx, boundingBox) {\n    var {\n      pathParser\n    } = this;\n    var {\n      currentPoint,\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    } = PathElement.pathA(pathParser); // for markers\n\n    var dir = 1 - sweepFlag ? 1.0 : -1.0;\n    var ah = a1 + dir * (ad / 2.0);\n    var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n    pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n    pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n    boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n    if (ctx && !isNaN(a1) && !isNaN(ad)) {\n      var r = rX > rY ? rX : rY;\n      var sx = rX > rY ? 1 : rX / rY;\n      var sy = rX > rY ? rY / rX : 1;\n      ctx.translate(centp.x, centp.y);\n      ctx.rotate(xAxisRotation);\n      ctx.scale(sx, sy);\n      ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n      ctx.scale(1 / sx, 1 / sy);\n      ctx.rotate(-xAxisRotation);\n      ctx.translate(-centp.x, -centp.y);\n    }\n  }\n\n  static pathZ(pathParser) {\n    pathParser.current = pathParser.start;\n  }\n\n  pathZ(ctx, boundingBox) {\n    PathElement.pathZ(this.pathParser);\n\n    if (ctx) {\n      // only close path if it is not a straight line\n      if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n        ctx.closePath();\n      }\n    }\n  }\n\n}\n\nclass GlyphElement extends PathElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'glyph';\n    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n    this.unicode = this.getAttribute('unicode').getString();\n    this.arabicForm = this.getAttribute('arabic-form').getString();\n  }\n\n}\n\nclass TextElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, new.target === TextElement ? true : captureTextNodes);\n    this.type = 'text';\n    this.x = 0;\n    this.y = 0;\n    this.measureCache = -1;\n  }\n\n  setContext(ctx) {\n    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    super.setContext(ctx, fromMeasure);\n    var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n    if (textBaseline) {\n      ctx.textBaseline = textBaseline;\n    }\n  }\n\n  initializeCoordinates() {\n    this.x = 0;\n    this.y = 0;\n    this.leafTexts = [];\n    this.textChunkStart = 0;\n    this.minX = Number.POSITIVE_INFINITY;\n    this.maxX = Number.NEGATIVE_INFINITY;\n  }\n\n  getBoundingBox(ctx) {\n    if (this.type !== 'text') {\n      return this.getTElementBoundingBox(ctx);\n    } // first, calculate child positions\n\n\n    this.initializeCoordinates();\n    this.adjustChildCoordinatesRecursive(ctx);\n    var boundingBox = null; // then calculate bounding box\n\n    this.children.forEach((_, i) => {\n      var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n      if (!boundingBox) {\n        boundingBox = childBoundingBox;\n      } else {\n        boundingBox.addBoundingBox(childBoundingBox);\n      }\n    });\n    return boundingBox;\n  }\n\n  getFontSize() {\n    var {\n      document,\n      parent\n    } = this;\n    var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n    var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n    return fontSize;\n  }\n\n  getTElementBoundingBox(ctx) {\n    var fontSize = this.getFontSize();\n    return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n  }\n\n  getGlyph(font, text, i) {\n    var char = text[i];\n    var glyph = null;\n\n    if (font.isArabic) {\n      var len = text.length;\n      var prevChar = text[i - 1];\n      var nextChar = text[i + 1];\n      var arabicForm = 'isolated';\n\n      if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n        arabicForm = 'terminal';\n      }\n\n      if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n        arabicForm = 'medial';\n      }\n\n      if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n        arabicForm = 'initial';\n      }\n\n      if (typeof font.glyphs[char] !== 'undefined') {\n        // NEED TEST\n        var maybeGlyph = font.glyphs[char];\n        glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n      }\n    } else {\n      glyph = font.glyphs[char];\n    }\n\n    if (!glyph) {\n      glyph = font.missingGlyph;\n    }\n\n    return glyph;\n  }\n\n  getText() {\n    return '';\n  }\n\n  getTextFromNode(node) {\n    var textNode = node || this.node;\n    var childNodes = Array.from(textNode.parentNode.childNodes);\n    var index = childNodes.indexOf(textNode);\n    var lastIndex = childNodes.length - 1;\n    var text = compressSpaces( // textNode.value\n    // || textNode.text\n    textNode.textContent || '');\n\n    if (index === 0) {\n      text = trimLeft(text);\n    }\n\n    if (index === lastIndex) {\n      text = trimRight(text);\n    }\n\n    return text;\n  }\n\n  renderChildren(ctx) {\n    if (this.type !== 'text') {\n      this.renderTElementChildren(ctx);\n      return;\n    } // first, calculate child positions\n\n\n    this.initializeCoordinates();\n    this.adjustChildCoordinatesRecursive(ctx); // then render\n\n    this.children.forEach((_, i) => {\n      this.renderChild(ctx, this, this, i);\n    });\n    var {\n      mouse\n    } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n    if (mouse.isWorking()) {\n      mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n    }\n  }\n\n  renderTElementChildren(ctx) {\n    var {\n      document,\n      parent\n    } = this;\n    var renderText = this.getText();\n    var customFont = parent.getStyle('font-family').getDefinition();\n\n    if (customFont) {\n      var {\n        unitsPerEm\n      } = customFont.fontFace;\n      var ctxFont = Font.parse(document.ctx.font);\n      var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n      var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n      var scale = fontSize / unitsPerEm;\n      var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n      var dx = toNumbers(parent.getAttribute('dx').getString());\n      var len = text.length;\n\n      for (var i = 0; i < len; i++) {\n        var glyph = this.getGlyph(customFont, text, i);\n        ctx.translate(this.x, this.y);\n        ctx.scale(scale, -scale);\n        var lw = ctx.lineWidth;\n        ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n        if (fontStyle === 'italic') {\n          ctx.transform(1, 0, .4, 1, 0, 0);\n        }\n\n        glyph.render(ctx);\n\n        if (fontStyle === 'italic') {\n          ctx.transform(1, 0, -.4, 1, 0, 0);\n        }\n\n        ctx.lineWidth = lw;\n        ctx.scale(1 / scale, -1 / scale);\n        ctx.translate(-this.x, -this.y);\n        this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n          this.x += dx[i];\n        }\n      }\n\n      return;\n    }\n\n    var {\n      x,\n      y\n    } = this; // NEED TEST\n    // if (ctx.paintOrder === 'stroke') {\n    // \tif (ctx.strokeStyle) {\n    // \t\tctx.strokeText(renderText, x, y);\n    // \t}\n    // \tif (ctx.fillStyle) {\n    // \t\tctx.fillText(renderText, x, y);\n    // \t}\n    // } else {\n\n    if (ctx.fillStyle) {\n      ctx.fillText(renderText, x, y);\n    }\n\n    if (ctx.strokeStyle) {\n      ctx.strokeText(renderText, x, y);\n    } // }\n\n  }\n\n  applyAnchoring() {\n    if (this.textChunkStart >= this.leafTexts.length) {\n      return;\n    } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n    // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n    // Vertical text is not supported.\n\n\n    var firstElement = this.leafTexts[this.textChunkStart];\n    var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n    var isRTL = false; // we treat RTL like LTR\n\n    var shift = 0;\n\n    if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n      shift = firstElement.x - this.minX;\n    } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n      shift = firstElement.x - this.maxX;\n    } else {\n      shift = firstElement.x - (this.minX + this.maxX) / 2;\n    }\n\n    for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n      this.leafTexts[i].x += shift;\n    } // start new chunk\n\n\n    this.minX = Number.POSITIVE_INFINITY;\n    this.maxX = Number.NEGATIVE_INFINITY;\n    this.textChunkStart = this.leafTexts.length;\n  }\n\n  adjustChildCoordinatesRecursive(ctx) {\n    this.children.forEach((_, i) => {\n      this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n    });\n    this.applyAnchoring();\n  }\n\n  adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n\n    if (child.children.length > 0) {\n      child.children.forEach((_, i) => {\n        textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n      });\n    } else {\n      // only leafs are relevant\n      this.adjustChildCoordinates(ctx, textParent, parent, i);\n    }\n  }\n\n  adjustChildCoordinates(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n\n    if (typeof child.measureText !== 'function') {\n      return child;\n    }\n\n    ctx.save();\n    child.setContext(ctx, true);\n    var xAttr = child.getAttribute('x');\n    var yAttr = child.getAttribute('y');\n    var dxAttr = child.getAttribute('dx');\n    var dyAttr = child.getAttribute('dy');\n    var customFont = child.getStyle('font-family').getDefinition();\n    var isRTL = Boolean(customFont) && customFont.isRTL;\n\n    if (i === 0) {\n      // First children inherit attributes from parent(s). Positional attributes\n      // are only inherited from a parent to it's first child.\n      if (!xAttr.hasValue()) {\n        xAttr.setValue(child.getInheritedAttribute('x'));\n      }\n\n      if (!yAttr.hasValue()) {\n        yAttr.setValue(child.getInheritedAttribute('y'));\n      }\n\n      if (!dxAttr.hasValue()) {\n        dxAttr.setValue(child.getInheritedAttribute('dx'));\n      }\n\n      if (!dyAttr.hasValue()) {\n        dyAttr.setValue(child.getInheritedAttribute('dy'));\n      }\n    }\n\n    var width = child.measureText(ctx);\n\n    if (isRTL) {\n      textParent.x -= width;\n    }\n\n    if (xAttr.hasValue()) {\n      // an \"x\" attribute marks the start of a new chunk\n      textParent.applyAnchoring();\n      child.x = xAttr.getPixels('x');\n\n      if (dxAttr.hasValue()) {\n        child.x += dxAttr.getPixels('x');\n      }\n    } else {\n      if (dxAttr.hasValue()) {\n        textParent.x += dxAttr.getPixels('x');\n      }\n\n      child.x = textParent.x;\n    }\n\n    textParent.x = child.x;\n\n    if (!isRTL) {\n      textParent.x += width;\n    }\n\n    if (yAttr.hasValue()) {\n      child.y = yAttr.getPixels('y');\n\n      if (dyAttr.hasValue()) {\n        child.y += dyAttr.getPixels('y');\n      }\n    } else {\n      if (dyAttr.hasValue()) {\n        textParent.y += dyAttr.getPixels('y');\n      }\n\n      child.y = textParent.y;\n    }\n\n    textParent.y = child.y; // update the current chunk and it's bounds\n\n    textParent.leafTexts.push(child);\n    textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n    textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n    child.clearContext(ctx);\n    ctx.restore();\n    return child;\n  }\n\n  getChildBoundingBox(ctx, textParent, parent, i) {\n    var child = parent.children[i]; // not a text node?\n\n    if (typeof child.getBoundingBox !== 'function') {\n      return null;\n    }\n\n    var boundingBox = child.getBoundingBox(ctx);\n\n    if (!boundingBox) {\n      return null;\n    }\n\n    child.children.forEach((_, i) => {\n      var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n      boundingBox.addBoundingBox(childBoundingBox);\n    });\n    return boundingBox;\n  }\n\n  renderChild(ctx, textParent, parent, i) {\n    var child = parent.children[i];\n    child.render(ctx);\n    child.children.forEach((_, i) => {\n      textParent.renderChild(ctx, textParent, child, i);\n    });\n  }\n\n  measureText(ctx) {\n    var {\n      measureCache\n    } = this;\n\n    if (~measureCache) {\n      return measureCache;\n    }\n\n    var renderText = this.getText();\n    var measure = this.measureTargetText(ctx, renderText);\n    this.measureCache = measure;\n    return measure;\n  }\n\n  measureTargetText(ctx, targetText) {\n    if (!targetText.length) {\n      return 0;\n    }\n\n    var {\n      parent\n    } = this;\n    var customFont = parent.getStyle('font-family').getDefinition();\n\n    if (customFont) {\n      var fontSize = this.getFontSize();\n      var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n      var dx = toNumbers(parent.getAttribute('dx').getString());\n      var len = text.length;\n      var _measure = 0;\n\n      for (var i = 0; i < len; i++) {\n        var glyph = this.getGlyph(customFont, text, i);\n        _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n          _measure += dx[i];\n        }\n      }\n\n      return _measure;\n    }\n\n    if (!ctx.measureText) {\n      return targetText.length * 10;\n    }\n\n    ctx.save();\n    this.setContext(ctx, true);\n    var {\n      width: measure\n    } = ctx.measureText(targetText);\n    this.clearContext(ctx);\n    ctx.restore();\n    return measure;\n  }\n  /**\r\n   * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n   * are only inherited from a parent to its first child.\r\n   * @param name - The attribute name.\r\n   * @returns The attribute value or null.\r\n   */\n\n\n  getInheritedAttribute(name) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n    var current = this;\n\n    while (current instanceof TextElement && current.isFirstChild()) {\n      var parentAttr = current.parent.getAttribute(name);\n\n      if (parentAttr.hasValue(true)) {\n        return parentAttr.getValue('0');\n      }\n\n      current = current.parent;\n    }\n\n    return null;\n  }\n\n}\n\nclass TSpanElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n    this.type = 'tspan'; // if this node has children, then they own the text\n\n    this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n  }\n\n  getText() {\n    return this.text;\n  }\n\n}\n\nclass TextNode extends TSpanElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'textNode';\n  }\n\n}\n\nclass SVGElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'svg';\n    this.root = false;\n  }\n\n  setContext(ctx) {\n    var _this$node$parentNode;\n\n    var {\n      document\n    } = this;\n    var {\n      screen,\n      window\n    } = document;\n    var canvas = ctx.canvas;\n    screen.setDefaults(ctx);\n\n    if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n      ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n      var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n      if (fontSizeProp.hasValue()) {\n        document.rootEmSize = fontSizeProp.getPixels('y');\n        document.emSize = document.rootEmSize;\n      }\n    } // create new view port\n\n\n    if (!this.getAttribute('x').hasValue()) {\n      this.getAttribute('x', true).setValue(0);\n    }\n\n    if (!this.getAttribute('y').hasValue()) {\n      this.getAttribute('y', true).setValue(0);\n    }\n\n    var {\n      width,\n      height\n    } = screen.viewPort;\n\n    if (!this.getStyle('width').hasValue()) {\n      this.getStyle('width', true).setValue('100%');\n    }\n\n    if (!this.getStyle('height').hasValue()) {\n      this.getStyle('height', true).setValue('100%');\n    }\n\n    if (!this.getStyle('color').hasValue()) {\n      this.getStyle('color', true).setValue('black');\n    }\n\n    var refXAttr = this.getAttribute('refX');\n    var refYAttr = this.getAttribute('refY');\n    var viewBoxAttr = this.getAttribute('viewBox');\n    var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n    var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n    var minX = 0;\n    var minY = 0;\n    var clipX = 0;\n    var clipY = 0;\n\n    if (viewBox) {\n      minX = viewBox[0];\n      minY = viewBox[1];\n    }\n\n    if (!this.root) {\n      width = this.getStyle('width').getPixels('x');\n      height = this.getStyle('height').getPixels('y');\n\n      if (this.type === 'marker') {\n        clipX = minX;\n        clipY = minY;\n        minX = 0;\n        minY = 0;\n      }\n    }\n\n    screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n    // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n    if (this.node // is not temporary SVGElement\n    && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n      this.getStyle('transform-origin', true, true).setValue('50% 50%');\n    }\n\n    super.setContext(ctx);\n    ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n    if (viewBox) {\n      width = viewBox[2];\n      height = viewBox[3];\n    }\n\n    document.setViewBox({\n      ctx,\n      aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n      width: screen.viewPort.width,\n      desiredWidth: width,\n      height: screen.viewPort.height,\n      desiredHeight: height,\n      minX,\n      minY,\n      refX: refXAttr.getValue(),\n      refY: refYAttr.getValue(),\n      clip,\n      clipX,\n      clipY\n    });\n\n    if (viewBox) {\n      screen.viewPort.removeCurrent();\n      screen.viewPort.setCurrent(width, height);\n    }\n  }\n\n  clearContext(ctx) {\n    super.clearContext(ctx);\n    this.document.screen.viewPort.removeCurrent();\n  }\n  /**\r\n   * Resize SVG to fit in given size.\r\n   * @param width\r\n   * @param height\r\n   * @param preserveAspectRatio\r\n   */\n\n\n  resize(width) {\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var widthAttr = this.getAttribute('width', true);\n    var heightAttr = this.getAttribute('height', true);\n    var viewBoxAttr = this.getAttribute('viewBox');\n    var styleAttr = this.getAttribute('style');\n    var originWidth = widthAttr.getNumber(0);\n    var originHeight = heightAttr.getNumber(0);\n\n    if (preserveAspectRatio) {\n      if (typeof preserveAspectRatio === 'string') {\n        this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n      } else {\n        var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n        if (preserveAspectRatioAttr.hasValue()) {\n          preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n        }\n      }\n    }\n\n    widthAttr.setValue(width);\n    heightAttr.setValue(height);\n\n    if (!viewBoxAttr.hasValue()) {\n      viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n    }\n\n    if (styleAttr.hasValue()) {\n      var widthStyle = this.getStyle('width');\n      var heightStyle = this.getStyle('height');\n\n      if (widthStyle.hasValue()) {\n        widthStyle.setValue(\"\".concat(width, \"px\"));\n      }\n\n      if (heightStyle.hasValue()) {\n        heightStyle.setValue(\"\".concat(height, \"px\"));\n      }\n    }\n  }\n\n}\n\nclass RectElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'rect';\n  }\n\n  path(ctx) {\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width', false, true).getPixels('x');\n    var height = this.getStyle('height', false, true).getPixels('y');\n    var rxAttr = this.getAttribute('rx');\n    var ryAttr = this.getAttribute('ry');\n    var rx = rxAttr.getPixels('x');\n    var ry = ryAttr.getPixels('y');\n\n    if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n      ry = rx;\n    }\n\n    if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n      rx = ry;\n    }\n\n    rx = Math.min(rx, width / 2.0);\n    ry = Math.min(ry, height / 2.0);\n\n    if (ctx) {\n      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n      ctx.beginPath(); // always start the path so we don't fill prior paths\n\n      if (height > 0 && width > 0) {\n        ctx.moveTo(x + rx, y);\n        ctx.lineTo(x + width - rx, y);\n        ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n        ctx.lineTo(x + width, y + height - ry);\n        ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n        ctx.lineTo(x + rx, y + height);\n        ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n        ctx.lineTo(x, y + ry);\n        ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n        ctx.closePath();\n      }\n    }\n\n    return new BoundingBox(x, y, x + width, y + height);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass CircleElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'circle';\n  }\n\n  path(ctx) {\n    var cx = this.getAttribute('cx').getPixels('x');\n    var cy = this.getAttribute('cy').getPixels('y');\n    var r = this.getAttribute('r').getPixels();\n\n    if (ctx && r > 0) {\n      ctx.beginPath();\n      ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n      ctx.closePath();\n    }\n\n    return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass EllipseElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'ellipse';\n  }\n\n  path(ctx) {\n    var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n    var rx = this.getAttribute('rx').getPixels('x');\n    var ry = this.getAttribute('ry').getPixels('y');\n    var cx = this.getAttribute('cx').getPixels('x');\n    var cy = this.getAttribute('cy').getPixels('y');\n\n    if (ctx && rx > 0 && ry > 0) {\n      ctx.beginPath();\n      ctx.moveTo(cx + rx, cy);\n      ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n      ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n      ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n      ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n      ctx.closePath();\n    }\n\n    return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n  }\n\n  getMarkers() {\n    return null;\n  }\n\n}\n\nclass LineElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'line';\n  }\n\n  getPoints() {\n    return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n  }\n\n  path(ctx) {\n    var [{\n      x: x0,\n      y: y0\n    }, {\n      x: x1,\n      y: y1\n    }] = this.getPoints();\n\n    if (ctx) {\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n      ctx.lineTo(x1, y1);\n    }\n\n    return new BoundingBox(x0, y0, x1, y1);\n  }\n\n  getMarkers() {\n    var [p0, p1] = this.getPoints();\n    var a = p0.angleTo(p1);\n    return [[p0, a], [p1, a]];\n  }\n\n}\n\nclass PolylineElement extends PathElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'polyline';\n    this.points = [];\n    this.points = Point.parsePath(this.getAttribute('points').getString());\n  }\n\n  path(ctx) {\n    var {\n      points\n    } = this;\n    var [{\n      x: x0,\n      y: y0\n    }] = points;\n    var boundingBox = new BoundingBox(x0, y0);\n\n    if (ctx) {\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n    }\n\n    points.forEach(_ref => {\n      var {\n        x,\n        y\n      } = _ref;\n      boundingBox.addPoint(x, y);\n\n      if (ctx) {\n        ctx.lineTo(x, y);\n      }\n    });\n    return boundingBox;\n  }\n\n  getMarkers() {\n    var {\n      points\n    } = this;\n    var lastIndex = points.length - 1;\n    var markers = [];\n    points.forEach((point, i) => {\n      if (i === lastIndex) {\n        return;\n      }\n\n      markers.push([point, point.angleTo(points[i + 1])]);\n    });\n\n    if (markers.length > 0) {\n      markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n    }\n\n    return markers;\n  }\n\n}\n\nclass PolygonElement extends PolylineElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'polygon';\n  }\n\n  path(ctx) {\n    var boundingBox = super.path(ctx);\n    var [{\n      x,\n      y\n    }] = this.points;\n\n    if (ctx) {\n      ctx.lineTo(x, y);\n      ctx.closePath();\n    }\n\n    return boundingBox;\n  }\n\n}\n\nclass PatternElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'pattern';\n  }\n\n  createPattern(ctx, _, parentOpacityProp) {\n    var width = this.getStyle('width').getPixels('x', true);\n    var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n    var patternSvg = new SVGElement(this.document, null);\n    patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n    patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n    patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n    patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n    patternSvg.children = this.children;\n    var patternCanvas = this.document.createCanvas(width, height);\n    var patternCtx = patternCanvas.getContext('2d');\n    var xAttr = this.getAttribute('x');\n    var yAttr = this.getAttribute('y');\n\n    if (xAttr.hasValue() && yAttr.hasValue()) {\n      patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n    }\n\n    if (parentOpacityProp.hasValue()) {\n      this.styles['fill-opacity'] = parentOpacityProp;\n    } else {\n      Reflect.deleteProperty(this.styles, 'fill-opacity');\n    } // render 3x3 grid so when we transform there's no white space on edges\n\n\n    for (var x = -1; x <= 1; x++) {\n      for (var y = -1; y <= 1; y++) {\n        patternCtx.save();\n        patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n        patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n        patternSvg.render(patternCtx);\n        patternCtx.restore();\n      }\n    }\n\n    var pattern = ctx.createPattern(patternCanvas, 'repeat');\n    return pattern;\n  }\n\n}\n\nclass MarkerElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'marker';\n  }\n\n  render(ctx, point, angle) {\n    if (!point) {\n      return;\n    }\n\n    var {\n      x,\n      y\n    } = point;\n    var orient = this.getAttribute('orient').getString('auto');\n    var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n    ctx.translate(x, y);\n\n    if (orient === 'auto') {\n      ctx.rotate(angle);\n    }\n\n    if (markerUnits === 'strokeWidth') {\n      ctx.scale(ctx.lineWidth, ctx.lineWidth);\n    }\n\n    ctx.save(); // render me using a temporary svg element\n\n    var markerSvg = new SVGElement(this.document, null);\n    markerSvg.type = this.type;\n    markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n    markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n    markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n    markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n    markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n    markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n    markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n    markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n    markerSvg.children = this.children;\n    markerSvg.render(ctx);\n    ctx.restore();\n\n    if (markerUnits === 'strokeWidth') {\n      ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n    }\n\n    if (orient === 'auto') {\n      ctx.rotate(-angle);\n    }\n\n    ctx.translate(-x, -y);\n  }\n\n}\n\nclass DefsElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'defs';\n  }\n\n  render() {// NOOP\n  }\n\n}\n\nclass GElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'g';\n  }\n\n  getBoundingBox(ctx) {\n    var boundingBox = new BoundingBox();\n    this.children.forEach(child => {\n      boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n    });\n    return boundingBox;\n  }\n\n}\n\nclass GradientElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.attributesToInherit = ['gradientUnits'];\n    this.stops = [];\n    var {\n      stops,\n      children\n    } = this;\n    children.forEach(child => {\n      if (child.type === 'stop') {\n        stops.push(child);\n      }\n    });\n  }\n\n  getGradientUnits() {\n    return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n  }\n\n  createGradient(ctx, element, parentOpacityProp) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n    var stopsContainer = this;\n\n    if (this.getHrefAttribute().hasValue()) {\n      stopsContainer = this.getHrefAttribute().getDefinition();\n      this.inheritStopContainer(stopsContainer);\n    }\n\n    var {\n      stops\n    } = stopsContainer;\n    var gradient = this.getGradient(ctx, element);\n\n    if (!gradient) {\n      return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n    }\n\n    stops.forEach(stop => {\n      gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n    });\n\n    if (this.getAttribute('gradientTransform').hasValue()) {\n      // render as transformed pattern on temporary canvas\n      var {\n        document\n      } = this;\n      var {\n        MAX_VIRTUAL_PIXELS,\n        viewPort\n      } = document.screen;\n      var [rootView] = viewPort.viewPorts;\n      var rect = new RectElement(document, null);\n      rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n      rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n      rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n      rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n      var group = new GElement(document, null);\n      group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n      group.children = [rect];\n      var patternSvg = new SVGElement(document, null);\n      patternSvg.attributes.x = new Property(document, 'x', 0);\n      patternSvg.attributes.y = new Property(document, 'y', 0);\n      patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n      patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n      patternSvg.children = [group];\n      var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n      var patternCtx = patternCanvas.getContext('2d');\n      patternCtx.fillStyle = gradient;\n      patternSvg.render(patternCtx);\n      return patternCtx.createPattern(patternCanvas, 'no-repeat');\n    }\n\n    return gradient;\n  }\n\n  inheritStopContainer(stopsContainer) {\n    this.attributesToInherit.forEach(attributeToInherit => {\n      if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n        this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n      }\n    });\n  }\n\n  addParentOpacity(parentOpacityProp, color) {\n    if (parentOpacityProp.hasValue()) {\n      var colorProp = new Property(this.document, 'color', color);\n      return colorProp.addOpacity(parentOpacityProp).getColor();\n    }\n\n    return color;\n  }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'linearGradient';\n    this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n  }\n\n  getGradient(ctx, element) {\n    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n    var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n    if (isBoundingBoxUnits && !boundingBox) {\n      return null;\n    }\n\n    if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n      this.getAttribute('x1', true).setValue(0);\n      this.getAttribute('y1', true).setValue(0);\n      this.getAttribute('x2', true).setValue(1);\n      this.getAttribute('y2', true).setValue(0);\n    }\n\n    var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n    var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n    var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n    var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n    if (x1 === x2 && y1 === y2) {\n      return null;\n    }\n\n    return ctx.createLinearGradient(x1, y1, x2, y2);\n  }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'radialGradient';\n    this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n  }\n\n  getGradient(ctx, element) {\n    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n    var boundingBox = element.getBoundingBox(ctx);\n\n    if (isBoundingBoxUnits && !boundingBox) {\n      return null;\n    }\n\n    if (!this.getAttribute('cx').hasValue()) {\n      this.getAttribute('cx', true).setValue('50%');\n    }\n\n    if (!this.getAttribute('cy').hasValue()) {\n      this.getAttribute('cy', true).setValue('50%');\n    }\n\n    if (!this.getAttribute('r').hasValue()) {\n      this.getAttribute('r', true).setValue('50%');\n    }\n\n    var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n    var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n    var fx = cx;\n    var fy = cy;\n\n    if (this.getAttribute('fx').hasValue()) {\n      fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n    }\n\n    if (this.getAttribute('fy').hasValue()) {\n      fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n    }\n\n    var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n    var fr = this.getAttribute('fr').getPixels();\n    return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n  }\n\n}\n\nclass StopElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'stop';\n    var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n    var stopOpacity = this.getStyle('stop-opacity');\n    var stopColor = this.getStyle('stop-color', true);\n\n    if (stopColor.getString() === '') {\n      stopColor.setValue('#000');\n    }\n\n    if (stopOpacity.hasValue()) {\n      stopColor = stopColor.addOpacity(stopOpacity);\n    }\n\n    this.offset = offset;\n    this.color = stopColor.getColor();\n  }\n\n}\n\nclass AnimateElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'animate';\n    this.duration = 0;\n    this.initialValue = null;\n    this.initialUnits = '';\n    this.removed = false;\n    this.frozen = false;\n    document.screen.animations.push(this);\n    this.begin = this.getAttribute('begin').getMilliseconds();\n    this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n    this.from = this.getAttribute('from');\n    this.to = this.getAttribute('to');\n    this.values = new Property(document, 'values', null);\n    var valuesAttr = this.getAttribute('values');\n\n    if (valuesAttr.hasValue()) {\n      this.values.setValue(valuesAttr.getString().split(';'));\n    }\n  }\n\n  getProperty() {\n    var attributeType = this.getAttribute('attributeType').getString();\n    var attributeName = this.getAttribute('attributeName').getString();\n\n    if (attributeType === 'CSS') {\n      return this.parent.getStyle(attributeName, true);\n    }\n\n    return this.parent.getAttribute(attributeName, true);\n  }\n\n  calcValue() {\n    var {\n      initialUnits\n    } = this;\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress(); // tween value linearly\n\n    var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n    if (initialUnits === '%') {\n      newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n    }\n\n    return \"\".concat(newValue).concat(initialUnits);\n  }\n\n  update(delta) {\n    var {\n      parent\n    } = this;\n    var prop = this.getProperty(); // set initial value\n\n    if (!this.initialValue) {\n      this.initialValue = prop.getString();\n      this.initialUnits = prop.getUnits();\n    } // if we're past the end time\n\n\n    if (this.duration > this.maxDuration) {\n      var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n      if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n        this.duration = 0;\n      } else if (fill === 'freeze' && !this.frozen) {\n        this.frozen = true;\n        parent.animationFrozen = true;\n        parent.animationFrozenValue = prop.getString();\n      } else if (fill === 'remove' && !this.removed) {\n        this.removed = true;\n        prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n        return true;\n      }\n\n      return false;\n    }\n\n    this.duration += delta; // if we're past the begin time\n\n    var updated = false;\n\n    if (this.begin < this.duration) {\n      var newValue = this.calcValue(); // tween\n\n      var typeAttr = this.getAttribute('type');\n\n      if (typeAttr.hasValue()) {\n        // for transform, etc.\n        var type = typeAttr.getString();\n        newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n      }\n\n      prop.setValue(newValue);\n      updated = true;\n    }\n\n    return updated;\n  }\n\n  getProgress() {\n    var {\n      document,\n      values\n    } = this;\n    var result = {\n      progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n    };\n\n    if (values.hasValue()) {\n      var p = result.progress * (values.getValue().length - 1);\n      var lb = Math.floor(p);\n      var ub = Math.ceil(p);\n      result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n      result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n      result.progress = (p - lb) / (ub - lb);\n    } else {\n      result.from = this.from;\n      result.to = this.to;\n    }\n\n    return result;\n  }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'animateColor';\n  }\n\n  calcValue() {\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress();\n    var colorFrom = new RGBColor(from.getColor());\n    var colorTo = new RGBColor(to.getColor());\n\n    if (colorFrom.ok && colorTo.ok) {\n      // tween color linearly\n      var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n      var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n      var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n      return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n    }\n\n    return this.getAttribute('from').getColor();\n  }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'animateTransform';\n  }\n\n  calcValue() {\n    var {\n      progress,\n      from,\n      to\n    } = this.getProgress(); // tween value linearly\n\n    var transformFrom = toNumbers(from.getString());\n    var transformTo = toNumbers(to.getString());\n    var newValue = transformFrom.map((from, i) => {\n      var to = transformTo[i];\n      return from + (to - from) * progress;\n    }).join(' ');\n    return newValue;\n  }\n\n}\n\nclass FontElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'font';\n    this.glyphs = Object.create(null);\n    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n    var {\n      definitions\n    } = document;\n    var {\n      children\n    } = this;\n\n    for (var child of children) {\n      switch (child.type) {\n        case 'font-face':\n          {\n            this.fontFace = child;\n            var fontFamilyStyle = child.getStyle('font-family');\n\n            if (fontFamilyStyle.hasValue()) {\n              definitions[fontFamilyStyle.getString()] = this;\n            }\n\n            break;\n          }\n\n        case 'missing-glyph':\n          this.missingGlyph = child;\n          break;\n\n        case 'glyph':\n          {\n            var glyph = child;\n\n            if (glyph.arabicForm) {\n              this.isRTL = true;\n              this.isArabic = true;\n\n              if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n                this.glyphs[glyph.unicode] = Object.create(null);\n              }\n\n              this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n            } else {\n              this.glyphs[glyph.unicode] = glyph;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n\n  render() {// NO RENDER\n  }\n\n}\n\nclass FontFaceElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'font-face';\n    this.ascent = this.getAttribute('ascent').getNumber();\n    this.descent = this.getAttribute('descent').getNumber();\n    this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n  }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'missing-glyph';\n    this.horizAdvX = 0;\n  }\n\n}\n\nclass TRefElement extends TextElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'tref';\n  }\n\n  getText() {\n    var element = this.getHrefAttribute().getDefinition();\n\n    if (element) {\n      var firstChild = element.children[0];\n\n      if (firstChild) {\n        return firstChild.getText();\n      }\n    }\n\n    return '';\n  }\n\n}\n\nclass AElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'a';\n    var {\n      childNodes\n    } = node;\n    var firstChild = childNodes[0];\n    var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n    this.hasText = hasText;\n    this.text = hasText ? this.getTextFromNode(firstChild) : '';\n  }\n\n  getText() {\n    return this.text;\n  }\n\n  renderChildren(ctx) {\n    if (this.hasText) {\n      // render as text element\n      super.renderChildren(ctx);\n      var {\n        document,\n        x,\n        y\n      } = this;\n      var {\n        mouse\n      } = document.screen;\n      var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n      if (mouse.isWorking()) {\n        mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n      }\n    } else if (this.children.length > 0) {\n      // render as temporary group\n      var g = new GElement(this.document, null);\n      g.children = this.children;\n      g.parent = this;\n      g.render(ctx);\n    }\n  }\n\n  onClick() {\n    var {\n      window\n    } = this.document;\n\n    if (window) {\n      window.open(this.getHrefAttribute().getString());\n    }\n  }\n\n  onMouseMove() {\n    var ctx = this.document.ctx;\n    ctx.canvas.style.cursor = 'pointer';\n  }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'textPath';\n    this.textWidth = 0;\n    this.textHeight = 0;\n    this.pathLength = -1;\n    this.glyphInfo = null;\n    this.letterSpacingCache = [];\n    this.measuresCache = new Map([['', 0]]);\n    var pathElement = this.getHrefAttribute().getDefinition();\n    this.text = this.getTextFromNode();\n    this.dataArray = this.parsePathData(pathElement);\n  }\n\n  getText() {\n    return this.text;\n  }\n\n  path(ctx) {\n    var {\n      dataArray\n    } = this;\n\n    if (ctx) {\n      ctx.beginPath();\n    }\n\n    dataArray.forEach(_ref => {\n      var {\n        type,\n        points\n      } = _ref;\n\n      switch (type) {\n        case PathParser.LINE_TO:\n          if (ctx) {\n            ctx.lineTo(points[0], points[1]);\n          }\n\n          break;\n\n        case PathParser.MOVE_TO:\n          if (ctx) {\n            ctx.moveTo(points[0], points[1]);\n          }\n\n          break;\n\n        case PathParser.CURVE_TO:\n          if (ctx) {\n            ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n          }\n\n          break;\n\n        case PathParser.QUAD_TO:\n          if (ctx) {\n            ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n          }\n\n          break;\n\n        case PathParser.ARC:\n          {\n            var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n            var r = rx > ry ? rx : ry;\n            var scaleX = rx > ry ? 1 : rx / ry;\n            var scaleY = rx > ry ? ry / rx : 1;\n\n            if (ctx) {\n              ctx.translate(cx, cy);\n              ctx.rotate(psi);\n              ctx.scale(scaleX, scaleY);\n              ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n              ctx.scale(1 / scaleX, 1 / scaleY);\n              ctx.rotate(-psi);\n              ctx.translate(-cx, -cy);\n            }\n\n            break;\n          }\n\n        case PathParser.CLOSE_PATH:\n          if (ctx) {\n            ctx.closePath();\n          }\n\n          break;\n      }\n    });\n  }\n\n  renderChildren(ctx) {\n    this.setTextData(ctx);\n    ctx.save();\n    var textDecoration = this.parent.getStyle('text-decoration').getString();\n    var fontSize = this.getFontSize();\n    var {\n      glyphInfo\n    } = this;\n    var fill = ctx.fillStyle;\n\n    if (textDecoration === 'underline') {\n      ctx.beginPath();\n    }\n\n    glyphInfo.forEach((glyph, i) => {\n      var {\n        p0,\n        p1,\n        rotation,\n        text: partialText\n      } = glyph;\n      ctx.save();\n      ctx.translate(p0.x, p0.y);\n      ctx.rotate(rotation);\n\n      if (ctx.fillStyle) {\n        ctx.fillText(partialText, 0, 0);\n      }\n\n      if (ctx.strokeStyle) {\n        ctx.strokeText(partialText, 0, 0);\n      }\n\n      ctx.restore();\n\n      if (textDecoration === 'underline') {\n        if (i === 0) {\n          ctx.moveTo(p0.x, p0.y + fontSize / 8);\n        }\n\n        ctx.lineTo(p1.x, p1.y + fontSize / 5);\n      } // // To assist with debugging visually, uncomment following\n      //\n      // ctx.beginPath();\n      // if (i % 2)\n      // \tctx.strokeStyle = 'red';\n      // else\n      // \tctx.strokeStyle = 'green';\n      // ctx.moveTo(p0.x, p0.y);\n      // ctx.lineTo(p1.x, p1.y);\n      // ctx.stroke();\n      // ctx.closePath();\n\n    });\n\n    if (textDecoration === 'underline') {\n      ctx.lineWidth = fontSize / 20;\n      ctx.strokeStyle = fill;\n      ctx.stroke();\n      ctx.closePath();\n    }\n\n    ctx.restore();\n  }\n\n  getLetterSpacingAt() {\n    var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    return this.letterSpacingCache[idx] || 0;\n  }\n\n  findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n    var offset = inputOffset;\n    var glyphWidth = this.measureText(ctx, c);\n\n    if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n      glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n    }\n\n    if (charI > -1) {\n      offset += this.getLetterSpacingAt(charI);\n    }\n\n    var splineStep = this.textHeight / 20;\n    var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n    var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n    var segment = {\n      p0,\n      p1\n    };\n    var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n    if (dy) {\n      var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n      var dyY = Math.cos(-rotation) * dy;\n      segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n        x: p0.x + dyX,\n        y: p0.y + dyY\n      });\n      segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n        x: p1.x + dyX,\n        y: p1.y + dyY\n      });\n    }\n\n    offset += glyphWidth;\n    return {\n      offset,\n      segment,\n      rotation\n    };\n  }\n\n  measureText(ctx, text) {\n    var {\n      measuresCache\n    } = this;\n    var targetText = text || this.getText();\n\n    if (measuresCache.has(targetText)) {\n      return measuresCache.get(targetText);\n    }\n\n    var measure = this.measureTargetText(ctx, targetText);\n    measuresCache.set(targetText, measure);\n    return measure;\n  } // This method supposes what all custom fonts already loaded.\n  // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n  // You need to call this method manually to update glyphs cache.\n\n\n  setTextData(ctx) {\n    if (this.glyphInfo) {\n      return;\n    }\n\n    var renderText = this.getText();\n    var chars = renderText.split('');\n    var spacesNumber = renderText.split(' ').length - 1;\n    var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n    var dy = this.parent.getAttribute('dy').getPixels('y');\n    var anchor = this.parent.getStyle('text-anchor').getString('start');\n    var thisSpacing = this.getStyle('letter-spacing');\n    var parentSpacing = this.parent.getStyle('letter-spacing');\n    var letterSpacing = 0;\n\n    if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n      letterSpacing = parentSpacing.getPixels();\n    } else if (thisSpacing.hasValue()) {\n      if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n        letterSpacing = thisSpacing.getPixels();\n      }\n    } // fill letter-spacing cache\n\n\n    var letterSpacingCache = [];\n    var textLen = renderText.length;\n    this.letterSpacingCache = letterSpacingCache;\n\n    for (var i = 0; i < textLen; i++) {\n      letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n    }\n\n    var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n    var textWidth = this.measureText(ctx);\n    var textFullWidth = Math.max(textWidth + dxSum, 0);\n    this.textWidth = textWidth;\n    this.textHeight = this.getFontSize();\n    this.glyphInfo = [];\n    var fullPathWidth = this.getPathLength();\n    var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n    var offset = 0;\n\n    if (anchor === 'middle' || anchor === 'center') {\n      offset = -textFullWidth / 2;\n    }\n\n    if (anchor === 'end' || anchor === 'right') {\n      offset = -textFullWidth;\n    }\n\n    offset += startOffset;\n    chars.forEach((char, i) => {\n      // Find such segment what distance between p0 and p1 is approx. width of glyph\n      var {\n        offset: nextOffset,\n        segment,\n        rotation\n      } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n      offset = nextOffset;\n\n      if (!segment.p0 || !segment.p1) {\n        return;\n      } // const width = this.getLineLength(\n      // \tsegment.p0.x,\n      // \tsegment.p0.y,\n      // \tsegment.p1.x,\n      // \tsegment.p1.y\n      // );\n      // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n      // Can foresee having a rough pair table built in that the developer can override as needed.\n      // Or use \"dx\" attribute of the <text> node as a naive replacement\n      // const kern = 0;\n      // placeholder for future implementation\n      // const midpoint = this.getPointOnLine(\n      // \tkern + width / 2.0,\n      // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n      // );\n\n\n      this.glyphInfo.push({\n        // transposeX: midpoint.x,\n        // transposeY: midpoint.y,\n        text: chars[i],\n        p0: segment.p0,\n        p1: segment.p1,\n        rotation\n      });\n    });\n  }\n\n  parsePathData(path) {\n    this.pathLength = -1; // reset path length\n\n    if (!path) {\n      return [];\n    }\n\n    var pathCommands = [];\n    var {\n      pathParser\n    } = path;\n    pathParser.reset(); // convert l, H, h, V, and v to L\n\n    while (!pathParser.isEnd()) {\n      var {\n        current\n      } = pathParser;\n      var startX = current ? current.x : 0;\n      var startY = current ? current.y : 0;\n      var command = pathParser.next();\n      var nextCommandType = command.type;\n      var points = [];\n\n      switch (command.type) {\n        case PathParser.MOVE_TO:\n          this.pathM(pathParser, points);\n          break;\n\n        case PathParser.LINE_TO:\n          nextCommandType = this.pathL(pathParser, points);\n          break;\n\n        case PathParser.HORIZ_LINE_TO:\n          nextCommandType = this.pathH(pathParser, points);\n          break;\n\n        case PathParser.VERT_LINE_TO:\n          nextCommandType = this.pathV(pathParser, points);\n          break;\n\n        case PathParser.CURVE_TO:\n          this.pathC(pathParser, points);\n          break;\n\n        case PathParser.SMOOTH_CURVE_TO:\n          nextCommandType = this.pathS(pathParser, points);\n          break;\n\n        case PathParser.QUAD_TO:\n          this.pathQ(pathParser, points);\n          break;\n\n        case PathParser.SMOOTH_QUAD_TO:\n          nextCommandType = this.pathT(pathParser, points);\n          break;\n\n        case PathParser.ARC:\n          points = this.pathA(pathParser);\n          break;\n\n        case PathParser.CLOSE_PATH:\n          PathElement.pathZ(pathParser);\n          break;\n      }\n\n      if (command.type !== PathParser.CLOSE_PATH) {\n        pathCommands.push({\n          type: nextCommandType,\n          points,\n          start: {\n            x: startX,\n            y: startY\n          },\n          pathLength: this.calcLength(startX, startY, nextCommandType, points)\n        });\n      } else {\n        pathCommands.push({\n          type: PathParser.CLOSE_PATH,\n          points: [],\n          pathLength: 0\n        });\n      }\n    }\n\n    return pathCommands;\n  }\n\n  pathM(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathM(pathParser).point;\n    points.push(x, y);\n  }\n\n  pathL(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathL(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathH(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathH(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathV(pathParser, points) {\n    var {\n      x,\n      y\n    } = PathElement.pathV(pathParser).point;\n    points.push(x, y);\n    return PathParser.LINE_TO;\n  }\n\n  pathC(pathParser, points) {\n    var {\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathC(pathParser);\n    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n  }\n\n  pathS(pathParser, points) {\n    var {\n      point,\n      controlPoint,\n      currentPoint\n    } = PathElement.pathS(pathParser);\n    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    return PathParser.CURVE_TO;\n  }\n\n  pathQ(pathParser, points) {\n    var {\n      controlPoint,\n      currentPoint\n    } = PathElement.pathQ(pathParser);\n    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n  }\n\n  pathT(pathParser, points) {\n    var {\n      controlPoint,\n      currentPoint\n    } = PathElement.pathT(pathParser);\n    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n    return PathParser.QUAD_TO;\n  }\n\n  pathA(pathParser) {\n    var {\n      rX,\n      rY,\n      sweepFlag,\n      xAxisRotation,\n      centp,\n      a1,\n      ad\n    } = PathElement.pathA(pathParser);\n\n    if (sweepFlag === 0 && ad > 0) {\n      ad -= 2 * Math.PI;\n    }\n\n    if (sweepFlag === 1 && ad < 0) {\n      ad += 2 * Math.PI;\n    }\n\n    return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n  }\n\n  calcLength(x, y, commandType, points) {\n    var len = 0;\n    var p1 = null;\n    var p2 = null;\n    var t = 0;\n\n    switch (commandType) {\n      case PathParser.LINE_TO:\n        return this.getLineLength(x, y, points[0], points[1]);\n\n      case PathParser.CURVE_TO:\n        // Approximates by breaking curve into 100 line segments\n        len = 0.0;\n        p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n        for (t = 0.01; t <= 1; t += 0.01) {\n          p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          p1 = p2;\n        }\n\n        return len;\n\n      case PathParser.QUAD_TO:\n        // Approximates by breaking curve into 100 line segments\n        len = 0.0;\n        p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n        for (t = 0.01; t <= 1; t += 0.01) {\n          p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          p1 = p2;\n        }\n\n        return len;\n\n      case PathParser.ARC:\n        {\n          // Approximates by breaking curve into line segments\n          len = 0.0;\n          var start = points[4]; // 4 = theta\n\n          var dTheta = points[5]; // 5 = dTheta\n\n          var end = points[4] + dTheta;\n          var inc = Math.PI / 180.0; // 1 degree resolution\n\n          if (Math.abs(start - end) < inc) {\n            inc = Math.abs(start - end);\n          } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n          p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n          if (dTheta < 0) {\n            // clockwise\n            for (t = start - inc; t > end; t -= inc) {\n              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n              p1 = p2;\n            }\n          } else {\n            // counter-clockwise\n            for (t = start + inc; t < end; t += inc) {\n              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n              p1 = p2;\n            }\n          }\n\n          p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n          return len;\n        }\n    }\n\n    return 0;\n  }\n\n  getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n    var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n    var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n    var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n    var run = Math.sqrt(dist * dist / (1 + m * m));\n\n    if (p2x < p1x) {\n      run *= -1;\n    }\n\n    var rise = m * run;\n    var pt = null;\n\n    if (p2x === p1x) {\n      // vertical line\n      pt = {\n        x: fromX,\n        y: fromY + rise\n      };\n    } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n      pt = {\n        x: fromX + run,\n        y: fromY + rise\n      };\n    } else {\n      var ix = 0;\n      var iy = 0;\n      var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n      if (len < PSEUDO_ZERO) {\n        return null;\n      }\n\n      var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n      u /= len * len;\n      ix = p1x + u * (p2x - p1x);\n      iy = p1y + u * (p2y - p1y);\n      var pRise = this.getLineLength(fromX, fromY, ix, iy);\n      var pRun = Math.sqrt(dist * dist - pRise * pRise);\n      run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n      if (p2x < p1x) {\n        run *= -1;\n      }\n\n      rise = m * run;\n      pt = {\n        x: ix + run,\n        y: iy + rise\n      };\n    }\n\n    return pt;\n  }\n\n  getPointOnPath(distance) {\n    var fullLen = this.getPathLength();\n    var cumulativePathLength = 0;\n    var p = null;\n\n    if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n      return null;\n    }\n\n    var {\n      dataArray\n    } = this;\n\n    for (var command of dataArray) {\n      if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n        cumulativePathLength += command.pathLength;\n        continue;\n      }\n\n      var delta = distance - cumulativePathLength;\n      var currentT = 0;\n\n      switch (command.type) {\n        case PathParser.LINE_TO:\n          p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n          break;\n\n        case PathParser.ARC:\n          {\n            var start = command.points[4]; // 4 = theta\n\n            var dTheta = command.points[5]; // 5 = dTheta\n\n            var end = command.points[4] + dTheta;\n            currentT = start + delta / command.pathLength * dTheta;\n\n            if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n              break;\n            }\n\n            p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n            break;\n          }\n\n        case PathParser.CURVE_TO:\n          currentT = delta / command.pathLength;\n\n          if (currentT > 1) {\n            currentT = 1;\n          }\n\n          p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n          break;\n\n        case PathParser.QUAD_TO:\n          currentT = delta / command.pathLength;\n\n          if (currentT > 1) {\n            currentT = 1;\n          }\n\n          p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n          break;\n      }\n\n      if (p) {\n        return p;\n      }\n\n      break;\n    }\n\n    return null;\n  }\n\n  getLineLength(x1, y1, x2, y2) {\n    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  }\n\n  getPathLength() {\n    if (this.pathLength === -1) {\n      this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n    }\n\n    return this.pathLength;\n  }\n\n  getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n    var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n    var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n    return {\n      x,\n      y\n    };\n  }\n\n  getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n    var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n    var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n    return {\n      x,\n      y\n    };\n  }\n\n  getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n    var cosPsi = Math.cos(psi);\n    var sinPsi = Math.sin(psi);\n    var pt = {\n      x: rx * Math.cos(theta),\n      y: ry * Math.sin(theta)\n    };\n    return {\n      x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n      y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n    };\n  } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n  buildEquidistantCache(inputStep, inputPrecision) {\n    var fullLen = this.getPathLength();\n    var precision = inputPrecision || 0.25; // accuracy vs performance\n\n    var step = inputStep || fullLen / 100;\n\n    if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n      // Prepare cache\n      this.equidistantCache = {\n        step,\n        precision,\n        points: []\n      }; // Calculate points\n\n      var s = 0;\n\n      for (var l = 0; l <= fullLen; l += precision) {\n        var p0 = this.getPointOnPath(l);\n        var p1 = this.getPointOnPath(l + precision);\n\n        if (!p0 || !p1) {\n          continue;\n        }\n\n        s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n        if (s >= step) {\n          this.equidistantCache.points.push({\n            x: p0.x,\n            y: p0.y,\n            distance: l\n          });\n          s -= step;\n        }\n      }\n    }\n  }\n\n  getEquidistantPointOnPath(targetDistance, step, precision) {\n    this.buildEquidistantCache(step, precision);\n\n    if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n      return null;\n    }\n\n    var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n    return this.equidistantCache.points[idx] || null;\n  }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'image';\n    this.loaded = false;\n    var href = this.getHrefAttribute().getString();\n\n    if (!href) {\n      return;\n    }\n\n    var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n    document.images.push(this);\n\n    if (!isSvg) {\n      void this.loadImage(href);\n    } else {\n      void this.loadSvg(href);\n    }\n\n    this.isSvg = isSvg;\n  }\n\n  loadImage(href) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      try {\n        var image = yield _this.document.createImage(href);\n        _this.image = image;\n      } catch (err) {\n        console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n      }\n\n      _this.loaded = true;\n    })();\n  }\n\n  loadSvg(href) {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      var match = dataUriRegex.exec(href);\n\n      if (match) {\n        var data = match[5];\n\n        if (match[4] === 'base64') {\n          _this2.image = atob(data);\n        } else {\n          _this2.image = decodeURIComponent(data);\n        }\n      } else {\n        try {\n          var response = yield _this2.document.fetch(href);\n          var svg = yield response.text();\n          _this2.image = svg;\n        } catch (err) {\n          console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n        }\n      }\n\n      _this2.loaded = true;\n    })();\n  }\n\n  renderChildren(ctx) {\n    var {\n      document,\n      image,\n      loaded\n    } = this;\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n\n    if (!loaded || !image || !width || !height) {\n      return;\n    }\n\n    ctx.save();\n    ctx.translate(x, y);\n\n    if (this.isSvg) {\n      var subDocument = document.canvg.forkString(ctx, this.image, {\n        ignoreMouse: true,\n        ignoreAnimation: true,\n        ignoreDimensions: true,\n        ignoreClear: true,\n        offsetX: 0,\n        offsetY: 0,\n        scaleWidth: width,\n        scaleHeight: height\n      });\n      subDocument.document.documentElement.parent = this;\n      void subDocument.render();\n    } else {\n      var _image = this.image;\n      document.setViewBox({\n        ctx,\n        aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n        width,\n        desiredWidth: _image.width,\n        height,\n        desiredHeight: _image.height\n      });\n\n      if (this.loaded) {\n        if (typeof _image.complete === 'undefined' || _image.complete) {\n          ctx.drawImage(_image, 0, 0);\n        }\n      }\n    }\n\n    ctx.restore();\n  }\n\n  getBoundingBox() {\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n    return new BoundingBox(x, y, x + width, y + height);\n  }\n\n}\n\nclass SymbolElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'symbol';\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\n\nclass SVGFontLoader {\n  constructor(document) {\n    this.document = document;\n    this.loaded = false;\n    document.fonts.push(this);\n  }\n\n  load(fontFamily, url) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      try {\n        var {\n          document\n        } = _this;\n        var svgDocument = yield document.canvg.parser.load(url);\n        var fonts = svgDocument.getElementsByTagName('font');\n        Array.from(fonts).forEach(fontNode => {\n          var font = document.createElement(fontNode);\n          document.definitions[fontFamily] = font;\n        });\n      } catch (err) {\n        console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n      }\n\n      _this.loaded = true;\n    })();\n  }\n\n}\n\nclass StyleElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'style';\n    var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n    .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n    .replace(/@import.*;/g, '') // remove imports\n    );\n    var cssDefs = css.split('}');\n    cssDefs.forEach(_ => {\n      var def = _.trim();\n\n      if (!def) {\n        return;\n      }\n\n      var cssParts = def.split('{');\n      var cssClasses = cssParts[0].split(',');\n      var cssProps = cssParts[1].split(';');\n      cssClasses.forEach(_ => {\n        var cssClass = _.trim();\n\n        if (!cssClass) {\n          return;\n        }\n\n        var props = document.styles[cssClass] || {};\n        cssProps.forEach(cssProp => {\n          var prop = cssProp.indexOf(':');\n          var name = cssProp.substr(0, prop).trim();\n          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n          if (name && value) {\n            props[name] = new Property(document, name, value);\n          }\n        });\n        document.styles[cssClass] = props;\n        document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n        if (cssClass === '@font-face') {\n          //  && !nodeEnv\n          var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n          var srcs = props.src.getString().split(',');\n          srcs.forEach(src => {\n            if (src.indexOf('format(\"svg\")') > 0) {\n              var url = parseExternalUrl(src);\n\n              if (url) {\n                void new SVGFontLoader(document).load(fontFamily, url);\n              }\n            }\n          });\n        }\n      });\n    });\n  }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n  constructor() {\n    super(...arguments);\n    this.type = 'use';\n  }\n\n  setContext(ctx) {\n    super.setContext(ctx);\n    var xAttr = this.getAttribute('x');\n    var yAttr = this.getAttribute('y');\n\n    if (xAttr.hasValue()) {\n      ctx.translate(xAttr.getPixels('x'), 0);\n    }\n\n    if (yAttr.hasValue()) {\n      ctx.translate(0, yAttr.getPixels('y'));\n    }\n  }\n\n  path(ctx) {\n    var {\n      element\n    } = this;\n\n    if (element) {\n      element.path(ctx);\n    }\n  }\n\n  renderChildren(ctx) {\n    var {\n      document,\n      element\n    } = this;\n\n    if (element) {\n      var tempSvg = element;\n\n      if (element.type === 'symbol') {\n        // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n        tempSvg = new SVGElement(document, null);\n        tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n        tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n        tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n        tempSvg.children = element.children; // element is still the parent of the children\n\n        element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n      }\n\n      if (tempSvg.type === 'svg') {\n        var widthStyle = this.getStyle('width', false, true);\n        var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n        if (widthStyle.hasValue()) {\n          tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n        }\n\n        if (heightStyle.hasValue()) {\n          tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n        }\n      }\n\n      var oldParent = tempSvg.parent;\n      tempSvg.parent = this;\n      tempSvg.render(ctx);\n      tempSvg.parent = oldParent;\n    }\n  }\n\n  getBoundingBox(ctx) {\n    var {\n      element\n    } = this;\n\n    if (element) {\n      return element.getBoundingBox(ctx);\n    }\n\n    return null;\n  }\n\n  elementTransform() {\n    var {\n      document,\n      element\n    } = this;\n    return Transform.fromElement(document, element);\n  }\n\n  get element() {\n    if (!this.cachedElement) {\n      this.cachedElement = this.getHrefAttribute().getDefinition();\n    }\n\n    return this.cachedElement;\n  }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n  return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n  img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n  var mi = matrix[i];\n  return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n  return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feColorMatrix';\n    var matrix = toNumbers(this.getAttribute('values').getString());\n\n    switch (this.getAttribute('type').getString('matrix')) {\n      // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n      case 'saturate':\n        {\n          var s = matrix[0];\n          /* eslint-disable array-element-newline */\n\n          matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n          /* eslint-enable array-element-newline */\n\n          break;\n        }\n\n      case 'hueRotate':\n        {\n          var a = matrix[0] * Math.PI / 180.0;\n          /* eslint-disable array-element-newline */\n\n          matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n          /* eslint-enable array-element-newline */\n\n          break;\n        }\n\n      case 'luminanceToAlpha':\n        /* eslint-disable array-element-newline */\n        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n        /* eslint-enable array-element-newline */\n\n        break;\n    }\n\n    this.matrix = matrix;\n    this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n  }\n\n  apply(ctx, _x, _y, width, height) {\n    // assuming x==0 && y==0 for now\n    var {\n      includeOpacity,\n      matrix\n    } = this;\n    var srcData = ctx.getImageData(0, 0, width, height);\n\n    for (var y = 0; y < height; y++) {\n      for (var x = 0; x < width; x++) {\n        var r = imGet(srcData.data, x, y, width, height, 0);\n        var g = imGet(srcData.data, x, y, width, height, 1);\n        var b = imGet(srcData.data, x, y, width, height, 2);\n        var a = imGet(srcData.data, x, y, width, height, 3);\n        var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n        var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n        var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n        var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n        if (includeOpacity) {\n          nr = 0;\n          ng = 0;\n          nb = 0;\n          na *= a / 255;\n        }\n\n        imSet(srcData.data, x, y, width, height, 0, nr);\n        imSet(srcData.data, x, y, width, height, 1, ng);\n        imSet(srcData.data, x, y, width, height, 2, nb);\n        imSet(srcData.data, x, y, width, height, 3, na);\n      }\n    }\n\n    ctx.clearRect(0, 0, width, height);\n    ctx.putImageData(srcData, 0, 0);\n  }\n\n}\n\nclass MaskElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'mask';\n  }\n\n  apply(ctx, element) {\n    var {\n      document\n    } = this; // render as temp svg\n\n    var x = this.getAttribute('x').getPixels('x');\n    var y = this.getAttribute('y').getPixels('y');\n    var width = this.getStyle('width').getPixels('x');\n    var height = this.getStyle('height').getPixels('y');\n\n    if (!width && !height) {\n      var boundingBox = new BoundingBox();\n      this.children.forEach(child => {\n        boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n      });\n      x = Math.floor(boundingBox.x1);\n      y = Math.floor(boundingBox.y1);\n      width = Math.floor(boundingBox.width);\n      height = Math.floor(boundingBox.height);\n    }\n\n    var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n    var maskCanvas = document.createCanvas(x + width, y + height);\n    var maskCtx = maskCanvas.getContext('2d');\n    document.screen.setDefaults(maskCtx);\n    this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n    // TODO: refactor out apply from feColorMatrix\n\n    new FeColorMatrixElement(document, {\n      nodeType: 1,\n      childNodes: [],\n      attributes: [{\n        nodeName: 'type',\n        value: 'luminanceToAlpha'\n      }, {\n        nodeName: 'includeOpacity',\n        value: 'true'\n      }]\n    }).apply(maskCtx, 0, 0, x + width, y + height);\n    var tmpCanvas = document.createCanvas(x + width, y + height);\n    var tmpCtx = tmpCanvas.getContext('2d');\n    document.screen.setDefaults(tmpCtx);\n    element.render(tmpCtx);\n    tmpCtx.globalCompositeOperation = 'destination-in';\n    tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n    tmpCtx.fillRect(0, 0, x + width, y + height);\n    ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n    ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n    this.restoreStyles(element, ignoredStyles);\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'clipPath';\n  }\n\n  apply(ctx) {\n    var {\n      document\n    } = this;\n    var contextProto = Reflect.getPrototypeOf(ctx);\n    var {\n      beginPath,\n      closePath\n    } = ctx;\n\n    if (contextProto) {\n      contextProto.beginPath = noop;\n      contextProto.closePath = noop;\n    }\n\n    Reflect.apply(beginPath, ctx, []);\n    this.children.forEach(child => {\n      if (typeof child.path === 'undefined') {\n        return;\n      }\n\n      var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n      if (!transform) {\n        transform = Transform.fromElement(document, child);\n      }\n\n      if (transform) {\n        transform.apply(ctx);\n      }\n\n      child.path(ctx);\n\n      if (contextProto) {\n        contextProto.closePath = closePath;\n      }\n\n      if (transform) {\n        transform.unapply(ctx);\n      }\n    });\n    Reflect.apply(closePath, ctx, []);\n    ctx.clip();\n\n    if (contextProto) {\n      contextProto.beginPath = beginPath;\n      contextProto.closePath = closePath;\n    }\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\n\nclass FilterElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'filter';\n  }\n\n  apply(ctx, element) {\n    // render as temp svg\n    var {\n      document,\n      children\n    } = this;\n    var boundingBox = element.getBoundingBox(ctx);\n\n    if (!boundingBox) {\n      return;\n    }\n\n    var px = 0;\n    var py = 0;\n    children.forEach(child => {\n      var efd = child.extraFilterDistance || 0;\n      px = Math.max(px, efd);\n      py = Math.max(py, efd);\n    });\n    var width = Math.floor(boundingBox.width);\n    var height = Math.floor(boundingBox.height);\n    var tmpCanvasWidth = width + 2 * px;\n    var tmpCanvasHeight = height + 2 * py;\n\n    if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n      return;\n    }\n\n    var x = Math.floor(boundingBox.x);\n    var y = Math.floor(boundingBox.y);\n    var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n    var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n    var tmpCtx = tmpCanvas.getContext('2d');\n    document.screen.setDefaults(tmpCtx);\n    tmpCtx.translate(-x + px, -y + py);\n    element.render(tmpCtx); // apply filters\n\n    children.forEach(child => {\n      if (typeof child.apply === 'function') {\n        child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n      }\n    }); // render on me\n\n    ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n    this.restoreStyles(element, ignoredStyles);\n  }\n\n  render(_) {// NO RENDER\n  }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feDropShadow';\n    this.addStylesFromStyleDefinition();\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeMorphologyElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'feMorphology';\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeCompositeElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'feComposite';\n  }\n\n  apply(_, _x, _y, _width, _height) {// TODO: implement\n  }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n  constructor(document, node, captureTextNodes) {\n    super(document, node, captureTextNodes);\n    this.type = 'feGaussianBlur';\n    this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n    this.extraFilterDistance = this.blurRadius;\n  }\n\n  apply(ctx, x, y, width, height) {\n    var {\n      document,\n      blurRadius\n    } = this;\n    var body = document.window ? document.window.document.body : null;\n    var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n    canvas.id = document.getUniqueId();\n\n    if (body) {\n      canvas.style.display = 'none';\n      body.appendChild(canvas);\n    }\n\n    canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n    if (body) {\n      body.removeChild(canvas);\n    }\n  }\n\n}\n\nclass TitleElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'title';\n  }\n\n}\n\nclass DescElement extends Element {\n  constructor() {\n    super(...arguments);\n    this.type = 'desc';\n  }\n\n}\n\nvar elements = {\n  'svg': SVGElement,\n  'rect': RectElement,\n  'circle': CircleElement,\n  'ellipse': EllipseElement,\n  'line': LineElement,\n  'polyline': PolylineElement,\n  'polygon': PolygonElement,\n  'path': PathElement,\n  'pattern': PatternElement,\n  'marker': MarkerElement,\n  'defs': DefsElement,\n  'linearGradient': LinearGradientElement,\n  'radialGradient': RadialGradientElement,\n  'stop': StopElement,\n  'animate': AnimateElement,\n  'animateColor': AnimateColorElement,\n  'animateTransform': AnimateTransformElement,\n  'font': FontElement,\n  'font-face': FontFaceElement,\n  'missing-glyph': MissingGlyphElement,\n  'glyph': GlyphElement,\n  'text': TextElement,\n  'tspan': TSpanElement,\n  'tref': TRefElement,\n  'a': AElement,\n  'textPath': TextPathElement,\n  'image': ImageElement,\n  'g': GElement,\n  'symbol': SymbolElement,\n  'style': StyleElement,\n  'use': UseElement,\n  'mask': MaskElement,\n  'clipPath': ClipPathElement,\n  'filter': FilterElement,\n  'feDropShadow': FeDropShadowElement,\n  'feMorphology': FeMorphologyElement,\n  'feComposite': FeCompositeElement,\n  'feColorMatrix': FeColorMatrixElement,\n  'feGaussianBlur': FeGaussianBlurElement,\n  'title': TitleElement,\n  'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n  var canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  return canvas;\n}\n\nfunction createImage(_x) {\n  return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n  _createImage = _asyncToGenerator(function* (src) {\n    var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var image = document.createElement('img');\n\n    if (anonymousCrossOrigin) {\n      image.crossOrigin = 'Anonymous';\n    }\n\n    return new Promise((resolve, reject) => {\n      image.onload = () => {\n        resolve(image);\n      };\n\n      image.onerror = (_event, _source, _lineno, _colno, error) => {\n        reject(error);\n      };\n\n      image.src = src;\n    });\n  });\n  return _createImage.apply(this, arguments);\n}\n\nclass Document {\n  constructor(canvg) {\n    var {\n      rootEmSize = 12,\n      emSize = 12,\n      createCanvas = Document.createCanvas,\n      createImage = Document.createImage,\n      anonymousCrossOrigin\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.canvg = canvg;\n    this.definitions = Object.create(null);\n    this.styles = Object.create(null);\n    this.stylesSpecificity = Object.create(null);\n    this.images = [];\n    this.fonts = [];\n    this.emSizeStack = [];\n    this.uniqueId = 0;\n    this.screen = canvg.screen;\n    this.rootEmSize = rootEmSize;\n    this.emSize = emSize;\n    this.createCanvas = createCanvas;\n    this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n    this.screen.wait(this.isImagesLoaded.bind(this));\n    this.screen.wait(this.isFontsLoaded.bind(this));\n  }\n\n  bindCreateImage(createImage, anonymousCrossOrigin) {\n    if (typeof anonymousCrossOrigin === 'boolean') {\n      return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n    }\n\n    return createImage;\n  }\n\n  get window() {\n    return this.screen.window;\n  }\n\n  get fetch() {\n    return this.screen.fetch;\n  }\n\n  get ctx() {\n    return this.screen.ctx;\n  }\n\n  get emSize() {\n    var {\n      emSizeStack\n    } = this;\n    return emSizeStack[emSizeStack.length - 1];\n  }\n\n  set emSize(value) {\n    var {\n      emSizeStack\n    } = this;\n    emSizeStack.push(value);\n  }\n\n  popEmSize() {\n    var {\n      emSizeStack\n    } = this;\n    emSizeStack.pop();\n  }\n\n  getUniqueId() {\n    return \"canvg\".concat(++this.uniqueId);\n  }\n\n  isImagesLoaded() {\n    return this.images.every(_ => _.loaded);\n  }\n\n  isFontsLoaded() {\n    return this.fonts.every(_ => _.loaded);\n  }\n\n  createDocumentElement(document) {\n    var documentElement = this.createElement(document.documentElement);\n    documentElement.root = true;\n    documentElement.addStylesFromStyleDefinition();\n    this.documentElement = documentElement;\n    return documentElement;\n  }\n\n  createElement(node) {\n    var elementType = node.nodeName.replace(/^[^:]+:/, '');\n    var ElementType = Document.elementTypes[elementType];\n\n    if (typeof ElementType !== 'undefined') {\n      return new ElementType(this, node);\n    }\n\n    return new UnknownElement(this, node);\n  }\n\n  createTextNode(node) {\n    return new TextNode(this, node);\n  }\n\n  setViewBox(config) {\n    this.screen.setViewBox(_objectSpread$1({\n      document: this\n    }, config));\n  }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n  /**\r\n   * Main constructor.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG Document.\r\n   * @param options - Rendering options.\r\n   */\n  constructor(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.parser = new Parser(options);\n    this.screen = new Screen(ctx, options);\n    this.options = options;\n    var document = new Document(this, options);\n    var documentElement = document.createDocumentElement(svg);\n    this.document = document;\n    this.documentElement = documentElement;\n  }\n  /**\r\n   * Create Canvg instance from SVG source string or URL.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string or URL.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  static from(ctx, svg) {\n    var _arguments = arguments;\n    return _asyncToGenerator(function* () {\n      var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n      var parser = new Parser(options);\n      var svgDocument = yield parser.parse(svg);\n      return new Canvg(ctx, svgDocument, options);\n    })();\n  }\n  /**\r\n   * Create Canvg instance from SVG source string.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  static fromString(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var parser = new Parser(options);\n    var svgDocument = parser.parseFromString(svg);\n    return new Canvg(ctx, svgDocument, options);\n  }\n  /**\r\n   * Create new Canvg instance with inherited options.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string or URL.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  fork(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n  }\n  /**\r\n   * Create new Canvg instance with inherited options.\r\n   * @param ctx - Rendering context.\r\n   * @param svg - SVG source string.\r\n   * @param options - Rendering options.\r\n   * @returns Canvg instance.\r\n   */\n\n\n  forkString(ctx, svg) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n  }\n  /**\r\n   * Document is ready promise.\r\n   * @returns Ready promise.\r\n   */\n\n\n  ready() {\n    return this.screen.ready();\n  }\n  /**\r\n   * Document is ready value.\r\n   * @returns Is ready or not.\r\n   */\n\n\n  isReady() {\n    return this.screen.isReady();\n  }\n  /**\r\n   * Render only first frame, ignoring animations and mouse.\r\n   * @param options - Rendering options.\r\n   */\n\n\n  render() {\n    var _arguments2 = arguments,\n        _this = this;\n\n    return _asyncToGenerator(function* () {\n      var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n      _this.start(_objectSpread({\n        enableRedraw: true,\n        ignoreAnimation: true,\n        ignoreMouse: true\n      }, options));\n\n      yield _this.ready();\n\n      _this.stop();\n    })();\n  }\n  /**\r\n   * Start rendering.\r\n   * @param options - Render options.\r\n   */\n\n\n  start() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var {\n      documentElement,\n      screen,\n      options: baseOptions\n    } = this;\n    screen.start(documentElement, _objectSpread(_objectSpread({\n      enableRedraw: true\n    }, baseOptions), options));\n  }\n  /**\r\n   * Stop rendering.\r\n   */\n\n\n  stop() {\n    this.screen.stop();\n  }\n  /**\r\n   * Resize SVG to fit in given size.\r\n   * @param width\r\n   * @param height\r\n   * @param preserveAspectRatio\r\n   */\n\n\n  resize(width) {\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    this.documentElement.resize(width, height, preserveAspectRatio);\n  }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n"],"names":["CollectionEventType","ObjectEventType","EventType","Disposable","binarySearch","haystack","needle","comparator","mid","cmp","ascending","low","high","found","a","b","descending","linearFindNearest","arr","target","direction","n","i","candidate","reverseSubArray","begin","end","tmp","extend","data","extension","length","equals","arr1","arr2","len1","stableSort","compareFnc","isSorted","func","strict","compare","currentVal","index","res","TRUE","FALSE","VOID","memoizeOne","fn","lastResult","lastArgs","lastThis","nextArgs","arrayEquals","toPromise","getter","promiseGetter","value","err","clear","object","property","isEmpty","BaseEvent","type","Target","listener","listeners","listenersForType","event","isString","evt","Event","dispatching","pendingRemovals","propagate","ii","pr","listen","thisArg","once","originalListener","eventsKey","listenOnce","unlistenByKey","key","Observable","EventTarget","len","keys","unByKey","abstract","uidCounter_","getUid","obj","ObjectEvent","oldValue","BaseObject","values","eventType","silent","source","Property","CollectionEvent","element","Collection","array","options","f","elem","prev","except","assert","assertion","errorMessage","Feature","geometryOrProperties","geometry","properties","clone","style","createStyleFunction","id","name","styles","Relationship","boundingExtent","coordinates","extent","createEmpty","extendCoordinate","_boundingExtentXYs","xs","ys","dest","minX","minY","maxX","maxY","createOrUpdate","buffer","closestSquaredDistanceXY","x","y","dx","dy","containsCoordinate","coordinate","containsXY","containsExtent","extent1","extent2","coordinateRelationship","relationship","createOrUpdateEmpty","createOrUpdateFromCoordinate","createOrUpdateFromFlatCoordinates","flatCoordinates","offset","stride","extendFlatCoordinates","extendXY","forEachCorner","callback","val","getBottomLeft","getBottomRight","getTopRight","getTopLeft","getArea","area","getWidth","getHeight","getCenter","getCorner","corner","getForViewAndSize","center","resolution","rotation","size","x0","y0","x1","y1","x2","y2","x3","y3","getRotatedViewport","cosRotation","sinRotation","xCos","xSin","yCos","ySin","getIntersection","intersection","intersects","returnOrUpdate","intersectsSegment","start","startRel","endRel","startX","startY","endX","endY","slope","applyTransform","transformFn","stops","l","wrapX","projection","projectionExtent","worldWidth","wrapAndSliceX","multiWorld","clamp","min","max","squaredSegmentDistance","t","squaredDistance","solveLinearSystem","mat","maxRow","maxEl","r","absValue","j","coef","k","m","toDegrees","angleInRadians","toRadians","angleInDegrees","modulo","lerp","toFixed","decimals","factor","round","floor","ceil","wrap","range","DEFAULT_RADIUS","getDistance","c1","c2","radius","lat1","lat2","deltaLatBy2","deltaLonBy2","getLengthInternal","getLength","coords","jj","geometries","getAreaInternal","distance","bearing","lon1","dByR","lat","lon","warn","args","compareVersions","v1","v2","s1","s2","n1","n2","add","delta","closestOnCircle","circle","d","closestOnSegment","segment","along","createStringXY","fractionDigits","toStringXY","format","template","coordinate1","coordinate2","rotate","angle","cosAngle","sinAngle","scale","coord1","coord2","squaredDistanceToSegment","worldsAway","getWorldsAway","sourceExtentWidth","METERS_PER_UNIT","Projection$1","global","tileGrid","worldExtent","RADIUS","HALF_SIZE","EXTENT","WORLD_EXTENT","MAX_SAFE_Y","EPSG3857Projection","Projection","code","point","PROJECTIONS","fromEPSG4326","input","output","dimension","toEPSG4326","EPSG4326Projection","axisOrientation","cache","get","transforms","destination","sourceCode","destinationCode","K0","E","E2","E3","E_P2","SQRT_E","_E","_E2","_E3","_E4","_E5","M1","M2","M3","M4","P2","P3","P4","P5","R","toLonLat","easting","northing","zone","mu","pRad","pSin","pSin2","pCos","pTan","pTan2","pTan4","epSin","epSinSqrt","c","d2","d3","d4","d5","d6","latitude","longitude","zoneToCentralLongitude","MIN_LATITUDE","MAX_LATITUDE","MIN_LONGITUDE","MAX_LONGITUDE","fromLonLat","latRad","latSin","latCos","latTan","latTan2","latTan4","lonRad","centralLon","centralLonRad","a2","a3","a4","a5","a6","epsgRegExes","zoneFromCode","epsgId","re","match","number","north","makeTransformFunction","transformer","coord","makeProjection","makeTransforms","transformFactories","makeUTMTransforms","projectionFactories","makeUTMProjection","showCoordinateWarning","disableCoordinateWarning","disable","cloneTransform","identityTransform","addProjection","addProj","addTransformFunc","addProjections","projections","projectionLike","getProj","getPointResolution","units","pointResolution","metersPerUnit","projUnits","getTransformFromProjections","vertices","width","height","addEquivalentProjections","addEquivalentTransforms","projections1","projections2","forwardTransform","inverseTransform","projection1","projection2","createProjection","defaultCode","createTransformFromCoordinateTransform","coordTransform","pointLength","addCoordinateTransforms","forward","inverse","sourceProj","destProj","transform","lonLat","equivalent","equalUnits","transformFunc","getTransformFunc","sourceTransforms","destinationTransforms","intermediateCode","composeTransformFuncs","fromSource","toDestination","t1","t2","dimensions","getTransform","sourceProjection","destinationProjection","transformExtent","userProjection","getUserProjection","toUserCoordinate","fromUserCoordinate","destProjection","toUserExtent","fromUserExtent","createSafeCoordinateTransform","transformed","sourceExtent","addCommon","EPSG3857_PROJECTIONS","EPSG4326_PROJECTIONS","tmp_","create","reset","set","multiply","transform1","transform2","a1","b1","d1","e1","f1","b2","e2","f2","e","setFromArray","apply","cos","sin","translate","compose","dx1","dy1","sx","sy","dx2","dy2","makeInverse","det","determinant","matrixPrecision","toString","transform2D","destinationStride","anchor","anchorX","anchorY","deltaX","deltaY","tmpTransform","createTransform","tmpPoint","Geometry","revision","squaredTolerance","closestPoint","minSquaredDistance","tolerance","getProjection","inCoordinates","outCoordinates","pixelExtent","projectedExtent","composeTransform","projTransform","SimpleGeometry","simplifiedGeometry","layout","getStrideForLayout","nesting","getLayoutForStride","transformGeom2D","simpleGeometry","linearRing","twiceArea","linearRings","ends","linearRingss","endss","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","squaredDx","arrayMaxSquaredDelta","multiArrayMaxSquaredDelta","assignClosestPoint","maxDelta","isRing","assignClosestArrayPoint","assignClosestMultiArrayPoint","deflateCoordinate","deflateCoordinates","deflateCoordinatesArray","coordinatess","deflateMultiCoordinatesArray","coordinatesss","inflateCoordinates","inflateCoordinatesArray","inflateMultiCoordinatesArray","douglasPeucker","simplifiedFlatCoordinates","simplifiedOffset","markers","stack","last","first","maxSquaredDistance","douglasPeuckerArray","simplifiedEnds","snap","quantize","quantizeArray","quantizeMultiArray","simplifiedEndss","LinearRing","linearRingArea","Point","linearRingContainsExtent","linearRingContainsXY","wn","linearRingsContainsXY","linearRingssContainsXY","getInteriorPointOfArray","flatCenters","flatCentersOffset","intersections","rr","pointX","maxSegmentLength","segmentLength","getInteriorPointsOfMultiArray","interiorPoints","forEach","ret","intersectsLineString","coordinatesExtent","forEachSegment","point1","point2","intersectsLineStringArray","intersectsLinearRing","intersectsLinearRingArray","intersectsLinearRingMultiArray","linearRingIsClockwise","edge","linearRingsAreOriented","right","isClockwise","linearRingssAreOriented","orientLinearRings","reverseCoordinates","orientLinearRingsArray","inflateEnds","prevEndIndex","startOrientation","orientation","Polygon","polygon","linearRingsArea","flatCenter","circular","sphereRadius","sphereOffset","fromExtent","fromCircle","sides","arrayLength","makeRegular","startAngle","GeolocationErrorType","GeolocationError","error","Geolocation","tracking","position","projectedPosition","circularPolygon","interpolatePoint","fraction","o","cumulativeLengths","lineStringCoordinateAtM","extrapolate","lo","hi","m0","m1","lineStringsCoordinateAtM","interpolate","lineStringLength","LineString","lineString","RenderEventType","ua","FIREFOX","SAFARI_BUG_237906","WEBKIT","MAC","DEVICE_PIXEL_RATIO","WORKER_OFFSCREEN_CANVAS","IMAGE_DECODE","CREATE_IMAGE_BITMAP","PASSIVE_EVENT_LISTENERS","passive","ImageState","names$y","baseHues","parse","cstr","parts","alpha","space","names","base","isShort","dims","_b","_a","rgb","hsl","h","s","t3","g","rgba","color","parsed","xyz","_xyz","white","z","luv","arg","_u","_v","u","v","xn","yn","zn","un","vn","yr","lchuv","hr","NO_COLOR","asString","MAX_CACHE_SIZE","cacheSize","withAlpha","rgbaToLcha","lchaToRgba","fromString","parseRgba","normalize","asArray","createCanvasContext2D","canvasPool","settings","canvas","sharedCanvasContext","getSharedCanvasContext2D","releaseCanvas","context","outerWidth","outerHeight","replaceNode","newNode","oldNode","parent","removeChildren","node","replaceChildren","children","oldChildren","oldChild","newChild","ImageWrapper","pixelRatio","stateOrLoader","requestResolution","image","listenImage","loadHandler","errorHandler","img","listening","decoding","loaded","listenerKeys","load","src","resolve","reject","handleLoad","unlisten","handleError","decodeFallback","decode","IconImageCache","iconImage","crossOrigin","getCacheKey","pattern","update","maxCacheSize","colorString","shared","taintedTestContext","IconImage","imageState","ctx","onChange","cacheKey","iconImageCache","asColorLike","asCanvasPattern","iconCache","canvasPattern","patternCanvasContext","getIconImage","VectorContext","feature","renderer","hitDetectionRenderer","circleGeometry","geometryCollectionGeometry","lineStringGeometry","multiLineStringGeometry","multiPointGeometry","multiPolygonGeometry","pointGeometry","polygonGeometry","fillStyle","strokeStyle","imageStyle","declutterImageWithText","textStyle","CLASS_HIDDEN","CLASS_SELECTABLE","CLASS_UNSELECTABLE","CLASS_CONTROL","CLASS_COLLAPSED","fontRegEx","fontRegExMatchIndex","getFontParameters","fontSpec","defaultFont","defaultFillStyle","defaultLineCap","defaultLineDash","defaultLineDashOffset","defaultLineJoin","defaultMiterLimit","defaultStrokeStyle","defaultTextAlign","defaultTextBaseline","defaultPadding","defaultLineWidth","checkedFonts","measureContext","measureFont","textHeights","registerFont","referenceFonts","text","interval","referenceWidth","isAvailable","fontStyle","fontWeight","fontFamily","available","referenceFont","measureTextWidth","check","done","fonts","font","weight","family","families","measureTextHeight","measureElement","metrics","measureText","measureAndCacheTextWidth","curr","getTextDimensions","baseStyle","chunks","widths","heights","lineWidths","lineWidth","lineHeight","currentWidth","currentHeight","drawImageOrLabel","opacity","labelOrImage","originX","originY","w","executeLabelInstructions","label","contextInstructions","CanvasImmediateRenderer","viewRotation","userTransform","pixelCoordinates","localTransform","centerX","centerY","close","flatMidpoint","geometryExtent","flatMidpoints","flatInteriorPoint","flatInteriorPoints","fillState","contextFillState","strokeState","contextStrokeState","textState","contextTextState","textAlign","fillStyleColor","strokeStyleColor","strokeStyleLineCap","strokeStyleLineDash","strokeStyleLineDashOffset","strokeStyleLineJoin","strokeStyleWidth","strokeStyleMiterLimit","lineDash","imageSize","imagePixelRatio","imageAnchor","imageOrigin","imageScale","textFillStyle","textFillStyleColor","textStrokeStyle","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","textOffsetX","textOffsetY","textRotateWithView","textRotation","textScale","textText","textTextAlign","textTextBaseline","acc","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","renderPointGeometry","renderLineStringGeometry","renderPolygonGeometry","renderMultiPointGeometry","renderMultiLineStringGeometry","renderMultiPolygonGeometry","renderGeometryCollectionGeometry","renderCircleGeometry","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","builderGroup","circleReplay","textReplay","renderFeature","replayGroup","declutter","loadingPromises","loading","renderFeatureInternal","renderGeometry","geometryRenderer","declutterBuilderGroup","lineStringReplay","polygonReplay","hasText","imageReplay","hasImage","toContext","scaleTransform","withCredentials","loadFeaturesXhr","url","success","failure","xhr","features","dataProjection","all","bbox","Circle","circleExtent","GeometryCollection","geometryCollection","cloneGeometries","geometriesArray","simplifiedGeometries","simplified","MultiLineString","lineStrings","multiLineString","midpoints","midpoint","MultiPoint","multiPoint","points","MultiPolygon","polygons","thisEndss","newEndss","multiPolygon","linearRingssArea","linearRingssCenter","prevEnds","lastEnds","RenderFeature","quickselect","left","defaultCompare","sd","newLeft","newRight","swap","RBush$3","maxEntries","result","toBBox","nodesToSearch","child","childBBox","contains","tmpNode","item","createNode","equalsFn","path","indexes","goingUp","findItem","items","N","M","calcBBox","N2","N1","multiSelect","right2","right3","level","minArea","minEnlargement","targetNode","bboxArea","enlargement","enlargedArea","isNode","insertPath","splitIndex","minOverlap","bbox1","distBBox","bbox2","overlap","intersectionArea","compareMinX","compareNodeMinX","compareMinY","compareNodeMinY","xMargin","yMargin","leftBBox","rightBBox","margin","bboxMargin","siblings","p","destNode","RBush$2","RBush_","extents","uid","rbush","Source","adaptAttributions","self","attributions","state","attributionLike","frameState","VectorEventType","VectorSourceEvent","VectorSource","allStrategy","useSpatialIndex","RBush","collection","featureKey","valid","indexedFeature","newFeatures","geometryFeatures","modifyingCollection","fast","featureId","clearEvent","anExtent","filter","closestFeature","previousMinSquaredDistance","minDistance","sid","loadedExtentsRtree","extentsToLoad","extentToLoad","removed","featureChangeKeys","idString","loader","overlaps","Fill","patternImage","fill","Stroke","lineCap","lineDashOffset","lineJoin","miterLimit","hasArea","ratio","toSize","ImageStyle","displacement","rotateWithView","RegularShape","fillKey","renderOptions","stroke","strokeWidth","r1","r2","miterRatio","bevelAdd","aa","bb","dd","innerMiterRatio","innerLength","maxRadius","radius2","step","angle0","radiusC","CircleStyle","Style","defaultGeometryFunction","zIndex","toFunction","styleFunction","defaultStyles","createDefaultStyle","createEditingStyle","blue","DEFAULT_FILL_COLOR","Text","overflow","maxAngle","offsetX","offsetY","placement","repeat","keepUpright","justify","textBaseline","padding","ViewHint","Instruction","fillInstruction","strokeInstruction","beginPathInstruction","closePathInstruction","CanvasBuilder","maxExtent","dashArray","dash","tmpCoord","myEnd","closed","skipFirst","lastXCoord","lastYCoord","nextCoord","skipped","lastRel","nextRel","builderEnds","builderEnd","builderBegin","builderEndss","myEnds","CanvasInstruction","hitDetectionInstructions","instruction","createFill","applyStroke","endGeometryInstruction","CanvasImageBuilder","myBegin","filteredFlatCoordinates","sharedData","origin","CanvasLineStringBuilder","moveToLineToInstruction","CanvasPolygonBuilder","numEnds","circleInstruction","lineChunk","chunkLength","cursor","chunkM","currentChunk","missing","matchingChunk","chunkStart","chunkEnd","acos","m12","m23","x12","y12","x23","y23","TEXT_ALIGN","CanvasTextBuilder","instructions","geometryType","flatOffset","oo","cc","chunk","chunkBegin","geometryWidths","beg","keep","backgroundFill","backgroundStroke","p0","p1","p2","p3","hitDetectionBackgroundFill","strokeKey","textKey","baseline","textKeepUpright","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","replay","Constructor","drawTextOnPath","startM","segmentM","advance","beginX","beginY","startOffset","startLength","endM","reverse","flat","PI","singleSegment","previousAngle","iStart","charLength","chars","ZIndexContext","__publicField","render","instructionsAtIndex","instructionAtIndex","tmpExtent","p4","getDeclutterBox","replayImageOrLabelArgs","rtlRegEx","horizontalTextAlign","align","createTextChunks","line","Executor","deferredRendering","renderWidth","leftRight","strokeInstructions","fillInstructions","lineOffset","widthHeightIndex","lineWidthIndex","previousFont","fillStrokeArgs","sheetWidth","sheetHeight","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","scaledCanvasSize","imageOrLabel","box","strokePadding","alignAndScale","repeatSize","featureCallback","hitExtent","declutterTree","zIndexContext","transformSetFromArray","declutterMode","prevX","prevY","roundX","roundY","pendingFill","pendingStroke","coordinateCache","viewRotationFromTransform","batchSize","currentGeometry","labelWithAnchor","backgroundFillInstruction","backgroundStrokeInstruction","widthIndex","imageArgs","imageDeclutterMode","imageDeclutterBox","imageDeclutter","renderImage","renderText","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","drawChars","part","ALL","DECLUTTER","NON_DECLUTTER","ExecutorGroup","allInstructions","renderBuffer","flatClipCoords","executors","instructionByZindex","candidates","hitTolerance","declutteredFeatures","contextSize","newContext","getPixelIndexArray","imageData","idx","zs","executor","targetContext","builderTypes","maxBuilderTypes","requireClip","deferredZIndexContexts","circlePixelIndexArrayCache","maxDistanceSq","distances","distanceSq","pixelIndex","calculateScale","wantedWidth","wantedHeight","Icon","onload","iconImageSize","HIT_DETECT_RESOLUTION","createHitDetectionImageData","userExtent","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","imgSize","imgContext","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","pixel","resultFeatures","RenderEvent","inversePixelTransform","maxStaleKeys","LayerRenderer","layer","matches","pixelContext","createPixelContext","CanvasLayerRenderer","col","row","background","backgroundColor","layerClassName","container","topLeft","topRight","bottomRight","bottomLeft","inverted","canvasTransform","toTransformString","CanvasVectorLayerRenderer","vectorLayer","executorGroup","declutterable","viewState","vectorSource","viewHints","endWorld","world","layerState","layerExtent","intersectsExtent","getSquaredRenderTolerance","animating","interacting","updateWhileAnimating","updateWhileInteracting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","defaultRenderOrder","renderedExtent","loadExtents","gutter","wrapCoordinateX","loadExtent","wrapExtentX","CanvasBuilderGroup","getRenderTolerance","ready","dirty","replayGroupInstructions","numTypes","BooleanType","NumberType","StringType","ColorType","NumberArrayType","SizeType","AnyType","typeNames","namedTypes","isSpecific","typeName","namedType","includesType","broad","specific","isType","expected","LiteralExpression","CallExpression","operator","newParsingContext","encoded","expectedType","colorFromString","parseCallExpression","Ops","parsers","createCallExpressionParser","hasArgsCount","withGetArgs","withVarArgs","usesFeatureId","withNoArgs","withArgsOfType","usesGeometryType","usesMapState","withArgsOfReturnType","hasEvenArgs","withMatchArgs","withInterpolateArgs","hasOddArgs","withCaseArgs","withInArgs","withPaletteArgs","returnType","argsCount","operation","minArgs","maxArgs","argCount","plural","expression","argType","inputType","fallback","interpolationType","interpolation","stop","condition","needleType","colors","parsedColors","validators","parser","computeGeometryType","newEvaluationContext","buildExpression","compileExpression","colorValue","compileAssertionExpression","compileAccessorExpression","compileLogicalExpression","compileComparisonExpression","compileNumericExpression","compileCaseExpression","compileMatchExpression","compileInterpolateExpression","compileConvertExpression","op","previousInput","previousOutput","isColor","interpolateColor","interpolateNumber","input1","output1","input2","output2","rgba1","rgba2","lcha1","lcha2","deltaHue","lcha","always","rulesToStyleFunction","rules","parsingContext","evaluator","buildRuleSet","evaluationContext","flatStylesToStyleFunction","flatStyles","evaluators","buildStyle","nonNullCount","compiledRules","rule","styleLength","someMatched","filterEvaluator","styleEvaluator","flatStyle","evaluateFill","buildFill","evaluateStroke","buildStroke","evaluateText","buildText","evaluateImage","buildImage","evaluateZIndex","numberEvaluator","empty","prefix","evaluateColor","patternEvaluator","colorLikeEvaluator","evaluateWidth","evaluateLineCap","stringEvaluator","evaluateLineJoin","evaluateLineDash","numberArrayEvaluator","evaluateLineDashOffset","evaluateMiterLimit","evaluateValue","evaluateBackgroundFill","evaluateBackgroundStroke","evaluateFont","evaluateMaxAngle","evaluateOffsetX","evaluateOffsetY","evaluateOverflow","booleanEvaluator","evaluatePlacement","evaluateRepeat","evaluateScale","sizeLikeEvaluator","evaluateRotateWithView","evaluateRotation","evaluateAlign","evaluateJustify","evaluateBaseline","evaluateKeepUpright","evaluatePadding","optionalDeclutterMode","buildIcon","buildShape","buildCircle","srcName","requireString","evaluateAnchor","coordinateEvaluator","evaluateOpacity","evaluateDisplacement","anchorOrigin","optionalIconOrigin","anchorXUnits","optionalIconAnchorUnits","anchorYUnits","optionalColorLike","optionalString","optionalNumberArray","offsetOrigin","optionalNumber","optionalSize","icon","pointsName","radiusName","requireNumber","shape","evaluateRadius","srcEvaluator","offsetEvaluator","sizeEvaluator","patternSizeEvaluator","colorEvaluator","requireColorLike","requireNumberArray","requireSize","requireSizeLike","ViewProperty","createExtent","onlyCenter","smooth","isMoving","centerShift","viewWidth","viewHeight","shiftX","shiftY","none","easeIn","easeOut","inAndOut","linear","getViewportClampedResolution","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","maxResolution","minResolution","createSnapToResolutions","resolutions","cappedMaxRes","capped","createSnapToPower","power","minZoomLevel","cappedZoomLevel","zoomLevel","newResolution","createMinMaxResolution","createSnapToN","theta","createSnapToZero","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","DEFAULT_MIN_ZOOM","View","resolutionConstraintInfo","createResolutionConstraint","centerConstraint","createCenterConstraint","resolutionConstraint","rotationConstraint","createRotationConstraint","oldPadding","newPadding","newOptions","var_args","animationCount","animationCallback","series","animation","isNoopAnimation","now","more","seriesComplete","elapsed","progress","constrainedResolution","constrainedRotation","currentCenter","rotateCoordinate","addCoordinate","currentResolution","hints","zoom","enabled","logPower","reducedSize","calculateCenterOn","zoomFactor","nearest","baseLevel","geometryOrExtent","polygonFromExtent","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","rotatedExtent","centerRot","shiftedCenter","deltaCoordinates","newRotation","hint","doNotCancelAnims","forceMoving","newCenter","duration","resolutionDirection","targetCenter","targetResolution","targetZoom","targetRes","returnValue","centerNone","minZoom","maxZoom","projExtent","constrainOnlyCenter","defaultMaxResolution","defaultMinResolution","constrainRotation","rotationNone","coordinatesEqual","LayerProperty","BaseLayer","managed","states","visible","zindex","Layer","baseOptions","view","map","inView","getAttributions","layerRenderer","renderEvent","layerStatesArray","arrayLayerState","BaseVectorLayer","declutterGroup","renderOrder","styleLike","toStyleLike","toStyleFunction","VectorLayer","ImageCanvas","TileState","Tile","tileCoord","time","ImageTile","tileLoadFunction","getBlankImage","Kinetic","decay","minVelocity","delay","lastIndex","firstIndex","MapEvent","MapBrowserEvent","originalEvent","dragging","activePointers","MapBrowserEventType","PointerEventType","MapBrowserEventHandler","moveTolerance","pointerEvent","newEvent","pointerId","doc","MapEventType","MapProperty","DROP","PriorityQueue","priorityFunction","keyFunction","elements","priorities","elementKey","priority","count","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","TileQueue","tilePriorityFunction","tileChangeCallback","added","tile","tileKey","maxTotalLoading","maxNewLoads","newLoads","getTilePriority","tileSourceKey","tileCenter","tileResolution","mapEvent","Attribution","Control","className","tipLabel","expandClassName","collapseLabel","collapseClassName","activeLabel","cssClasses","layers","visibleAttributions","collapsible","attribution","collapsed","compassClassName","button","zoomInClassName","zoomOutClassName","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","outElement","currentZoom","newZoom","defaults","controls","Zoom","Rotate","InteractionProperty","Interaction","mapBrowserEvent","active","pan","zoomByDelta","DoubleClickZoom","stopEvent","browserEvent","conditions","pass","altKeyOnly","altShiftKeysOnly","focus","targetElement","rootNode","activeElement","focusWithTabindex","mouseActionButton","never","pointerMove","singleClick","noModifierKeys","platformModifierKeyOnly","platformModifierKey","shiftKeyOnly","targetNotEditable","tagName","mouseOnly","primaryAction","PointerInteraction","handledUp","handled","centroid","pointerEvents","clientX","clientY","DragPan","targetPointers","centroidFromPointers","scaleCoordinate","centerpx","DragRotate","RenderBox","startPixel","endPixel","px","DragBoxEventType","DragBoxEvent","DragBox","completeBox","DragZoom","Key","KeyboardPan","keyEvent","mapUnitsDelta","KeyboardZoom","MouseWheelZoom","wheelEvent","timeLeft","useAnchor","PinchRotate","pointerOptions","rotationDelta","touch0","touch1","PinchZoom","scaleDelta","interactions","kinetic","GroupEvent","LayerGroup","layersArray","collectionEvent","currentLayers","pos","ownLayerState","defaultZIndex","MapRenderer","coordinateToPixelTransform","pixelToCoordinateTransform","checkWrapped","layerFilter","thisArg2","forEachFeatureAtCoordinate","translatedCoordinate","offsets","layerStates","numLayers","order","expireIconCache","CompositeMapRenderer","renderedLayerStates","previousElement","sourceState","removeLayerMapProperty","setLayerMapProperty","optionsInternal","createOptionsInternal","defaultControls","defaultInteractions","viewOptions","control","interaction","overlay","addLayersFrom","layerGroup","viewportPosition","scaleX","scaleY","eventPosition","group","viewCoordinate","currentDoc","interactionsArray","tileQueue","lowOnFrameBudget","postRenderFunctions","keyboardEventTarget","targetRoot","previousFrameState","equalsExtent","oldLayerGroup","computedStyle","oldSize","overlays","Overlay","panIntoViewOptions","mapRect","overlayRect","myMargin","offsetLeft","offsetRight","offsetTop","offsetBottom","centerPx","newCenterPx","panOptions","positioning","mapSize","posX","posY","TileRange","tileRange","VectorRenderTile","urlTileCoord","getSourceTiles","removeSourceTiles","defaults$3","chooseZoomOrResolution","config","mergedConfig","zoomResolution","createMapView","entry","globals","defs","PJD_3PARAM","PJD_7PARAM","PJD_GRIDSHIFT","PJD_WGS84","PJD_NODATUM","SRS_WGS84_SEMIMAJOR","SRS_WGS84_SEMIMINOR","SRS_WGS84_ESQUARED","SEC_TO_RAD","HALF_PI","SIXTH","RA4","RA6","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","exports","ignoredChar","lkey","testkey","processedKey","projStr","defData","paramObj","split","paramName","paramVal","paramOutname","params","unit","pm","PrimeMeridian","legalAxis","NEUTRAL","KEYWORD","NUMBER","QUOTED","AFTERQUOTE","ENDED","whitespace","latin","keyword","endThings","digets","Parser","char","newObjects","parseString","txt","mapit","thing","out","newObj","sExpr","knownTypes","rename","outName","inName","d2r","cleanWKT","wkt","setPropertiesFromWkt","authority","axisOrder","axis","geogcs","toMeter","renamer","list","lisp","that","def","parseProj","testObj","testDef","codeWords","testWKT","word","codes","checkMercator","auth","checkProjStr","ext","testProj","maybeProjStr","extend$2","msfnz","eccent","sinphi","cosphi","con","sign","adjust_lon","tsfnz","phi","com","phi2z","ts","eccnth","dphi","init","merc","identity","pt","projs","projStore","proj","exports$1","WGS84","eccentricity","rf","R_A","es","ep2","sphere","ellps","ellipse","Ellipsoid","datums","datum","datumCode","datum_params","nadgrids","loadedNadgrids","nadgrid","isLittleEndian","detectLittleEndian","header","readHeader","subgrids","readSubgrids","getNadgrids","grids","parseNadgridString","optional","secondsToRadians","seconds","nFields","decodeString","gridOffset","subHeader","readGridHeader","nodes","readGridNodes","lngColumnCount","latColumnCount","mapNodes","gridHeader","nodesOffset","gridRecordLength","gridShiftRecords","record","srsCode","json","parseCode","ourProj","datumDef","Datum","sphere_","dc_sphere","ecc","dc_eccentricity","datumObj","compareDatums","geodeticToGeocentric","Longitude","Latitude","Height","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","geocentricToGeodetic","genau","genau2","maxiter","P","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","X","Y","Z","geocentricToWgs84","datum_type","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricFromWgs84","x_tmp","y_tmp","z_tmp","checkParams","datum_transform","source_a","source_es","gridShiftCode","applyGridShift","dest_a","dest_b","dest_es","destGridShiftResult","attemptedGrids","outer","grid","subgrid","epsilon","applySubgridShift","pin","ct","tb","nadInterpolate","tol","dif","del","indx","frct","inx","f00","f10","f11","f01","m11","m10","m00","m01","adjust_axis","crs","denorm","xin","yin","zin","common","checkSanity","checkCoord","num","checkNotWGS","enforceAxis","wgs84","toPoint","hasZ","from","to","transformedArray","checkProj","proj4","fromProj","toProj","single","NUM_100K_SETS","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","A","I","O","V","mgrs","ll","accuracy","encode","LLtoUTM","UTMtoLL","degToRad","deg","radToDeg","rad","Lat","Long","eccSquared","k0","LongOrigin","eccPrimeSquared","T","C","LatRad","LongRad","LongOriginRad","ZoneNumber","UTMEasting","UTMNorthing","getLetterDesignator","utm","zoneLetter","zoneNumber","T1","C1","R1","D","phi1Rad","LetterDesignator","seasting","snorthing","get100kID","setParm","get100kSetForZone","setColumn","setRow","getLetter100kID","column","parm","colOrigin","rowOrigin","colInt","rowInt","rollover","twoLetter","mgrsString","hunK","sb","testChar","east100k","getEastingFromChar","north100k","getNorthingFromChar","getMinNorthing","remainder","sep","sepEasting","sepNorthing","accuracyBonus","sepEastingString","sepNorthingString","curCol","eastingValue","rewindMarker","curRow","northingValue","mgrsStr","C00","C02","C04","C06","C08","C22","C44","C46","C48","C66","C68","C88","pj_enfn","en","pj_mlfn","sphi","cphi","MAX_ITER","pj_inv_mlfn","delta_lon","sin_phi","cos_phi","al","als","cs","tq","ml","tan_phi","ds","temp","tmerc","sinh","hypot","log1py","asinhy","gatg","pp","B","cos_2B","h1","h2","clens","arg_r","hr1","hr2","cosh","clens_cmplx","arg_i","sin_arg_r","cos_arg_r","sinh_arg_i","cosh_arg_i","hi1","hi2","np","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","etmerc","adjust_zone","dependsOn","srat","esinp","exp","DEL_TOL","gauss","sinc","cosc","cosl","rho","sterea","ssfn_","phit","eccen","sinlat","coslat","sinX","cosX","rh","dlon","ce","Chi","stere","phy0","sinPhy0","semiMajorAxis","invF","flattening","k1","k2","k3","Sa1","Sa2","S","rotI","rotB","lambda","phy","prevPhy","iteration","somerc","TOL","isTypeA","typeAProjections","projectionName","cosph0","F","H","L","sinph0","J","gamma","gamma0","lamc","lam1","lam2","phi1","phi2","alpha_c","alp","gam","one_es","U","W","Qp","Sp","Tp","Vp","Up","omerc","sin1","cos1","ms1","ts1","sin2","cos2","ms2","ts2","ts0","rh1","lcc","gfi","deltav","eps","ro","fi1","ok","krovak","mlfn","e0","e3","e0fn","e1fn","e2fn","e3fn","gN","adjust_lat","imlfn","lam","nl","tl","asq","cl","ml1","nl1","rl1","tl1","dl","dsq","cass","qsfnz","S_POLE","N_POLE","EQUIT","OBLIQ","authset","coslam","sinlam","q","sinb","cosb","cCe","sCe","ab","cosz","sinz","authlat","P00","P01","P02","P10","P11","P20","APA","beta","laea","asinz","qs","phi1z","eccnts","aea","coslon","ksp","gnom","iqsfnz","cea","dlat","eqc","el","bl","tanphi","mln","mlnp","ma","poly","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_re","th_im","th_n_re","th_n_im","th_n_re1","th_n_im1","z_re","z_im","delta_x","delta_y","z_n_re","z_n_im","z_n_re1","z_n_im1","num_re","num_im","den_re","den_im","den2","d_psi_n","nzmg","mill","sinu","delta_theta","moll","eqdc","sinth","costh","gsq","msq","xx","yy","xys","c3","th1","vandg","Mlp","Ml","Nl1","Nl","psi","Az","G","GH","Hs","kp","cos_c","s3","s4","s5","cosAz","Ee","sinpsi","aeqd","ortho","FACE_ENUM","AREA_ENUM","xy","sinlon","qsc_shift_lon_origin","qsc_fwd_equat_face_theta","lp","nu","cosmu","tannu","tantheta","invert_sign","xa","slon","qsc","COEFS_X","COEFS_Y","FXC","FYC","RC1","NODES","poly3_val","coefs","poly3_der","newton_rapshon","f_df","max_err","iters","upd","robin","geocent","mode","omega","yt","ba","bm","bq","tpers","rone_es","v_x","v_y","v_z","v_zp","geos","A1","A2","A3","A4","paramLat","paramLatSq","paramLatPow6","EPS","NITER","fy","fpy","eqearth","EPS10","e_inv","e_fwd","s_inv","s_fwd","bonne","includedProjections","Proj","register","projCodes","getCachedProjection","code1","proj1","code2","proj2","addAliasForWFSFromGeoserver","epsgCode","epsgCodeNumber","registerProjections","namedProjections","Proj.addProjection","Proj.get","getProjections","getMapProjection","getProj4Projection","targetProjection","transformToMapProjection","transformFromMapProjection","layerList","initializeLayerList","layerConf","response","getLayerWhere","searchAttributes","getLayerList","getDisplayNamesOfFeatureAttributes","layerId","featureAttribute","attributes","displayName","rawLayerList","asImageLike","disposedError","defaultSize","DataTile","brokenDiagonalRendering_","drawTestTriangle","u1","u2","verifyBrokenDiagonalRendering","isBrokenDiagonalRendering","calculateSourceResolution","targetProj","sourceCenter","sourceResolution","targetMetersPerUnit","sourceMetersPerUnit","compensationFactor","calculateSourceExtentResolution","targetExtent","triangulation","sources","renderEdges","drawSingle","clipExtent","pixelRound","sourceDataExtent","stitchContext","stitchScale","inverseScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","triangle","u0","v0","sourceNumericalShiftX","sourceNumericalShiftY","augmentedMatrix","affineCoefs","steps","ud","vd","MAX_SUBDIVISION","MAX_TRIANGLE_WIDTH","Triangulation","maxSourceExtent","errorThreshold","destinationResolution","sourceMatrix","transformInvCache","transformInv","applyMatrix","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","maxSubdivision","leftBound","newTriangle","aSrc","bSrc","cSrc","dSrc","sourceQuadExtent","sourceCoverageX","sourceWorldWidth","wrapsX","needsSubdivision","targetQuadExtent","isNotFinite","centerSrc","bc","bcSrc","da","daSrc","abSrc","cd","cdSrc","ERROR_THRESHOLD","ReprojTile","sourceTileGrid","targetTileGrid","wrappedTileCoord","getTileFunction","maxTargetExtent","limitedTargetExtent","sourceProjExtent","errorThresholdInPixels","sourceRange","srcX","srcY","renderReprojected","leftToLoad","sourceListenKey","LRUCache","highWaterMark","getKeyZXY","getKey","hash","hashZXY","withinExtentAndZ","sourceKey","addTileToLookup","tilesByZ","existing","removeTileFromLookup","getRenderExtent","gridExtent","CanvasTileLayerRenderer","tileLayer","createTileCoord","tileCache","tileSource","tilePixelRatio","tileOrigin","tileSize","sourceRevision","initialZ","preload","wantedTiles","minZ","viewport","tileQueueKey","staleKeys","altZ","covered","allTilesIdle","viewResolution","viewCenter","frameExtent","canvasExtent","targetZ","nextExtent","renderExtent","tileState","parentZ","canvasScale","currentClip","clips","clipZs","currentZ","currentTilePixelSize","currentScale","originTileCoord","originTileExtent","tileGutter","xIndex","nextX","yIndex","nextY","transition","contextSaved","clip","postRenderFunction","tilesCount","tileCount","alphaChanged","usedTiles","TileProperty","BaseTileLayer","useInterimTilesOnError","TileLayer","CanvasImageLayerRenderer","imageLayer","imageSource","imageExtent","imageMapWidth","imageMapHeight","imageResolution","imageResolutionX","imageResolutionY","clipped","dw","dh","BaseImageLayer","ImageLayer","appendParams","uri","keyParams","zRegEx","xRegEx","yRegEx","dashYRegEx","renderXYZTemplate","expandUrl","urls","startCharCode","stopCharCode","charCode","tmpTileCoord","DECIMALS","TileGrid","restrictedTileRange","tempTileRange","tempExtent","tileCoordExtent","createOrUpdateTileRange","tileCoordZ","tileCoordX","tileCoordY","opt_tileCoord","reverseIntersectionPolicy","createOrUpdateTileCoord","opt_direction","fullTileRanges","WMTSTileGrid","createFromCapabilitiesMatrixSet","matrixSet","matrixLimits","matrixIds","origins","tileSizes","sizes","supportedCRSPropName","matrixIdsPropName","identifierPropName","scaleDenominatorPropName","topLeftCornerPropName","tileWidthPropName","tileHeightPropName","switchOriginXY","elt","matrixAvailable","elt_ml","tileWidth","tileHeight","getForProjection","createForProjection","extentFromProjection","createForExtent","resolutionsFromExtent","createXYZ","xyzOptions","gridOptions","half","createFromTemplate","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","tileCoordHash","TileSource","getTileGridForProjection","scaleSize","gridProjection","TileSourceEvent","TileEventType","UrlTile","tileUrlFunction","TileImage","defaultTileLoadFunction","thisProj","projKey","tileUrl","tilegrid","imageTile","fromResolutionLike","ReprojImage","getImageFunction","sourceImage","sourcePixelRatio","ImageSourceEventType","ImageSourceEvent","ImageSource","requestExtent","getRequestExtent","defaultImageLoadFunction","marginWidth","requestWidth","marginHeight","requestHeight","DEFAULT_VERSION","GETFEATUREINFO_IMAGE_SIZE","getRequestUrl","baseUrl","v13","getImageSrc","serverType","dpi","getRequestParams","request","createLoader","hidpi","getFeatureInfoUrl","projectionObj","baseParams","getLegendUrl","mpu","pixelSize","TileWMS","sourceProjectionObj","sourceProjCoord","tileExtent","version","ImageWMS","imageLoadFunction","OLCS_DEFAULT_OLCS_PROJECTION_CRS","generateSessionId","addOptionalParams","rawLayer","extendedParams","rawLayerParams","optionalParams","optionalParam","makeParams","defaultLoadFunction","isSecured","createLayerSource","createLayer","layerParams","updateSource","oldSessionId","newSessionId","getGfiURL","WMTS","requestEncoding","localContext","optionsFromCapabilities","wmtsCap","tileMatrixSets","supportedCRS","matrixSetObj","projConfig","switchXY","matrix","selectedMatrixLimit","tileMatrixValue","tileSpanX","tileSpanY","matrixSetExtent","wgs84BoundingBox","wgs84ProjectionExtent","wgs84MatrixSetExtent","gets","encodings","XML_SCHEMA_INSTANCE_URI","createElementNS","namespaceURI","qualifiedName","getDocument","getAllTextContent","normalizeWhitespace","getAllTextContent_","accumulator","isDocument","getAttributeNS","xml","makeArrayExtender","valueReader","objectStack","makeArrayPusher","makeReplacer","makeObjectPropertyPusher","makeObjectPropertySetter","makeChildAppender","nodeWriter","makeSimpleNodeFactory","fixedNodeName","fixedNamespaceURI","newNodeName","nodeName","OBJECT_PROPERTY_NODE_FACTORY","makeStructureNS","namespaceURIs","structure","structureNS","parseNode","parsersNS","pushParseAndPop","serialize","serializersNS","nodeFactory","pushSerializeAndPop","xmlSerializer_","getXMLSerializer","document_","XML","NAMESPACE_URI","readHref","readBooleanString","string","readDecimal","readDecimalString","readPositiveInteger","readNonNegativeIntegerString","readString","writeStringTextNode","NAMESPACE_URIS","PARSERS","readServiceIdentification","readServiceProvider","readOperationsMetadata","OWS","owsObject","ADDRESS_PARSERS","ALLOWED_VALUES_PARSERS","readValue","CONSTRAINT_PARSERS","readAllowedValues","CONTACT_INFO_PARSERS","readPhone","readAddress","DCP_PARSERS","readHttp","HTTP_PARSERS","readGet","OPERATION_PARSERS","readDcp","OPERATIONS_METADATA_PARSERS","readOperation","PHONE_PARSERS","REQUEST_METHOD_PARSERS","readConstraint","SERVICE_CONTACT_PARSERS","readContactInfo","SERVICE_IDENTIFICATION_PARSERS","SERVICE_PROVIDER_PARSERS","readServiceContact","href","OWS_NAMESPACE_URIS","readContents","WMTSCapabilities","WMTSCapabilityObject","CONTENTS_PARSERS","readLayer","readTileMatrixSet","LAYER_PARSERS","readStyle","readTileMatrixSetLink","readDimensions","readResourceUrl","readBoundingBox","readBoundingBoxWithCrs","STYLE_PARSERS","readLegendUrl","TMS_LINKS_PARSERS","readTileMatrixLimitsList","TMS_LIMITS_LIST_PARSERS","readTileMatrixLimits","TMS_LIMITS_PARSERS","DIMENSION_PARSERS","WGS84_BBOX_READERS","readCoordinates","TMS_PARSERS","readTileMatrix","TM_PARSERS","isDefault","resourceType","resource","legend","showErrorMessage","layerName","generateArrays","getWMTSCapabilities","createLayerSourceByDefinitions","attrs","resLength","createLayerSourceByCapabilities","layerIdentifier","capabilitiesOptions","tileMatrixSet","matrixSizes","scales","MatrixHeight","MatrixWidth","ScaleDenominator","wmts","FeatureFormat","transformGeometryWithOptions","write","featureProjection","equivalentProjection","fromProjection","toProjection","transformExtentWithOptions","GeometryConstructor","orientFlatCoordinates","createRenderFeature","createGeometry","JSONFeature","getObject","GeoJSON","geoJSONFeature","readGeometryInternal","geoJSONObject","geoJSONFeatureCollection","geoJSONFeatures","featureObject","readGeometry","writeGeometry","objects","readPointGeometry","readLineStringGeometry","readPolygonGeometry","readMultiPointGeometry","readMultiLineStringGeometry","readMultiPolygonGeometry","readGeometryCollectionGeometry","geometryObject","geoJSON","writePointGeometry","writeLineStringGeometry","writePolygonGeometry","writeMultiPointGeometry","writeMultiLineStringGeometry","writeMultiPolygonGeometry","writeGeometryCollectionGeometry","XMLFeature","GMLNS","ONLY_WHITESPACE_RE","GMLBase","localName","featureType","featureNS","defaultPrefix","ft","ns","featureTypes","asFeature","geometryName","attName","fid","ring","flatLinearRings","internalOptions","schemaLocation","MULTIGEOMETRY_TO_MEMBER_NODENAME","GML2","containerSrs","coordsGroups","flatLinearRing","multiSurface","surface","multiCurve","srsName","segments","curve","lines","rings","patches","parentNode","exteriorWritten","GML3","contextDimension","dim","asXYZ","srsDimension","posList","serializers","geom","GML","SHIFT_LEFT_32","SHIFT_RIGHT_32","TEXT_DECODER_MIN_LENGTH","utf8TextDecoder","PBF_VARINT","PBF_FIXED64","PBF_BYTES","PBF_FIXED32","Pbf","buf","readField","tag","startPos","isSigned","readVarintRemainder","readUtf8","writeBigVarint","str","writeUtf8","makeRoomForExtraLength","writePackedVarint","writePackedSVarint","writePackedBoolean","writePackedFloat","writePackedDouble","writePackedFixed32","writePackedSFixed32","writePackedFixed64","writePackedSFixed64","toNum","pbf","writeBigVarintLow","writeBigVarintHigh","lsb","extraLen","b0","bytesPerSequence","b3","lead","MVT","cmd","coordsLen","currentEnd","cmdLen","rawFeature","getGeometryType","ctor","PBF","pbfLayers","layersPBFReader","pbfLayer","readRawFeature","layerPBFReader","featurePBFReader","GML32","Filter$2","LogicalNary","Filter","And","Bbox","and","FEATURE_COLLECTION_PARSERS","TRANSACTION_SUMMARY_PARSERS","TRANSACTION_RESPONSE_PARSERS","readTransactionSummary","readInsertResults","QUERY_SERIALIZERS","TRANSACTION_SERIALIZERS","writeFeature","writeUpdate","writeDelete","writeProperty","writeNative","FEATURE_PREFIX","XMLNS","OGCNS","WFSNS","FESNS","SCHEMA_LOCATIONS","GML_FORMATS","WFS","featuresNS","writeGetFeature","completeFilter","bboxFilter","bboxFilterFn","andFilterFn","inserts","updates","deletes","baseObj","createTransactionRequest","serializeTransactionRequest","featurePrefix","gmlVersion","OGC_FID_PARSERS","fidParser","INSERT_RESULTS_PARSERS","writeOgcFidFilter","getTypeName","pair","nativeElement","GETFEATURE_SERIALIZERS","writeQuery","writeDuringFilter","writeLogicalFilter","writeNotFilter","writeBboxFilter","writeSpatialFilter","writeDWithinFilter","writeComparisonFilter","writeIsNullFilter","writeIsBetweenFilter","writeIsLikeFilter","writeResourceIdFilter","propertyNames","typeNameAttr","getFilterNS","writeFilterCondition","writePropertyName","writeExpression","timePeriod","writeTimeInstant","writeLiteral","lowerBoundary","upperBoundary","timeInstant","timePosition","isV13","readService","readCapability","COMMON_CAPABILITY_PARSERS","readRequest","readException","readCapabilityLayer","CAPABILITY_PARSERS","readUserDefinedSymbolization","CAPABILITY_PARSERS_V13","WMSCapabilities","wmsCapabilityObject","COMMON_SERVICE_PARSERS","readKeywordList","readContactInformation","SERVICE_PARSERS","SERVICE_PARSERS_V13","CONTACT_INFORMATION_PARSERS","readContactPersonPrimary","readContactAddress","CONTACT_PERSON_PARSERS","CONTACT_ADDRESS_PARSERS","EXCEPTION_PARSERS","COMMON_LAYER_PARSERS","readDimension","readAttribution","readAuthorityURL","readMetadataURL","readFormatOnlineresource","readExtent","readScaleHint","LAYER_PARSERS_V13","readEXGeographicBoundingBox","ATTRIBUTION_PARSERS","readSizedFormatOnlineresource","EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS","REQUEST_PARSERS","readOperationType","OPERATIONTYPE_PARSERS","readDCPType","DCPTYPE_PARSERS","readHTTP","FORMAT_ONLINERESOURCE_PARSERS","KEYWORDLIST_PARSERS","withCrs","geographicBoundingBox","westBoundLongitude","southBoundLatitude","eastBoundLongitude","northBoundLatitude","layerObject","parentLayerObject","queryable","cascaded","opaque","noSubsets","fixedWidth","fixedHeight","addKeys","childValue","replaceKeys","parentValue","dimensionObject","formatOnlineresource","authorityObject","metadataObject","MixedGeometryBatch","projectionTransform","featureUid","multiPolygonGeom","multiLineGeom","multiPointGeom","polygonGeom","pointGeom","lineGeom","flatCoords","verticesCount","multiPolygonEndss","polygonEnds","prevPolygonEnds","endIndex","multiLineEnds","multiPolygonEnds","ringsCount","ringsVerticesCount","ind","getFlatCoordinatesXY","getFlatCoordinatesXYM","currentRef","ref","featureFilter","filtered","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","STATIC_DRAW","DYNAMIC_DRAW","UNSIGNED_BYTE","UNSIGNED_SHORT","UNSIGNED_INT","FLOAT","CONTEXT_IDS","getContext","BufferUsage","WebGLArrayBuffer","usage","getArrayClassForType","ArrayType","fromTransform","mat4","ContextEventType","DEFAULT_VERTEX_SHADER","DEFAULT_FRAGMENT_SHADER","WebGLPostProcessingPass","gl","vertexShader","fragmentShader","verticesArray","textureSize","internalFormat","border","nextPass","preCompose","postCompose","canvasId","textureSlot","uniform","DefaultUniform","AttributeType","canvasCache","getSharedCanvasCacheKey","uniqueCanvasCacheKeyCount","getUniqueCanvasCacheKey","getOrCreateContext","cacheItem","WebGLHelper","uniforms","canvasCacheKey","bufferKey","bufferCache","webGlBuffer","disableAlphaBlend","enableDepth","frameBuffer","texture","slot","uniformName","attributeName","renderTarget","elementType","elementSize","numItems","offsetInBytes","loc","imageReady","program","shader","fragmentShaderSource","vertexShaderSource","message","programUid","attribName","location","computeAttributesStride","attr","getByteSizeFromType","BaseTileRepresentation","helper","WebGLLayerRenderer","incrementGroup","groupNumber","Uniforms","depthForZ","newTileRepresentationLookup","lookupHasTile","tileRepresentationLookup","addTileRepresentationToLookup","tileRepresentation","representationsByZ","getTileCoordKey","WebGLBaseTileLayerRenderer","createMat4","tileRepresentationCache","tilesWithAlpha","tileTransform","depth","tileZ","alphaLookup","tileCoordKey","tileWidthWithGutter","tileHeightWithGutter","aspectRatio","centerI","centerJ","tileScale","tileCenterI","tileCenterJ","resetTransform","rotateTransform","translateTransform","blend","PaletteTexture","computeOperatorFunctionName","numberToGlsl","arrayToGlsl","colorToGlsl","sizeToGlsl","stringToFloatMap","stringToFloatCounter","getStringNumberEquivalent","stringToGlsl","uniformNameForVariable","variableName","newCompilationContext","GET_BAND_VALUE_FUNC","PALETTE_TEXTURE_ARRAY","FEATURE_ID_PROPERTY_NAME","GEOMETRY_TYPE_PROPERTY_NAME","compilationContext","compile","createCompiler","compilers","propName","varName","compiledArgs","firstValue","secondValue","exponent","stop1","stop2","funcName","tests","band","xOffset","yOffset","ifBlocks","bandCount","colorIndex","bandIndex","textureName","numColors","palette","parsedValue","paletteName","paletteTexture","compiledIndex","compiler","LINESTRING_ANGLE_COSINE_CUTOFF","colorEncodeId","radix","divide","colorDecodeId","mult","breakDownFlatStyle","previousFilters","ruleStyles","currentFilter","stylesWithFilters","COMMON_HEADER","DEFAULT_STYLE","ShaderBuilder","attribute","varying","expressionToGlsl","packColor","UNPACK_COLOR_FN","getGlslSizeFromType","getGlslTypeFromType","computeHash","parseCommonSymbolProperties","builder","vertContext","getColorFromDistanceField","distanceField","fillColor","strokeColor","strokeFillRatio","shapeOpacity","parseImageProperties","textureId","parseImageOffsetProperties","sampleSize","offsetExpression","parseCircleProperties","fragContext","currentPoint","colorExpression","parseShapeProperties","numPoints","shapeField","parseIconProperties","sizeExpression","fullsize","shiftPx","offsetPx","parseStrokeProperties","sampleSizeExpression","spacingExpression","tintExpression","dashPattern","dashFunctionName","dashLengthsDef","totalLengthDef","currentDashOffset","distanceExpression","parseFillProperties","parseLiteralStyle","variables","parsedFilter","variable","glslType","functionName","defineSpecialInput","contextPropName","glslPropName","inVertContext","inFragContext","attrSize","WebGLWorkerMessageType","pushCustomAttributesInRenderInstructions","renderInstructions","customAttributes","batchEntry","currentIndex","shift","getCustomAttributesSize","generatePointRenderInstructions","batch","totalInstructionsCount","tmpCoords","renderIndex","generateLineStringRenderInstructions","generatePolygonRenderInstructions","tmpColor","WEBGL_WORKER","getWebGLWorker","createWebGLWorker","workerMessageCounter","Attributes","VectorStyleRenderer","styleOrShaders","enableHitDetection","asShaders","asRule","parseResult","hitDetectionAttributes","customAttributesDesc","compiled","evalContext","geometryBatch","filteredBatch","polygonBuffers","lineStringBuffers","pointBuffers","invertVerticesTransform","makeInverseTransform","polygonInstructions","lineStringInstructions","pointInstructions","messageId","messageType","handleMessage","received","verticesBuffer","indicesBuffer","buffers","preRenderCallback","renderCount","tmpArray4","WebGLRenderTarget","getWorldParameters","WebGLVectorLayerRenderer","batchInvertTransform","setFromTransform","multiplyTransform","mat4FromTransform","startWorld","viewNotMoving","extentChanged","sourceChanged","BaseVector","generatePromises","forHitDetection","disposeBuffersOfType","typeBuffers","WebGLVectorLayer","TileGeometry","styleRenderers","sourceTiles","sourceTile","tileOriginX","tileOriginY","BaseUniforms","WebGLVectorTileLayerRenderer","addBuilderParams","exisitingDiscard","discardFromMask","isShaders","shaders","tileRep","gutterExtent","IMAGE_REPLAYS","VECTOR_REPLAYS","CanvasVectorTileLayerRenderer","layerRevision","builderState","layerUid","tt","sourceTileCoord","sourceTileExtent","sharedExtent","builderExtent","bufferedExtent","executorGroupInstructions","replayExtent","renderingReplayGroup","CanvasExecutorGroup","renderedTiles","foundFeature","executorGroups","tileCoordString","tilePixel","hitDetectionImageData","visitedSourceTiles","tileFeatures","hifi","tiles","executorGroupZIndexContexts","usedZIndices","executorGroupZindexContext","zIndexContexts","tileClipContext","worldOffset","renderMode","replayTypes","tileClipContexts","clipContext","replayState","renderPixelRatio","renderScale","pixelScale","VectorTileLayer","defaultColors","defaultStyle","styleList","configuredLayers","configuredTools","mapMarkerPointStyleId","mapMarkerPolygonStyleId","additionalPolygonStyleId","highlightFeaturesPointStyleId","highlightFeaturesPolygonStyleId","highlightFeaturesLineStyleId","styleConf","featureViaUrlLayers","zoomToFeatureId","getStyleIdsFromLayers","styleIds","getStyleIdsFromTools","tool","styleIdInArray","getStyleIdForMapMarkerPoint","styleId","getStyleIdForHighlightFeaturesPoint","getStyleIdForHighlightFeaturesLine","getStyleIdForMapMarkerPolygon","getStyleIdForAdditionalMapMarkerPolygon","getStyleIdForHighlightFeaturesPolygon","getFeatureViaURLStyles","parseStyles","dataWithDefaultValue","filteredData","styleObject","initializeStyleList","styleGetters","Config","tools","addToStyleList","jsonStyles","returnStyleObject","styleList$1","getPathPartsFromPath","delimitor","letter","getValueFromObjectByPath","depthBarrier","pathParts","thousandsSeparator","delimAbs","delimDec","decPointPos","abs","dec","module","this","$","_","isObjectPath","prepareValue","propertyKey","parentKey","isPath","propertiesKey","getBooleanValue","appendSuffix","suffix","valueWithSuffix","prependPrefix","valueWithPrefix","getValueFromCondition","valueFromCondition","key2","addPropertiesToHtmlTag","htmltag","preparedValue","htmltagWithproperties","prop","prepareValueFromObject","mappingObj","serializer","date","offsetHours","offsetMinutes","dayjs","_c","_d","_e","_f","_g","mapAttributes","mappingObject","isNested","mappedProperties","newKey","getValueWithoutComma","getReferenceValue","featureProperties","valueIsObjectPath","referenceValue","compareValues","featureValue","checkProperty","featureProperty","checkProperties","getRulesForFeature","getIndexedRule","sequence","isSequenceValid","minValue","maxValue","getRuleForIndex","indexedRule","propertiesRule","fallbackRule","normalizeRgbColor","newColor","defaultArray","hexToRgb","hex","shorthandRegex","hexReplace","componentToHex","rgbToHex","returnColor","pArray","defaultPointStyle","defaultPolygonStyle","createVectorLayerRenderer","LocalWebGLLayer","createVectorTileLayerRenderer","VectorTile","invisible","grey","featureStyle","formatFeatureStyles","polygonFillColor","circleFillColor","formatFeatureGeometry","formatFeatureData","excludeTypes","valueAsNumber","valueIsTrue","valueIsFalse","afterLoading","excludeTypesFromParsing","isPointLayer","LayerConstructor","WebGLPointsLayer","Cluster","changed","mapDistance","clustered","neighbors","neighbor","searchCenter","createVectorSource","urlOrLoader","strategy","createClusterVectorSource","geometryFunction","getVersion","allowedVersions","onError","onLoad","onErrorFn","filteredFeatures","handleErrors","getFilterRequestParams","payload","loadWFS","responseString","loadWFSFilter","createUrl","bboxParam","option","webgl.afterLoading","webgl.createLayer","writeTransactionBody","transactionOptions","transactionMethod","transactionPosition","transaction","getExceptionFromTransactionResponse","xmlDocument","exception","exceptionText","sendTransaction","transactionSummary","parseDescribeFeatureTypeResponse","responseData","parsedResponse","foundElement","sequenceElements","sequenceElement","att","createReceivePossiblePropertiesUrl","receivePossibleProperties","loadFeaturesManually","layerAttributes","layerSource","getUrl","wfs","markerSvg","customStyles","setCustomStyles","marker","pointStyle","lineStyle","polygonStyle","circleStyle","geometryCollectionStyle","clusterDistance","setFeatureStyle","hideAllFeatures","showAllFeatures","showFeaturesById","featureIdList","bufferExtent","sourceZ","sourceTileState","listenChange","sourceTileKey","sourceTileUrl","newTile","createMinion","meta","imageOps","numBuffers","numBytes","images","arrays","pixels","createWorker","onMessage","worker","createFauxWorker","minion","terminated","Processor","threads","workers","inputs","job","slices","RasterEventType","RasterSourceEvent","RasterSource","createLayers","getLayerStatesArray","iMax","sourceOrLayer","sourceAttributions","lib","renderedResolution","imageDatas","getImageData","sharedContext","layerOrSource","jsonp","errback","callbackParam","script","cleanup","timer","TileJSON","requestJSONP","client","tileJSON","epsg4326Projection","attributionExtent","getDefaultExportFromCjs","csscolorparser","parseCSSColor_1","kCSSColorTable","clamp_css_byte","clamp_css_float","parse_css_int","parse_css_float","css_hue_to_rgb","m2","parseCSSColor","css_str","iv","ep","fname","Color","Color$1","convertLiteral","convertFunction","parameters","propertySpec","convertIdentityFunction","zoomAndFeatureDependent","featureDependent","zoomDependent","convertTokenString","convertZoomAndPropertyFunction","convertZoomFunction","convertPropertyFunction","getInterpolateOperator","featureFunctionParameters","featureFunctionStops","zoomStops","getFunctionType","appendStopPair","fixupDegenerateStepCurve","coalesce","getFallback","defaultValue","isStep","literal","ParsingError","ParsingError$1","Scope","bindings","Scope$1","NullType","ObjectType","ValueType","ErrorType","CollatorType","FormattedType","ResolvedImageType","array$1","itemType","toString$1","valueMemberTypes","checkSubtype","memberType","isValidType","provided","allowedTypes","isValidNativeType","Collator","caseSensitive","diacriticSensitive","locale","lhs","rhs","FormattedSection","fontStack","textColor","Formatted","sections","unformatted","section","serialized","ResolvedImage","validateRGBA","isValue","mixed","typeOf","Literal","Literal$1","RuntimeError","RuntimeError$1","types$2","Assertion","Assertion$1","FormatExpression","firstArg","nextTokenMayBeObject","lastExpression","content","kind","evaluateSection","evaluatedContent","ImageExpression","evaluatedImageName","types$1","Coercion","Coercion$1","geometryTypes","EvaluationContext","dX","dY","bX","bY","cached","EvaluationContext$1","CompoundExpression","evaluate","definition","availableOverloads","overloads","signature","signatureContext","ParsingContext$1","parsedArgs","argParseFailed","signatures","stringifySignature","actualTypes","registry","definitions","CompoundExpression$1","CollatorExpression","updateBBox","mercatorXfromLng","lng","mercatorYfromLat","boxWithinBox","getTileCoordinates","canonical","tilesAtZoom","onBoundary","rayIntersect","pointWithinPolygon","inside","len2","pointWithinPolygons","perp","twoSided","q1","q2","det1","det2","lineIntersectLine","vectorP","vectorQ","lineIntersectPolygon","lineStringWithinPolygon","lineStringWithinPolygons","getTilePolygon","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","resetBBox","getTilePoints","pointBBox","shifts","tilePoints","getTileLines","lineBBox","tileLines","tileLine","pointsWithinPolygons","tilePolygon","tilePolygons","linesWithinPolygons","Within","geojson","Within$1","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","Var$1","ParsingContext","scope","errors","expr","annotate","typeAnnotation","Expr","actual","isConstant","ec","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","lowerIndex","upperIndex","currentValue","nextValue","Step","outputType","labelKey","valueKey","labels","outputs","stopCount","Step$1","unitbezier","UnitBezier","p1x","p1y","p2x","p2y","t0","UnitBezier$1","Xn","Yn","Zn","deg2rad$1","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateLab","rgbToHcl","hclToRgb","hclColor","interpolateHue","interpolateHcl","lab","hcl","Interpolate","lower","upper","exponentialInterpolation","rest","controlPoints","outputLower","outputUpper","lowerValue","upperValue","difference","Interpolate$1","Coalesce","firstImage","Coalesce$1","Let","binding","Let$1","At$1","At","In","In$1","IndexOf","fromIndex","IndexOf$1","Match","cases","otherwise","labelContext","sortedLabels","groupedByOutput","outputLookup","outputIndex","coerceLabel","Match$1","Case","branches","test","Case$1","Slice","beginIndex","Slice$1","isComparableType","eq","neq","lt","gt","lteq","gteq","eqCollate","neqCollate","ltCollate","gtCollate","lteqCollate","gteqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","collator","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","Length","Length$1","expressions","has","varargs","isSupportedScript","supportsPropertyExpression","spec","supportsZoomExpression","supportsInterpolation","isFunction","StyleExpression","getDefaultValue","featureState","availableImages","formattedSection","featureTileCoord","featureDistanceData","isExpression","createExpression","getExpectedType","ZoomConstantExpression","ZoomDependentExpression","createPropertyExpression","isFeatureConstant$1","isZoomConstant","zoomCurve","findZoomCurve","childResult","types","unbundle","deepUnbundle","unbundledValue","isExpressionFilter","createFilter","layerType","convertFilter","filterExp","staticFilter","extractStaticFilter","filterSpec","compiledStaticFilter","filterFunc","globalProperties","dynamicFilterFunc","needFeature","compiledDynamicFilter","needGeometry","geometryNeeded","isDynamicFilter","unionDynamicBranches","collapseDynamicBooleanExpressions","collapsedExpression","subExpression","isBranchingDynamically","isRootExpressionDynamic","dynamicConditionExpressions","param","convertComparisonOp","convertNegation","convertDisjunctionOp","convertInOp","convertHasOp","filters","refProperties","deref","derefLayers","fontWeights","sp","italicRE","fontCache","mapboxToCssFont","cssData","fontFamilies","haveWeight","haveStyle","maybeWeight","previousPart","mb2css","mapboxBaseUrl","getMapboxPath","startsWith","normalizeSpriteUrl","token","styleUrl","mapboxPath","sprite","normalizeStyleUrl","mapboxSubdomains","normalizeSourceUrl","tokenParam","urlObject","sizeFactor","sub","functionCacheByStyleId","filterCacheByStyleId","getStyleId","glStyle","getStyleFunctionKey","olLayer","getFunctionCache","functionCache","getFilterCache","filterCache","deg2rad","degrees","defaultResolutions","createCanvas","getZoomForResolution","getResolutionForZoom","pendingRequests","fetchResource","metadata","transformedRequest","pendingRequest","getGlStyle","glStyleOrUrl","tilejsonCache","getTileJson","glSource","promise","blob","normalizedSourceUrl","tileJson","drawIconHalo","spriteImage","spriteImageData","haloWidth","haloColor","imageCanvas","imageContext","smoothstep","drawSDF","dist","hairSpacePool","applyLetterSpacing","letterSpacing","textWithLetterSpacing","joinSpaceString","getMeasureContext","measureCache","wrapText","em","hardLines","wrappedText","words","maxWidth","testLine","prevWidth","nextWidth","next","lineWords","lastWord","fontFamilyRegEx","stripQuotesRegEx","loadedFontFamilies","hasFontFamily","styleSheets","styleSheet","cssRules","cssRule","processedFontFamilies","getFonts","templateUrl","fontsKey","fontDescriptions","cssFont","fontDescription","fontUrl","markup","expressionData","rawExpression","compiledExpression","emptyObj$1","zoomObj","renderFeatureCoordinates","getValue","layoutOrPaint","functions","isExpr","getDeclutterMode","evaluateFilter","colorWithOpacity","templateRegEx","fromTemplate","styleFunctionArgs","stylefunction","sourceOrLayers","spriteData","spriteImageUrl","getImage","spriteImageSize","spriteImageUnSDFed","blobUrl","allLayers","layersBySourceLayer","mapboxLayers","patternCache","mapboxSource","sourceLayer","textHalo","onlyLayer","stylesLength","layerData","paint","fillIcon","icon_cache_key","placementAngle","iconImg","skipLabel","styleGeom","imageElement","iconRotationAlignment","xM","yM","dotProduct","iconSize","iconColor","iconCacheKey","iconOptions","circleRadius","circleStrokeColor","circleTranslate","circleColor","circleStrokeWidth","cache_key","textLineHeight","textSize","maxTextWidth","fontArray","textField","chunkFont","textTransform","wrappedLabel","textAnchor","symbolSpacing","textHaloWidth","textOffset","textTranslate","vOffset","hOffset","textRotationAlignment","textJustify","halfTextSize","textPadding","hillshade","elevationImage","elevationData","shadeData","dp","twoPi","halfPi","sunEl","sunAz","cosSunEl","sinSunEl","highlightColor","shadowColor","accentColor","encoding","pixelX","pixelY","z0","z1","dzdx","dzdy","aspect","accent","scaled","shade","scaledAccentColor","compositeShadeColor","slopeScaleBase","scaledSlope","cosIncidence","calculateElevation","getTileResolutions","completeOptions","applyStyle","sourceOrLayersOrOptions","optionsOrPath","sourceId","assignSource","setupVectorSource","targetSource","setupGeoJSONSource","spriteScale","get$1","spriteUrl","spritesJson","emptyObj","getSourceIdByRef","extentFromTileJSON","bounds","tr","sourceOptionsFromTileJSON","tileJSONSource","tileJSONDoc","sourceOptions","getBackgroundColor","glLayer","bg","setupBackgroundLayer","div","VectorTileSource","setupVectorLayer","getBboxTemplate","setupRasterSource","getTileUrl","bboxTemplate","setupRasterLayer","setupHillshadeLayer","Raster","geoJsonFormat","geoJsonUrl","extentUrl","setupGeoJSONLayer","prerenderRasterLayer","updateRasterLayerProperties","manageVisibility","mapOrGroup","layerMapboxLayerids","mapboxLayer","setupLayer","glLayers","hillshadeLayer","glSourceId","processStyle","promises","Map","layerIds","finalizeLayer","mapOrGroupOrElement","setStyle","sourceMinZoom","OL_DEFAULT_VECTOR_TILE_GRID_CRS","createTileGrid","epsg","tileGridParams","OpenLayersTileGrid","mustCreateTileGrid","createOptions","epsgTest","sourceParams","glStyleSourceId","olMap","getNextLinkFromFeatureCollection","featureCollection","loadSource","collectedFeatures","responseJson","nextLink","loadingParams","rawUrl","bboxValue","getLayerSource","__","oaf","createTerrainProvider","terrainProvider","setVisible","dataSources","dataSource","addEntity","rawEntity","allowPicking","headingPitchRoll","modelOptions","entityOptions","entity","heading","pitch","roll","addEntities","createDataSource","addedDataSource","createTileSet","mpapiTileset","Tileset","tileset","splitValues","isLayerVisibleInResolution","getLegendURLs","legendURL","typ","coordsToPairs","floatCoords","zoomTo","zoomToSearchResult","searchResult","assign","isArray","isObject","isPlainObject","slice","hasProp","proto","Utility","XMLDOMImplementationModule","XMLDOMImplementation","publicId","systemId","doctype","title","XMLDOMErrorHandlerModule","XMLDOMErrorHandler","XMLDOMStringListModule","XMLDOMStringList","require$$0","require$$1","XMLDOMConfigurationModule","XMLDOMConfiguration","NodeTypeModule","NodeType","XMLAttributeModule","XMLAttribute","XMLNamedNodeMapModule","XMLNamedNodeMap","XMLNode","require$$2","require$$3","require$$4","XMLElementModule","superClass","XMLElement","ref1","clonedSelf","clonedChild","attValue","newAttr","oldAttr","isId","idAttr","tagname","classNames","XMLCharacterDataModule","XMLCharacterData","XMLCDataModule","XMLCData","XMLCommentModule","XMLComment","XMLDeclarationModule","XMLDeclaration","standalone","XMLDTDAttListModule","XMLDTDAttList","elementName","attributeType","defaultValueType","XMLDTDEntityModule","XMLDTDEntity","pe","XMLDTDElementModule","XMLDTDElement","XMLDTDNotationModule","XMLDTDNotation","require$$5","require$$6","require$$7","XMLDocTypeModule","XMLDocType","pubID","sysID","ref2","XMLRawModule","XMLRaw","XMLTextModule","XMLText","XMLProcessingInstructionModule","XMLProcessingInstruction","XMLDummyModule","XMLDummy","XMLNodeListModule","XMLNodeList","DocumentPositionModule","DocumentPosition","XMLNodeModule","parent1","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","results","childNode","lastChild","ref3","refChild","insTarget","insValue","xmldec","clonedRoot","deep","other","handler","isDescendantChild","nodePos","thisPos","bind","me","XMLStringifierModule","XMLStringifier","regex","ampregex","WriterStateModule","WriterState","require$$14","require$$15","XMLWriterBaseModule","XMLWriterBase","filteredOptions","ref4","ref5","ref6","indentLevel","childNodeCount","firstChildNode","prettySuppressed","XMLStringWriterModule","XMLStringWriter","XMLDocumentModule","XMLDocument","writer","writerOptions","importedNode","elementId","eventInterface","root","whatToShow","require$$16","require$$17","require$$18","XMLDocumentCBModule","XMLDocumentCB","onData","onEnd","oldValidationFlag","XMLStreamWriterModule","XMLStreamWriter","stream","escapeCDATA","requiresCDATA","wrapCDATA","builder_1","opts","rootObj","attrkey","charkey","rootElement","rootName","_this","ReflectApply","receiver","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","eventsModule","defaultMaxListeners","checkListener","_getMaxListeners","doError","events","er","arrayClone","_addListener","prepend","onceWrapper","_onceWrap","wrapped","spliceOne","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","copy","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","inherits_browserModule","superCtor","TempCtor","streamBrowser","base64Js","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","extraBytes","maxChunkLength","ieee754","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","base64","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","createBuffer","encodingOrOffset","allocUnsafe","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","alloc","checked","fromArrayLike","arrayView","byteOffset","numberIsNaN","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","hexSliceLookupTable","bytes","newBuf","checkOffset","noAssert","mul","checkInt","maxBytes","limit","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","INVALID_BASE64_RE","base64clean","leadSurrogate","byteArray","dst","alphabet","table","i16","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","_toPropertyKey","_classCallCheck","instance","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_toPrimitive","prim","_require","_require2","inspect","custom","copyBuffer","buffer_list","BufferList","hasStrings","nb","destroy","cb","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","undestroy","errorOrDestroy","rState","wState","destroy_1","_inheritsLoose","subClass","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","search","endsWith","this_len","includes","determiner","msg","errorsBrowser","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","hwm","browser","deprecate","warned","deprecated","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","destroyImpl","_require$codes","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","noDecode","onwrite","current","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","holder","allBuffers","endWritable","callFinal","prefinish","need","corkReq","objectKeys","_stream_duplex","Readable","method","onend","onEndNT","copyProps","SafeBuffer","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","ERR_STREAM_PREMATURE_CLOSE","called","_len","_key","noop","isRequest","eos","readable","writable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","endOfStream","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_this2","createReadableStreamAsyncIterator","_Object$create","iterator","async_iterator","fromBrowser","_stream_readable","ReadableState","EElistenerCount","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","decoder","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","ev","nReadingNextTick","updateReadableListening","resume","resume_","paused","endReadableNT","iterable","_stream_transform","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","destroyed","call","pipe","popCallback","streams","pipeline","destroys","pipeline_1","streamBrowserify","EE","inherits","didOnEnd","isBufferEncoding","assertEncoding","utf16DetectIncompleteChar","base64DetectIncompleteChar","passThroughWrite","charStr","cr","sax","opt","SAXParser","SAXStream","createStream","clearBuffers","rootNS","emit","newf","checkBufferLength","maxAllowed","maxActual","closeText","emitNode","flushBuffers","streamWraps","SD","CDATA","DOCTYPE","XML_NAMESPACE","XMLNS_NAMESPACE","nameStart","nameBody","entityStart","entityBody","isWhitespace","isQuote","isAttribEnd","isMatch","notMatch","nodeType","textopts","strictFail","newTag","qname","qualName","local","attrib","qn","openTag","selfClosing","nv","closeTag","closeTo","parseEntity","entityLC","numStr","beginWhiteSpace","charAt","starti","pad","returnState","parsedEntity","stringFromCharCode","fromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","bom","prefixMatch","processors","undefined","nextHandle","tasksByHandle","currentlyRunningATask","registerImmediate","setImmediate","task","clearImmediate","handle","run","runIfPresent","installNextTickImplementation","canUsePostMessage","postMessageIsAsynchronous","oldOnMessage","installPostMessageImplementation","messagePrefix","onGlobalMessage","installMessageChannelImplementation","channel","installReadyStateChangeImplementation","html","installSetTimeoutImplementation","attachTo","main","Timeout","timeout","clearFn","msecs","defineProperty","processItem","process","error1","newValue","ontext","cdata","emptyStr","objClone","old","xpath","charChild","xml2js","ValidationError","searchTypes","showGeographicIdentifier","getShowGeographicIdentifier","flatten","findKey","oKey","getAllPropertiesFlat","propertyName","parseCoordinatesFromWkt","parseEntry","hausnummer","hausnummernzusatz","strassenname","_h","_i","_j","_k","_l","_m","xmlString","searchResults","gazetteerUrl","setGazetteerUrl","getGazetteerUrl","getIdQuery","searchStreetBeforeWord","encodedValue","searchGazetteer","abortController","searchAndParse","sortFunction","filterFunction","searchAndParseStreetAndHouseNumber","searchstring","searchHouseNumbers","streetResults","parsedStreetResults","allSearches","allResults","abortPreviousSearch","zoomToParams","searchAddress","searchStreets","searchDistricts","searchParcels","searchStreetKey","minCharacters","searches","streetName","houseNum","appendix","flattened","setBackgroundImage","backgroundImage","urlString","ping","capabilitiesUrl","statusCheckUrls","arbitraryTileRequests","statusCheckUrl","status","fetchDeleteParams","fetchGetParams","fetchPostParams","body","fetchParams","fetchUrl","processUrl","processList","nextLinkObject","link","processes","processDescription","processId","executeProcess","jobList","jobs","jobStatus","jobId","cancelJob","jobResults","initialCreateMap","addPlugins","plugins","originalCreateMap","initializePlugin","resetPlugins","emptyObject","isUndef","isDef","isTrue","isFalse","isPrimitive","_toString","isRegExp","isValidArrayIndex","isPromise","replacer","toNumber","makeMap","expectsLowerCase","isReservedAttribute","remove$2","hasOwnProperty","hasOwn","hit","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","nativeBind","toArray","_from","toObject","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","hasChanged","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","unicodeRegExp","isReserved","enumerable","bailRE","parsePath","hasProto","inBrowser","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","supportsPassive","_isServer","isServerRendering","devtools","isNative","Ctor","hasSymbol","_Set","Set","currentInstance","getCurrentInstance","setCurrentInstance","vm","VNode","elm","componentOptions","asyncFactory","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","uid$2","pendingCleanupDeps","cleanupDeps","dep","Dep","info","subs","targetStack","pushTarget","popTarget","arrayProto","arrayMethods","methodsToPatch","original","ob","inserted","arrayKeys","NO_INITIAL_VALUE","shouldObserve","toggleObserving","mockDep","Observer","shallow","mock","defineReactive","observe","ssrMockReactivity","isRef","customSetter","observeEvenIfShallow","setter","childOb","dependArray","newVal","isReadonly","reactive","makeReactive","shallowReactive","isReactive","isShallow","isProxy","toRaw","observed","raw","markRaw","RefFlag","ref$1","createRef","shallowRef","rawValue","triggerRef","unref","proxyRefs","objectWithRefs","proxy","proxyWithRefUnwrap","customRef","factory","toRefs","toRef","rawToReadonlyFlag","rawToShallowReadonlyFlag","readonly","createReadonly","existingFlag","existingProxy","defineReadonlyProperty","shallowReadonly","computed","getterOrOptions","debugOptions","onlyGetter","watcher","Watcher","WATCHER","WATCHER_CB","WATCHER_GETTER","WATCHER_CLEANUP","watchEffect","effect","doWatch","watchPostEffect","watchSyncEffect","INITIAL_WATCHER_VALUE","watch","immediate","flush","invokeWithErrorHandling","forceTrigger","isMultiSource","traverse","onCleanup","baseGetter_1","queueWatcher","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","effectScope","recordEffectScope","getCurrentScope","onScopeDispose","provide","resolveProvided","parentProvides","inject","treatDefaultAsFactory","provides","normalizeEvent","capture","createFnInvoker","fns","invoker","updateListeners","on","oldOn","remove","createOnceHandler","cur","mergeVNodeHook","hookKey","hook","oldHook","wrappedHook","extractPropsFromVNodeData","propOptions","altKey","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","resolveFilter","resolveAsset","isKeyNotMatch","expect","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","_loop_1","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","tree","markStatic","markOnce","isOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","prependModifier","symbol","installRenderHelpers","resolveSlots","slots","name_1","name_2","isAsyncPlaceholder","normalizeScopedSlots","ownerVm","scopedSlots","normalSlots","prevScopedSlots","hasNormalSlots","isStable","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","normalized","initSetup","setup","createSetupContext","setupResult","syncSetupProxy","initSlotsProxy","exposed","defineProxyAttr","syncSetupSlots","useSlots","useAttrs","useListeners","mergeDefaults","initRender","parentVnode","renderContext","createElement$1","parentData","currentRenderingInstance","renderMixin","Vue","nextTick","_parentVnode","prevInst","prevRenderInst","ensureCtor","comp","createAsyncPlaceholder","resolveAsyncComponent","baseCtor","owner","owners_1","sync_1","timerLoading_1","timerTimeout_1","forceRender_1","renderCompleted","reject_1","reason","res_1","getFirstComponentChild","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","createComponent","applyNS","registerDeepBindings","force","hooks","globalHandleError","logError","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","timerFunc","p_1","counter_1","observer","textNode_1","_resolve","useCssModule","mod","useCssVars","vars","defineAsyncComponent","loadingComponent","errorComponent","userOnError","retries","retry","thisRequest","userRetry","userFail","component","createLifeCycle","hookName","injectHook","mergeLifecycleHook","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onActivated","onDeactivated","onServerPrefetch","onRenderTracked","onRenderTriggered","injectErrorCapturedHook","onErrorCaptured","defineComponent","seenObjects","_traverse","seen","isA","depId","uid$1","expOrFn","isRenderWatcher","initEvents","updateComponentListeners","target$1","add$1","remove$1","createOnceHandler$1","_target","onceHandler","oldListeners","eventsMixin","hookRE","i_1","cbs","activeInstance","setActiveInstance","prevActiveInstance","initLifecycle","lifecycleMixin","hydrating","prevEl","prevVnode","restoreActiveInstance","wrapper","callHook$1","mountComponent","updateComponent","watcherOptions","preWatchers","updateChildComponent","propsData","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","prevVNode","prevListeners","propKeys","validateProp","isInInactiveTree","activateChildComponent","direct","deactivateChildComponent","setContext","prevScope","handlers","queue","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","performance_1","sortCompareFn","flushSchedulerQueue","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueActivatedComponent","initProvide","provideOption","initInjections","resolveInject","provideKey","provideDefault","FunctionalRenderContext","contextVm","isCompiled","needNormalization","createFunctionalComponent","cloneAndMarkFunctionalResult","vnodes","mergeProps","getComponentName","componentVNodeHooks","mountedNode","createComponentInstanceForVnode","oldVnode","componentInstance","hooksToMerge","resolveConstructorOptions","transformModel","installComponentHooks","inlineTemplate","toMerge","mergeHook","merged","strats","mergeData","recursive","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","parent_1","defaultStrat","normalizeProps","normalizeInject","normalizeDirectives$1","dirs","mergeOptions","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","getType","functionTypeCheckRE","isSameType","expectedTypes","sharedPropertyDefinition","initState","initProps$1","initMethods","initData","initComputed$1","initWatch","propsOptions","isRoot","getData","computedWatcherOptions","watchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","methods","createWatcher","stateMixin","dataDef","propsDef","initMixin$1","initInternalComponent","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","modified","latest","sealed","initUse","plugin","installedPlugins","initMixin","mixin","initExtend","cid","extendOptions","Super","SuperId","cachedCtors","Sub","initProps","initComputed","Comp","initAssetRegisters","_getComponentName","pruneCache","keepAliveInstance","_vnode","$vnode","pruneCacheEntry","patternTypes","KeepAlive","vnodeToCache","keyToCache","include","exclude","builtInComponents","initGlobalAPI","configDef","Vue$1","isReservedAttr","acceptValue","mustUseProp","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","renderClass","concat","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","isHTMLTag","isSVG","isReservedTag","getTagNamespace","unknownElementCache","isUnknownElement","isTextInputType","query","selected","createElement","namespace","createTextNode","createComment","insertBefore","referenceNode","removeChild","appendChild","nextSibling","setTextContent","setStyleScope","scopeId","nodeOps","registerRef","isRemoval","refValue","$refsValue","isFor","_isString","_isRef","refs","setSetupRef","_setupState","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","insert","isReactivated","initComponent","reactivateComponent","isPatchable","innerNode","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","rm","i_3","updateChildren","oldCh","newCh","removeOnly","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","oldKeyToIdx","idxInOld","vnodeToMove","canMove","patchVnode","findIdxInOld","i_5","hydrate","invokeInsertHook","initial","i_6","isRenderedModule","inVPre","childrenMatch","i_7","fullInvoke","isInitialPatch","isRealElement","oldElm","patchable","i_8","i_9","insert_1","i_10","directives","updateDirectives","_update","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldDir","callHook","callInsert","emptyModifiers","getRawDirName","setupDef","baseModules","updateAttrs","oldAttrs","setAttr","isInPre","baseSetAttr","blocker_1","updateClass","oldData","cls","transitionClass","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","event_1","useMicrotaskFix","attachedTimestamp_1","original_1","updateDOMListeners","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","svg","checkVal","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","modifiers","domProps","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","getStyle","checkChild","styleData","cssVarRE","importantRE","setProp","normalizedName","vendorNames","emptyStyle","capName","updateStyle","oldStaticStyle","oldStyleBinding","oldStyle","newStyle","whitespaceRE","addClass","removeClass","tar","resolveTransition","autoCssTransition","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","getTransitionInfo","propCount","ended","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","css","enterClass","enterToClass","enterActiveClass","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","isValidDuration","leave","leaveClass","leaveToClass","leaveActiveClass","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","trigger","directive","setSelected","onCompositionStart","onCompositionEnd","prevOptions_1","curOptions_1","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","locateNode","show","originalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","hasParentTransition","isSameChild","isNotTextNode","isVShowDirective","Transition","oldRawChild","delayedLeave_1","TransitionGroup","prevChildren","rawChildren","transitionData","kept","moveClass","callPendingCbs","recordPosition","applyTranslation","el_1","oldPos","newPos","platformComponents","extend$1","applyMixin","vuexInit","_init","devtoolHook","devtoolPlugin","store","targetState","mutation","action","find","deepCopy","forEachValue","partial","Module","rawModule","runtime","rawState","prototypeAccessors","ModuleCollection","rawRootModule","this$1","newModule","rawChildModule","targetModule","Store","install","dispatch","commit","installModule","resetStoreVM","useDevtools","prototypeAccessors$1","_type","_payload","_options","unifyObjectStyle","genericSubscribe","parentState","getNestedState","resetStore","committing","hot","oldVm","wrappedGetters","enableStrictMode","rootState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","makeLocalGetters","gettersProxy","splitPos","localType","rawGetter","_Vue","mapState","normalizeNamespace","normalizeMap","getters","getModuleByNamespace","mapMutations","mutations","mapGetters","mapActions","actions","createNamespacedHelpers","isValidMap","createLogger","stateBefore","stateAfter","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","times","maxLength","LARGE_ARRAY_SIZE","HASH_UNDEFINED","HOT_COUNT","HOT_SPAN","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsTypedArray","baseTimes","iteratee","baseUnary","overArg","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","nativeObjectToString","objectCtorString","reIsNative","Symbol","Uint8Array","getPrototype","objectCreate","propertyIsEnumerable","splice","symToStringTag","getNative","nativeIsBuffer","nativeMax","nativeNow","nativeCreate","baseCreate","Hash","entries","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isBuffer","isTypedArray","skipIndexes","isIndex","assignMergeValue","baseAssignValue","assignValue","objValue","baseFor","createBaseFor","baseGetTag","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsNative","isMasked","toSource","baseIsTypedArray","isLength","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","srcIndex","customizer","srcValue","baseMergeDeep","safeGet","keysIn","mergeFunc","stacked","isCommon","isTyped","isArrayLikeObject","copyArray","cloneBuffer","cloneTypedArray","toPlainObject","initCloneObject","baseRest","setToString","overRest","baseSetToString","constant","isDeep","cloneArrayBuffer","arrayBuffer","typedArray","copyObject","isNew","createAssigner","assigner","guard","isIterateeCall","fromRight","keysFunc","isKeyable","isOwn","unmasked","isArrayLike","otherArgs","shortOut","lastCalled","stamp","stubFalse","merge","settify","generateSimpleMutations","moduleState","generateSimpleGetters","noop$4","defer","rej","makeString","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","Empty","stackIndex","setPath","pushPath","getPath","getPathWithDefaults","deepExtend","overwrite","regexEscape","_entityMap","escape","RegExpCache","capacity","regExpFromCache","regExpNew","looksLikeObjectPathRegExpCache","looksLikeObjectPath","nsSeparator","keySeparator","possibleChars","matched","ki","deepFind","tokens","nextPath","getCleanedCode","consoleLogger","Logger$1","Logger","concreteLogger","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","baseLogger","numListeners","_ref","numTimesAdded","_ref2","ResourceStore","ignoreJSONStructure","resources","pack","postProcessor","translator","processor","checkedLoadedFor","Translator","services","resolved","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","lastKey","returnDetails","appendNamespaceToCIMode","resUsedKey","resExactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","handleAsObject","resTypeIsArray","newKeyToUse","deepKey","usedDefault","usedKey","needsPluralHandling","hasDefaultValue","defaultValueSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","resForMissing","updateMissing","fk","lngs","fallbackLngs","send","specificDefaultValue","defaultForMissing","language","suffixes","skipOnVariables","nestBef","na","nestAft","postProcess","postProcessorNames","exactUsedKey","usedLng","usedNS","extracted","needsContextHandling","finalKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","possibleKey","optionsKeys","useOptionsReplaceForData","LanguageUtil","formattedCode","specialCases","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","sets","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","createRules","PluralResolver","languageUtils","cleanedCode","lngPart","pluralCategory1","pluralCategory2","pluralCategory","returnSuffix","deepFindWithDefaults","regexSafe","Interpolator","escape$1","escapeValue","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","getOrResetRegExp","existingRegExp","replaces","handleFormat","missingInterpolationHandler","todo","matchedVar","safeValue","clonedOptions","handleHasOptions","inheritedOptions","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","parseFormatStr","formatStr","formatName","formatOptions","optStr","trimmedKey","createCachedFormatter","optForCache","formatter","Formatter","formats","mem","formatted","valOptions","removePending","Connector","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","loadedKeys","fcName","tried","wait","fallbackValue","isUpdate","clb","transformOptions","bindMemberFunctions","inst","I18n","defOpts","createClassOnDemand","ClassOrObject","lu","deferred","finish","usedCallback","append","li","lngInLngs","setLngProps","setLng","keyPrefix","_this3","fixedT","resultKey","fallbackLng","lastLng","loadNotPending","loadState","preResult","preloaded","newLngs","rtlLngs","forkResourceStore","mergedOptions","use","getCluster","cluster","getInitialState","CapabilitiesModule","previous","service","DrawEventType","DrawEvent","getTraceTargets","targets","appendGeometryTraceTargets","getSquaredDistance","getCoordinate","getCumulativeSquaredDistance","lowIndex","highIndex","lowWholeIndex","highWholeIndex","interpolateCoordinate","appendTraceTarget","polys","sharedUpdateInfo","getTraceTargetUpdate","traceState","snapTolerance","closestTargetDistance","newTargetIndex","newEndIndex","targetIndex","minSegmentDistance","coordinateIndex","rel","getPointSegmentRelationship","newTarget","considerBothDirections","newCoordinate","forwardDistance","reverseDistance","sharedRel","py","getMode","squaredLength","squaredCoordinateDistance","getDefaultStyleFunction","trace","move","lowerLeft","upperRight","previouslyForward","currentlyForward","toIndex","updatedTraceTarget","oldTarget","tracing","startingToDraw","downPx","clickPx","at","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","sketchLineGeom","sketchFeature","newDrawing","ending","sketchFeatures","overlaySource","createBox","boxCoordinates","CIRCLE_CENTER_INDEX","CIRCLE_CIRCUMFERENCE_INDEX","tempSegment","ModifyEventType","ModifyEvent","Modify","rBush","nodesToRemove","nodeToRemove","segmentData","centerSegmentData","circumferenceSegmentData","featureSegments","vertexFeature","pixelCoordinate","insertVertices","vertex","vertexExtent","segmentDataMatches","componentSegments","compareIndexes","segmentDataMatch","closestVertex","closestOnSegmentData","dragSegment","coordinateDistance","sortByDistance","projectedDistanceToSegmentDataSquared","hitPointGeometry","viewExtent","closestSegment","vertexPixel","vertexSegments","pixel1","pixel2","squaredDist1","squaredDist2","geometryUid","rTree","newSegmentData","newSegmentData2","dragSegments","segmentsByFeature","deleted","newIndex","pointCoordinates","distanceToCenterSquared","distanceToCircumference","SelectEventType","SelectEvent","deselected","originalFeatureStyles","Select","toggle","SnapEventType","SnapEvent","getFeatureFromEvent","Snap","feature_uid","segmenter","segmentsData","featuresToUpdate","unregister","currentMap","projectedCoordinate","segmentsLength","squaredPixelTolerance","getResult","tempVertexCoord","segmentStart","segmentEnd","TranslateEventType","TranslateEvent","startCoordinate","newViewCoordinate","lastViewCoordinate","oldMap","createPanAndZoomInteractions","hasWindowSize","hasSmallScreen","SMALL_DISPLAY_HEIGHT","SMALL_DISPLAY_WIDTH","InvisibleStyle","isVisible","diagonal","zigLine","namedHatches","makeCalculateAbsolutePosition","relativePosition","drawSegment","calculateAbsolutePosition","rect","waypoints","waypoint","getRadiusOrRadius","endAngle","counterclockwise","rotateContextCenter","halfSize","drawHatch","hatchDefinition","draw","getPolygonFillHatch","patternColor","imgSizeMulti","defaultStroke","defaultStrokeWidth","defaultFill","defaultHoverFill","defaultSelectionFill","defaultUnselectableFill","getImagePattern","makeMarker","makeMultiMarker","clusterSize","memoizeStyle","getMarker","singleCache","multiCache","multi","markerStyle","getStyleFunction","fallbackFill","getDefaultStyle","getHoveredStyle","getSelectedStyle","getUnselectableStyle","resolveClusterClick","setLayerId","lastClickEvent","hovered","localSelectionStyle","updateSelection","configuration","centerOnFeature","selectedCluster","useExtendedMasterportalapiMarkers","hoverStyle","selectionStyle","unselectableStyle","isSelectable","clusterClickZoom","dispatchOnMapSelect","originalStyleFunction","isMultiFeature","lastZoom","baseFeature","addInterceptor","secureServiceUrlRegex","originalFetch","originalConfig","checkServiceAvailability","statusCode","i18next","mutationLogger","Vuex","makeStore","mapConfiguration","moveHandle","moveHandleActionButton","components","setCenter","setZoom","locales","storeModule","setupActionName","map2","__WEBPACK_EXTERNAL_MODULE_vue__","installedModules","__webpack_require__","moduleId","__webpack_exports__","_VSheet__WEBPACK_IMPORTED_MODULE_1__","_VBtn__WEBPACK_IMPORTED_MODULE_2__","_VIcon__WEBPACK_IMPORTED_MODULE_3__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_4__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_5__","_mixins_transitionable__WEBPACK_IMPORTED_MODULE_6__","_util_mixins__WEBPACK_IMPORTED_MODULE_7__","_util_console__WEBPACK_IMPORTED_MODULE_8__","_util_helpers__WEBPACK_IMPORTED_MODULE_9__","__assign","classes","setColor","_VAlert__WEBPACK_IMPORTED_MODULE_0__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__","_util_mixins__WEBPACK_IMPORTED_MODULE_2__","_util_helpers__WEBPACK_IMPORTED_MODULE_3__","_VApp__WEBPACK_IMPORTED_MODULE_0__","_VToolbar_VToolbar__WEBPACK_IMPORTED_MODULE_1__","_directives_scroll__WEBPACK_IMPORTED_MODULE_2__","_mixins_applicationable__WEBPACK_IMPORTED_MODULE_3__","_mixins_scrollable__WEBPACK_IMPORTED_MODULE_4__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_5__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__","_util_helpers__WEBPACK_IMPORTED_MODULE_7__","_util_mixins__WEBPACK_IMPORTED_MODULE_8__","baseMixins","threshold","scrollOffScreen","_VIcon__WEBPACK_IMPORTED_MODULE_0__","_VBtn_VBtn__WEBPACK_IMPORTED_MODULE_1__","vue__WEBPACK_IMPORTED_MODULE_2__","vue__WEBPACK_IMPORTED_MODULE_2___default","defaultSlot","_mixins_registrable__WEBPACK_IMPORTED_MODULE_0__","_util_helpers__WEBPACK_IMPORTED_MODULE_1__","_services_goto_easing_patterns__WEBPACK_IMPORTED_MODULE_2__","_VAppBar__WEBPACK_IMPORTED_MODULE_0__","_VAppBarNavIcon__WEBPACK_IMPORTED_MODULE_1__","_VAppBarTitle__WEBPACK_IMPORTED_MODULE_2__","_VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_2__","_util_mergeData__WEBPACK_IMPORTED_MODULE_3__","_util_helpers__WEBPACK_IMPORTED_MODULE_4__","defaultMenuProps","queryText","itemText","oldVal","preSelectedItem_1","keyCode","curIndex","curItem","nextIndex","nextItem","currentItem","currentItemText","_VAutocomplete__WEBPACK_IMPORTED_MODULE_0__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__","_mixins_measurable__WEBPACK_IMPORTED_MODULE_2__","_mixins_roundable__WEBPACK_IMPORTED_MODULE_3__","_util_mixins__WEBPACK_IMPORTED_MODULE_5__","_VAvatar__WEBPACK_IMPORTED_MODULE_0__","_VIcon_VIcon__WEBPACK_IMPORTED_MODULE_1__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_3__","_mixins_transitionable__WEBPACK_IMPORTED_MODULE_5__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_6__","_util_helpers__WEBPACK_IMPORTED_MODULE_8__","__rest","lang","badge","_VBadge__WEBPACK_IMPORTED_MODULE_0__","_VAvatar__WEBPACK_IMPORTED_MODULE_2__","_transitions__WEBPACK_IMPORTED_MODULE_4__","_mixins_mobile__WEBPACK_IMPORTED_MODULE_5__","top","_VBanner__WEBPACK_IMPORTED_MODULE_0__","_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__","_mixins_button_group__WEBPACK_IMPORTED_MODULE_2__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__","_mixins_measurable__WEBPACK_IMPORTED_MODULE_4__","_mixins_proxyable__WEBPACK_IMPORTED_MODULE_5__","_mixins_scrollable__WEBPACK_IMPORTED_MODULE_6__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_7__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__","_util_mixins__WEBPACK_IMPORTED_MODULE_9__","_util_console__WEBPACK_IMPORTED_MODULE_10__","_util_helpers__WEBPACK_IMPORTED_MODULE_11__","_VBottomNavigation__WEBPACK_IMPORTED_MODULE_0__","_VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__","_VBottomSheet__WEBPACK_IMPORTED_MODULE_0__","_VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__","_VBreadcrumbsDivider__WEBPACK_IMPORTED_MODULE_2__","_util_mixins__WEBPACK_IMPORTED_MODULE_4__","_util_helpers__WEBPACK_IMPORTED_MODULE_5__","hasSlot","_util_helpers__WEBPACK_IMPORTED_MODULE_0__","_mixins_routable__WEBPACK_IMPORTED_MODULE_0__","_util_mixins__WEBPACK_IMPORTED_MODULE_1__","_util_helpers__WEBPACK_IMPORTED_MODULE_2__","_VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__","_VProgressCircular__WEBPACK_IMPORTED_MODULE_2__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_3__","_mixins_elevatable__WEBPACK_IMPORTED_MODULE_5__","_mixins_routable__WEBPACK_IMPORTED_MODULE_7__","_mixins_sizeable__WEBPACK_IMPORTED_MODULE_8__","_typeof","__read","ar","defaultRipple","breakingProps","replacement","_VBtn__WEBPACK_IMPORTED_MODULE_0__","_mixins_button_group__WEBPACK_IMPORTED_MODULE_1__","_util_mixins__WEBPACK_IMPORTED_MODULE_3__","_VBtnToggle__WEBPACK_IMPORTED_MODULE_0__","_mixins_calendar_with_events__WEBPACK_IMPORTED_MODULE_0__","_util_props__WEBPACK_IMPORTED_MODULE_1__","_util_timestamp__WEBPACK_IMPORTED_MODULE_2__","_VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__","_VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__","_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_5__","_VCalendarCategory__WEBPACK_IMPORTED_MODULE_6__","_util_parser__WEBPACK_IMPORTED_MODULE_7__","around","maxDays","weekdays","categories","days","spanYears","spanMonths","lastStart","lastEnd","amount","moved","mover","minutes","required","timestamp","categoryMap_1","category","categoryLength_1","day","_VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__","_util_props__WEBPACK_IMPORTED_MODULE_3__","_util_parser__WEBPACK_IMPORTED_MODULE_4__","__spreadArray","cat","headerTitle","categoryName","categoryIndex","styler","_directives_resize__WEBPACK_IMPORTED_MODULE_1__","_mixins_calendar_with_intervals__WEBPACK_IMPORTED_MODULE_3__","pane","nativeEvent","short","shower","_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_1__","_VBtn__WEBPACK_IMPORTED_MODULE_1__","_mixins_calendar_base__WEBPACK_IMPORTED_MODULE_2__","_util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_4__","_util_props__WEBPACK_IMPORTED_MODULE_5__","_util_timestamp__WEBPACK_IMPORTED_MODULE_6__","minDays","today","longOptions","shortOptions","_tms","dayIdentifier","outside","weekDays","weeks","week","weekNumber","weekNodes","determineDay","hasMonth","_VCalendar__WEBPACK_IMPORTED_MODULE_0__","_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__","_VCalendarCategory__WEBPACK_IMPORTED_MODULE_4__","_util_mixins__WEBPACK_IMPORTED_MODULE_0__","_mixins_localable__WEBPACK_IMPORTED_MODULE_2__","_mixins_mouse__WEBPACK_IMPORTED_MODULE_3__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_4__","_times__WEBPACK_IMPORTED_MODULE_5__","_directives_resize__WEBPACK_IMPORTED_MODULE_6__","_util_props__WEBPACK_IMPORTED_MODULE_7__","_util_timestamp__WEBPACK_IMPORTED_MODULE_8__","reversed","_short","_directives_ripple__WEBPACK_IMPORTED_MODULE_1__","_calendar_base__WEBPACK_IMPORTED_MODULE_2__","_modes__WEBPACK_IMPORTED_MODULE_4__","_util_timestamp__WEBPACK_IMPORTED_MODULE_5__","_util_events__WEBPACK_IMPORTED_MODULE_6__","WIDTH_FULL","WIDTH_START","MINUTES_IN_DAY","timedEvent","withTime","ampm","eventHeight","eventsMap","parentBounds","eventsSorted","hidden","bottom","hide","eventMarginBottom","weekdayIdentifier","scopeInput","overlapsNoon","singline","formatTime","timeSummary","eventSummary","delimiter","identifier","firstWeekday","getSlotChildren","mapper","timed","visuals","visual","mapped","slotDay","slotDayHeader","slotDayBody","_day","_calendar_base__WEBPACK_IMPORTED_MODULE_0__","shortHourOptions","tms","isFirst","_interval","baseMinutes","touchEvent","mouseEvent","touches","addIntervals","addMinutes","gap","vue__WEBPACK_IMPORTED_MODULE_0__","vue__WEBPACK_IMPORTED_MODULE_0___default","_util_timestamp__WEBPACK_IMPORTED_MODULE_1__","_common__WEBPACK_IMPORTED_MODULE_0__","FULL_WIDTH","overlapThreshold","dayEvents","_getVisuals","hasOverlap","setColumnCount","getRange","getDayRange","getNormalizedRange","getOpenGroup","getOverlapGroupHandler","_util_timestamp__WEBPACK_IMPORTED_MODULE_0__","MILLIS_IN_DAY","minStart","s0","groups","groupVisual","dayStart","intersected","groupStart","groupEnd","targetGroup","CalendarEventOverlapModes","_stack__WEBPACK_IMPORTED_MODULE_0__","_column__WEBPACK_IMPORTED_MODULE_1__","__values","DEFAULT_OFFSET","WIDTH_MULTIPLIER","e_1","e_2","e_3","getGroups","groups_1","groups_1_1","getNode","getNextIndex","getParent","addTime","getOverlappingRange","children_1","children_1_1","grand","grandNext","e_3_1","e_2_1","calculateBounds","e_1_1","e_4","nodes_1","nodes_1_1","columns","getMaxChildIndex","spaceLeft","spaceWidth","columnWidthMultiplier","getColumnWidthMultiplier","columnOffset","columnWidth","hasFullWidth","e_4_1","maxColumn","minColumn","getOverlappingIndices","e_5","indices","nodes_2","nodes_2_1","e_5_1","indexMin","indexMax","returnFirstColumn","e_6","overlapping","nodes_3","nodes_3_1","e_6_1","first_1","e_7","nodes_4","nodes_4_1","e_7_1","e_8","nodes_5","nodes_5_1","e_8_1","e_9","e_10","visuals_1","visuals_1_1","groups_2","groups_2_1","e_10_1","e_9_1","e_11","childMax","e_11_1","removeMinutes","totalMinutes","addHours","parseEvent","isEventOn","isEventHiddenOn","isEventStart","isEventOverlapping","_timestamp__WEBPACK_IMPORTED_MODULE_0__","startProperty","endProperty","startInput","endInput","startParsed","endParsed","startIdentifier","startTimestampIdentifier","endIdentifier","endOffset","endTimestampIdentifier","allDay","parsedCategoryText","getParsedCategories","categoryText","validateNumber","validateWeekdays","_modes__WEBPACK_IMPORTED_MODULE_1__","ints","visited","PARSE_REGEX","PARSE_TIME","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP","DAYS_IN_MONTH_MIN","DAYS_IN_MONTH_MAX","MONTH_MAX","MONTH_MIN","DAY_MIN","DAYS_IN_WEEK","MINUTES_IN_HOUR","MINUTE_MAX","HOURS_IN_DAY","HOUR_MAX","FIRST_HOUR","OFFSET_YEAR","OFFSET_MONTH","OFFSET_HOUR","OFFSET_TIME","getStartOfWeek","getEndOfWeek","getStartOfMonth","getEndOfMonth","validateTime","parseTime","validateTimestamp","parseTimestamp","parseDate","getDayIdentifier","getTimeIdentifier","getTimestampIdentifier","updateRelative","isTimedless","updateHasTime","updateMinutes","updateWeekday","updateFormatted","getWeekday","daysInMonth","copyTimestamp","padNumber","getDate","getTime","nextMinutes","nextDay","prevDay","relativeDays","diffMinutes","findWeekday","getWeekdaySkips","timestampToDate","createDayList","createIntervalList","createNativeLocaleFormatter","_util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_0__","present","hasTime","year","month","weekday","hour","minute","hasDay","past","future","padded","skips","filled","skip","weekdaySkips","currentIdentifier","stopped","intervals","mins","int","getOptions","emptyFormatter","_t","_s","intlFormatter","_mixins_loadable__WEBPACK_IMPORTED_MODULE_2__","_mixins_routable__WEBPACK_IMPORTED_MODULE_3__","VCardActions","VCardSubtitle","VCardText","VCardTitle","_VCard__WEBPACK_IMPORTED_MODULE_0__","_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__","_VProgressLinear__WEBPACK_IMPORTED_MODULE_4__","_mixins_button_group__WEBPACK_IMPORTED_MODULE_5__","_util_helpers__WEBPACK_IMPORTED_MODULE_6__","_util_console__WEBPACK_IMPORTED_MODULE_7__","_VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__","_VImg__WEBPACK_IMPORTED_MODULE_1__","_mixins_routable__WEBPACK_IMPORTED_MODULE_4__","_VCarousel__WEBPACK_IMPORTED_MODULE_0__","_VCarouselItem__WEBPACK_IMPORTED_MODULE_1__","_VIcon__WEBPACK_IMPORTED_MODULE_2__","_VInput__WEBPACK_IMPORTED_MODULE_3__","_mixins_selectable__WEBPACK_IMPORTED_MODULE_4__","checkboxAttrs","_mixins_colorable__WEBPACK_IMPORTED_MODULE_4__","_util_mergeData__WEBPACK_IMPORTED_MODULE_6__","ripple","_VCheckbox__WEBPACK_IMPORTED_MODULE_0__","_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__","_transitions__WEBPACK_IMPORTED_MODULE_2__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_5__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_6__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__","_mixins_routable__WEBPACK_IMPORTED_MODULE_8__","_mixins_sizeable__WEBPACK_IMPORTED_MODULE_9__","_VChip__WEBPACK_IMPORTED_MODULE_0__","_VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_1__","_VChipGroup__WEBPACK_IMPORTED_MODULE_0__","_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_1__","_VColorPickerPreview__WEBPACK_IMPORTED_MODULE_2__","_VColorPickerCanvas__WEBPACK_IMPORTED_MODULE_3__","_VColorPickerEdit__WEBPACK_IMPORTED_MODULE_4__","_VColorPickerSwatches__WEBPACK_IMPORTED_MODULE_5__","_util__WEBPACK_IMPORTED_MODULE_6__","_mixins_elevatable__WEBPACK_IMPORTED_MODULE_9__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_10__","_util__WEBPACK_IMPORTED_MODULE_2__","vue__WEBPACK_IMPORTED_MODULE_3__","vue__WEBPACK_IMPORTED_MODULE_3___default","saturationGradient","valueGradient","modes","_util_colorUtils__WEBPACK_IMPORTED_MODULE_3__","vue__WEBPACK_IMPORTED_MODULE_4__","vue__WEBPACK_IMPORTED_MODULE_4___default","_util__WEBPACK_IMPORTED_MODULE_5__","_mode","newMode","_VSlider_VSlider__WEBPACK_IMPORTED_MODULE_1__","_util_colorUtils__WEBPACK_IMPORTED_MODULE_2__","_util__WEBPACK_IMPORTED_MODULE_4__","_VIcon__WEBPACK_IMPORTED_MODULE_1__","_util_colors__WEBPACK_IMPORTED_MODULE_2__","_util__WEBPACK_IMPORTED_MODULE_3__","_util_colorUtils__WEBPACK_IMPORTED_MODULE_7__","parseDefaultColors","black","swatch","_VColorPicker__WEBPACK_IMPORTED_MODULE_0__","_VColorPickerSwatches__WEBPACK_IMPORTED_MODULE_1__","_VColorPickerCanvas__WEBPACK_IMPORTED_MODULE_2__","fromHSVA","fromHSLA","fromRGBA","fromHexa","fromHex","parseColor","extractColor","hasAlpha","_util_colorUtils__WEBPACK_IMPORTED_MODULE_0__","hsva","hexa","hsla","oldColor","stripAlpha","shouldStrip","_VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__","chip","isUsingSlot","menuIndex","itemToSelect","internalValue","pastedItemText","_VCombobox__WEBPACK_IMPORTED_MODULE_0__","_VMain_VMain__WEBPACK_IMPORTED_MODULE_0__","_util_console__WEBPACK_IMPORTED_MODULE_1__","_VContent__WEBPACK_IMPORTED_MODULE_0__","isGreater","_VCounter__WEBPACK_IMPORTED_MODULE_0__","vue__WEBPACK_IMPORTED_MODULE_1__","vue__WEBPACK_IMPORTED_MODULE_1___default","sortBy","sortDesc","groupBy","groupDesc","sortDiff","groupDiff","_page","page","_itemsPerPage","itemsPerPage","_sortBy","_sortDesc","_groupBy","_groupDesc","_multiSort","multiSort","_mustSort","mustSort","pageCount","computedItems","pagination","oldBy","oldDesc","by","desc","byIndex","_VData__WEBPACK_IMPORTED_MODULE_0__","_VBtn__WEBPACK_IMPORTED_MODULE_3__","computedIPPO","ippo","itemsLength","pageStart","pageStop","click","disabled","before","after","_VDataFooter__WEBPACK_IMPORTED_MODULE_1__","_mixins_mobile__WEBPACK_IMPORTED_MODULE_2__","_util_console__WEBPACK_IMPORTED_MODULE_6__","selection","expansion","expanded","removedProps","lastEntryKey","lastEntryKeySelected","originalItemsLength","filteredItemsLength","noData","noResults","outerProps","_VDataIterator__WEBPACK_IMPORTED_MODULE_0__","computedSlots","slotName","scopedSlot","regularSlot","mobileRowChildren","needsTd","_VData__WEBPACK_IMPORTED_MODULE_1__","_VDataIterator__WEBPACK_IMPORTED_MODULE_2__","_VDataTableHeader__WEBPACK_IMPORTED_MODULE_4__","_VIcon__WEBPACK_IMPORTED_MODULE_5__","_Row__WEBPACK_IMPORTED_MODULE_6__","_RowGroup__WEBPACK_IMPORTED_MODULE_7__","_VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_8__","_VSimpleTable__WEBPACK_IMPORTED_MODULE_9__","_MobileRow__WEBPACK_IMPORTED_MODULE_10__","_mixins_loadable__WEBPACK_IMPORTED_MODULE_11__","_mixins_mouse__WEBPACK_IMPORTED_MODULE_12__","_directives_ripple__WEBPACK_IMPORTED_MODULE_13__","_util_mixins__WEBPACK_IMPORTED_MODULE_14__","_util_helpers__WEBPACK_IMPORTED_MODULE_15__","_util_console__WEBPACK_IMPORTED_MODULE_16__","_util_mergeData__WEBPACK_IMPORTED_MODULE_17__","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","customFilter","filterMode","matchesColumnFilters","matchesSearchTerm","headers","defaultHeader","itemsPerPageOptions","firstOption","th","groupedItems","isOpen","toggleFn","removeFn","rows","isExpanded","headerRow","expandedRow","slot_1","slot_2","simpleProps","_VDataTableHeaderMobile__WEBPACK_IMPORTED_MODULE_1__","_VDataTableHeaderDesktop__WEBPACK_IMPORTED_MODULE_2__","_mixins_header__WEBPACK_IMPORTED_MODULE_3__","_util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_4__","_util_mergeData__WEBPACK_IMPORTED_MODULE_5__","_util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_6__","vue__WEBPACK_IMPORTED_MODULE_7__","vue__WEBPACK_IMPORTED_MODULE_7___default","_mixins_header__WEBPACK_IMPORTED_MODULE_1__","beingSorted","isDesc","$t","ariaSort","ariaLabel","sortIndex","_VChip__WEBPACK_IMPORTED_MODULE_2__","sortHeaders","_mixins_returnable__WEBPACK_IMPORTED_MODULE_1__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__","_VBtn__WEBPACK_IMPORTED_MODULE_4__","_VMenu__WEBPACK_IMPORTED_MODULE_5__","_util_mixins__WEBPACK_IMPORTED_MODULE_6__","_VSimpleTable__WEBPACK_IMPORTED_MODULE_1__","VTableOverflow","_VDataTable__WEBPACK_IMPORTED_MODULE_1__","_VDataTableHeader__WEBPACK_IMPORTED_MODULE_2__","_VEditDialog__WEBPACK_IMPORTED_MODULE_3__","_VSimpleTable__WEBPACK_IMPORTED_MODULE_4__","_VVirtualTable__WEBPACK_IMPORTED_MODULE_5__","_VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_1__","_directives_ripple__WEBPACK_IMPORTED_MODULE_2__","_VDatePickerTitle__WEBPACK_IMPORTED_MODULE_0__","_VDatePickerHeader__WEBPACK_IMPORTED_MODULE_1__","_VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_2__","_VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_3__","_VDatePickerYears__WEBPACK_IMPORTED_MODULE_4__","_mixins_localable__WEBPACK_IMPORTED_MODULE_5__","_mixins_picker__WEBPACK_IMPORTED_MODULE_6__","_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_7__","_VCalendar_util_timestamp__WEBPACK_IMPORTED_MODULE_10__","_util_console__WEBPACK_IMPORTED_MODULE_11__","_util__WEBPACK_IMPORTED_MODULE_12__","multipleValue","dates","titleFormats","titleDateFormatter","landscapeFormatter","nonDigit","digit","sanitizeType","newInput","output_1","valueType","_mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__","_util_dateTimeUtils__WEBPACK_IMPORTED_MODULE_1__","firstDayOfTheMonth","weekDay","dayInMonth","prevMonthYear","prevMonth","firstDayFromPreviousMonth","cellsInRow","nextMonthYear","nextMonth","nextMonthDay","_mixins_localable__WEBPACK_IMPORTED_MODULE_4__","change","ariaLabelId","_util__WEBPACK_IMPORTED_MODULE_1__","cols","tds","this_1","_mixins_picker_button__WEBPACK_IMPORTED_MODULE_2__","_util_mergeData__WEBPACK_IMPORTED_MODULE_4__","activeItem","selectedYear","maxYear","minYear","_VDatePicker__WEBPACK_IMPORTED_MODULE_0__","_VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__","_VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__","_VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__","_VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__","_VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__","_directives_touch__WEBPACK_IMPORTED_MODULE_1__","_mixins_localable__WEBPACK_IMPORTED_MODULE_3__","_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_6__","_util_mergeData__WEBPACK_IMPORTED_MODULE_7__","isAllowed","isFloating","isSelected","isCurrent","isLast","mouseEventType","isOtherMonth","arrayize","eventData","eventColors","calculateTableDate","tableDate","touchDirective","_pad__WEBPACK_IMPORTED_MODULE_0__","substrOptions","makeIsoString","dateString","intlFormatter_1","createItemTypeNativeListeners","createItemTypeListeners","itemTypeSuffix","eventName","_eventHelpers__WEBPACK_IMPORTED_MODULE_0__","_createNativeLocaleFormatter__WEBPACK_IMPORTED_MODULE_1__","_monthChange__WEBPACK_IMPORTED_MODULE_2__","_sanitizeDateString__WEBPACK_IMPORTED_MODULE_3__","_pad__WEBPACK_IMPORTED_MODULE_4__","isDateAllowed","allowedFn","padStart","targetLength","padString","_VThemeProvider__WEBPACK_IMPORTED_MODULE_1__","_mixins_activatable__WEBPACK_IMPORTED_MODULE_2__","_mixins_dependent__WEBPACK_IMPORTED_MODULE_3__","_mixins_detachable__WEBPACK_IMPORTED_MODULE_4__","_mixins_overlayable__WEBPACK_IMPORTED_MODULE_5__","_mixins_returnable__WEBPACK_IMPORTED_MODULE_6__","_mixins_stackable__WEBPACK_IMPORTED_MODULE_7__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_8__","activator_1","focusable","_VDialog__WEBPACK_IMPORTED_MODULE_0__","_VDivider__WEBPACK_IMPORTED_MODULE_0__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_0__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__","_transitions__WEBPACK_IMPORTED_MODULE_0__","_mixins_bootable__WEBPACK_IMPORTED_MODULE_1__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__","_directives_ripple__WEBPACK_IMPORTED_MODULE_4__","_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__","_util_console__WEBPACK_IMPORTED_MODULE_2__","_VExpansionPanels__WEBPACK_IMPORTED_MODULE_0__","_VExpansionPanel__WEBPACK_IMPORTED_MODULE_1__","_VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_2__","_VExpansionPanelHeader__WEBPACK_IMPORTED_MODULE_3__","_VTextField__WEBPACK_IMPORTED_MODULE_1__","_util_console__WEBPACK_IMPORTED_MODULE_4__","fileCount","file","truncatedText","files","charsKeepOneSide","_VFileInput__WEBPACK_IMPORTED_MODULE_0__","_mixins_applicationable__WEBPACK_IMPORTED_MODULE_2__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_3__","_VFooter__WEBPACK_IMPORTED_MODULE_0__","_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_1__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__","unwatch","_VForm__WEBPACK_IMPORTED_MODULE_0__","_util_mergeData__WEBPACK_IMPORTED_MODULE_2__","breakpoints","breakpointProps","offsetProps","orderProps","propMap","breakpointClass","breakpoint","classList","type_1","hasColClasses","_grid__WEBPACK_IMPORTED_MODULE_2__","_grid__WEBPACK_IMPORTED_MODULE_1__","ALIGNMENT","makeProps","alignValidator","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","classMap","VGrid","_VContainer__WEBPACK_IMPORTED_MODULE_0__","_VCol__WEBPACK_IMPORTED_MODULE_1__","_VRow__WEBPACK_IMPORTED_MODULE_2__","_VSpacer__WEBPACK_IMPORTED_MODULE_3__","_VLayout__WEBPACK_IMPORTED_MODULE_4__","_VFlex__WEBPACK_IMPORTED_MODULE_5__","_mixins_delayable__WEBPACK_IMPORTED_MODULE_0__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__","_util_console__WEBPACK_IMPORTED_MODULE_3__","_VHover__WEBPACK_IMPORTED_MODULE_0__","_mixins_sizeable__WEBPACK_IMPORTED_MODULE_3__","vue__WEBPACK_IMPORTED_MODULE_6__","vue__WEBPACK_IMPORTED_MODULE_6___default","SIZE_MAP","isFontAwesome5","iconType","isSvgPath","VIcon","iconName","explicitSize","fontSize","wrapperData","newChildren","delimiterIndex","isMaterialIcon","svgData","_directives_intersect__WEBPACK_IMPORTED_MODULE_1__","_VResponsive__WEBPACK_IMPORTED_MODULE_2__","hasIntersect","isIntersecting","lazyImg","poll","naturalHeight","naturalWidth","_VImg__WEBPACK_IMPORTED_MODULE_0__","_VLabel__WEBPACK_IMPORTED_MODULE_2__","_VMessages__WEBPACK_IMPORTED_MODULE_3__","_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_4__","_mixins_validatable__WEBPACK_IMPORTED_MODULE_5__","validation","validationResult","extraData","hasListener","localeKey","_VInput__WEBPACK_IMPORTED_MODULE_0__","BaseItem","_mixins_groupable__WEBPACK_IMPORTED_MODULE_1__","BaseItemGroup","_mixins_comparable__WEBPACK_IMPORTED_MODULE_1__","_mixins_proxyable__WEBPACK_IMPORTED_MODULE_2__","_util_console__WEBPACK_IMPORTED_MODULE_5__","intern","valueIndex","isSame","_VItem__WEBPACK_IMPORTED_MODULE_0__","_VItemGroup__WEBPACK_IMPORTED_MODULE_1__","newData","_VLabel__WEBPACK_IMPORTED_MODULE_0__","_mixins_measurable__WEBPACK_IMPORTED_MODULE_0__","_directives_intersect__WEBPACK_IMPORTED_MODULE_2__","_VLazy__WEBPACK_IMPORTED_MODULE_0__","_VListItem__WEBPACK_IMPORTED_MODULE_2__","_VListItemIcon__WEBPACK_IMPORTED_MODULE_3__","_mixins_bootable__WEBPACK_IMPORTED_MODULE_5__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_6__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_8__","_directives_ripple__WEBPACK_IMPORTED_MODULE_9__","_transitions__WEBPACK_IMPORTED_MODULE_10__","_util_mixins__WEBPACK_IMPORTED_MODULE_11__","_util_helpers__WEBPACK_IMPORTED_MODULE_12__","isActive","_mixins_routable__WEBPACK_IMPORTED_MODULE_2__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__","_directives_ripple__WEBPACK_IMPORTED_MODULE_6__","filteredChild","VListItemActionText","VListItemContent","VListItemTitle","VListItemSubtitle","_VList__WEBPACK_IMPORTED_MODULE_1__","_VListGroup__WEBPACK_IMPORTED_MODULE_2__","_VListItem__WEBPACK_IMPORTED_MODULE_3__","_VListItemGroup__WEBPACK_IMPORTED_MODULE_4__","_VListItemAction__WEBPACK_IMPORTED_MODULE_5__","_VListItemAvatar__WEBPACK_IMPORTED_MODULE_6__","_VListItemIcon__WEBPACK_IMPORTED_MODULE_7__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_1__","bar","footer","insetFooter","_VMain__WEBPACK_IMPORTED_MODULE_0__","_mixins_delayable__WEBPACK_IMPORTED_MODULE_3__","_mixins_dependent__WEBPACK_IMPORTED_MODULE_4__","_mixins_menuable__WEBPACK_IMPORTED_MODULE_5__","_mixins_roundable__WEBPACK_IMPORTED_MODULE_7__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_8__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_9__","_directives_resize__WEBPACK_IMPORTED_MODULE_10__","_util_console__WEBPACK_IMPORTED_MODULE_12__","_util_helpers__WEBPACK_IMPORTED_MODULE_13__","_services_goto__WEBPACK_IMPORTED_MODULE_14__","menuWidth","minWidth","calculatedMaxWidth","scrollTop","contentHeight","$el","activeTile","maxScrollTop","tileDistanceFromMenuTop","firstTileOffsetTop","_VMenu__WEBPACK_IMPORTED_MODULE_0__","_VMessages__WEBPACK_IMPORTED_MODULE_0__","_VImg_VImg__WEBPACK_IMPORTED_MODULE_1__","_mixins_overlayable__WEBPACK_IMPORTED_MODULE_6__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_7__","_directives_touch__WEBPACK_IMPORTED_MODULE_11__","_util_mixins__WEBPACK_IMPORTED_MODULE_13__","computedMaxHeight","computedTop","parentRect","resizeEvent","_VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__","_VInput__WEBPACK_IMPORTED_MODULE_2__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__","otpIdx","span","maxCursor","inputDataArray","newOtp","appIdx","eventKey","rsp","_VOtpInput__WEBPACK_IMPORTED_MODULE_0__","_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__","itemValue","itemObj","_VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_3__","_VOverlay__WEBPACK_IMPORTED_MODULE_0__","_directives_resize__WEBPACK_IMPORTED_MODULE_2__","_mixins_intersectable__WEBPACK_IMPORTED_MODULE_4__","totalVisible","even","firstItem","lastItem","secondItem","beforeLastItem","isCurrentPage","_VPagination__WEBPACK_IMPORTED_MODULE_0__","_mixins_translatable__WEBPACK_IMPORTED_MODULE_1__","imgData","_VParallax__WEBPACK_IMPORTED_MODULE_0__","_mixins_elevatable__WEBPACK_IMPORTED_MODULE_3__","defaultTitleColor","_VPicker__WEBPACK_IMPORTED_MODULE_0__","_VProgressCircular__WEBPACK_IMPORTED_MODULE_0__","_transitions__WEBPACK_IMPORTED_MODULE_1__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_4__","backgroundOpacity","_VProgressLinear__WEBPACK_IMPORTED_MODULE_0__","_VLabel__WEBPACK_IMPORTED_MODULE_1__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_5__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_6__","_mixins_rippleable__WEBPACK_IMPORTED_MODULE_7__","_mixins_selectable__WEBPACK_IMPORTED_MODULE_9__","_util_helpers__WEBPACK_IMPORTED_MODULE_10__","_util_mergeData__WEBPACK_IMPORTED_MODULE_12__","radioAttrs","_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_3__","_VRadioGroup__WEBPACK_IMPORTED_MODULE_0__","_VRadio__WEBPACK_IMPORTED_MODULE_1__","_VSlider__WEBPACK_IMPORTED_MODULE_1__","toFocus","endLength","startPadding","endPadding","startDir","endDir","onFocus","onBlur","valueWidth","isFocused","refName","thumbRef","domRect","touch","mouseUpOptions","mouseMoveOptions","isTouchEvent","_VRangeSlider__WEBPACK_IMPORTED_MODULE_0__","_mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__","_mixins_rippleable__WEBPACK_IMPORTED_MODULE_5__","dark","large","light","medium","small","xLarge","xSmall","isHalf","isFull","_VRating__WEBPACK_IMPORTED_MODULE_0__","_mixins_measurable__WEBPACK_IMPORTED_MODULE_1__","_VResponsive__WEBPACK_IMPORTED_MODULE_0__","_VMenu__WEBPACK_IMPORTED_MODULE_3__","_VSelectList__WEBPACK_IMPORTED_MODULE_4__","_VInput__WEBPACK_IMPORTED_MODULE_5__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_6__","_mixins_comparable__WEBPACK_IMPORTED_MODULE_7__","_mixins_dependent__WEBPACK_IMPORTED_MODULE_8__","_mixins_filterable__WEBPACK_IMPORTED_MODULE_9__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_10__","_util_mergeData__WEBPACK_IMPORTED_MODULE_11__","_util_console__WEBPACK_IMPORTED_MODULE_13__","normalisedProps","uniqueValues","isDisabled","isInteractive","selections","genSelection","KEYBOARD_LOOKUP_THRESHOLD","menu","showMoreItems","index_1","selectedItems","values_1","values_1_1","appendInner","_VCheckbox_VSimpleCheckbox__WEBPACK_IMPORTED_MODULE_0__","_VDivider__WEBPACK_IMPORTED_MODULE_1__","_VSubheader__WEBPACK_IMPORTED_MODULE_2__","_VList__WEBPACK_IMPORTED_MODULE_3__","inputValue","middle","searchInput","_VSelect__WEBPACK_IMPORTED_MODULE_0__","_mixins_roundable__WEBPACK_IMPORTED_MODULE_5__","_VSheet__WEBPACK_IMPORTED_MODULE_0__","_mixins_elevatable__WEBPACK_IMPORTED_MODULE_1__","bone","generator","bones","_VSkeletonLoader__WEBPACK_IMPORTED_MODULE_0__","calculateUpdatedOffset","calculateCenteredOffset","BaseSlideGroup","_mixins_mobile__WEBPACK_IMPORTED_MODULE_4__","_directives_resize__WEBPACK_IMPORTED_MODULE_5__","_directives_touch__WEBPACK_IMPORTED_MODULE_6__","bias","selectedElement","rtl","currentScrollOffset","clientWidth","totalWidth","itemOffset","additionalOffset","offsetCentered","scroll","obs_1","itemsLength_1","upperLocation","hasAffix","newAbosluteOffset","diffX","diffY","maxScrollOffset","lastItemPosition","wrapperPosition","_VItemGroup_VItem__WEBPACK_IMPORTED_MODULE_0__","_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__","_VSlideItem__WEBPACK_IMPORTED_MODULE_1__","_VInput__WEBPACK_IMPORTED_MODULE_1__","_mixins_loadable__WEBPACK_IMPORTED_MODULE_4__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_5__","inputWidth","valueDir","slider","tickSize","offsetDirection","ticks","thumbLabelContent","thumb","trackStart","trackLength","clickOffset","clickPos","pageup","pagedown","home","down","up","increase","multiplier","trimmedStep","_VSlider__WEBPACK_IMPORTED_MODULE_0__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_5__","_VSnackbar__WEBPACK_IMPORTED_MODULE_0__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__","_helpers_core__WEBPACK_IMPORTED_MODULE_2__","_helpers_path__WEBPACK_IMPORTED_MODULE_3__","totalPadding","gradientDirection","gradient","bars","rounding","genPoints","genBars","boundary","totalValues","gridX","gridY","horizonY","checkCollinear","moveTo","vector","unitVector","genPath","_math__WEBPACK_IMPORTED_MODULE_0__","isCollinear","isTooCloseForRadius","radiusForPoint","_VSparkline__WEBPACK_IMPORTED_MODULE_0__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_2__","_mixins_transitionable__WEBPACK_IMPORTED_MODULE_3__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_4__","btnCount_1","_VSpeedDial__WEBPACK_IMPORTED_MODULE_0__","_mixins_proxyable__WEBPACK_IMPORTED_MODULE_3__","scrollHeight","contentData","_directives_ripple__WEBPACK_IMPORTED_MODULE_3__","validate","VStepperHeader","VStepperItems","_VStepper__WEBPACK_IMPORTED_MODULE_1__","_VStepperStep__WEBPACK_IMPORTED_MODULE_2__","_VStepperContent__WEBPACK_IMPORTED_MODULE_3__","_VSubheader__WEBPACK_IMPORTED_MODULE_0__","_mixins_selectable__WEBPACK_IMPORTED_MODULE_2__","_directives_touch__WEBPACK_IMPORTED_MODULE_4__","_transitions__WEBPACK_IMPORTED_MODULE_5__","_VProgressCircular_VProgressCircular__WEBPACK_IMPORTED_MODULE_6__","switchAttrs","_VSwitch__WEBPACK_IMPORTED_MODULE_0__","_VSystemBar__WEBPACK_IMPORTED_MODULE_0__","_mixins_routable__WEBPACK_IMPORTED_MODULE_1__","_VTabsBar__WEBPACK_IMPORTED_MODULE_1__","_VTabsItems__WEBPACK_IMPORTED_MODULE_2__","_VTabsSlider__WEBPACK_IMPORTED_MODULE_3__","_directives_resize__WEBPACK_IMPORTED_MODULE_7__","activeTab","tab","_VSlideGroup_VSlideGroup__WEBPACK_IMPORTED_MODULE_0__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_2__","newPath","oldPath","hasNew","hasOld","items_1","items_1_1","_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__","_VTabs__WEBPACK_IMPORTED_MODULE_0__","_VTab__WEBPACK_IMPORTED_MODULE_1__","_VTabItem__WEBPACK_IMPORTED_MODULE_3__","_VTabsSlider__WEBPACK_IMPORTED_MODULE_4__","_VCounter__WEBPACK_IMPORTED_MODULE_2__","_VLabel__WEBPACK_IMPORTED_MODULE_3__","_mixins_loadable__WEBPACK_IMPORTED_MODULE_5__","_mixins_validatable__WEBPACK_IMPORTED_MODULE_6__","_directives_ripple__WEBPACK_IMPORTED_MODULE_8__","_util_dom__WEBPACK_IMPORTED_MODULE_9__","_util_mixins__WEBPACK_IMPORTED_MODULE_12__","dirtyTypes","computedColor","inputAttrs","messagesNode","counterNode","_VTextField__WEBPACK_IMPORTED_MODULE_0__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__","minHeight","_VTextarea__WEBPACK_IMPORTED_MODULE_0__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_0__","_VThemeProvider__WEBPACK_IMPORTED_MODULE_0__","SelectingTimes","_VTimePickerTitle__WEBPACK_IMPORTED_MODULE_0__","_VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__","_mixins_picker__WEBPACK_IMPORTED_MODULE_2__","_mixins_picker_button__WEBPACK_IMPORTED_MODULE_3__","_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_5__","_SelectingTimes__WEBPACK_IMPORTED_MODULE_7__","rangeHours24","rangeHours12am","rangeHours12pm","range60","selectingNames","minHour","maxHour","isHourAllowed","minMinute","maxMinute","minTime","maxTime","isMinuteAllowed","minSecond","maxSecond","activePicker","picker","period","newHour","second","emitChange","_value","rotateRadians","innerWidth","handAngle","insideClick","checksCount","_mixins_picker_button__WEBPACK_IMPORTED_MODULE_1__","_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__","_SelectingTimes__WEBPACK_IMPORTED_MODULE_4__","displayedHour","displayedMinute","titleContent","displayedSecond","_VTimePicker__WEBPACK_IMPORTED_MODULE_0__","_VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__","_VTimeline__WEBPACK_IMPORTED_MODULE_0__","_VTimelineItem__WEBPACK_IMPORTED_MODULE_1__","_VImg_VImg__WEBPACK_IMPORTED_MODULE_2__","extensionHeight","VToolbarItems","VToolbarTitle","_VToolbar__WEBPACK_IMPORTED_MODULE_0__","_mixins_activatable__WEBPACK_IMPORTED_MODULE_1__","activator","unknown","activatorLeft","activatorTop","_VTooltip__WEBPACK_IMPORTED_MODULE_0__","_VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__","_util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__","excluded","oldKeys","newKeys","diff","oldSelectedCache","isIndeterminate","counts","updateFn","emitFn","descendants","parents","isForced","descendant","calculated","calculated_1","genChild","VTreeviewNodeProps","VTreeviewNode","parentIsDisabled","_VTreeview__WEBPACK_IMPORTED_MODULE_0__","filterTreeItem","filterTreeItems","idKey","childrenKey","_VVirtualScroll__WEBPACK_IMPORTED_MODULE_0__","_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_4__","_click","icons","prevIcon","nextIcon","prevIndex","_mixins_bootable__WEBPACK_IMPORTED_MODULE_0__","_directives_touch__WEBPACK_IMPORTED_MODULE_2__","_VWindow__WEBPACK_IMPORTED_MODULE_0__","_VWindowItem__WEBPACK_IMPORTED_MODULE_1__","_VAppBar__WEBPACK_IMPORTED_MODULE_1__","_VAlert__WEBPACK_IMPORTED_MODULE_2__","_VAutocomplete__WEBPACK_IMPORTED_MODULE_3__","_VAvatar__WEBPACK_IMPORTED_MODULE_4__","_VBadge__WEBPACK_IMPORTED_MODULE_5__","_VBanner__WEBPACK_IMPORTED_MODULE_6__","_VBottomNavigation__WEBPACK_IMPORTED_MODULE_7__","_VBottomSheet__WEBPACK_IMPORTED_MODULE_8__","_VBreadcrumbs__WEBPACK_IMPORTED_MODULE_9__","_VBtn__WEBPACK_IMPORTED_MODULE_10__","_VBtnToggle__WEBPACK_IMPORTED_MODULE_11__","_VCalendar__WEBPACK_IMPORTED_MODULE_12__","_VCard__WEBPACK_IMPORTED_MODULE_13__","_VCarousel__WEBPACK_IMPORTED_MODULE_14__","_VCheckbox__WEBPACK_IMPORTED_MODULE_15__","_VChip__WEBPACK_IMPORTED_MODULE_16__","_VChipGroup__WEBPACK_IMPORTED_MODULE_17__","_VColorPicker__WEBPACK_IMPORTED_MODULE_18__","_VContent__WEBPACK_IMPORTED_MODULE_19__","_VCombobox__WEBPACK_IMPORTED_MODULE_20__","_VCounter__WEBPACK_IMPORTED_MODULE_21__","_VData__WEBPACK_IMPORTED_MODULE_22__","_VDataIterator__WEBPACK_IMPORTED_MODULE_23__","_VDataTable__WEBPACK_IMPORTED_MODULE_24__","_VDatePicker__WEBPACK_IMPORTED_MODULE_25__","_VDialog__WEBPACK_IMPORTED_MODULE_26__","_VDivider__WEBPACK_IMPORTED_MODULE_27__","_VExpansionPanel__WEBPACK_IMPORTED_MODULE_28__","_VFileInput__WEBPACK_IMPORTED_MODULE_29__","_VFooter__WEBPACK_IMPORTED_MODULE_30__","_VForm__WEBPACK_IMPORTED_MODULE_31__","_VGrid__WEBPACK_IMPORTED_MODULE_32__","_VHover__WEBPACK_IMPORTED_MODULE_33__","_VIcon__WEBPACK_IMPORTED_MODULE_34__","_VImg__WEBPACK_IMPORTED_MODULE_35__","_VInput__WEBPACK_IMPORTED_MODULE_36__","_VItemGroup__WEBPACK_IMPORTED_MODULE_37__","_VLabel__WEBPACK_IMPORTED_MODULE_38__","_VLazy__WEBPACK_IMPORTED_MODULE_39__","_VList__WEBPACK_IMPORTED_MODULE_40__","_VMain__WEBPACK_IMPORTED_MODULE_41__","_VMenu__WEBPACK_IMPORTED_MODULE_42__","_VMessages__WEBPACK_IMPORTED_MODULE_43__","_VNavigationDrawer__WEBPACK_IMPORTED_MODULE_44__","_VOtpInput__WEBPACK_IMPORTED_MODULE_45__","_VOverflowBtn__WEBPACK_IMPORTED_MODULE_46__","_VOverlay__WEBPACK_IMPORTED_MODULE_47__","_VPagination__WEBPACK_IMPORTED_MODULE_48__","_VSheet__WEBPACK_IMPORTED_MODULE_49__","_VParallax__WEBPACK_IMPORTED_MODULE_50__","_VPicker__WEBPACK_IMPORTED_MODULE_51__","_VProgressCircular__WEBPACK_IMPORTED_MODULE_52__","_VProgressLinear__WEBPACK_IMPORTED_MODULE_53__","_VRadioGroup__WEBPACK_IMPORTED_MODULE_54__","_VRangeSlider__WEBPACK_IMPORTED_MODULE_55__","_VRating__WEBPACK_IMPORTED_MODULE_56__","_VResponsive__WEBPACK_IMPORTED_MODULE_57__","_VSelect__WEBPACK_IMPORTED_MODULE_58__","_VSkeletonLoader__WEBPACK_IMPORTED_MODULE_59__","_VSlider__WEBPACK_IMPORTED_MODULE_60__","_VSlideGroup__WEBPACK_IMPORTED_MODULE_61__","_VSnackbar__WEBPACK_IMPORTED_MODULE_62__","_VSparkline__WEBPACK_IMPORTED_MODULE_63__","_VSpeedDial__WEBPACK_IMPORTED_MODULE_64__","_VStepper__WEBPACK_IMPORTED_MODULE_65__","_VSubheader__WEBPACK_IMPORTED_MODULE_66__","_VSwitch__WEBPACK_IMPORTED_MODULE_67__","_VSystemBar__WEBPACK_IMPORTED_MODULE_68__","_VTabs__WEBPACK_IMPORTED_MODULE_69__","_VTextarea__WEBPACK_IMPORTED_MODULE_70__","_VTextField__WEBPACK_IMPORTED_MODULE_71__","_VThemeProvider__WEBPACK_IMPORTED_MODULE_72__","_VTimeline__WEBPACK_IMPORTED_MODULE_73__","_VTimePicker__WEBPACK_IMPORTED_MODULE_74__","_VToolbar__WEBPACK_IMPORTED_MODULE_75__","_VTooltip__WEBPACK_IMPORTED_MODULE_76__","_VTreeview__WEBPACK_IMPORTED_MODULE_77__","_VVirtualScroll__WEBPACK_IMPORTED_MODULE_78__","_VWindow__WEBPACK_IMPORTED_MODULE_79__","_transitions__WEBPACK_IMPORTED_MODULE_80__","createSimpleTransition","createJavascriptTransition","_util_mergeData__WEBPACK_IMPORTED_MODULE_0__","mergeTransitions","transitions","offsetWidth","offsetHeight","expandedParentClass","sizeProperty","offsetProperty","initialStyle","resetStyles","VCarouselTransition","VCarouselReverseTransition","VTabTransition","VTabReverseTransition","VMenuTransition","VFabTransition","VDialogTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","_createTransition__WEBPACK_IMPORTED_MODULE_0__","_expand_transition__WEBPACK_IMPORTED_MODULE_1__","ClickOutside","_util_dom__WEBPACK_IMPORTED_MODULE_0__","defaultConditional","checkEvent","checkIsActive","handleShadow","onClick","onMousedown","app","_click_outside__WEBPACK_IMPORTED_MODULE_0__","_intersect__WEBPACK_IMPORTED_MODULE_1__","_mutate__WEBPACK_IMPORTED_MODULE_2__","_resize__WEBPACK_IMPORTED_MODULE_3__","_ripple__WEBPACK_IMPORTED_MODULE_4__","_scroll__WEBPACK_IMPORTED_MODULE_5__","_touch__WEBPACK_IMPORTED_MODULE_6__","Intersect","_observe","unbind","Mutate","modifierKeys","hasModifiers","mutationsList","Resize","Ripple","DELAY_RIPPLE","isKeyboardEvent","calculate","localX","localY","ripples","isRippleEnabled","rippleShow","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","removeListeners","Scroll","Touch","handleGesture","touchstartX","touchendX","touchstartY","touchendY","dirRatio","_touchstart","_touchend","_touchmove","createHandlers","_install__WEBPACK_IMPORTED_MODULE_0__","_services__WEBPACK_IMPORTED_MODULE_1__","Vuetify","userPreset","ssrContext","Service","_components__WEBPACK_IMPORTED_MODULE_0__","_directives__WEBPACK_IMPORTED_MODULE_1__","_framework__WEBPACK_IMPORTED_MODULE_2__","registerComponents","_af__WEBPACK_IMPORTED_MODULE_0__","_ar__WEBPACK_IMPORTED_MODULE_1__","_bg__WEBPACK_IMPORTED_MODULE_2__","_ca__WEBPACK_IMPORTED_MODULE_3__","_ckb__WEBPACK_IMPORTED_MODULE_4__","_cs__WEBPACK_IMPORTED_MODULE_5__","_da__WEBPACK_IMPORTED_MODULE_6__","_de__WEBPACK_IMPORTED_MODULE_7__","_el__WEBPACK_IMPORTED_MODULE_8__","_en__WEBPACK_IMPORTED_MODULE_9__","_es__WEBPACK_IMPORTED_MODULE_10__","_et__WEBPACK_IMPORTED_MODULE_11__","_fa__WEBPACK_IMPORTED_MODULE_12__","_fi__WEBPACK_IMPORTED_MODULE_13__","_fr__WEBPACK_IMPORTED_MODULE_14__","_hr__WEBPACK_IMPORTED_MODULE_15__","_hu__WEBPACK_IMPORTED_MODULE_16__","_he__WEBPACK_IMPORTED_MODULE_17__","_id__WEBPACK_IMPORTED_MODULE_18__","_it__WEBPACK_IMPORTED_MODULE_19__","_ja__WEBPACK_IMPORTED_MODULE_20__","_ko__WEBPACK_IMPORTED_MODULE_21__","_lv__WEBPACK_IMPORTED_MODULE_22__","_lt__WEBPACK_IMPORTED_MODULE_23__","_nl__WEBPACK_IMPORTED_MODULE_24__","_no__WEBPACK_IMPORTED_MODULE_25__","_pl__WEBPACK_IMPORTED_MODULE_26__","_pt__WEBPACK_IMPORTED_MODULE_27__","_ro__WEBPACK_IMPORTED_MODULE_28__","_ru__WEBPACK_IMPORTED_MODULE_29__","_sk__WEBPACK_IMPORTED_MODULE_30__","_sl__WEBPACK_IMPORTED_MODULE_31__","_sr_Cyrl__WEBPACK_IMPORTED_MODULE_32__","_sr_Latn__WEBPACK_IMPORTED_MODULE_33__","_sv__WEBPACK_IMPORTED_MODULE_34__","_th__WEBPACK_IMPORTED_MODULE_35__","_tr__WEBPACK_IMPORTED_MODULE_36__","_az__WEBPACK_IMPORTED_MODULE_37__","_uk__WEBPACK_IMPORTED_MODULE_38__","_vi__WEBPACK_IMPORTED_MODULE_39__","_zh_Hans__WEBPACK_IMPORTED_MODULE_40__","_zh_Hant__WEBPACK_IMPORTED_MODULE_41__","_delayable__WEBPACK_IMPORTED_MODULE_0__","_toggleable__WEBPACK_IMPORTED_MODULE_1__","slotType","keys_1","keys_1_1","keys_2","keys_2_1","applicationable","_positionable__WEBPACK_IMPORTED_MODULE_0__","makeWatcher","_util_console__WEBPACK_IMPORTED_MODULE_0__","_components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__","colorName","colorModifier","searchChildren","openDependents","_bootable__WEBPACK_IMPORTED_MODULE_0__","validateAttachTarget","removeActivator","observer_1","elevation","_registrable__WEBPACK_IMPORTED_MODULE_0__","Groupable","intersectable","_directives_intersect__WEBPACK_IMPORTED_MODULE_0__","_components_VProgressLinear__WEBPACK_IMPORTED_MODULE_1__","maxHeight","_stackable__WEBPACK_IMPORTED_MODULE_0__","_positionable__WEBPACK_IMPORTED_MODULE_1__","_activatable__WEBPACK_IMPORTED_MODULE_2__","_detachable__WEBPACK_IMPORTED_MODULE_3__","xOverflow","documentHeight","toTop","totalHeight","isOverflowing","offsetRect","mobile","mobileBreakpoint","mobileWidth","isNumber","eventFirst","eventOptions","classSeparator_1","eventTargetClasses_1","currentTargets","currentTarget","_components_VOverlay__WEBPACK_IMPORTED_MODULE_0__","showScroll","alreadyAtStart","alreadyAtEnd","scrollingUp","scrollingDown","dialog","_colorable__WEBPACK_IMPORTED_MODULE_0__","_components_VPicker__WEBPACK_IMPORTED_MODULE_0__","_colorable__WEBPACK_IMPORTED_MODULE_1__","_mixins_elevatable__WEBPACK_IMPORTED_MODULE_2__","_themeable__WEBPACK_IMPORTED_MODULE_3__","availableProps","Proxyable","generateWarning","defaultImpl","_directives_ripple__WEBPACK_IMPORTED_MODULE_0__","composite","rounded","exact","exactActiveClass","_directives__WEBPACK_IMPORTED_MODULE_0__","prevent","_components_VInput__WEBPACK_IMPORTED_MODULE_0__","_rippleable__WEBPACK_IMPORTED_MODULE_1__","_comparable__WEBPACK_IMPORTED_MODULE_2__","zis","activeElements","functionalThemeClasses","Themeable","isDark","Toggleable","_themeable__WEBPACK_IMPORTED_MODULE_1__","_registrable__WEBPACK_IMPORTED_MODULE_2__","messages","errorBucket","preset","_locale__WEBPACK_IMPORTED_MODULE_1__","Application","_service__WEBPACK_IMPORTED_MODULE_0__","__extends","_extendStatics","_super","Breakpoint","scrollBarWidth","thresholds","ssr","sm","md","lg","xl","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","goTo","Goto","_easing_patterns__WEBPACK_IMPORTED_MODULE_1__","_settings","isDrawer","isClipped","startTime","targetLocation","startLocation","ease","currentTime","timeElapsed","clientHeight","reachBottom","getOffset","getContainer","totalOffset","Icons","_presets__WEBPACK_IMPORTED_MODULE_2__","iconfont","convertToComponentDeclarations","_fa__WEBPACK_IMPORTED_MODULE_0__","iconSet","_mdi_svg__WEBPACK_IMPORTED_MODULE_0__","_md__WEBPACK_IMPORTED_MODULE_1__","_mdi__WEBPACK_IMPORTED_MODULE_2__","_fa__WEBPACK_IMPORTED_MODULE_3__","_fa4__WEBPACK_IMPORTED_MODULE_4__","_fa_svg__WEBPACK_IMPORTED_MODULE_5__","_application__WEBPACK_IMPORTED_MODULE_0__","_breakpoint__WEBPACK_IMPORTED_MODULE_1__","_goto__WEBPACK_IMPORTED_MODULE_2__","_icons__WEBPACK_IMPORTED_MODULE_3__","_lang__WEBPACK_IMPORTED_MODULE_4__","_presets__WEBPACK_IMPORTED_MODULE_5__","_theme__WEBPACK_IMPORTED_MODULE_6__","Lang","LANG_PREFIX","getTranslation","usingDefault","defaultLocale","shortKey","translation","Presets","_presets_default__WEBPACK_IMPORTED_MODULE_0__","_service__WEBPACK_IMPORTED_MODULE_3__","parentPreset","defaultPreset","globalPreset","Theme","_utils__WEBPACK_IMPORTED_MODULE_1__","themes","oldDark","theme","defaultTheme","metaKeyName","metaInfo","vuetifyStylesheet","nonce","obs","genStyles","genVariations","lighten","darken","_util_colorUtils__WEBPACK_IMPORTED_MODULE_1__","_util_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__","_util_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_3__","isItem","variations","variant","parsedTheme","genBaseColor","genVariantColor","genColorVariableName","genColorVariable","cssVar","variablesCss","aColor","variants","variant_1","variantValue","fromXYZ","toXYZ","cielabForwardTransform","cielabReverseTransform","transformedY","Ln","srgbForwardMatrix","srgbForwardTransform","srgbReverseMatrix","srgbReverseTransform","isCssColor","colorToInt","classToHex","intToHex","colorToHex","HSVAtoRGBA","RGBAtoHSVA","HSVAtoHSLA","HSLAtoHSVA","RGBAtoCSS","RGBtoCSS","RGBAtoHex","HexToRGBA","HexToHSVA","HSVAtoHex","parseHex","parseGradient","RGBtoInt","contrastRatio","_console__WEBPACK_IMPORTED_MODULE_0__","_helpers__WEBPACK_IMPORTED_MODULE_1__","_color_transformSRGB__WEBPACK_IMPORTED_MODULE_2__","currentTheme","hexColor","hsv","sprime","toHex","red","pink","purple","deepPurple","indigo","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","blueGrey","shades","consoleInfo","consoleWarn","consoleError","breaking","_framework__WEBPACK_IMPORTED_MODULE_0__","createMessage","generateComponentTrace","newMessage","classifyRE","classify","formatComponentName","includeFile","currentRecursiveSequence","isLeapYear","createUTCDate","firstWeekOffset","firstDayOfWeek","firstDayOfYear","firstWeekDayInFirstWeek","firstWeekDayOfYear","dayOfYear","weeksInYear","weekOffset","weekOffsetNext","daysInYear","localeFirstDayOfYear","dedupeModelListeners","attachedRoot","createSimpleFunctional","directiveConfig","addOnceEventListener","passiveSupported","addPassiveEventListener","getNestedValue","deepEqual","getObjectValueByPath","getPropertyFromItem","createRange","getZIndex","filterObjectOnKeys","convertToUnit","kebabCase","keyCodes","remapInternalIcon","arrayDiff","upperFirst","groupItems","wrapInArray","sortItems","defaultFilter","searchItems","getSlotType","debounce","throttle","getPrefixedScopedSlots","getSlot","padEnd","humanReadableFileSize","camelizeObjectKeys","mergeDeep","fillArray","composedPath","testListenerOpts","iconPath","override","customSorters","stringCollator","sortKey","sortA","sortB","customResult","timeoutId","throttling","kebabName","chunked","binary","sourceProperty","targetProperty","mergeStyles","mergeClasses","mergeListeners","_helpers__WEBPACK_IMPORTED_MODULE_0__","parseStyle","styleMap","mergeTarget","mixins","rebuildFunctionalSlots","symbolTag","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsEmoji","reApos","reComboMark","reUnicodeWord","reHasUnicodeWord","deburredLetters","arrayReduce","initAccum","asciiWords","basePropertyOf","deburrLetter","hasUnicodeWord","unicodeWords","symbolProto","symbolToString","baseToString","isSymbol","createCompounder","deburr","lodash_kebabcase","makeVuetify","userParams","fieldContentRegExp","serializeCookie","maxAge","cookie","domain","cookieOptions","nameEQ","ca","cookie$1","lookupCookie","cookieMinutes","cookieDomain","querystring","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","testKey","localStorage","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","internalHtmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","internalLookupFromSubdomainIndex","canCookies","getDefaults","Browser","i18nOptions","detector","detectionOrder","detected","detectorName","caches","cacheName","rerenderOn","genericT","changeTracker","invalidate","usingTranslation","rand","localNs","loadBundle","bundle","handleI18nOptions","getTranslationFunction","includesNs","slotNamePattern","TranslationComponent","textNode","_default","LanguageDetector","VueI18Next","supportedLngs","initializeI18n","initialLanguage","getInitialLayers","mapIdCounter","layerBuilderMap","wms","vectortile","originalAddLayer","flattenLayerGroups","injectErrorCallback","errorCallback","addLayer","layerOrId","visibility","transparency","layerBuilder","createMap","mapParams","selectedInteractions","olDefaultInteractions","_imageRenderingPixelatedSupported","_imageRenderingValue","supportsImageRenderingPixelated","imageRenderingValue","getSourceProjection","waitReady","stopper","resolutionX","resolutionY","Static","createEmptyCanvas","OLImageryProvider","opt_fallbackProj","tileSizeAtZoom0","attributionsFunction","attributionsFunctionToCredits","z_","MVTImageryProvider","getTilegridForProjection","createTileUrlFunctions","scaleFactor","vectorContext","pickOnTerrainOrEllipsoid","scene","ray","pickCenterPoint","extentToRectangle","sourceToImageryProvider","viewProj","provider","olSourceImageWMS","sourceProps","olSourceTileWMS","olSourceTileImage","isCesiumProjection","olcsCoreOLImageryProvider","olSourceImageStatic","rectangle","olSourceVectorTile","fromCode","minimumLevel","credit","getExtentCenter","tileLayerToImageryLayer","olLayerTile","olLayerImage","layerOptions","updateCesiumLayerProperties","olLayerWithParents","csLayer","layerOpacity","layerVisible","ol4326CoordinateToCesiumCartesian","coo","ol4326CoordinateArrayToCsCartesians","toCartesian","cartesians","olGeometryCloneTo4326","proj4326","convertColorToCesium","olColor","is3857","is4326","calcDistanceForResolution","fovy","visibleMapUnits","relativeCircumference","calcResolutionForDistance","visibleMeters","AutoRenderLoop","ol3d","repaintKey","identityProjection","opt_output","opt_dimension","Camera","olObservableUnByKey","tilt","carto","altitude","ellipsoid","bestTarget","globe","bestTargetCartographic","targetNormal","targetToCamera","normal","tiltAngle","opt_dontSync","AbstractSynchronizer","fifo","olLayerId","cesiumObjects","newOlLayerWithParents","layerWithParents","onLayerChange","cesiumObjs","cesiumObject","counterparts","counterpart","uuid","listenKeyArray","contentKeys","listenAddRemove","objKey","RasterSynchronizer","olcsAbstractSynchronizer","olLayerItem","previousStyleFunction","currentStyleFunction","csObj","ip","zIndices","sublayers","layer1","layer2","VectorLayerCounterpart","layerProjection","billboards","primitives","quickselectStep","RBush$1","FeatureConverter","cancellers","canceller","primitive","olGeometry","opt_lineWidth","createInstance","instances","heightReference","dataUri","outline","csColor","fillGeometry","outlineGeometry","olStyle","outlineColor","bbOptions","olCenter","olPoint","outlinePrimitive","circlePolygon","olCreateCircularPolygon","positions","appearance","featureExtrudedHeight","hierarchy","polygonHierarchy","olPos","geometryInstances","linePositions","polylineGeometry","altitudeMode","opt_newBillboardCallback","OLStyleIcon","isImageLoaded","reallyCreateBillboard","xScale","yScale","cancelled","fuid","modelPrimitive","olcsModelFunction","olcsModel","model","extentCenter","olGeomSimpleGeometry","labelStyle","horizontalOrigin","verticalOrigin","fallbackStyleFunction","opt_geom","geom3d","OLGeometry","geomFuncRes","newBillboardAddedCallback","featureBb","prims","bbs","olView","featurePrimitiveMap","OLClusterSource","layerStyle","binaryString","VectorSynchronizer","opt_converter","olcsFeatureConverter","csPrimitive","olLayerVector","olLayerVectorTile","olLayerLayer","olSourceCluster","olSourceVector","csPrimitives","olListenKeys","onAddFeature","onRemoveFeature","cloneNode","SynchronizedOverlay","OLOverlay","setPropertyFromEvent","clonedNode","globeHeight","cartesian","camera","ellipsoidBoundingSphere","pixelCartesian","OverlaySynchronizer","cesiumOverlay","overlayId","csOverlay","BoundingSphereState","OLCesium","fillArea","containerAttribute","overlayEvents","canvasAttribute","sceneOptions","sscc","olcsCamera","firstImageryProvider","olcsRasterSynchronizer","olcsVectorSynchronizer","olcsOverlaySynchronizer","synchronizer","frameTime","julianDate","trackedEntity","bs","resolutionScale","enable","interactionRemoved","rootGroup","csCamera","block","olcsAutoRenderLoop","to4326Transform","toCesiumPosition","olGeomPoint","coo4326","FixedOverlaySynchronizer","WMSRasterSynchronizer","cesiumLayer","StaticImageSource","minMax","bottomLeftCorner","topRightCorner","wgs84Extent","olCoords","tileCoordsLocal","distanceLocalX","distanceLocalY","extentCoords","tilingScheme","minLevel","maxLevel","tileCoords","olLayerGroup","setCesiumSceneParams","setCameraParameter","map3D","cesium","cameraPosition","reactTo3DClickEvent","mapProjection","cartographic","transformedCoords","transformedPickedPosition","pickedPositionCartesian","cartographicPickedPosition","clickObject","pickedObject","handle3DEvents","map3DObject","eventHandler","prepareCamera","urlParams","cameraParameter","api","mapMode","olMap.createMap","olcsMap.createMap","calculateTop","topValue","containerHeight","newTop","handleElement","userInteraction","window","document","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","each","deprecationMessage","log","nextKey","inherit","baseP","childP","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","uniqueArray","sort","prefixed","camelProp","_uniqueId","uniqueId","getWindowForElement","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","createInputInstance","Type","inputClass","PointerEventInput","TouchInput","TouchMouseInput","MouseInput","inputHandler","pointersLen","changedPointersLen","isFinal","computeInputData","session","pointers","pointersLength","simpleCloneInputData","firstInput","firstMultiple","offsetCenter","getAngle","computeDeltaXY","getDirection","overallVelocity","getVelocity","getScale","getRotation","computeIntervalInputData","prevDelta","prevInput","deltaTime","velocity","velocityX","velocityY","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","POINTER_INPUT_MAP","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","removePointer","eventTypeNormalized","pointerType","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","getTouches","allTouches","targetIds","targetTouches","changedTouches","changedTargetTouches","DEDUP_TIMEOUT","DEDUP_DISTANCE","inputEvent","inputData","isMouse","recordTouches","isSyntheticEvent","setLastTouch","lastTouch","lts","removeLastTouch","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","TouchAction","recognizer","cleanTouchActions","srcEvent","hasNone","hasPanY","hasPanX","isTapPointer","isTapMovement","isTapTouchTime","touchMap","cssSupports","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","otherRecognizer","simultaneous","getRecognizerByNameIfManager","requireFail","stateStr","inputDataClone","directionStr","AttrRecognizer","optionPointers","isRecognized","isValid","PanRecognizer","hasMoved","PinchRecognizer","inOut","PressRecognizer","validPointers","validMovement","validTime","RotateRecognizer","SwipeRecognizer","TapRecognizer","validTouchTime","validInterval","validMultiTap","tapCount","Hammer","Manager","STOP","FORCED_STOP","toggleCssProps","recognizers","curRecognizer","triggerDomEvent","gestureEvent","addClusterStyle","layerConfiguration","visibleFeaturesCount","StyleClass","isClustered","legendInfos","field","getRotationValue","featureValues","isDegree","rotationValueFromService","createIconStyle","showCluster","imageName","imageOffsetX","imageOffsetY","wfsImgPath","createSVGStyle","svgPath","createCircleStyle","fillcolor","strokecolor","strokewidth","createRegularShapeStyle","calculateSizeIntervalCircleBar","stateValue","circleBarScalingFactor","circleBarLineStroke","circleBarRadius","calculateLengthIntervalCircleBar","barLength","createSvgIntervalCircleBar","circleBarCircleFillColor","circleBarCircleStrokeColor","circleBarCircleStrokeWidth","circleBarLineStrokeColor","createIntervalCircleBar","preparedField","PointStyle","scalingAttribute","createIntervalPointStyle","styleScalingShape","createSvgNominalCircleSegments","circleSegmentsRadius","circleSegmentsBackgroundColor","circleSegmentsStrokeWidth","circleSegmentsFillOpacity","fillScalingAttributes","scalingAttributesAsObject","scalingObject","getScalingAttributesAsObject","scalingValues","calculateCircleSegment","startAngelDegree","endAngelDegree","isCircle","endAngelDegreeActual","gapActual","startAngleRad","endAngleRad","xStart","yStart","xEnd","yEnd","extendsSvgNominalCircleSegments","createNominalCircleSegments","circleSegBCArray","scalingValueDefaultColor","totalSegments","memo","degreeSegment","createNominalPointStyle","defaultImageName","workingFeature","wfsImgPathFromConfig","TextStyle","labelField","textSuffix","PolygonStyle","polygonFillHatch","originalCanvas","strokeOpacity","legendCanvas","legendContext","halfStroke","doubleStroke","LineStringStyle","CesiumStyle","ruleCondition","cesiumCondition","singleCondition","cesiumKey","legendsOfAllStyles","legendInformationLength","isMultiGeometry","getSimpleGeometryStyle","legendValue","styleObjectForLegend","getMultiGeometryStyle","geometryTypeSimpleGeom","simpleStyle","getGeometryStyle","getLabelStyle","captureLegendFromFeature","legendInformation","createStyle","hasLabelField","geometryStyle","styleObjectGeometry","styleItem","returnLegendByStyleId","createStyle$1","setupStyling","layerConfig","mapZoomOffset","setLayout","getLayout","isMacOS","MapUi","MoveHandle","oldHandle","mapContainer","_sfc_main","badPathSymbol","subscribe","updateSizeOnReady","attemptCounter","intervalId","waitTime","maxAttempts","makeContainerCss","containerId","buildShadowDom","shadowHost","makeShadowRoot","counter","shadowRoot","querySelector","selector","defaultStylePath","pullPolarStyleToShadow","stylePath","pullVuetifyStyleToShadow","vuetifyStyle","tooltipStyle","outerNodeId","setupFontawesome","renderFaToLightDom","styleNode","fontawesomeFree","outerNode","externalStylesheet","defaultedConfiguration","vuetify","MapContainer","subscribeFunction","Map$1","headerRegex","customLoader","sortPlugins","sortedComponents","NineLayoutTag","tags","PluginVessel","core","mpapi","focusFirstResult","featureListsLength","firstFocusableElement","emTitleByInput","searchService","featureListLength","sibling","searchBase","candidateElement","SearchInput","Results","GroupSelect","SearchContainer","FUNC_ERROR_TEXT","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMin","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","shouldInvoke","trailingEdge","cancel","debounced","isInvoking","isBinary","lodash_debounce","errorCheck","blockMemo","getBlocks","blocks","sortComparableMatches","comparableA","comparableB","sortMatches","patterns","uninterpretedCharacters","sortedMatches","known","patternKeys","patternBlocks","patternMapping","traverseInput","skipper","patternName","patternRegExp","capturingGroupContent","sortOptions","optionA","optionB","getFeatureTitleFromPattern","bestOption","keyAccumulator","foundKeys","sum","fillPattern","parseWfsResponse","useTitleAsPattern","parsedFeatures","removeLinebreaks","getFeaturePrefix","maxFeatures","defaultLikeFilterAttributes","queryPrefix","xmlns","wfsLike","fieldName","useRightHandWildcard","likeFilterAttributes","mergedLikeFilterAttributes","querySuffix","getFeatureSuffix","buildWfsFilterQuery","patternMatch","buildWfsFilter","getWfsFeatures","signal","supportedFormats","getVectorFeaturesByBboxRequest","fetchLayerId","projectionCode","serviceDefinition","codeName","codeNumber","getVectorFeaturesByFeatureRequest","getRequestUrlQuery","queryParameters","bkg","requestUrl","geo","transformCoordinates","getFeatureEPSG","mapFeatures","queryEpsg","featureEpsg","coordsAsIntegers","transformedCoordinates","featureEPSG","getMethodContainer","registerSearchMethods","additionalMethods","searchMethod","getSearchMethod","getResultsFromPromises","makeActions","debouncedLoad","methodContainer","miss","customSearchMethods","selectedGroupId","SearchResultSymbols","rootGetters","activeSearchMethods","localAbortControllerReference","searchPromises","addressSearchConfiguration","addLoading","removeLoading","actionContext","categoryId","customMethod","autoselect","firstFound","firstFeatures","SearchResults","defaultGroupProperties","defaultConfiguration","retrieve","searchMethodsByGroupId","selectedGroupProperties","___","searchMethods","searchMethodGroups","searchMethodName","groupIds","groupId","getGroupProperties","selectedGroupHint","minLength","featuresAvailable","selectedGroup","categoryProperties","makeStoreModule","AddressSearch","AttributionButton","AttributionContent","updateMapInfo","staticAttributions","buildMapInfo","getVisibleAttributions","getVisibleLayers","layerIDs","infos","formatAttributionText","listenToChanges","renderType","listenPath","lib.getVisibleLayers","lib.formatAttributionText","lib.updateMapInfo","Attributions","RadioCard","DrawOptions","createDrawLayer","createTextStyle","drawText","createFont","earthRadius","factors","feat","radiansToLength","radians","lengthToRadians","coordEach","excludeWrapCoord","stopG","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","featureEach","geomEach","featureBBox","geomReduce","initialValue","previousValue","flattenEach","TinyQueue$1","halfLength","best","vs","xi","yi","xj","yj","intersect","pointInPolygonFlat","pointInPolygonNested","pointInPolygonModule","K","Q","Queue","pointInPolygon","orient","concaveman$2","concaveman","concavemanModule","concavity","lengthThreshold","hull","fastConvexHull","insertNode","segTree","sqConcavity","sqLenThreshold","sqLen","getSqDist","maxSqLen","findCandidate","concave","maxDist","compareDist","sqSegDist","sqSegBoxDist","d0","noIntersections","sqSegSegDist","edges","cross","cull","convexHull","ux","uy","vx","vy","wx","wy","sc","sN","tc","tN","sD","tD","cx","cy","cx2","cy2","compareByX","convex","xSum","ySum","getCoord","getCoords","getGeom","_name","centerOfMass","centre","sArea","pi","pj","neutralizedPoints","areaFactor","turf_center_of_mass_default","roundMeasurement","measurement","divisor","calculatePartialDistances","styleOptions","textOptions","lengthInMetres","getAreaUnitAndDivisor","measureMode","areaUnit","measureStyle","measureStyleOptions","areaInMetres","createDrawStyle","drawMode","drawStyle","defaultFillColor","createPointStyle","createInteractions","drawSource","drawLayer","makeLocalSelector","activeContainer","getSnaps","snapIds","visibilityToggler","createModify","modify","localSelector","createModifyInteractions","select","lastSelectedFeature","createTextInteractions","textInput","drawConfiguration","Draw","createTranslate","Translate","createTranslateInteractions","splitter","resulterrbound","elen","flen","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","C2","orient2dadapt","ax","ay","bx","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_0","u3","acx","bcx","acy","bcy","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","currentP","nextP","numContours","contour","contourLen","booleanPointInPolygon","inBBox","polyResult","pip","booleanPointOnLine","ptCoords","lineCoords","ignoreBoundary","isPointOnLineSegment","lineSegmentStart","lineSegmentEnd","excludeBoundary","dxc","dyc","dxl","dyl","booleanContains","geom1","geom2","type1","type2","coords1","coords2","compareCoords","isPointInMultiPoint","isMultiPointInMultiPoint","isPointOnLine","isLineOnLine","isMultiPointOnLine","isLineInPoly","isPolyInPoly","isMultiPointInPoly","isPolygonInMultiPolygon","multiPoint1","multiPoint2","matchFound","haveFoundInteriorPoint","lineString1","lineString2","linestring","polyBbox","calcBbox","lineBbox","doBBoxOverlap","midPoint","getMidpoint","poly1Bbox","poly2Bbox","pair1","pair2","loaderKeyCounter","loaderKeyBase","requestError","rejectedError","parseError","internalError","buildAddFeaturesPayload","featureCollections","drawnLasso","drawnLassoGeoJson","partialCoordinates","createLassoInteractions","toast","toastObject","requests","loaderKey","settledRequests","promiseSettledResult","modifyDrawStyle","modifyTextStyle","featureText","createDrawInteractions","selectedStrokeColor","pointerStyle","createDeleteInteractions","selectInteraction","selectedFeatures","dragBoxInteraction","boundPointerStyle","createDuplicateInteractions","et","nt","it","st","ot","ut","ht","vt","dt","mt","kt","xt","It","Et","Nt","Tt","St","Lt","Ct","Rt","wt","Ot","bt","Mt","Pt","Dt","Ft","Gt","qt","Yt","zt","Xt","Bt","Ut","Vt","Ht","Zt","jt","Wt","Kt","Jt","Qt","te","ee","ne","ie","se","ae","oe","ue","le","he","fe","ge","ve","ye","de","ke","xe","Ie","Ne","Te","Se","Le","Re","we","Oe","be","Me","Ae","Pe","De","Fe","Ge","qe","Ye","ze","Xe","Be","Ue","Ve","He","Ze","je","We","Ke","Je","Qe","$e","tn","nn","rn","sn","an","ln","hn","cn","gn","dn","_n","pn","mn","kn","En","Nn","Tn","Sn","On","bn","Mn","An","Pn","Dn","Fn","Gn","Bn","Un","Vn","Hn","jn","Wn","Kn","Jn","Qn","ri","$n","ti","ei","ni","si","ai","oi","ui","ci","fi","gi","vi","di","adder","Adder","bv","av","quarterPi","tau","atan","atan2","sqrt","asin","streamGeometry","streamGeometryType","streamObjectType","streamLine","streamPolygon","geoStream","spherical","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","rotationIdentity","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleStream","cosRadius","sinRadius","clipBuffer","clipLine","pointEqual","Intersection","clipPolygon","compareIntersection","startInside","subject","isSubject","bisector","ascendingComparator","clipMax","clipMin","comparePoint","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","clean","clipStream","lineStart","lineEnd","polygonStart","polygonEnd","polygonInside","winding","a0","cleanInside","linePoint","polygonContains","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","absDelta","antimeridian","arc","phiArc","boundsStream","boundsPoint","pointVisible","sink","rotatedStart","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","clipAntimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","clipCircle","smallRadius","notHemisphere","c0","v00","two","pa","pb","n2n2","n1n2","n1xn2","uu","polar","meridian","TransformStream","fitExtent","fitSize","maxDepth","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","lambda2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","transformRadians","projectionMutator","projectAt","projectRotate","preclip","postclip","projectResample","projectTransform","cacheStream","invert","recenter","azimuthalRaw","azimuthalInvert","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","geoAzimuthalEquidistant","equirectangularRaw","BufferOp","GeoJSONReader","GeoJSONWriter","jsts","buffered","bufferFeature","multiBuffered","geometry2","buffered2","defineProjection","projected","projectCoords","reader","coordsIsNaN","unprojectCoords","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","POWS_TEN","SQRT_BASE","MAX","configObject","convertBase","parseNumeric","BigNumber","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","ALPHABET","alphabetHasNormalDecimalDigits","caseChanged","isNum","intCheck","maxOrMin","pow2_53","random53bitInt","decimal","toBaseOut","baseIn","baseOut","arrL","callerIsToString","xc","toFixedPoint","coeffToString","xlo","xhi","carry","klo","khi","aL","bL","subtract","prod","prodL","qc","rem","remL","rem0","xL","yc0","yL","yz","yc","bitFloor","toExponential","normalise","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","rd","pows10","isModExp","nIsBig","nIsNeg","nIsOdd","isOdd","xLTy","xcL","ycL","ylo","yhi","zc","sqrtBase","rep","g1","g2","groupSeparator","intPart","fractionPart","isNeg","intDigits","n0","SplayTreeNode","SplayTreeSetNode","SplayTree","newTreeRight","newTreeLeft","currentLeft","currentRight","nextLeft","nextRight","SplayTreeSet","_SplayTreeSet","isValidKey","nodeRight","nodeLeft","retainSet","modificationCount","copyChildren","node2","SplayTreeSetEntryIterableIterator","SplayTreeKeyIterableIterator","SplayTreeIterableIterator","constant_default","compare_default","almostEqual","orient_default","almostCollinear","area2","identity_default","snap_default","xTree","yTree","snapCoord","eps2","precision","isInBbox","getBboxOverlap","lowerX","upperX","lowerY","upperY","crossProduct","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","verticalIntersection","pt1","pt2","kross","SweepEvent","_SweepEvent","isLeft","ptCmp","Segment","aPt","bPt","otherEvents","numEvents","evt1","evt2","baseEvent","fillCache","linkedEvent","nextEvent","asine","acosine","bsine","bcosine","RingOut","_RingOut","allSegments","ringsOut","prevEvent","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","jMax","intersectionLE","ringEvents","prevPt","nextPt2","nextPt","iEnd","orderedPoints","enclosing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","exteriorRing","geom0","ringGeom","MultiPolyOut","polyGeom","enclosingRing","SweepLine","SplayTreeSet2","newEvents","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","nextMySplitter","nextInter","mySplitter","inter","seg","rightSE","Operation","moreGeoms","multipolys","MultiPolyIn","mpA","SplayTreeSet3","sweepEvents","sweepLine","operation_default","segmentId","_Segment","leftSE","windings","alx","blx","arx","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","leftPt","rightPt","cmpPts","newRightSE","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","alreadyLinked","newLeftSE","oldRightSE","newSeg","tmpEvt","consumer","consumee","beforeState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","mp","mpsBefore","noBefores","noAfters","least","most","isJustSubject","mps","RingIn","geomRing","isExterior","firstPoint","BigNumber2","prevPoint","PolyIn","geomPoly","multiPoly","ringSweepEvents","polySweepEvents","union","difference2","geoms","differenced","polyclip.difference","calculateArea","polygonArea","ringArea","FACTOR","PI_OVER_180","coordsLength","middleY","geojsonPolygonSelfIntersections","allEdgesAsRbushTreeItems","ring0","edge0","rbushTreeItem","ringA","edgeA","bboxOverlaps","bboxIsect","ring12","edge12","ifIsectAddToOutput","ring1","edge1","ring02","edge02","start0","end0","start1","end1","isect","frac0","frac1","unique","equalArrays","denom","x4","y4","array1","array2","simplepolygon","numRings","equalArrays2","isUnique","numvertices","selfIsectsData","numSelfIsect","outputFeatureArray","windingOfRing","determineParents","setNetWinding","pseudoVtxListByRingAndEdge","isectList","PseudoVtx","Isect","numIsect","allIsectsAsIsectRbushTreeItem","isectRbushTree","rbush2","coordToFind","IsectRbushTreeItemFound","leftIsect","isectAfterLeftIsect","isectBeforeLeftIsect","windingAtIsect","isConvex","popped","startIsect","currentOutputRingParent","currentOutputRingWinding","currentOutputRing","currentOutputRingCoords","currentIsect","walkingRingAndEdge","nxtIsect","nxtIsectInQueue","pushing","featuresWithoutParent","i2","parentArea","j2","netWinding","setNetWindingOfChildren","ParentNetWinding","ringAndEdgeIn","ringAndEdgeOut","nxtIsectAlongEdgeIn","ringAndEdge1","ringAndEdge2","nxtIsectAlongRingAndEdge1","nxtIsectAlongRingAndEdge2","ringAndEdge1Walkable","ringAndEdge2Walkable","pts","righthanded","leftVtx","isUnique2","unkinkPolygon","polygon2","featureCollection2","TinyQueue","checkWhichEventIsLeft","checkWhichSegmentHasRightEndpointFirst","seg1","seg2","ringId","eventId","eventToCheck","fillEventQueue","eventQueue","processFeature","featureOrGeometry","iii","testSegmentIntersect","numeA","numeB","uA","uB","runCheck","ignoreSelfIntersections","intersectionPoints","outQueue","otherSeg","sweeplineIntersections","lineIntersect","line1","line2","removeDuplicates","polygonTypes","converter","cutCuttableWithCutter","cuttable","cutter","cutterAsPolygon","cuts","errorText","cutCuttablesWithCutter","cuttables","intersectionCountImpliesCuttability","wouldCutterCutCandidate","splitByCuttability","projectionInfo","uncuttables","currentAsGeoJson","circleStroke","dashStroke","cutStyle","styleCut","effective","makeDraw","wgs84Epsg","createCutInteractions","cut","polygonToLine","singlePolygonToLine","multiPolygonToLine","coordsToLine","booleanDisjoint","bool","flatten1","flatten2","disjoint","booleanIntersects","union2","unioned","polyclip.union","createMergeInteractions","mergePolygon","drawFeatures","intersectedPolygons","nextFeatures","drawFeature","drawFeatureAsGeoJson","mergedFeature","inactive","inProgress","complete","cleanCoords","mutate","newCoords","cleanLine","polyPoints","newPoints","secondToLast","newPointsLength","prevAddedPoint","autofixFeatureCollection","revisedFeatureCollection","cloneFeatureCollection","collectionCompare","value1","value2","compareArrays","compareObjects","compareNativeSubtypes","keys1","key1","aggregators","propertiesArray","filterProperties","aggregateProperties","enrichWithMetaServices","metaServices","aggregationMode","featuresFromBbox","applicableProperties","featureFromBbox","aggregatedProperties","isMulti","mergeBin","getGeometryBin","mergeToMultiGeometries","bins","bin","booleanCrosses","doMultiPointAndLineStringCross","doesMultiPointCrossPoly","doLineStringsCross","doLineStringAndPolygonCross","foundIntPoint","foundExtPoint","incEndVertices","doLinesIntersect","incEnd","booleanValid","checkRingsClose","checkRingsForSpikesPunctures","checkPolygonAgainstOthers","polyToCheck","validateGeoJson","reviseFeatures","thisController","drawModes","newInteractions","selectedFeature","fontSizes","selectedSize","allSelectableDrawModes","defaultSelectableDrawModes","includesWrite","includesMeasure","drawLabel","measureOptions","showTextInput","jsonFeature","ExportFormat","ExportDirection","Button","u8","u16","i32","fleb","fdeb","clim","freb","eb","fl","revfl","fd","revfd","rev","hMap","mb","co","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","bits","bits16","shft","slc","inflt","dat","dict","sl","noBuf","resize","noSt","cbuf","nbuf","final","lm","dm","lbt","dbt","tbts","hLit","hcLen","ldt","clt","clbmsk","clm","lms","dms","lpos","dsym","dend","wbits","wbits16","hTree","i0","i1","maxSym","mbt","lft","cst","i2_1","i2_2","i2_3","lc","cli","cln","clen","cf","wfblk","wblk","syms","lf","df","dlt","mlb","ddt","mdb","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","ftlen","dtlen","llm","lcts","clct","deo","dflt","plvl","pre","post","lst","msk_1","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","ch_1","maxn","maxd","mmd","pti","lin","din","adler","dopt","newDat","wbytes","zlh","lv","zls","zlibSync","unzlibSync","td","Rr","Cr","jr","Br","fr","Lr","kr","Ir","lr","_r","br","xr","nr","ir","or","sr","ur","dr","gr","mr","vr","wr","Nr","Ar","Sr","Pr","Fr","Or","qr","Dr","Tr","Mr","Er","html2canvas_esm","purify_es","Ur","zr","Hr","Ci","ji","Si","Mi","Bi","Oi","Pi","Ei","qi","Gr","Wr","Vr","Zr","$r","Yr","Qr","mi","Xr","Jr","Kr","Ri","Ui","bi","Ni","Li","Ai","Ii","Di","zi","Ti","index_es","CANVAS_ID","convertToPdf","jsPdf","jsPDF","downloadAsImage","getDataUrl","mapCanvas","mapContext","download","pdfSrc","Export","freeSelection","doesFeaturePassCategoryFilter","getFreeSelectionLimits","clickLimits","limits","getDateFromValue","propertyValue","yearIndices","monthIndices","dayIndices","indexLookup","getFromPropertyValue","doesFeaturePassTimeFilter","timeOptions","radioId","selectedTimeFilter","featureDate","unitMilliseconds","chosenLimits","doesFeaturePassFilter","getLayer","updateFeatureVisibility","ClusterSource","updateFeatures","targetStyle","setState","restPath","arrayOnlyContains","parseTimeOption","timeDirection","filterConfiguration","knownValues","knownValue","allValues","getTimeConfig","timeConfig","ChooseTimeFrame","Fullscreen","setInnerHtml","tooltip","localeKeys","getTooltip","readinessChecks","readinessCheckLimit","readinessWaitTime","isReady","passesBoundaryCheck","boundaryLayerId","boundaryLayer","boundaryLayerSource","geoLocationMarker","positionChanged","oldPosition","newPosition","boundaryCheckChanged","isGeolocationDenied","geolocation","geoLocationMarkerLayer","Vector","boundaryOnError","configuredEpsg","boundaryCheck","coordinateInExtent","boundaryCheckPassed","showBoundaryLayerError","toastAction","boundaryErrorOccurred","markerFeature","keepCentered","hadPosition","GeoLocation","visibleWindowFeatureIndex","windowFeatures","setVisibleWindowFeatureIndex","maxIndex","FeatureSwitchButtons","isValidHttpUrl","FeatureButtonGroup","FeatureTableBody","FeatureTableHead","nextMaxPage","List","filterFeatures","featuresByLayerId","keyValue","getFeatureDisplayLayer","featureDisplayLayer","isVectorSource","addFeature","renderFeatures","geometryLayerKeys","readTextFeatures","equalIndex","getParserFromData","GMLFormat","getParserFromFormat","getWmsGfiUrl","infoFormat","requestGfiWms","layerSpecification","filterBy","xml2GeoJson","wfsVersion","requestGfiWfs","coordinateOrExtent","featureUrl","xmlText","getNestedFeatures","requestGfiGeoJson","requestGfi","notImplemented","sortFeatures","featureA","featureB","geometryA","geometryB","aIsPolygon","bIsPolygon","aIsLineString","bIsLineString","filterAndMapFeaturesToLayerIds","layerKeys","gfiConfiguration","generalMaxFeatures","layerKey","layerValues","getPromisedFeatures","mainLayerConfiguration","layerGfiMode","createSelectionDiff","oldSelection","newSelection","newFeature","oldFeatureIndex","oldFeature","errorSymbol","gfiRequest","modifierPressed","afterLoadFunction","debouncedGfiRequest","getOriginalFeature","setupCoreListener","setupTooltip","tooltipLayerIds","hasFeatureAtPixel","setupZoomListeners","featureInformation","listableLayerSources","selectedFeatureProperties","originalFeature","isDrawing","drawOptions","setupMultiSelection","boxSelect","directSelect","debouncedVisibilityChangeIndicator","defaultHighlightStyle","coordinateSources","customHighlightStyle","reaction","coordinateSource","listableLayersFilter","exportPropertyLayerKeys","exportProperty","currentProperties","windowLayerKeys","activeLayerPath","baseProperties","propertyReducer","relevantKeys","visibilityChangeIndicator","listMode","Gfi","IconMenuButton","initializedMenus","display","fakeVm","openId","IconMenu","previousOptions","LayerWrapper","Options","Selection","areLayersActive","asIdList","ids","getBackgroundsAndMasks","backgrounds","masks","deepLayerFind","getAllLegendURLs","legendUrl","findLayerTitleInCapabilitiesByName","capabilities","findLegendUrlInCapabilitiesByName","getOpenedOptionsServiceLayers","technicalLayerNames","wmsCapabilitiesJson","technicalLayerName","isLayerIdIncluded","activeBackground","activeMasks","activeBackgroundId","activeMaskIds","currentZoomLevel","availableBackgrounds","availableMasks","availableBackgroundIds","availableMaskIds","openedOptionsService","openedOptionsServiceLayers","activeLayerIds","sortedValue","olSource","updatedParams","hideInMenu","masksSeparatedByType","openedOptions","shownMasks","mask","LayerChooser","masterportalapi.rawLayerList","masterportalapi.layerLib.getLegendURLs","Legend","RollerLoader","CircleLoader","SpinnerLoader","RingLoader","BasicLoader","loadKeys","LoadingIndicator","getPointCoordinate","sourceEpsg","targetEpsg","geometryCoordinates","pointCoordinate","getPinSvg","getPinStyle","pinsLayer","movable","appearOnClick","showPin","centerOn","coordinatesForIcon","atZoomLevel","previousTranslate","latLon","boundaryCheckResult","errorOccurred","Pins","nextSelectedProjection","PointerPosition","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","promiseTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","arraySome","predicate","baseProperty","isHostObject","mapToArray","setToArray","nativeKeys","DataView","Promise","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","SetCache","setCacheAdd","setCacheHas","baseForOwn","baseGet","isKey","castPath","toKey","baseHasIn","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","basePropertyDeep","stringToPath","isPartial","othLength","arrValue","othValue","compared","othIndex","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","ctorString","hasPath","hasFunc","memoize","quote","memoized","mapValues","buildPostBody","readResponseText","reverseGeocode","parsedBody","address","loaderCounter","addressTarget","localLoaderCounter","ReverseGeocoder","fetchRoutingDirections","searchCoordinates","selectedRouteTypesToAvoid","selectedPreference","apiKey","transformCoordinateToWGS84","routeSource","routeLayer","previousIndex","routeLineString","routeFeature","currentRoute","myKey","RoutingDetails","RoutingOptions","Routing","beautifyScale","scaleNumber","getDpi","dpiDiv","calculateScaleFromResolution","currentScaleValue","scaleToOne","zoomMethod","Scale$1","Scale","pluginConfiguration","mergedTypes","smearedToast","Toast","ZoomSlider","ZoomZoomButtonContainer","mapView","maximumZoomLevel","minimumZoomLevel","NineLayout","coreInstance","enabledPlugins","iconMenu","modifyLayerConfiguration","polarClient","extendStatics","__awaiter","_arguments","adopt","fulfilled","rejected","__generator","verb","Bounds","clientRect","domRectList","parseBounds","parseDocumentSize","documentElement","toCodePoints$1","extra","fromCodePoint$1","chars$2","lookup$2","i$2","chars$1$1","lookup$1$1","i$1$1","decode$1","bufferLength","encoded1","encoded2","encoded3","encoded4","polyUint16Array$1","polyUint32Array$1","UTRIE2_SHIFT_2$1","UTRIE2_SHIFT_1$1","UTRIE2_INDEX_SHIFT$1","UTRIE2_SHIFT_1_2$1","UTRIE2_LSCP_INDEX_2_OFFSET$1","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_DATA_MASK$1","UTRIE2_LSCP_INDEX_2_LENGTH$1","UTRIE2_INDEX_2_BMP_LENGTH$1","UTRIE2_UTF8_2B_INDEX_2_OFFSET$1","UTRIE2_UTF8_2B_INDEX_2_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","UTRIE2_INDEX_2_MASK$1","slice16$1","slice32$1","createTrieFromBase64$1","view32","view16","headerLength","Trie$1","Trie","errorValue","highStart","highValueIndex","ix","chars$3","lookup$3","i$3","base64$1","LETTER_NUMBER_MODIFIER","BK","CR$1","LF$1","CM","NL","WJ","ZW","GL","SP","ZWJ$1","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI$1","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","classType","isAdjacentWithSpaceIgnored","classTypes","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","cssFormattedClasses","isLetterNumber","forbiddenBreakpoints","letterNumber","Break","LineBreaker","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","SPACE","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","EOF","ZERO","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","isIdentifierStart","isNumberStart","stringToNumber","integers","fracd","frac","expsign","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","digits","questionMarks","start_1","endDigits","stringToken","SLICE_STACK_SIZE","endingCodePoint","repr","hexCodePoint","tokenizer","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","DEG","GRAD","RAD","TURN","_context","isAngle","parseNamedSide","sideOrCorner","ident","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","isTransparent","getTokenColorValue","hue2rgb","hue","saturation","lightness","backgroundClip","parseColorStop","processColorStops","lineLength","processStops","stop_1","absoluteValue","gapBegin","stop_2","gapLength","beforeGap","gapValue","getAngleFromCorner","calculateGradientDirection","radian","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","findCorner","closest","corners","stat","calculateRadius","rx","ry","linearGradient","angle$1","firstToken","colorStop","prefixLinearGradient","webkitGradient","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","isAtPosition_1","prefixRadialGradient","isLinearGradient","isRadialGradient","image_1","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","BACKGROUND_SIZE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","bit","parseDisplayValue","float","LINE_BREAK","computeLineHeight","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textShadow","shadow","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix3d","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","WORD_BREAK","wordBreak","textDecorationColor","textDecorationLine","fontVariant","counterIncrement","increments","increment","counterReset","resets","quotes","open_1","close_1","getQuote","open","boxShadow","paintOrder","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","overflowTuple","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","length_1","value_1","elementDebuggerAttribute","getElementDebugType","isDebugging","ElementContainer","isHTMLElementNode","chars$1","lookup$1","i$1","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","Prepend","CR","LF","Extend","SpacingMark","LV","LVT","ZWJ","Extended_Pictographic","RI","toCodePoints","UnicodeTrie","BREAK_NOT_ALLOWED","BREAK_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","breaker","graphemes","bk","testRangeBounds","TEST_HEIGHT","testElement","rangeBounds","rangeHeight","testIOSLineBreak","textList","supports","boundAhead","testCORS","testResponseType","testSVG","isGreenPixel","testForeignObject","greenImageSrc","createForeignObjectSVG","loadSerializedSVG$1","foreignObject","FEATURES","TextBounds","parseTextBounds","breakText","textBounds","clientRects","subSegments","segmentGraphemes","subOffset_1","subSegment","replacementNode","getWrapperBounds","ownerDocument","segmentWords","breakWords","wordSeparators","word_1","TextContainer","CAPITALIZE","ImageElementContainer","CanvasElementContainer","SVGElementContainer","LIElementContainer","OLElementContainer","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","CHECKBOX","RADIO","INPUT_COLOR","InputElementContainer","SelectElementContainer","TextareaElementContainer","IFrameElementContainer","iframe","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","nextNode","isElementNode","isSlotElement","createContainer","createsRealStackingContext","createsStackingContext","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","isSVGElementNode","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","CounterState","counters","canReset","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","createCounterText","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","numbers","multipliers","negativeSign","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","DocumentCloner","windowSize","createIFrameContainer","scrollX","scrollY","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","referenceElement","restoreNodeScroll","imagesReady","serializeDoctype","restoreOwnerScroll","copyCSSStyles","sheet","clonedCanvas","clonedCtx","attribs","video","blankCanvas","copyStyles","assignedNodes","assignedNode","styleBefore","styleAfter","createPseudoHideStyles","PseudoElementType","pseudoElt","anonymousReplacedElement","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","cloneIframeContainer","ignoredStyleProperties","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","Cache","isBlobImage","isRenderable","isSameOrigin","useCORS","useProxy","isInlineImage","isInlineBase64Image","responseType","reader_1","queryString","timeout_1","INLINE_SVG","INLINE_BASE64","INLINE_IMG","BezierCurve","startControl","endControl","firstHalf","abbc","bccd","isBezierCurve","BoundCurves","tlh","tlv","trh","trv","brh","brv","blh","blv","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","getCurvePoints","CORNER","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isTransformEffect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","StackingContext","ElementPaint","borderBox","paddingBox","inFlow","effects","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","order_1","index_2","processListItems","numbering","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicWidth","intrinsicHeight","intrinsicProportion","hasIntrinsicProportion","targetRatio","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_1","height_1","width_2","height_2","width_3","height_3","SMALL_IMAGE","SAMPLE_TEXT","FontMetrics","Renderer","MASK_OFFSET","CanvasRenderer","letters","fixIOSSystemFonts","paintOrderLayer","textShadows","iframeRenderer","isTextInputElement","canvasTextAlign","_o","_p","paths","gradient_1","top_1","radialGradient_1","midX","midY","curvePoints","outerPaths","innerPaths","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","strokePaths","boxPaths","dashLength","spaceLength","useLineDash","numberOfDashes","minSpace","maxSpace","path1","path2","iOSBrokenFonts","ForeignObjectRenderer","loadSerializedSVG","Context","windowBounds","html2canvas","renderElement","defaultView","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","_q","parseBackgroundColor","backgroundColorOverride","defaultBackgroundColor","_setPrototypeOf","_isNativeReflectConstruct","_construct","Parent","Class","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","minLen","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","construct","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","addToSet","transformCaseFunc","_transformCaseFunc","lcElement","newObject","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","getGlobal","_createTrustedTypesPolicy","trustedTypes","ATTR_NAME","policyName","scriptUrl","createDOMPurify","DOMPurify","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","getNextSibling","getChildNodes","getParentNode","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","CUSTOM_ELEMENT$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parentTagName","_forceRemove","_removeAttribute","_initDocument","leadingWhitespace","dirtyPayload","_createIterator","_isClobbered","_isNode","_executeHook","entryPoint","currentNode","_sanitizeElements","_basicCustomElementTest","childNodes","childCount","childClone","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","_attr","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","returnNode","nodeIterator","serializedHTML","hookFunction","purify","globalThis_1","fails","exec","descriptors","functionBindNative","NATIVE_BIND","functionCall","$propertyIsEnumerable","NASHORN_BUG","objectPropertyIsEnumerable","createPropertyDescriptor","bitmap","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","uncurryThis","stringSlice","classofRaw","classof","$Object","indexedObject","isNullOrUndefined","$TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","isCallable","argument","globalThis","aFunction","getBuiltIn","objectIsPrototypeOf","navigator","userAgent","environmentUserAgent","Deno","versions","v8","environmentV8Version","V8_VERSION","$String","symbolConstructorDetection","NATIVE_SYMBOL","useSymbolAsUid","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","tryToString","aCallable","getMethod","ordinaryToPrimitive","pref","defineGlobalProperty","SHARED","sharedStoreModule","hasOwnProperty_1","postfix","WellKnownSymbolsStore","createWellKnownSymbol","wellKnownSymbol","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","EXISTS","documentCreateElement","DESCRIPTORS","ie8DomDefine","propertyIsEnumerableModule","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","definePropertyModule","createNonEnumerableProperty","getDescriptor","PROPER","functionToString","inspectSource","weakMapBasicDetection","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","TypeError","enforce","getterFor","TYPE","STATE","internalState","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","defineBuiltIn","simple","mathTrunc","trunc","toIntegerOrInfinity","toAbsoluteIndex","toLength","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","arrayIncludes","push","objectKeysInternal","enumBugKeys","internalObjectKeys","objectGetOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertySymbols","getOwnPropertyDescriptorModule","copyConstructorProperties","exceptions","detection","POLYFILL","NATIVE","isForced_1","_export","TARGET","GLOBAL","STATIC","FORCED","userAgentStartsWith","environment","ENVIRONMENT","environmentIsNode","functionUncurryThisAccessor","isPossiblePrototype","aPossiblePrototype","uncurryThisAccessor","objectSetPrototypeOf","CORRECT_SETTER","TO_STRING_TAG","setToStringTag","TAG","defineBuiltInAccessor","SPECIES","setSpecies","CONSTRUCTOR_NAME","anInstance","Prototype","toStringTagSupport","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tryGet","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","aConstructor","speciesConstructor","defaultConstructor","functionApply","functionUncurryThisClause","functionBindContext","arraySlice","validateArgumentsLength","passed","environmentIsIos","IS_IOS","IS_NODE","Dispatch","Function","MessageChannel","String","ONREADYSTATECHANGE","$location","port","runner","eventListener","globalPostMessageDefer","safeGetBuiltIn","Queue$2","tail","environmentIsIosPebble","environmentIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","microtask","notify","then","microtask_1","hostReportErrors","perform","promiseNativeConstructor","NativePromiseConstructor","NativePromiseConstructor$3","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","constructor","promiseConstructorDetection","PromiseCapability","$$resolve","$$reject","newPromiseCapability","require$$19","require$$20","PromiseConstructorDetection","require$$21","newPromiseCapabilityModule","require$$22","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","setInternalState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","isThenable","callReaction","exited","onHandleUnhandled","isReject","reactions","onUnhandled","dispatchEvent","IS_UNHANDLED","isUnhandled","internalReject","internalResolve","onFulfilled","onRejected","iterators","Iterators","ITERATOR","ArrayPrototype","isArrayIteratorMethod","getIteratorMethod","getIterator","usingIterator","iteratorMethod","iteratorClose","innerResult","innerError","Result","ResultPrototype","iterate","unboundFunction","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","iterFn","callFn","SAFE_CLOSING","iteratorWithReturn","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","promiseStaticsIncorrectIteration","PROMISE_STATICS_INCORRECT_ITERATION","capability","$promiseResolve","alreadyCalled","capabilityReject","promiseResolve","promiseCapability","asyncGeneratorStep","_asyncToGenerator","_next","_throw","regexpFlags","$RegExp","UNSUPPORTED_Y","UNSUPPORTED_Y$2","BROKEN_CARET","regexpStickyHelpers","objectDefineProperties","Properties","definePropertiesModule","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","activeXDocument","NullProtoObjectViaIFrame","JS","iframeDocument","NullProtoObject","regexpUnsupportedDotAll","regexpUnsupportedNcg","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","sticky","charsAdded","strCopy","regexpExec","RegExpPrototype","fixRegexpWellKnownSymbolLogic","KEY","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","forceStringMethod","$exec","charCodeAt","CONVERT_TO_STRING","stringMultibyte","advanceStringIndex","unicode","regexpExecAbstract","fixRegExpWellKnownSymbolLogic","regExpExec","fixRegExpWellKnownSymbolLogic$2","MATCH","nativeMatch","maybeCallNative","matcher","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","getSubstitution","captures","namedCaptures","tailPos","REPLACE","maybeToString","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_SUPPORTS_NAMED_GROUPS","fixRegExpWellKnownSymbolLogic$1","UNSAFE_SUBSTITUTE","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","replacerArgs","isRegexp","notARegexp","correctIsRegexpLogic","METHOD_NAME","notARegExp","correctIsRegExpLogic","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","searchString","UNSCOPABLES","addToUnscopables","correctPrototypeGetter","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","BUGGY_SAFARI_ITERATORS","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","iteratorsCore","returnThis","iteratorCreateConstructor","IteratorConstructor","NAME","ENUMERABLE_NEXT","FunctionName","createIteratorConstructor","IteratorsCore","PROPER_FUNCTION_NAME","KEYS","VALUES","ENTRIES","iteratorDefine","Iterable","IS_SET","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","CurrentIteratorPrototype","createIterResultObject","defineIterator","ARRAY_ITERATOR","es_array_iterator","iterated","domIterables","DOMTokenListPrototype","domTokenListPrototype","DOMIterables","ArrayIteratorMethods","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","REDUCE_EMPTY","IS_RIGHT","callbackfn","argumentsLength","arrayMethodIsStrict","$reduce","CHROME_VERSION","CHROME_BUG","endPosition","MAX_UINT32","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","BUGGY","SPLIT","nativeSplit","internalSplit","unicodeMatching","lim","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performanceNowModule","vendors","caf","frameDuration","_now","cp","rafModule","whitespaces","ltrim","rtrim","non","stringTrimForced","$trim","forcedStringTrimMethod","rgbcolor","color_string","simple_colors","color_defs","channels","examples","example","list_item","list_color","example_div","list_item_value","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","nativeReverse","regExpFlags","regexpGetFlags","$toString","getRegExpFlags","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","mulTable","shgTable","getImageDataFromCanvas","topX","topY","processCanvasRGBA","processImageDataRGBA","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stackEnd","stackIn","stackOut","yw","mulSum","shgSum","pg","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_stackOut","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","offscreen","DOMParserFallback","fetch","compressSpaces","trimLeft","trimRight","toNumbers","allUppercase","normalizeAttributeName","parseExternalUrl","urlMatch","normalizeColor","rgbParts","normalizedColor","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","getSelectorSpecificity","specificity","currentSelector","PSEUDO_ZERO","vectorMagnitude","vectorsRatio","vectorsAngle","CB1","CB2","CB3","CB4","QB1","QB2","QB3","zeroIsValue","axisOrIsFontSize","processPercent","isFontSize","viewPort","patternTransform","commas","RGBColor","ViewPort","viewPorts","pathPoints","xp","Mouse","screen","onMouseMove","eventElements","boundingBox","_ref3","eventTarget","defaultWindow","defaultFetch$1","Screen","checker","isReadyLock","desiredWidth","desiredHeight","refX","refY","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","meetOrSlice","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","FRAMERATE","mouse","tick","requestAnimationFrame","shouldUpdate","CLIENT_WIDTH","CLIENT_HEIGHT","isFirstRender","widthStyle","heightStyle","cWidth","cHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","defaultFetch","DefaultDOMParser","parserError","tx","ty","Matrix","Skew","skew","SkewX","SkewY","parseTransforms","parseTransform","TransformType","transformOriginXProperty","transformOriginYProperty","captureTextNodes","createIfNotExists","skipAncestors","parentStyle","_style","clipPathStyleProp","_node$getAttribute","styleClasses","styleClass","stylesSpecificity","existingSpecificity","ignoreStyles","toRestore","styleProp","_this$parent","UnknownElement","wrapFontFamily","trimmed","prepareFontFamily","prepareFontStyle","targetFontStyle","prepareFontWeight","targetFontWeight","Font","inheritFont","BoundingBox","forX","b2ac","p0x","p0y","p3x","p3y","cp1x","cp1y","cp2x","cp2y","PathParser","SVGPathData","commands","command","xProp","yProp","previousCommand","priorTo","angles","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","_fillStyle","_fillStyle2","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","PathElement","pathParser","fillRuleStyleProp","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","_marker","_point","_angle","_marker2","_point2","_angle2","controlPoint","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","cpp","centp","ad","ah","halfWay","GlyphElement","TextElement","childBoundingBox","inheritFontSize","glyph","prevChar","nextChar","arabicForm","maybeGlyph","customFont","unitsPerEm","ctxFont","lw","firstElement","isRTL","textParent","xAttr","yAttr","dxAttr","dyAttr","measure","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","_this$node$parentNode","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","KAPPA","CircleElement","EllipseElement","LineElement","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","MarkerElement","markerUnits","DefsElement","GElement","GradientElement","stopsContainer","MAX_VIRTUAL_PIXELS","rootView","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","RadialGradientElement","fx","StopElement","stopOpacity","stopColor","AnimateElement","valuesAttr","initialUnits","updated","typeAttr","lb","ub","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","MissingGlyphElement","TRefElement","firstChild","AElement","ownKeys$2","_objectSpread$2","TextPathElement","pathElement","dataArray","dTheta","fs","textDecoration","glyphInfo","partialText","textFullWidth","fullPathWidth","spacesNumber","inputOffset","charI","glyphWidth","splineStep","dyX","dyY","measuresCache","thisSpacing","parentSpacing","letterSpacingCache","textLen","dxSum","textWidth","nextOffset","pathCommands","nextCommandType","commandType","inc","fromX","fromY","rise","iy","pRise","pRun","fullLen","cumulativePathLength","currentT","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","targetDistance","dataUriRegex","ImageElement","isSvg","subDocument","_image","SymbolElement","SVGFontLoader","svgDocument","fontNode","StyleElement","cssDefs","cssParts","cssProps","cssClass","cssProp","srcs","UseElement","tempSvg","oldParent","imGet","_height","imSet","m3","FeColorMatrixElement","includeOpacity","srcData","ng","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","ClipPathElement","contextProto","beginPath","closePath","FilterElement","efd","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","canvasRGBA","TitleElement","DescElement","ownKeys$1","_objectSpread$1","createImage","_createImage","anonymousCrossOrigin","_event","_source","_lineno","_colno","Document","canvg","rootEmSize","emSize","forceAnonymousCrossOrigin","emSizeStack","ElementType","Canvg","_arguments2"],"mappings":"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CjB,YAAe,CACX,EACA,EACA,EACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,aAAgB,CACZ,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,EACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,MAAS,CACL,IACA,IACA,IACA,CACH,EACD,MAAS,CACL,IACA,IACA,IACA,CACH,EACD,OAAU,CACN,IACA,IACA,IACA,CACH,EACD,MAAS,CACL,EACA,EACA,EACA,CACH,EACD,eAAkB,CACd,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,EACA,EACA,IACA,CACH,EACD,WAAc,CACV,IACA,GACA,IACA,CACH,EACD,MAAS,CACL,IACA,GACA,GACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,GACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,EACA,CACH,EACD,UAAa,CACT,IACA,IACA,GACA,CACH,EACD,MAAS,CACL,IACA,IACA,GACA,CACH,EACD,eAAkB,CACd,IACA,IACA,IACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,QAAW,CACP,IACA,GACA,GACA,CACH,EACD,KAAQ,CACJ,EACA,IACA,IACA,CACH,EACD,SAAY,CACR,EACA,EACA,IACA,CACH,EACD,SAAY,CACR,EACA,IACA,IACA,CACH,EACD,cAAiB,CACb,IACA,IACA,GACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,EACA,IACA,EACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,YAAe,CACX,IACA,EACA,IACA,CACH,EACD,eAAkB,CACd,GACA,IACA,GACA,CACH,EACD,WAAc,CACV,IACA,IACA,EACA,CACH,EACD,WAAc,CACV,IACA,GACA,IACA,CACH,EACD,QAAW,CACP,IACA,EACA,EACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,aAAgB,CACZ,IACA,IACA,IACA,CACH,EACD,cAAiB,CACb,GACA,GACA,IACA,CACH,EACD,cAAiB,CACb,GACA,GACA,GACA,CACH,EACD,cAAiB,CACb,GACA,GACA,GACA,CACH,EACD,cAAiB,CACb,EACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,EACA,IACA,CACH,EACD,SAAY,CACR,IACA,GACA,IACA,CACH,EACD,YAAe,CACX,EACA,IACA,IACA,CACH,EACD,QAAW,CACP,IACA,IACA,IACA,CACH,EACD,QAAW,CACP,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,GACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,GACA,GACA,CACH,EACD,YAAe,CACX,IACA,IACA,IACA,CACH,EACD,YAAe,CACX,GACA,IACA,GACA,CACH,EACD,QAAW,CACP,IACA,EACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,EACA,CACH,EACD,UAAa,CACT,IACA,IACA,GACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,IACA,CACH,EACD,MAAS,CACL,EACA,IACA,EACA,CACH,EACD,YAAe,CACX,IACA,IACA,GACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,IACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,QAAW,CACP,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,GACA,GACA,CACH,EACD,OAAU,CACN,GACA,EACA,IACA,CACH,EACD,MAAS,CACL,IACA,IACA,IACA,CACH,EACD,MAAS,CACL,IACA,IACA,IACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,cAAiB,CACb,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,EACA,CACH,EACD,aAAgB,CACZ,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,qBAAwB,CACpB,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,YAAe,CACX,IACA,IACA,IACA,CACH,EACD,cAAiB,CACb,GACA,IACA,IACA,CACH,EACD,aAAgB,CACZ,IACA,IACA,IACA,CACH,EACD,eAAkB,CACd,IACA,IACA,IACA,CACH,EACD,eAAkB,CACd,IACA,IACA,IACA,CACH,EACD,eAAkB,CACd,IACA,IACA,IACA,CACH,EACD,YAAe,CACX,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,EACA,IACA,EACA,CACH,EACD,UAAa,CACT,GACA,IACA,GACA,CACH,EACD,MAAS,CACL,IACA,IACA,IACA,CACH,EACD,QAAW,CACP,IACA,EACA,IACA,CACH,EACD,OAAU,CACN,IACA,EACA,EACA,CACH,EACD,iBAAoB,CAChB,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,EACA,EACA,IACA,CACH,EACD,aAAgB,CACZ,IACA,GACA,IACA,CACH,EACD,aAAgB,CACZ,IACA,IACA,IACA,CACH,EACD,eAAkB,CACd,GACA,IACA,IACA,CACH,EACD,gBAAmB,CACf,IACA,IACA,IACA,CACH,EACD,kBAAqB,CACjB,EACA,IACA,IACA,CACH,EACD,gBAAmB,CACf,GACA,IACA,IACA,CACH,EACD,gBAAmB,CACf,IACA,GACA,IACA,CACH,EACD,aAAgB,CACZ,GACA,GACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,YAAe,CACX,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,EACA,EACA,IACA,CACH,EACD,QAAW,CACP,IACA,IACA,IACA,CACH,EACD,MAAS,CACL,IACA,IACA,EACA,CACH,EACD,UAAa,CACT,IACA,IACA,GACA,CACH,EACD,OAAU,CACN,IACA,IACA,EACA,CACH,EACD,UAAa,CACT,IACA,GACA,EACA,CACH,EACD,OAAU,CACN,IACA,IACA,IACA,CACH,EACD,cAAiB,CACb,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,cAAiB,CACb,IACA,IACA,IACA,CACH,EACD,cAAiB,CACb,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,GACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,IACA,CACH,EACD,OAAU,CACN,IACA,EACA,IACA,CACH,EACD,cAAiB,CACb,IACA,GACA,IACA,CACH,EACD,IAAO,CACH,IACA,EACA,EACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,GACA,IACA,IACA,CACH,EACD,YAAe,CACX,IACA,GACA,GACA,CACH,EACD,OAAU,CACN,IACA,IACA,IACA,CACH,EACD,WAAc,CACV,IACA,IACA,GACA,CACH,EACD,SAAY,CACR,GACA,IACA,GACA,CACH,EACD,SAAY,CACR,IACA,IACA,IACA,CACH,EACD,OAAU,CACN,IACA,GACA,GACA,CACH,EACD,OAAU,CACN,IACA,IACA,IACA,CACH,EACD,QAAW,CACP,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,GACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,UAAa,CACT,IACA,IACA,IACA,CACH,EACD,KAAQ,CACJ,IACA,IACA,IACA,CACH,E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KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE5Q,EAAE,CAAC,MAAM,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,CAAC,EAAEjN,EAAE,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,EAAEC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,iBAAiB,CAAA,EAAG,IAAIR,EAAE,EAAE,iBAAiB,wBAAwB,SAASkN,EAAE,CAAC,OAAgBkR,EAAElR,EAAE,WAAW,CAAC,CAAC,IAA1B,MAA2B,EAAE+a,EAAE,EAAE,iBAAiB,eAAe,SAAS/a,EAAE,CAAC,OAAgB,OAAOA,GAAjB,UAAoB,yEAAyE,KAAKA,CAAC,CAAC,EAAEyd,EAAE,EAAE,iBAAiB,kBAAkB,SAASzd,EAAE,CAAC,OAAO+a,EAAE/a,CAAC,GAAGlN,EAAEkN,CAAC,GAAGkR,EAAElR,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAEgJ,EAAE,EAAE,iBAAiB,kBAAkB,SAAShJ,EAAE,CAAC,OAAO+a,EAAE/a,CAAC,GAAG1M,EAAE,QAAQ0M,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,iBAAiB,4BAA4B,SAASA,EAAE,CAAC,OAAO+a,EAAE/a,CAAC,GAAGlN,EAAEkN,CAAC,GAAGkR,EAAElR,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAIue,EAAE,EAAE,iBAAiB,yBAAyB,SAASve,EAAE,CAAC,OAAO+a,EAAE/a,CAAC,GAAGlN,EAAEkN,CAAC,GAAGkR,EAAElR,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,iBAAiB,2BAA2B,SAASA,EAAE,CAAC,OAAO+a,EAAE/a,CAAC,GAAGlN,EAAEkN,CAAC,GAAGkR,EAAElR,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAIwd,EAAE,EAAE,iBAAiB,0BAA0B,SAASxd,EAAE,CAAC,OAAO+a,EAAE/a,CAAC,GAAGlN,EAAEkN,CAAC,GAAMkR,EAAElR,EAAE,WAAW,CAAC,CAAC,EAAE,QAAtB,CAA4B,EAAEX,EAAE,EAAE,iBAAiB,iBAAiB,SAASW,EAAE,CAAC,IAAIkR,EAAE,EAAE7d,EAAEiN,EAAEhN,EAAE,GAAGR,EAAE,EAAE,IAAIoe,EAAE,EAAEA,EAAElR,EAAE,OAAOkR,GAAG,EAAW7d,EAAE2M,EAAE,WAAWkR,CAAC,CAAC,IAA1B,QAA6Bpe,IAAc,OAAOO,EAAEA,EAAE2M,EAAE,WAAWkR,CAAC,CAAC,IAApC,WAAyC5d,GAAG,OAAO,aAAaD,CAAC,EAAEA,EAAEiN,EAAExN,EAAE,GAAGoe,IAAIlR,EAAE,OAAO,IAAI3M,EAAEiN,EAAEhN,GAAG0M,EAAE,OAAOkR,GAAGpe,EAAE,EAAE,EAAEoe,GAAGpe,EAAE,EAAEA,EAAE,KAAKO,EAAEiN,EAAEhN,GAAG0M,EAAE,OAAOkR,EAAEpe,CAAC,EAAEoe,GAAGpe,EAAEA,EAAE,GAAG,OAAOQ,CAAC,EAAE,EAAE,iBAAiB,kBAAkB,SAAS0M,EAAE,CAAC,OAAgBA,IAAT,QAAqB3M,EAAE2M,EAAE,WAAW,CAAC,CAAC,IAA1B,MAA2B,EAAE,IAAInH,EAAE,EAAE,iBAAiB,eAAe,SAASmH,EAAEkR,EAAE5Q,EAAE,CAAC,OAAOya,EAAE/a,CAAC,EAAOlN,EAAEkN,CAAC,IAAR,GAAU,GAAG,CAACue,EAAEve,CAAC,GAAG,CAAC+a,EAAE7J,CAAC,GAAG,CAAC6J,EAAEza,CAAC,GAAG,CAACya,EAAEza,CAAC,GAAGmd,EAAEvM,CAAC,GAAGuM,EAAEzd,CAAC,GAAG,CAAC+a,EAAE7J,CAAC,GAAGuM,EAAEzd,CAAC,GAAGgJ,EAAEkI,CAAC,GAAGuM,EAAEzd,CAAC,GAAGyd,EAAEvM,CAAC,EAAE,EAAEsM,EAAExd,CAAC,GAAG+a,EAAE7J,CAAC,GAAG,CAACuM,EAAEvM,CAAC,GAAG6J,EAAEza,CAAC,GAAGie,EAAEje,CAAC,EAAE,EAAEmd,EAAEzd,CAAC,GAAG,CAAC+a,EAAEza,CAAC,EAAE,EAAE,EAAE,EAAE,EAAEsD,EAAE,SAAS5D,EAAE,CAAC,IAAIM,EAAE,EAAEjN,EAAE,EAAEC,EAAE,EAAER,EAAE,GAAG2qB,EAAE,GAAGzU,EAAE,GAAGuV,GAAGve,EAAEA,GAAG,IAAI,MAAM,MAAM,EAAEwd,EAAE,CAAE,EAAC,IAAIld,EAAE,EAAEA,EAAEie,EAAE,OAAOje,GAAG,EAAE,CAAC,IAAIkd,EAAE,KAAK,EAAE,EAAEnqB,EAAE,EAAEA,EAAEkrB,EAAEje,CAAC,EAAE,OAAOjN,GAAG,EAAEP,EAAEyrB,EAAEje,CAAC,EAAEjN,CAAC,EAAEoqB,EAAEc,EAAEje,CAAC,EAAEjN,EAAE,CAAC,EAAE2V,EAAEuV,EAAEje,CAAC,EAAEjN,EAAE,CAAC,EAAE0nB,EAAEjoB,CAAC,GAAGQ,EAAEuF,EAAE/F,EAAE2qB,EAAEzU,CAAC,EAAEwU,EAAEld,CAAC,GAAQhN,IAAL,GAAO,OAAO,aAAa4d,EAAEpe,EAAE,WAAW,CAAC,CAAC,EAAEQ,CAAC,CAAC,EAAER,GAAG0qB,EAAEld,CAAC,GAAGxN,EAAE0qB,EAAEld,CAAC,EAAEjB,EAAEme,EAAEld,CAAC,CAAC,CAAC,CAAC,OAAOkd,EAAE,KAAK,GAAG,CAAC,EAAEkX,EAAE,EAAE,iBAAiB,cAAc,EAAE,cAAc,UAAU,CAAC,IAAI10B,EAAEkR,EAAY,OAAO,UAAU,CAAC,GAA5B,SAA8B,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK5Q,EAAE,CAAE,EAAC,GAAG,MAAM,QAAQ4Q,CAAC,EAAE,CAAC,IAAI7d,EAAE,EAAE,IAAIiN,EAAE,CAAA,EAAGjN,EAAE,EAAEA,EAAE6d,EAAE,OAAO7d,GAAG,EAAE,MAAM,QAAQ6d,EAAE7d,CAAC,CAAC,EAAEiN,EAAE,KAAK,CAACsD,EAAEsN,EAAE7d,CAAC,EAAE,CAAC,CAAC,EAAE6d,EAAE7d,CAAC,EAAE,CAAC,EAAE6d,EAAE7d,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEiN,EAAE,KAAK,CAACsD,EAAEsN,EAAE7d,CAAC,CAAC,CAAC,CAAC,EAAE2M,EAAEM,CAAC,MAAMN,EAAE4D,EAAEsN,CAAC,EAAE,OAAgB,OAAO,UAAU,CAAC,GAA5B,SAA8BlR,GAAG,UAAU,CAAC,EAAE,KAAKA,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,KAAK,CAAC,iBAAiB00B,CAAC,CAAC,CAAC,EAAE3tB,GAAE,GAAG,EAAEA,GAAE,IAAI,UAAU,SAAS,EAAE,CAAC,IAAImK,EAAE,QAAQ,EAAE,GAAG,CAAE,GAAE,QAAQ,EAAE,SAAS,cAAc,EAAE,QAAS,CAAA,IAAI,aAAa,KAAK,MAAM,YAAY,EAAE,MAAM,IAAI,cAAc,QAAQ,KAAK,SAAS,OAAO,UAAU,mBAAoB,UAAU,CAACA,EAAE,KAAK,SAAS,UAAS,EAAG,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,KAAK,SAAS,IAAI,eAAe,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAG,EAAC,KAAK,SAAS,OAAO,UAAU,aAAc,UAAU,CAAC,KAAK,SAAS,IAAI,eAAeA,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,IAAI,EAQ77J,SAAS,EAAE,CAAC,IAAIA,EAAE,UAAU,CAAC,IAAIlR,EAAE,OAAO,OAAO,eAAe,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASkR,EAAE,CAAClR,EAAEkR,CAAC,CAAC,CAAC,EAAE,IAAIA,EAAE,IAAI,OAAO,eAAe,KAAK,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASlR,EAAE,CAACkR,EAAE,MAAMlR,CAAC,GAAQ,OAAO,UAAUA,CAAC,IAAvB,IAA0BA,EAAE,EAAE,IAAIA,EAAE,KAAK,WAAW,IAAI,EAAE,mBAAmB,KAAK,WAAW,IAAI,EAAE,UAAUkR,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI5Q,EAAE,IAAI,OAAO,eAAe,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASN,EAAE,CAACM,EAAE,MAAMN,CAAC,GAAQ,OAAO,UAAUA,CAAC,IAAvB,IAA0BA,EAAE,EAAE,IAAIA,EAAE,KAAK,WAAW,IAAI,EAAE,mBAAmB,KAAK,WAAW,IAAI,EAAE,UAAUM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAIjN,EAAE,CAAE,EAAC,OAAO,eAAe,KAAK,aAAa,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAAS2M,EAAE,CAAC3M,EAAE2M,CAAC,CAAC,CAAC,EAAE,IAAI1M,EAAE,CAAE,EAAC,OAAO,eAAe,KAAK,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAAS0M,EAAE,CAAC1M,EAAE0M,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,aAAa,CAAE,CAAA,CAAC,EAAEkR,EAAE,UAAU,WAAW,SAASlR,EAAEkR,EAAE,CAAC,IAAI5Q,EAAE,IAAWN,EAAEA,GAAG,QAAb,KAAmB,OAAO,KAAK,IAAIM,KAAK4Q,EAAE,KAAK,IAAI,UAAU,eAAe5Q,CAAC,IAAI,KAAK,IAAI,UAAUA,CAAC,EAAE4Q,EAAE5Q,CAAC,GAAG,OAAO,KAAK,IAAI,UAAU,QAAQ,KAAK,KAAK,IAAI,SAAS,EAAE4Q,EAAE,UAAU,UAAU,UAAU,CAAC,MAAM,IAAI,MAAM,+BAA+B,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,cAAc,UAAU,CAAC,KAAK,OAAO,IAAIA,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAEnK,GAAE,GAAG,EAAE,SAASmK,EAAE,CAAC,IAAI5Q,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAEjN,EAAE,GAAG,EAAE,UAAU,CAAU,KAAK,SAAS,WAAjB,SAA4B,KAAK,SAAS,SAAS,CAAE,EAAC,KAAK,SAAS,SAAS,QAAQ,EAAE,KAAK,SAAS,SAAS,eAAe,OAAO,KAAK,SAAS,SAAS,QAAQ,OAAO,OAAO,CAAA,EAAGiN,CAAC,EAAE,KAAK,SAAS,SAAS,QAAQ,MAAM,KAAK,eAAexN,EAAE,KAAK,IAAI,EAAE,EAAEA,EAAE,UAAU,CAAC,KAAK,SAAS,SAAS,SAAS,IAAIioB,EAAE,KAAK,SAAS,SAAS,MAAM,CAAC,EAAEA,EAAE,UAAU,CAAC,IAAI/a,EAAE,UAAU,CAAC,EAAE,OAAO,eAAe,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASkR,EAAE,CAAClR,EAAEkR,CAAC,CAAC,CAAC,EAAE,IAAIA,EAAE,UAAU,CAAC,EAAE,OAAO,eAAe,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASlR,EAAE,CAACkR,EAAElR,CAAC,CAAC,CAAC,EAAE,IAAIM,EAAE,UAAU,CAAC,EAAE,OAAO,eAAe,KAAK,QAAQ,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASN,EAAE,CAACM,EAAEN,CAAC,CAAC,CAAC,EAAE,IAAI3M,EAAE,UAAU,CAAC,EAAE,OAAO,eAAe,KAAK,SAAS,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAAS2M,EAAE,CAAC3M,EAAE2M,CAAC,CAAC,CAAC,EAAE,IAAI1M,EAAE,UAAU,CAAC,EAAE,OAAO,eAAe,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAAS0M,EAAE,CAAC1M,EAAE0M,CAAC,CAAC,CAAC,EAAE,IAAIlN,EAAE,UAAU,CAAC,EAAE,OAAO,eAAe,KAAK,aAAa,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASkN,EAAE,CAAClN,EAAEkN,CAAC,CAAC,CAAC,EAAE,IAAI+a,EAAE,UAAU,CAAC,EAAE,OAAO,OAAO,eAAe,KAAK,QAAQ,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAAS/a,EAAE,CAAC+a,EAAE/a,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE+a,EAAE,UAAU,MAAM,UAAU,CAAC,OAAO,IAAIA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,KAAK,WAAW,KAAK,KAAK,CAAC,EAAEA,EAAE,UAAU,QAAQ,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,KAAK,WAAW,KAAK,KAAK,CAAC,EAAE7J,EAAE,kBAAkB,SAASlR,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,SAAS,eAA2B,OAAOA,GAAnB,WAAqBA,EAAE,OAAO,IAAI,EAAEkR,EAAE,kBAAkB,SAASlR,EAAEkR,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,IAAI5Q,GAAG4Q,EAAEA,GAAG,CAAA,GAAI,UAAU,KAAK,YAAa,EAAC7d,EAAE6d,EAAE,MAAM,KAAK,QAAS,EAAC,EAAEA,EAAE,aAAa,KAAK,SAAS,YAAY6J,EAAE,EAAE0C,EAAE,EAAEzU,EAAE,EAAEuV,EAAE,KAAK,GAAG,CAAC,MAAM,QAAQve,CAAC,GAAa,OAAOA,GAAjB,SAAmB,CAAC,GAAa,OAAOA,GAAjB,SAAmB,MAAM,IAAI,MAAM,sGAAsG,EAAEA,EAAE,OAAOA,CAAC,CAAC,CAAC,IAAIwd,EAAEtM,EAAE,SAASsM,EAAE,EAAY,OAAOxd,GAAjB,SAAmBA,EAAE,KAAK,gBAAgBA,EAAEwd,CAAC,EAAqB,OAAO,UAAU,SAAS,KAAKxd,CAAC,IAAnD,mBAAuDA,EAAEA,EAAE,OAAQ,SAASA,EAAEkR,EAAE,CAAC,OAAOlR,EAAE,OAAOue,EAAE,gBAAgBrN,EAAEsM,CAAC,CAAC,CAAC,EAAG,CAAA,CAAE,GAAGxd,EAAE,MAAM,QAAQA,CAAC,EAAEA,EAAE,CAACA,CAAC,EAAE,QAAQX,EAAE,EAAEA,EAAEW,EAAE,OAAOX,IAAI0b,GAAG/R,EAAE,KAAK,mBAAmBhJ,EAAEX,CAAC,EAAE,CAAC,KAAKhM,CAAC,CAAC,EAAEiN,KAAKya,EAAE/R,GAAG,OAAW+R,IAAJ,IAAQ0C,EAAEzd,EAAE,QAAQ,CAAC,EAAE+a,GAAG,EAAE,EAAE,KAAK,KAAK0C,EAAEnd,EAAE,KAAK,oBAAqB,EAACA,GAAG,KAAK,oBAAmB,EAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE4Q,EAAE,YAAY,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,KAAK,QAAS,EAAC,IAAIlR,EAAE,KAAK,SAAS,SAAS,SAASM,EAAE,OAAO,KAAK,SAAS,SAAS,SAAS,IAAIya,EAAE/a,EAAE,KAAKA,EAAE,IAAI,OAAO,MAAM,EAAE,KAAK,SAAS,SAAS,OAAO,EAAE,IAAI,EAAE,IAAIyd,EAAEvM,EAAE,KAAK,UAAU,CAAC,IAAIlR,EAAEA,EAAE,UAAU,CAAC,YAAY+a,EAAE,UAAU,CAAC,EAAE,IAAIA,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI7J,EAAE,KAAK,SAAS,SAAS,SAASpe,EAAE,KAAK,SAAS,SAAS,QAAQ2qB,EAAE,KAAK,SAAS,SAAS,SAASnd,EAAE0I,EAAE,KAAK,SAAS,SAAS,eAAeuV,EAAE,KAAK,SAAS,SAAS,aAAa,OAAgBrN,EAAE,aAAX,SAAwBA,EAAE,aAAalR,EAAE,YAAYA,EAAE,GAAGkR,EAAE,GAAG,IAAIA,EAAE,OAAO,GAAGlR,EAAE,EAAEkR,EAAE,GAAG,GAAGA,EAAE,EAAEA,EAAE,OAAOlR,EAAE,OAAOyd,EAAE,OAAO,KAAK,cAAe,GAAE,KAAK,YAAW,EAAGzd,EAAE,EAAEyd,EAAE,IAAIc,GAAGvV,IAAI,KAAK,eAAehJ,EAAE,WAAW,EAAE,EAAEA,EAAE,GAAGgJ,EAAE,CAAC,EAAE,SAAShJ,EAAE,EAAEkR,EAAE,EAAEA,EAAE,QAAQlR,EAAE,GAAYA,EAAE,KAAK,CAAC,IAAjB,SAAqB,KAAK,KAAKA,EAAE,EAAEA,EAAE,EAAEA,EAAE,MAAMA,EAAE,OAAY3M,IAAL,GAAO,KAAK,MAAM,EAAY2M,EAAE,QAAZ,QAAkB,KAAK,KAAKA,EAAE,KAAKA,EAAE,EAAEA,EAAE,MAAMlN,EAAEkN,EAAE,EAAElN,EAAE,CAAC,MAAM,QAAQ,SAAS,KAAK,CAAC,EAAakN,EAAE,QAAb,SAAmB,KAAK,KAAKA,EAAE,KAAKA,EAAE,EAAEA,EAAE,MAAM,EAAEA,EAAE,EAAElN,EAAE,CAAC,MAAM,SAAS,SAAS,MAAM,SAASkN,EAAE,MAAMlN,EAAEA,CAAC,CAAC,EAAE,KAAK,KAAKkN,EAAE,KAAKA,EAAE,EAAElN,EAAEkN,EAAE,EAAElN,EAAE,CAAC,MAAM,OAAO,SAAS,MAAM,SAASkN,EAAE,MAAMlN,EAAEA,CAAC,CAAC,GAAG,KAAK,SAAS,SAAS,SAASkN,EAAE,IAAI,EAAEkR,EAAE,MAAM,SAASA,EAAE7d,EAAEkrB,EAAEf,EAAEne,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAACkf,EAAE,MAAM,IAAI,MAAM,wBAAwB,EAAE,IAAI1lB,EAAE+K,EAAE8wB,EAAE/W,EAAEhd,EAAE,CAAA,EAAG6d,EAAE,CAAA,EAAGzrB,EAAE,CAAA,EAAGiI,EAAE,CAAA,EAAG+tB,EAAE,CAAA,EAAGwJ,EAAE,CAAA,EAAG66C,EAAE,CAAA,EAAG3L,GAAGpiE,EAAEA,GAAG,CAAA,GAAI,UAAU,GAAGtE,EAAOsE,EAAE,eAAP,GAAoBgtE,EAAEhtE,EAAE,KAAcA,EAAE,IAAI,WAAW,IAA1B,OAA4B,GAAGA,EAAE,IAAI,WAAW,EAAEA,EAAE,UAAU,GAAGmoH,EAAEnoH,EAAE,SAAS,OAAO,OAAO,CAAC,MAAM,KAAK,aAAY,CAAE,EAAEiB,CAAC,EAAE07D,EAAY,OAAO38D,EAAE,SAAnB,SAA2BA,EAAE,QAAQ,EAAEqB,EAAErB,EAAE,uBAAuB,UAAUqiE,EAAEriE,EAAE,iBAAiB,OAAO,GAAGvM,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,SAAS,aAAaiI,EAAE,KAAK,SAAS,SAAS,QAAQysH,EAAE,KAAK,SAAS,SAAS,gBAAgBn7C,EAAE,KAAK,SAAS,SAAS,QAAQrQ,EAAE,KAAK,SAAS,SAAS,sBAAsBt7D,EAAE,KAAK,SAAS,SAAS,gBAAgBghE,EAAE,KAAK,YAAY2K,CAAC,EAAQ7uD,GAAN,KAAQgB,EAAE7d,EAAE,OAAO,KAAK4d,EAAE,CAAC,CAAC,EAAExrB,EAAE4N,EAAE,IAAK,UAAU,CAAC,MAAM,MAAM,CAAC,UAAW,MAAM,QAAQ6c,CAAC,GAAcxd,GAAEwd,EAAE,CAAC,CAAC,IAAjB,SAAmB,IAAI7c,EAAE6c,EAAE,IAAK,SAASxd,EAAE,CAAC,OAAOA,EAAE,IAAI,CAAC,EAAGwe,EAAEhB,EAAE,IAAK,SAASxd,EAAE,CAAC,OAAOA,EAAE,QAAQA,EAAE,MAAM,EAAE,CAAC,EAAGjN,EAAEyqB,EAAE,IAAK,SAASxd,EAAE,CAAC,OAAOA,EAAE,OAAO,MAAM,CAAC,EAAGnH,EAAE,EAAEA,EAAE2kB,EAAE,OAAO3kB,GAAG,EAAEkwB,EAAEvL,EAAE3kB,CAAC,EAAE,IAAI,EAAE2kB,EAAE3kB,CAAC,EAAE,OAAO,UAAU,WAAW,MAAM,QAAQ2kB,CAAC,GAAa,OAAOA,EAAE,CAAC,GAApB,WAAwBgB,EAAE7d,EAAE6c,EAAEzqB,EAAE4N,EAAE,IAAK,UAAU,CAAC,MAAM,MAAM,CAAG,GAAE,GAAG8gE,GAAG,MAAM,QAAQjkD,CAAC,GAAa,OAAOA,EAAE,CAAC,GAApB,SAAsB,IAAI3kB,EAAE,EAAEA,EAAE8H,EAAE,OAAO9H,GAAG,EAAE,CAAC,IAAImC,EAAE2iB,EAAEhd,EAAE9H,CAAC,CAAC,EAAE0lB,EAAE,IAAK,SAASve,EAAE,CAAC,OAAOA,EAAE2d,CAAC,CAAC,CAAG,EAAC,KAAK,QAAQ,OAAO,MAAM,EAAE4U,EAAE,KAAK,KAAK,kBAAkB/T,EAAE3lB,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,SAAS,gBAAgB,YAAY,KAAK,SAAS,WAAW,CAAC,EAAE,CAAC,EAAE+K,EAAE5I,EAAE2iB,CAAC,EAAE,KAAK,QAAQ,OAAO,QAAQ,EAAE+W,EAAE,EAAEA,EAAE9wB,EAAE,OAAO8wB,GAAG,EAAEnC,EAAE,KAAK,KAAK,kBAAkB3uB,EAAE8wB,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,SAAS,gBAAgB,YAAY,KAAK,SAAS,WAAW,CAAC,EAAE,CAAC,EAAE3L,EAAEpL,CAAC,EAAE,KAAK,IAAI,MAAM,KAAK4U,CAAC,EAAEypC,EAAEA,EAAEzpC,EAAE,CAAA,CAAE,CAAC,GAAGx3B,EAAE,CAAC,IAAImyE,EAAE,CAAA,EAAG,IAAIr0E,EAAE,EAAEA,EAAE8H,EAAE,OAAO9H,GAAG,EAAEq0E,EAAEvsE,EAAE9H,CAAC,CAAC,EAAE,GAAGq0E,EAAEvsE,EAAE9H,CAAC,CAAC,EAAE,KAAK2lB,EAAE3lB,CAAC,EAAEq0E,EAAEvsE,EAAE9H,CAAC,CAAC,EAAE,MAAM9F,EAAE8F,CAAC,EAAE,IAAIiqE,EAAE95D,EAAE,KAAK,KAAKkkE,EAAEnkD,CAAC,EAAEqkD,EAAEzsE,EAAE,IAAK,SAASX,EAAE,CAAC,OAAO,IAAI+a,EAAE7J,EAAE7d,EAAE01B,EAAE/oB,CAAC,EAAE8iE,EAAEoK,EAAEltE,CAAC,EAAE,KAAK,OAAOktE,EAAEltE,CAAC,EAAE,KAAK,CAAC,CAAG,EAAC,KAAK,kBAAkBotE,CAAC,EAAE,KAAK,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI5sE,EAAEgd,EAAE,OAAQ,SAASxd,EAAEkR,GAAE,CAAC,OAAOlR,EAAEkR,GAAE,IAAI,EAAEA,GAAE,MAAMlR,CAAC,EAAG,CAAE,CAAA,EAAE,IAAInH,EAAE,EAAEA,EAAE0lB,EAAE,OAAO1lB,GAAG,EAAE,CAAC,aAAawG,GAAGA,EAAE,oBAAoB,UAAUA,EAAE,SAAS,CAAC,IAAIxG,EAAE,KAAK0lB,EAAE1lB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI8oE,EAAE34D,EAAE,KAAK,KAAKuV,EAAE1lB,CAAC,EAAEkwB,CAAC,EAAE,IAAI2L,EAAE,EAAEA,EAAE/zB,EAAE,OAAO+zB,GAAG,EAAE,CAAC,IAAIg0C,GAAEnqD,EAAE1lB,CAAC,EAAE8H,EAAE+zB,CAAC,CAAC,EAAE,cAAcr1B,GAAGA,EAAE,qBAAqB,UAAUA,EAAE,UAAU,CAAC,IAAIxG,EAAE,IAAI67B,EAAE,KAAKg0C,EAAC,EAAE,IAAI,EAAEjrD,EAAE,KAAK,KAAK,IAAI1C,EAAE7J,EAAE7d,EAAE01B,EAAEpoB,EAAE+zB,CAAC,CAAC,EAAEitC,EAAE+G,GAAE7vE,EAAE,EAAE2H,EAAEG,EAAE+zB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,SAAS,QAAQxjB,EAAE,KAAK,SAAS,SAAS,QAAQ7d,EAAE,IAAI,EAAE,IAAI2V,EAAE,SAAShJ,EAAEkR,EAAE,CAAC,IAAI5Q,EAAE,KAAK,SAAS,SAAS,QAAQjN,EAAE,KAAK,SAAS,SAAS,gBAAgBC,EAAE,KAAK,SAAS,YAAY,OAAO,OAAO,KAAK0M,CAAC,EAAE,IAAK,SAAS3M,EAAE,CAAC,IAAIC,EAAE0M,EAAE3M,CAAC,EAAE,OAAO,KAAK,gBAAgBC,EAAE,eAAe,MAAM,EAAEA,EAAE,KAAKA,EAAE4d,EAAE7d,CAAC,EAAEiN,EAAEA,CAAC,CAAC,EAAG,IAAI,EAAE,IAAK,SAASN,EAAE,CAAC,OAAO,KAAK,oBAAqB,EAACA,EAAE,OAAO3M,EAAEC,EAAEgN,EAAEA,CAAC,EAAG,IAAI,EAAE,OAAQ,SAASN,EAAEkR,EAAE,CAAC,OAAO,KAAK,IAAIlR,EAAEkR,CAAC,CAAC,EAAG,CAAC,CAAC,EAAEA,EAAE,kBAAkB,SAASlR,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,SAAS,eAAeA,CAAC,EAAEkR,EAAE,eAAe,SAASlR,EAAEkR,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,SAAS,SAAS,eAAe,MAAM,IAAI,MAAM,yCAAyC,EAAE,IAAI5Q,EAAE,GAAGjN,EAAE,GAAe,OAAO,KAAK,SAAS,SAAS,gBAA1C,WAAyD,CAAC,IAAIP,EAAE,KAAK,SAAS,SAAS,eAAe,KAAK,KAAK,SAAS,SAAS,KAAK,EAAE,KAAK,SAAS,SAAS,SAAS,IAAIioB,EAAEjoB,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,QAAQ,OAAO,MAAM,EAAE,QAAQkW,EAAE,CAAE,EAACuV,EAAE,EAAEA,EAAE,KAAK,SAAS,SAAS,eAAe,OAAOA,GAAG,EAAE,CAACje,EAAE,KAAK,SAAS,SAAS,eAAeie,CAAC,EAAE,MAAO,EAACrN,IAAI5Q,EAAE,EAAE,KAAK,SAAS,SAAS,QAAQ,KAAK,EAAE0I,EAAE,KAAK1I,CAAC,GAAGA,EAAE,WAAWN,EAAE,IAAIwd,EAAE,KAAK,aAAY,EAAG,KAAK,aAAa,KAAK,SAAS,SAAS,eAAe,EAAE,KAAK,aAAa,KAAK,SAAS,SAAS,qBAAqB,EAAEC,EAAE,KAAK,KAAKnd,CAAC,EAAE,KAAK,aAAakd,CAAC,CAAC,CAACxU,EAAE,OAAO,GAAG,KAAK,kBAAkBA,CAAC,EAAE,KAAK,QAAQ,OAAO,QAAQ,EAAE3V,EAAE,EAAE,CAAC,EAAE0T,GAAE,GAAG,EAAE,IAAIsyT,GAAG,CAAC,OAAO,CAAC,SAAS,UAAU,QAAQ,EAAE,QAAQ,CAAC,UAAU,SAAS,QAAQ,EAAE,OAAO,CAAC,SAAS,UAAU,QAAQ,CAAC,EAAEd,GAAG,CAAC,kBAAkB,kBAAkB,YAAY,iBAAiB,SAAS,gBAAgB,WAAW,iBAAiB,gBAAgB,EAAEE,GAAGxmF,GAAGsmF,EAAE,EAAEgB,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAER,IAAG9mF,GAAGsnF,EAAE,EAAE,SAASW,GAAG,EAAE,CAAC,IAAIhpT,EAAE,EAAE,OAAO,QAAQ,OAAO,EAAE,EAAE,YAAa,EAAC5Q,EAAE,SAASN,EAAE,CAAC,OAAOq5T,GAAGr5T,EAAEA,GAAG,QAAQ,EAAEA,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE3M,EAAE,SAAS2M,EAAE,CAAC,GAAG,CAACA,EAAE,MAAO,KAAI,GAAa,OAAOA,GAAjB,SAAmB,OAAOA,GAAG,KAAKA,GAAG,KAAKA,EAAE,KAAK,EAAEA,EAAE,IAAI,GAAG,SAAS,KAAKA,CAAC,EAAE,OAAO,SAASA,CAAC,EAAE,OAAOA,EAAC,CAAE,IAAI,OAAO,MAAO,KAAI,IAAI,SAAS,QAAQ,MAAO,IAAG,CAAC,EAAE,EAAE,MAAM,EAAE1M,EAAE,SAAS0M,EAAE,CAAC,OAAgB,OAAOy4T,GAAGz4T,EAAEA,GAAG,QAAQ,GAAjC,SAAmCA,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAOkR,EAAE,MAAM5Q,EAAE,OAAOjN,EAAE,QAAQC,EAAE,IAAI,EAAE,KAAK,CAAA,EAAG,IAAI,EAAE,KAAK,CAAC,KAAK4d,EAAE,MAAM,CAAC5d,EAAEgN,EAAEjN,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS6lU,GAAG,EAAEhoT,EAAE5Q,EAAEjN,EAAE,CAAC,IAAIC,EAAE,IAAIA,EAAEgN,EAAEhN,GAAG,GAAGA,EAAE4d,EAAE,OAAO5d,GAAGD,EAAE,GAAG,EAAE6d,EAAE5d,CAAC,CAAC,EAAE,OAAO,EAAE4d,EAAE5d,CAAC,CAAC,EAAE,IAAIA,EAAEgN,EAAEhN,GAAG,GAAGA,EAAE4d,EAAE,OAAO5d,GAAGD,EAAE,GAAG,EAAE6d,EAAE5d,CAAC,CAAC,EAAE,OAAO,EAAE4d,EAAE5d,CAAC,CAAC,CAAC,CAAC,IAAIumU,IAAG,CAAC,aAAa,YAAY,MAAM,UAAU,UAAU,UAAU,SAAS,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,OAAO,EAAET,GAAG,CAAC,QAAQ,QAAQ,KAAK,QAAQ,KAAK,QAAQ,cAAc,QAAQ,gBAAgB,QAAQ,aAAa,OAAO,EAAE,SAASV,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,SAASe,IAAG,EAAEvoT,EAAE5Q,EAAE,CAAC,QAAQjN,GAAGiN,EAAEA,GAAG,CAAE,GAAE,mBAAmB,QAAQhN,EAAE,OAAO,OAAO,CAAE,EAACumU,IAAGv5T,EAAE,qBAAqB,CAAE,CAAA,EAAExN,EAAE,KAAKioB,EAAE,KAAK0C,EAAE,EAAEA,EAAEvM,EAAE,OAAO,EAAEuM,EAAE,GAAGnqB,GAAGR,EAAEonU,GAAGhpT,EAAEuM,CAAC,CAAC,GAAG,MAAM,IAAI3qB,EAAE,OAAOQ,EAAER,EAAE,MAAM,GAAG,EAAE,eAAeA,EAAE,MAAM,EAAE,CAACioB,EAAE,EAAEjoB,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAEioB,EAAEA,GAAG,EAAE1nB,CAAC,GAAG,MAAM,IAAI,MAAM,8CAA8CqlU,GAAG5lU,CAAC,EAAE,yBAAyBO,EAAE,IAAI,EAAE,GAAG0nB,EAAE,SAAS/a,EAAEkR,EAAE,CAAC,GAAGA,EAAElR,CAAC,EAAE,OAAOkR,EAAElR,CAAC,EAAE,IAAIM,EAAEm4T,GAAGz4T,CAAC,EAAE3M,EAAEiN,GAAGm4T,GAAG,OAAO,GAAG,EAAEnlU,EAAE4lU,GAAGhoT,EAAEqnT,GAAGj4T,EAAEjN,CAAC,EAAE,GAAG,CAACC,EAAE,MAAM,IAAI,MAAM,oDAAoD0M,CAAC,EAAE,OAAO1M,CAAC,EAAER,EAAE,QAAQioB,CAAC,EAAEA,EAAE,SAAS/a,EAAEkR,EAAE,CAAC,GAAGA,EAAElR,CAAC,EAAE,OAAOkR,EAAElR,CAAC,EAAE,QAAQM,EAAE+4T,GAAGr5T,CAAC,EAAE3M,EAAE,EAAEA,EAAEiN,EAAE,OAAO,EAAEjN,EAAE,GAAG6d,EAAE5Q,EAAEjN,CAAC,CAAC,EAAE,OAAO6d,EAAE5Q,EAAEjN,CAAC,CAAC,EAAE,MAAM,IAAI,MAAM,4CAA4C2M,CAAC,CAAC,EAAElN,EAAE,MAAMioB,CAAC,EAAE,EAAEA,EAAE,SAAS/a,EAAEkR,EAAE,CAAC,GAAGA,EAAElR,CAAC,EAAE,OAAOkR,EAAElR,CAAC,EAAE,GAASA,IAAN,KAASkR,EAAE,GAAG,EAAE,OAAOA,EAAE,GAAG,EAAE,GAASlR,IAAN,KAASkR,EAAE,GAAG,EAAE,OAAOA,EAAE,GAAG,EAAE,IAAI5Q,EAAEy4T,IAAG/4T,CAAC,EAAE3M,EAAE6lU,GAAGhoT,EAAEqoT,GAAGj5T,EAAEN,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC3M,EAAE,MAAM,IAAI,MAAM,mDAAmD2M,CAAC,EAAE,OAAO3M,CAAC,EAAEP,EAAE,OAAOioB,CAAC,GAAG,MAAM,IAAI,MAAM,0CAA0C29S,GAAG5lU,CAAC,EAAE,IAAI,EAAE,OAAOioB,CAAC,CAAC,SAASu+S,GAAG,EAAE,CAAC,OAAO,EAAE,SAAQ,CAAE,CAAC,SAASN,IAAG,EAAE9nT,EAAE,CAAC,QAAQ5Q,EAAE,EAAEA,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAOA,CAAC,IAAI4Q,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE5Q,CAAC,EAAE,EAAE,UAAUA,EAAE,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,SAASs4T,IAAG,EAAE,CAAC,IAAI1nT,EAAE,EAAE,MAAM,+BAA+B,EAAE,OAAcA,IAAP,KAAS,KAAK,CAACA,EAAE,CAAC,EAAE,EAAE,UAAUA,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI4oT,GAAGH,GAAGK,GAAGG,GAAG,CAAC,OAAO,GAAG,SAASjpT,EAAE,CAAC,IAAI5Q,EAAEjN,EAAE,EAAE0nB,EAAE0C,EAAEzU,EAAEuV,EAAEf,EAAEne,EAAEuE,EAAE,SAAS5D,EAAE,CAAC,OAAOA,EAAEA,GAAG,CAAA,EAAG,KAAK,oBAAoBA,EAAE,qBAAqB,GAAG,KAAK,cAAcA,EAAE,eAAe,EAAE,KAAK,YAAYA,EAAE,aAAa,UAAU,KAAK,UAAUA,EAAE,WAAW,UAAU,KAAK,kBAAkBA,EAAE,mBAAmB,GAAG,KAAK,YAAYA,EAAE,aAAa,EAAE,KAAK,KAAKA,EAAE,MAAM,kBAAkB,KAAK,aAAaA,EAAE,cAAc,aAAa,KAAK,UAAUA,EAAE,WAAW,OAAO,KAAK,UAAUA,EAAE,WAAW,EAAE,KAAK,SAASA,EAAE,UAAU,QAAQ,KAAK,QAAQA,EAAE,SAAS,OAAO,KAAK,KAAKA,EAAE,MAAM,CAAA,EAAG,KAAK,UAAmBA,EAAE,YAAX,OAAqBA,EAAE,UAAU,QAAQ,IAAIwd,EAAE,KAAK,yBAAyBxd,EAAE,0BAA0B,SAAS,KAAK,YAAYA,EAAE,aAAa,EAAE,KAAK,UAAUA,EAAE,WAAW,CAAA,EAAG,KAAK,aAAaA,EAAE,cAAc,IAAIgJ,EAAE,KAAK,WAAWhJ,EAAE,YAAY,GAAG,KAAK,UAAUA,EAAE,WAAW,IAAIgJ,EAAE,KAAK,eAAehJ,EAAE,gBAAgB,EAAE,KAAK,SAASA,EAAE,UAAU,CAAA,EAAG,KAAK,OAAOA,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,uBAAuBA,EAAE,wBAAwB,EAAE,KAAK,gBAA2B,OAAOA,EAAE,iBAApB,WAAqCA,EAAE,gBAAgB,IAAI,EAAEkR,EAAE,OAAO,KAAK,CAAC,cAAc,UAAU,CAAC,KAAK,UAAU,IAAIwjB,EAAE,IAAI,EAAEp0B,EAAE,KAAK,SAAS,GAAGjN,EAAE,KAAK,SAAS,oBAAoB,EAAE,KAAK,SAAS,4BAA4B0nB,EAAE,KAAK,SAAS,wBAAwB0C,EAAE,KAAK,SAAS,sBAAsBzU,EAAE,KAAK,SAAS,MAAMuV,EAAE,KAAK,SAAS,UAAUf,EAAE,KAAK,SAAS,OAAOne,EAAE,IAAIuE,CAAC,CAAC,CAAC,EAAE,IAAI8wB,EAAE,SAAS10B,EAAE,CAAC,OAAO,eAAe,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAIkR,GAAElR,EAAE,OAAO,eAAe,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,OAAOkR,EAAC,CAAC,CAAC,EAAE,IAAI5Q,GAAE,GAAG,OAAO,eAAe,KAAK,mBAAmB,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAASN,GAAE,CAACM,GAAE,EAAQN,EAAE,CAAC,CAAC,EAAE,IAAI3M,GAAE,GAAG,OAAO,eAAe,KAAK,mBAAmB,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAAS2M,GAAE,CAAC3M,GAAE,EAAQ2M,EAAE,CAAC,CAAC,EAAE,IAAI1M,GAAE,EAAE,OAAO,eAAe,KAAK,OAAO,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAAS0M,GAAE,CAAC,MAAMA,EAAC,IAAI1M,GAAE0M,GAAE,CAAC,CAAC,EAAE,IAAIlN,EAAE,EAAE,OAAO,eAAe,KAAK,OAAO,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAASkN,GAAE,CAAC,MAAMA,EAAC,IAAIlN,EAAEkN,GAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,OAAOX,EAAE,MAAM,EAAE,IAAI,SAASW,GAAE,CAAC,IAAIkR,EAAY,OAAOlR,IAAjB,SAAmBkR,EAAE,CAAClR,GAAEA,GAAEA,GAAEA,EAAC,IAAIkR,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,EAAElR,GAAE,CAAC,EAAEkR,EAAE,CAAC,EAAElR,GAAE,QAAQ,EAAEA,GAAE,CAAC,EAAEkR,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAElR,GAAE,QAAQ,EAAEA,GAAE,CAAC,EAAEkR,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAElR,GAAE,QAAQ,EAAEA,GAAE,CAAC,EAAEkR,EAAE,CAAC,GAAG7R,EAAE,OAAO6R,CAAC,CAAC,CAAC,EAAE,IAAI6J,EAAE,GAAG,OAAO,eAAe,KAAK,aAAa,CAAC,IAAI,UAAU,CAAC,OAAOA,CAAC,EAAE,IAAI,SAAS/a,GAAE,CAAC+a,EAAE/a,EAAC,CAAC,CAAC,EAAE,IAAIyd,GAAE,EAAE,OAAO,eAAe,KAAK,YAAY,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAASzd,GAAE,CAACyd,GAAEzd,EAAC,CAAC,CAAC,EAAE,IAAIgJ,GAAE,CAAE,EAAC,OAAO,eAAe,KAAK,aAAa,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAAShJ,GAAE,CAACgJ,GAAEhJ,EAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,OAAOX,CAAC,EAAE,IAAI,SAASW,GAAE,CAACA,cAAa4D,IAAIvE,EAAEW,GAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,OAAO,CAAC,IAAI,UAAU,CAAC,OAAOX,EAAE,IAAI,EAAE,IAAI,SAASW,GAAE,CAACX,EAAE,KAAKW,EAAC,CAAC,CAAC,EAAE,IAAIue,GAAE,CAAA,EAAG,OAAO,eAAe,KAAK,WAAW,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAASve,GAAE,CAACue,GAAEve,EAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,SAAS,EAAE,IAAI,SAASA,GAAE,CAAC,IAAIkR,EAAEA,EAAEyM,EAAE3d,EAAC,EAAE,KAAK,IAAI,UAAUkR,EAAE,MAAM,KAAK,IAAI,kBAAsBA,EAAE,IAAN,EAAQ,KAAK,IAAI,YAAYA,EAAE,EAAE,KAAK,IAAI,aAAaA,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,aAAaA,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,cAAc,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,WAAW,EAAE,IAAI,SAASlR,GAAE,CAAC,IAAIkR,EAAEyM,EAAE3d,EAAC,EAAE,KAAK,IAAI,YAAYkR,EAAE,MAAM,KAAK,IAAI,oBAAwBA,EAAE,IAAN,EAAQ,KAAK,IAAI,cAAcA,EAAE,EAAMA,EAAE,IAAN,EAAQ,KAAK,IAAI,aAAa,IAAI,IAAI,GAAG,GAAGA,EAAE,EAAE,KAAK,IAAI,aAAaA,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,IAAI,SAASlR,GAAE,CAAM,CAAC,OAAO,QAAQ,QAAQ,EAAE,QAAQA,EAAC,SAAI,KAAK,IAAI,QAAQA,GAAE,KAAK,IAAI,WAAWA,EAAC,EAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,SAAS,EAAE,IAAI,SAASA,GAAE,CAAC,MAAMA,EAAC,IAAI,KAAK,IAAI,UAAUA,GAAE,KAAK,IAAI,aAAaA,EAAC,EAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,WAAW,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,QAAQ,EAAE,IAAI,SAASA,GAAE,CAAM,CAAC,QAAQ,QAAQ,OAAO,EAAE,QAAQA,EAAC,IAAtC,KAA0C,KAAK,IAAI,SAASA,GAAE,KAAK,IAAI,YAAYA,EAAC,EAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,UAAU,EAAE,IAAI,SAASA,GAAE,CAAC,MAAMA,EAAC,IAAI,KAAK,IAAI,WAAWA,GAAE,KAAK,IAAI,cAAcA,EAAC,EAAE,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,eAAe,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,YAAY,EAAE,IAAI,SAASA,GAAE,CAAC,KAAK,IAAI,aAAaA,EAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,SAAS,EAAE,IAAI,SAASA,GAAE,CAAM,CAAC,QAAQ,MAAM,SAAS,OAAO,OAAO,EAAE,QAAQA,EAAC,IAAtD,KAA0D,KAAK,IAAI,UAAUA,GAAE,CAAC,CAAC,EAAE,IAAIwd,EAAE,KAAK,SAAS3kB,GAAEmH,GAAEkR,EAAE,CAAC,GAAUsM,IAAP,KAAS,CAAC,IAAIld,EAAE,SAASN,EAAE,CAAC,IAAIkR,GAAE,CAAA,EAAG,OAAO,OAAO,KAAKlR,CAAC,EAAE,QAAS,SAASM,GAAE,CAACN,EAAEM,EAAC,EAAE,QAAS,SAASN,GAAE,CAAC,IAAI3M,GAAE,KAAK,OAAO2M,GAAG,CAAA,IAAI,OAAO3M,GAAE,CAAC,OAAOiN,GAAE,OAAO,MAAM,EAAE,MAAM,IAAI,SAASjN,GAAE,CAAC,OAAOiN,GAAE,MAAM,QAAQ,EAAE,MAAM,IAAI,aAAajN,GAAE,CAAC,OAAOiN,GAAE,OAAO,OAAO,MAAM,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,SAASjN,GAAE,CAAC,OAAOiN,EAAC,CAAC,CAAQjN,KAAP,OAAWA,GAAE,IAAI,CAAC,KAAKiN,GAAE,MAAMN,EAAC,EAAEkR,GAAE,KAAK7d,EAAC,EAAE,CAAG,CAAA,CAAG,EAAC6d,EAAC,EAAElR,GAAE,YAAW,CAAE,EAAEwd,EAAE,SAASxd,EAAE,CAAC,QAAQkR,GAAE,CAAE,EAAC5Q,GAAE,EAAEA,GAAEN,EAAE,OAAO,EAAEM,GAAE,CAAC,IAAIjN,GAAE6mU,GAAGl6T,EAAEM,EAAC,CAAC,EAAEhN,GAAED,GAAE,OAAOP,GAAEO,GAAE,QAAQ0nB,GAAE1nB,GAAE,MAAMoqB,GAAEpqB,GAAE,OAAO6d,GAAE5d,EAAC,EAAE4d,GAAE5d,EAAC,GAAG,CAAE,EAAC4d,GAAE5d,EAAC,EAAER,EAAC,EAAEoe,GAAE5d,EAAC,EAAER,EAAC,GAAG,CAAA,EAAGoe,GAAE5d,EAAC,EAAER,EAAC,EAAEioB,EAAC,EAAE7J,GAAE5d,EAAC,EAAER,EAAC,EAAEioB,EAAC,GAAG,CAAA,EAAG7J,GAAE5d,EAAC,EAAER,EAAC,EAAEioB,EAAC,EAAE0C,EAAC,EAAEpqB,EAAC,CAAC,OAAO6d,EAAC,EAAE5Q,EAAE,OAAO4Q,CAAC,CAAC,CAAC,CAAC,OAAOsM,CAAC,CAAC,IAAIkX,GAAE,KAAK,OAAO,eAAe,KAAK,YAAY,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAC,EAAE,IAAI,SAAS10B,GAAE,CAACwd,EAAE,KAAKkX,GAAE10B,EAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,IAAI,SAASA,GAAE,CAAC,IAAIkR,EAAE,GAAG,KAAK,IAAI,KAAKlR,IAAUkR,EAAE,oVAAoV,KAAKlR,EAAC,KAApW,KAAuW,CAAC,IAAIM,EAAE4Q,EAAE,CAAC,EAAE7d,GAAG6d,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG5d,GAAE4d,EAAE,CAAC,EAAEpe,IAAGoe,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG6J,GAAE,yCAAyC,KAAKznB,EAAC,EAAE,CAAC,EAAEA,GAAW,KAAK,MAAPynB,KAAP,KAAoB,WAAWznB,EAAC,EAAE,KAAK,IAAI,SAAS,YAAoBynB,KAAP,KAAoB,WAAWznB,EAAC,EAAE,KAAK,IAAI,YAAW,EAAe,WAAWA,EAAC,EAAE,KAAK,IAAI,SAAS,WAAvG,EAAoH,KAAK,IAAI,YAAYA,EAAC,EAAE,IAAImqB,GAAE,SAASzd,GAAE,CAAC,IAAIkR,GAAE5Q,GAAEjN,GAAE,CAAA,EAAGC,GAAE0M,GAAE,KAAM,EAAC,GAAQ1M,KAAL,GAAO,OAAO6mU,GAAG,GAAG7mU,MAAK8lU,GAAG,MAAM,CAACA,GAAG9lU,EAAC,CAAC,EAAE,KAAUA,KAAL,IAAQ,CAAC,OAAOgN,GAAE,KAAK4Q,IAAG5d,GAAEgmU,GAAGhmU,EAAC,GAAG,OAAO,CAAC,EAAG,CAAA,IAAI,IAAI,IAAI,IAAIgN,GAAE04T,IAAG1lU,GAAE,UAAU,CAAC,EAAE4d,EAAC,EAAE,MAAM,QAAQ5Q,GAAEs4T,IAAGtlU,EAAC,CAAC,CAAuB,GAAZgN,KAAP,OAAsBjN,GAAE,KAAKiN,GAAE,CAAC,CAAC,GAAQhN,GAAEgmU,GAAGh5T,GAAE,CAAC,CAAC,KAAf,IAAyBhN,GAAE,OAAO,CAAC,IAAhB,KAAkB,OAAO6mU,GAAG7mU,GAAEA,GAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAOD,EAAC,EAAEP,EAAC,EAAE,GAAG,KAAK,UAAU,CAAC,IAAIkW,GAAEywT,IAAG5gU,GAAE,KAAK,IAAI,KAAK,SAAS,EAAE4kB,GAAE,IAAK,SAASzd,GAAE,CAAC,MAAM,CAAC,OAAOA,GAAE,QAAQ,SAAS,OAAO3M,EAAE,MAAMiN,CAAC,CAAC,CAAC,CAAE,EAAE,KAAK,IAAI,QAAQ0I,GAAE,IAAI,KAAKA,GAAE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAIuV,GAAE,IAAalrB,IAAT,QAAY,SAASA,EAAE,EAAE,GAAG,KAAciN,IAAT,UAAcie,GAAE,QAAmBje,IAAX,WAAeie,IAAG,UAAcA,GAAE,SAAN,IAAeA,GAAE,UAAU,QAAQf,GAAE,GAAGne,GAAE,CAAC,MAAM,YAAY,MAAM,YAAY,QAAQ,YAAY,QAAQ,YAAY,UAAU,YAAY,UAAU,YAAY,aAAa,YAAY,MAAM,UAAU,UAAU,UAAU,SAAS,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,OAAO,EAAEuE,GAAE,EAAEA,GAAE6Z,GAAE,OAAO7Z,KAAI,CAAC,GAAY,KAAK,IAAI,SAAS,QAAQ6Z,GAAE7Z,EAAC,EAAE2a,GAAE,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC,IAA3E,OAA6E,CAACf,GAAEC,GAAE7Z,EAAC,EAAE,KAAK,CAAC,GAAkB2a,KAAf,cAA2B,KAAK,IAAI,SAAS,QAAQd,GAAE7Z,EAAC,EAAE,OAAO,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC,IAAhF,OAAkF4Z,GAAEC,GAAE7Z,EAAC,EAAE2a,GAAE,eAAwB,KAAK,IAAI,SAAS,QAAQd,GAAE7Z,EAAC,EAAE,SAAS,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC,IAAlF,OAAoF,CAAC4Z,GAAEC,GAAE7Z,EAAC,EAAE2a,GAAE,SAAS,KAAK,CAAC,CAAC,GAAQf,KAAL,IAAO,QAAQkX,GAAE,EAAEA,GAAEjX,GAAE,OAAOiX,KAAI,GAAGr1B,GAAEoe,GAAEiX,EAAC,CAAC,EAAE,CAAClX,GAAEne,GAAEoe,GAAEiX,EAAC,CAAC,EAAE,KAAK,EAAClX,GAAOA,KAAL,GAAO,QAAQA,GAAE,KAAK,IAAI,QAAQA,GAAEe,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,2BAA2B,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,wBAAwB,EAAE,IAAI,SAASve,GAAE,CAAC,KAAK,IAAI,yBAAyBA,EAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,cAAc,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,WAAW,EAAE,IAAI,SAASA,GAAE,CAAC,KAAK,IAAI,YAAYA,EAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,iBAAiB,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,cAAc,EAAE,IAAI,SAASA,GAAE,CAAC,KAAK,IAAI,eAAeA,GAAE6iE,GAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,WAAW,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,QAAQ,EAAE,IAAI,SAAS7iE,GAAE,CAAC,KAAK,IAAI,SAASA,GAAE6iE,GAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,KAAK,kBAAkB,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,eAAe,EAAE,IAAI,SAAS7iE,GAAE,CAAC,KAAK,IAAI,gBAAgB,EAAQA,EAAE,CAAC,CAAC,CAAC,EAAE00B,EAAE,UAAU,YAAY,SAAS10B,EAAE,CAAC,KAAK,SAASA,CAAC,EAAE00B,EAAE,UAAU,YAAY,UAAU,CAAC,OAAO,KAAK,SAAS,OAAO,EAAE,KAAK,SAAS,OAAO,KAAK,QAAQ,EAAE,KAAK,SAAS,MAAO,CAAA,EAAEA,EAAE,UAAU,KAAK,UAAU,CAAC+sC,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC,EAAE/sC,EAAE,UAAU,OAAO,UAAU,CAAC+sC,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC,EAAE/sC,EAAE,UAAU,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,EAAEA,EAAE,UAAU,OAAO,SAAS10B,EAAEkR,GAAE,CAAC,GAAG,MAAMlR,CAAC,GAAG,MAAMkR,EAAC,EAAE,MAAMpe,GAAE,MAAM,4CAA4C,SAAS,EAAE,IAAI,MAAM,oDAAoD,EAAE,IAAIwN,GAAE,KAAK,IAAI,UAAU,aAAa,IAAI0I,EAAEhJ,EAAEkR,EAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE5Q,GAAE,EAAE,EAAEA,GAAE,CAAC,CAAC,EAAE,KAAK,IAAI,UAAU,IAAI0I,EAAEhJ,EAAEkR,EAAC,CAAC,EAAEwjB,EAAE,UAAU,UAAU,UAAU,CAAC,IAAIxjB,EAAE,IAAIlI,EAAE,EAAE,CAAC,EAAE1I,GAAE,EAAE,IAAIA,GAAE,KAAK,KAAK,OAAO,EAAOA,KAAL,GAAOA,KAAI,GAAa,KAAK,KAAKA,EAAC,EAAE,OAAvB,SAAwCN,GAAE,KAAK,KAAKM,GAAE,CAAC,CAAC,IAA3B,UAAwC,OAAO,KAAK,KAAKA,GAAE,CAAC,EAAE,GAAhC,SAAkC,CAAC4Q,EAAE,IAAIlI,EAAE,KAAK,KAAK1I,GAAE,CAAC,EAAE,EAAE,KAAK,KAAKA,GAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,UAAU,IAAI0I,EAAEkI,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAEwjB,EAAE,UAAU,OAAO,SAAS10B,EAAEkR,GAAE,CAAC,GAAG,MAAMlR,CAAC,GAAG,MAAMkR,EAAC,EAAE,MAAMpe,GAAE,MAAM,4CAA4C,SAAS,EAAE,IAAI,MAAM,oDAAoD,EAAE,IAAIwN,GAAE,KAAK,IAAI,UAAU,aAAa,IAAI0I,EAAEhJ,EAAEkR,EAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE5Q,GAAE,EAAE,EAAEA,GAAE,CAAC,CAAC,EAAE,KAAK,IAAI,UAAU,IAAI0I,EAAE1I,GAAE,EAAEA,GAAE,CAAC,CAAC,EAAEo0B,EAAE,UAAU,KAAK,UAAU,CAAC,KAAK,IAAI,UAAU,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,EAAE+sC,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE/sC,EAAE,UAAU,iBAAiB,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAMiN,EAAC,GAAG,MAAMjN,EAAC,GAAG,MAAM2M,CAAC,GAAG,MAAMkR,EAAC,EAAE,MAAMpe,GAAE,MAAM,sDAAsD,SAAS,EAAE,IAAI,MAAM,8DAA8D,EAAE,IAAIQ,GAAE,KAAK,IAAI,UAAU,aAAa,IAAI0V,EAAE1I,GAAEjN,EAAC,CAAC,EAAE0nB,EAAE,KAAK,IAAI,UAAU,aAAa,IAAI/R,EAAEhJ,EAAEkR,EAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,MAAM,GAAG6J,EAAE,EAAE,GAAGA,EAAE,EAAE,EAAEznB,GAAE,EAAE,EAAEA,GAAE,CAAC,CAAC,EAAE,KAAK,IAAI,UAAU,IAAI0V,EAAE1V,GAAE,EAAEA,GAAE,CAAC,CAAC,EAAEohC,EAAE,UAAU,cAAc,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAEynB,EAAE,CAAC,GAAG,MAAMznB,EAAC,GAAG,MAAMynB,CAAC,GAAG,MAAM/a,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,EAAE,MAAMP,GAAE,MAAM,mDAAmD,SAAS,EAAE,IAAI,MAAM,2DAA2D,EAAE,IAAI2qB,EAAE,KAAK,IAAI,UAAU,aAAa,IAAIzU,EAAE1V,GAAEynB,CAAC,CAAC,EAAEwD,GAAE,KAAK,IAAI,UAAU,aAAa,IAAIvV,EAAEhJ,EAAEkR,EAAC,CAAC,EAAEsM,GAAE,KAAK,IAAI,UAAU,aAAa,IAAIxU,EAAE1I,GAAEjN,EAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,MAAM,GAAGkrB,GAAE,EAAE,GAAGA,GAAE,EAAE,GAAGf,GAAE,EAAE,GAAGA,GAAE,EAAE,EAAEC,EAAE,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,UAAU,IAAIzU,EAAEyU,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAEiX,EAAE,UAAU,IAAI,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAEynB,EAAE,CAAC,GAAG,MAAM/a,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,GAAG,MAAMC,EAAC,EAAE,MAAMR,GAAE,MAAM,yCAAyC,SAAS,EAAE,IAAI,MAAM,iDAAiD,EAAE,GAAGioB,EAAE,EAAQA,EAAG,CAAC,KAAK,IAAI,UAAU,WAAW,CAAC,IAAI0C,EAAE,KAAK,IAAI,UAAU,aAAa,IAAIzU,EAAEhJ,EAAEkR,EAAC,CAAC,EAAElR,EAAEyd,EAAE,EAAEvM,GAAEuM,EAAE,EAAE,IAAIc,GAAE,KAAK,IAAI,UAAU,aAAa,IAAIvV,EAAE,EAAE1I,EAAC,CAAC,EAAEkd,GAAE,KAAK,IAAI,UAAU,aAAa,IAAIxU,EAAE,EAAE,CAAC,CAAC,EAAE1I,GAAE,KAAK,KAAK,KAAK,IAAIie,GAAE,EAAEf,GAAE,EAAE,CAAC,EAAE,KAAK,IAAIe,GAAE,EAAEf,GAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAIlqB,GAAED,EAAC,GAAG,EAAE,KAAK,KAAKA,GAAE,EAAEC,GAAE,EAAE,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,MAAM,EAAE0M,EAAE,EAAEkR,GAAE,OAAO5Q,GAAE,WAAWjN,GAAE,SAASC,GAAE,iBAAiBynB,CAAC,CAAC,CAAC,EAAE2Z,EAAE,UAAU,MAAM,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAE,CAAC,MAAM,IAAI,MAAM,wBAAwB,CAAC,EAAEohC,EAAE,UAAU,KAAK,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAM2M,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,EAAE,MAAMP,GAAE,MAAM,0CAA0C,SAAS,EAAE,IAAI,MAAM,kDAAkD,EAAE,KAAK,OAAOkN,EAAEkR,EAAC,EAAE,KAAK,OAAOlR,EAAEM,GAAE4Q,EAAC,EAAE,KAAK,OAAOlR,EAAEM,GAAE4Q,GAAE7d,EAAC,EAAE,KAAK,OAAO2M,EAAEkR,GAAE7d,EAAC,EAAE,KAAK,OAAO2M,EAAEkR,EAAC,EAAE,KAAK,OAAOlR,EAAEM,GAAE4Q,EAAC,EAAE,KAAK,OAAOlR,EAAEkR,EAAC,CAAC,EAAEwjB,EAAE,UAAU,SAAS,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAM2M,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,EAAE,MAAMP,GAAE,MAAM,8CAA8C,SAAS,EAAE,IAAI,MAAM,sDAAsD,EAAE,GAAG,CAAC6N,EAAE,KAAK,IAAI,EAAE,CAAC,IAAIrN,GAAE,CAAA,EAAY,KAAK,UAAd,SAAwBA,GAAE,QAAQ,KAAK,QAAQ,KAAK,QAAQ,QAAkB,KAAK,WAAf,UAA0BA,GAAE,SAAS,KAAK,SAAS,KAAK,SAAS,SAAS,KAAK,UAAW,EAAC,KAAK,KAAK0M,EAAEkR,GAAE5Q,GAAEjN,EAAC,EAAE,KAAK,OAAOC,GAAE,eAAe,SAAS,IAAI,KAAK,QAAQA,GAAE,SAASA,GAAE,eAAe,UAAU,IAAI,KAAK,SAASA,GAAE,SAAS,CAAC,EAAEohC,EAAE,UAAU,WAAW,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAM2M,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,EAAE,MAAMP,GAAE,MAAM,gDAAgD,SAAS,EAAE,IAAI,MAAM,wDAAwD,EAAE0rB,EAAE,KAAK,IAAI,IAAI,KAAK,UAAW,EAAC,KAAK,KAAKxe,EAAEkR,GAAE5Q,GAAEjN,EAAC,EAAE,KAAK,OAAQ,EAAC,EAAEqhC,EAAE,UAAU,UAAU,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAM2M,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,EAAE,MAAMP,GAAE,MAAM,+CAA+C,SAAS,EAAE,IAAI,MAAM,uDAAuD,EAAE,KAAK,kBAAkB,KAAK,UAAU,UAAU,KAAK,SAASkN,EAAEkR,GAAE5Q,GAAEjN,EAAC,EAAE,EAAEqhC,EAAE,UAAU,KAAK,SAAS10B,EAAE,CAACA,EAAa,OAAOA,GAAlB,WAAqBA,EAAE,QAAQkR,GAAE,KAAK,IAAI,SAAS,mBAAoB,EAAC,WAAW5Q,GAAE,EAAEA,GAAE,KAAK,IAAI,SAAS,iBAAgB,EAAGA,KAAI,KAAK,IAAI,QAAQA,GAAE,CAAC,EAAE,KAAK,IAAI,SAAS,IAAI,GAAG,EAAE,GAAG,KAAK,IAAI,QAAQ4Q,EAAC,EAAElR,EAAE,CAAC,KAAK,IAAI,SAAS,KAAK,IAAI,SAAS,YAAa,EAAC,IAAI3M,GAAE,IAAIuQ,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,KAAK,KAAK,GAAG,EAAE,KAAK,IAAIvQ,EAAC,CAAC,EAAEqhC,EAAE,UAAU,QAAQ,SAAS10B,EAAE,CAACA,EAAa,OAAOA,GAAlB,WAAqBA,EAAE,QAAQkR,GAAE,KAAK,IAAI,SAAS,mBAAoB,EAAC,WAAW5Q,GAAE,EAAEA,GAAE,KAAK,IAAI,SAAS,iBAAkB,EAACA,KAAI,KAAK,IAAI,QAAQA,GAAE,CAAC,EAAE,KAAK,IAAI,SAAS,IAAI,GAAG,EAAE,KAAK,IAAI,QAAQ4Q,EAAC,EAAElR,GAAO,KAAK,SAAS,SAAlB,IAA2B,KAAK,IAAI,KAAK,SAAS,MAAM,KAAK,UAAU,KAAK,IAAI,UAAU,KAAK,YAAY,KAAK,IAAI,YAAY,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,KAAK,IAAI,QAAQ,KAAK,UAAU,KAAK,IAAI,UAAU,KAAK,SAAS,KAAK,IAAI,SAAS,KAAK,SAAS,KAAK,IAAI,SAAS,KAAK,eAAe,KAAK,IAAI,eAAe,EAAE00B,EAAE,UAAU,UAAU,UAAU,CAAC,MAAM,IAAI,MAAM,4BAA4B,CAAC,EAAE,IAAI/W,EAAE,SAAS3d,EAAE,CAAC,IAAIkR,GAAE5Q,GAAEjN,GAAEC,GAAE,GAAQ0M,EAAE,mBAAP,KAA0BA,EAAEA,EAAE,SAAU,GAAE,CAACA,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMA,CAAC,EAAE,GAAG,sEAAsE,KAAKA,CAAC,EAAEkR,GAAE,EAAE5Q,GAAE,EAAEjN,GAAE,EAAEC,GAAE,MAAM,CAAC,IAAIR,EAAE,gDAAgD,KAAKkN,CAAC,EAAE,GAAUlN,IAAP,KAASoe,GAAE,SAASpe,EAAE,CAAC,CAAC,EAAEwN,GAAE,SAASxN,EAAE,CAAC,CAAC,EAAEO,GAAE,SAASP,EAAE,CAAC,CAAC,EAAEQ,GAAE,WAAkBR,EAAE,gEAAgE,KAAKkN,CAAC,KAAhF,KAAmFkR,GAAE,SAASpe,EAAE,CAAC,CAAC,EAAEwN,GAAE,SAASxN,EAAE,CAAC,CAAC,EAAEO,GAAE,SAASP,EAAE,CAAC,CAAC,EAAEQ,GAAE,WAAWR,EAAE,CAAC,CAAC,MAAM,CAAC,GAAGQ,GAAE,EAAY,OAAO0M,GAAjB,UAA0BA,EAAE,OAAO,CAAC,IAAhB,IAAkB,CAAC,IAAI+a,EAAE,IAAIliB,GAAEmH,CAAC,EAAEA,EAAE+a,EAAE,GAAGA,EAAE,MAAO,EAAC,SAAS,CAAK/a,EAAE,SAAN,GAAckR,GAAElR,EAAE,UAAU,EAAE,CAAC,EAAEkR,IAAGA,GAAE5Q,GAAEN,EAAE,UAAU,EAAE,CAAC,EAAEM,IAAGA,GAAEjN,GAAE2M,EAAE,UAAU,EAAE,CAAC,EAAE3M,IAAGA,KAAI6d,GAAElR,EAAE,UAAU,EAAE,CAAC,EAAEM,GAAEN,EAAE,UAAU,EAAE,CAAC,EAAE3M,GAAE2M,EAAE,UAAU,EAAE,CAAC,GAAGkR,GAAE,SAASA,GAAE,EAAE,EAAE5Q,GAAE,SAASA,GAAE,EAAE,EAAEjN,GAAE,SAASA,GAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE6d,GAAE,EAAE5Q,GAAE,EAAEjN,GAAE,EAAEC,GAAE,MAAM0M,CAAC,CAAC,EAAEW,EAAE,UAAU,CAAC,OAAO,KAAK,IAAI,mBAAsB,KAAK,aAAR,CAAmB,EAAE6d,EAAE,UAAU,CAAC,MAAO,GAAQ,KAAK,IAAI,qBAAwB,KAAK,aAAR,EAAoB,EAAEkW,EAAE,UAAU,SAAS,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAM6d,EAAC,GAAG,MAAM5Q,EAAC,GAAa,OAAON,GAAjB,SAAmB,MAAMlN,GAAE,MAAM,8CAA8C,SAAS,EAAE,IAAI,MAAM,sDAAsD,EAAE,GAAGO,GAAE,MAAMA,EAAC,EAAE,OAAOA,GAAE,CAACsN,EAAE,KAAK,IAAI,EAAE,CAAC,IAAIrN,GAAEo+E,EAAE,KAAK,IAAI,UAAU,QAAQ,EAAE32D,EAAE,KAAK,IAAI,UAAU,OAAO+nD,EAAE,KAAK,KAAK,CAAC,KAAK9iE,EAAE,EAAEkR,GAAE,EAAE5Q,GAAE,MAAMya,EAAE,MAAMznB,GAAE,MAAM,KAAK,UAAU,SAASD,EAAC,CAAC,CAAC,CAAC,EAAEqhC,EAAE,UAAU,WAAW,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,GAAG,MAAM6d,EAAC,GAAG,MAAM5Q,EAAC,GAAa,OAAON,GAAjB,SAAmB,MAAMlN,GAAE,MAAM,gDAAgD,SAAS,EAAE,IAAI,MAAM,wDAAwD,EAAE,GAAG,CAAC0rB,EAAE,KAAK,IAAI,EAAE,CAACnrB,GAAE,MAAMA,EAAC,EAAE,OAAOA,GAAE,IAAIC,GAAEo+E,EAAE,KAAK,IAAI,UAAU,QAAQ,EAAE32D,EAAE,KAAK,IAAI,UAAU,OAAO+nD,EAAE,KAAK,KAAK,CAAC,KAAK9iE,EAAE,EAAEkR,GAAE,EAAE5Q,GAAE,MAAMya,EAAE,cAAc,SAAS,MAAMznB,GAAE,MAAM,KAAK,UAAU,SAASD,EAAC,CAAC,CAAC,CAAC,EAAEqhC,EAAE,UAAU,YAAY,SAAS10B,EAAE,CAAC,GAAa,OAAOA,GAAjB,SAAmB,MAAMlN,GAAE,MAAM,iDAAiD,SAAS,EAAE,IAAI,MAAM,yDAAyD,EAAE,IAAIoe,GAAE,KAAK,IAAI5Q,GAAE,KAAK,IAAI,SAAS,YAAYjN,GAAE6d,GAAE,SAAS,YAAa,EAAC5d,GAAE4d,GAAE,mBAAmBlR,CAAC,EAAE3M,GAAE6d,GAAE,SAAS,YAAY6J,EAAE,SAAS/a,EAAE,CAAC,IAAIkR,IAAGlR,EAAEA,GAAG,IAAI,OAAO,EAAE,OAAO,OAAO,eAAe,KAAK,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAOkR,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,IAAI6J,EAAE,CAAC,MAAMznB,IAAG,KAAK,MAAM,GAAGgN,GAAE,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEo0B,EAAE,UAAU,MAAM,SAAS10B,EAAEkR,GAAE,CAAC,GAAG,MAAMlR,CAAC,GAAG,MAAMkR,EAAC,EAAE,MAAMpe,GAAE,MAAM,2CAA2C,SAAS,EAAE,IAAI,MAAM,mDAAmD,EAAE,IAAIwN,GAAE,IAAIkd,EAAExd,EAAE,EAAE,EAAEkR,GAAE,EAAE,CAAC,EAAE,KAAK,IAAI,UAAU,KAAK,IAAI,UAAU,SAAS5Q,EAAC,CAAC,EAAEo0B,EAAE,UAAU,OAAO,SAAS10B,EAAE,CAAC,GAAG,MAAMA,CAAC,EAAE,MAAMlN,GAAE,MAAM,4CAA4C,SAAS,EAAE,IAAI,MAAM,oDAAoD,EAAE,IAAIoe,GAAE,IAAIsM,EAAE,KAAK,IAAIxd,CAAC,EAAE,KAAK,IAAIA,CAAC,EAAE,CAAC,KAAK,IAAIA,CAAC,EAAE,KAAK,IAAIA,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,UAAU,KAAK,IAAI,UAAU,SAASkR,EAAC,CAAC,EAAEwjB,EAAE,UAAU,UAAU,SAAS10B,EAAEkR,GAAE,CAAC,GAAG,MAAMlR,CAAC,GAAG,MAAMkR,EAAC,EAAE,MAAMpe,GAAE,MAAM,+CAA+C,SAAS,EAAE,IAAI,MAAM,uDAAuD,EAAE,IAAIwN,GAAE,IAAIkd,EAAE,EAAE,EAAE,EAAE,EAAExd,EAAEkR,EAAC,EAAE,KAAK,IAAI,UAAU,KAAK,IAAI,UAAU,SAAS5Q,EAAC,CAAC,EAAEo0B,EAAE,UAAU,UAAU,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAEynB,EAAE,CAAC,GAAG,MAAM/a,CAAC,GAAG,MAAMkR,EAAC,GAAG,MAAM5Q,EAAC,GAAG,MAAMjN,EAAC,GAAG,MAAMC,EAAC,GAAG,MAAMynB,CAAC,EAAE,MAAMjoB,GAAE,MAAM,+CAA+C,SAAS,EAAE,IAAI,MAAM,uDAAuD,EAAE,IAAI2qB,EAAE,IAAID,EAAExd,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAEynB,CAAC,EAAE,KAAK,IAAI,UAAU,KAAK,IAAI,UAAU,SAAS0C,CAAC,CAAC,EAAEiX,EAAE,UAAU,aAAa,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAER,EAAE,CAACkN,EAAE,MAAMA,CAAC,EAAE,EAAEA,EAAEkR,GAAE,MAAMA,EAAC,EAAE,EAAEA,GAAE5Q,GAAE,MAAMA,EAAC,EAAE,EAAEA,GAAEjN,GAAE,MAAMA,EAAC,EAAE,EAAEA,GAAEC,GAAE,MAAMA,EAAC,EAAE,EAAEA,GAAER,EAAE,MAAMA,CAAC,EAAE,EAAEA,EAAE,KAAK,IAAI,UAAU,IAAI0qB,EAAExd,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAER,CAAC,CAAC,EAAE,IAAIC,EAAE,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE2hC,EAAE,UAAU,UAAU,SAAS10B,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAER,EAAEioB,EAAE0C,GAAEzU,GAAE,CAAC,IAAI3J,GAAE,KAAK,IAAI,mBAAmBW,CAAC,EAAEnH,EAAE,EAAE+K,GAAE,EAAE8wB,GAAE,EAAE/W,GAAE,EAAWtqB,KAAT,QAAqBoqB,KAAT,SAAaiX,GAAEjX,GAAEpqB,GAAEsqB,GAAE3U,GAAE1V,GAAEuF,EAAEwG,GAAE,MAAMhM,GAAEoqB,GAAEpqB,GAAEuQ,GAAEvE,GAAE,OAAO/L,GAAE0V,GAAE1V,IAAYR,IAAT,SAAaA,EAAEoe,GAAE6J,EAAEza,GAAE4Q,GAAE,EAAE5Q,GAAE,GAAYjN,KAAT,QAAqBoqB,KAAT,SAAaA,GAAEpqB,GAAE2V,GAAE1V,IAAYD,KAAT,QAAqBoqB,KAAT,SAAaA,GAAEpe,GAAE,MAAM2J,GAAE3J,GAAE,QAAQ,QAAQsB,EAAE6d,EAAE,KAAK,IAAI,UAAU,UAAS,EAAGuK,EAAE2oD,EAAElzD,EAAE,OAAO,GAAG,EAAEijD,GAAE,IAAIjkD,EAAE6uD,IAAG5K,IAAGA,IAAGA,GAAEA,GAAE,SAASjjD,EAAE,SAAS,GAAG,SAASA,EAAE,IAAI,GAAG,SAASA,EAAE,KAAK,GAAG,iBAAiB,IAAID,EAAEzrB,EAAEoe,GAAEwjB,GAAE3Z,EAAEza,GAAEqd,GAAEtqB,GAAEwF,EAAEvF,GAAEsQ,EAAC,CAAC,EAAE4jH,GAAExsH,EAAE,KAAK,KAAKqxE,EAAC,EAAErQ,GAAE,CAAE,EAACt7D,GAAE,EAAEA,GAAE8mH,GAAE,OAAO9mH,IAAG,EAAOs7D,GAAE,QAAQwrD,GAAE9mH,EAAC,CAAC,IAAjB,IAAoBs7D,GAAE,KAAKwrD,GAAE9mH,EAAC,CAAC,EAAE,GAAG0sE,EAAEpR,EAAC,EAAE,KAAK,WAAW,QAAQ0F,GAAE1F,GAAE,CAAC,EAAEkR,GAAElR,GAAEA,GAAE,OAAO,CAAC,EAAE8G,GAAEpB,GAAEoB,GAAEoK,GAAE,EAAEpK,KAAI,CAAC,KAAK,IAAI,QAAQA,EAAC,EAAE,IAAItiE,GAAE,KAAK,IAAI,SAAS,SAAS,MAAM,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEmhE,GAAMmB,KAAJ,EAAM,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE4F,GAAE,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEl2C,GAAE,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEzrB,GAAM+7D,KAAJ,EAAM,EAAE4F,IAAG5F,GAAE,GAAGtwC,GAAE,GAAO,KAAK,IAAI,UAAU,SAAvB,EAA8B,CAAC,IAAIoxC,GAAE,KAAK,KAAKjjE,EAAE,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK4xB,EAAE5xB,EAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,CAACoG,GAAE46D,GAAE,KAAK,IAAI,sBAAsB,EAAE5mE,EAAE,KAAK,KAAK,OAAO,EAAE,EAAE,KAAK,KAAK6oE,EAAC,CAAC,IAAI37D,GAAE,KAAK,MAAM,KAAK,UAAUokE,EAAC,CAAC,EAAEpkE,GAAEsqB,EAAE,CAACtqB,EAAC,EAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,CAAClB,GAAE46D,GAAE,KAAK,IAAI,sBAAsB,EAAE,CAAC,EAAE,IAAIkB,IAAGC,GAAEpB,IAAGoB,GAAEoK,KAAIn6E,EAAE,KAAK,IAAI,EAAE8vE,KAAI,KAAK,IAAI,kBAAmB,EAAC,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEriE,GAAEgyB,GAAE,IAAI,EAAE,KAAI,EAAG,YAAa,GAAE,KAAK,IAAI,SAASxyB,EAAE,OAAOiI,GAAE,EAAEA,GAAE,EAAEA,GAAE,EAAEA,GAAE,EAAE,KAAK,KAAK8gB,CAAC,EAAE85C,IAAG,KAAK,IAAI,sBAAsB,MAAM,KAAK,IAAI,SAAS7iE,EAAE,OAAOqsE,GAAE,EAAEA,GAAE,EAAEA,GAAE,EAAEA,GAAE,EAAE,KAAK,KAAKtjD,CAAC,CAAC,EAAE,IAAI/tB,EAAE,SAASgF,EAAEkR,GAAE5Q,GAAE,CAAC,IAAIjN,GAAE,CAAA,EAAG6d,GAAEA,IAAG,KAAK,IAAI,SAAS,SAAS,MAAM5Q,GAAEA,IAAG,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,IAAIhN,GAAE,KAAK,KAAK,KAAK,IAAI,uBAAuB,OAAO0M,EAAE,KAAM,CAAA,QAAQ,IAAI,KAAK,IAAI,KAAK3M,GAAE,KAAK,KAAK,OAAO2M,EAAE,EAAE1M,IAAGgN,EAAC,EAAE,CAAC,EAAE,MAAM,IAAI,MAAMjN,GAAE,KAAK,KAAK,OAAO2M,EAAE,EAAE1M,GAAE0M,EAAE,QAAQM,EAAC,EAAE,CAAC,EAAEjN,GAAE,KAAK,KAAK,OAAO2M,EAAE,EAAE1M,GAAE0M,EAAE,QAAQM,EAAC,EAAE,CAAC,EAAE,MAAM,IAAI,MAAM,IAAIxN,EAAE8wE,GAAE,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,UAAU,EAAE5jE,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAEA,EAAE,CAAC,EAAE3M,GAAE,KAAK,KAAK,OAAOP,EAAE,EAAEQ,IAAGgN,EAAC,EAAE,CAAC,EAAEjN,GAAE,KAAK,KAAK,OAAOP,EAAE,EAAEA,EAAE,EAAEQ,IAAGgN,EAAC,EAAE,CAAC,EAAE,MAAM,IAAI,MAAM,IAAIya,EAAE9S,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,UAAU,EAAEjI,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAEA,EAAE,CAAC,EAAE3M,GAAE,KAAK,KAAK,OAAO0nB,EAAE,EAAEznB,IAAGgN,EAAC,EAAE,CAAC,EAAEjN,GAAE,KAAK,KAAK,OAAO0nB,EAAE,EAAEA,EAAE,EAAEznB,IAAGgN,EAAC,EAAE,CAAC,EAAE,MAAM,IAAI,OAAOjN,GAAE,KAAK,KAAK,OAAO2M,EAAE,EAAE1M,IAAGgN,EAAC,EAAE,CAAC,EAAEjN,GAAE,KAAK,KAAK,OAAO2M,EAAE,EAAEA,EAAE,EAAE1M,IAAGgN,EAAC,EAAE,CAAC,CAAC,CAAC,QAAQmd,GAAE,EAAEA,GAAEpqB,GAAE,OAAOoqB,IAAG,EAAE,KAAK,KAAK,IAAI,SAAS,iBAAkB,EAACpqB,GAAEoqB,EAAC,GAAGsL,EAAE,KAAK,IAAI,EAAE,OAAO11B,EAAC,EAAE01B,EAAE,UAAU,CAAC,IAAI/oB,EAAE,KAAK,UAAUkR,GAAE,KAAK,YAAY5Q,GAAE,KAAK,KAAKjN,GAAE,KAAK,QAAQC,GAAE,KAAK,UAAUR,EAAE,KAAK,SAAS,KAAK,IAAI,QAAS,EAAC,KAAK,UAAUkN,EAAE,KAAK,YAAYkR,GAAE,KAAK,KAAK5Q,GAAE,KAAK,QAAQjN,GAAE,KAAK,UAAUC,GAAE,KAAK,SAASR,CAAC,EAAEy/B,EAAE,SAASvyB,EAAEkR,GAAE5Q,GAAE,CAAC,QAAQjN,GAAE,EAAEA,GAAE2M,EAAE,OAAO3M,KAAI,OAAO2M,EAAE3M,EAAC,EAAE,KAAI,CAAE,IAAI,MAAM2M,EAAE3M,EAAC,EAAE,IAAI6d,GAAElR,EAAE3M,EAAC,EAAE,IAAIiN,GAAE,IAAI,MAAMN,EAAE3M,EAAC,EAAE,IAAI6d,GAAElR,EAAE3M,EAAC,EAAE,IAAIiN,GAAE,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQN,EAAE3M,EAAC,EAAE,GAAG6d,GAAElR,EAAE3M,EAAC,EAAE,GAAGiN,EAAC,CAAC,OAAON,CAAC,EAAEotE,EAAE,SAASptE,EAAE,CAAC,OAAOA,EAAE,KAAM,SAASA,GAAEkR,GAAE,CAAC,OAAOlR,GAAEkR,EAAC,CAAG,CAAA,EAAEuwD,EAAE,SAASzhE,EAAEkR,GAAE,CAAC,QAAQ5Q,GAAEjN,GAAEC,GAAE,KAAK,UAAUR,EAAE,KAAK,YAAYioB,EAAE,KAAK,QAAQ0C,GAAE,KAAK,UAAUzU,GAAE,KAAK,IAAIyU,GAAE,KAAK,IAAI,UAAU,MAAM,EAAEc,GAAE,KAAK,SAASf,EAAE,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,EAAEne,GAAE,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,EAAExG,GAAE,CAAA,EAAG+K,GAAE,EAAEA,GAAEvE,GAAE,OAAOuE,KAAI,GAAYvE,GAAEuE,EAAC,EAAE,IAAd,OAAgB,QAAQ8wB,EAAE15B,EAAE,KAAK,KAAKqE,GAAEuE,EAAC,CAAC,EAAE+Z,EAAE,EAAEA,EAAE+W,EAAE,OAAO/W,GAAG,EAAO9kB,GAAE,QAAQ67B,EAAE/W,CAAC,CAAC,IAAjB,IAAoB9kB,GAAE,KAAK67B,EAAE/W,CAAC,CAAC,EAAE,QAAQhd,EAAE,EAAEA,EAAE9H,GAAE,OAAO8H,IAAI,KAAK,KAAK,IAAI,SAAS,iBAAkB,EAAC9H,GAAE8H,CAAC,GAAGooB,EAAE,KAAK,IAAI,EAAE,GAAGqkD,EAAEv0E,EAAC,EAAE,KAAK,WAAW,QAAQ2lB,GAAE3lB,GAAE,CAAC,EAAE4oE,GAAE5oE,GAAEA,GAAE,OAAO,CAAC,EAAEwzE,GAAE7tD,GAAE6tD,GAAE5K,GAAE,EAAE4K,KAAI,CAAC,KAAK,IAAI,QAAQA,EAAC,EAAE,KAAK,UAAU/4E,GAAE,KAAK,YAAYR,EAAE,KAAK,QAAQioB,EAAE,KAAK,UAAU/R,GAAE,KAAK,SAASuV,GAAE,IAAIipG,GAAE,KAAK,IAAI,SAAS,SAAS,MAAM,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAExrD,GAAMqQ,KAAJ,EAAM,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE3rE,GAAE,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEghE,GAAE,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEwL,GAAMb,KAAJ,EAAM,EAAE3rE,IAAG2rE,GAAE,GAAG3K,GAAE,GAAO,KAAK,IAAI,UAAU,SAAvB,EAA8B,CAAC,IAAIoB,GAAE,KAAK,KAAKxiE,GAAE,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,SAAS,CAAC,EAAE,KAAK,KAAKiyB,EAAEjyB,GAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,CAAC4sE,GAAElR,GAAE,KAAK,IAAI,sBAAsB,EAAEjhE,EAAE,KAAK,KAAKiF,EAAE,EAAE,EAAE,KAAK,KAAK8iE,EAAC,CAAC,GAAGzvE,GAAE,KAAK,MAAM,KAAK,UAAUmqB,CAAC,CAAC,EAAE,KAAK,KAAK+U,EAAEl/B,GAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,CAAC65E,GAAElR,GAAE,KAAK,IAAI,sBAAsB,EAAO9qD,KAAL,IAAYm7D,KAAJ,EAAM,CAAC,IAAI7rE,IAAG6rE,GAAE7tD,IAAG6tD,GAAE5K,KAAI1uE,EAAE,KAAK,IAAI,EAAEyN,KAAI,KAAK,IAAI,oBAAoB,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEgnH,GAAE9lD,GAAE,IAAI,EAAE,KAAI,EAAG,YAAW,GAAI3mE,EAAE,KAAK,KAAKiF,EAAEkR,EAAC,EAAE1Q,IAAG,KAAK,IAAI,qBAAsB,CAAA,CAAC,KAAK,UAAUid,EAAC,MAAM,KAAK,UAAUzU,GAAEjO,EAAE,KAAK,KAAKiF,EAAEkR,EAAC,EAAE,KAAK,UAAUuM,GAAE,KAAK,KAAKD,CAAC,EAAEziB,EAAE,SAASiF,EAAEkR,GAAE,CAAC,IAAelR,IAAX,UAAckR,IAAG,CAACsN,EAAE,KAAK,IAAI,KAAgBxe,IAAX,UAAckR,IAAG,CAACvQ,EAAE,KAAK,IAAI,GAAG,CAAC,QAAQL,GAAEjN,GAAEC,GAAE,CAAA,EAAGR,EAAE,KAAK,KAAKioB,EAAE,EAAEA,EAAEjoB,EAAE,OAAOioB,IAAI,CAAC,IAAI0C,GAAE3qB,EAAEioB,CAAC,EAAE,OAAO0C,GAAE,KAAM,CAAA,IAAI,QAAQnqB,GAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,IAAI,QAAQA,GAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,IAAI,KAAKA,GAAE,KAAK,CAAC,MAAMmqB,GAAE,OAAO,CAAA,EAAG,IAAI,CAAA,CAAE,CAAC,EAAE,MAAM,IAAI,KAAK,IAAIzU,GAAE1V,GAAE,OAAO,GAAGR,EAAEioB,EAAE,CAAC,GAAG,CAAC,MAAMjoB,EAAEioB,EAAE,CAAC,EAAE,CAAC,IAAIza,GAAE,CAACmd,GAAE,EAAE3qB,EAAEioB,EAAE,CAAC,EAAE,EAAE0C,GAAE,EAAE3qB,EAAEioB,EAAE,CAAC,EAAE,CAAC,EAAE/R,GAAE,IAAG,KAAKA,IAAG,EAAEA,KAAI,GAAQ1V,GAAE0V,GAAE,CAAC,EAAE,QAAZ,IAAwB1V,GAAE0V,GAAE,CAAC,EAAE,QAAZ,GAAkB,CAAC1V,GAAE0V,GAAE,CAAC,EAAE,OAAO,KAAK1I,EAAC,EAAEhN,GAAE0V,GAAE,CAAC,EAAE,IAAI,KAAKyU,EAAC,EAAE,KAAK,EAAC,MAAM,IAAI,MAAMnd,GAAE,CAACmd,GAAE,GAAG3qB,EAAEioB,EAAE,CAAC,EAAE,EAAE0C,GAAE,GAAG3qB,EAAEioB,EAAE,CAAC,EAAE,EAAE0C,GAAE,GAAG3qB,EAAEioB,EAAE,CAAC,EAAE,EAAE0C,GAAE,GAAG3qB,EAAEioB,EAAE,CAAC,EAAE,EAAE0C,GAAE,EAAE3qB,EAAEioB,EAAE,CAAC,EAAE,EAAE0C,GAAE,EAAE3qB,EAAEioB,EAAE,CAAC,EAAE,CAAC,EAAEznB,GAAEA,GAAE,OAAO,CAAC,EAAE,OAAO,KAAKgN,EAAC,EAAE,MAAM,IAAI,MAAM,IAAIie,GAAEzrB,EAAEioB,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG0C,GAAE,GAAG3qB,EAAEioB,EAAE,CAAC,EAAE,GAAGyC,EAAE1qB,EAAEioB,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG0C,GAAE,GAAG3qB,EAAEioB,EAAE,CAAC,EAAE,GAAG1b,GAAEoe,GAAE,EAAE,EAAE,GAAGA,GAAE,GAAGA,GAAE,GAAG5kB,GAAE4kB,GAAE,EAAE,EAAE,GAAGA,GAAE,GAAGA,GAAE,GAAG7Z,GAAE6Z,GAAE,EAAEiX,EAAEjX,GAAE,EAAEnd,GAAE,CAACie,GAAEzrB,EAAEioB,EAAE,CAAC,EAAE,EAAEyC,EAAE1qB,EAAEioB,EAAE,CAAC,EAAE,EAAE1b,GAAEvM,EAAEioB,EAAE,CAAC,EAAE,EAAEliB,GAAE/F,EAAEioB,EAAE,CAAC,EAAE,EAAEnX,GAAE9Q,EAAEioB,EAAE,CAAC,EAAE,EAAE2Z,EAAE5hC,EAAEioB,EAAE,CAAC,EAAE,CAAC,EAAEznB,GAAEA,GAAE,OAAO,CAAC,EAAE,OAAO,KAAKgN,EAAC,EAAE,MAAM,IAAI,MAAMhN,GAAE,KAAK,CAAC,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,EAAE,CAAC,EAAE,MAAM,QAAQA,GAAEA,GAAE,OAAO,CAAC,EAAE,GAAG,GAAGA,GAAEA,GAAE,OAAO,CAAC,EAAE,IAAI,KAAKmqB,EAAC,CAAC,CAAC,CAACpqB,GAAE6d,GAAE,KAAgBlR,IAAX,SAAa,SAAS,OAAO,QAAQ2d,EAAE,GAAG,EAAE,EAAE,EAAErqB,GAAE,OAAO,IAAI,GAAGA,GAAE,CAAC,EAAE,IAAI,QAAQ0H,GAAE1H,GAAE,CAAC,EAAE,IAAIy1B,GAAE,EAAEA,GAAE/tB,GAAE,OAAO+tB,KAAI,CAAC,IAAIwJ,GAAEv3B,GAAE+tB,EAAC,EAAUwJ,GAAE,OAAV,MAAeypC,EAAE,KAAK,KAAKzpC,GAAE,EAAEA,GAAE,EAAEA,GAAE,OAAOA,GAAE,WAAWA,GAAE,SAASA,GAAE,iBAAiB,OAAOrhB,GAAE,CAACyM,CAAC,EAAEnd,EAAE,KAAK,KAAK+xB,GAAE,EAAEA,GAAE,CAAC,EAAE5U,EAAE,EAAE,SAAcrqB,GAAE,CAAC,EAAE,QAAV,GAAgB,KAAK,IAAI,SAAS,IAAI,GAAG,EAAEqqB,EAAE,WAAgBrqB,GAAE,CAAC,EAAE,QAAV,GAAgB,CAAC,IAAI85E,GAAE95E,GAAE,CAAC,EAAE,MAAM,EAAEmuE,GAAEnuE,GAAE,CAAC,EAAE,MAAM,EAAEquE,EAAE,KAAK,KAAKruE,GAAE,CAAC,EAAE,OAAO85E,GAAE3L,EAAC,EAAE9jD,EAAE,EAAE,CAACtqB,IAAGqN,EAAE,KAAK,KAAKrN,EAAC,EAAE6d,IAAGwwD,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE2K,EAAE,SAASrsE,EAAE,CAAC,IAAIkR,GAAE,KAAK,IAAI,SAAS,YAAa,EAAC,KAAK,IAAI,SAAS,YAAY5Q,GAAE4Q,IAAG,KAAK,IAAI,SAAS,oBAAqB,EAAC,GAAG,OAAO,KAAK,IAAI,aAAY,CAAE,IAAI,SAAS,OAAOlR,EAAEM,GAAE,IAAI,MAAM,OAAON,EAAEkR,GAAE5Q,GAAE,IAAI,UAAU,OAAON,EAAEkR,GAAE,EAAE5Q,GAAE,IAAI,SAAS,OAAON,EAAEkR,GAAE,EAAE5Q,GAAE,IAAI,cAAc,OAAON,EAAE,IAAI,aAAa,QAAQ,OAAOA,CAAC,CAAC,EAAEwnH,EAAE,SAASxnH,EAAE,CAAC,OAAOA,EAAE,KAAK,IAAI,SAAS,YAAW,EAAG,KAAK,IAAI,SAAS,aAAa,KAAK,IAAI,SAAS,oBAAmB,EAAG,EAAE,EAAE00B,EAAE,UAAU,qBAAqB,UAAU,CAAC,IAAI10B,EAAE,UAAU,CAAA,EAAG,OAAOA,EAAE,WAAW,CAAA,EAAGA,EAAE,aAAa,SAASA,GAAEkR,GAAE,CAAC,KAAK,WAAW,KAAK,CAAClR,GAAEkR,EAAC,CAAC,CAAC,EAAElR,EAAE,SAAS,UAAU,CAAC,OAAW,KAAK,WAAW,SAApB,EAA2B,UAAU,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,EAAE,iBAAiB,GAAGA,CAAC,EAAE00B,EAAE,UAAU,cAAc,UAAU,CAAC,OAAO,KAAK,qBAAsB,CAAA,EAAEA,EAAE,UAAU,qBAAqB,UAAU,CAAC,OAAO,KAAK,qBAAsB,CAAA,EAAE,IAAIsnC,EAAE,SAASh8D,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAER,EAAEioB,EAAE0C,GAAEzU,GAAE,CAAC,QAAQuV,GAAEiU,EAAE,KAAK,KAAKlyB,GAAEjN,GAAEC,GAAER,CAAC,EAAE0qB,EAAE,EAAEA,EAAEe,GAAE,OAAOf,IAAI,CAAC,IAAIne,GAAEkf,GAAEf,CAAC,EAAMA,IAAJ,IAAQxU,GAAEkkE,EAAE,KAAK,KAAK7tE,GAAE,GAAGW,EAAEX,GAAE,GAAG6R,EAAC,EAAE1Q,EAAE,KAAK,KAAKnB,GAAE,GAAGW,EAAEX,GAAE,GAAG6R,EAAC,GAAGw3D,EAAE,KAAK,KAAK1oE,EAAEkR,GAAE7R,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,EAAE,CAAC,CAACoe,GAAEikD,EAAE,KAAK,IAAI,EAAEhhE,EAAE,KAAK,KAAKqa,CAAC,CAAC,EAAEra,EAAE,SAASV,EAAE,CAAC,OAAOA,EAAC,CAAE,IAAI,SAAS,KAAK,IAAI,SAAS,IAAI,GAAG,EAAE,MAAM,IAAI,OAAO,KAAK,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,EAAE0hE,EAAE,UAAU,CAAC,KAAK,IAAI,KAAM,EAAC,KAAK,IAAI,YAAW,CAAE,EAAEwL,EAAE,SAASltE,EAAEkR,GAAE,CAAC,KAAK,IAAI,SAAS,IAAI7d,EAAE2M,CAAC,EAAE,IAAI,EAAEkR,EAAC,EAAE,IAAI,CAAC,EAAE4xD,EAAE,SAAS9iE,EAAE,CAAC,IAAIkR,GAAE,OAAOlR,EAAE,MAAO,CAAA,IAAI,QAAQ,IAAI,MAAMkR,GAAE,QAAQ,MAAM,IAAI,SAASA,GAAE,SAAS,MAAM,IAAI,OAAO,IAAI,QAAQ,QAAQA,GAAE,MAAM,CAAC,IAAI5Q,GAAE,KAAK,IAAI,kBAAkBN,EAAE,IAAI,EAAE3M,GAAEg5E,EAAE,KAAK,KAAKrsE,EAAE,CAAC,EAAE1M,GAAEk0H,EAAE,KAAK,KAAKn0H,EAAC,EAAEiN,GAAE,EAAExN,EAAE,KAAK,IAAI,UAAU,aAAa,IAAIkW,EAAEhJ,EAAE,EAAE3M,EAAC,CAAC,EAAE0nB,EAAE,KAAK,IAAI,UAAU,UAAS,EAAG0C,GAAE,IAAID,EAAEC,IAAGA,IAAGA,GAAEA,GAAE,SAAS1C,EAAE,SAAS,GAAG,SAASA,EAAE,IAAI,GAAG,SAASA,EAAE,KAAK,EAAE,QAAQ1b,GAAExG,GAAE+K,EAAE8wB,GAAE,KAAK,IAAI,UAAU,iBAAiB,IAAInW,EAAEve,EAAE,EAAE3M,GAAEiN,GAAE,EAAEA,GAAE,CAAC,CAAC,EAAEqd,GAAEF,GAAE,iBAAiB,IAAIc,EAAEve,EAAE,EAAE1M,GAAEgN,GAAE,EAAEA,GAAE,CAAC,CAAC,EAAEK,GAAE3F,EAAE,KAAK,KAAK2iB,EAAC,EAAEa,EAAE,CAAE,EAACuK,EAAE,EAAEA,EAAEpoB,GAAE,OAAOooB,GAAG,EAAOvK,EAAE,QAAQ7d,GAAEooB,CAAC,CAAC,IAAnB,IAAsBvK,EAAE,KAAK7d,GAAEooB,CAAC,CAAC,EAAE,GAAGqkD,EAAE5uD,CAAC,EAAE,KAAK,WAAW,QAAQijD,EAAEjjD,EAAE,CAAC,EAAEw9C,GAAEx9C,EAAEA,EAAE,OAAO,CAAC,EAAE9d,GAAE+gE,EAAE/gE,GAAEs7D,GAAE,EAAEt7D,KAAI,CAAC,KAAK,IAAI,QAAQA,EAAC,EAAE,IAAIghE,GAAMhhE,KAAJ,EAAM,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEwsE,GAAE,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAEpK,GAAE,KAAK,IAAI,SAAS,SAAS,OAAO,KAAK,OAAO,CAAC,EAAEtiE,GAAEsiE,GAAE,KAAK,OAAO,CAAC,EAAEnB,GAAE,KAAK,IAAI,SAAS,SAAS,MAAM,KAAK,OAAO,CAAC,EAAE+G,GAAE/G,GAAE,KAAK,OAAO,CAAC,EAAEnvC,GAAM9xB,KAAJ,EAAM,EAAEwsE,IAAGxsE,GAAE,GAAGF,GAAE,GAAO,KAAK,IAAI,UAAU,SAAvB,EAA8B,CAAC,IAAIuG,GAAE,KAAK,KAAK1H,GAAE,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,SAAS,CAAC,EAAE,KAAK,KAAKkzB,EAAElzB,GAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,GAAGmzB,GAAEkvC,EAAC,EAAE3mE,EAAE,KAAK,KAAK,OAAO,EAAE,EAAE,KAAK,KAAKgM,EAAC,CAAC,IAAI2qE,GAAEn/C,EAAE,CAAC,KAAK,MAAM,KAAK,UAAU5U,EAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,CAAC6U,GAAEkvC,GAAE,KAAK,IAAI,sBAAsB,EAAE,CAAC,EAAE1hE,EAAE,OAAO,MAAMnH,GAAE,KAAK,IAAI,SAAS,YAAW,EAAG,KAAK,IAAI,YAAYA,GAAEmH,EAAE,KAAK,EAAE4D,EAAE,KAAK,UAAU,KAAK,UAAUA,EAAE5D,EAAE,OAAO,IAAI4jE,GAAW,KAAK,aAAd,OAAyB,GAAGA,IAAG8N,GAAE,EAAEA,GAAE,GAAG5O,IAAG,GAAGc,IAAG8N,GAAE,GAAGhQ,IAAGgQ,GAAE,GAAG/P,GAAE,CAAC,IAAI15D,GAAE27D,GAAE5jE,EAAE,KAAK,KAAK,IAAI,gBAAgBA,EAAE,KAAKA,EAAE,UAAU2hE,GAAE+P,GAAE,CAAC,EAAE,CAAC,EAAE7O,GAAEtwC,EAAE,CAAC,KAAK,MAAM,KAAK,UAAUmC,EAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,OAAO,CAAC,EAAE,CAAClC,GAAEkvC,GAAE,KAAK,IAAI,sBAAsB,EAAE,CAAC,EAAEwM,GAAEtK,KAAIljE,GAAE+gE,GAAG/gE,GAAEs7D,KAAIjpE,EAAE,KAAK,IAAI,EAAEm7E,KAAI,KAAK,IAAI,kBAAmB,EAAC,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAExF,GAAEloE,GAAE,IAAI,EAAE,KAAI,EAAG,YAAa,GAAE,KAAK,IAAI,KAAKyH,GAAE46D,GAAE,EAAEA,GAAE,EAAE,CAAC,MAAM7iE,EAAE,MAAM,MAAMkR,GAAE,cAAclR,EAAE,aAAa,CAAC,EAAEkuE,IAAG,KAAK,IAAI,qBAAsB,CAAA,OAAOwD,GAAE,EAAE5O,KAAI,KAAK,IAAI,wBAAwBA,GAAE4O,GAAE,GAAG1xE,EAAE,OAAO,MAAM,KAAK,IAAI,YAAYnH,EAAC,EAAE,KAAK,UAAU+K,EAAE,MAAM5D,EAAE,OAAO,MAAMnH,GAAE,KAAK,IAAI,SAAS,YAAW,EAAG,KAAK,IAAI,YAAYA,GAAEmH,EAAE,KAAK,EAAE4D,EAAE,KAAK,UAAU,KAAK,UAAUA,EAAE5D,EAAE,OAAO,KAAK,IAAI,KAAKA,EAAE,KAAKlN,EAAE,EAAE,KAAK,KAAKA,EAAE,EAAE,KAAK,KAAK,CAAC,MAAMkN,EAAE,MAAM,MAAMkR,GAAE,cAAclR,EAAE,cAAc,SAASA,EAAE,QAAQ,CAAC,EAAEA,EAAE,OAAO,MAAM,KAAK,IAAI,YAAYnH,EAAC,EAAE,KAAK,UAAU+K,EAAE,EAAEpD,EAAE,SAASR,EAAEkR,GAAE5Q,GAAExN,GAAE,CAACwN,GAAEA,IAAG,EAAExN,GAAEA,IAAG,EAAE,KAAK,IAAI,SAAS,IAAIO,EAAE2M,EAAEM,EAAC,EAAE,IAAI,EAAE4Q,GAAEpe,EAAC,EAAE,IAAI,CAAC,EAAE6uE,EAAE,SAAS3hE,EAAEkR,GAAE5Q,GAAE,CAAC,OAAO,KAAK,IAAI,MAAMN,EAAEkR,GAAE5Q,GAAE,KAAK,IAAI,CAAC,EAAEooE,EAAE,SAAS1oE,EAAEkR,GAAE7d,GAAEC,GAAER,GAAEkW,EAAEuV,EAAEf,GAAE,CAAC,KAAK,IAAI,SAAS,IAAI,CAACld,EAAEya,EAAE1nB,GAAE2M,CAAC,CAAC,EAAEM,EAAEmd,EAAEnqB,GAAE4d,EAAC,CAAC,EAAE5Q,EAAEya,EAAEjoB,GAAEkN,CAAC,CAAC,EAAEM,EAAEmd,EAAEzU,EAAEkI,EAAC,CAAC,EAAE5Q,EAAEya,EAAEwD,EAAEve,CAAC,CAAC,EAAEM,EAAEmd,EAAED,GAAEtM,EAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,EAAEshB,EAAE,SAASxyB,EAAEkR,GAAE5Q,GAAEjN,GAAE,CAAC,QAAQC,GAAE,EAAE,KAAK,GAAGR,EAAE,KAAK,GAAG,EAAEoe,GAAE5Q,IAAG4Q,IAAG5d,GAAE,IAAIynB,EAAE,KAAK,IAAIza,GAAE4Q,EAAC,EAAE6J,EAAEznB,IAAGD,KAAI0nB,EAAEznB,GAAEynB,GAAG,QAAQ0C,GAAE,CAAA,EAAGzU,GAAE3V,GAAE,GAAG,EAAEkrB,GAAErN,GAAE6J,EAAE,MAAM,CAAC,IAAIyC,EAAEe,GAAEvV,GAAE,KAAK,IAAI+R,EAAEjoB,CAAC,EAAE2qB,GAAE,KAAK1W,EAAE,KAAK,KAAK/G,EAAEue,GAAEf,CAAC,CAAC,EAAEzC,GAAG,KAAK,IAAIyC,EAAEe,EAAC,EAAEA,GAAEf,CAAC,CAAC,OAAOC,EAAC,EAAE1W,EAAE,SAAS/G,EAAEkR,GAAE5Q,GAAE,CAAC,IAAIjN,IAAGiN,GAAE4Q,IAAG,EAAE5d,GAAE0M,EAAE,KAAK,IAAI3M,EAAC,EAAEP,EAAEkN,EAAE,KAAK,IAAI3M,EAAC,EAAE0nB,EAAEznB,GAAEmqB,GAAE,CAAC3qB,EAAEkW,GAAE+R,EAAEA,EAAE0C,GAAEA,GAAEc,GAAEvV,GAAE+R,EAAEznB,GAAEmqB,GAAE3qB,EAAE0qB,EAAE,EAAE,GAAG,KAAK,KAAK,EAAExU,GAAEuV,EAAC,EAAEA,KAAIxD,EAAEjoB,EAAE2qB,GAAEnqB,IAAG+L,GAAE0b,EAAEyC,EAAEC,GAAE5kB,GAAE4kB,GAAED,EAAEzC,EAAEnX,GAAEvE,GAAEq1B,EAAE,CAAC77B,GAAE8kB,EAAEtqB,GAAE6d,GAAEvQ,EAAE,KAAK,IAAIgd,CAAC,EAAEa,GAAE,KAAK,IAAIb,CAAC,EAAE,MAAM,CAAC,GAAG3d,EAAE,KAAK,IAAIkR,EAAC,EAAE,GAAGlR,EAAE,KAAK,IAAIkR,EAAC,EAAE,GAAG7R,GAAEsB,EAAE9H,GAAE2lB,GAAE,GAAGnf,GAAEmf,GAAE3lB,GAAE8H,EAAE,GAAGiD,GAAEjD,EAAE+zB,EAAElW,GAAE,GAAG5a,GAAE4a,GAAEkW,EAAE/zB,EAAE,GAAGX,EAAE,KAAK,IAAIM,EAAC,EAAE,GAAGN,EAAE,KAAK,IAAIM,EAAC,CAAC,CAAC,EAAEoxE,EAAE,SAAS1xE,EAAE,CAAC,MAAO,KAAIA,EAAE,KAAK,EAAE,EAAE4jE,GAAE,SAAS5jE,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAER,EAAE,CAAC,IAAIioB,EAAE/a,EAAE,IAAIM,GAAEN,GAAGyd,GAAEvM,GAAE,IAAI7d,GAAE6d,IAAGlI,GAAE1V,GAAE,IAAIgN,GAAEhN,IAAGkqB,GAAE1qB,EAAE,IAAIO,GAAEP,GAAGuM,EAAE,KAAK,IAAIW,EAAE1M,GAAEynB,EAAE/R,EAAC,EAAEnQ,GAAE,KAAK,IAAImH,EAAE1M,GAAEynB,EAAE/R,EAAC,EAAEpF,GAAE,KAAK,IAAIsN,GAAEpe,EAAE2qB,GAAED,EAAC,EAAEkX,GAAE,KAAK,IAAIxjB,GAAEpe,EAAE2qB,GAAED,EAAC,EAAE,OAAO,IAAIe,EAAElf,EAAEuE,GAAE/K,GAAEwG,EAAEq1B,GAAE9wB,EAAC,CAAC,EAAEqE,EAAE,SAASjI,EAAEkR,GAAE5Q,GAAEjN,GAAEC,GAAER,EAAEioB,EAAE0C,GAAE,CAAC,IAAIzU,GAAEwU,GAAEne,EAAExG,GAAE+K,GAAE8wB,GAAE/W,EAAEhd,EAAE6d,EAAEzrB,GAAEiI,GAAE+tB,GAAEwJ,GAAE66C,GAAE3L,GAAEnhE,GAAEN,EAAEjF,GAAE1H,GAAE6d,GAAEm7D,GAAE/4E,GAAEgN,GAAEknH,GAAE10H,EAAEO,GAAE2oE,GAAEjhD,EAAEznB,GAAEoN,GAAE+c,GAAE3qB,EAAE,IAAI0qB,GAAE,EAAEA,GAAE,GAAGA,KAAIgB,GAAGb,GAAGte,EAAEW,GAAGgJ,GAAEwU,GAAE,IAAIikD,IAAGz4D,KAAIpF,GAAEtD,GAAE0I,GAAEqjE,IAAGhtE,IAAI2J,IAAGpF,GAAEoF,IAAG1V,GAAE0V,GAAEgzD,GAAEp4D,IAAG+Z,GAAG5qB,IAAG4N,GAAG9H,GAAEqY,GAAElI,GAAEjO,IAAGiO,KAAI0rB,GAAErhC,GAAE2V,GAAEw+G,IAAG3uH,KAAImQ,IAAG0rB,GAAE1rB,IAAGlW,EAAEkW,GAAEtI,GAAEg0B,IAAG/zB,GAAM6c,IAAH,GAAMxiB,GAAEwjB,EAAEuK,GAAEh2B,GAAEw/B,GAAE/T,EAAE4uD,GAAEr6E,KAAIiI,GAAE,KAAK,IAAIA,GAAEwjB,CAAC,EAAEuK,GAAE,KAAK,IAAIA,GAAEh2B,EAAC,EAAEw/B,GAAE,KAAK,IAAIA,GAAE/T,CAAC,EAAE4uD,GAAE,KAAK,IAAIA,GAAEr6E,EAAC,GAAG,OAAO,IAAIwrB,EAAE,KAAK,MAAMvjB,EAAC,EAAE,KAAK,MAAM+tB,EAAC,EAAE,KAAK,MAAMwJ,GAAEv3B,EAAC,EAAE,KAAK,MAAMoyE,GAAErkD,EAAC,CAAC,CAAC,EAAE85C,GAAE,UAAU,CAAC,GAAG,KAAK,cAAc,KAAK,IAAI,SAAS,QAAQ,KAAK,IAAI,eAAe,CAAC,IAAI7iE,EAAEkR,GAAE5Q,IAAGN,EAAE,KAAK,IAAI,SAASkR,GAAE,KAAK,IAAI,eAAe,KAAK,UAAU,CAAC,SAASlR,EAAE,eAAekR,EAAC,CAAC,GAAG,KAAK,eAAe5Q,KAAI,KAAK,IAAI,YAAY,KAAK,IAAI,SAAS,KAAK,IAAI,cAAc,EAAE,KAAK,aAAaA,GAAE,CAAC,CAAC,GAAEyG,GAAE,GAAG,EAS35sC,SAAS,EAAE,CAAC,IAAIzG,EAAE,SAASN,EAAE,CAAC,IAAIkR,EAAE5Q,EAAEjN,EAAEC,EAAER,EAAE,EAAE2qB,EAAEzU,EAAEuV,EAAE,EAAE,IAA2Bje,EAAE,CAAA,EAAGjN,EAAE,EAAEC,GAAG0M,GAAGkR,EAAE,WAAW,MAAMlR,EAAE,OAAO,GAAG,CAAC,GAAG,OAAO1M,EAAED,EAAEA,GAAG,GAAOP,GAAGkN,EAAE,WAAW3M,CAAC,GAAG,KAAK2M,EAAE,WAAW3M,EAAE,CAAC,GAAG,KAAK2M,EAAE,WAAW3M,EAAE,CAAC,GAAG,GAAG2M,EAAE,WAAW3M,EAAE,CAAC,KAA5F,GAAgG,GAAGP,IAAIA,IAAIA,IAAIA,GAAGA,GAAG,EAAEA,EAAE,KAAK,KAAKyrB,EAAEzrB,EAAE,KAAK,KAAKkW,EAAElW,EAAE,KAAK,KAAK2qB,EAAE3qB,EAAE,KAAK,IAAI,GAAGwN,EAAE,KAAK,EAAE,GAAGmd,EAAE,GAAGzU,EAAE,GAAGuV,EAAE,GAAG,EAAE,EAAE,GAAGje,EAAE,KAAK,GAAG,EAAE,OAAO,SAASN,EAAEkR,EAAE,CAAC,QAAQ5Q,EAAE4Q,EAAE5Q,EAAE,EAAEA,IAAIN,EAAE,IAAG,CAAE,EAAEM,EAAE4Q,EAAE,MAAM,EAAE,OAAO,aAAa,MAAM,OAAO5Q,CAAC,EAAE,IAAI,EAAEjN,EAAE,SAAS2M,EAAE,CAAC,IAAIkR,EAAE5Q,EAAEjN,EAAEC,EAAER,EAAE,EAAE,OAAO2qB,EAAE,SAASzU,EAAE,IAAIuV,EAAE,aAAa,EAAE,QAAQlf,EAAE,UAAU,IAAIW,EAAE,CAAC,EAAE,EAAE,EAAEA,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,EAAEX,CAAC,EAAE,MAAM,EAAE,EAAEA,CAAC,EAAE,IAAI,OAAO,EAAEhM,EAAE,CAAE,EAACC,EAAE,EAAER,GAAGkN,GAAGkR,EAAE,QAAQ,CAAC,EAAElR,EAAEyd,CAAC,EAAE,GAAG,CAAC,GAAGA,CAAC,EAAE3qB,EAAEQ,EAAEA,GAAG,EAAEgN,EAAE,UAAUN,EAAEue,CAAC,EAAEjrB,CAAC,EAAE,IAAI,QAAQ0M,EAAEue,CAAC,EAAEjrB,EAAE,CAAC,EAAE,IAAI,MAAM0M,EAAEue,CAAC,EAAEjrB,EAAE,CAAC,EAAE,IAAI,IAAI0M,EAAEue,CAAC,EAAEjrB,EAAE,CAAC,EAAE,KAAK0M,EAAEue,CAAC,EAAEjrB,EAAE,CAAC,EAAE,IAAID,EAAE,KAAK2V,EAAE1I,GAAG,GAAG0I,EAAE1I,GAAG,GAAG0I,EAAE1I,GAAG,EAAE0I,EAAE1I,CAAC,EAAE,OAAO,SAASN,EAAEkR,EAAE,CAAC,QAAQ5Q,EAAE4Q,EAAE5Q,EAAE,EAAEA,IAAIN,EAAE,IAAG,CAAE,EAAE3M,EAAE6d,EAAEuM,CAAC,CAAC,EAAE,EAAE,aAAa,MAAM,EAAEpqB,CAAC,CAAC,EAAE,EAAE,SAAS2M,EAAE,CAAC,IAAIkR,EAAE,IAAI,OAAO,qBAAqB,EAAE,IAASlR,EAAEA,EAAE,QAAQ,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAxC,KAA4CA,EAAEA,EAAE,OAAO,EAAEA,EAAE,QAAQ,GAAG,CAAC,GAAGA,EAAE,OAAO,IAAIA,GAAG,KAAUkR,EAAE,KAAKlR,CAAC,IAAb,GAAe,MAAM,GAAG,QAAQM,EAAE,GAAGjN,EAAE,EAAEA,EAAE2M,EAAE,OAAO3M,GAAG,EAAEiN,GAAG,OAAO,aAAa,MAAMN,EAAE3M,CAAC,EAAE2M,EAAE3M,EAAE,CAAC,EAAE,EAAE,OAAOiN,CAAC,EAAExN,EAAE,SAASkN,EAAE,CAAC,QAAQ,EAAE,IAAI,WAAWA,EAAE,MAAM,EAAE3M,EAAE2M,EAAE,OAAO3M,KAAK,EAAEA,CAAC,EAAE2M,EAAE,WAAW3M,CAAC,EAAE,OAAO2M,GAAG,EAAEkR,GAAE,CAAC,GAAG,OAAQ,SAASlR,EAAEkR,EAAE,CAAC,OAAOlR,EAAE,OAAO,aAAakR,CAAC,CAAC,EAAG,EAAE,CAAC,EAAE,EAAE,qBAAqB,SAASlR,EAAEkR,EAAE,CAAC,IAAI6J,EAAE,EAAE,EAAE/a,GAAG,GAAGgJ,EAAE,CAAA,EAAG,IAAc,OAAOkI,EAAEA,GAAG,CAAA,IAAtB,WAA4BA,EAAE,CAACA,CAAC,GAAG6J,EAAE,EAAEA,EAAE7J,EAAE,OAAO6J,GAAG,EAAE,OAAO7J,EAAE6J,CAAC,EAAG,CAAA,IAAI,gBAAgB,IAAI,iBAAiB,EAAE1nB,EAAE,CAAC,EAAE2V,EAAE,KAAK,gBAAgB,EAAE,MAAM,IAAI,gBAAgB,IAAI,iBAAiB,EAAE1I,EAAE,CAAC,EAAE0I,EAAE,KAAK,gBAAgB,EAAE,MAAM,IAAI,iBAAiB,IAAI,kBAAkB,EAAE,EAAE,CAAC,EAAEA,EAAE,KAAK,iBAAiB,EAAE,MAAM,IAAI,iBAAiB,IAAI,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAK,SAAShJ,EAAE,CAAC,OAAO,IAAIA,EAAE,aAAa,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,EAAG,KAAK,EAAE,EAAE,IAAIgJ,EAAE,KAAK,iBAAiB,EAAE,MAAM,IAAI,cAAc,IAAI,eAAe,EAAElW,EAAE,CAAC,EAAEkW,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,MAAM,IAAI,MAAM,gBAAgBkI,EAAE6J,CAAC,EAAE,sBAAsB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa/R,EAAE,QAAO,EAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAEjC,GAAE,GAAG,EASzgE,SAAS,EAAE,CAAC,EAAE,SAAS,SAAS/G,EAAE,EAAEM,EAAE,CAAC,OAAO,SAASN,EAAEkR,EAAE,EAAE,CAACA,EAAOA,IAAL,GAAO,EAAc,OAAO,GAAnB,WAAqB,EAAE,UAAU,CAAA,EAAG,IAAI7d,EAAE,OAAO,GAAG,CAACA,EAAE,SAAS2M,EAAEkR,EAAE5Q,EAAE,CAAC,IAAIjN,EAAE,IAAI,eAAeC,EAAE,EAAER,EAAE,SAASkN,EAAE,CAAC,IAAIkR,EAAElR,EAAE,OAAOM,EAAE,CAAA,EAAGjN,EAAE,OAAO,aAAa,IAAIC,EAAE,EAAEA,EAAE4d,EAAE5d,GAAG,EAAEgN,EAAE,KAAKjN,EAAE,IAAI2M,EAAE,WAAW1M,CAAC,CAAC,CAAC,EAAE,OAAOgN,EAAE,KAAK,EAAE,CAAC,EAAE,GAAGjN,EAAE,KAAK,MAAM2M,EAAE,CAACkR,CAAC,EAAE7d,EAAE,iBAAiB,oCAAoC,EAAO6d,IAAL,KAAS7d,EAAE,OAAO,UAAU,CAAOA,EAAE,SAAR,IAAeiN,EAAExN,EAAE,KAAK,YAAY,CAAC,EAAEwN,EAAE,MAAM,CAAC,GAAGjN,EAAE,KAAK,IAAI,EAAE6d,GAAS7d,EAAE,SAAR,IAAe,OAAOP,EAAEO,EAAE,YAAY,CAAC,EAAE2M,EAAEkR,EAAE,CAAC,CAAC,MAAS,CAAE,CAAA,OAAO7d,CAAC,EAAE2M,EAAE,EAAEM,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAEyG,GAAE,GAAG,EAAE,SAASmK,EAAE,CAAC,SAAS5Q,GAAG,CAAC,OAAOjN,GAAE,YAAY,QAAQ,QAAQA,GAAE,WAAW,EAAE,QAAqB,QAAA,EAAA,KAAA,IAAA8iW,GAAA,GAAE,MAAO,SAASn2V,EAAE,CAAC,OAAO,QAAQ,OAAO,IAAI,MAAM,+BAA+BA,CAAC,CAAC,CAAC,CAAG,EAAC,KAAM,SAASA,EAAE,CAAC,OAAOA,EAAE,QAAQA,EAAE,QAAQA,CAAC,CAAC,CAAE,CAAC,SAAS1M,GAAG,CAAC,OAAOD,GAAE,UAAU,QAAQ,QAAQA,GAAE,SAAS,EAAE,QAAA,QAAA,EAAA,KAAA,IAAA+iW,GAAA,GAAqB,MAAO,SAASp2V,EAAE,CAAC,OAAO,QAAQ,OAAO,IAAI,MAAM,6BAA6BA,CAAC,CAAC,CAAC,CAAC,EAAG,KAAM,SAASA,EAAE,CAAC,OAAOA,EAAE,QAAQA,EAAE,QAAQA,CAAC,CAAC,CAAE,CAAC,IAAIlN,EAAE,SAASoe,EAAE,CAAC,IAAI5Q,EAAEN,GAAEkR,CAAC,EAAE,OAAoB5Q,IAAd,YAAgB,YAAuBA,IAAX,UAAc4Q,aAAa,OAAO,SAAoB5Q,IAAX,UAAc4Q,aAAa,OAAO,SAAsB5Q,IAAb,YAAgB4Q,aAAa,SAAS,WAAWA,GAAGA,EAAE,cAAc,MAAM,QAAQA,GAAOA,EAAE,WAAN,EAAe,UAAqB5Q,IAAX,SAAa,SAAS,SAAS,EAAEya,EAAE,SAAS/a,EAAEkR,EAAE,CAAC,IAAI5Q,EAAE,SAAS,cAAcN,CAAC,EAAE,QAAQ3M,KAAK6d,EAAE,YAAY5Q,EAAE,UAAU4Q,EAAE,WAAWA,EAAE,WAAWA,EAAE,YAAY5Q,EAAE,UAAU4Q,EAAE,UAAU,SAASA,EAAE,SAAS,GAAGA,EAAE,MAAM5Q,EAAE,MAAMjN,CAAC,EAAE6d,EAAE,MAAM7d,CAAC,EAAE,OAAOiN,CAAC,EAAEmd,EAAE,SAASzd,EAAEkR,EAAE,CAAC,IAAI5Q,EAAE,OAAO,OAAON,EAAE,QAAQ,QAAQ,SAAS,EAAE,KAAK,MAAM,KAAK,UAAUA,EAAE,QAAQ,CAAC,CAAC,EAAE3M,EAAE2M,EAAE,QAAQ,QAAQ,QAAS,EAACM,CAAC,EAAE,OAAOjN,GAAGA,EAAEA,EAAE,YAAY,EAAE2M,EAAE,EAAE,CAACA,CAAC,CAAC,GAAG,IAAIkR,CAAC,CAAC,GAAGuM,EAAE,UAAU,OAAO,OAAO,QAAQ,SAAS,GAAG,YAAYA,EAAEA,EAAE,QAAQ,SAASzd,EAAEkR,EAAE,CAAC,OAAOlR,EAAE,UAAUkR,GAAGuM,EAAE,UAAUzd,CAAC,EAAEyd,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,SAAS,KAAK,SAAS,UAAU,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE,EAAE,MAAM,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,WAAW,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,YAAY,CAAE,EAAC,MAAM,CAAE,EAAC,gBAAgB,aAAa,CAAC,EAAEA,EAAE,UAAU,KAAK,SAASzd,EAAEkR,EAAE,CAAC,OAAO,KAAK,KAAM,UAAU,CAAC,OAAOA,EAAEA,GAAG,SAASlR,EAAE,CAAC,OAAOlN,EAAEkN,CAAC,GAAG,IAAI,SAAS,MAAM,SAAS,IAAI,UAAU,OAAiBA,EAAE,SAAS,YAAW,IAAjC,SAAoC,SAAS,UAAU,QAAQ,MAAM,SAAS,CAAC,EAAEA,CAAC,EAAC,CAAE,IAAI,SAAS,OAAO,KAAK,KAAK1M,CAAC,EAAE,KAAM,SAAS4d,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI6J,EAAE,MAAM,CAAC,UAAU/a,EAAE,UAAUkR,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,IAAI,UAAU,OAAO,KAAK,IAAI,CAAC,IAAIlR,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,KAAK,IAAI,CAAC,OAAOA,CAAC,CAAC,EAAE,IAAI,MAAM,OAAO,KAAK,IAAI,CAAC,IAAIA,CAAC,CAAC,EAAE,QAAQ,OAAO,KAAK,MAAM,sBAAsB,CAAC,CAAC,CAAG,CAAA,EAAEyd,EAAE,UAAU,GAAG,SAASzd,EAAE,CAAC,OAAOA,EAAG,CAAA,IAAI,YAAY,OAAO,KAAK,YAAa,EAAC,IAAI,SAAS,OAAO,KAAK,SAAU,EAAC,IAAI,MAAM,OAAO,KAAK,MAAO,EAAC,IAAI,MAAM,OAAO,KAAK,MAAO,EAAC,QAAQ,OAAO,KAAK,MAAM,iBAAiB,CAAC,CAAC,EAAEyd,EAAE,UAAU,YAAY,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,MAAM,oCAAoC,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,KAAK,UAAU,KAAK,YAAa,CAAA,CAAC,CAAC,EAAE,KAAM,UAAU,CAAC,IAAIzd,EAAE,CAAC,SAAS,WAAW,QAAQ,eAAe,OAAiB,OAAO,KAAK,IAAI,OAA1B,UAAiC,MAAM,KAAK,IAAI,KAAK,GAAa,OAAO,KAAK,IAAI,aAA1B,UAAuC,MAAM,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,KAAK,KAAK,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,aAAa,KAAK,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,OAAO,gBAAgB,KAAK,IAAI,eAAe,EAAEkR,EAAE,SAASlR,EAAEkR,EAAE5Q,EAAE,CAAC,QAAQjN,EAAM6d,EAAE,WAAN,EAAe,SAAS,eAAeA,EAAE,SAAS,EAAEA,EAAE,UAAU,EAAE,EAAE5d,EAAE4d,EAAE,WAAW5d,EAAEA,EAAEA,EAAE,YAAiBgN,IAAH,IAAUhN,EAAE,WAAN,GAA2BA,EAAE,WAAb,UAAuBD,EAAE,YAAY2M,EAAE1M,EAAEgN,CAAC,CAAC,EAAE,OAAW4Q,EAAE,WAAN,IAA4BA,EAAE,WAAb,UAAuB7d,EAAE,MAAM6d,EAAE,MAAM7d,EAAE,OAAO6d,EAAE,OAAO7d,EAAE,WAAW,IAAI,EAAE,UAAU6d,EAAE,EAAE,CAAC,GAAgBA,EAAE,WAAf,YAAoCA,EAAE,WAAb,WAAwB7d,EAAE,MAAM6d,EAAE,OAAO7d,EAAE,iBAAiB,OAAQ,UAAU,CAACA,EAAE,UAAU6d,EAAE,UAAU7d,EAAE,WAAW6d,EAAE,UAAU,EAAG,EAAE,GAAG7d,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,YAAY,iBAAiB,EAAW6d,EAAE,UAAX,SAAqBlR,EAAE,OAAO,KAAK,IAAI,SAAS,KAAK,aAAa,SAAS,KAAK,aAAa,SAAS,gBAAgB,aAAa,SAAS,gBAAgB,aAAa,SAAS,gBAAgB,YAAY,EAAE,MAAM,KAAK,KAAK,QAAQ+a,EAAE,MAAM,CAAC,UAAU,oBAAoB,MAAM,CAAC,SAAS,QAAQ,SAAS,SAAS,OAAO,IAAI,KAAK,YAAY,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,UAAUA,EAAE,MAAM,CAAC,UAAU,sBAAsB,MAAM/a,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,YAAYkR,CAAC,EAAE,KAAK,KAAK,UAAU,WAAW,YAAY6J,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,OAAO,qBAAqB,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,MAAM,MAAM,OAAO,KAAK,KAAK,QAAQ,YAAY,KAAK,KAAK,SAAS,EAAE,SAAS,KAAK,YAAY,KAAK,KAAK,OAAO,EAAE,KAAK,KAAK,UAAU,WAAW,MAAM,SAAS,WAAW,KAAK,KAAK,UAAU,OAAO,KAAK,IAAI,KAAK,KAAK,UAAU,WAAW,aAAa,KAAK,KAAK,UAAU,WAAW,aAAa,KAAK,KAAK,UAAU,WAAW,YAAY,EAAE,IAAI,EAAG,EAAE0C,EAAE,UAAU,SAAS,UAAU,CAAC,IAAIzd,EAAE,CAAC,UAAU,CAAC,OAAO,SAAS,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG,KAAK,YAAW,CAAE,CAAC,EAAE,OAAO,KAAK,SAASA,CAAC,EAAE,KAAKM,CAAC,EAAE,KAAM,SAASN,EAAE,CAAC,IAAIkR,EAAE,OAAO,OAAO,CAAA,EAAG,KAAK,IAAI,WAAW,EAAE,OAAO,OAAOA,EAAE,WAAWlR,EAAE,KAAK,KAAK,UAAUkR,CAAC,CAAC,CAAC,EAAG,KAAM,SAASlR,EAAE,EAAE,KAAK,IAAI,YAAY,YAAY,UAAU,CAAA,GAAIA,CAAC,EAAE,KAAK,KAAK,OAAOA,EAAE,SAAS,KAAK,YAAY,KAAK,KAAK,OAAO,CAAC,CAAC,CAAE,EAAEyd,EAAE,UAAU,YAAY,UAAU,CAAC,IAAIzd,EAAE,CAAC,UAAU,CAAC,OAAO,SAAS,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG,KAAK,YAAa,CAAA,CAAC,EAAE,OAAO,KAAK,SAASA,CAAC,EAAE,KAAKM,CAAC,EAAE,KAAM,SAASN,EAAE,CAAC,IAAIkR,EAAE,KAAK,IAAI,MAAM5Q,EAAE,KAAK,IAAI,UAAUjN,EAAY,OAAO,KAAK,IAAI,OAA1B,UAAiC,MAAM,KAAK,IAAI,KAAK,GAAa,OAAO,KAAK,IAAI,aAA1B,UAAuC,MAAM,KAAK,IAAI,WAAW,EAAE,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,YAAYC,EAAE,OAAO,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,MAAMD,EAAE,QAAQ,KAAK,IAAI,SAAS,EAAE,QAAQ,KAAK,IAAI,SAAS,EAAE,gBAAgB,UAAU,aAAa,KAAK,QAAQ,GAAG,MAAM,KAAK,gBAAgB,GAAG,uBAAuB,GAAG,QAAQ,EAAE,EAAE,KAAK,IAAI,WAAW,EAAE,GAAG,OAAOC,EAAE,WAAW4d,EAAE,UAAU,WAAoB,KAAK,IAAI,aAAlB,QAA8B,KAAK,IAAI,WAAWA,EAAE,UAAU,KAAK,KAAK,IAAI,EAAEA,EAAE,UAAU,KAAK,KAAK,IAAI,EAAEA,EAAE,UAAU,OAAO,KAAK,IAAI,OAAOA,EAAE,UAAU,UAAU5Q,EAAEA,EAAE,QAAQ,EAAE,EAAE,EAAEA,EAAE,OAAO,EAAE,EAAE,CAAC,IAAIya,EAAEza,EAAE,CAAC,EAAEmd,EAAE1C,EAAE,IAAI,KAAM,SAAS/a,EAAE,CAAC,OAAmBA,EAAE,SAAf,UAAqB,CAAC,EAAGyd,GAAGvM,EAAE,QAAQuM,EAAE,IAAI1C,EAAE,IAAI,KAAKA,EAAE,IAAI,KAAK,CAAC,CAAC,OAAOznB,EAAE,aAAaA,EAAE,cAAc,EAAEA,EAAE,aAAgBA,EAAE,cAAL,EAAkB,KAAK,IAAI,KAAK,KAAK,UAAU,aAAa,KAAK,KAAK,UAAU,aAAa,KAAK,KAAK,UAAU,YAAY,EAAEA,EAAE,aAAa4d,EAAE,UAAU,KAAK,EAAE,EAAElR,EAAE,KAAK,KAAK,UAAU1M,CAAC,CAAC,CAAC,EAAG,KAAM,SAAS0M,EAAE,CAAC,KAAK,IAAI,MAAM,UAAU,QAAQ,EAAE,GAAG,KAAK,IAAI,YAAY,YAAY,UAAU,IAAIA,CAAC,EAAE,KAAK,KAAK,OAAOA,EAAE,SAAS,KAAK,YAAY,KAAK,KAAK,OAAO,CAAC,CAAG,CAAA,EAAEyd,EAAE,UAAU,MAAM,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,QAAQ,KAAK,SAAQ,CAAE,CAAC,CAAC,EAAE,KAAM,UAAU,CAAC,IAAIzd,EAAE,KAAK,KAAK,OAAO,UAAU,SAAS,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,OAAO,EAAE,KAAK,KAAK,IAAI,SAAS,cAAc,KAAK,EAAE,KAAK,KAAK,IAAI,IAAIA,CAAC,CAAC,CAAE,EAAEyd,EAAE,UAAU,MAAM,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,YAAa,CAAA,CAAC,CAAC,EAAE,KAAM,UAAU,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,CAAE,EAAEA,EAAE,UAAU,OAAO,SAASzd,EAAEkR,EAAE5Q,EAAE,CAAC,OAAeA,EAAEA,GAAG,OAAO,gBAArB,OAA8CA,EAAE,YAAW,IAAvB,QAA0B,KAAK,UAAUN,EAAEkR,CAAC,EAAE,KAAK,UAAUlR,EAAEkR,CAAC,CAAC,EAAEuM,EAAE,UAAU,UAAU,SAASzd,EAAEkR,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,MAAK,CAAE,CAAC,CAAC,EAAE,KAAM,UAAU,CAAC,OAAO,KAAK,KAAK,IAAI,OAAOlR,EAAEkR,CAAC,CAAC,CAAC,CAAE,EAAEuM,EAAE,UAAU,UAAU,SAASzd,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,MAAO,CAAA,CAAC,CAAC,EAAE,KAAM,UAAU,CAAC,OAAOA,EAAC,CAAE,KAAK,OAAO,IAAI,MAAM,OAAO,KAAK,KAAK,IAAI,IAAI,gBAAgB,IAAI,gBAAgB,OAAO,KAAK,KAAK,IAAI,IAAI,IAAI,UAAU,IAAI,UAAU,OAAO,SAAS,SAAS,KAAK,KAAK,KAAK,IAAI,IAAI,QAAQ,KAAK,sBAAsBA,EAAE,qBAAqB,CAAC,CAAC,CAAE,EAAEyd,EAAE,UAAU,KAAK,SAASzd,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,IAAIA,EAAE,CAAC,SAASA,CAAC,EAAE,IAAI,EAAE,KAAM,UAAU,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,EAAG,EAAEyd,EAAE,UAAU,WAAW,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,MAAO,CAAA,CAAC,CAAC,EAAE,KAAM,UAAU,CAAC,KAAK,KAAK,SAAS,KAAK,KAAK,GAAG,CAAC,EAAG,EAAEA,EAAE,UAAU,IAAI,SAASzd,EAAE,CAAC,GAAclN,EAAEkN,CAAC,IAAd,SAAgB,OAAO,KAAK,IAAIkR,EAAE,OAAO,KAAKlR,GAAG,CAAE,CAAA,EAAE,IAAK,SAASkR,EAAE,CAAC,GAAGA,KAAKuM,EAAE,SAAS,KAAK,OAAO,UAAU,CAAC,KAAK,KAAKvM,CAAC,EAAElR,EAAEkR,CAAC,CAAC,EAAE,OAAOA,GAAG,IAAI,SAAS,OAAO,KAAK,UAAU,KAAK,KAAKlR,EAAE,MAAM,EAAE,IAAI,QAAQ,OAAO,UAAU,CAAC,OAAO,KAAK,IAAI,MAAMA,EAAE,MAAM,KAAK,YAAa,CAAA,EAAE,IAAI,WAAW,OAAO,KAAK,YAAY,KAAK,KAAKA,EAAE,QAAQ,EAAE,QAAQ,OAAO,UAAU,CAAC,KAAK,IAAIkR,CAAC,EAAElR,EAAEkR,CAAC,CAAC,CAAC,CAAC,EAAG,IAAI,EAAE,OAAO,KAAK,KAAM,UAAU,CAAC,OAAO,KAAK,SAASA,CAAC,CAAC,CAAC,CAAE,EAAEuM,EAAE,UAAU,IAAI,SAASzd,EAAEkR,EAAE,CAAC,OAAO,KAAK,KAAM,UAAU,CAAC,IAAI5Q,EAAEN,KAAKyd,EAAE,SAAS,KAAK,KAAK,KAAKzd,CAAC,EAAE,KAAK,IAAIA,CAAC,EAAE,OAAOkR,EAAEA,EAAE5Q,CAAC,EAAEA,CAAC,CAAC,CAAE,EAAEmd,EAAE,UAAU,UAAU,SAASzd,EAAE,CAAC,OAAO,KAAK,KAAM,UAAU,CAAC,OAAOlN,EAAEkN,CAAC,GAAG,IAAI,SAASA,EAAE,CAACA,EAAEA,EAAEA,EAAEA,CAAC,EAAE,IAAI,QAAQ,GAAOA,EAAE,SAAN,IAAeA,EAAE,CAACA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,GAAOA,EAAE,SAAN,EAAa,MAAM,QAAQ,OAAO,KAAK,MAAM,uBAAuB,CAAC,CAAC,KAAK,IAAI,OAAOA,CAAC,CAAG,EAAC,KAAK,KAAK,WAAW,CAAC,EAAEyd,EAAE,UAAU,YAAY,SAASzd,EAAE,CAAC,SAASkR,EAAElR,EAAEkR,EAAE,CAAC,OAAO,KAAK,MAAMlR,EAAEkR,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,KAAK,KAAM,UAAU,EAAElR,EAAEA,GAAG+G,GAAE,YAAY,KAAK,IAAI,KAAK,GAAG,eAAe,OAAO,IAAI/G,EAAE,MAAM,CAAC,MAAMA,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,EAAE,OAAOA,EAAE,OAAO,KAAK,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,EAAEA,EAAE,MAAM,GAAG,CAAC,MAAMkR,EAAElR,EAAE,MAAM,MAAMA,EAAE,CAAC,EAAE,OAAOkR,EAAElR,EAAE,MAAM,OAAOA,EAAE,CAAC,CAAC,EAAEA,EAAE,MAAM,MAAMA,EAAE,MAAM,OAAOA,EAAE,MAAM,OAAO,KAAK,KAAK,SAASA,CAAC,CAAG,CAAA,EAAEyd,EAAE,UAAU,YAAY,SAASzd,EAAEkR,EAAE5Q,EAAEjN,EAAE,CAAC,OAAa2M,GAAN,OAAU,KAAK,SAAS,IAAIA,GAASkR,GAAN,OAAU,KAAK,SAAS,MAAMA,GAAS5Q,GAAN,OAAU,KAAK,SAAS,EAAEA,GAASjN,GAAN,OAAU,KAAK,SAAS,MAAMA,GAAG,KAAK,SAAS,MAAM,KAAK,SAAS,IAAI,KAAK,SAAS,MAAM,IAAI,EAAEoqB,EAAE,UAAU,eAAe,SAASzd,EAAEkR,EAAE5Q,EAAEjN,EAAE,CAAC,OAAO,KAAK,YAAY2M,EAAE,KAAK,SAAS,IAAIA,EAAE,KAAKkR,GAAG,KAAK5Q,EAAE,KAAK,SAAS,EAAEA,EAAE,KAAKjN,EAAE,KAAK,SAAS,MAAM,OAAOA,CAAC,EAAE,IAAI,CAAC,EAAEoqB,EAAE,UAAU,KAAK,SAASzd,EAAEkR,EAAE,CAAC,IAAI5Q,EAAE,KAAK,OAAO,KAAK,SAASN,EAAEkR,EAAG,SAASlR,EAAEkR,EAAE,CAAC,OAAO5Q,EAAE,eAAe,KAAK,KAAK,EAAE,CAACN,CAAC,CAAC,EAAE,QAAQ,UAAU,KAAK,KAAK,KAAM,SAASkR,EAAE,CAAC,OAAO5Q,EAAE,eAAe,KAAKN,CAAC,EAAEkR,CAAC,CAAG,EAAC,KAAKlR,EAAEkR,CAAC,EAAE,KAAM,SAASlR,EAAE,CAAC,OAAOM,EAAE,eAAe,CAAC,EAAEN,CAAC,CAAG,CAAA,CAAG,CAAA,EAAEyd,EAAE,UAAU,SAAS,SAASzd,EAAEkR,EAAE5Q,EAAE,CAACA,EAAEA,GAAG,QAAQ,UAAU,KAAKN,IAAIA,EAAEA,EAAE,KAAK,IAAI,GAAGkR,IAAIA,EAAEA,EAAE,KAAK,IAAI,GAAG,IAAI7d,EAAO,QAAQ,SAAQ,EAAG,QAAQ,eAAe,IAA/C,IAA8D,QAAQ,OAApB,UAAyB,KAAKoqB,EAAE,QAAQ,OAAO,OAAO,CAAE,EAAC,IAAI,EAAE,QAAQ,SAAS,EAAEnqB,EAAEgN,EAAE,KAAKjN,EAAE2M,EAAEkR,CAAC,EAAE,OAAOuM,EAAE,QAAQnqB,EAAE,KAAK,SAAS,CAAC,EAAEmqB,EAAE,UAAU,aAAa,SAASzd,EAAEkR,EAAE,CAAC,OAAO,QAAQ,UAAU,KAAK,KAAK,KAAKlR,EAAEkR,CAAC,CAAC,EAAEuM,EAAE,UAAU,SAAS,SAASzd,EAAE,CAAC,IAAIkR,EAAE,KAAK,OAAOlR,EAAE,QAAS,SAASA,EAAE,CAACkR,EAAEA,EAAE,SAASlR,CAAC,CAAC,CAAC,EAAGkR,CAAC,EAAEuM,EAAE,UAAU,MAAM,SAASzd,EAAE,CAACA,IAAIA,EAAEA,EAAE,KAAK,IAAI,GAAG,IAAIkR,EAAE,QAAQ,UAAU,MAAM,KAAK,KAAKlR,CAAC,EAAE,OAAOyd,EAAE,QAAQvM,EAAE,IAAI,CAAC,EAAEuM,EAAE,UAAU,cAAc,SAASzd,EAAE,CAAC,OAAO,QAAQ,UAAU,MAAM,KAAK,KAAKA,CAAC,CAAC,EAAEyd,EAAE,UAAU,MAAM,SAASzd,EAAE,CAAC,OAAO,KAAK,KAAM,UAAU,CAAC,MAAM,IAAI,MAAMA,CAAC,CAAC,EAAG,EAAEyd,EAAE,UAAU,MAAMA,EAAE,UAAU,IAAIA,EAAE,UAAU,OAAOA,EAAE,UAAU,KAAKA,EAAE,UAAU,OAAOA,EAAE,UAAU,OAAOA,EAAE,UAAU,IAAIA,EAAE,UAAU,KAAK1W,GAAE,YAAY,SAASmK,EAAE5Q,EAAEjN,EAAE,CAAC,GAAc2M,GAAEkR,CAAC,IAAd,SAAgB,CAAC,IAAI5d,EAAE4d,EAAEA,EAAE5d,EAAE,YAAYgN,EAAEhN,EAAE,MAAMgN,EAAEjN,EAAEC,EAAE,QAAQD,CAAC,CAACiN,EAAEA,GAAG,KAAKjN,EAAEA,GAAG,KAAK6d,GAAG,IAAIA,GAAG,MAAM,YAAW,EAAG,IAAIpe,EAAE,GAAG,GAAGO,GAAG,YAAa,EAACoqB,EAAE,CAAC,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,OAAO,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,OAAO,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,IAAI,CAAC,MAAM,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,OAAO,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,IAAI,CAAC,MAAM,MAAM,EAAE,GAAG,CAAC,OAAO,MAAM,EAAE,OAAO,CAAC,IAAI,GAAG,EAAE,oBAAoB,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,eAAe,CAAC,IAAI,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,OAAOnd,EAAG,CAAA,IAAI,KAAKxN,EAAE,EAAE,MAAM,IAAI,KAAKA,EAAE,GAAG,KAAK,MAAM,IAAI,KAAKA,EAAE,GAAG,KAAK,MAAM,IAAI,KAAKA,EAAE,GAAG,MAAM,IAAI,KAAKA,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,KAAKA,EAAE,GAAG,MAAM,IAAI,KAAKA,EAAE,EAAE,MAAM,QAAQ,KAAK,iBAAiBwN,CAAC,CAAC,IAAI0I,EAAEuV,EAAE,EAAE,EAAE,EAAE,GAAGd,EAAE,eAAe,CAAC,EAAEc,EAAEd,EAAE,CAAC,EAAE,CAAC,EAAE3qB,EAAE,EAAE2qB,EAAE,CAAC,EAAE,CAAC,EAAE3qB,MAAO,IAAG,CAACyrB,EAAElrB,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,MAAS,CAAC,MAAM,IAAI,MAAM,mBAAmBA,CAAC,CAAC,CAAC,GAAS6d,IAAN,KAAsBA,IAAb,WAAeA,EAAE,IAAI,EAAEqN,IAAIvV,EAAE,EAAE,EAAEuV,EAAEA,EAAEvV,OAAO,CAAC,GAASkI,IAAN,KAAuBA,IAAd,YAAgB,KAAK,wBAAwBA,EAAEA,EAAE,IAAIqN,EAAE,IAAIvV,EAAE,EAAE,EAAEuV,EAAEA,EAAEvV,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAOuV,EAAE,KAAKje,EAAE,EAAExN,EAAE,YAAYoe,CAAC,CAAC,EAAEA,EAAE,KAAK,SAASlR,EAAEkR,EAAE,EAAEA,EAAEA,GAAG,CAAA,GAAI,SAASA,EAAE,UAAU,UAAU,CAAE,EAACA,EAAE,YAAYA,EAAE,aAAa,CAAA,EAAGA,EAAE,YAAY,OAAOA,EAAE,YAAY,QAAQ,KAAK,OAAOA,EAAE,MAAMA,EAAE,OAAO,KAAKA,EAAE,UAAUA,EAAE,UAAUA,EAAE,UAAU,IAAIgpT,EAAE,EAAE,KAAK,IAAI55T,EAAE,IAAImd,EAAEvM,CAAC,EAAE,OAAOA,EAAE,OAAO5Q,EAAEA,EAAE,KAAKN,CAAC,EAAE,WAAY,CAAA,CAAC,EAAE+G,GAAE,GAAG,EAAEA,GAAE,IAAI,MAAM,SAAS,EAAE,CAAC,OAAOizT,GAAG,EAAE,KAAK,SAAS,OAAO,UAAU,mBAAoB,UAAU,CAACF,GAAG,KAAK,SAAS,YAAY,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,yBAAyBA,GAAG,GAAG,OAAO,EAAE,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,QAAQ,EAAEH,GAAG,KAAK,SAAS,UAAS,EAAG,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,gBAAgB,EAAE,KAAK,SAAS,IAAI,QAAQK,GAAG,GAAG,EAAE,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAG,EAAC,KAAK,SAAS,OAAO,UAAU,aAAc,UAAU,CAAUF,KAAH,QAAgBH,KAAT,QAAa,KAAK,SAAS,IAAI,wBAAwBG,GAAG,QAAQ,CAAC,CAAG,EAAC,IAAI,EAQ9sa,SAAS,EAAE,CAAC,IAAI5oT,EAAE,EAAE,OAAO,KAAK,CAAC,mBAAmB,UAAU,CAAC,IAAIlR,EAAE,KAAKM,EAAE,gBAAgB,GAAG,KAAK,QAAQ,KAAK,SAAS,OAAO,EAAE,QAAQ,EAAEN,EAAE,QAAQ,OAAM,EAAG,MAAM,MAAM,EAAE1M,EAAE,EAAEA,EAAE,EAAE,OAAOA,IAAI,CAAC,IAAIR,EAAE,EAAEQ,CAAC,EAAEynB,EAAEza,EAAE,KAAKxN,CAAC,EAAE,GAASioB,GAAN,KAAQ,CAAC,IAAI,EAAEA,EAAE,CAAC,EAAE/a,EAAE,SAAS,uBAAuB,EAAE,EAAE,CAAC,CAACA,EAAE,SAAS,MAAMlN,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,wBAAwB,CAAC,IAAIkW,EAAE,KAAK,SAAS,MAAM,OAAOuV,EAAE,CAAE,EAAC,IAAIjrB,EAAE,EAAEA,EAAE0V,EAAE1V,IAAI,CAAC,IAAIkqB,EAAExd,EAAE,SAAS,UAAS,EAAGue,EAAE,KAAKf,CAAC,EAAE,IAAIne,EAAEW,EAAE,SAAS,YAAY1M,EAAE,CAAC,EAAE0M,EAAE,SAAS,MAAM,SAASX,EAAE,MAAM,oCAAoC,CAAC,CAAC,IAAIxG,EAAEmH,EAAE,SAAS,UAAS,EAAoC,IAAjCA,EAAE,SAAS,MAAM,cAAc,EAAM1M,EAAE,EAAEA,EAAEirB,EAAE,OAAOjrB,IAAI0M,EAAE,SAAS,MAAM,UAAU1M,EAAE,GAAG,IAAIirB,EAAEjrB,CAAC,EAAE,MAAM,EAAE0M,EAAE,SAAS,MAAM,QAAQ,QAAQ,EAAEkR,EAAElR,EAAE,SAAS,YAAYA,EAAE,SAAS,MAAM,aAAanH,EAAE,MAAM,EAAEmH,EAAE,SAAS,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,aAAa,UAAU,CAAC,KAAK,QAAQ,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,MAAM,YAAY,KAAK,QAAQ,QAAQ,KAAK,QAAQ,IAAI,CAAC,EAAE,KAAK,QAAQ,yBAAyB,KAAK,SAAS,MAAM,UAAUkR,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,cAAc,UAAU,CAAC,IAAIlR,EAAE,KAAKA,EAAE,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC,SAAS,CAAE,CAAA,CAAC,EAAEA,EAAE,QAAQ,IAAI,SAASA,EAAEkR,EAAE5Q,EAAE,CAAC,IAAIjN,EAAE,CAAC,MAAM6d,EAAE,QAAQ5Q,EAAE,SAAS,CAAE,CAAA,EAAE,OAAaN,GAAN,OAAUA,EAAE,KAAK,MAAMA,EAAE,SAAS,KAAK3M,CAAC,EAAEA,CAAC,EAAE2M,EAAE,QAAQ,OAAO,UAAU,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAIA,EAAE,KAAK,SAAS,KAAK,IAAI,EAAE,KAAK,WAAW,KAAK,IAAI,EAAE,KAAK,YAAY,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,EAAEA,EAAE,QAAQ,SAAS,SAASkR,EAAE,CAACA,EAAE,GAAGlR,EAAE,SAAS,kBAAmB,EAAC,QAAQM,EAAE,EAAEA,EAAE4Q,EAAE,SAAS,OAAO5Q,IAAI,KAAK,SAAS4Q,EAAE,SAAS5Q,CAAC,CAAC,CAAC,EAAEN,EAAE,QAAQ,WAAW,SAASA,EAAE,CAAC,KAAK,SAASA,CAAC,EAAE,KAAK,KAAK,iBAAiB,EAAEA,EAAE,SAAS,OAAO,IAAI,KAAK,KAAK,UAAU,KAAK,QAAQA,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,KAAK,QAAQA,EAAE,SAASA,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAEA,CAAC,CAAC,EAAE,KAAK,OAAQ,CAAA,EAAEA,EAAE,QAAQ,YAAY,SAASkR,EAAE,CAAC,QAAQ5Q,EAAE,KAAK,IAAI,IAAI,SAAS,4BAA4BjN,EAAE,EAAEA,EAAE6d,EAAE,SAAS,OAAO7d,IAAI,CAAC,IAAIC,EAAE4d,EAAE,SAAS7d,CAAC,EAAE,KAAK,SAASC,CAAC,EAAE,KAAK,KAAK,UAAU,KAAK,WAAWA,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,WAAW,KAAK,QAAQ4d,CAAC,CAAC,EAAE7d,EAAE,GAAG,KAAK,KAAK,SAAS,KAAK,QAAQ6d,EAAE,SAAS7d,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE6d,EAAE,SAAS,OAAO,GAAG,KAAK,KAAK,SAAS,KAAK,QAAQA,EAAE,SAAS7d,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,SAAS,OAAO,IAAI,KAAK,KAAK,UAAU,KAAK,QAAQA,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,KAAK,QAAQA,EAAE,SAASA,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,IAAIR,EAAE,KAAK,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAEQ,CAAC,EAAE,GAAGR,EAAE,GAAG,KAAK,KAAK,UAAUA,CAAC,EAAEQ,EAAE,SAASA,EAAE,QAAQ,WAAW,CAAC,IAAIynB,EAAE/a,EAAE,SAAS,YAAY1M,EAAE,QAAQ,UAAU,EAAE,KAAK,KAAK,UAAUynB,EAAE,MAAM,eAAeza,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,OAAQ,CAAA,CAAC,QAAQmd,EAAE,EAAEA,EAAEvM,EAAE,SAAS,OAAOuM,IAAI,KAAK,YAAYvM,EAAE,SAASuM,CAAC,CAAC,CAAC,EAAEzd,EAAE,QAAQ,KAAK,SAASA,EAAE,CAAC,KAAK,IAAI,KAAKA,EAAE;AAAA,CAAM,EAAEA,EAAE,QAAQ,QAAQ,SAASA,EAAE,CAAC,OAAOA,EAAE,GAAG,MAAM,EAAEA,EAAE,QAAQ,WAAW,SAASkR,EAAE,CAAC,MAAM,IAAIlR,EAAE,SAAS,UAAUkR,CAAC,EAAE,GAAG,EAAElR,EAAE,QAAQ,SAAS,SAASA,EAAE,CAAC,KAAK,IAAI,KAAK;AAAA,EAAOA,EAAE,GAAG;AAAA;AAAA,CAAkB,EAAEA,EAAE,QAAQ,OAAO,UAAU,CAAC,KAAK,IAAI,KAAK;AAAA;AAAA,CAAmB,EAAEA,EAAE,QAAQ,QAAQ,SAASA,EAAEkR,EAAE,CAAC,QAAQ5Q,EAAE,EAAEA,EAAE4Q,EAAE,SAAS,OAAO5Q,IAAIN,EAAE,QAAQ,KAAK,QAAQA,EAAEkR,EAAE,SAAS5Q,CAAC,CAAC,EAAE,OAAON,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE+G,GAAE,GAAG,EAOpiG,SAAS,EAAE,CAAC,IAAImK,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,YAAY,SAASlR,EAAEM,EAAE,EAAEhN,EAAER,EAAEioB,EAAE,CAAC,IAAI,EAAE/R,EAAE,KAAK,OAAO,WAAWuV,EAAE,KAAK,GAAa,OAAOve,GAAjB,UAAoB,KAAK,aAAa,cAAcA,CAAC,GAAG,KAAK,aAAa,kBAAkBA,CAAC,EAAE,CAAC,OAAOA,EAAElN,GAAGkN,EAAEA,EAAE,KAAK,aAAa,cAAcA,CAAC,EAAE,IAAI,WAAWA,CAAC,EAAEA,GAAG,EAAE,SAASA,EAAE,CAAC,QAAQM,EAAEjN,EAAE,IAAI2M,EAAE,WAAW,CAAC,EAAEA,EAAE,WAAW,CAAC,EAAE1M,EAAE0M,EAAE,OAAOlN,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAEioB,EAAE,EAAEA,EAAEznB,EAAEynB,GAAG,EAAE,CAAC,GAAGA,GAAG1nB,EAAO6d,EAAE,QAAQlR,EAAE,WAAW+a,EAAE,CAAC,CAAC,IAAhC,GAAkC,CAACza,EAAE,IAAIN,EAAE,WAAW+a,EAAE,CAAC,EAAE/a,EAAE,WAAW+a,EAAE,CAAC,EAAEjoB,EAAE,CAAC,MAAM,IAAIkN,EAAE,WAAW+a,EAAE,CAAC,EAAE/a,EAAE,WAAW+a,EAAE,CAAC,EAAE,OAAOza,EAAE,cAAcN,EAAE,WAAW+a,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC1nB,EAAE,IAAI2M,EAAE,WAAW+a,EAAE,CAAC,EAAE/a,EAAE,WAAW+a,EAAE,CAAC,CAAC,CAAC,OAAOjoB,CAAC,EAAEkN,EAAE,KAAK,aAAa,kBAAkBA,CAAC,EAAE,KAAK,aAAa,0BAA0BA,CAAC,EAAEA,CAAC,GAAG,cAAa,CAAE,IAAK,GAAE+a,EAAE,KAAK,aAAa,YAAY,MAAM,IAAK,GAAEA,EAAE,KAAK,aAAa,YAAY,MAAM,IAAK,GAAEA,EAAE,KAAK,aAAa,UAAU,CAACwD,EAAE,CAAC,KAAKve,EAAE,MAAM,EAAE,MAAM,OAAO,EAAE,OAAO,WAAW+a,EAAE,iBAAiB,EAAE,OAAO/R,EAAE,MAAM1I,EAAE,MAAM,CAAC,CAAC,CAAC,OAAOie,CAAC,CAAC,EAAExX,GAAE,GAAG,EAAE,IAAIgzT,GAAGP,GAAGE,GAAGW,GAAGT,GAAGQ,IAAG,UAAU,CAAC,IAAI,EAAElpT,EAAE5d,EAAE,SAASR,EAAEkN,EAAE,CAAC,IAAIkR,EAAE5Q,EAAEjN,EAAEC,EAAER,EAAE,EAAE2qB,EAAEzU,EAAEuV,EAAE,EAAElf,EAAExG,EAAE+K,EAAE8wB,EAAE,IAAI,KAAK,KAAK10B,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,GAAG,KAAK,QAAQ,CAAA,EAAG,KAAK,aAAa,CAAE,EAAC,KAAK,UAAU,KAAK,KAAK,KAAK,GAAG,EAAE,OAAO,CAAC,OAAOkR,EAAE,KAAK,WAAY,EAACqN,GAAE,UAAU,CAAC,IAAIve,EAAEkR,EAAE,IAAIA,EAAE,CAAE,EAAClR,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAEkR,EAAE,KAAK,OAAO,aAAa,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,EAAE,OAAOA,CAAC,GAAE,KAAK,IAAI,EAAE,KAAK,EAAE,EAAG,CAAA,IAAI,OAAO,KAAK,MAAM,KAAK,WAAY,EAAC,KAAK,OAAO,KAAK,aAAa,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,UAAU,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,kBAAkB,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,aAAa,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,gBAAgB,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,OAAO,KAAK,UAAU,CAAC,UAAU,KAAK,WAAU,EAAG,SAAS,KAAK,WAAU,GAAI,IAAI,OAAO,CAAE,CAAA,EAAE,MAAM,IAAI,OAAO,KAAK,QAAQ,KAAK,KAAKA,CAAC,EAAE,MAAM,IAAI,OAAO,GAAG,KAAK,UAAU,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,WAAU,EAAG,OAAO,KAAK,WAAU,EAAG,QAAQ,KAAK,WAAU,EAAG,QAAQ,KAAK,WAAU,CAAE,EAAEpe,EAAE,KAAK,aAAaQ,EAAE,KAAK,WAAY,GAAE,IAAI,EAAE,MAAM,IAAIR,EAAEQ,EAAE,EAAE,UAAU,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,QAAQ,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,KAAK,CAAE,EAAC,MAAM,IAAI,OAAO,IAAI,OAAO,IAAairB,IAAT,SAAa,KAAK,KAAK,EAAErN,GAAG,GAAGlR,GAAS,GAAN,KAAQ,EAAE,KAAK,SAAS,KAAK,QAAQnH,EAAE,EAAE,GAAGqY,EAAErY,EAAEqY,EAAErY,EAAEqY,EAAE,GAAGA,EAAE,EAAErY,EAAE,EAAEA,EAAEmH,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,MAAM,IAAI,OAAO,OAAO,KAAK,aAAa,CAAA,EAAG,KAAK,WAAW,IAAK,GAAE,GAAG3M,EAAE,KAAK,QAAQ,OAAO,EAAE,KAAK,aAAa,QAAQ,KAAK,KAAK6d,CAAC,EAAE,KAAK,aAAa,QAAQ,OAAO7d,EAAE,MAAM,IAAI,MAAM,2CAA2C,EAAE,IAAI,EAAEA,EAAE,KAAK,aAAa,QAAQ,QAAQ,EAAE,IAAIuQ,EAAE,EAAE,GAAG,EAAEA,EAAE,EAAEA,EAAE,EAAE,GAAG,EAAE,EAAEA,EAAE,EAAEA,EAAE,KAAK,aAAa,QAAQ,KAAK,GAAG,EAAE,MAAM,IAAK,GAAE,KAAK,aAAa,UAAU,KAAK,KAAKsN,CAAC,EAAE,CAAC,EAAE,MAAM,IAAK,GAAE,KAAK,aAAa,IAAI,KAAK,KAAKA,CAAC,CAAC,CAAC,MAAM,IAAI,OAAOuM,GAAGpe,EAAE,KAAK,KAAK6R,CAAC,GAAG,QAAQ,CAAC,EAAElI,EAAE,OAAO,aAAa,MAAM,OAAO3J,EAAE,MAAM,EAAEoe,CAAC,CAAC,EAAE,KAAK,KAAKzU,CAAC,EAAE,OAAO,aAAa,MAAM,OAAO3J,EAAE,MAAMoe,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,OAAO,OAAO,GAAG,KAAK,UAAU,OAAO,KAAK,CAAC,EAAE,KAAK,QAAO,UAAU,CAAC,OAAO,KAAK,UAAS,CAAE,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,IAAK,GAAE,MAAO,EAAC,CAAC,GAAE,KAAK,IAAI,EAAE,KAAK,iBAAqBiX,EAAE,KAAK,aAAZ,GAA4BA,IAAJ,EAAMp0B,EAAE,KAAK,QAAQ,KAAK,gBAAgB,EAAE,GAAG,KAAK,eAAe,KAAK,KAAKA,EAAE,KAAK,YAAW,UAAU,CAAC,OAAO,KAAK,OAAQ,CAAA,IAAK,GAAE,MAAM,aAAa,IAAK,GAAE,MAAM,WAAW,CAAC,GAAE,KAAK,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,WAAW,KAAK,OAAO,GAAG,QAAQ,KAAK,KAAK4Q,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,KAAK,KAAK,OAAO,MAAM,IAAI,MAAM,gCAAgC,CAAC,CAAC,CAACpe,EAAE,UAAU,KAAK,SAASkN,EAAE,CAAC,IAAIkR,EAAE5Q,EAAE,IAAIA,EAAE,CAAA,EAAG4Q,EAAE,EAAE,GAAGlR,EAAEkR,EAAElR,EAAEkR,EAAElR,EAAE,GAAGA,EAAE,EAAEkR,EAAE,EAAEA,EAAE5Q,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,OAAOA,CAAC,EAAExN,EAAE,UAAU,WAAW,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,EAAEA,EAAE,UAAU,WAAW,UAAU,CAAC,OAAO,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,EAAEA,EAAE,UAAU,aAAa,SAASkN,EAAE,CAAC,IAAIkR,EAAE,KAAK,eAAe,EAAE7d,EAAE,IAAI,WAAW,KAAK,MAAM,KAAK,OAAO6d,CAAC,EAAE5d,EAAE,EAAER,EAAE,KAAK,GAASkN,GAAN,OAAUA,EAAE,KAAK,SAAaA,EAAE,SAAN,EAAa,OAAO,IAAI,WAAW,CAAC,EAAE,SAAS+a,EAAEza,EAAEya,EAAE0C,EAAEzU,EAAE,CAAC,IAAIuV,EAAEf,EAAE,EAAE3kB,EAAE+K,EAAE8wB,EAAE/W,EAAEhd,EAAE6d,EAAEzrB,EAAEiI,EAAE+tB,EAAEwJ,EAAE66C,EAAE3L,EAAE1mE,EAAEsxE,EAAEm7C,EAAE,EAAE9mH,EAAEghE,GAAEwL,EAAE,KAAK,MAAMp6E,EAAE,MAAMwN,GAAGmd,CAAC,EAAEqlD,GAAE,KAAK,MAAMhwE,EAAE,OAAOioB,GAAG/R,CAAC,EAAExI,EAAE1N,EAAE,OAAOo6E,GAAGp6E,EAAE,QAAQgwE,GAAE,IAAIsK,EAAEl8D,EAAEg8D,EAAEnkD,EAAEvoB,EAAEnN,EAAE,IAAI,WAAW+5E,EAAEtK,EAAC,EAAEpuC,EAAE10B,EAAE,OAAOuyB,EAAE,EAAE/U,EAAE,EAAE+U,EAAEuwC,IAAGxvE,EAAEohC,GAAG,CAAC,OAAO10B,EAAE1M,GAAG,EAAC,CAAE,IAAK,GAAE,IAAIuF,EAAEwzE,EAAE,EAAEA,EAAEe,EAAEv0E,EAAEwzE,GAAG,EAAEtjD,EAAEvL,GAAG,EAAExd,EAAE1M,GAAG,EAAE,MAAM,IAAK,GAAE,IAAIuF,EAAE2uH,EAAE,EAAEA,EAAEp6C,EAAEv0E,EAAE2uH,GAAG,EAAEjpG,EAAEve,EAAE1M,GAAG,EAAEsQ,EAAE/K,EAAEqY,EAAE,EAAE6X,EAAEvL,EAAEtM,CAAC,EAAE6X,EAAEvL,GAAG,GAAGe,EAAE3a,GAAG,IAAI,MAAM,IAAK,GAAE,IAAI/K,EAAE,EAAE,EAAE,EAAEu0E,EAAEv0E,EAAE,GAAG,EAAE0lB,EAAEve,EAAE1M,GAAG,EAAE,GAAGuF,EAAEA,EAAEqY,GAAGA,EAAEuwD,EAAElvC,GAAGxJ,GAAGwJ,EAAE,GAAG66C,EAAE,EAAEl8D,EAAErY,EAAEqY,CAAC,EAAE6X,EAAEvL,GAAG,GAAGikD,EAAEljD,GAAG,IAAI,MAAM,IAAK,GAAE,IAAI1lB,EAAE6H,EAAE,EAAEA,EAAE0sE,EAAEv0E,EAAE6H,GAAG,EAAE6d,EAAEve,EAAE1M,GAAG,EAAE,GAAGuF,EAAEA,EAAEqY,GAAGA,EAAEtN,EAAE/K,EAAEqY,EAAE,EAAE6X,EAAEvL,EAAEtM,CAAC,EAAEuwD,EAAElvC,GAAGxJ,GAAGwJ,EAAE,GAAG66C,EAAE,EAAEl8D,EAAErY,EAAEqY,CAAC,EAAE6X,EAAEvL,GAAG,GAAGe,EAAE,KAAK,OAAO3a,EAAE69D,GAAG,CAAC,GAAG,IAAI,MAAM,IAAK,GAAE,IAAI5oE,EAAE6oE,GAAE,EAAEA,GAAE0L,EAAEv0E,EAAE6oE,IAAG,EAAEnjD,EAAEve,EAAE1M,GAAG,EAAE,GAAGuF,EAAEA,EAAEqY,GAAGA,EAAEtN,EAAE/K,EAAEqY,EAAE,EAAE6X,EAAEvL,EAAEtM,CAAC,EAAMqhB,IAAJ,EAAMkvC,EAAE1mE,EAAE,GAAG0mE,EAAE14C,GAAGwJ,EAAE,GAAG66C,EAAE,EAAEl8D,EAAErY,EAAEqY,CAAC,EAAEnW,EAAE,GAAGguB,GAAGwJ,EAAE,GAAG66C,GAAG,EAAE,GAAGl8D,EAAErY,EAAEqY,CAAC,GAAGyM,EAAE/Z,EAAE69D,EAAE1mE,EAAE4F,EAAE,KAAK,IAAIgd,EAAE/Z,CAAC,EAAE7Q,EAAE,KAAK,IAAI4qB,EAAE8jD,CAAC,EAAEzmE,EAAE,KAAK,IAAI2iB,EAAE5iB,CAAC,EAAEyjB,EAAE7d,GAAG5N,GAAG4N,GAAG3F,EAAE4I,EAAE7Q,GAAGiI,EAAEymE,EAAE1mE,EAAEguB,EAAEvL,GAAG,GAAGe,EAAEC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,6BAA6Bxe,EAAE1M,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAACkN,EAAE,CAAC,IAAImhE,KAAI5mD,EAAEwX,EAAEvpB,GAAGlW,EAAE,MAAMwN,GAAG4Q,EAAEw3D,GAAEn2C,EAAE66C,EAAE,IAAIv0E,EAAE,EAAEA,EAAEq0E,EAAEr0E,GAAG,EAAE,CAAC,QAAQ25B,GAAE,EAAEA,GAAEthB,EAAEshB,IAAG,EAAEn/B,EAAEsuE,IAAG,EAAE54C,EAAE2/C,IAAG,EAAE/G,KAAIlkD,EAAE,GAAGvM,CAAC,CAAC,CAACqhB,GAAG,CAAC,CAAC,OAAOvyB,EAAEM,IAAEN,CAAC,EAAKlN,EAAE,iBAAL,GAAsBioB,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE1nB,CAAC,EAAEP,EAAE,UAAU,cAAc,UAAU,CAAC,IAAIkN,EAAEkR,EAAE5Q,EAAEjN,EAAEC,EAAER,EAAE,EAAE2qB,EAAEzU,EAAE,IAAI1I,EAAE,KAAK,QAAQxN,EAAE,KAAK,aAAa,SAAS,CAAE,EAACQ,EAAE,IAAI,YAAYR,EAAE,QAAQ,GAAGwN,EAAE,MAAM,EAAEjN,EAAE,EAAE2M,EAAE,EAAEkR,EAAE,EAAE,EAAEuM,EAAEnd,EAAE,OAAO,EAAEmd,EAAEvM,EAAE,GAAG,EAAE5d,EAAED,GAAG,EAAEiN,EAAE4Q,CAAC,EAAE5d,EAAED,GAAG,EAAEiN,EAAE4Q,EAAE,CAAC,EAAE5d,EAAED,GAAG,EAAEiN,EAAE4Q,EAAE,CAAC,EAAE5d,EAAED,GAAG,GAAS2V,EAAElW,EAAEkN,GAAG,IAAd,KAAiBgJ,EAAE,IAAI,OAAO1V,CAAC,EAAER,EAAE,UAAU,gBAAgB,SAASkN,EAAEkR,EAAE,CAAC,IAAI5Q,EAAEjN,EAAEC,EAAER,EAAE,EAAE2qB,EAAEzU,EAAEuV,EAAE,EAAElf,EAAExG,EAAE,GAAGxF,EAAE,KAAK,OAAO,EAAE,KAAKiN,EAAE,KAAK,gBAAgB,KAAK,QAAQ,SAAS,GAASzH,EAAE,KAAK,kBAAd,KAA+BA,EAAE,KAAK,gBAAgB,KAAK,cAAa,EAAGxF,EAAE,EAAEiN,EAAE,IAAIie,GAAGjrB,EAAE0M,EAAE,MAAMA,GAAG,OAAO,EAAE,GAAGkR,EAAEpe,EAAE2qB,EAAE,EAAMpqB,IAAJ,EAAM,KAAKP,EAAEyrB,GAAGvV,EAAE,EAAE,EAAEkI,EAAEpe,EAAE,CAAC,EAAE2qB,EAAEpe,EAAE,EAAE2J,GAAG,EAAE1V,EAAER,GAAG,EAAEuM,EAAE/L,EAAER,GAAG,EAAEuM,EAAE/L,EAAER,GAAG,EAAEuM,EAAE/L,EAAER,GAAG,EAAEwN,EAAE,EAAE0I,GAAG,EAAE,IAAIyU,EAAEzU,MAAO,MAAKlW,EAAEyrB,GAAGvV,EAAE,EAAE,EAAEkI,EAAEpe,EAAE,CAAC,EAAE2qB,EAAEnqB,EAAER,GAAG,EAAE,EAAEkW,GAAG,EAAE1V,EAAER,GAAG,EAAE,EAAEkW,GAAG,EAAE1V,EAAER,GAAG,EAAE,EAAEkW,GAAG,EAAE1V,EAAER,GAAG,EAAEwN,EAAE,EAAE0I,GAAG,EAAE,IAAIyU,EAAEzU,CAAC,EAAElW,EAAE,UAAU,OAAO,UAAU,CAAC,IAAIkN,EAAE,OAAOA,EAAE,IAAI,WAAW,KAAK,MAAM,KAAK,OAAO,CAAC,EAAE,KAAK,gBAAgBA,EAAE,KAAK,aAAc,CAAA,EAAEA,CAAC,EAAE,IAAI+a,EAAE,UAAU,CAAC,GAAuB,OAAO,UAAU,SAAS,KAAK1nB,EAAC,IAApD,kBAAsD,CAAC,GAAG,CAAC6d,EAAE7d,GAAE,SAAS,cAAc,QAAQ,EAAEC,EAAE4d,EAAE,WAAW,IAAI,CAAC,MAAS,CAAC,MAAQ,EAAA,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO6J,IAAI,EAAE,SAAS/a,EAAE,CAAC,IAAI,EAAE,GAAQ+a,EAAC,IAAN,GAAS,OAAOznB,EAAE,MAAM0M,EAAE,MAAM1M,EAAE,OAAO0M,EAAE,OAAO1M,EAAE,UAAU,EAAE,EAAE0M,EAAE,MAAMA,EAAE,MAAM,EAAE1M,EAAE,aAAa0M,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,OAAO,IAAIkR,EAAE,UAAS,EAAG,EAAE,MAAM,IAAI,MAAM,wDAAwD,CAAC,EAAEpe,EAAE,UAAU,aAAa,SAASoe,EAAE,CAAC,IAAI,EAAE7d,EAAEC,EAAER,EAAEioB,EAAE0C,EAAEzU,EAAEuV,EAAE,GAAG,KAAK,UAAU,CAAC,IAAIA,EAAE,CAAA,EAAGlrB,EAAE0nB,EAAE,EAAE0C,GAAGzU,EAAE,KAAK,UAAU,QAAQ,OAAO+R,EAAE0C,EAAEpqB,EAAE,EAAE0nB,EAAE,EAAE/R,EAAE3V,CAAC,EAAEC,EAAE4d,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAEpe,EAAE,KAAK,aAAa,IAAI,WAAW,EAAE,IAAI,CAAC,EAAE,KAAK,gBAAgBQ,EAAER,CAAC,EAAE,EAAE,UAAUQ,EAAEirB,EAAE,KAAK,EAAE,MAAM,EAAEjrB,CAAC,CAAC,EAAE,OAAOirB,CAAC,CAAC,EAAEzrB,EAAE,UAAU,YAAY,SAASkN,EAAEkR,EAAE,CAAC,IAAI5Q,EAAEjN,EAAEC,EAAE,OAAOgN,GAAGjN,EAAE,KAAK,UAAU,QAAQ6d,CAAC,EAAE5d,EAAED,EAAE6d,EAAE,CAAC,EAAMA,IAAJ,GAAOlR,EAAE,UAAU,EAAE,EAAE,KAAK,MAAM,KAAK,MAAM,GAAa1M,GAAN,KAAQA,EAAE,UAAU,UAAzB,EAAiC0M,EAAE,UAAU1M,EAAE,QAAQA,EAAE,QAAQA,EAAE,MAAMA,EAAE,MAAM,GAAaA,GAAN,KAAQA,EAAE,UAAU,UAAzB,GAAkC0M,EAAE,aAAa1M,EAAE,UAAUA,EAAE,QAAQA,EAAE,OAAO,EAAMgN,EAAE,UAAN,GAAeN,EAAE,UAAUM,EAAE,QAAQA,EAAE,QAAQA,EAAE,MAAMA,EAAE,MAAM,EAAEN,EAAE,UAAUM,EAAE,MAAMA,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAExN,EAAE,UAAU,QAAQ,SAASkN,EAAE,CAAC,IAAIkR,EAAE5Q,EAAEjN,EAAEC,EAAER,EAAE,EAAE2qB,EAAE,KAAK,OAAOnd,EAAE,EAAE,EAAE,KAAK,UAAUhN,EAAE,EAAE,UAAUD,EAAE,EAAE,OAAOP,EAAE,EAAE,UAAUoe,EAAE,UAAU,CAAC,IAAI6J,EAAE/R,EAAE,GAAG+R,EAAEza,IAAIhN,EAAE0V,EAAE3V,EAAE0nB,CAAC,EAAE0C,EAAE,YAAYzd,EAAE+a,CAAC,EAAEznB,EAAE,GAAGgN,EAAEhN,EAAER,EAAE,OAAO2qB,EAAE,UAAU,SAAS,WAAWvM,EAAElI,EAAE,KAAK,CAAC,GAAI,CAAA,EAAElW,EAAE,UAAU,cAAc,UAAU,CAAC,IAAIkN,EAAE,OAAO,cAAoBA,EAAE,KAAK,YAAd,KAAyBA,EAAE,SAAS,MAAM,CAAC,EAAElN,EAAE,UAAU,OAAO,SAASkN,EAAE,CAAC,IAAIkR,EAAE5Q,EAAE,OAAON,EAAE,MAAMA,EAAE,KAAK,cAAa,EAAGA,EAAE,KAAK,KAAKA,EAAE,MAAM,KAAK,MAAMA,EAAE,OAAO,KAAK,OAAOkR,EAAElR,EAAE,WAAW,IAAI,EAAE,KAAK,WAAW,KAAK,aAAakR,CAAC,EAAE,KAAK,QAAQA,CAAC,IAAI5Q,EAAE4Q,EAAE,gBAAgB,KAAK,MAAM,KAAK,MAAM,EAAE,KAAK,gBAAgB5Q,EAAE,KAAK,aAAc,CAAA,EAAE4Q,EAAE,aAAa5Q,EAAE,EAAE,CAAC,EAAE,EAAExN,CAAC,EAAG,EACliP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAyBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA4BA,SAASmnU,IAAG,EAAE,CAAC,IAAI/oT,EAAE,EAAE,GAAQ,EAAEA,GAAG,IAAV,IAAkB,EAAEA,GAAG,IAAV,IAAkB,EAAEA,GAAG,IAAV,IAAkB,EAAEA,GAAG,IAAV,KAAkB,EAAEA,GAAG,EAAE,EAAE,MAAd,IAAyB,EAAEA,GAAG,IAAV,GAAY,MAAM,IAAI,MAAM,6BAA6B,EAAE,IAAI5Q,EAAE,EAAE4Q,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAE7d,EAAE,EAAE6d,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAE5d,EAAE,EAAE4d,GAAG,EAAEpe,EAAEQ,GAAG,EAAEynB,EAAE,IAAI,EAAEznB,GAAG,EAAE,EAAE4d,GAAG,EAAE,EAAEA,GAAG,EAAE,IAAIuM,EAAE,KAAKzU,EAAE,KAAKlW,IAAI2qB,EAAEvM,EAAElI,EAAE+R,EAAE7J,GAAG,EAAE6J,GAAG,IAAIwD,EAAE,GAAGf,EAAE,CAAA,EAAGne,EAAE,EAAExG,EAAE,KAAK+K,EAAE,EAAE8wB,EAAE,KAAK,IAAI,KAAK,MAAMp0B,EAAE,KAAK,OAAOjN,EAAEkrB,GAAGrN,EAAE,EAAE,QAAQ,OAAO,EAAEA,GAAG,EAAC,CAAE,IAAK,IAAG,OAAO,EAAEA,GAAG,EAAG,CAAA,IAAK,KAAI,GAAQ,EAAEA,CAAC,IAAR,IAAe,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,CAAC,GAAT,IAAgB,EAAEA,EAAE,EAAE,GAAV,IAAiB,EAAEA,EAAE,EAAE,GAAV,IAAgB,EAAEA,EAAE,EAAE,GAAT,GAAe,EAAEA,EAAE,EAAE,GAAT,GAAe,EAAEA,EAAE,EAAE,GAAT,EAAWA,GAAG,GAAGwjB,EAAE,EAAExjB,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAEA,QAAS,KAAIA,GAAG,KAAK,CAAC,GAAG,GAAG8qD,EAAE,EAAE9qD,GAAG,IAAI,GAAG,MAAM,MAAM,oBAAoB,EAAE,GAAO8qD,IAAJ,EAAM,MAAM9qD,GAAG8qD,CAAC,CAAC,MAAM,IAAK,KAAI,GAAO,EAAE9qD,GAAG,IAAT,GAAgB,EAAEA,EAAE,CAAC,IAAT,EAAW,MAAM,IAAI,MAAM,mCAAmC,EAAE,IAAIyM,EAAE,EAAEzM,GAAG,EAAE7R,EAAE,EAAE6R,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAErY,EAAE,EAAEqY,GAAG,EAAM,IAAEyM,KAAK9kB,EAAE,MAAM+K,EAAE+Z,GAAG,EAAE,EAAEzM,IAAI,MAAM,IAAK,KAAI,OAAO,CAAC,GAAG,GAAG8qD,EAAE,EAAE9qD,GAAG,IAAI,GAAG,MAAM,MAAM,oBAAoB,EAAE,GAAO8qD,IAAJ,EAAM,MAAM9qD,GAAG8qD,CAAC,CAAC,MAAM,QAAQ,MAAM,IAAI,MAAM,oCAAoC,EAAE9qD,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,IAAG,IAAIvQ,EAAE,EAAEuQ,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAEsN,EAAE,EAAEtN,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAEne,EAAE,EAAEme,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAElW,EAAE,EAAEkW,GAAG,EAAE,EAAEA,GAAG,GAAG,EAAE6X,EAAE,EAAE7X,GAAG,EAAEqhB,EAAExJ,GAAG,EAAE,EAAEqkD,EAAE,IAAI,EAAErkD,GAAG,EAAE04C,EAAEhkD,EAAE1iB,EAAEiO,EAAEqjE,EAAE,GAAMtjD,GAAG,IAAGsjD,EAAE,GAAG5K,EAAEvwD,EAAEnW,EAAEqyE,EAAEl8D,GAAG,EAAEk8D,GAAE,IAAIo6C,EAAEt2G,EAAE,IAAIA,MAAM,CAAC,IAAI8qD,EAAE,GAAG,GAAGA,EAAE,EAAE9qD,GAAG,IAAI,GAAG,MAAM,MAAM,oBAAoB,EAAE,GAAO8qD,IAAJ,EAAM,MAAM9qD,GAAG8qD,CAAC,CAACx+C,EAAE,KAAK,CAAC,EAAE7c,EAAE,EAAE6d,EAAE,MAAMzrB,EAAE,OAAOiI,EAAE,kBAAkBqxE,EAAE,eAAe5K,EAAE,aAAa1mE,EAAE,YAAYysH,EAAE,YAAYt2G,EAAEs2G,EAAE,kBAAkB3uH,EAAE,WAAW,CAAC,CAAC05B,EAAE,MAAMlzB,EAAE,SAASuE,CAAC,CAAC,EAAE,MAAM,IAAK,IAAG2a,EAAE,GAAG,MAAM,QAAQ,MAAM,IAAI,MAAM,wBAAwB,EAAErN,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,UAAU,UAAU,CAAC,OAAOsM,EAAE,MAAM,EAAE,KAAK,UAAU,UAAU,CAAC,OAAOkX,CAAC,EAAE,KAAK,UAAU,SAAS10B,EAAE,CAAC,GAAGA,EAAE,GAAGA,GAAGwd,EAAE,OAAO,MAAM,IAAI,MAAM,2BAA2B,EAAE,OAAOA,EAAExd,CAAC,CAAC,EAAE,KAAK,uBAAuB,SAASkR,EAAE7d,EAAE,CAAC,IAAIC,EAAE,KAAK,UAAU4d,CAAC,EAAEpe,EAAEQ,EAAE,MAAMA,EAAE,OAAOynB,EAAE,IAAI,WAAWjoB,CAAC,EAAEqsP,GAAG,EAAE7rP,EAAE,YAAYynB,EAAEjoB,CAAC,EAAE,IAAI2qB,EAAEnqB,EAAE,eAAe0V,EAAE1V,EAAE,kBAAyB0V,IAAP,OAAWA,EAAE,KAAK,IAAIuV,GAAEjrB,EAAE,MAAMkqB,EAAEld,EAAEie,GAAElf,GAAEkf,GAAE1lB,EAAE,GAAGvF,EAAE,EAAEgN,EAAEhN,EAAE,GAAGsQ,GAAE,IAAItQ,EAAE,EAAEA,EAAE,QAAQgN,EAAEhN,EAAE,GAAGohC,GAAE77B,EAAE8kB,GAAE,EAAEH,EAAOlqB,EAAE,aAAP,KAAoBqqB,IAAG,EAAErd,EAAE,GAAG,QAAQK,GAAE,EAAE6d,EAAE,EAAEzrB,EAAEgoB,EAAE,OAAOyD,EAAEzrB,EAAE,EAAEyrB,EAAE,CAAC,IAAIxjB,GAAE+f,EAAEyD,CAAC,EAAE,GAAOnf,KAAJ,IAAQA,GAAEkf,IAAGmW,IAAG/W,KAAI/Z,KAAI+Z,GAAE,EAAEH,EAAE,EAAEld,GAAGK,GAAE,GAAG+zB,GAAE77B,GAAG0lB,GAAEf,IAAI7c,IAAG,GAAGA,KAAI,IAAI3F,KAAIgO,EAAE0rB,IAAG,MAAM,CAAC,IAAI3L,GAAE,EAAEtL,EAAE,EAAEziB,EAAC,EAAEu3B,GAAE,EAAE9U,EAAE,EAAEziB,GAAE,CAAC,EAAEoyE,EAAE,EAAE3vD,EAAE,EAAEziB,GAAE,CAAC,EAAE3H,EAAEqhC,IAAG,EAAE04C,EAAE/5E,EAAEqhC,IAAG,EAAEnC,GAAEl/B,EAAEqhC,IAAG,EAAE3L,GAAE11B,EAAEqhC,IAAG,EAAE,GAAG,CAAC,EAAEr1B,EAAC,CAAC,EAAE,KAAK,uBAAuB,SAAS6R,EAAE7d,EAAE,CAAC,IAAIC,EAAE,KAAK,UAAU4d,CAAC,EAAEpe,EAAEQ,EAAE,MAAMA,EAAE,OAAOynB,EAAE,IAAI,WAAWjoB,CAAC,EAAEqsP,GAAG,EAAE7rP,EAAE,YAAYynB,EAAEjoB,CAAC,EAAE,IAAI2qB,EAAEnqB,EAAE,eAAe0V,EAAE1V,EAAE,kBAAyB0V,IAAP,OAAWA,EAAE,KAAK,IAAIuV,GAAEjrB,EAAE,MAAMkqB,EAAEld,EAAEie,GAAElf,GAAEkf,GAAE1lB,EAAE,GAAGvF,EAAE,EAAEgN,EAAEhN,EAAE,GAAGsQ,GAAE,IAAItQ,EAAE,EAAEA,EAAE,QAAQgN,EAAEhN,EAAE,GAAGohC,GAAE77B,EAAE8kB,GAAE,EAAEH,EAAOlqB,EAAE,aAAP,KAAoBqqB,IAAG,EAAErd,EAAE,GAAG,QAAQK,GAAE,EAAE6d,EAAE,EAAEzrB,EAAEgoB,EAAE,OAAOyD,EAAEzrB,EAAE,EAAEyrB,EAAE,CAAC,IAAIxjB,GAAE+f,EAAEyD,CAAC,EAAE,GAAOnf,KAAJ,IAAQA,GAAEkf,IAAGmW,IAAG/W,KAAI/Z,KAAI+Z,GAAE,EAAEH,EAAE,EAAEld,GAAGK,GAAE,GAAG+zB,GAAE77B,GAAG0lB,GAAEf,IAAI7c,IAAG,GAAGA,KAAI,IAAI3F,KAAIgO,EAAE0rB,IAAG,MAAM,CAAC,IAAI3L,GAAE,EAAEtL,EAAE,EAAEziB,EAAC,EAAEu3B,GAAE,EAAE9U,EAAE,EAAEziB,GAAE,CAAC,EAAEoyE,EAAE,EAAE3vD,EAAE,EAAEziB,GAAE,CAAC,EAAE3H,EAAEqhC,IAAG,EAAE3L,GAAE11B,EAAEqhC,IAAG,EAAEnC,GAAEl/B,EAAEqhC,IAAG,EAAE04C,EAAE/5E,EAAEqhC,IAAG,EAAE,GAAG,CAAC,EAAEr1B,EAAC,CAAC,CAAC,CAAC,SAAS8/O,GAAG,EAAEjuO,EAAE5Q,EAAEjN,EAAE,CAAC,QAAQC,EAAE,EAAE4d,GAAG,EAAE6J,EAAE,GAAGznB,EAAEmqB,EAAE1C,EAAE,EAAE/R,EAAEyU,EAAE,EAAEc,EAAEjrB,EAAE,EAAEkqB,GAAG,GAAGe,GAAG,EAAElf,EAAE,EAAExG,EAAE,EAAE+K,EAAE,EAAE8wB,EAAE,EAAExjB,GAAG,EAAEyM,EAAE,IAAI,WAAW,IAAI,EAAEhd,EAAE,OAAO,CAAC,KAAKtB,EAAE,IAAQq1B,IAAJ,GAAO77B,GAAG,EAAEqY,GAAG,GAAG7R,EAAEA,GAAG,EAAMq1B,IAAJ,EAAMA,EAAE,EAAExjB,GAAG,EAAE,EAAEwjB,EAAE,GAAGr1B,EAAEkf,EAAE,MAAM,IAAIC,EAAE3lB,EAAE2kB,EAAE,GAAG3kB,IAAI0lB,EAAElf,GAAGkf,EAAEC,IAAIzD,EAAE,CAAC,GAAGyD,IAAIf,EAAE,MAAM,QAAQ1qB,EAAEyrB,EAAExV,EAAEwV,EAAE7d,EAAE3F,EAAE,EAAE+tB,EAAEh2B,EAAEg2B,EAAEhO,GAAGgO,EAAEpL,EAAEoL,CAAC,GAAG,EAAE,EAAE/tB,EAAE,IAAIu3B,EAAExJ,EAAE,GAAGnlB,EAAE5I,GAAGjI,IAAIyrB,EAAE,EAAE,GAAGnrB,EAAE,OAAO,KAAKP,GAAE,IAAI,2CAA2C,EAAEwN,EAAEsD,GAAG,EAAE2uB,EAAE,IAAI66C,EAAExpE,GAAG5I,EAAE,IAAIjI,IAAIyrB,IAAIle,EAAEsD,GAAG,EAAE2uB,GAAGxJ,EAAEh2B,EAAEiI,KAAK+tB,EAAEpL,EAAEoL,CAAC,EAAEzoB,EAAE,EAAE8sE,CAAC,EAAE,IAAIrkD,EAAEA,IAAI,EAASpoB,IAAP,MAAUqI,EAAE,OAAO2U,EAAE3U,GAAG,EAAErI,GAAG,EAAE4xB,EAAEvpB,GAAGwU,EAAE,GAAGe,EAAE,KAAK,EAAEA,EAAEf,EAAEA,GAAG,EAAE,IAAI7c,EAAE6d,CAAC,MAAMxV,EAAEyU,EAAE,EAAED,GAAG,IAAIe,EAAEjrB,EAAE,IAAI,EAAEqN,EAAE,IAAI,CAAC,OAAOiD,IAAIvQ,GAAGP,GAAE,IAAI,4CAA4C,EAAEwN,CAAC,CAC12G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA+BE,SAASg6T,GAAG,EAAE,CAAC,IAAIppT,EAAE5Q,EAAEjN,EAAEC,EAAER,EAAEioB,EAAE,KAAK,MAAM0C,EAAE,IAAI,MAAM,EAAE,EAAEzU,EAAE,IAAI,MAAM,EAAE,EAAEuV,EAAE,IAAI,MAAM,EAAE,EAAEf,EAAE,IAAI,MAAM,EAAE,EAAEne,EAAE,IAAI,MAAM,KAAK,EAAExG,EAAE,IAAI,MAAM,KAAK,EAAE+K,EAAE,IAAI,MAAM,EAAE,EAAE8wB,EAAE,IAAI,MAAM,EAAE,EAAE/W,EAAE,CAAE,EAAChd,EAAE,EAAE6d,EAAE,EAAEzrB,EAAE,IAAI,MAAM,EAAE,EAAEiI,EAAE,IAAI,MAAM,EAAE,EAAE+tB,EAAE,IAAI,MAAM,EAAE,EAAEwJ,EAAE,IAAI,MAAM,GAAG,EAAE66C,EAAE,IAAI,MAAM,IAAI,EAAE3L,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE1mE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEsxE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEm7C,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAExrD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEt7D,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEghE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAEwL,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEpK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI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AAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEH,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEI,GAAG,KAAKhpU,IAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,EAAEkpU,IAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAEC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAEF,IAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAEI,IAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,EAAED,IAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI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,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI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,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACrwCC,IAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,G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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,469,470,471,472,473,474,477,478,479,480,481,482,494,495,497,498,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,528,530,531,532,533,534,535,536,537,538,539,540,541,542,543,574,603,604,605,606,607,608,609,610,611,612,613,614,622,623,624,625,626,627,628,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,686,687,688,689,692,695,698,699,709,710,711,811,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013]}